Вход Регистрация
Файл: upload/include/library/phpfox/module/component.class.php
Строк: 196
<?php
/**
 * [PHPFOX_HEADER]
 */

defined('PHPFOX') or exit('NO DICE!');

/**
 * Module Component Parent
 * Class is parent with all block/controller components that control each 
 * page on the site as well as blocks found on this pages.
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author            Raymond Benc
 * @package         Phpfox
 * @version         $Id: component.class.php 2721 2011-07-09 09:04:37Z Raymond_Benc $
 */
class Phpfox_Component
{
    
/**
     * Params that can be passed to a component other then request methods.
     *
     * @static 
     * @var array
     */
    
private static $_aParams = array();    

    
/**
     * Holds the current module that component belongs to.
     *
     * @var string
     */
    
private $_sModule;
    
    
/**
     * Holds the current component being loaded.
     *
     * @var string
     */
    
private $_sComponent;    
    
    
/**
     * Groups params based on unique cache ID for the component.
     *
     * @var string
     */
    
private $_sCacheVar null;
    
    
/**
     * Holds the current menu for the page we are on.
     *
     * @var string
     */
    
private static $_sMenuName null;
    
    
/**
     * Class constructor that sets all the variables to identify what component we are loading,
     * module it is a part of and any custom params we are passing.
     *
     * @param array $aParams ARRAY of params we are passing to the component.
     */
    
public function __construct($aParams)
    {
        
$this->_sModule $aParams['sModule'];
        
$this->_sComponent $aParams['sComponent'];
        
$this->setParam($aParams['aParams']);
    }
    
    
/**
     * Gets a param that is part of this component group.
     *
     * @param string $sData Param name.
     * @return mixed If param exists we return the param value otherwise we return NULL.
     */
    
public function __get($sData)
    {
        if (isset(
self::$_aParams[$this->_sCacheVar][$sData]))
        {
            return 
self::$_aParams[$this->_sCacheVar][$sData];
        }
        
        
Phpfox_Error::trigger('Undefined property: ' $sDataE_USER_ERROR);
    }    
    
    
/**
     * Set a param that can be used in other component so we don't pass information via get/post requests.
     *
     * @param mixed $mParams ARRAY or string of param with values.
     * @param string $sValue Value of param if argument 1 is not an ARRAY.
     */    
    
public static function setPublicParam($mParams$sValue '')
    {
        if (!
is_array($mParams))
        {
            
$mParams = array($mParams => $sValue);
        }
        
        foreach (
$mParams as $sVar => $sValue)
        {            
            
self::$_aParams[$sVar] = $sValue;
        }
    }
    
    
/**
     * Set the menu name for the current page we are on.
     *
     * @param string $sMenuName Unique menu name.
     */
    
protected function _setMenuName($sMenuName)
    {
        
self::$_sMenuName $sMenuName;
    }
    
    
/**
     * Get the current menu name of the page we are on.
     *
     * @return string
     */
    
protected function _getMenuName()
    {
        return 
self::$_sMenuName;
    }
    
    
/**
     * Set a param that can be used in other component so we don't pass information via get/post requests.
     *
     * @param mixed $mParams ARRAY or string of param with values.
     * @param string $sValue Value of param if argument 1 is not an ARRAY.
     */
    
protected function setParam($mParams$sValue '')
    {
        if (!
is_array($mParams))
        {
            
$mParams = array($mParams => $sValue);
        }
        
        foreach (
$mParams as $sVar => $sValue)
        {
            if (
$sVar == 'attachment_share')
            {
                
$this->template()->setHeader(array(
                        
'share.js' => 'module_attachment'
                    
)
                );
            }
            
            
self::$_aParams[$sVar] = $sValue;
        }
    }
    
    
/**
     * Get a param for any component loaded after it was set using the method setParam()
     *
     * @see self::setParam()
     * @param string $sVar Var name of the param.
     * @param string $mDef If we cannot find the param you can provide a default value.
     * @return mixed If the param exists we return the value or NULL if nothing was found and a default value was not provided.
     */
    
protected function getParam($sVar$mDef null)
    {
        return (isset(
self::$_aParams[$sVar]) ? self::$_aParams[$sVar] : $mDef);
    }    
    
    
/**
     * Clears a param that was set earlier.
     *
     * @param string $sVar
     */
    
protected function clearParam($sVar)
    {
        if (isset(
self::$_aParams[$sVar]))
        {
            unset(
self::$_aParams[$sVar]);    
        }
    }

    
/**
     * Extends the template class and returns its class object.
     *
     * @see Phpfox_Template
     * @return object
     */
    
protected function template()
    {
        return 
Phpfox::getLib('template');    
    }    
    
    
/**
     * Extends the url class and returns its class object.
     *
     * @see Phpfox_Url
     * @return object
     */
    
protected function url()
    {
        return 
Phpfox::getLib('url');    
    }    
    
    
/**
     * Extends the request class and returns its class object.
     *
     * @see Phpfox_Request
     * @return object
     */
    
protected function request()
    {
        return 
Phpfox::getLib('request');    
    }    
    
    
/**
     * Extends the search class and returns its class object.
     *
     * @see Phpfox_Search
     * @return object
     */
    
protected function search()
    {
        return 
Phpfox::getLib('search');    
    }        
    
    
/**
     * Creates a groupig for a param.
     *
     * @param string $sVar The name of the group.
     * @return object This this class.
     */
    
protected function param($sVar)
    {
        if (isset(
self::$_aParams[$sVar]))
        {        
            
$this->_sCacheVar $sVar;            
        }
        
        return 
$this;
    }    
}

?>
Онлайн: 0
Реклама