コード例 #1
0
ファイル: metadata.php プロジェクト: affiliatelk/ecc
 function generateMetadata()
 {
     $where = " WHERE params LIKE '%\"published\":1%' AND params LIKE '%\"trashed\":0%' AND params LIKE '%\"notfound\":0%'";
     $rows = MijoDatabase::loadObjectList("SELECT url_sef, url_real FROM #__mijosef_urls {$where}");
     if (!is_array($rows) || empty($rows)) {
         return false;
     }
     jimport('joomla.language.helper');
     $ret = false;
     foreach ($rows as $row) {
         $component = Mijosef::get('utility')->getOptionFromRealURL($row->url_real);
         if (file_exists(JPATH_MIJOSEF_ADMIN . '/extensions/' . $component . '.php')) {
             $mijosef_ext = Mijosef::getExtension($component);
             $uri = Mijosef::get('uri')->_createURI($row->url_real);
             $mijosef_ext->beforeBuild($uri);
             $segments = array();
             $do_sef = true;
             $meta = null;
             $item_limitstart = false;
             $vars = $uri->getQuery(true);
             $mijosef_ext->build($vars, $segments, $do_sef, $meta, $item_limitstart);
             if (is_array($meta) && count($meta) > 0) {
                 Mijosef::get('metadata')->autoMetadata($row->url_sef, $meta);
                 $ret = true;
             }
         }
     }
     return $ret;
 }
コード例 #2
0
ファイル: categorylist.php プロジェクト: affiliatelk/ecc
 function getInput()
 {
     $attribs = 'class="inputbox" size="10" multiple="multiple"';
     // Get rows
     static $tree;
     if (!isset($tree)) {
         $extension = Mijosef::get('utility')->getExtensionFromRequest();
         $mijosef_ext = Mijosef::getExtension($extension);
         $db_query = "";
         if ($this->element['db_query']) {
             $db_query = $this->element['db_query'];
         }
         $rows = $mijosef_ext->getCategoryList($db_query);
         // Collect childrens
         $children = array();
         if (!empty($rows)) {
             foreach ($rows as $row) {
                 // Not subcategories
                 if (empty($row->parent)) {
                     $row->parent = 0;
                 }
                 $pt = $row->parent;
                 $list = @$children[$pt] ? $children[$pt] : array();
                 array_push($list, $row);
                 $children[$pt] = $list;
             }
         }
         // Not subcategories
         if (empty($rows[0]->parent)) {
             $rows[0]->parent = 0;
         }
         // Build Tree
         $tree = self::_buildTree(intval($rows[0]->parent), '', array(), $children);
     }
     $options = array();
     $options[] = array('id' => 'all', 'name' => JText::_('COM_MIJOSEF_PARAMS_ALL_CATS'));
     /*foreach ($node->children() as $option) {
     			$options[] = array('id' => $option->attributes('value'), 'name' => $option->data());
     		}*/
     foreach ($tree as $item) {
         $options[] = array('id' => $item->id, 'name' => $item->name);
     }
     return JHTML::_('select.genericlist', $options, $this->name, $attribs, 'id', 'name', $this->value, $this->name);
 }
コード例 #3
0
ファイル: metadata.php プロジェクト: affiliatelk/ecc
 function update($where = "", $fields)
 {
     // Get records
     $urls = MijoDatabase::loadObjectList("SELECT m.id, m.url_sef, u.url_real FROM #__mijosef_metadata AS m, #__mijosef_urls AS u WHERE m.url_sef = u.url_sef {$where}");
     if (!empty($urls)) {
         $ret = "";
         foreach ($urls as $i => $record) {
             $id = $record->id;
             $sef_url = $record->url_sef;
             $real_url = $record->url_real;
             if (!strpos($real_url, "option=")) {
                 continue;
             }
             $component = Mijosef::get('utility')->getOptionFromRealURL($real_url);
             if (file_exists(JPATH_MIJOSEF_ADMIN . '/extensions/' . $component . '.php')) {
                 $mijosef_ext = Mijosef::getExtension($component);
                 $uri = Mijosef::get('uri')->_createURI($real_url);
                 $mijosef_ext->beforeBuild($uri);
                 $segments = array();
                 $do_sef = true;
                 $meta = null;
                 $item_limitstart = false;
                 $vars = $uri->getQuery(true);
                 $mijosef_ext->build($vars, $segments, $do_sef, $meta, $item_limitstart);
                 if (is_array($meta) && count($meta) > 0 && !empty($fields) && is_array($fields)) {
                     $metadata = "";
                     foreach ($fields as $index => $field) {
                         if (!empty($meta[$field])) {
                             $metadata .= "{$field} = '{$meta[$field]}', ";
                         }
                     }
                     if (!empty($metadata)) {
                         $metadata = rtrim($metadata, ', ');
                         MijoDatabase::query("UPDATE #__mijosef_metadata SET {$metadata} WHERE id = {$id}");
                         $ret .= $sef_url . ' ===> ' . JText::_('COM_MIJOSEF_METADATA_UPDATED_OK') . '<br/>';
                     } else {
                         $ret .= $sef_url . ' ===> ' . JText::_('COM_MIJOSEF_METADATA_UPDATED_CANT') . '<br/>';
                     }
                 } else {
                     $ret .= JText::_('COM_MIJOSEF_METADATA_UPDATED_NO');
                 }
             } else {
                 $ret .= $sef_url . ' ===> ' . JText::_('COM_MIJOSEF_METADATA_UPDATED_NO_EXTENSION') . '<br/>';
             }
         }
         return $ret;
     } else {
         return JText::_('COM_MIJOSEF_METADATA_UPDATED_NO');
     }
 }
コード例 #4
0
ファイル: router.php プロジェクト: affiliatelk/ecc
 function &build(&$siteRouter, &$uri)
 {
     $sef_url = "";
     $orig_path = $uri->getPath();
     $url = ExtURI::getURL($uri);
     $real_url = str_replace('&amp;', '&', $url);
     // Security - only allow colon in protocol part
     if (strpos($real_url, ':') !== false) {
         $offset = 0;
         if (substr($real_url, 0, 5) == 'http:') {
             $offset = 5;
         } elseif (substr($real_url, 0, 6) == 'https:') {
             $offset = 6;
         }
         $real_url = substr($real_url, 0, $offset) . str_replace(':', '%3A', substr($real_url, $offset));
     }
     // Create URI object
     $uri = $this->_createURI($real_url);
     $org_uri = clone $uri;
     // For disable router option and dosef_false
     if (substr($real_url, 0, 10) != 'index.php?') {
         return $uri;
     }
     $menu = Mijosef::get('utility')->getMenu();
     // Make some fixes on URI
     if ($real_url != 'index.php') {
         // Get the itemid from the URI
         $Itemid = $uri->getVar('Itemid');
         if (is_null($Itemid)) {
             if ($option = $uri->getVar('option')) {
                 $item = $menu->getItem(intval($this->getVar('Itemid')));
                 if (isset($item) && $item->component == $option) {
                     $uri->setVar('Itemid', $item->id);
                 }
             } else {
                 if ($Itemid = intval($this->getVar('Itemid'))) {
                     $uri->setVar('Itemid', $Itemid);
                 }
             }
         }
         // If there is no option specified, try to get the query from menu item
         if (is_null($uri->getVar('option'))) {
             if (count($vars = $uri->getQuery(true)) == 2 && isset($vars['Itemid']) && isset($vars['limitstart'])) {
                 foreach ($this->getVars() as $name => $value) {
                     if ($name != 'limitstart' && $name != 'start') {
                         $uri->setVar($name, $value);
                     }
                 }
                 if ($uri->getVar('limitstart') == 0) {
                     $uri->delVar('limitstart');
                 }
             } elseif (!is_null($uri->getVar('Itemid'))) {
                 $item = $menu->getItem($uri->getVar('Itemid'));
                 if (is_object($item)) {
                     foreach ($item->query as $k => $v) {
                         $uri->setVar($k, $v);
                     }
                 }
             } else {
                 // There is no option or Itemid specified, assume frontpage
                 $item = Mijosef::get('uri')->getDefaultMenuItem();
                 if (is_object($item)) {
                     foreach ($item->query as $k => $v) {
                         $uri->setVar($k, $v);
                     }
                     // Set Itemid
                     $uri->setVar('Itemid', $item->id);
                 }
             }
         }
     }
     $mainframe = JFactory::getApplication();
     $router = $mainframe->getRouter();
     $router->setMode(JROUTER_MODE_SEF);
     $prev_lang = '';
     $vars = $uri->getQuery(true);
     // If site is root, do not do anything else
     if (empty($vars) && (!Mijosef::get('utility')->JoomfishInstalled() && !Mijosef::get('utility')->FalangInstalled() || $this->MijosefConfig->joomfish_lang_code == '0')) {
         $uri = new JURI(JURI::root());
         return $uri;
     }
     $lang = Mijosef::get('language')->getLang($uri);
     // Add JoomFish/FaLang lang code
     if (Mijosef::get('utility')->JoomfishInstalled() || Mijosef::get('utility')->FalangInstalled()) {
         // If lang not set
         if (empty($lang)) {
             $uri->setVar('lang', Mijosef::get('uri')->getLangCode());
         }
         // Get the URL's language and set it as global language (for correct translation)
         $lang = $uri->getVar('lang');
         $code = '';
         if (!empty($lang)) {
             $code = Mijosef::get('uri')->getLangLongCode($lang);
             if (!is_null($code)) {
                 if ($code != Mijosef::get('uri')->getLangLongCode()) {
                     $language = JFactory::getLanguage();
                     $prev_lang = $language->setLanguage($code);
                     $language->load();
                 }
             }
         }
     }
     // Set active ItemID if set to
     $Itemid = intval($uri->getVar('Itemid'));
     if (empty($Itemid) && $this->MijosefConfig->insert_active_itemid == 1) {
         $active = $menu->getActive();
         if (is_object($active) && isset($active->id)) {
             $uri->setVar('Itemid', $active->id);
         }
     }
     $vars = $uri->getQuery(true);
     // if there are no variables and only single language is used
     if (empty($vars) && !isset($lang)) {
         $org_uri = Mijosef::get('uri')->createUri($org_uri);
         Mijosef::get('uri')->restoreLang($prev_lang);
         $router->setMode(JROUTER_MODE_RAW);
         return $org_uri;
     }
     // Check if we should prepend the lang code to SEF URL
     $lang_code = "";
     $lang = $uri->getVar('lang');
     $add_code = $this->MijosefConfig->joomfish_lang_code;
     $main_lang = $this->MijosefConfig->joomfish_main_lang;
     $main_lang_del = $this->MijosefConfig->joomfish_main_lang_del;
     //if (Mijosef::get('utility')->JoomFishInstalled() && !empty($lang)) {
     if (!empty($lang)) {
         // Add lang code if set to
         if ($add_code != '0' && ($main_lang == '0' || $lang != $main_lang) && !strpos($sef_url, $lang)) {
             $lang_code = $lang;
         }
         // Remove main lang variable if set to
         if ($lang == $main_lang && $main_lang_del == 1) {
             $uri->delVar('lang');
         }
     }
     // Get option
     $component = $uri->getVar('option');
     // Set attributes
     Mijosef::get('uri')->attributes->meta = null;
     Mijosef::get('uri')->attributes->params = new JRegistry("");
     Mijosef::get('uri')->attributes->non_sef_part = "";
     Mijosef::get('uri')->attributes->item_limitstart = false;
     // Home Page ?
     if (Mijosef::get('uri')->_isHomePage($uri)) {
         // Check if URL exists
         if (Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
             return $uri;
         }
         // Check if we should create new SEF URLs
         if ($this->MijosefConfig->generate_sef == 0) {
             return $uri;
         }
         $real_url = Mijosef::get('uri')->sortURItoString($uri);
         $sef_url = Mijosef::get('uri')->_finalizeSEF($uri, $sef_url, $real_url, $component, $lang_code);
         $uri = Mijosef::get('uri')->_finalizeURI($uri, $sef_url);
         Mijosef::get('uri')->restoreLang($prev_lang);
         return $uri;
     } else {
         $default = $menu->getDefault();
         $checkup = is_object($default) && !is_null(intval($uri->getVar('Itemid')));
         if ($checkup && is_null($uri->getVar('limitstart')) && $uri->getVar('Itemid') == $default->id && $this->MijosefConfig->insert_active_itemid != 1) {
             $uri->delVar('Itemid');
         }
     }
     // Lets do this job, start routing
     $routed = false;
     if (!is_null($component)) {
         // Get params
         $ext_params = Mijosef::get('cache')->getExtensionParams($component);
         // Component not installed
         if (!$ext_params) {
             $org_uri = Mijosef::get('uri')->createUri($org_uri);
             Mijosef::get('uri')->restoreLang($prev_lang);
             $router->setMode(JROUTER_MODE_RAW);
             return $org_uri;
         }
         // Get params
         Mijosef::get('uri')->attributes->params = $ext_params;
         // Get router type
         $routing = Mijosef::get('uri')->attributes->params->get('router', '0');
         //
         // Start routing...
         //
         // Routing disabled
         if ($routing == 0) {
             $org_uri = Mijosef::get('uri')->createUri($org_uri);
             Mijosef::get('uri')->restoreLang($prev_lang);
             $router->setMode(JROUTER_MODE_RAW);
             return $org_uri;
         } else {
             // Check if we should return the URI directly
             $dosef = Mijosef::get('uri')->disableSefVars($uri);
             if ($dosef == false) {
                 $org_uri = Mijosef::get('uri')->createUri($org_uri);
                 Mijosef::get('uri')->restoreLang($prev_lang);
                 $router->setMode(JROUTER_MODE_RAW);
                 return $org_uri;
             }
             // Reorder URI (ksort)
             $uri = $this->_createURI(Mijosef::get('uri')->sortURItoString($uri, true));
             // non-SEF Vars
             Mijosef::get('uri')->attributes->non_sef_part = Mijosef::get('uri')->nonSefVars($uri);
             // Backup variables to use later
             $backup_vars = $uri->getQuery(true);
             // Remove session IDs, if set to
             if ($this->MijosefConfig->remove_sid == 1 && !is_null($uri->getVar('sid'))) {
                 $uri->delVar('sid');
             }
             // Ensure that the mosmsg are removed
             if (!empty($mosmsg)) {
                 $uri->delVar('mosmsg');
             }
             // Delete limistart var if empty
             $_lmtstrt = $uri->getVar('limitstart');
             if (empty($_lmtstrt) && $component != 'com_virtuemart') {
                 $uri->delVar('limitstart');
             } else {
                 //Mijosef::get('uri')->fixPaginationURI($uri);
             }
             // Smart Itemid
             $skipped_components = array('com_wrapper');
             if (!in_array($component, $skipped_components) && Mijosef::get('utility')->getConfigState(Mijosef::get('uri')->attributes->params, 'global_smart_itemid')) {
                 $s_vars = $uri->getQuery(true);
                 unset($s_vars['Itemid']);
                 unset($s_vars['lang']);
                 unset($s_vars['limit']);
                 unset($s_vars['limitstart']);
                 $menu_item = Mijosef::get('uri')->findItemid($s_vars);
                 if (is_object($menu_item)) {
                     $uri->setVar('Itemid', $menu_item->id);
                 }
             }
             $lang = JFactory::getLanguage();
             $lang->load('com_mijosef', JPATH_SITE, 'en-GB', true);
             $lang->load('com_mijosef', JPATH_SITE, $lang->getDefault(), true);
             $lang->load('com_mijosef', JPATH_SITE, null, true);
             // MijoSEF extension
             $extension = JPATH_ADMINISTRATOR . '/components/com_mijosef/extensions/' . $component . '.php';
             if (!$routed && file_exists($extension) && $routing == 3) {
                 $mijosef_ext = Mijosef::getExtension($component);
                 // Fix : for ids
                 Mijosef::get('uri')->fixUriVariables($uri);
                 // Override menu item id if set to
                 if (Mijosef::get('uri')->attributes->params->get('override', '1') != '1' && Mijosef::get('uri')->attributes->params->get('override_id', '') != '') {
                     $uri->setVar('Itemid', Mijosef::get('uri')->attributes->params->get('override_id'));
                 }
                 // Make changes on URI before building route
                 $mijosef_ext->beforeBuild($uri);
                 // Category status
                 $real_url = Mijosef::get('uri')->sortURItoString($uri);
                 $mijosef_ext->catParam($uri->getQuery(true), $real_url);
                 // Check if URL exists
                 if (Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
                     return $uri;
                 }
                 // Load language file
                 $lang_file = JFactory::getLanguage();
                 $lang_file->load($component, JPATH_SITE);
                 // Prepare vars
                 $vars = $uri->getQuery(true);
                 $segments = array();
                 $do_sef = true;
                 Mijosef::get('uri')->attributes->meta = null;
                 Mijosef::get('uri')->attributes->item_limitstart = false;
                 // Build
                 $mijosef_ext->build($vars, $segments, $do_sef, Mijosef::get('uri')->attributes->meta, Mijosef::get('uri')->attributes->item_limitstart);
                 // Check if do_sef is false
                 if ($do_sef == false) {
                     $org_uri = Mijosef::get('uri')->createUri($org_uri);
                     Mijosef::get('uri')->restoreLang($prev_lang);
                     $router->setMode(JROUTER_MODE_RAW);
                     return $org_uri;
                     // To obtain original URI, not sorted
                 }
                 // Append as non-SEF all non-proccessed vars
                 if ($this->MijosefConfig->append_non_sef == 1) {
                     Mijosef::get('uri')->attributes->non_sef_part = Mijosef::get('uri')->nonSefVars($uri, $vars, Mijosef::get('uri')->attributes->non_sef_part);
                 }
                 if (!empty($segments) && in_array('mijosef_url', $segments)) {
                     $url_found = Mijosef::get('cache')->checkURL($uri->getVar('id'), false, true);
                     if (is_object($url_found)) {
                         // Check if it is blocked
                         if (Mijosef::get('utility')->getParam($url_found->params, 'blocked') == '1') {
                             $route = $url_found->url_real;
                         } else {
                             $route = $url_found->url_sef;
                         }
                         $uri = Mijosef::get('uri')->_finalizeURI($uri, $route);
                         Mijosef::get('uri')->restoreLang($prev_lang);
                         return $uri;
                     } else {
                         $segments = array();
                     }
                 }
                 // Check if URL exists
                 unset($vars['option']);
                 unset($vars['Itemid']);
                 unset($vars['lang']);
                 if (!empty($vars) && $this->MijosefConfig->prevent_dup_error == 1 && Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
                     return $uri;
                 }
                 // Load segments as string
                 if (!empty($segments)) {
                     $sef_url = implode('/', $segments);
                 }
                 $routed = true;
             }
             // router.php
             $router_file = JPATH_BASE . '/components/' . $component . '/router.php';
             if (!$routed && file_exists($router_file) && $routing == 2) {
                 // Check if URL exists
                 if (Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
                     return $uri;
                 }
                 // Prepare routing
                 require_once $router_file;
                 $function = substr($component, 4) . 'buildRoute';
                 // Get vars array
                 $vars = $uri->getQuery(true);
                 // Run BuildRoute function
                 $segments = $function($vars);
                 // Append as non-SEF the non-proccessed vars
                 if ($this->MijosefConfig->append_non_sef == 1) {
                     Mijosef::get('uri')->attributes->non_sef_part = Mijosef::get('uri')->nonSefVars($uri, $vars, Mijosef::get('uri')->attributes->non_sef_part);
                 }
                 // Check if URL exists
                 unset($vars['option']);
                 unset($vars['Itemid']);
                 unset($vars['lang']);
                 if (!empty($vars) && $this->MijosefConfig->prevent_dup_error == 1 && Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
                     return $uri;
                 }
                 // Prevent metadata of the previous component
                 Mijosef::get('uri')->attributes->meta = null;
                 // Replace : with -
                 $segments = $this->_encodeSegments($segments);
                 // Load segments as string
                 if (!empty($segments)) {
                     if (substr($sef_url, -1) != '/') {
                         $sef_url .= '/';
                     }
                     $sef_url .= implode('/', $segments);
                 }
                 $routed = true;
             }
             // Basic routing
             if (!$routed && $routing == 1) {
                 // Check if URL exists
                 if (Mijosef::get('uri')->_checkDB($uri, $prev_lang)) {
                     return $uri;
                 }
                 // Prevent metadata of the previous component
                 Mijosef::get('uri')->attributes->meta = null;
                 // Get vars array
                 $vars = $uri->getQuery(true);
                 // Add all values to new url
                 $filter = array('option', 'Itemid', 'lang', 'limitstart');
                 foreach ($vars as $name => $value) {
                     if (in_array($name, $filter)) {
                         continue;
                     }
                     if (substr($sef_url, -1) != '/') {
                         $sef_url .= '/';
                     }
                     $sef_url .= $value;
                 }
                 // Replace : with -
                 if (!empty($sef_url)) {
                     $url_array = explode('/', $sef_url);
                     $url_array = $this->_encodeSegments($url_array);
                     $sef_url = implode('/', $url_array);
                 }
                 $routed = true;
             }
         }
         // Reconnect Session ID to real url
         if (!empty($backup_vars['sid']) && $this->MijosefConfig->remove_sid == 1) {
             $uri->setVar('sid', $var_sid);
         }
         // Reconnect mosmsg to real url
         if (!empty($backup_vars['mosmsg'])) {
             $uri->setVar('mosmsg', $var_mosmsg);
         }
     }
     // Prevent recording the edit url of 404 page
     if ($sef_url == '404/edit' || $sef_url == '404/edit' . $this->MijosefConfig->url_suffix) {
         $routed = false;
     }
     // Finalize this job
     if ($routed) {
         // Check if we should create new SEF URLs
         if ($this->MijosefConfig->generate_sef == 0) {
             return $uri;
         }
         $real_url = Mijosef::get('uri')->sortURItoString($uri);
         $sef_url = Mijosef::get('uri')->_finalizeSEF($uri, $sef_url, $real_url, $component, $lang_code);
         $uri = Mijosef::get('uri')->_finalizeURI($uri, $sef_url);
     }
     Mijosef::get('uri')->restoreLang($prev_lang);
     // Combine original path with new path
     $path = $uri->getPath();
     if ($path != "") {
         if (substr($orig_path, 0, 10) == 'index.php/') {
             $orig_path = substr($orig_path, 10);
         }
         $path = rtrim($orig_path, '/') . $path;
         $uri->setPath($path);
     }
     return $uri;
 }