admin
doz
html2pdf_v4.03
htmlpurifier-4.10.0
art
benchmarks
configdoc
docs
extras
library
maintenance
plugins
phorum
settings
form.php
migrate-sigs-form.php
migrate-sigs.php
save.php
.gitignore
Changelog
INSTALL
README
config.default.php
htmlpurifier.php
info.txt
init-config.php
migrate.bbcode.php
settings.php
modx.txt
smoketests
tests
.gitattributes
.gitignore
.travis.yml
CREDITS
Doxyfile
INSTALL
INSTALL.fr.utf8
LICENSE
NEWS
README.md
TODO
VERSION
WHATSNEW
WYSIWYG
composer.json
phpdoc.ini
images
prints
prints3
proseminar
Kennwortwechsel.php
hauptframe.php
index.php
index_alt.php
index_db.php
index_frame.htm
index_ldap.php
login.php
logout.php
menuframe.htm
styles_pc.css
topframe.php
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
 | 
						|
function phorum_htmlpurifier_migrate_sigs_check()
 | 
						|
{
 | 
						|
    global $PHORUM;
 | 
						|
    $offset = 0;
 | 
						|
    if (!empty($_POST['migrate-sigs'])) {
 | 
						|
        if (!isset($_POST['confirmation']) || strtolower($_POST['confirmation']) !== 'yes') {
 | 
						|
            echo 'Invalid confirmation code.';
 | 
						|
            exit;
 | 
						|
        }
 | 
						|
        $PHORUM['mod_htmlpurifier']['migrate-sigs'] = true;
 | 
						|
        phorum_db_update_settings(array("mod_htmlpurifier"=>$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
 |