Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F773922
in-portal
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Feb 3, 12:50 AM
Size
27 KB
Mime Type
text/x-diff
Expires
Wed, Feb 5, 12:50 AM (2 h, 44 m)
Engine
blob
Format
Raw Data
Handle
557079
Attached To
rINP In-Portal
in-portal
View Options
Index: branches/unlabeled/unlabeled-1.4.2/kernel/units/general/helpers/mod_rewrite_helper.php
===================================================================
--- branches/unlabeled/unlabeled-1.4.2/kernel/units/general/helpers/mod_rewrite_helper.php (revision 5758)
+++ branches/unlabeled/unlabeled-1.4.2/kernel/units/general/helpers/mod_rewrite_helper.php (revision 5759)
@@ -1,427 +1,427 @@
<?php
class kModRewriteHelper extends kHelper {
function kModRewriteHelper()
{
parent::kHelper();
$this->HTTPQuery =& $this->Application->recallObject('HTTPQuery');
}
function SetDefaultValues(&$vars)
{
$defaults = Array('m_cat_id' => 0, 'm_cat_page' => 1, 'm_opener' => 's');
foreach ($defaults as $default_key => $default_value)
{
if ($this->HTTPQuery->Get($default_key) == null) {
$vars[$default_key] = $default_value;
}
}
}
function ProcessLanguage(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$sql = 'SELECT LanguageId FROM '.TABLE_PREFIX.'Language WHERE LOWER(PackName) = '.$this->Conn->qstr($url_part).' AND Enabled = 1';
$language_id = $this->Conn->GetOne($sql);
$this->Application->Phrases = new PhrasesCache();
if($language_id)
{
$vars['m_lang'] = $language_id;
$res = true;
}
$this->Application->VerifyLanguageId();
if (!$res) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessTheme(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$sql = 'SELECT ThemeId FROM '.TABLE_PREFIX.'Theme WHERE LOWER(Name) = '.$this->Conn->qstr($url_part).' AND Enabled = 1';
$theme_id = $this->Conn->GetOne($sql);
if($theme_id)
{
$vars['m_theme'] = $theme_id;
$res = true;
}
$this->Application->VerifyThemeId(); // verify anyway - will set default if not found!!!
if (!$res) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessCategory(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$category_id = 0;
$last_category_id = 0;
$category_path = '';
do
{
$category_path = trim($category_path.'/'.$url_part, '/');
if( preg_match('/(.*)_([\d]+)$/', $category_path, $rets) )
{
$category_path = $rets[1];
$vars['m_cat_page'] = $rets[2];
}
$category_id = $this->Conn->GetOne(
'SELECT CategoryId
FROM '.TABLE_PREFIX.'Category
WHERE NamedParentPath = '.$this->Conn->qstr($category_path));
if ($category_id !== false) {
$last_category_id = $category_id;
$url_part = array_shift($url_parts);
$res = true;
}
} while ($category_id !== false && $url_part);
$vars['m_cat_id'] = $last_category_id;
if ($url_part) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessModuleIndex(&$url_parts, &$vars)
{
if ( count($url_parts) > 1) return false; // if no more parts or only 1 part left
if ( $url_parts && $url_parts[0] == 'index') { // treat index same as no parts
array_shift($url_parts);
}
if( $url_parts ) { // if parts are left, it can only be module page
if (!is_numeric($url_parts[0])) return false;
// set module pages for all modules, since we don't know which module will need it
foreach ($this->Application->ModuleInfo as $module_name => $module_data)
{
$vars[ $module_data['Var'].'_id'] = 0;
$vars[ $module_data['Var'].'_Page'] = $url_parts[0];
$vars[ $module_data['Var'].'_Reviews_Page'] = 0;
}
}
// try to find CMS index page of the category
if ($this->Application->isModuleEnabled('In-CMS')) {
$sql = 'SELECT p.Path, ci.CategoryId FROM '.TABLE_PREFIX.'Pages AS p
LEFT JOIN '.TABLE_PREFIX.'CategoryItems AS ci
ON ci.ItemResourceId = p.ResourceId
WHERE
p.IsIndex = 1
AND
CategoryId = '.$vars['m_cat_id'].'
AND
ci.PrimaryCat = 1';
$template_found = $this->Conn->GetRow($sql);
if ($template_found !== false) {
$vars['t'] = $template_found['Path'];
return true;
}
}
$sql = 'SELECT CachedCategoryTemplate
FROM '.TABLE_PREFIX.'Category
WHERE CategoryId = '.$vars['m_cat_id'];
$vars['t'] = $this->Conn->GetOne($sql);
if (!$vars['t']) $vars['t'] = 'index';
return true;
}
function ProcessModuleItem(&$url_parts, &$vars, $set_t=true)
{
if (!isset($url_parts[0])) return false;
if ( count($url_parts) != 1 ) return false;
$url_part = array_shift($url_parts);
// match module reviews page
$page = 1;
if( preg_match('/(.*)_([\d]+)$/', $url_part, $rets) )
{
$url_part = $rets[1];
$page = $rets[2];
}
// locating the item in CategoryItems by filename to detect its ItemPrefix and its category ParentPath
$cat_item = $this->Conn->GetRow('
SELECT ci.ItemResourceId, ci.ItemPrefix, c.ParentPath, ci.CategoryId FROM '.TABLE_PREFIX.'CategoryItems AS ci
LEFT JOIN '.TABLE_PREFIX.'Category AS c
ON c.CategoryId = ci.CategoryId
WHERE
ci.CategoryId = '.$vars['m_cat_id'].'
AND
ci.Filename = '.$this->Conn->qstr($url_part));
if ($cat_item !== false) { // item found
$module_prefix = $cat_item['ItemPrefix'];
$parent_path = implode(',',explode('|', substr($cat_item['ParentPath'], 1, -1)));
// item template is stored in module' system custom field - need to get that field Id
$item_template_field_id = $this->Conn->GetOne(
'SELECT CustomFieldId
FROM '.TABLE_PREFIX.'CustomField
WHERE FieldName = '.$this->Conn->qstr($module_prefix.'_ItemTemplate'));
// looking for item template through cats hierarchy sorted by parent path
$query = 'SELECT ccd.l1_cust_'.$item_template_field_id.',
FIND_IN_SET(c.CategoryId, '.$this->Conn->qstr($parent_path).') AS Ord1,
c.CategoryId, c.Name, ccd.l1_cust_15
FROM inp_Category AS c
LEFT JOIN inp_CategoryCustomData AS ccd
ON ccd.ResourceId = c.ResourceId
WHERE c.CategoryId IN ('.$parent_path.') AND ccd.l1_cust_'.$item_template_field_id.' != \'\'
ORDER BY FIND_IN_SET(c.CategoryId, '.$this->Conn->qstr($parent_path).') DESC';
$item_template = $this->Conn->GetOne($query);
// converting ResourceId to correpsonding Item id
$module_config = $this->Application->getUnitOptions($module_prefix);
$item_id = $this->Conn->GetOne(
'SELECT '.$module_config['IDField'].' FROM '.$module_config['TableName'].'
WHERE ResourceId = '.$cat_item['ItemResourceId']
);
- if ($item_template && $item_id) {
+ if ((!$set_t || $item_template) && $item_id) {
if ($set_t) {
$vars['t'] = $item_template;
}
$vars[ $module_prefix.'_id' ] = $item_id;
$vars[ $module_prefix.'_Reviews_Page' ] = $page;
return $module_prefix;
}
}
array_unshift($url_parts, $url_part);
return false;
}
function ProcessPhisycalTemplate(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$remaining = array();
do
{
$template_path = implode('/', $url_parts);
$t_parts['path'] = dirname($template_path) == '.' ? '' : '/'.dirname($template_path);
$t_parts['file'] = basename($template_path);
$sql = 'SELECT FileId
FROM '.TABLE_PREFIX.'ThemeFiles
WHERE (FilePath = '.$this->Conn->qstr($t_parts['path']).') AND (FileName = '.$this->Conn->qstr($t_parts['file'].'.tpl').')';
// $sql = 'SELECT FileId FROM '.TABLE_PREFIX.'ThemeFiles WHERE CONCAT(FilePath, "/", FileName) = '.$this->Conn->qstr('/'.$template_path.'.tpl');
$template_found = $this->Conn->GetOne($sql);
if(!$template_found)
{
array_unshift($remaining, array_pop($url_parts));
}
} while (!$template_found && $url_parts);
$url_parts = $remaining;
if ($template_found) {
$vars['t'] = $template_path;
return true;
}
return false;
}
/**
* Checks if whole url_parts matches a whole In-CMS page
*
* @param array $url_parts
* @return boolean
*/
function ProcessVirtualTemplate(&$url_parts, &$vars)
{
if (!isset($url_parts[0]) || !$this->Application->isModuleEnabled('In-CMS')) return false;
$template_path = implode('/', $url_parts);
$sql = 'SELECT p.PageId, ci.CategoryId FROM '.TABLE_PREFIX.'Pages AS p
LEFT JOIN '.TABLE_PREFIX.'CategoryItems AS ci
ON ci.ItemResourceId = p.ResourceId
WHERE
Path = '.$this->Conn->qstr($template_path).'
AND
ci.PrimaryCat = 1';
$template_found = $this->Conn->GetRow($sql);
if ($template_found) {
$vars['m_cat_id'] = $template_found['CategoryId'];
$vars['t'] = $template_path;
return true;
}
return false;
}
function processRewriteURL()
{
$passed = array();
$url = $this->HTTPQuery->Get('_mod_rw_url_');
if( substr($url, -5) == '.html' ) $url = substr($url, 0, strlen($url) - 5 );
$restored = false;
$cache = $this->Conn->GetRow('SELECT Data, Cached FROM '.TABLE_PREFIX.'Cache WHERE VarName = "mod_rw_'.md5($url).'"');
- if ($cache && $cache['Cached'] > 0) {
+ if (false && $cache && $cache['Cached'] > 0) {
$cache = unserialize($cache['Data']);
$vars = $cache['vars'];
$passed = $cache['passed'];
$restored = true;
}
else {
$passed = array();
$vars = $this->parseRewriteURL($url,$passed);
$cache = array('vars'=>$vars,'passed'=>$passed);
$this->Conn->Query('REPLACE '.TABLE_PREFIX.'Cache (VarName, Data, Cached) VALUES ("mod_rw_'.md5($url).'", '.$this->Conn->qstr(serialize($cache)).', '.adodb_mktime().')');
}
foreach ($vars as $name => $value)
{
$this->HTTPQuery->Set($name,$value);
}
if ($restored) {
$this->InitAll();
}
$this->HTTPQuery->finalizeParsing($passed);
}
function InitAll()
{
$this->Application->Phrases = new PhrasesCache();
$this->Application->VerifyLanguageId();
$this->Application->Phrases->Init('phrases');
$this->Application->VerifyThemeId();
}
function parseRewriteURL($url, &$passed)
{
$vars = $this->Conn->GetRow('SELECT Data, Cached FROM '.TABLE_PREFIX.'Cache WHERE VarName = "mod_rw_'.md5($url).'"');
- if ($vars && $vars['Cached'] > 0) {
+ if (false && $vars && $vars['Cached'] > 0) {
$vars = unserialize($menu['Data']);
return $vars;
}
$vars = array();
$url_parts = $url ? explode('/', $url) : Array();
$process_module = true;
if($this->HTTPQuery->Get('rewrite') == 'on' || !$url_parts)
{
$this->SetDefaultValues($vars);
}
if(!$url_parts)
{
$this->InitAll();
$vars['t'] = $this->HTTPQuery->getDefaultTemplate('');
$passed[] = 'm';
return $vars;
}
else
{
$vars['t'] = '';
}
$passed = Array('m');
$this->ProcessLanguage($url_parts, $vars);
$this->ProcessTheme($url_parts, $vars);
if ( $this->ProcessVirtualTemplate($url_parts, $vars) ) {
return $vars;
}
$this->ProcessCategory($url_parts, $vars);
if ( $this->ProcessModuleIndex($url_parts, $vars) ) {
foreach ($this->Application->ModuleInfo as $module_name => $info) {
$passed[] = $info['Var'];
}
return $vars;
}
if ( $module_prefix = $this->ProcessModuleItem($url_parts, $vars) ) {
$passed[] = $module_prefix;
return $vars;
}
/*// match module
$next_template = $this->HTTPQuery->Get('next_template');
if($url_part || $next_template)
{
if($next_template)
{
$next_template_parts = explode('/', $next_template);
$module_folder = array_shift($next_template_parts);
}
else
{
$module_folder = $url_part;
}
foreach ($this->Application->ModuleInfo as $module_name => $module_data)
{
if( trim($module_data['TemplatePath'], '/') == $module_folder )
{
$module_prefix = $module_data['Var'];
break;
}
}
}*/
if ( $this->ProcessPhisycalTemplate($url_parts, $vars) ) {
if (!$url_parts) {
return $vars;
}
}
if ( $module_prefix = $this->ProcessModuleItem($url_parts, $vars, false) ) {
$passed[] = $module_prefix;
return $vars;
}
$not_found = $this->Application->ConfigValue('ErrorTemplate');
$vars['t'] = $not_found ? $not_found : 'error_notfound';
// $this->HTTPQuery->finalizeParsing($passed, $module_params);
// pass params left to module
/*$this->Application->Phrases->Init('phrases');
$passed = Array('m');
$module_params = Array();
if ( isset($module_prefix) ) {
$passed[] = $module_prefix;
$module_event = new kEvent($module_prefix.':ParseEnv', Array('url_parts' => $url_parts) );
if ($process_module) {
$this->Application->HandleEvent($module_event);
}
$item_id = $this->HTTPQuery->Get($module_prefix.'_id');
$module_params = Array($module_prefix.'_id' => $item_id ? $item_id : '0' );
if ($module_event->status == erFAIL) {
$not_found = $this->Application->ConfigValue('ErrorTemplate');
$this->HTTPQuery->Set('t', $not_found ? $not_found : 'error_notfound' );
}
}
$this->HTTPQuery->finalizeParsing($passed, $module_params);*/
}
}
?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.4.2/kernel/units/general/helpers/mod_rewrite_helper.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4.2.2
\ No newline at end of property
+1.4.2.3
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.4.2/core/units/general/helpers/mod_rewrite_helper.php
===================================================================
--- branches/unlabeled/unlabeled-1.4.2/core/units/general/helpers/mod_rewrite_helper.php (revision 5758)
+++ branches/unlabeled/unlabeled-1.4.2/core/units/general/helpers/mod_rewrite_helper.php (revision 5759)
@@ -1,427 +1,427 @@
<?php
class kModRewriteHelper extends kHelper {
function kModRewriteHelper()
{
parent::kHelper();
$this->HTTPQuery =& $this->Application->recallObject('HTTPQuery');
}
function SetDefaultValues(&$vars)
{
$defaults = Array('m_cat_id' => 0, 'm_cat_page' => 1, 'm_opener' => 's');
foreach ($defaults as $default_key => $default_value)
{
if ($this->HTTPQuery->Get($default_key) == null) {
$vars[$default_key] = $default_value;
}
}
}
function ProcessLanguage(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$sql = 'SELECT LanguageId FROM '.TABLE_PREFIX.'Language WHERE LOWER(PackName) = '.$this->Conn->qstr($url_part).' AND Enabled = 1';
$language_id = $this->Conn->GetOne($sql);
$this->Application->Phrases = new PhrasesCache();
if($language_id)
{
$vars['m_lang'] = $language_id;
$res = true;
}
$this->Application->VerifyLanguageId();
if (!$res) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessTheme(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$sql = 'SELECT ThemeId FROM '.TABLE_PREFIX.'Theme WHERE LOWER(Name) = '.$this->Conn->qstr($url_part).' AND Enabled = 1';
$theme_id = $this->Conn->GetOne($sql);
if($theme_id)
{
$vars['m_theme'] = $theme_id;
$res = true;
}
$this->Application->VerifyThemeId(); // verify anyway - will set default if not found!!!
if (!$res) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessCategory(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$res = false;
$url_part = array_shift($url_parts);
$category_id = 0;
$last_category_id = 0;
$category_path = '';
do
{
$category_path = trim($category_path.'/'.$url_part, '/');
if( preg_match('/(.*)_([\d]+)$/', $category_path, $rets) )
{
$category_path = $rets[1];
$vars['m_cat_page'] = $rets[2];
}
$category_id = $this->Conn->GetOne(
'SELECT CategoryId
FROM '.TABLE_PREFIX.'Category
WHERE NamedParentPath = '.$this->Conn->qstr($category_path));
if ($category_id !== false) {
$last_category_id = $category_id;
$url_part = array_shift($url_parts);
$res = true;
}
} while ($category_id !== false && $url_part);
$vars['m_cat_id'] = $last_category_id;
if ($url_part) {
array_unshift($url_parts, $url_part);
}
return $res;
}
function ProcessModuleIndex(&$url_parts, &$vars)
{
if ( count($url_parts) > 1) return false; // if no more parts or only 1 part left
if ( $url_parts && $url_parts[0] == 'index') { // treat index same as no parts
array_shift($url_parts);
}
if( $url_parts ) { // if parts are left, it can only be module page
if (!is_numeric($url_parts[0])) return false;
// set module pages for all modules, since we don't know which module will need it
foreach ($this->Application->ModuleInfo as $module_name => $module_data)
{
$vars[ $module_data['Var'].'_id'] = 0;
$vars[ $module_data['Var'].'_Page'] = $url_parts[0];
$vars[ $module_data['Var'].'_Reviews_Page'] = 0;
}
}
// try to find CMS index page of the category
if ($this->Application->isModuleEnabled('In-CMS')) {
$sql = 'SELECT p.Path, ci.CategoryId FROM '.TABLE_PREFIX.'Pages AS p
LEFT JOIN '.TABLE_PREFIX.'CategoryItems AS ci
ON ci.ItemResourceId = p.ResourceId
WHERE
p.IsIndex = 1
AND
CategoryId = '.$vars['m_cat_id'].'
AND
ci.PrimaryCat = 1';
$template_found = $this->Conn->GetRow($sql);
if ($template_found !== false) {
$vars['t'] = $template_found['Path'];
return true;
}
}
$sql = 'SELECT CachedCategoryTemplate
FROM '.TABLE_PREFIX.'Category
WHERE CategoryId = '.$vars['m_cat_id'];
$vars['t'] = $this->Conn->GetOne($sql);
if (!$vars['t']) $vars['t'] = 'index';
return true;
}
function ProcessModuleItem(&$url_parts, &$vars, $set_t=true)
{
if (!isset($url_parts[0])) return false;
if ( count($url_parts) != 1 ) return false;
$url_part = array_shift($url_parts);
// match module reviews page
$page = 1;
if( preg_match('/(.*)_([\d]+)$/', $url_part, $rets) )
{
$url_part = $rets[1];
$page = $rets[2];
}
// locating the item in CategoryItems by filename to detect its ItemPrefix and its category ParentPath
$cat_item = $this->Conn->GetRow('
SELECT ci.ItemResourceId, ci.ItemPrefix, c.ParentPath, ci.CategoryId FROM '.TABLE_PREFIX.'CategoryItems AS ci
LEFT JOIN '.TABLE_PREFIX.'Category AS c
ON c.CategoryId = ci.CategoryId
WHERE
ci.CategoryId = '.$vars['m_cat_id'].'
AND
ci.Filename = '.$this->Conn->qstr($url_part));
if ($cat_item !== false) { // item found
$module_prefix = $cat_item['ItemPrefix'];
$parent_path = implode(',',explode('|', substr($cat_item['ParentPath'], 1, -1)));
// item template is stored in module' system custom field - need to get that field Id
$item_template_field_id = $this->Conn->GetOne(
'SELECT CustomFieldId
FROM '.TABLE_PREFIX.'CustomField
WHERE FieldName = '.$this->Conn->qstr($module_prefix.'_ItemTemplate'));
// looking for item template through cats hierarchy sorted by parent path
$query = 'SELECT ccd.l1_cust_'.$item_template_field_id.',
FIND_IN_SET(c.CategoryId, '.$this->Conn->qstr($parent_path).') AS Ord1,
c.CategoryId, c.Name, ccd.l1_cust_15
FROM inp_Category AS c
LEFT JOIN inp_CategoryCustomData AS ccd
ON ccd.ResourceId = c.ResourceId
WHERE c.CategoryId IN ('.$parent_path.') AND ccd.l1_cust_'.$item_template_field_id.' != \'\'
ORDER BY FIND_IN_SET(c.CategoryId, '.$this->Conn->qstr($parent_path).') DESC';
$item_template = $this->Conn->GetOne($query);
// converting ResourceId to correpsonding Item id
$module_config = $this->Application->getUnitOptions($module_prefix);
$item_id = $this->Conn->GetOne(
'SELECT '.$module_config['IDField'].' FROM '.$module_config['TableName'].'
WHERE ResourceId = '.$cat_item['ItemResourceId']
);
- if ($item_template && $item_id) {
+ if ((!$set_t || $item_template) && $item_id) {
if ($set_t) {
$vars['t'] = $item_template;
}
$vars[ $module_prefix.'_id' ] = $item_id;
$vars[ $module_prefix.'_Reviews_Page' ] = $page;
return $module_prefix;
}
}
array_unshift($url_parts, $url_part);
return false;
}
function ProcessPhisycalTemplate(&$url_parts, &$vars)
{
if (!isset($url_parts[0])) return false;
$remaining = array();
do
{
$template_path = implode('/', $url_parts);
$t_parts['path'] = dirname($template_path) == '.' ? '' : '/'.dirname($template_path);
$t_parts['file'] = basename($template_path);
$sql = 'SELECT FileId
FROM '.TABLE_PREFIX.'ThemeFiles
WHERE (FilePath = '.$this->Conn->qstr($t_parts['path']).') AND (FileName = '.$this->Conn->qstr($t_parts['file'].'.tpl').')';
// $sql = 'SELECT FileId FROM '.TABLE_PREFIX.'ThemeFiles WHERE CONCAT(FilePath, "/", FileName) = '.$this->Conn->qstr('/'.$template_path.'.tpl');
$template_found = $this->Conn->GetOne($sql);
if(!$template_found)
{
array_unshift($remaining, array_pop($url_parts));
}
} while (!$template_found && $url_parts);
$url_parts = $remaining;
if ($template_found) {
$vars['t'] = $template_path;
return true;
}
return false;
}
/**
* Checks if whole url_parts matches a whole In-CMS page
*
* @param array $url_parts
* @return boolean
*/
function ProcessVirtualTemplate(&$url_parts, &$vars)
{
if (!isset($url_parts[0]) || !$this->Application->isModuleEnabled('In-CMS')) return false;
$template_path = implode('/', $url_parts);
$sql = 'SELECT p.PageId, ci.CategoryId FROM '.TABLE_PREFIX.'Pages AS p
LEFT JOIN '.TABLE_PREFIX.'CategoryItems AS ci
ON ci.ItemResourceId = p.ResourceId
WHERE
Path = '.$this->Conn->qstr($template_path).'
AND
ci.PrimaryCat = 1';
$template_found = $this->Conn->GetRow($sql);
if ($template_found) {
$vars['m_cat_id'] = $template_found['CategoryId'];
$vars['t'] = $template_path;
return true;
}
return false;
}
function processRewriteURL()
{
$passed = array();
$url = $this->HTTPQuery->Get('_mod_rw_url_');
if( substr($url, -5) == '.html' ) $url = substr($url, 0, strlen($url) - 5 );
$restored = false;
$cache = $this->Conn->GetRow('SELECT Data, Cached FROM '.TABLE_PREFIX.'Cache WHERE VarName = "mod_rw_'.md5($url).'"');
- if ($cache && $cache['Cached'] > 0) {
+ if (false && $cache && $cache['Cached'] > 0) {
$cache = unserialize($cache['Data']);
$vars = $cache['vars'];
$passed = $cache['passed'];
$restored = true;
}
else {
$passed = array();
$vars = $this->parseRewriteURL($url,$passed);
$cache = array('vars'=>$vars,'passed'=>$passed);
$this->Conn->Query('REPLACE '.TABLE_PREFIX.'Cache (VarName, Data, Cached) VALUES ("mod_rw_'.md5($url).'", '.$this->Conn->qstr(serialize($cache)).', '.adodb_mktime().')');
}
foreach ($vars as $name => $value)
{
$this->HTTPQuery->Set($name,$value);
}
if ($restored) {
$this->InitAll();
}
$this->HTTPQuery->finalizeParsing($passed);
}
function InitAll()
{
$this->Application->Phrases = new PhrasesCache();
$this->Application->VerifyLanguageId();
$this->Application->Phrases->Init('phrases');
$this->Application->VerifyThemeId();
}
function parseRewriteURL($url, &$passed)
{
$vars = $this->Conn->GetRow('SELECT Data, Cached FROM '.TABLE_PREFIX.'Cache WHERE VarName = "mod_rw_'.md5($url).'"');
- if ($vars && $vars['Cached'] > 0) {
+ if (false && $vars && $vars['Cached'] > 0) {
$vars = unserialize($menu['Data']);
return $vars;
}
$vars = array();
$url_parts = $url ? explode('/', $url) : Array();
$process_module = true;
if($this->HTTPQuery->Get('rewrite') == 'on' || !$url_parts)
{
$this->SetDefaultValues($vars);
}
if(!$url_parts)
{
$this->InitAll();
$vars['t'] = $this->HTTPQuery->getDefaultTemplate('');
$passed[] = 'm';
return $vars;
}
else
{
$vars['t'] = '';
}
$passed = Array('m');
$this->ProcessLanguage($url_parts, $vars);
$this->ProcessTheme($url_parts, $vars);
if ( $this->ProcessVirtualTemplate($url_parts, $vars) ) {
return $vars;
}
$this->ProcessCategory($url_parts, $vars);
if ( $this->ProcessModuleIndex($url_parts, $vars) ) {
foreach ($this->Application->ModuleInfo as $module_name => $info) {
$passed[] = $info['Var'];
}
return $vars;
}
if ( $module_prefix = $this->ProcessModuleItem($url_parts, $vars) ) {
$passed[] = $module_prefix;
return $vars;
}
/*// match module
$next_template = $this->HTTPQuery->Get('next_template');
if($url_part || $next_template)
{
if($next_template)
{
$next_template_parts = explode('/', $next_template);
$module_folder = array_shift($next_template_parts);
}
else
{
$module_folder = $url_part;
}
foreach ($this->Application->ModuleInfo as $module_name => $module_data)
{
if( trim($module_data['TemplatePath'], '/') == $module_folder )
{
$module_prefix = $module_data['Var'];
break;
}
}
}*/
if ( $this->ProcessPhisycalTemplate($url_parts, $vars) ) {
if (!$url_parts) {
return $vars;
}
}
if ( $module_prefix = $this->ProcessModuleItem($url_parts, $vars, false) ) {
$passed[] = $module_prefix;
return $vars;
}
$not_found = $this->Application->ConfigValue('ErrorTemplate');
$vars['t'] = $not_found ? $not_found : 'error_notfound';
// $this->HTTPQuery->finalizeParsing($passed, $module_params);
// pass params left to module
/*$this->Application->Phrases->Init('phrases');
$passed = Array('m');
$module_params = Array();
if ( isset($module_prefix) ) {
$passed[] = $module_prefix;
$module_event = new kEvent($module_prefix.':ParseEnv', Array('url_parts' => $url_parts) );
if ($process_module) {
$this->Application->HandleEvent($module_event);
}
$item_id = $this->HTTPQuery->Get($module_prefix.'_id');
$module_params = Array($module_prefix.'_id' => $item_id ? $item_id : '0' );
if ($module_event->status == erFAIL) {
$not_found = $this->Application->ConfigValue('ErrorTemplate');
$this->HTTPQuery->Set('t', $not_found ? $not_found : 'error_notfound' );
}
}
$this->HTTPQuery->finalizeParsing($passed, $module_params);*/
}
}
?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.4.2/core/units/general/helpers/mod_rewrite_helper.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.4.2.2
\ No newline at end of property
+1.4.2.3
\ No newline at end of property
Event Timeline
Log In to Comment