예제 #1
0
 function getContactName($id)
 {
     $database =& JFactory::getDBO();
     $sefConfig =& SEFConfig::getConfig();
     $field = 'name';
     if (SEFTools::UseAlias($this->params, 'contact_alias')) {
         $field = 'alias';
     }
     $jfTranslate = $sefConfig->translateNames ? ', `id`' : '';
     $id = intval($id);
     $database->setQuery("SELECT `{$field}` AS `name`, `catid` {$jfTranslate} FROM `#__contact_details` WHERE `id` = '{$id}'");
     $contact = $database->loadObject();
     if (is_null($contact)) {
         JoomSefLogger::Log("Contact with ID {$id} could not be found.", $this, 'com_contact');
         return array();
     }
     if ($contact) {
         $name = ($this->params->get('contactid', '0') != '0' ? $id . '-' : '') . $contact->name;
         if ($this->params->get('category', '1') != '1') {
             return array($name);
         } else {
             return array($this->getCategoryTitle($contact->catid), $name);
         }
     }
 }
예제 #2
0
 protected function _getArticle($id)
 {
     $sefConfig =& SEFConfig::getConfig();
     $title = array();
     $field = 'title';
     if (SEFTools::UseAlias($this->params, 'title_alias')) {
         $field = 'alias';
     }
     $id = intval($id);
     $query = "SELECT `id`, `title`, `alias`, `introtext`, `fulltext`, `language`, `metakey`, `metadesc`, `metadata`, `catid` FROM `#__content` WHERE `id` = '{$id}'";
     $this->_db->setQuery($query);
     $row = $this->_db->loadObject('stdClass', $this->config->translateItems);
     // Article dont exists
     if (!is_object($row)) {
         JoomSefLogger::Log("Article with ID {$id} could not be found.", $this, 'com_content');
         return array();
     }
     $catInfo = $this->getCategoryInfo($row->catid);
     if ($catInfo === false) {
         JoomSefLogger::Log("Category with ID {$row->catid} could not be found.", $this, 'com_content');
         return array();
     }
     if ($this->params->get('show_category', '2') != 0) {
         if (is_array($catInfo->path) && count($catInfo->path) > 0) {
             $catFilter = trim($this->params->get('exclude_categories', ''));
             if ($catFilter != '') {
                 $catFilter = explode("\n", $catFilter);
                 foreach ($catFilter as $filter) {
                     $filter = JString::strtolower(trim($filter));
                     $haystack = array_map(array('JString', 'strtolower'), $catInfo->titles);
                     // Case insensitive search
                     $i = array_search($filter, $haystack);
                     if ($i !== false) {
                         unset($catInfo->path[$i]);
                         unset($catInfo->titles[$i]);
                     }
                 }
             }
             $title = array_merge($title, $catInfo->path);
         }
     }
     //$this->item_desc = $row->introtext;
     if ($this->params->get('googlenewsnum', 0) == 0) {
         $title[] = ($this->params->get('articleid', '0') == 1 ? $id . '-' : '') . $row->{$field};
     } else {
         $title = array_merge($title, $this->GoogleNews($row->{$field}, $id));
     }
     $this->getMetaData($row);
     if ($this->params->get('meta_titlecat', 0) == 1) {
         $this->pageTitle = $row->title;
         $metatitle = array_merge(array($row->title), $catInfo->titles);
         $this->metatags["metatitle"] = implode(" - ", $metatitle);
     }
     $this->metadesc = $row->introtext;
     $this->origmetadesc = $row->metadesc;
     $this->metakeySource = $row->fulltext;
     $this->origmetakey = $row->metakey;
     $this->articleText = $row->introtext . chr(13) . chr(13) . $row->fulltext;
     return $title;
 }
예제 #3
0
 function getContactName($id)
 {
     $sefConfig =& SEFConfig::getConfig();
     $title = array();
     $field = 'name';
     if (SEFTools::UseAlias($this->params, 'contact_alias')) {
         $field = 'alias';
     }
     $id = intval($id);
     $query = "SELECT `id`, `{$field}` AS `name`, `catid`, `metakey`, `metadesc`, `metadata`, `language`,`misc` FROM `#__contact_details` WHERE `id` = '{$id}'";
     $this->_db->setQuery($query);
     $row = $this->_db->loadObject('stdClass', $this->config->translateItems);
     if (is_null($row)) {
         JoomSefLogger::Log("Contact with ID {$id} could not be found.", $this, 'com_contact');
         return array();
     }
     $name = ($this->params->get('contactid', '0') != '0' ? $id . '-' : '') . $row->name;
     // use contact description as page meta tags if available
     if ($row->misc = JString::trim($row->misc)) {
         $this->metadesc = $row->misc;
     }
     if ($this->params->get('show_category', '2') != '0') {
         $catInfo = $this->getCategoryInfo($row->catid);
         if ($catInfo === false) {
             JoomSefLogger::Log("Category with ID {$row->catid} could not be found.", $this, 'com_contact');
         }
         if (is_array($catInfo->path)) {
             $title = array_merge($title, $catInfo->path);
         }
     }
     $title[] = $row->name;
     $this->getMetaData($row);
     return $title;
 }
예제 #4
0
 function getFeedTitle($id)
 {
     $title = array();
     $field = 'name';
     if (SEFTools::UseAlias($this->params, 'feed_alias')) {
         $field = 'alias';
     }
     $id = intval($id);
     $query = "SELECT `id`, `{$field}` AS `name`, `catid`, `language`, `metadesc`, `metakey`, `metadata` FROM `#__newsfeeds` WHERE `id` = '{$id}'";
     $this->_db->setQuery($query);
     $row = $this->_db->loadObject('stdClass', $this->config->translateItems);
     if (is_null($row)) {
         JoomSefLogger::Log("Feed with ID {$id} could not be found.", $this, 'com_newsfeeds');
         return array();
     }
     if ($this->params->get('show_category', 2) != 0) {
         $catInfo = $this->getCategoryInfo($row->catid);
         if ($catInfo === false) {
             JoomSefLogger::Log("Category with ID {$row->catid} could not be found.", $this, 'com_newsfeeds');
         }
         if (is_array($catInfo->path)) {
             $title = array_merge($title, $catInfo->path);
         }
     }
     $this->getMetaData($row);
     $title[] = ($this->params->get('feedid', '0') == 0 ? '' : $id . '-') . $row->name;
     return $title;
 }
 function create(&$uri)
 {
     $sefConfig =& SEFConfig::getConfig();
     $database =& JFactory::getDBO();
     $this->params =& SEFTools::getExtParams('com_weblinks');
     // JF translate extension.
     $jfTranslate = $sefConfig->translateNames ? ', `id`' : '';
     $vars = $uri->getQuery(true);
     extract($vars);
     $title = array();
     $title[] = JoomSEF::_getMenuTitle($option, @$this_task);
     if (@$view == 'category') {
         $title[] = $this->getCategoryTitle($id, SEFTools::UseAlias($this->params, 'category_alias'));
     } elseif (empty($this_task) && @$view == 'weblink') {
         if (isset($catid)) {
             if ($this->params->get('show_category', '1')) {
                 $title[] = $this->getCategoryTitle($catid, SEFTools::UseAlias($this->params, 'category_alias'));
             }
         }
         if (!empty($id)) {
             $field = 'title';
             if (SEFTools::UseAlias($this->params, 'weblink_alias')) {
                 $field = 'alias';
             }
             $id = intval($id);
             $database->setQuery("SELECT `{$field}` AS `title` {$jfTranslate} FROM `#__weblinks` WHERE `id` = '{$id}'");
             $row = $database->loadObject();
             if (is_null($row)) {
                 JoomSefLogger::Log("Weblink with ID {$id} could not be found.", $this, 'com_weblinks');
             } elseif (!empty($row->title)) {
                 $name = $row->title;
                 if ($this->params->get('weblink_id', '0')) {
                     $name = $id . '-' . $name;
                 }
                 $title[] = $name;
             }
         } else {
             $title[] = JText::_('Submit');
         }
     }
     if (isset($task) && $task == 'new') {
         $title[] = 'new' . $sefConfig->suffix;
     }
     $newUri = $uri;
     if (count($title) > 0) {
         // Generate meta tags
         $metatags = $this->getMetaTags();
         $priority = $this->getPriority($uri);
         $sitemap = $this->getSitemapParams($uri);
         $newUri = JoomSEF::_sefGetLocation($uri, $title, null, null, null, @$vars['lang'], null, null, $metatags, $priority, false, null, $sitemap);
     }
     return $newUri;
 }
예제 #6
0
 function GetBannerName($id)
 {
     $database =& JFactory::getDBO();
     $sefConfig =& SEFConfig::getConfig();
     $field = 'name';
     if (SEFTools::UseAlias($this->params, 'banner_alias')) {
         $field = 'alias';
     }
     $id = intval($id);
     $query = "SELECT id, `{$field}` AS `name`, `language` FROM `#__banners` WHERE `id` = '{$id}'";
     $database->setQuery($query);
     $row = $database->loadObject('stdClass', $this->config->translateItems);
     if (is_null($row)) {
         JoomSefLogger::Log("Banner with ID {$id} could not be found.", $this, 'com_banners');
         return '';
     }
     $this->lang = $row->language;
     $name = isset($row->name) ? $row->name : '';
     if ($this->params->get('banner_id', '0')) {
         $name = $id . '-' . $name;
     }
     return $name;
 }
예제 #7
0
 function getWeblinkTitle($id)
 {
     $title = array();
     $title_fld = SEFTools::UseAlias($this->params, 'weblink_alias') ? '`alias` AS `title`' : '`title`';
     $query = 'SELECT `id`,`catid`, `metakey`, `metadata`, `metadesc`, `language`,' . $title_fld . ' FROM `#__weblinks` WHERE `id` = ' . (int) $id;
     $this->_db->setQuery($query);
     $row = $this->_db->loadObject('stdClass', $this->config->translateItems);
     if (is_null($row)) {
         JoomSefLogger::Log("Weblink with ID {$id} could not be found.", $this, 'com_weblinks');
         return array();
     }
     if ($this->params->get('show_category', 2) != 0) {
         $catInfo = $this->getCategoryInfo($row->catid);
         if ($catInfo === false) {
             JoomSefLogger::Log("Category with ID {$row->catid} could not be found.", $this, 'com_weblinks');
         }
         if (is_array($catInfo->path)) {
             $title = array_merge($title, $catInfo->path);
         }
     }
     $title[] = ($this->params->get('weblink_id') == 1 ? $row->id . '-' : '') . $row->title;
     $this->getMetaData($row);
     return $title;
 }
예제 #8
0
 function GetBannerName($id)
 {
     $database =& JFactory::getDBO();
     $sefConfig =& SEFConfig::getConfig();
     $field = 'name';
     if (SEFTools::UseAlias($this->params, 'banner_alias')) {
         $field = 'alias';
     }
     $jfTranslate = $sefConfig->translateNames ? ', `bid`' : '';
     $id = intval($id);
     $query = "SELECT `{$field}` AS `name` {$jfTranslate} FROM `#__banner` WHERE `bid` = '{$id}'";
     $database->setQuery($query);
     $row = $database->loadObject();
     $name = '';
     if (is_null($row)) {
         JoomSefLogger::Log("Banner with ID {$id} could not be found.", $this, 'com_banners');
     } else {
         $name = isset($row->name) ? $row->name : '';
         if ($this->params->get('banner_id', '0')) {
             $name = $id . '-' . $name;
         }
     }
     return $name;
 }
예제 #9
0
 protected function getCategoryInfo($id)
 {
     $field = 'title';
     if (SEFTools::UseAlias($this->params, 'category_alias')) {
         $field = 'alias';
     }
     $addId = (bool) $this->params->get('categoryid', '0');
     $catInfo = new stdClass();
     $titles = array();
     $path = array();
     $id = intval($id);
     $this->_db->setQuery("SELECT `lft`, `rgt` FROM `#__categories` WHERE `id` = '{$id}'");
     $idx = $this->_db->loadObject();
     if (!$idx) {
         return false;
     }
     $query = "SELECT `id`, `title`, `alias`, `description`, language, `metakey`, `metadesc`, `metadata`, `parent_id` FROM `#__categories` WHERE `lft` <= '{$idx->lft}' AND `rgt` >= '{$idx->rgt}' AND id!=1 ORDER BY `lft` DESC";
     if ($this->params->get('show_category', 2) != 2) {
         $query .= " LIMIT 1";
     }
     $this->_db->setQuery($query);
     $cats = $this->_db->loadObjectList('', 'stdClass', $this->config->translateItems);
     $result = null;
     $this->metatags = array();
     foreach ($cats as $cat) {
         // Get only last category metas
         if (is_null($result)) {
             $result = new stdClass();
             $this->lang = $cat->language;
             $this->metadesc = $cat->description;
             $this->metatags["metakey"] = $cat->metakey;
             $this->metatags["metadesc"] = $cat->metadesc;
             $metadata = new JRegistry($cat->metadata);
             $this->metatags["metaauthor"] = $metadata->get('author');
             $this->metatags["metarobots"] = $metadata->get('robots');
             $this->metadesc = $cat->description;
             $this->origmetadesc = $cat->metadesc;
             $this->metakeysource = $cat->description;
             $this->origmetakey = $cat->metakey;
             $this->pageTitle = $cat->title;
         }
         $name = $addId ? $id . '-' . $cat->{$field} : $cat->{$field};
         array_unshift($path, $name);
         array_unshift($titles, $cat->title);
         if (empty($this->metatags["metadesc"])) {
             $this->metatags["metadesc"] = $cat->description;
         }
         $id = $cat->parent_id;
         if ($id <= 1) {
             break;
         }
     }
     $catInfo->titles = $titles;
     $catInfo->path = $path;
     return $catInfo;
 }
예제 #10
0
 /**
  * Get SEF titles of content items.
  *
  * @param  string $task
  * @param  int $id
  * @return string
  */
 function _getContentTitles($task, $id)
 {
     $database =& JFactory::getDBO();
     $sefConfig =& SEFConfig::getConfig();
     $title = array();
     // JF translate extension.
     $jfTranslate = $sefConfig->translateNames ? ', `id`' : '';
     // Fields
     $title_field = 'title';
     if (SEFTools::UseAlias($this->params, 'title_alias')) {
         $title_field = 'title_alias';
     }
     $category_field = 'category';
     if (SEFTools::UseAlias($this->params, 'category_alias')) {
         $category_field = 'cat_alias';
     }
     $section_field = 'section';
     if (SEFTools::UseAlias($this->params, 'section_alias')) {
         $section_field = 'sec_alias';
     }
     $showSection = $this->params->get('show_section', '0');
     $showCategory = $this->params->get('show_category', '1');
     $addCatToTitle = $this->params->get('meta_titlecat', '0');
     $descField = null;
     $id = intval($id);
     $type = '';
     switch ($task) {
         case 'section':
         case 'blogsection':
             if (isset($id)) {
                 $sql = "SELECT `title` AS `section`, `alias` AS `sec_alias`, `description` AS `sec_desc`{$jfTranslate} FROM `#__sections` WHERE `id` = '{$id}'";
             }
             $descField = 'sec_desc';
             $metakeySource = 'sec_desc';
             $type = 'Section';
             break;
         case 'category':
         case 'blogcategory':
             if (isset($id)) {
                 if ($showSection) {
                     $sql = 'SELECT s.title AS section, s.alias AS sec_alias, s.description AS sec_desc' . ($jfTranslate ? ', s.id AS section_id' : '') . ($showCategory ? ', c.title AS category, c.alias AS cat_alias, c.description AS cat_desc' . ($jfTranslate ? ', c.id' : '') : '') . ' FROM #__categories as c ' . 'LEFT JOIN #__sections AS s ON c.section = s.id ' . 'WHERE c.id = ' . $id;
                 } else {
                     $sql = "SELECT `title` AS `category`, `alias` AS `cat_alias`, `description` AS `cat_desc`{$jfTranslate} FROM #__categories WHERE `id` = {$id}";
                 }
                 /*if ($showCategory) {
                       $descField = 'cat_desc';
                   } else {
                       $descField = 'sec_desc';
                   }*/
                 // if this is category URL, use category alias although $showCategory is FALSE
                 $descField = 'cat_desc';
                 $metakeySource = 'cat_desc';
                 $showCategory = true;
             }
             $type = 'Category';
             break;
         case 'article':
             if (isset($id)) {
                 /*
                 Alias should not be empty, Joomla 1.5 ensures that when saving content
                 if ($sefConfig->useAlias) {
                     // verify title alias is not empty
                     $database->setQuery("SELECT alias$jfTranslate FROM #__content WHERE id = $id");
                     $title_field = $database->loadResult() ? 'alias' : 'title';
                 }
                 */
                 $selects = array();
                 $joins = array();
                 if ($showSection) {
                     $selects[] = 's.title AS section, s.alias AS sec_alias' . ($jfTranslate ? ', s.id AS section_id' : '') . ', ';
                     $joins[] = 'LEFT JOIN #__sections AS s ON a.sectionid = s.id';
                 }
                 if ($showCategory || $addCatToTitle) {
                     $selects[] = 'c.title AS category, c.alias AS cat_alias' . ($jfTranslate ? ', c.id AS category_id' : '') . ', ';
                     $joins[] = 'LEFT JOIN #__categories AS c ON a.catid = c.id';
                 }
                 $sql = 'SELECT ' . implode('', $selects) . 'a.title AS title, a.alias AS title_alias, a.`fulltext`, a.introtext AS item_desc, a.metakey, a.metadesc' . ($jfTranslate ? ', a.id' : '') . ' FROM #__content as a ' . implode(' ', $joins) . ' WHERE a.id = ' . $id;
                 $descField = 'item_desc';
                 $metakeySource = 'fulltext';
             }
             $type = 'Article';
             break;
         default:
             $sql = '';
     }
     if ($sql) {
         $database->setQuery($sql);
         $row = $database->loadObject();
         if (is_null($row)) {
             JoomSefLogger::Log($type . " with ID {$id} could not be found.", $this, 'com_content');
             return $title;
         }
         if (isset($row->section)) {
             $title[] = $row->{$section_field};
             if ($sefConfig->contentUseIndex && $task == 'section') {
                 $title[] = '/';
             }
         }
         if (isset($row->category) && $showCategory) {
             $title[] = $row->{$category_field};
             if ($sefConfig->contentUseIndex && $task == 'category') {
                 $title[] = '/';
             }
         }
         if (isset($row->{$title_field})) {
             $title[] = $row->{$title_field};
         }
         if ($addCatToTitle && isset($row->category) && isset($row->title)) {
             $this->metatitle = $row->title . ' - ' . $row->category;
         }
         if (isset($row->{$descField})) {
             $this->metadesc = $row->{$descField};
         }
         if (isset($row->{$metakeySource})) {
             $this->metakeySource = $row->{$metakeySource};
         }
         if (isset($row->metakey)) {
             $this->origmetakey = $row->metakey;
         }
         if (isset($row->metadesc)) {
             $this->origmetadesc = $row->metadesc;
         }
         if (isset($row->item_desc) || isset($row->fulltext)) {
             $this->articleText = $row->item_desc . chr(13) . chr(13) . $row->fulltext;
         }
     }
     return $title;
 }