Exemplo n.º 1
0
 public function __construct()
 {
     global $conf;
     $this->perPage =& $conf['perPage'];
     if (!defined('M')) {
         define('M', 'index');
     }
     switch (M) {
         case 'index':
             $this->argsPattern = array('pageNum');
             $this->loaderID = 'cate';
             $this->currentScript = $conf['linkPrefixIndex'];
             break;
         case 'cate':
             $this->argsPattern = array('cateID', 'pageNum');
             $this->loaderID = 'cate';
             $this->currentScript = $conf['linkPrefixCategory'];
             break;
         case 'article':
             $this->argsPattern = array('aID');
             $this->loaderID = 'article';
             $this->currentScript = $conf['linkPrefixArticle'];
             break;
         case 'page':
             $this->argsPattern = array('aID');
             $this->loaderID = 'page';
             $this->currentScript = $conf['linkPrefixPage'];
             break;
         case 'tag':
             $this->argsPattern = array('tValue', 'pageNum');
             $this->loaderID = 'tag';
             $this->currentScript = $conf['linkPrefixTag'];
             break;
         case 'admin':
             $this->argsPattern = array('mainAction', 'subAction', 'pageNum');
             $this->loaderID = 'admin';
             $this->currentScript = 'admin.php';
             break;
         case 'send':
             $this->argsPattern = array('mainAction', 'subAction', 'pageNum');
             $this->loaderID = 'send';
             $this->currentScript = 'send.php';
             break;
         case 'list':
             $this->argsPattern = array('pageNum');
             $this->loaderID = 'list';
             $this->currentScript = $conf['linkPrefixIndex'];
             break;
         case 'api':
             $this->argsPattern = array('mainAPI', 'subAPI', 'pref');
             $this->loaderID = 'api';
             $this->currentScript = 'api.php';
             break;
         default:
             $this->loaderID = 'error';
             $this->currentScript = $conf['linkPrefixIndex'];
             hook('setLoader', 'Execute', $this);
             stopError('Requested mode does not exist.');
     }
     $siteURLTmp = parse_url($conf['siteURL'], PHP_URL_PATH) . '/';
     if (isset($_REQUEST['go'])) {
         $requestedURL = explode('/', $_REQUEST['go']);
     } else {
         if ($siteURLTmp == '/') {
             $requestedURL = explode('/', $_SERVER['PHP_SELF']);
             array_shift($requestedURL);
         } else {
             $requestedURL = explode('/', str_replace($siteURLTmp, '', $_SERVER['PHP_SELF']));
         }
     }
     array_shift($requestedURL);
     if (count($requestedURL) > count($this->argsPattern)) {
         $this->currentArgs = array_slice($requestedURL, 0, count($this->argsPattern));
     } else {
         $this->currentArgs = array_pad($requestedURL, count($this->argsPattern), 1);
     }
     $this->currentArgs = array_combine($this->argsPattern, $this->currentArgs);
     if (array_key_exists('pageNum', $this->currentArgs)) {
         $this->currentPage = $this->currentArgs['pageNum'] = max($this->currentArgs['pageNum'], 1);
         $paginableArgs = $this->currentArgs;
         $paginableArgs['pageNum'] = '%d';
     } else {
         $this->currentPage = 1;
         $paginableArgs = $this->currentArgs;
     }
     $this->canonicalURL = $conf['canonicalURL'] = $conf['siteURL'] . '/' . $this->currentScript . '/' . implode('/', $this->currentArgs) . '/';
     $this->paginableURL = $conf['siteURL'] . '/' . $this->currentScript . '/' . implode('/', $paginableArgs) . '/';
     if (isset($_REQUEST['ajax'])) {
         define('ajax', 1);
     }
     $this->cache = false;
     if (bw::$conf['pageCache'] == '1') {
         if (M == 'index' || M == 'article') {
             $plusAjax = defined('ajax') ? 'ajax' : 'page';
             $cacheKey = md5($this->canonicalURL . $plusAjax);
             $cached = bw::$db->getSingleRow('SELECT * FROM cache WHERE caID=? LIMIT 0, 1', array($cacheKey));
             if (isset($cached['caID'])) {
                 $this->cache = $cached['caContent'];
             } else {
                 define('docache', $cacheKey);
             }
         }
     }
     if (!$this->cache) {
         bw::loadLanguage();
         bw::initCategories();
         bw::loadExtensions();
     }
     if (M != 'admin' && M != 'send') {
         bw::pageStat($this->canonicalURL, M == 'article' ? $this->currentArgs['aID'] : false);
     }
     hook('canonicalized', 'Execute', $this);
 }