$PHORUM ["mod_htmlpurifier"] ) ); $offset = 1; } elseif (! empty ( $_GET ['migrate-sigs'] ) && $PHORUM ['mod_htmlpurifier'] ['migrate-sigs']) { $offset = ( int ) $_GET ['migrate-sigs']; } return $offset; } function phorum_htmlpurifier_migrate_sigs($offset) { global $PHORUM; if (! $offset) return; // bail out quick if $offset == 0 // theoretically, we could get rid of this multi-request // doo-hickery if safe mode is off @set_time_limit ( 0 ); // attempt to let this run $increment = $PHORUM ['mod_htmlpurifier'] ['migrate-sigs-increment']; require_once (dirname ( __FILE__ ) . '/../migrate.php'); // migrate signatures // do this in batches so we don't run out of time/space $end = $offset + $increment; $user_ids = array (); for($i = $offset; $i < $end; $i ++) { $user_ids [] = $i; } $userinfos = phorum_db_user_get_fields ( $user_ids, 'signature' ); foreach ( $userinfos as $i => $user ) { if (empty ( $user ['signature'] )) continue; $sig = $user ['signature']; // perform standard Phorum processing on the sig $sig = str_replace ( array ( "&", "<", ">" ), array ( "&", "<", ">" ), $sig ); $sig = preg_replace ( "/<((http|https|ftp):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),~%]+?)>/i", "$1", $sig ); // prepare fake data to pass to migration function $fake_data = array ( array ( "author" => "", "email" => "", "subject" => "", 'body' => $sig ) ); list ( $fake_message ) = phorum_htmlpurifier_migrate ( $fake_data ); $user ['signature'] = $fake_message ['body']; if (! phorum_api_user_save ( $user )) { exit ( 'Error while saving user data' ); } } unset ( $userinfos ); // free up memory // query for highest ID in database $type = $PHORUM ['DBCONFIG'] ['type']; $sql = "select MAX(user_id) from {$PHORUM['user_table']}"; $row = phorum_db_interact ( DB_RETURN_ROW, $sql ); $top_id = ( int ) $row [0]; $offset += $increment; if ($offset > $top_id) { // test for end condition echo 'Migration finished'; $PHORUM ['mod_htmlpurifier'] ['migrate-sigs'] = false; phorum_htmlpurifier_commit_settings (); return true; } $host = $_SERVER ['HTTP_HOST']; $uri = rtrim ( dirname ( $_SERVER ['PHP_SELF'] ), '/\\' ); $extra = 'admin.php?module=modsettings&mod=htmlpurifier&migrate-sigs=' . $offset; // relies on output buffering to work header ( "Location: http://$host$uri/$extra" ); exit (); } // vim: et sw=4 sts=4