Вход Регистрация
Файл: rebuildGallery4.php
Строк: 201
#!/usr/local/bin/php
<?php

/**
 * <pre>
 * Invision Power Services
 * IP.Board v3.3.3
 * Main public executable wrapper.
 * Set-up and load module to run
 * Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
 * </pre>
 *
 * @author         $Author: bfarber $
 * @copyright    (c) 2001 - 2009 Invision Power Services, Inc.
 * @license        http://www.invisionpower.com/company/standards.php#license
 * @package        IP.Board
 * @link        http://www.invisionpower.com
 * @version        $Rev: 10721 $
 *
 */

define'IPS_IS_SHELL'TRUE );
define'IPB_THIS_SCRIPT''admin' );

if ( 
is_file'./initdata.php' ) )
{
    require_once( 
'./initdata.php' );/*noLibHook*/
}
else
{
    require_once( 
'../initdata.php' );/*noLibHook*/
}

require_once( 
IPS_ROOT_PATH 'sources/base/ipsRegistry.php' );/*noLibHook*/
require_once( IPS_ROOT_PATH 'sources/base/ipsController.php' );/*noLibHook*/

$reg ipsRegistry::instance();
$reg->init();

/* Ensure it's CLI */
$cli php_sapi_name() === 'cli';

if ( ! 
$cli )
{
      print 
"<html><head><title>Warning</title></head>n";
      print 
"<body style='text-align:center'>n";
      print 
"This script is meant to be run via command line<br />n";
      print 
"More information:<br />n";
      print 
"<a href="http://www.google.com/search?hl=en&q=php+cli+windows" target="_blank">http://www.google.com/search?hl=en&q=php+cli+windows</a><br />n";
      
print "This script will not run through a webserver.<br />n";
      print 
"</body></html>n";
      exit();
}


print 
"n                   ";
print 
"n (_) _ __   ____   ";
print 
"n | || '_  / ___'  ";
print 
"n | || |_) |  __.  ";
print 
"n | || .__/.___   ";
print 
"n |_||_|  |_______/  nn";

$moo = new moo$reg );

class 
moo
{
    function 
__constructipsRegistry $registry )
    {
        
$this->registry   =  $registry;
        
$this->DB         =  $this->registry->DB();
        
$this->settings   =& $this->registry->fetchSettings();
        
$this->request    =& $this->registry->fetchRequest();
        
$this->cache      =  $this->registry->cache();
        
$this->caches     =& $this->registry->cache()->fetchCaches();
        
$this->stdin      =  fopen('php://stdin''r');
        
        
/* Gallery Object */
        
require_once( IPSLib::getAppDir('gallery') . '/sources/classes/gallery.php' );/*noLibHook*/
        
$registry->setClass'gallery', new ipsGallery$registry ) );
        
        
$this->albums   $this->registry->gallery->helper('albums');
        
$this->images   $this->registry->gallery->helper('image');
        
$this->moderate $this->registry->gallery->helper('moderate');
        
        
/* Load up gallery boyo */
        
$this->_print"--------------------------------------------nWelcome to the IP.Gallery Rebuild Tooln--------------------------------------------n" );
        
$this->_print"[0] Rebuild All Albums Node Data (Node level, left and right indexes)" );
        
$this->_print"[1] Rebuild Album Data (Cover image, comment counts, etc)" );
        
$this->_print"[2] Rebuild Album Permissions (Ensures inherited permissions are OK)" );
        
$this->_print"[3] Rebuild Image File Data (Thumbnail images, etc)" );
        
$this->_print"[4] Rebuild Image SEO Data" );
        
        
$this->_print"Enter Choice: """ );

        
$option $this->_fetchOption();
        
        if ( 
stristr$option'look' ) )
        {
            
$this->_print("nYou see a forest full of shadows. In the distance smoke rises from a small building. There is a troll here." );
            exit;
        }
            
        switch( 
$option )
        {
            case 
0:
                
$this->_albumNodes();
            break;
            case 
1:
                
$this->_albumData();
            break;
            case 
2:
                
$this->_albumPermissions();
            break;
            case 
3:
                
$this->_images();
            break;
            case 
4:
                
$this->_seoImages();
            break;
            case 
99:
                
$this->_print("n100!");
            break;
            default:
                
$this->_print("nThat wasn't a real option and I strongly believe you knew that");
            break;
        }
    }
    
    
/**
     * Rebuild All Nodes
     */
    
protected function _albumNodes()
    {
        
$this->albums->rebuildNodeTree();
        
        
$this->_print("Node Tree rebuilt");
        exit();
    }
    
    
/**
     * Rebuild All Permissions
     */
    
protected function _albumPermissions()
    {
        
$this->moderate->resetPermissions(0);
        
        
$this->_print("Permissions rebuilt");
        exit();
    }
    
    
/**
     * Rebuild All Album Data
     */
    
protected function _albumData()
    {
        
$done  0;
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'gallery_albums_main',
                                 
'where'  => '1=1' ) );
        
        
$o $this->DB->execute();
        
        while( 
$row $this->DB->fetch$o ) )
        {
            
$done++;
            
$this->albums->resync$row );
        }
        
        
$this->_print("Album Data rebuilt");
        exit();
    }

    
/**
     * Rebuild Images
     */
    
protected function _images()
    {
        
/* INIT */
        
$start time();
        
$done  0;
        
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'gallery_images',
                                 
'order'  => 'id ASC' )  );
                                
        
$o $this->DB->execute();
        
        while( 
$row $this->DB->fetch$o ) )
        {
            
$done++;
            
            
$this->images->resync$row );
            
$this->images->buildSizedCopies$row );
            
            if ( 
$done 50 == )
            {
                
$this->_print"Completed... " $done " (IMG ID=" $row['id'] . " total=" . ( $done ) . ")" );
            }
            
            
/* Clear cached queries */
            
$this->DB->obj['cached_queries'] = array();
        }
        
        
$end time();
        
$tkn = ( $end $start) / 60;
        
        
$this->_print"Finished Images. Took " $tkn "mn" );
    }
    
    
/**
     * Rebuild Images
     */
    
protected function _seoImages()
    {
        
/* INIT */
        
$start time();
        
$done  0;
        
        
$this->DB->build( array( 'select' => '*',
                                 
'from'   => 'gallery_images',
                                 
'order'  => 'id ASC' )  );
                                
        
$o $this->DB->execute();
        
        while( 
$row $this->DB->fetch$o ) )
        {
            
$done++;
            
            
$this->DB->update'gallery_images', array( 'caption_seo' => IPSText::makeSeoTitle$row['caption'] ) ), 'id=' $row['id'] );
            
            if ( 
$done 50 == )
            {
                
$this->_print"Completed... " $done " (IMG ID=" $row['id'] . " total=" . ( $done ) . ")" );
            }
            
            
/* Clear cached queries */
            
$this->DB->obj['cached_queries'] = array();
        }
        
        
$end time();
        
$tkn = ( $end $start) / 60;
        
        
$this->_print"Finished Images. Took " $tkn "mn" );
    }


    
/**
     * Out to stdout
     */
    
protected function _print$message$newline="n" )
    {
        
$stdout fopen('php://stdout''w');
        
fwrite$stdout$message $newline );
        
fclose$stdout );
    }
    
    
/* Fetch option
     *
     */
    
protected function _fetchOption()
    {
        return 
trimfgets$this->stdin ) );
    }
}

exit();
Онлайн: 0
Реклама