Version 4.3.0
This commit is contained in:
1 parent
96997ddd8e
commit
fe1acf984a
1349 files changed
+116159
-67711
No files matched your search
@@ -91,7 +91,7 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
break;
|
||||
|
||||
case 'post':
|
||||
return parent::countRows( 'node', array( \IPS\Db::i()->in( 'contenttypeid', array( $this->fetchType( 'Text' ), $this->fetchType( 'Gallery' ), $this->fetchType( 'Video' ), $this->fetchType( 'Link' ) ) ) ) );
|
||||
return parent::countRows( 'node', array( \IPS\Db::i()->in( 'contenttypeid', array( $this->fetchType( 'Text' ), $this->fetchType( 'Gallery' ), $this->fetchType( 'Video' ), $this->fetchType( 'Link' ), $this->fetchType( 'Poll' ) ) ) ) );
|
||||
break;
|
||||
|
||||
case 'attachment':
|
||||
@@ -235,8 +235,19 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
|
||||
$libraryClass::setKey( 'node.nodeid' );
|
||||
$clubs = $this->fetchClubs();
|
||||
foreach( $this->fetch( 'node', 'nodeid', array( "node.nodeid<>2 AND ( ( node.parentid=? AND node.contenttypeid=? ) OR " . $this->db->in( 'nodeid', array_keys( $clubs ) ) . " )", $this->fetchType( 'Thread' ), $this->fetchType( 'Channel' ) ) ) AS $forum )
|
||||
|
||||
foreach( $this->fetch( 'node', 'nodeid', array( "node.nodeid<>? AND ( ( closure.parent=? AND node.contenttypeid=? ) OR " . $this->db->in( 'nodeid', array_keys( $clubs ) ) . " )", 2, 2, $this->fetchType( 'Channel' ) ) )->join( 'closure', "closure.child=node.nodeid" ) AS $forum )
|
||||
{
|
||||
/* This may be a club forum that already exists */
|
||||
try
|
||||
{
|
||||
$this->app->getLink( $forum['nodeid'], 'forums_forums' );
|
||||
$libraryClass->setLastKeyValue( $forum['nodeid'] );
|
||||
$this->app->log( 'vb5_skipped_forum', __METHOD__, \IPS\convert\App::LOG_WARNING );
|
||||
continue;
|
||||
}
|
||||
catch( \OutOfRangeException $e ){}
|
||||
|
||||
$self = $this;
|
||||
$checkpermission = function( $name, $perm ) use ( $forum, $self )
|
||||
{
|
||||
@@ -441,16 +452,33 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
{
|
||||
/* Actually, we don't - end of the line */
|
||||
$libraryClass->setLastKeyValue( $post['nodeid'] );
|
||||
$this->app->log( 'vb5_post_missing_parent_post', __METHOD__, \IPS\convert\App::LOG_WARNING, $post['nodeid'] );
|
||||
continue;
|
||||
}
|
||||
catch( \UnderflowException $e )
|
||||
{
|
||||
/* Loading the parent failed - move on */
|
||||
$libraryClass->setLastKeyValue( $post['nodeid'] );
|
||||
$this->app->log( 'vb5_post_missing_parent_post_2', __METHOD__, \IPS\convert\App::LOG_WARNING, $post['nodeid'] );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* We may need to insert some data in core_soft_delete_log later if the post was hidden by a moderator. */
|
||||
$softDeleted = FALSE;
|
||||
$queued = 0;
|
||||
if ( !$post['approved'] )
|
||||
{
|
||||
/* If the post is unapproved, then that's a direct translation and the post should then be marked as hidden pending approval. */
|
||||
$queued = 1;
|
||||
}
|
||||
else if ( $post['deleteuserid'] )
|
||||
{
|
||||
$queued = -1;
|
||||
$softDeleted = TRUE;
|
||||
}
|
||||
|
||||
$info = array(
|
||||
'pid' => $post['nodeid'],
|
||||
'topic_id' => $post['parentid'],
|
||||
@@ -459,12 +487,25 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
'author_name' => $post['authorname'],
|
||||
'ip_address' => $post['ipaddress'],
|
||||
'post_date' => $post['publishdate'],
|
||||
'queued' => $post['approved'] ? 0 : -1,
|
||||
'queued' => $queued,
|
||||
'post_htmlstate' => ( in_array( $post['htmlstate'], array( 'on', 'on_nl2br' ) ) ) ? 1 : 0,
|
||||
);
|
||||
|
||||
$post_id = $libraryClass->convertForumsPost( $info );
|
||||
|
||||
/* Need to insert into the SDL? */
|
||||
if ( $softDeleted )
|
||||
{
|
||||
\IPS\Db::i()->insert( 'core_soft_delete_log', array(
|
||||
'sdl_obj_id' => $post_id,
|
||||
'sdl_obj_key' => 'post',
|
||||
'sdl_obj_member_id' => $this->app->getLink( $post['deleteuserid'], 'core_members', TRUE ),
|
||||
'sdl_obj_date' => $post['unpublishdate'] ?: time(),
|
||||
'sdl_obj_reason' => $post['deletereason'] ?: NULL,
|
||||
'sdl_locked' => 0
|
||||
) );
|
||||
}
|
||||
|
||||
/* Reputation */
|
||||
foreach( $this->db->select( '*', 'reputation', array( "nodeid=?", $post['nodeid'] ) ) AS $rep )
|
||||
{
|
||||
@@ -511,7 +552,7 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
/* Warnings */
|
||||
foreach( $this->db->select( '*', 'infraction', array( "nodeid=?", $post['nodeid'] ) ) AS $warn )
|
||||
{
|
||||
$libraryClass->convertWarnLog( array(
|
||||
$warnId = $libraryClass->convertWarnLog( array(
|
||||
'wl_id' => $warn['infractionid'],
|
||||
'wl_member' => $warn['nodeid'],
|
||||
'wl_moderator' => $warn['whoadded'],
|
||||
@@ -520,6 +561,17 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
'wl_note_member' => $warn['note'],
|
||||
'wl_note_mods' => $warn['customreason'],
|
||||
) );
|
||||
|
||||
/* Add a member history record for this member */
|
||||
$libraryClass->convertMemberHistory( array(
|
||||
'log_id' => 'w' . $warn['infractionid'],
|
||||
'log_member' => $warn['userid'],
|
||||
'log_by' => $warn['whoadded'],
|
||||
'log_type' => 'warning',
|
||||
'log_data' => array( 'wid' => $warnId ),
|
||||
'log_date' => $warn['dateline']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/* If we have a latest edit, then update the main post - this should really be in the library, as the converters should not be altering data */
|
||||
@@ -566,12 +618,16 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
}
|
||||
catch( \OutOfRangeException $e )
|
||||
{
|
||||
/* No valid converter link for the parent post */
|
||||
$libraryClass->setLastKeyValue( $attachment['nodeid'] );
|
||||
$this->app->log( 'vb5_attach_missing_post_link', __METHOD__, \IPS\convert\App::LOG_WARNING, $attachment['nodeid'] );
|
||||
continue;
|
||||
}
|
||||
catch( \UnderflowException $e )
|
||||
{
|
||||
/* Parent post does not exist in vB database */
|
||||
$libraryClass->setLastKeyValue( $attachment['nodeid'] );
|
||||
$this->app->log( 'vb5_attach_missing_post', __METHOD__, \IPS\convert\App::LOG_WARNING, $attachment['nodeid'] );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -644,6 +700,7 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
else
|
||||
{
|
||||
$oldAttachId = NULL;
|
||||
$update = FALSE;
|
||||
|
||||
/* Try old attach ID */
|
||||
try
|
||||
@@ -655,8 +712,17 @@ class _Vbulletin5 extends \IPS\convert\Software
|
||||
|
||||
if ( $oldAttachId !== NULL and preg_match( "/\[ATTACH=(.+?)?\]" . $oldAttachId . "\[\/ATTACH\]/i", $post ) )
|
||||
{
|
||||
$update = TRUE;
|
||||
$post = preg_replace( "/\[ATTACH(.+?)?\]" . $oldAttachId . "\[\/ATTACH\]/i", '[attachment=' . $attach_id . ':name]', $post );
|
||||
}
|
||||
elseif( preg_match( "/\[ATTACH=JSON](.+?)\"data-attachmentid\":\"?{$attachment['nodeid']}\"?(.+?)\[\/ATTACH\]/i", $post ) )
|
||||
{
|
||||
$update = TRUE;
|
||||
$post = preg_replace( "/\[ATTACH=JSON](.+?)\"data-attachmentid\":\"?{$attachment['nodeid']}\"?(.+?)\[\/ATTACH\]/i", '[attachment=' . $attach_id . ':name]', $post );
|
||||
}
|
||||
|
||||
if( $update )
|
||||
{
|
||||
\IPS\Db::i()->update( 'forums_posts', array( 'post' => $post ), array( "pid=?", $pid ) );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user