!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\Intranet\C\xampp\php\PEAR\HTML\Progress\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.35%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     UI.php (43.05 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * HTML loading bar with only PHP and JS interface.
 *
 * PHP versions 4 and 5
 *
 * LICENSE: This source file is subject to version 3.0 of the PHP license
 * that is available through the world-wide-web at the following URI:
 * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
 * the PHP License and are unable to obtain it through the web, please
 * send a note to license@php.net so we can mail you a copy immediately.
 *
 * @category   HTML
 * @package    HTML_Progress
 * @subpackage Progress_UI
 * @author     Laurent Laville <pear@laurent-laville.org>
 * @copyright  1997-2005 The PHP Group
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version    CVS: $Id: UI.php,v 1.10 2005/09/14 08:32:30 farell Exp $
 * @link       http://pear.php.net/package/HTML_Progress
 * @since      File available since Release 1.0
 */

require_once 'HTML/Common.php';

/**
 * HTML loading bar with only PHP and JS interface.
 *
 * The HTML_Progress_UI class provides a basic look and feel
 * implementation of a progress bar.
 *
 * @category   HTML
 * @package    HTML_Progress
 * @subpackage Progress_UI
 * @author     Laurent Laville <pear@laurent-laville.org>
 * @copyright  1997-2005 The PHP Group
 * @license    http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version    Release: @package_version@
 * @link       http://pear.php.net/package/HTML_Progress2
 * @since      Class available since Release 1.0
 */

class HTML_Progress_UI extends HTML_Common
{
    
/**
     * Whether the progress bar is horizontal, vertical, polygonal or circle.
     * The default is horizontal.
     *
     * @var        integer
     * @since      1.0
     * @access     private
     * @see        getOrientation(), setOrientation()
     */
    
var $_orientation;

    
/**
     * Whether the progress bar is filled in 'natural' or 'reverse' way.
     * The default fill way is 'natural'.
     *
     * <ul>
     * <li>since 0.5 : 'way'  =  bar fill way
     *   <ul>
     *     <li>with Progress Bar Horizontal,
     *              natural way is : left to right
     *        <br />reverse way is : right to left
     *     <li>with Progress Bar Vertical,
     *              natural way is : down to up
     *        <br />reverse way is : up to down
     *     <li>with Progress Circle or Polygonal,
     *              natural way is : clockwise
     *        <br />reverse way is : anticlockwise
     *   </ul>
     * </ul>
     *
     * @var        string
     * @since      1.0
     * @access     private
     * @see        getFillWay(), setFillWay()
     */
    
var $_fillWay;

    
/**
     * The cell count of the progress bar. The default is 10.
     *
     * @var        integer
     * @since      1.0
     * @access     private
     * @see        getCellCount(), setCellCount()
     */
    
var $_cellCount;

    
/**
     * The cell coordinates for a progress polygonal shape.
     *
     * @var        array
     * @since      1.2.0
     * @access     private
     * @see        getCellCoordinates(), setCellCoordinates()
     */
    
var $_coordinates;

    
/**
     * The width of grid in cell-size of the polygonal shape.
     *
     * @var        integer
     * @since      1.2.0
     * @access     private
     * @see        getCellCoordinates(), setCellCoordinates()
     */
    
var $_xgrid;

    
/**
     * The height of grid in cell-size of the polygonal shape.
     *
     * @var        integer
     * @since      1.2.0
     * @access     private
     * @see        getCellCoordinates(), setCellCoordinates()
     */
    
var $_ygrid;

    
/**
     * The progress bar's structure
     *
     * <ul>
     * <li>['cell']
     *     <ul>
     *     <li>since 1.0 : 'id'             =  cell identifier mask
     *     <li>since 1.0 : 'class'          =  css class selector
     *     <li>since 0.1 : 'width'          =  cell width
     *     <li>since 0.1 : 'height'         =  cell height
     *     <li>since 0.1 : 'active-color'   =  active color
     *     <li>since 0.1 : 'inactive-color' =  inactive color
     *     <li>since 0.1 : 'spacing'        =  cell spacing
     *     <li>since 0.6 : 'color'          =  foreground color
     *     <li>since 0.6 : 'font-size'      =  font size
     *     <li>since 0.6 : 'font-family'    =  font family
     *     <li>since 1.2 : 'background-color' = background color
     *     </ul>
     * <li>['border']
     *     <ul>
     *     <li>since 1.0 : 'class'  =  css class selector
     *     <li>since 0.1 : 'width'  =  border width
     *     <li>since 0.1 : 'style'  =  border style
     *     <li>since 0.1 : 'color'  =  border color
     *     </ul>
     * <li>['string']
     *     <ul>
     *     <li>sicne 1.0 : 'id'                =  string identifier
     *     <li>since 0.6 : 'width'             =  with of progress string
     *     <li>since 0.6 : 'height'            =  height of progress string
     *     <li>since 0.1 : 'font-family'       =  font family
     *     <li>since 0.1 : 'font-size'         =  font size
     *     <li>since 0.1 : 'color'             =  font color
     *     <li>since 0.6 : 'background-color'  =  background color
     *     <li>since 0.6 : 'align'             =  horizontal align  (left, center, right, justify)
     *     <li>since 0.6 : 'valign'            =  vertical align  (top, bottom, left, right)
     *     </ul>
     * <li>['progress']
     *     <ul>
     *     <li>since 1.0 : 'class'             =  css class selector
     *     <li>since 0.1 : 'background-color'  =  bar background color
     *     <li>since 1.0 : 'auto-size'         = compute best progress size
     *     <li>since 0.1 : 'width'             =  bar width
     *     <li>since 0.1 : 'height'            =  bar height
     *     </ul>
     * </ul>
     *
     * @var        array
     * @since      1.0
     * @access     private
     * @see        HTML_Progress::toArray()
     */
    
var $_progress = array();

    
/**
     * External Javascript file to override internal default code
     *
     * @var        string
     * @since      1.0
     * @access     private
     * @see        getScript(), setScript()
     */
    
var $_script;


    
/**
     * The progress bar's UI model class constructor
     *
     * Constructor Summary
     *
     * o Creates a natural horizontal progress bar that displays ten cells/units.
     *   <code>
     *   $html = new HTML_Progress_UI();
     *   </code>
     *
     * o Creates a natural horizontal progress bar with the specified cell count,
     *   which cannot be less than 1 (minimum), but has no maximum limit.
     *   <code>
     *   $html = new HTML_Progress_UI($cell);
     *   </code>
     *
     * @param      int       $cell          (optional) Cell count
     *
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     */
    
function HTML_Progress_UI()
    {
        
// if you've not yet created an instance of html_progress
        
if (!$GLOBALS['_HTML_PROGRESS_CALLBACK_ERRORHANDLER']) {
            
// init default error handling system,
            
HTML_Progress::_initErrorHandler();
        }

        
$args func_get_args();

        switch (
count($args)) {
         case 
1:
            
/*   int cell  */
            
if (!is_int($args[0])) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                    array(
'var' => '$cell',
                          
'was' => $args[0],
                          
'expected' => 'integer',
                          
'paramnum' => 1));

            } elseif (
$args[0] < 1) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                    array(
'var' => '$cell',
                          
'was' => $args[0],
                          
'expected' => 'greater or equal 1',
                          
'paramnum' => 1));
            }
            
$this->_cellCount $args[0];
            break;
         default:
            
$this->_cellCount 10;
            break;
        }
        
$this->_orientation HTML_PROGRESS_BAR_HORIZONTAL;
        
$this->_fillWay 'natural';
        
$this->_script null;              // uses internal javascript code

        
$this->_progress = array(
            
'cell' =>
                array(
                    
'id' => "progressCell%01s",
                    
'class' => "cell",
                    
'active-color' => "#006600",
                    
'inactive-color' => "#CCCCCC",
                    
'font-family' => "Courier, Verdana",
                    
'font-size' => 8,
                    
'color' => "#000000",
                    
'background-color' => "#FFFFFF",
                    
'width' => 15,
                    
'height' => 20,
                    
'spacing' => 2
                
),
            
'border' =>
                array(
                    
'class' => "progressBarBorder",
                    
'width' => 0,
                    
'style' => "solid",
                    
'color' => "#000000"
                
),
            
'string' =>
                array(
                    
'id' => "installationProgress",
                    
'width' => 50,
                    
'font-family' => "Verdana, Arial, Helvetica, sans-serif",
                    
'font-size' => 12,
                    
'color' => "#000000",
                    
'background-color' => "#FFFFFF",
                    
'align' => "right",
                    
'valign' => "right"
                
),
            
'progress' =>
                array(
                    
'class' => "progressBar",
                    
'background-color' => "#FFFFFF",
                    
'auto-size' => true
                
)
        );
        
$this->_updateProgressSize();   // updates the new size of progress bar
    
}

    
/**
     * Returns HTML_PROGRESS_BAR_HORIZONTAL or HTML_PROGRESS_BAR_VERTICAL,
     * depending on the orientation of the progress bar.
     * The default orientation is HTML_PROGRESS_BAR_HORIZONTAL.
     *
     * @return     integer
     * @since      1.0
     * @access     public
     * @see        setOrientation()
     */
    
function getOrientation()
    {
        return 
$this->_orientation;
    }

    
/**
     * Sets the progress bar's orientation, which must be HTML_PROGRESS_BAR_HORIZONTAL
     * or HTML_PROGRESS_BAR_VERTICAL.
     * The default orientation is HTML_PROGRESS_BAR_HORIZONTAL.
     *
     * @param      integer   $orient        Orientation (horizontal or vertical)
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        getOrientation()
     */
    
function setOrientation($orient)
    {
        if (!
is_int($orient)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$orient',
                      
'was' => gettype($orient),
                      
'expected' => 'integer',
                      
'paramnum' => 1));

        } elseif ((
$orient != HTML_PROGRESS_BAR_HORIZONTAL) &&
                  (
$orient != HTML_PROGRESS_BAR_VERTICAL) &&
                  (
$orient != HTML_PROGRESS_POLYGONAL) &&
                  (
$orient != HTML_PROGRESS_CIRCLE)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                array(
'var' => '$orient',
                      
'was' => $orient,
                      
'expected' => HTML_PROGRESS_BAR_HORIZONTAL.' | '.
                                    
HTML_PROGRESS_BAR_VERTICAL.' | '.
                                    
HTML_PROGRESS_POLYGONAL.' | '.
                                    
HTML_PROGRESS_CIRCLE,
                      
'paramnum' => 1));
        }

        
$previous $this->_orientation;    // gets previous orientation
        
$this->_orientation $orient;      // sets the new orientation

        
if ($previous != $orient) {
            
// if orientation has changed, we need to swap cell width and height
            
$w $this->_progress['cell']['width'];
            
$h $this->_progress['cell']['height'];

            
$this->_progress['cell']['width']  = $h;
            
$this->_progress['cell']['height'] = $w;

            
$this->_updateProgressSize();   // updates the new size of progress bar
        
}
    }

    
/**
     * Returns 'natural' or 'reverse', depending of the fill way of progress bar.
     * For horizontal progress bar, natural way is from left to right, and reverse
     * way is from right to left.
     * For vertical progress bar, natural way is from down to up, and reverse
     * way is from up to down.
     * The default fill way is 'natural'.
     *
     * @return     string
     * @since      1.0
     * @access     public
     * @see        setFillWay()
     */
    
function getFillWay()
    {
        return 
$this->_fillWay;
    }

    
/**
     * Sets the progress bar's fill way, which must be 'natural' or 'reverse'.
     * The default fill way is 'natural'.
     *
     * @param      string    $way           fill direction (natural or reverse)
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        getFillWay()
     */
    
function setFillWay($way)
    {
        if (!
is_string($way)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$way',
                      
'was' => gettype($way),
                      
'expected' => 'string',
                      
'paramnum' => 1));

        } elseif ((
strtolower($way) != 'natural') && (strtolower($way) != 'reverse')) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                array(
'var' => '$way',
                      
'was' => $way,
                      
'expected' => 'natural | reverse',
                      
'paramnum' => 1));
        }
        
$this->_fillWay strtolower($way);
    }

    
/**
     * Returns the number of cell in the progress bar. The default value is 10.
     *
     * @return     integer
     * @since      1.0
     * @access     public
     * @see        setCellCount()
     */
    
function getCellCount()
    {
        return 
$this->_cellCount;
    }

    
/**
     * Sets the number of cell in the progress bar
     *
     * @param      integer   $cells         Cell count on progress bar
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        getCellCount()
     */
    
function setCellCount($cells)
    {
        if (!
is_int($cells)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$cells',
                      
'was' => gettype($cells),
                      
'expected' => 'integer',
                      
'paramnum' => 1));

        } elseif (
$cells 1) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                array(
'var' => '$cells',
                      
'was' => $cells,
                      
'expected' => 'greater or equal 1',
                      
'paramnum' => 1));
        }
        
$this->_cellCount $cells;

        
$this->_updateProgressSize();   // updates the new size of progress bar
    
}

    
/**
     * Returns the common and private cell attributes. Assoc array (defaut) or string
     *
     * @param      bool      $asString      (optional) whether to return the attributes as string
     *
     * @return     mixed
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        setCellAttributes()
     */
    
function getCellAttributes($asString false)
    {
        if (!
is_bool($asString)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$asString',
                      
'was' => gettype($asString),
                      
'expected' => 'boolean',
                      
'paramnum' => 1));
        }

        
$attr $this->_progress['cell'];

        if (
$asString) {
            return 
$this->_getAttrString($attr);
        } else {
            return 
$attr;
        }
    }

    
/**
     * Sets the cell attributes for an existing cell.
     *
     * Defaults are:
     * <ul>
     * <li>Common :
     *     <ul>
     *     <li>id             = progressCell%01s
     *     <li>class          = cell
     *     <li>spacing        = 2
     *     <li>active-color   = #006600
     *     <li>inactive-color = #CCCCCC
     *     <li>font-family    = Courier, Verdana
     *     <li>font-size      = lowest value from cell width, cell height, and font size
     *     <li>color          = #000000
     *     <li>background-color = #FFFFFF (added for progress circle shape on release 1.2.0)
     *     <li>Horizontal Bar :
     *         <ul>
     *         <li>width      = 15
     *         <li>height     = 20
     *         </ul>
     *     <li>Vertical Bar :
     *         <ul>
     *         <li>width      = 20
     *         <li>height     = 15
     *         </ul>
     *     </ul>
     * </ul>
     *
     * @param      mixed     $attributes    Associative array or string of HTML tag attributes
     * @param      int       $cell          (optional) Cell index
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        getCellAttributes(), getCellCount()
     */
    
function setCellAttributes($attributes$cell null)
    {
        if (!
is_null($cell)) {
            if (!
is_int($cell)) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                    array(
'var' => '$cell',
                          
'was' => gettype($cell),
                          
'expected' => 'integer',
                          
'paramnum' => 2));

            } elseif (
$cell 0) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                    array(
'var' => '$cell',
                          
'was' => $cell,
                          
'expected' => 'positive',
                          
'paramnum' => 2));

            } elseif (
$cell $this->getCellCount()) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                    array(
'var' => '$cell',
                          
'was' => $cell,
                          
'expected' => 'less or equal '.$this->getCellCount(),
                          
'paramnum' => 2));
            }

            
$this->_updateAttrArray($this->_progress['cell'][$cell], $this->_parseAttributes($attributes));
        } else {
            
$this->_updateAttrArray($this->_progress['cell'], $this->_parseAttributes($attributes));
        }

        
$font_size   $this->_progress['cell']['font-size'];
        
$cell_width  $this->_progress['cell']['width'];
        
$cell_height $this->_progress['cell']['height'];
        
$margin = ($this->getOrientation() == HTML_PROGRESS_BAR_HORIZONTAL) ? 3;

        
$font_size min(min($cell_width$cell_height) - $margin$font_size);
        
$this->_progress['cell']['font-size'] = $font_size;

        
$this->_updateProgressSize();   // updates the new size of progress bar
    
}

    
/**
     * Returns the coordinates of each cell for a polygonal progress shape.
     *
     * @return     array                    list of cell coordinates
     * @since      1.2.0
     * @access     public
     * @see        setCellCoordinates()
     */
    
function getCellCoordinates()
    {
        return isset(
$this->_coordinates) ? $this->_coordinates : array();
    }

    
/**
     * Set the coordinates of each cell for a polygonal progress shape.
     *
     * @param      integer   $xgrid     The grid width in cell size
     * @param      integer   $ygrid     The grid height in cell size
     * @param      array     $coord     (optional) Coordinates (x,y) in the grid, of each cell
     *
     * @return     void
     * @since      1.2.0
     * @access     public
     * @see        getCellCoordinates()
     */
    
function setCellCoordinates($xgrid$ygrid$coord = array())
    {
        if (!
is_int($xgrid)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$xgrid',
                      
'was' => gettype($xgrid),
                      
'expected' => 'integer',
                      
'paramnum' => 1));

        } elseif (
$xgrid 3) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                array(
'var' => '$xgrid',
                      
'was' => $xgrid,
                      
'expected' => 'greater than 2',
                      
'paramnum' => 1));

        } elseif (!
is_int($ygrid)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$ygrid',
                      
'was' => gettype($ygrid),
                      
'expected' => 'integer',
                      
'paramnum' => 2));

        } elseif (
$ygrid 3) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                array(
'var' => '$ygrid',
                      
'was' => $ygrid,
                      
'expected' => 'greater than 2',
                      
'paramnum' => 2));

        } elseif (!
is_array($coord)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$coord',
                      
'was' => gettype($coord),
                      
'expected' => 'array',
                      
'paramnum' => 3));
        }

        if (
count($coord) == 0) {
            
// Computes all coordinates of a standard polygon (square or rectangle)
            
$coord $this->_computeCoordinates($xgrid$ygrid);
        } else {
            foreach (
$coord as $id => $pos) {
                if (!
is_array($pos)) {
                    return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                        array(
'var' => '$coord[,$pos]',
                              
'was' => gettype($pos),
                              
'expected' => 'array',
                              
'paramnum' => 3));
                }
                if (
$pos[0] >= $ygrid) {
                    return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                        array(
'var' => '$pos[0]',
                              
'was' => $pos[0],
                              
'expected' => 'coordinate less than grid height',
                              
'paramnum' => 3));
                }
                if (
$pos[1] >= $xgrid) {
                    return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                        array(
'var' => '$pos[1]',
                              
'was' => $pos[1],
                              
'expected' => 'coordinate less than grid width',
                              
'paramnum' => 3));
                }
            }
        }
        
$this->_coordinates $coord;
        
$this->_xgrid $xgrid;
        
$this->_ygrid $ygrid;

        
// auto-compute cell count
        
$this->_cellCount count($coord);

        
$this->_updateProgressSize();   // updates the new size of progress bar
    
}

    
/**
     * Returns the progress bar's border attributes. Assoc array (defaut) or string.
     *
     * @param      bool      $asString      (optional) whether to return the attributes as string
     *
     * @return     mixed
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        setBorderAttributes()
     */
    
function getBorderAttributes($asString false)
    {
        if (!
is_bool($asString)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$asString',
                      
'was' => gettype($asString),
                      
'expected' => 'boolean',
                      
'paramnum' => 1));
        }

        
$attr $this->_progress['border'];

        if (
$asString) {
            return 
$this->_getAttrString($attr);
        } else {
            return 
$attr;
        }
    }

    
/**
     * Sets the progress bar's border attributes.
     *
     * Defaults are:
     * <ul>
     * <li>class   = progressBarBorder
     * <li>width   = 0
     * <li>style   = solid
     * <li>color   = #000000
     * </ul>
     *
     * @param      mixed     $attributes    Associative array or string of HTML tag attributes
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @see        getBorderAttributes(), HTML_Progress::setBorderPainted()
     */
    
function setBorderAttributes($attributes)
    {
        
$this->_updateAttrArray($this->_progress['border'], $this->_parseAttributes($attributes));

        
$this->_updateProgressSize();   // updates the new size of progress bar
    
}

    
/**
     * Returns the string attributes. Assoc array (defaut) or string.
     *
     * @param      bool      $asString      (optional) whether to return the attributes as string
     *
     * @return     mixed
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        setStringAttributes()
     */
    
function getStringAttributes($asString false)
    {
        if (!
is_bool($asString)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$asString',
                      
'was' => gettype($asString),
                      
'expected' => 'boolean',
                      
'paramnum' => 1));
        }

        
$attr $this->_progress['string'];

        if (
$asString) {
            return 
$this->_getAttrString($attr);
        } else {
            return 
$attr;
        }
    }

    
/**
     * Sets the string attributes.
     *
     * Defaults are:
     * <ul>
     * <li>id                = installationProgress
     * <li>width             = 50
     * <li>font-family       = Verdana, Arial, Helvetica, sans-serif
     * <li>font-size         = 12
     * <li>color             = #000000
     * <li>background-color  = #FFFFFF
     * <li>align             = right
     * <li>Horizontal Bar :
     *     <ul>
     *     <li>valign        = right
     *     </ul>
     * <li>Vertical Bar :
     *     <ul>
     *     <li>valign        = bottom
     *     </ul>
     * </ul>
     *
     * @param      mixed     $attributes    Associative array or string of HTML tag attributes
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @see        getStringAttributes(), HTML_Progress::setStringPainted()
     */
    
function setStringAttributes($attributes)
    {
        
$this->_updateAttrArray($this->_progress['string'], $this->_parseAttributes($attributes));
    }

    
/**
     * Returns the progress attributes. Assoc array (defaut) or string.
     *
     * @param      bool      $asString      (optional) whether to return the attributes as string
     *
     * @return     mixed
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        setProgressAttributes()
     */
    
function getProgressAttributes($asString false)
    {
        if (!
is_bool($asString)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$asString',
                      
'was' => gettype($asString),
                      
'expected' => 'boolean',
                      
'paramnum' => 1));
        }

        
$attr $this->_progress['progress'];

        if (
$asString) {
            return 
$this->_getAttrString($attr);
        } else {
            return 
$attr;
        }
    }

    
/**
     * Sets the common progress bar attributes.
     *
     * Defaults are:
     * <ul>
     * <li>class             = progressBar
     * <li>background-color  = #FFFFFF
     * <li>auto-size         = true
     * <li>Horizontal Bar :
     *     <ul>
     *     <li>width         = (cell_count * (cell_width + cell_spacing)) + cell_spacing
     *     <li>height        = cell_height + (2 * cell_spacing)
     *     </ul>
     * <li>Vertical Bar :
     *     <ul>
     *     <li>width         = cell_width + (2 * cell_spacing)
     *     <li>height        = (cell_count * (cell_height + cell_spacing)) + cell_spacing
     *     </ul>
     * </ul>
     *
     * @param      mixed     $attributes    Associative array or string of HTML tag attributes
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @see        getProgressAttributes()
     */
    
function setProgressAttributes($attributes)
    {
        
$this->_updateAttrArray($this->_progress['progress'], $this->_parseAttributes($attributes));
    }

    
/**
     * Get the javascript code to manage progress bar.
     *
     * @return     string                   JavaScript URL or inline code to manage progress bar
     * @since      0.5
     * @access     public
     * @see        setScript()
     * @author     Stefan Neufeind <pear.neufeind@speedpartner.de> Contributor.
     *             See details on thanks section of README file.
     * @author     Christian Wenz <wenz@php.net> Helper.
     *             See details on thanks section of README file.
     */
    
function getScript()
    {
        if (!
is_null($this->_script)) {
            return 
$this->_script;   // URL to the linked Progress JavaScript
        
}

        
$js = <<< JS
var isDom = document.getElementById?true:false;
var isIE  = document.all?true:false;
var isNS4 = document.layers?true:false;
var cellCount = %cellCount%;

function setprogress(pIdent, pValue, pString, pDeterminate)
{
    if (isDom) {
        prog = document.getElementById(pIdent+'%installationProgress%');
    } else if (isIE) {
        prog = document.all[pIdent+'%installationProgress%'];
    } else if (isNS4) {
        prog = document.layers[pIdent+'%installationProgress%'];
    }
    if (prog != null) {
        prog.innerHTML = pString;
    }
    if (pValue == pDeterminate) {
        for (i=0; i < cellCount; i++) {
            showCell(i, pIdent, "hidden");
        }
    }
    if ((pDeterminate > 0) && (pValue > 0)) {
        i = (pValue-1) % cellCount;
        showCell(i, pIdent, "visible");
    } else {
        for (i=pValue-1; i >=0; i--) {
            showCell(i, pIdent, "visible");
        }
    }
}

function setVisibility(pElement, pVisibility)
{
    if (isDom) {
        document.getElementById(pElement).style.visibility = pVisibility;
    } else if (isIE) {
        document.all[pElement].style.visibility = pVisibility;
    } else if (isNS4) {
        document.layers[pElement].style.visibility = pVisibility;
    }
}

function showCell(pCell, pIdent, pVisibility)
{
    setVisibility(pIdent+'%progressCell%'+pCell+'A', pVisibility);
}

function hideProgress(pIdent)
{
    setVisibility(pIdent+'progress', 'hidden');

    for (i=0; i < cellCount; i++) {
        showCell(i, pIdent, "hidden");
    }
}

JS;
        
$cellAttr $this->getCellAttributes();
        
$attr trim(sprintf($cellAttr['id'], '   '));
        
$stringAttr $this->getStringAttributes();

        
$placeHolders = array('%cellCount%''%installationProgress%''%progressCell%');
        
$jsElement = array($this->getCellCount(), $stringAttr['id'], $attr);

        
$js str_replace($placeHolders$jsElement$js);

        return 
$js;
    }

    
/**
     * Set the external JavaScript code (file) to manage progress element.
     *
     * @param      string    $url           URL to the linked Progress JavaScript
     *
     * @return     void
     * @since      1.0
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     * @see        getScript()
     */
    
function setScript($url)
    {
        if (!
is_null($url)) {
            if (!
is_string($url)) {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                    array(
'var' => '$url',
                          
'was' => gettype($url),
                          
'expected' => 'string',
                          
'paramnum' => 1));

            } elseif (!
is_file($url) || $url == '.' || $url == '..') {
                return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'error',
                    array(
'var' => '$url',
                          
'was' => $url.' file does not exists',
                          
'expected' => 'javascript file exists',
                          
'paramnum' => 1));
            }
        }

        
/*
         - since version 0.5.0,
         - default javascript code comes from getScript() method
         - but may be overrided by external file.
        */
        
$this->_script $url;
    }

    
/**
     * Get the cascading style sheet to put inline on HTML document
     *
     * @return     string
     * @since      0.2
     * @access     public
     * @author     Stefan Neufeind <pear.neufeind@speedpartner.de> Contributor.
     *             See details on thanks section of README file.
     */
    
function getStyle()
    {
        
$tab $this->_getTab();
        
$lnEnd $this->_getLineEnd();
        
$progressAttr $this->getProgressAttributes();
        
$borderAttr $this->getBorderAttributes();
        
$stringAttr $this->getStringAttributes();
        
$cellAttr $this->getCellAttributes();
        
$orient $this->getOrientation();

        
$css  '{%pIdent%} .' $progressAttr['class'] . ', {%pIdent%} .' $borderAttr['class'] . ' {' $lnEnd;
        
$css .= $tab 'background-color: '$progressAttr['background-color'] .';'$lnEnd;
        
$css .= $tab 'width: '$progressAttr['width'] .'px;'$lnEnd;
        
$css .= $tab 'height: '$progressAttr['height'] .'px;'$lnEnd;
        
$css .= $tab 'position: relative;'$lnEnd;
        
$css .= $tab 'left: 0;'$lnEnd;
        
$css .= $tab 'top: 0;'$lnEnd;
        
$css .= '}'$lnEnd $lnEnd;

        
$css .= '{%pIdent%} .' $borderAttr['class'] . ' {' $lnEnd;
        
$css .= $tab 'border-width: '$borderAttr['width'] .'px;'$lnEnd;
        
$css .= $tab 'border-style: '$borderAttr['style'] .';'$lnEnd;
        
$css .= $tab 'border-color: '$borderAttr['color'] .';'$lnEnd;
        
$css .= '}'$lnEnd $lnEnd;

        
$css .= '{%pIdent%} .' $stringAttr['id'] . ' {' $lnEnd;
        
$css .= $tab 'width: '$stringAttr['width'] .'px;'$lnEnd;
        if (isset(
$stringAttr['height'])) {
            
$css .= $tab 'height: '$stringAttr['height'] .'px;'$lnEnd;
        }
        
$css .= $tab 'text-align: '$stringAttr['align'] .';'$lnEnd;
        
$css .= $tab 'font-family: '$stringAttr['font-family'] .';'$lnEnd;
        
$css .= $tab 'font-size: '$stringAttr['font-size'] .'px;'$lnEnd;
        
$css .= $tab 'color: '$stringAttr['color'] .';'$lnEnd;
        
$css .= $tab 'background-color: '$stringAttr['background-color'] .';'$lnEnd;
        
$css .= '}'$lnEnd $lnEnd;

        
$css .= '{%pIdent%} .' $cellAttr['class'] . 'I, {%pIdent%} .' $cellAttr['class'] . 'A {' $lnEnd;
        
$css .= $tab 'width: '$cellAttr['width'] .'px;'$lnEnd;
        
$css .= $tab 'height: '$cellAttr['height'] .'px;'$lnEnd;
        
$css .= $tab 'font-family: '$cellAttr['font-family'] .';'$lnEnd;
        
$css .= $tab 'font-size: '$cellAttr['font-size'] .'px;'$lnEnd;
        if (
$orient == HTML_PROGRESS_BAR_HORIZONTAL) {
            
$css .= $tab 'float: left;'$lnEnd;
        }
        if (
$orient == HTML_PROGRESS_BAR_VERTICAL) {
            
$css .= $tab 'float: none;'$lnEnd;
        }
        
$css .= '}'$lnEnd $lnEnd;

        
$css .= '{%pIdent%} .' $cellAttr['class'] . 'I {' $lnEnd;
        if (
$orient !== HTML_PROGRESS_CIRCLE) {
            
$css .= $tab 'background-color: '$cellAttr['inactive-color'] .';'$lnEnd;
        }
        if (
$orient == HTML_PROGRESS_CIRCLE) {
            
$css .= $tab 'background-image: url("'$cellAttr[0]['background-image'] .'");'$lnEnd;
            
$css .= $tab 'background-repeat: no-repeat;'$lnEnd;
        }
        
$css .= '}'$lnEnd $lnEnd;

        
$css .= '{%pIdent%} .' $cellAttr['class'] . 'A {' $lnEnd;
        if (
$orient !== HTML_PROGRESS_CIRCLE) {
            
$css .= $tab 'background-color: '$cellAttr['active-color'] .';'$lnEnd;
        }
        
$css .= $tab 'visibility: hidden;'$lnEnd;
        if (isset(
$cellAttr['background-image'])) {
            
$css .= $tab 'background-image: url("'$cellAttr['background-image'] .'");'$lnEnd;
            
$css .= $tab 'background-repeat: no-repeat;'$lnEnd;
        }
        
$css .= '}'$lnEnd $lnEnd;

        return 
$css;
    }

    
/**
     * Draw all circle segment pictures
     *
     * @param      string    $dir           (optional) Directory where pictures should be created
     * @param      string    $fileMask      (optional) sprintf format for pictures filename
     *
     * @return     array
     * @since      1.2.0RC1
     * @access     public
     * @throws     HTML_PROGRESS_ERROR_INVALID_INPUT
     */
    
function drawCircleSegments($dir '.'$fileMask 'c%s.png')
    {
        if (!
is_string($dir)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$dir',
                      
'was' => gettype($dir),
                      
'expected' => 'string',
                      
'paramnum' => 1));

        } elseif (!
is_string($fileMask)) {
            return 
HTML_Progress::raiseError(HTML_PROGRESS_ERROR_INVALID_INPUT'exception',
                array(
'var' => '$fileMask',
                      
'was' => gettype($fileMask),
                      
'expected' => 'string',
                      
'paramnum' => 2));
        }

        include_once 
'Image/Color.php';

        
$cellAttr  $this->getCellAttributes();
        
$cellCount $this->getCellCount();
        
$w $cellAttr['width'];
        
$h $cellAttr['height'];
        
$s $cellAttr['spacing'];
        
$c intval(360 $cellCount);
        
$cx floor($w 2);
        if (
fmod($w,2) == 0) {
            
$cx $cx 0.5;
        }
        
$cy floor($h 2);
        if (
fmod($h,2) == 0) {
            
$cy $cy 0.5;
        }

        
$image imagecreate($w$h);

        
$bg     Image_Color::allocateColor($image,$cellAttr['background-color']);
        
$colorA Image_Color::allocateColor($image,$cellAttr['active-color']);
        
$colorI Image_Color::allocateColor($image,$cellAttr['inactive-color']);

        
imagefilledarc($image$cx$cy$w$h0360$colorIIMG_ARC_EDGED);
        
$filename $dir DIRECTORY_SEPARATOR sprintf($fileMask,0);
        
imagepng($image$filename);
        
$this->setCellAttributes(array('background-image' => $filename),0);

        for (
$i=0$i<$cellCount$i++) {
            if (
$this->getFillWay() == 'natural') {
                
$sA $i*$c;
                
$eA = ($i+1)*$c;
                
$sI = ($i+1)*$c;
                
$eI 360;
            } else {
                
$sA 360-(($i+1)*$c);
                
$eA 360-($i*$c);
                
$sI 0;
                
$eI 360-(($i+1)*$c);
            }
            if (
$s 0) {
                
imagefilledarc($image$cx$cy$w$h0$sA$colorIIMG_ARC_EDGED);
            }
            
imagefilledarc($image$cx$cy$w$h$sA$eA$colorAIMG_ARC_EDGED);
            
imagefilledarc($image$cx$cy$w$h$sI$eI$colorIIMG_ARC_EDGED);
            
$filename $dir DIRECTORY_SEPARATOR sprintf($fileMask,$i+1);
            
imagepng($image$filename);

            
$this->setCellAttributes(array('background-image' => $filename),$i+1);
        }
        
imagedestroy($image);
    }

    
/**
     * Updates the new size of progress bar, depending of cell size, cell count
     * and border width.
     *
     * @since      1.0
     * @access     private
     * @see        setOrientation(), setCellCount(), setCellAttributes(),
     *             setBorderAttributes()
     */
    
function _updateProgressSize()
    {
        if (!
$this->_progress['progress']['auto-size']) {
            return;
        }

        
$cell_width   $this->_progress['cell']['width'];
        
$cell_height  $this->_progress['cell']['height'];
        
$cell_spacing $this->_progress['cell']['spacing'];

        
$border_width $this->_progress['border']['width'];

        
$cell_count $this->_cellCount;

        if (
$this->getOrientation() == HTML_PROGRESS_BAR_HORIZONTAL) {
            
$w = ($cell_count * ($cell_width $cell_spacing)) + $cell_spacing;
            
$h $cell_height + ($cell_spacing);
        }
        if (
$this->getOrientation() == HTML_PROGRESS_BAR_VERTICAL) {
            
$w  $cell_width + ($cell_spacing);
            
$h  = ($cell_count * ($cell_height $cell_spacing)) + $cell_spacing;
        }
        if (
$this->getOrientation() == HTML_PROGRESS_POLYGONAL) {
            
$w  $cell_width $this->_xgrid;
            
$h  $cell_height $this->_ygrid;
        }
        if (
$this->getOrientation() == HTML_PROGRESS_CIRCLE) {
            
$w  $cell_width;
            
$h  $cell_height;
        }

        
$attr = array ('width' => $w'height' => $h);

        
$this->_updateAttrArray($this->_progress['progress'], $attr);
    }

    
/**
     * Computes all coordinates of a standard polygon (square or rectangle).
     *
     * @param      integer   $w             Polygon width
     * @param      integer   $h             Polygon height
     *
     * @return     array
     * @since      1.2.0
     * @access     private
     * @see        setCellCoordinates()
     */
    
function _computeCoordinates($w$h)
    {
        
$coord = array();

        for (
$y=0$y<$h$y++) {
            if (
$y == 0) {
                
// creates top side line
                
for ($x=0$x<$w$x++) {
                    
$coord[] = array($y$x);
                }
            } elseif (
$y == ($h-1)) {
                
// creates bottom side line
                
for ($x=($w-1); $x>0$x--) {
                    
$coord[] = array($y$x);
                }
                
// creates left side line
                
for ($i=($h-1); $i>0$i--) {
                    
$coord[] = array($i0);
                }
            } else {
                
// creates right side line
                
$coord[] = array($y$w 1);
            }
        }
        return 
$coord;
    }
}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0468 ]--