Index: trunk/kernel/parser.php =================================================================== diff -u -r3021 -r3124 --- trunk/kernel/parser.php (.../parser.php) (revision 3021) +++ trunk/kernel/parser.php (.../parser.php) (revision 3124) @@ -869,398 +869,308 @@ { global $var_list, $var_list_update, $m_var_list_update, $objSession, $objConfig, $objCatList; - $target_template = getArrayValue($attribs,'_template'); - if(strlen($target_template)) - { - $var_list_update["t"] = $target_template; - } - else - $var_list_update["t"] = $var_list["t"]; + $var_list_update['t'] = getArrayValue($attribs, '_template') ? $attribs['_template'] : $var_list['t']; - $ret = ""; - $form = strtolower($attribs["_form"]); + $ret = ''; + $form = strtolower( $attribs['_form'] ); + $url_params = Array(); + switch($form) { - case "login": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_login"; - if(getArrayValue($attribs,'_successtemplate')) - { - $ret .= "&dest=".$attribs["_successtemplate"]; - } - else - if(getArrayValue($var_list,'dest')) - $ret .= "&dest=".$var_list["dest"]; - } - break; - case "logout": - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_logout"; - break; - case "forgotpw": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - if(strlen($attribs["_errortemplate"])) - { - $err = $attribs["_errortemplate"]; - } - else - $err = $var_list["t"]; - $ret = GetIndexURL(2)."?env=".BuildEnv()."&Action=m_forgotpw&error=$err"; - if( $attribs['_confirm'] ) $ret .= '&Confirm='.$attribs['_confirm']; - - } - break; - case "forgotpw_confirm": - $ret = GetIndexURL(2)."?env=".BuildEnv(); - break; - case "m_sort_cats": - $ret = GetIndexURL(2)."?env=".BuildEnv()."&Action=m_sort_cats"; - break; - case "suggest": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_suggest_email"; - if(strlen($attribs["_confirmtemplate"])>0) - { - $ret .= "&Confirm=".$attribs["_confirmtemplate"]; - } - /*if(strlen($Dest)) - { - $ret .= "&DestTemplate=$Dest"; - } - else - {*/ - if(strlen($attribs["_confirmtemplate"])>0) - $ret .="&DestTemplate=".$var_list["t"]; - //} - - if(strlen($attribs["_errortemplate"])>0) - { - $ret .= "&Error=".$attribs["_errortemplate"]; - } - } - break; - case "suggest_confirm": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - if(strlen($_GET["DestTemplate"])) - { - $var_list_update["t"] = $_GET["DestTemplate"]; - } - else - $var_list_update["t"] = "index"; - - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - break; - case "m_subscribe": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_subscribe_confirm"; - if(strlen($attribs["_subscribetemplate"])) - { - $ret .="&Subscribe=".$attribs["_subscribetemplate"]; - } - - if(strlen($attribs["_unsubscribetemplate"])>0) - { - $ret .= "&Unsubscribe=".$attribs["_unsubscribetemplate"]; - } - if(strlen($attribs["_errortemplate"])>0) - { - $ret .= "&Error=".$attribs["_errortemplate"]; - } - } - break; + case 'login': + if( !$objSession->SessionEnabled() ) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $url_params = Array('Action' => 'm_login'); + if( getArrayValue($attribs, '_successtemplate') ) + { + $url_params['dest'] = $attribs['_successtemplate']; + } + else + { + if( getArrayValue($var_list, 'dest') ) $url_params['dest'] = $var_list['dest']; + } + } + break; - case "subscribe_confirm": - - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_subscribe"; - if($attribs["_subscribetemplate"]) - $ret .= "&Subscribe=".$attribs["_subscribetemplate"]; - break; - case "unsubscribe_confirm": - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_unsubscribe"; - if($attribs["_subscribetemplate"]) - $ret .= "&Subscribe=".$attribs["_subscribetemplate"]; - break; - case "m_unsubscribe": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_unsubscribe"; - if(strlen($attribs["_confirmtemplate"])>0) - { - $ret .= "&Confirm=".$attribs["_confirmtemplate"]; - } - if(strlen($Dest)) - { - $ret .= "&DestTemplate=$Dest"; - } - else - { - if(strlen($attribs["_confirmtemplate"])>0) - $ret .="&DestTemplate=".$var_list["t"]; - } - } + case 'logout': + $url_params = Array('Action' => 'm_logout'); + break; - if(strlen($attribs["_confirmtemplate"])>0) - { - $ret .="&ErrorTemplate=".$attribs["_confirmtemplate"]; - } + case 'forgotpw': + if(!$objSession->SessionEnabled()) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $url_params = Array('Action' => 'm_forgotpw'); + $url_params['error'] = getArrayValue($attribs, '_errortemplate') ? $attribs['_errortemplate'] : $var_list['t']; + if( getArrayValue($attribs, '_confirm') ) $url_params['Confirm'] = $attribs['_confirm']; + } + break; + + /*case 'forgotpw_confirm': + break;*/ + + case 'm_sort_cats': + $url_params = Array('Action' => 'm_sort_cats'); + break; + + case 'suggest': + if( !$objSession->SessionEnabled() ) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $url_params = Array('Action' => 'm_suggest_email'); + + if( getArrayValue($attribs, '_confirmtemplate') ) + { + $url_params['Confirm'] = $attribs['_confirmtemplate']; + $url_params['DestTemplate'] = $var_list['t']; + } + if( getArrayValue($attribs, '_errortemplate') ) $url_params['Error'] = $attribs['_errortemplate']; + } + break; + + case 'suggest_confirm': + if( !$objSession->SessionEnabled() ) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $var_list_update['t'] = getArrayValue($_GET, 'DestTemplate') ? $_GET['DestTemplate'] : 'index'; + } + break; + + case 'm_subscribe': + if( !$objSession->SessionEnabled() ) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $url_params = Array('Action' => 'm_subscribe_confirm'); + $params_map = Array('_subscribetemplate' => 'Subscribe', '_unsubscribetemplate' => 'Unsubscribe', '_errortemplate' => 'Error'); + MapTagParams($url_params, $attribs, $params_map); + } + break; - - break; - case "m_unsubscribe_confirm": - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - break; - case "m_acctinfo": - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_acctinfo&UserId=".$objSession->Get("PortalUserId"); - m_form_load_values($form, $objSession->Get("PortalUserId")); - break; - case "m_profile": - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_profile&UserId=".$objSession->Get("PortalUserId"); - m_form_load_values($form,$objSession->Get("PortalUserId")); - break; + case 'subscribe_confirm': + $url_params = Array('Action' => 'm_subscribe'); + $params_map = Array('_subscribetemplate' => 'Subscribe'); + MapTagParams($url_params, $attribs, $params_map); + break; + + case 'unsubscribe_confirm': + $url_params = Array('Action' => 'm_unsubscribe'); + $params_map = Array('_subscribetemplate' => 'Subscribe'); + MapTagParams($url_params, $attribs, $params_map); + break; - case "m_set_theme": - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_set_theme"; - break; - - case "m_register": + case 'm_unsubscribe': + $params_map = Array('_confirmtemplate' => 'ErrorTemplate'); + MapTagParams($url_params, $attribs, $params_map); + + if( !$objSession->SessionEnabled() ) + { + $var_list_update['t'] = 'error_session'; + } + else + { + $url_params['Action'] = 'm_unsubscribe'; + if( getArrayValue($attribs, '_confirmtemplate') ) + { + $url_params['Confirm'] = $attribs['_confirmtemplate']; + $url_params['DestTemplate'] = $var_list['t']; + } + } + break; - if(!$objSession->SessionEnabled()) + /*case 'm_unsubscribe_confirm': + break;*/ + + case 'm_acctinfo': + $url_params = Array('Action' => 'm_acctinfo', 'UserId' => $objSession->Get('PortalUserId') ); + m_form_load_values( $form, $objSession->Get('PortalUserId') ); + break; + + case 'm_profile': + $url_params = Array('Action' => 'm_profile', 'UserId' => $objSession->Get('PortalUserId') ); + m_form_load_values( $form, $objSession->Get('PortalUserId') ); + break; + + case 'm_set_theme': + $url_params = Array('Action' => 'm_set_theme'); + break; + + case 'm_register': + if( !$objSession->SessionEnabled() ) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $var_list_update['t'] = 'error_session'; } else { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_register"; + $url_params = Array('Action' => 'm_register'); - switch ($objConfig->Get("User_Allow_New")) + switch ( $objConfig->Get('User_Allow_New') ) { - case "1": - if(strlen($attribs["_confirmtemplate"]) && $objConfig->Get("User_Password_Auto")) - $_dest = "&dest=".$attribs["_confirmtemplate"]; - else - $_dest = "&dest=".$attribs["_logintemplate"]; + case 1: + if( getArrayValue($attribs, '_confirmtemplate') && $objConfig->Get('User_Password_Auto') ) + { + $url_params['dest'] = $attribs['_confirmtemplate']; + } + else + { + $url_params['dest'] = $attribs['_logintemplate']; + } break; - case "2": - if(strlen($attribs["_notallowedtemplate"])) - $_dest = "&dest=".$attribs["_notallowedtemplate"]; + case 2: + if( getArrayValue($attribs, '_notallowedtemplate') ) $url_params['dest'] = $attribs['_notallowedtemplate']; break; - case "3": - if(strlen($attribs["_pendingtemplate"])) - $_dest = "&dest=".$attribs["_pendingtemplate"]; + case 3: + if( getArrayValue($attribs, '_pendingtemplate') ) $url_params['dest'] = $attribs['_pendingtemplate']; break; } - - if (strlen($_dest)) - $ret .= $_dest; } - break; + break; - case "register_confirm": - if(!$objSession->SessionEnabled()) + case 'register_confirm': + if( !$objSession->SessionEnabled() ) $var_list_update['t'] = 'error_session'; + break; + + case 'm_addcat': + if( !$objSession->SessionEnabled() ) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $var_list_update['t'] = 'error_session'; } else { - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - break; - case "m_addcat": - if(!$objSession->SessionEnabled()) - { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - } - else - { - $action = "m_add_cat"; - if ($objSession->HasCatPermission("CATEGORY.ADD.PENDING")) + $url_params = Array('Action' => 'm_add_cat'); + if ( $objSession->HasCatPermission('CATEGORY.ADD.PENDING') ) { - if(strlen($attribs["_confirmpending"])) - { - $ConfirmTemplate = $attribs["_confirmpending"]; - } - else - $ConfirmTemplate = $attribs["_confirm"]; - $action="m_add_cat_confirm"; + + $url_params['Confirm'] = $attribs[ getArrayValue($attribs, '_confirmpending') ? '_confirmpending' : '_confirm' ]; + $url_params['Action'] = 'm_add_cat_confirm'; } - if ($objSession->HasCatPermission("CATEGORY.ADD")) + if ( $objSession->HasCatPermission('CATEGORY.ADD') ) { - $ConfirmTemplate = $attribs["_confirm"]; - $action="m_add_cat_confirm"; + $url_params['Confirm'] = $attribs['_confirm']; + $url_params['Action'] = 'm_add_cat_confirm'; } + if( !$url_params['Confirm'] ) unset($url_params['Confirm']); + + if ( getArrayValue($attribs, '_mod_finishtemplate') ) + { + $CurrentCat = (int)$objCatList->CurrentCategoryID(); + if($CurrentCat > 0) + { + $c = $objCatList->GetCategory($CurrentCat); - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=$action"; - if(strlen($ConfirmTemplate)) - $ret .= "&Confirm=$ConfirmTemplate"; + //will prefix the template with module template root path depending on category + $ids = $c->GetParentIds(); + $tpath = GetModuleArray('template'); + $roots = GetModuleArray('rootcat'); - if (strlen($attribs["_mod_finishtemplate"])) { - - $CurrentCat = $objCatList->CurrentCategoryID(); - if((int)$CurrentCat>0) - { - $c = $objCatList->GetCategory($CurrentCat); - - //will prefix the template with module template root path depending on category - $ids = $c->GetParentIds(); - $tpath = GetModuleArray("template"); - $roots = GetModuleArray("rootcat"); - - // get template path of module, by searching for moudle name - // in this categories first parent category - // and then using found moudle name as a key for module template paths array - $path = $tpath[array_search ($ids[0], $roots)]; - $t = $path . $attribs["_mod_finishtemplate"]; - } - else { - $t = $attribs["_mod_finishtemplate"]; //Just in case - } - } - else { - $t = $attribs["_finishtemplate"]; - } - - $ret .="&DestTemplate=".$t; + // get template path of module, by searching for moudle name + // in this categories first parent category + // and then using found moudle name as a key for module template paths array + $path = $tpath[ array_search($ids[0], $roots) ]; + $url_params['DestTemplate'] = $path . $attribs['_mod_finishtemplate']; + } + else + { + $url_params['DestTemplate'] = $attribs['_mod_finishtemplate']; //Just in case + } + } + else + { + $url_params['DestTemplate'] = $attribs['_finishtemplate']; + } } break; - case "m_addcat_confirm": - $target_template = $_GET["DestTemplate"]; - if(strlen($target_template)) + + case 'm_addcat_confirm': + $var_list_update['t'] = getArrayValue($_GET, 'DestTemplate') ? $_GET['DestTemplate'] : $var_list['t']; + break; + + case 'm_simplesearch': + if( !$objSession->SessionEnabled() ) { - $var_list_update["t"] = $target_template; + $var_list_update['t'] = 'error_session'; } else - $var_list_update["t"] = $var_list["t"]; - $ret = GetIndexURL(2)."?env=".BuildEnv(); - break; - case "m_simplesearch": - if(!$objSession->SessionEnabled()) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $url_params = Array('Action' => 'm_simple_search'); + if( getArrayValue($attribs, '_errortemplate') ) $url_params['Error'] = $attribs['_errortemplate']; + m_form_load_values($form, 0); } - else - { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_simple_search"; - - if(strlen($attribs["_errortemplate"])) - $ret.= "&Error=".$attribs["_errortemplate"]; - - m_form_load_values($form, 0); - } - break; - case "m_simple_subsearch": - if(!$objSession->SessionEnabled()) + break; + + case 'm_simple_subsearch': + if( !$objSession->SessionEnabled() ) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $var_list_update['t'] = 'error_session'; } else { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_simple_subsearch"; + $url_params = Array('Action' => 'm_simple_subsearch'); m_form_load_values($form,0); } - break; - case "m_adv_search_type": - if(!$objSession->SessionEnabled()) + break; + + case 'm_adv_search_type': + if( !$objSession->SessionEnabled() ) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $var_list_update['t'] = 'error_session'; } else { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_advsearch_type"; + $url_params = Array('Action' => 'm_advsearch_type'); m_form_load_values($form,0); } - break; - case "m_adv_search": - $SearchType = $_GET["type"]; - if(!is_numeric($SearchType)) - $SearchType = $_POST["itemtype"]; - if(!$objSession->SessionEnabled() && !strlen($SearchType)) + break; + + case 'm_adv_search': + $SearchType = getArrayValue($_GET, 'type') ? $_GET['type'] : $_POST['itemtype']; + if( !$objSession->SessionEnabled() && !$SearchType ) { - $var_list_update["t"] = "error_session"; - $ret = GetIndexURL(2)."?env=" . BuildEnv(); + $var_list_update['t'] = 'error_session'; } else { - $ret = GetIndexURL(2)."?env=" . BuildEnv()."&Action=m_adv_search&type=$SearchType"; + $url_params = Array('Action' => 'm_adv_search', 'type' => $SearchType); m_form_load_values($form,0); } - break; + break; - case "error_access": - $target_template = $_GET["DestTemplate"]; - if(!strlen($target_template)) - $target_template="login"; - $var_list_update["t"] = $target_template; - - $ret = GetIndexURL(2)."?env=" . BuildEnv(); - break; + case 'error_access': + $var_list_update['t'] = getArrayValue($_GET, 'DestTemplate') ? $_GET['DestTemplate'] : 'login'; + break; - case "error_template": - - $target_template = $_GET["DestTemplate"]; - - if($attribs["_referer"] == 1) + case 'error_template': + $target_template = getArrayValue($_GET, 'DestTemplate'); + if($attribs['_referer'] == 1) { - $target_template = "_referer_"; + $target_template = '_referer_'; } - elseif (!strlen($target_template)) + elseif (!$target_template) { - $target_template = "index"; + $target_template = 'index'; } - - $var_list_update["t"] = $target_template; - -// $m_var_list_update["cat"]=0; - - $ret = GetIndexURL(2)."?env=".BuildEnv(); - - break; - + $var_list_update['t'] = $target_template; + break; } - return $ret; + return HREF_Wrapper('', $url_params); } /* @@ -1409,23 +1319,27 @@ { global $m_var_list_update, $objSession,$objLanguages; - $lang = $attribs["_language"]; - if(strlen($lang)) + $lang = getArrayValue($attribs, '_language'); + if($lang) { - $l = $objLanguages->GetItemByField("PackName",$lang); - if(is_object($l)) - $LangId = $l->Get("LanguageId"); + $l = $objLanguages->GetItemByField('PackName', $lang); + if( is_object($l) ) $LangId = $l->Get('LanguageId'); } else - $LangId=$objSession->Get("Language"); + { + $LangId = $objSession->Get('Language'); + } + if($LangId) { - $m_var_list_update["lang"] = $LangId; - $ret = GetIndexURL(2)."?env=".BuildEnv(); - unset($m_var_list_update["lang"]); + $m_var_list_update['lang'] = $LangId; + $ret = HREF_Wrapper(); + unset($m_var_list_update['lang']); } else - $ret = ""; + { + $ret = ''; + } return $ret; } @@ -1513,29 +1427,24 @@ */ function m_settheme_link($attribs) { - global $m_var_list_update, $objSession, $objThemes, $CurrentTheme; + global $m_var_list_update, $objSession, $objThemes, $CurrentTheme; - $ThemeName = $attribs["_theme"]; - - if(strlen($ThemeName)) - { - $t = $objThemes->GetItemByField("Name",$ThemeName); - if(is_object($t)) - { - $Id = $t->Get("ThemeId"); - } - else - $Id = 0; - } - else - { - $t = $CurrentTheme; - $Id = 0; - } - $m_var_list_update["theme"] = $Id; - $ret = GetIndexURL(2)."?env=".BuildEnv(); - unset($m_var_list_update["theme"]); - return $ret; + $ThemeName = getArrayValue($attribs, '_theme'); + if($ThemeName) + { + $t = $objThemes->GetItemByField('Name',$ThemeName); + $Id = is_object($t) ? $t->Get('ThemeId') : 0; + } + else + { + $t = $CurrentTheme; + $Id = 0; + } + $m_var_list_update['theme'] = $Id; + $ret = HREF_Wrapper(); + unset($m_var_list_update['theme']); + + return $ret; } /* @@ -2406,36 +2315,20 @@ { global $var_list, $var_list_update, $m_var_list_update, $objCatList; - $template = getArrayValue($attribs,'_template'); + $var_list_update['t'] = getArrayValue($attribs,'_template') ? $attribs['_template'] : $var_list['t']; - $query = trim( getArrayValue($attribs,'_query') ); - $query = !ereg("^&", $query)? "&$query" : $query; + $query_string = trim( getArrayValue($attribs,'_query') ); + $url_params = $query_string ? ExtractParams($query_string) : Array(); - if(!strlen($template)) - $template = $var_list["t"]; - $cat = getArrayValue($attribs,'_category'); - $var_list_update["t"] = $template; + $cat = getArrayValue($attribs, '_category'); - if(strlen($cat)) - { - if($cat=="NULL") - { - $m_var_list_update["cat"]=0; - } - else - { - $m_var_list_update["cat"] = $cat; - } - } - - $link_type = getArrayValue($attribs,'_relative') ? 0 : 2; - $ret = GetIndexURL($link_type)."?env=".BuildEnv().$query; - - if(strlen(getArrayValue($attribs,'_anchor'))) - $ret .= "#".$attribs["_anchor"]; - unset($var_list_update["t"]); - if(strlen($cat)) - unset($m_var_list_update["cat"]); + if($cat) $m_var_list_update['cat'] = ($cat == 'NULL') ? 0 : $cat; + if( getArrayValue($attribs,'_anchor') ) $url_params['anchor'] = $attribs['_anchor']; + + $ret = HREF_Wrapper('', $url_params); + + unset( $var_list_update['t'] ); + if($cat) unset( $m_var_list_update['cat'] ); return $ret; } @@ -2497,6 +2390,9 @@ } } } + + $url_params = Array('dest' => ''); + $access = $attribs["_template"]; $denied = $attribs["_deniedtemplate"]; if(!strlen($denied)) @@ -2517,15 +2413,16 @@ $template = $var_list["t"]; if($template == "login") { - $dest = $access; + $url_params['dest'] = $access; } $var_list_update["t"] = $template; } - $ret = GetIndexURL(2)."?env=".BuildEnv(); + if( !$url_params['dest'] ) unset($url_params['dest']); + $ret = HREF_Wrapper('', $url_params); + unset($var_list_update["t"]); - if(isset($dest)&&$dest) - $ret .= "&dest=$dest"; + return $ret; }