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

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

/**
 * 
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author          Raymond Benc
 * @package          Module_Page
 * @version         $Id: page.class.php 3623 2011-11-30 12:43:46Z Raymond_Benc $
 */
class Page_Service_Page extends Phpfox_Service 
{
    
/**
     * Class constructor
     */    
    
public function __construct()
    {    
        
$this->_sTable Phpfox::getT('page');
    }
    
    public function 
prepareTitle($sTitle)
    {
        static 
$aTitle = array();
        
        if (isset(
$aTitle[$sTitle]))
        {
            return 
$aTitle[$sTitle];
        }        
        
        
$sNewTitle Phpfox::getLib('parse.input')->cleanTitle($sTitle);            
            
        
$aOlds $this->database()->select('title_url')
            ->
from($this->_sTable)
            ->
where("title_url LIKE '%" $this->database()->escape($sNewTitle) . "%'")
            ->
execute('getRows');            

        
$iTotal 0;
        foreach (
$aOlds as $aOld)
        {
            
// If the old URL is identical to the new title lets correct the title count
            
if ($aOld['title_url'] === $sNewTitle)
            {                
                
$sNewTitle $sNewTitle;
                
$iTotal++;
                continue;
            }
            
            
// Remove the numerical value from the title
            
if (preg_replace("/(.*?)-[0-9]/i""$1"$aOld['title_url']) === $sNewTitle)
            {
                
$iTotal++;
            }
        }    
        
        
$aTitle[$sTitle] =  $sNewTitle . ($iTotal '-' . ($iTotal 1) : '');        
        
        return 
$aTitle[$sTitle];
    }
    
    public function 
getForEdit($iId)
    {
        ((
$sPlugin Phpfox_Plugin::get('page.service_page_getforedit')) ? eval($sPlugin) : false);
        
        return 
$this->database()->select('p.*, m.menu_id, pt.keyword, pt.description, pt.text, pt.text_parsed')
            ->
from($this->_sTable'p')
            ->
join(Phpfox::getT('page_text'), 'pt''pt.page_id = p.page_id')
            ->
leftJoin(Phpfox::getT('menu'), 'm''m.module_id = 'page' AND m.url_value = p.title_url')
            ->
where('p.page_id = ' . (int) $iId)
            ->
execute('getRow');            
    }
    
    public function 
hasViewed($iId$iUserId)
    {
        
$iCnt $this->database()->select('COUNT(*)')
            ->
from(Phpfox::getT('page_track'))
            ->
where('item_id = ' . (int) $iId ' AND user_id = ' . (int) $iUserId)
            ->
execute('getSlaveField');

        return (
$iCnt true false);
    }
    
    public function 
get()
    {
        ((
$sPlugin Phpfox_Plugin::get('page.service_page_get')) ? eval($sPlugin) : false);
        
        
$aRows $this->database()->select('p.*, m.menu_id')
            ->
from($this->_sTable'p')            
            ->
leftJoin(Phpfox::getT('menu'), 'm''m.page_id = p.page_id')
            ->
order('p.added DESC')
            ->
group('p.title'// avoids duplicated pages
            
->execute('getRows');    
        
        foreach (
$aRows as $iKey => $aRow)
        {
            if (
$aRow['is_phrase'])
            {
                
$aParts explode('.'$aRow['title']);
                if (!
Phpfox::isModule($aParts[0]))
                {
                    
$aRows[$iKey]['is_phrase'] = '0';
                }
            }
        }
        
        return 
$aRows;
    }
    
    public function 
getCache()
    {        
        
$aPages = array();
        
$sCacheId $this->cache()->set('page');
        if (!(
$aPages $this->cache()->get($sCacheId)))
        {
            ((
$sPlugin Phpfox_Plugin::get('page.service_page_getcache')) ? eval($sPlugin) : false);
            
$aRows $this->database()->select('page_id, title_url')
                ->
from($this->_sTable)
                ->
execute('getRows');
            
            foreach (
$aRows as $aRow)
            {
                
$aPages[$aRow['title_url']] = $aRow['page_id'];
            }
            
            
$this->cache()->save($sCacheId$aPages);
        }        
        
        return (
is_array($aPages) ? $aPages : array());
    }
    
    public function 
getPage($mPage$bIsVar false)
    {
        ((
$sPlugin Phpfox_Plugin::get('page.service_page_getpage')) ? eval($sPlugin) : false);
        
        
$aRow $this->database()->select('p.*, pt.keyword, pt.description, pt.text, pt.text_parsed, t.item_id AS has_viewed')
            ->
from($this->_sTable'p')
            ->
join(Phpfox::getT('page_text'), 'pt''pt.page_id = p.page_id')
            ->
leftJoin(Phpfox::getT('page_track'), 't''t.item_id = p.page_id AND t.user_id = ' Phpfox::getUserId())
            ->
join(Phpfox::getT('product'), 'product''p.product_id = product.product_id AND product.is_active = 1')
            ->
where(($bIsVar "p.title_url = '" $this->database()->escape($mPage) . "'" 'p.page_id = ' . (int) $mPage))
            ->
execute('getRow');

        return 
$aRow;
    }

    public function 
export($sProductId$sModule null)
    {
        
$aSql = array();
        
$aSql[] = "p.product_id = '" $sProductId "'";
        if (
$sModule !== null)
        {
            
$aSql[] = "AND p.module_id = '" $sModule "'";
        }

        
$aRows $this->database()->select('p.*, pt.*')
            ->
from($this->_sTable'p')
            ->
join(Phpfox::getT('page_text'), 'pt''pt.page_id = p.page_id')
            ->
where($aSql)
            ->
execute('getRows');

        if (!
count($aRows))
        {
            return 
false;
        }
            
        
$oXmlBuilder Phpfox::getLib('xml.builder');
        
$oXmlBuilder->addGroup('pages');

        foreach (
$aRows as $aRow)
        {
            
$oXmlBuilder->addGroup('page', array(
                    
'module_id' => $aRow['module_id'],
                    
'is_phrase' => $aRow['is_phrase'],
                    
'has_bookmark' => $aRow['has_bookmark'],
                    
'parse_php' => $aRow['parse_php'],
                    
'add_view' => $aRow['add_view'],
                    
'full_size' => $aRow['full_size'],
                    
'title' => $aRow['title'],
                    
'title_url' => $aRow['title_url'],
                    
'added' => $aRow['added']
                )
            );

            
$oXmlBuilder->addTag('keyword'$aRow['keyword']);
            
$oXmlBuilder->addTag('description'$aRow['description']);
            
$oXmlBuilder->addTag('text'$aRow['text']);
            
$oXmlBuilder->addTag('text_parsed'$aRow['text_parsed']);
            
$oXmlBuilder->closeGroup();
        }
        
$oXmlBuilder->closeGroup();

        return 
true;
    }
    
    
/**
     * If a call is made to an unknown method attempt to connect
     * it to a specific plug-in with the same name thus allowing 
     * plug-in developers the ability to extend classes.
     *
     * @param string $sMethod is the name of the method
     * @param array $aArguments is the array of arguments of being passed
     */
    
public function __call($sMethod$aArguments)
    {
        
/**
         * Check if such a plug-in exists and if it does call it.
         */
        
if ($sPlugin Phpfox_Plugin::get('page.service_page__call'))
        {
            return eval(
$sPlugin);
        }
            
        
/**
         * No method or plug-in found we must throw a error.
         */
        
Phpfox_Error::trigger('Call to undefined method ' __CLASS__ '::' $sMethod '()'E_USER_ERROR);
    }    
}

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