Example #1
0
 protected static function getName($id, $id_field, $name_field, $table, $identifier, $cache_folder, $languages_id, $languages_code, $languages_field = "languages_id")
 {
     $id = (int) $id;
     $cache_filename = self::buildFileName($id, $languages_code);
     if (($name = SSUCache::read($cache_filename, $cache_folder)) !== false) {
         return $name;
     }
     $sql_query = "SELECT {$name_field} FROM {$table} WHERE {$id_field} ='{$id}'";
     if ($languages_id != 0) {
         $sql_query .= " AND {$languages_field} = '{$languages_id}'";
     }
     $_name = self::getNameFromDB($sql_query, $name_field);
     // fall back to default language
     if (empty($_name) && $languages_id != 0) {
         $sql_query = "SELECT {$name_field} FROM {$table} WHERE {$id_field} ='{$id}' AND {$languages_field} = 1";
         $_name = self::getNameFromDB($sql_query, $name_field);
     }
     if (empty($_name)) {
         $_name = $name_field;
     }
     $_name = SSULanguage::parseName($_name, $languages_code);
     $name = $_name . $identifier . $id;
     SSUCache::write($cache_filename, $cache_folder, $name);
     // write to link alias
     if (SSUConfig::registry('configs', 'auto_alias')) {
         // here we want to make sure we use the product id without the attribute, we dont want to create aliases for attributes
         if (!is_numeric($id) && ($sem_pos = strpos($id, ':')) !== false) {
             $id = substr($id, 0, $sem_pos);
             $name = $_name . $identifier . $id;
         }
         SSUAlias::autoAlias($id, $cache_folder, $name, $_name);
     }
     return $name;
 }
Example #2
0
 protected static function getName($id, $sql_query, $name_field, $identifier, $cache_folder, $languages_code)
 {
     $cache_filename = self::buildFileName($id, $languages_code);
     if (($name = SSUCache::read($cache_filename, $cache_folder)) !== false) {
         return $name;
     }
     $name = self::getNameFromDB($sql_query, $name_field);
     if (empty($name)) {
         $name = $name_field;
     }
     $name = SSULanguage::parseName($name, $languages_code) . $identifier . $id;
     SSUCache::write($cache_filename, $cache_folder, $name);
     return $name;
 }
Example #3
0
 static function retrieveAliases()
 {
     if (!(isset($_SESSION['ssu_aliases_created_on']) && $_SESSION['ssu_aliases_created_on'] > (int) SSU_CACHE_RESET_TIME)) {
         global $db;
         $aliases = $db->Execute('SELECT * FROM ' . TABLE_LINKS_ALIASES . ' ORDER BY length(link_alias) DESC');
         while (!$aliases->EOF) {
             self::$aliases[] = $aliases->fields['link_alias'];
             self::$links[] = $aliases->fields['link_url'];
             if ($aliases->fields['status'] == 1) {
                 self::$_aliases[] = $aliases->fields['link_alias'];
                 self::$_links[] = $aliases->fields['link_url'];
             }
             $aliases->MoveNext();
         }
         $_SESSION['ssu_aliases']['created_on'] = time();
         self::$no_search = array('link_alias' => array(), 'link_url' => array());
     } else {
         SSUCache::read();
     }
 }
 static function getName($cPath, $languages_id, $languages_code)
 {
     $cache_filename = self::buildFileName($cPath, $languages_code);
     if (($name = SSUCache::read($cache_filename, self::$identifier)) !== false) {
         return $name;
     }
     // do not trust the passed cPath, always rebuild it
     $current_categories_id = self::getID($cPath, '_');
     $category_ids = array();
     zen_get_parent_categories($category_ids, $current_categories_id);
     $category_ids = array_reverse($category_ids);
     $category_ids[] = $current_categories_id;
     $cat_count = count($category_ids);
     $counter = $cat_count - SSUConfig::registry('configs', 'max_level');
     if ($counter < 0) {
         $counter = 0;
     }
     $result = '';
     // this may not be the best way to build the category name, but we do this once per cPath only
     while ($counter <= $cat_count - 1) {
         $category_ids[$counter] = (int) $category_ids[$counter];
         $sql_query = "SELECT categories_name FROM " . TABLE_CATEGORIES_DESCRIPTION . " WHERE categories_id ='" . $category_ids[$counter] . "' AND language_id= '{$languages_id}' LIMIT 1";
         $result .= self::getNameFromDB($sql_query, self::$name_field) . SSUConfig::registry('delimiters', 'name');
         $counter++;
     }
     $result = trim(SSULanguage::parseName($result, $languages_code));
     if (empty($result)) {
         $result = self::$name_field;
     }
     $result = $result . SSUConfig::registry('identifiers', self::$identifier) . $cPath;
     // write to file EVEN if we get an empty content
     SSUCache::write($cache_filename, self::$identifier, $result);
     return $result;
 }
Example #5
0
 function parseParams(&$languages_code, &$page, $parameters)
 {
     $parameters = trim($parameters, ' ?&');
     $set_cache = false;
     $query_string = $params = '';
     $main_page = $page;
     $languages_id = SSUConfig::registry('configs', 'languages_id');
     if (!empty($parameters)) {
         $parsers = SSUConfig::registry('plugins', 'parsers');
         $cache_filename = md5($page . $parameters);
         foreach ($parsers as $key => $parser) {
             if (call_user_func_array(array("{$parser}Parser", "identifyPage2"), array($page, $parameters)) !== false) {
                 if (($params = SSUCache::read("{$cache_filename}_{$languages_code}", 'pc')) !== false) {
                     return $params;
                 }
                 $set_cache = true;
             } elseif (call_user_func_array(array("{$parser}Parser", "identifyParam"), array($parameters)) !== false) {
                 if (($params = SSUCache::read("{$cache_filename}_{$languages_code}", 'pc')) !== false) {
                     return $params;
                 }
                 $set_cache = true;
                 //unset($parsers[$key]);
             } else {
                 unset($parsers[$key]);
             }
         }
         // take out the empty variables
         $params = array();
         parse_str($parameters, $parameters);
         // parse language
         if (isset($parameters['language']) && !empty($parameters['language']) && ($languages_id = $this->getLanguagesID($parameters['language'])) !== false) {
             $languages_code = $parameters['language'];
             if (SSUConfig::registry('configs', 'multilang_status')) {
                 unset($parameters['language']);
             }
         }
         foreach ($parameters as $key => $value) {
             if (!empty($value)) {
                 // exclude certain query keys from being seo-iezed
                 if ($this->checkQueryExcludedList($key)) {
                     $query_string .= $key . '=' . $value . '&';
                 } else {
                     $params[] = $key;
                     $params[] = $value;
                 }
             }
         }
         $parameters = $params;
         foreach ($parsers as $key => $parser) {
             call_user_func_array(array("{$parser}Parser", "parseParam"), array($main_page, &$parameters, $languages_id, $languages_code));
         }
         $params = implode('/', $parameters);
         while (strpos($params, '//') !== false) {
             $params = str_replace('//', '/', $params);
         }
         if (SSUConfig::registry('configs', 'alias_status')) {
             SSUAlias::linkToAlias($params);
         }
     }
     if (SSUConfig::registry('configs', 'alias_status') && !empty($page)) {
         SSUAlias::linkToAlias($page);
     }
     // we cache the whole link so that we dont have to recalculate it again
     $params .= !empty($query_string) ? '?' . trim($query_string, '&') : '';
     if ($set_cache) {
         SSUCache::write("{$cache_filename}_{$languages_code}", 'pc', $params);
     }
     return $params;
 }
Example #6
0
 static function getName($cPath, $languages_id, $languages_code)
 {
     $cache_filename = self::buildFileName($cPath, $languages_code);
     if (($name = SSUCache::read($cache_filename, self::$identifier)) !== false) {
         return $name;
     }
     $current_categories_id = self::getID($cPath, '_');
     $category_ids = explode('_', $cPath);
     $cat_count = count($category_ids);
     $counter = $cat_count - SSUConfig::registry('configs', 'max_level');
     if ($counter < 0) {
         $counter = 0;
     }
     $_name = array();
     // this may not be the best way to build the category name, but we do this once per cPath only
     while ($counter <= $cat_count - 1) {
         $category_ids[$counter] = (int) $category_ids[$counter];
         $sql_query = "SELECT categories_name FROM " . self::$table . " WHERE categories_id ='" . $category_ids[$counter] . "' AND language_id= '{$languages_id}' LIMIT 1";
         $__name = self::getNameFromDB($sql_query, self::$name_field);
         // fall back to default language
         if (empty($__name) && $languages_id != 0) {
             $sql_query = "SELECT categories_name FROM " . self::$table . " WHERE categories_id ='" . $category_ids[$counter] . "' AND language_id = 1 LIMIT 1";
             $__name = self::getNameFromDB($sql_query, self::$name_field);
         }
         //if(empty($__name))
         //	$__name = self::$name_field;
         $_name[] = SSULanguage::parseName($__name, $languages_code);
         $counter++;
     }
     if (empty($_name)) {
         $_name = SSULanguage::parseName($name_field, $languages_code);
     }
     if (SSUConfig::registry('configs', 'alias_status')) {
         $_name = implode(SSUConfig::registry('configs', 'category_separator'), $_name);
         $name = str_replace(SSUConfig::registry('configs', 'category_separator'), SSUConfig::registry('delimiters', 'name'), $_name) . SSUConfig::registry('identifiers', self::$identifier) . $cPath;
     } else {
         $_name = implode(SSUConfig::registry('delimiters', 'name'), $_name);
         $name = $_name . SSUConfig::registry('identifiers', self::$identifier) . $cPath;
     }
     // write to file EVEN if we get an empty content
     SSUCache::write($cache_filename, self::$identifier, $name);
     // write to link alias
     if (SSUConfig::registry('configs', 'auto_alias')) {
         SSUAlias::autoAlias($current_categories_id, self::$identifier, $name, $_name);
     }
     return $name;
 }
Example #7
0
 function parseParams(&$languages_code, &$page, $parameters)
 {
     $set_alias_cache = $set_cache = false;
     $query_string = $params = $excluded_queries = '';
     $languages_id = SSUConfig::registry('configs', 'languages_id');
     $_get = array('main_page' => $page);
     if (!empty($parameters)) {
         $parameters_string = trim($parameters, ' ?&');
         // we shall not include the excluded query in our cache
         parse_str($parameters_string, $parameters);
         $excluded_queries = array();
         // parse language
         if (isset($parameters['language']) && !empty($parameters['language']) && ($languages_id = $this->getLanguagesID($parameters['language'])) !== false) {
             $languages_code = $parameters['language'];
             if (SSUConfig::registry('configs', 'multilang_status')) {
                 unset($parameters['language']);
             }
         }
         foreach ($parameters as $key => $value) {
             if ($value == "") {
                 unset($parameters[$key]);
             }
             if ($this->checkQueryExcludedList($key)) {
                 $excluded_queries[$key] = $value;
                 unset($parameters[$key]);
             }
         }
         $excluded_queries = http_build_query($excluded_queries);
     }
     // here we will attempt to get the cache
     // note that there is a draw back here: we are attemthing to read cache file for every single link
     // but on another hand we may avoid querying the database for aliases
     $parameters_string = !empty($parameters) ? http_build_query($parameters) : '';
     $cache_filename = md5(trim("{$page}&{$parameters_string}", "&"));
     if (($params = SSUCache::read("{$cache_filename}_{$languages_code}", 'pc', true)) !== false) {
         list($page, $params) = explode("|", $params);
         return trim("{$params}?{$excluded_queries}", "?");
     }
     // from this point on, it means we have no cache file
     if (!empty($parameters)) {
         // we will use this to get the cache name
         $parsers = SSUConfig::registry('plugins', 'parsers');
         // kind of a hack here, but we will check if this page exisits first
         if (file_exists(DIR_FS_CATALOG . DIR_WS_MODULES . "pages/{$page}/header_php.php")) {
             foreach ($parsers as $key => $parser) {
                 if (call_user_func_array(array("{$parser}Parser", "identifyPage2"), array(&$page, $parameters_string)) !== false) {
                     //						$set_cache = true;
                 } elseif (call_user_func_array(array("{$parser}Parser", "identifyParam"), array($parameters_string)) !== false) {
                     //						$set_cache = true;
                 } else {
                     unset($parsers[$key]);
                 }
             }
             // to avoid having to querying the database for aliases, we will always cache a "real" page
             $set_cache = true;
         }
         // take out the empty variables
         $params = array();
         foreach ($parameters as $key => $value) {
             if ($value == 0 || !empty($value)) {
                 $params[] = $key;
                 $params[] = $value;
                 $_get[$key] = $value;
             }
         }
         $parameters = $params;
         $pc_id_list = array();
         foreach ($parsers as $key => $parser) {
             $key = call_user_func_array(array("{$parser}Parser", "getStatic"), array('identifier'));
             $pc_id_list[$key] = call_user_func_array(array("{$parser}Parser", "parseParam"), array(&$_get, &$parameters, $languages_id, $languages_code));
         }
         $params = implode('/', $parameters);
         while (strpos($params, '//') !== false) {
             $params = str_replace('//', '/', $params);
         }
     }
     if (SSUConfig::registry('configs', 'alias_status')) {
         //$alias_cache_filename = md5(trim("$page/$params", "/"));
         if (!empty($params)) {
             SSUAlias::linkToAlias($params);
         }
         if (!empty($page)) {
             SSUAlias::linkToAlias($page);
         }
         // comment out to reduce cache files
         //if($set_alias_cache = !SSUCache::exists($alias_cache_filename, 'aliases', true)){
         //	SSUCache::write($alias_cache_filename, 'aliases', http_build_query($_get), true);
         //}
     }
     if ($set_cache) {
         SSUCache::write("{$cache_filename}_{$languages_code}", 'pc', "{$page}|{$params}", true);
         //foreach ($pc_id_list as $type => $id)
         //SSUCache::saveCachePath(array($id), $type, "{$cache_filename}_{$languages_code}");
     }
     // we cache the whole link so that we dont have to recalculate it again
     $params .= !empty($excluded_queries) ? '?' . trim($excluded_queries, '&') : '';
     return $params;
 }