Вход Регистрация
Файл: apwa/stk/tools/admin/resync_attachments.php
Строк: 43
<?php
/**
 *
 * @package Support Toolkit - Resync Attachments
 * @copyright (c) 2009 phpBB Group
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 *
 */

/**
 * @ignore
 */
if (!defined('IN_PHPBB'))
{
    exit;
}

/**
 * Make sure that all avatars on the forum actually have a file
 */
class resync_attachments
{
    
/**
     * The number of users tested per run
     * @var Integer
     */
    
var $_batch_size = 500;

    
/**
     * Options
     * @return String
     */
    
function display_options()
    {
        return 
'RESYNC_ATTACHMENTS';
    }

    function 
run_tool()
    {
        global 
$config, $db, $template;

        
$step    = request_var('step', 0);
        
$begin    = $this->_batch_size * $step;

        
// Get the batch
        
$sql = 'SELECT attach_id, physical_filename
            FROM ' 
. ATTACHMENTS_TABLE;
        
$result    = $db->sql_query_limit($sql, $this->_batch_size, $begin);
        
$batch    = $db->sql_fetchrowset($result);
        
$db->sql_freeresult($result);

        if (empty(
$batch))
        {
            
// Nothing to do
            
trigger_error('RESYNC_ATTACHMENTS_FINISHED');
        }

        
$delete_ids = array();
        foreach (
$batch as $row)
        {
            
// Does the file still exists?
            
$path = PHPBB_ROOT_PATH . $config['upload_path'] . "/{$row['physical_filename']}";
            if (
file_exists($path))
            {
                
// Yes, next please!
                
continue;
            }

            
$delete_ids[] = $row['attach_id'];
        }

        
// Run all the queries
        
if (!empty($delete_ids))
        {
            
$db->sql_query('DELETE FROM ' . ATTACHMENTS_TABLE . ' WHERE ' . $db->sql_in_set('attach_id', $delete_ids));
        }

        
// Next step
        
$template->assign_var('U_BACK_TOOL', false);
        
meta_refresh(3, append_sid(STK_INDEX, array('c' => 'admin', 't' => 'resync_attachments', 'step' => ++$step, 'submit' => true)));
        
trigger_error('RESYNC_ATTACHMENTS_PROGRESS');
    }
}
Онлайн: 3
Реклама