function getContent($url) { return rsseoHelper::fopen($url); }
<?php /** * @version 1.0.0 * @package RSSeo! 1.0.0 * @copyright (C) 2009 www.rsjoomla.com * @license GPL, http://www.gnu.org/copyleft/gpl.html */ defined('_JEXEC') or die('Restricted access'); ?> <script language="javascript" type="text/javascript"> <?php if (rsseoHelper::is16()) { ?> Joomla.submitbutton = function(task) { var form = document.adminForm; if(task == 'cancel') Joomla.submitform(task); else { ret = true; if(form.RedirectFrom.value=='') { form.RedirectFrom.className = 'rserror'; ret=false; } else { form.RedirectFrom.className = ''; } if(ret) submitform(task); } return false; } <?php } else {
function GetPR($url, $forceNoCache = false) { $total_exec_start = $this->microtimeFloat(); $result = array("", -1); if ($url . "" != "" && $url . "" != "http://") { $this->debugRes("url", $url); $this->cacheDir .= substr($this->cacheDir, -1) != "/" ? "/" : ""; // check for protocol $url_ = substr(strtolower($url), 0, 7) != "http://" ? "http://" . $url : $url; $host = $this->googleDomains[mt_rand(0, count($this->googleDomains) - 1)]; $target = "/search"; $querystring = sprintf("client=navclient-auto&ch=%s&features=Rank&q=%s", $this->CheckHash($this->HashURL($url_)), urlencode("info:" . $url_)); $contents = ""; $this->debugRes("host", $host); $this->debugRes("query_string", $querystring); $this->debugRes("user_agent", $this->userAgent); $query_exec_start = $this->microtimeFloat(); if ($forceNoCache == true) { $this->debugRes("force_no_cache", "true"); } elseif ($contents = $this->readCacheResult($url)) { $this->debugRes("read_from_cache", "true"); } else { $this->cacheExpired = true; } $contents = rsseoHelper::fopen("http://" . $host . $target . "?" . $querystring, 0); if ($this->cacheExpired == true) { $this->updateCacheResult($url, $contents); } $this->debugRes("query_exec_time", $this->microtimeFloat() - $query_exec_start); $result[0] = $contents; // Rank_1:1:0 = 0 // Rank_1:1:5 = 5 // Rank_1:1:9 = 9 // Rank_1:2:10 = 10 etc $p = explode(":", $contents); if (isset($p[2])) { $result[1] = $p[2]; } } if ($result[1] == -1) { $result[1] = 0; } $this->PageRank = (int) $result[1]; $this->debugRes("total_exec_time", $this->microtimeFloat() - $total_exec_start); $this->debugRes("result", $result); return $this->PageRank; }
function crawl() { $db =& JFactory::getDBO(); $app =& JFactory::getApplication(); $start = JRequest::getInt('start', 0); $idPage = JRequest::getInt('idPage', 0); $rsseoConfig = $app->getuserState('rsseoConfig'); $autocrawler = $rsseoConfig['crawler.enable.auto']; if ($autocrawler) { $db->setQuery("UPDATE #__rsseo_config SET ConfigValue = '0' WHERE ConfigName = 'crawler.enable.auto' "); $db->query(); } if ($start == 1) { $db->setQuery("UPDATE #__rsseo_pages SET PageCrawled=0"); $db->query(); } if ($idPage != 0) { //load the selected page $db->setQuery("SELECT * FROM #__rsseo_pages WHERE IdPage='" . $idPage . "'"); } else { //load the first un-crawled page $db->setQuery("SELECT * FROM #__rsseo_pages WHERE PageCrawled = 0 AND PageLevel != 127 ORDER BY PageLevel asc, IdPage asc LIMIT 1"); } $page = $db->loadObject(); if (!empty($page)) { $newPage = rsseoHelper::checkPage($page->IdPage, $idPage); $newPage->PageCrawled = 1; $newPage->DatePageCrawled = time(); if ($newPage->PageLevel < 127) { $newPage->store(); } $link = $newPage->_link; //get the ignored href`s $ignored = $rsseoConfig['crawler.ignore']; $ignored = str_replace("\r", '', $ignored); $ignored = explode("\n", $ignored); $parser = rsseoHelper::file_get_html($link); if ($rsseoConfig['crawler.level'] == -1 || $rsseoConfig['crawler.level'] != -1 && $page->PageLevel < $rsseoConfig['crawler.level']) { while ($parser->parse()) { if (strtolower($parser->iNodeName) == 'a') { $href = rsseoHelper::clean_url(@$parser->iNodeAttributes['href']); foreach ($ignored as $ignore) { if (!empty($ignore)) { $ignore = str_replace('&', '&', $ignore); if ($this->is_ignored($href, $ignore)) { continue 2; } } } if (strpos($href, 'mailto:') !== FALSE) { continue; } if (strpos($href, 'javascript:') !== FALSE) { continue; } if ($newPage->PageLevel >= 127) { continue; } if ($href == 'administrator/' || $href == 'administrator') { continue; } if ($href != null) { $href = str_replace(JURI::root(), '', $href); $db->setQuery("SELECT COUNT(*) FROM #__rsseo_pages WHERE PageURL='" . $href . "'"); if ($db->loadResult() == 0) { $db->setQuery("INSERT INTO #__rsseo_pages SET PageURL = '" . $href . "', PageTitle ='', PageKeywords ='', PageDescription = '', PageInSitemap = 1 , PageSitemap=0, PageCrawled=0, PageLevel = '" . ($page->PageLevel + 1) . "' "); $db->query(); } } } } } //count the number of pages crawled $db->setQuery("SELECT COUNT(*) FROM #__rsseo_pages WHERE PageCrawled != 0 AND PageLevel != 127"); $pages_crawled = $db->loadResult(); //count the number of pages left on this level.. $db->setQuery("SELECT COUNT(*) FROM #__rsseo_pages WHERE PageCrawled = 0 AND PageLevel='" . $page->PageLevel . "'"); $pages_left = $db->loadResult(); //count total pages crawled $db->setQuery("SELECT COUNT(*) FROM #__rsseo_pages"); $total_pages = $db->loadResult(); if ($autocrawler) { $db->setQuery("UPDATE #__rsseo_config SET ConfigValue = '1' WHERE ConfigName = 'crawler.enable.auto' "); $db->query(); } $page_properties = array(); $page_properties[] = $newPage->PageURL; $page_properties[] = $newPage->PageLevel; $page_properties[] = $pages_crawled; $page_properties[] = $pages_left; $page_properties[] = date($rsseoConfig['global.dateformat']); $page_properties[] = $newPage->PageTitle; $page_properties[] = $total_pages; $page_properties[] = ceil($newPage->PageGrade); echo implode("\n", $page_properties); } else { if ($autocrawler) { $db->setQuery("UPDATE #__rsseo_config SET ConfigValue = '1' WHERE ConfigName = 'crawler.enable.auto' "); $db->query(); } echo 'Finished' . "\n\n\n\n\n\n\n\n\n"; } exit; }
function _getItemData(&$params, $item) { jimport('joomla.html.parameter'); $data = null; // Menu Link is a special type that is a link to another item if ($item->type == 'menulink') { $menu =& JSite::getMenu(); if ($newItem = $menu->getItem($item->query['Itemid'])) { $tmp = clone $newItem; if (rsseoHelper::is16()) { $tmp->title = '<span><![CDATA[' . $item->title . ']]></span>'; } else { $tmp->name = '<span><![CDATA[' . $item->name . ']]></span>'; } $tmp->mid = $item->id; if (rsseoHelper::is16()) { $tmp->parent_id = $item->parent_id; } else { $tmp->parent = $item->parent; } } else { return false; } } else { $tmp = clone $item; if (rsseoHelper::is16()) { $tmp->title = '<span><![CDATA[' . $item->title . ']]></span>'; } else { $tmp->name = '<span><![CDATA[' . $item->name . ']]></span>'; } } $iParams = new JParameter($tmp->params); switch ($tmp->type) { case 'separator': if (rsseoHelper::is16()) { return '<span class="separator">' . $tmp->title . '</span>'; } else { return '<span class="separator">' . $tmp->name . '</span>'; } break; case 'url': if (strpos($tmp->link, 'index.php?') === 0 && strpos($tmp->link, 'Itemid=') === false) { $tmp->url = $tmp->link . '&Itemid=' . $tmp->id; } else { $tmp->url = $tmp->link; } break; default: $router = JSite::getRouter(); $tmp->url = $router->getMode() == JROUTER_MODE_SEF ? 'index.php?Itemid=' . $tmp->id : $tmp->link . '&Itemid=' . $tmp->id; break; } // Print a link if it exists if ($tmp->url != null) { // Handle SSL links $iSecure = $iParams->def('secure', 0); if ($tmp->home == 1) { $tmp->url = JURI::base(); } elseif (strcasecmp(substr($tmp->url, 0, 4), 'http') && strpos($tmp->link, 'index.php?') !== false) { $tmp->url = JRoute::_($tmp->url, true, $iSecure); } else { $tmp->url = str_replace('&', '&', $tmp->url); } switch ($tmp->browserNav) { default: case 0: // _top if (rsseoHelper::is16()) { $data = '<a href="' . $tmp->url . '">' . $tmp->title . '</a>'; } else { $data = '<a href="' . $tmp->url . '">' . $tmp->name . '</a>'; } break; case 1: // _blank if (rsseoHelper::is16()) { $data = '<a href="' . $tmp->url . '" target="_blank">' . $tmp->title . '</a>'; } else { $data = '<a href="' . $tmp->url . '" target="_blank">' . $tmp->name . '</a>'; } break; case 2: // window.open $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $this->_params->get('window_open'); // hrm...this is a bit dickey $link = str_replace('index.php', 'index2.php', $tmp->url); if (rsseoHelper::is16()) { $data = '<a href="' . $link . '" onclick="window.open(this.href,\'targetWindow\',\'' . $attribs . '\');return false;">' . $tmp->title . '</a>'; } else { $data = '<a href="' . $link . '" onclick="window.open(this.href,\'targetWindow\',\'' . $attribs . '\');return false;">' . $tmp->name . '</a>'; } break; } } else { if (rsseoHelper::is16()) { $data = '<a>' . $tmp->title . '</a>'; } else { $data = '<a>' . $tmp->name . '</a>'; } } return $data; }
<?php /** * @version 1.0.0 * @package RSSEO! 1.0.0 * @copyright (C) 2009 www.rsjoomla.com * @license GPL, http://www.gnu.org/licenses/gpl-2.0.html */ // No direct access defined('_JEXEC') or die('Restricted access'); require_once JPATH_COMPONENT . DS . 'helper.php'; $app =& JFactory::getApplication(); $params =& $app->getParams('com_rsseo'); if ($params->get('show_page_title', 1) && $params->get('page_title') != '') { echo '<div class="componentheading' . $params->get('pageclass_sfx') . '">' . $params->get('page_title') . '</div>'; } echo rsseoHelper::generateSitemap();
echo $row->IdPage; ?> "><?php echo $row->DatePageCrawled == 0 ? JText::_('RSSEO_PAGE_NOT_CRAWLED') : date($this->rsseoConfig['global.dateformat'], $row->DatePageCrawled); ?> </span></td> <td align="center"><?php echo $publish; ?> </td> <td align="center"><?php echo $modified; ?> </td> <td align="center"><?php echo rsseoHelper::add_to_sitemap($row, $i); ?> </td> <td align="center"><a href="#" onclick="crawl(0,<?php echo $row->IdPage; ?> );return false;"><?php echo JText::_('RSSEO_REFRESH'); ?> </a></td> </tr> <?php $k = 1 - $k; } ?> <tfoot>
function _parseRequest() { $folder = $this->getFolder(); $type = JRequest::getVar('type', false, 'post'); if ($type) { $query = JRequest::getVar('query', false, 'post', 'BASE64'); $start = JRequest::getInt('start', 0); $num = count(JFolder::files($folder, '.xml$', 1, false)); switch ($type) { case 'clear': $this->_db->setQuery("TRUNCATE TABLE `#__rsseo_pages`"); $this->_db->query(); $this->_db->setQuery("TRUNCATE TABLE `#__rsseo_redirects`"); $this->_db->query(); break; case 'backup': $buffer = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; $buffer .= '<query>' . "\n"; $query = $this->decode($query); if (preg_match('# (\\#__.*?) #is', $query['query'], $matches)) { $table = trim($matches[1]); } $buffer .= $this->addTag('table', $table); $this->_db->setQuery($query['query']); $results = $this->_db->loadObjectList(); $buffer .= '<rows>' . "\n"; foreach ($results as $result) { $buffer .= '<row>' . "\n"; foreach ($result as $key => $value) { if (isset($query['primary']) && $key == $query['primary']) { continue; } $buffer .= $this->addTag('column', $value, $key); } $buffer .= '</row>' . "\n"; } $buffer .= '</rows>'; $buffer .= '</query>'; JFile::write($folder . DS . 'package' . $num . '.xml', $buffer); break; case 'restore': jimport('joomla.utilities.simplexml'); $file = urldecode(JRequest::getVar('file', false, 'post', '')); $xml = new JSimpleXML(); $xml->loadFile($file); $root = $xml->document; $table = $root->getElementByPath('table')->data(); $rows = $root->getElementByPath('rows')->children(); $table_fields = $name = $data = array(); $fields = $this->_db->getTableFields($table); foreach ($fields[$table] as $field => $type) { $table_fields[] = $this->_db->NameQuote($field); } foreach ($rows as $row) { $sql = array(); $columns = $row->children(); foreach ($columns as $column) { $properties = $column->children(); foreach ($properties as $prop) { if ($prop->name() == 'name') { $name[] = $this->_db->NameQuote($prop->data()); } if ($prop->name() == 'value') { $data[] = $this->_db->Quote($prop->data()); } } } foreach ($name as $i => $val) { if (!in_array($val, $table_fields)) { unset($name[$i]); unset($data[$i]); } } if (!empty($name) && !empty($data)) { $this->_db->setQuery("INSERT INTO `" . $table . "` (" . implode(',', $name) . ") VALUES (" . implode(',', $data) . "); "); $this->_db->query(); unset($name); unset($data); } } break; } } $pack = JRequest::getInt('pack', 0, 'post'); if ($pack) { if (rsseoHelper::is16()) { $adapter = JArchive::getAdapter('zip'); $archivefiles = array(); $xmlfiles = JFolder::files($folder, '.xml$', 1, true); foreach ($xmlfiles as $xmlfile) { $data = JFile::read($xmlfile); $archivefiles[] = array('name' => JFile::getName($xmlfile), 'data' => $data); } $adapter->create($folder . DS . 'package.zip', $archivefiles); } else { JArchive::create($folder . DS . 'package.tar', JFolder::files($folder, '.xml$', 1, true), 'gz', '', $folder, true, true); } } die; }
function checkPage($idPage) { $app =& JFactory::getApplication(); $rsseoConfig = $app->getuserState('rsseoConfig'); $db =& JFactory::getDBO(); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_rsseo' . DS . 'tables'); $page =& JTable::getInstance('rsseo_pages', 'Table'); $page->load($idPage); $parser = rsseoHelper::file_get_html(JURI::root() . $page->PageURL, 0); $html = rsseoHelper::fopen(JURI::root() . $page->PageURL); $link = JURI::root() . $page->PageURL; $title = ''; $description = ''; $keywords = ''; $images = 0; $images_no_alt = 0; $images_no_hw = 0; $links = 0; preg_match('#<title>(.*?)<\\/title>#', $html, $match); preg_match_all('#<h([0-9+])(.*?)<\\/h([0-9+])>#is', $html, $matches); $title = @$match[1]; $headings = count($matches[0]); while ($parser->parse()) { if ($parser->iNodeName == 'a' && isset($parser->iNodeAttributes['href'])) { $links++; } if (strtolower($parser->iNodeName) == 'meta' && @$parser->iNodeAttributes['name'] == 'description') { $description = $parser->iNodeAttributes['content']; } if (strtolower($parser->iNodeName) == 'meta' && @$parser->iNodeAttributes['name'] == 'keywords') { $keywords = $parser->iNodeAttributes['content']; } if (empty($title) && strtolower($parser->iNodeName) == 'meta' && @$parser->iNodeAttributes['name'] == 'title') { $title = $parser->iNodeAttributes['content']; } if (strtolower($parser->iNodeName) == 'img') { $images++; } if (strtolower($parser->iNodeName) == 'img' && !isset($parser->iNodeAttributes['alt'])) { $images_no_alt++; } if (strtolower($parser->iNodeName) == 'img' && !isset($parser->iNodeAttributes['width']) && !isset($parser->iNodeAttributes['height'])) { $images_no_hw++; } } $valid_text = strtolower(strip_tags($html)); $density_keywords = $page->PageKeywordsDensity; if (!empty($density_keywords)) { $density_keywords = explode(',', $density_keywords); array_walk($density_keywords, array('rsseoHelper', 'lowercasearray')); $density_keywords = array_unique($density_keywords); $densityparams = array(); foreach ($density_keywords as $keyword) { if (empty($keyword)) { continue; } $densityparams[$keyword] = rsseoHelper::keywordDensity($valid_text, $keyword); } $registry = JRegistry::getInstance('density'); $registry->loadArray($densityparams); $page->densityparams = $registry->toString(); } else { $page->densityparams = ''; } $page->PageTitle = $title; $page->PageDescription = $description; $page->PageKeywords = $keywords; //build the params $params = array(); //check if url is sef friendly if (strpos($page->PageURL, ".php?") === FALSE) { $params['url_sef'] = 1; } else { $params['url_sef'] = 0; } //check if page title is unique $db->setQuery("SELECT COUNT(*) cnt FROM #__rsseo_pages WHERE PageTitle = '" . $db->getEscaped($page->PageTitle) . "' AND published = 1 "); $params['duplicate_title'] = $db->loadResult(); //check title length $params['title_length'] = strlen($page->PageTitle); //check if page meta description is unique $db->setQuery("SELECT COUNT(*) cnt FROM #__rsseo_pages WHERE PageDescription = '" . $db->getEscaped($page->PageDescription) . "' AND published = 1 "); $params['duplicate_desc'] = $db->loadResult(); //check description length $params['description_length'] = strlen($page->PageDescription); //check number of keywords $keyw = trim($keywords) != '' ? explode(',', $page->PageKeywords) : array(); $params['keywords'] = count($keyw); $params['headings'] = $headings; $params['images'] = $images; $params['images_wo_alt'] = $images_no_alt; $params['images_wo_hw'] = $images_no_hw; $params['links'] = $links; $reg = JRegistry::getInstance(''); $reg->loadArray($params); $page->params = $reg->toString(); //the raw html $page->_link = $link; //the page grade $grade = 0; $total = 0; if ($params['url_sef'] == 1 && $rsseoConfig['crawler.sef']) { $grade++; } if ($params['duplicate_title'] == 1 && $rsseoConfig['crawler.title.duplicate']) { $grade++; } if ($params['title_length'] >= 10 && $params['title_length'] <= 70 && $rsseoConfig['crawler.title.length']) { $grade++; } if ($params['duplicate_desc'] == 1 && $rsseoConfig['crawler.description.duplicate']) { $grade++; } if ($params['description_length'] >= 70 && $params['description_length'] <= 150 && $rsseoConfig['crawler.description.length']) { $grade++; } if ($params['keywords'] <= 10 && $rsseoConfig['crawler.keywords']) { $grade++; } if ($params['headings'] > 0 && $rsseoConfig['crawler.headings']) { $grade++; } if ($params['images'] <= 10 && $rsseoConfig['crawler.images']) { $grade++; } if ($params['images_wo_alt'] == 0 && $rsseoConfig['crawler.images.alt']) { $grade++; } if ($params['images_wo_hw'] == 0 && $rsseoConfig['crawler.images.hw']) { $grade++; } if ($params['links'] <= 100) { $grade++; } if ($rsseoConfig['crawler.sef']) { $total++; } if ($rsseoConfig['crawler.title.duplicate']) { $total++; } if ($rsseoConfig['crawler.title.length']) { $total++; } if ($rsseoConfig['crawler.description.duplicate']) { $total++; } if ($rsseoConfig['crawler.description.length']) { $total++; } if ($rsseoConfig['crawler.keywords']) { $total++; } if ($rsseoConfig['crawler.headings']) { $total++; } if ($rsseoConfig['crawler.images']) { $total++; } if ($rsseoConfig['crawler.images.alt']) { $total++; } if ($rsseoConfig['crawler.images.hw']) { $total++; } if ($rsseoConfig['crawler.intext.links']) { $total++; } $page->PageGrade = $grade * 100 / $total; return $page; }
function checkpage() { $cid = JRequest::getVar('cid', array(0), 'request', 'array'); if (is_array($cid)) { $cid = intval($cid[0]); } $newPage = rsseoHelper::checkPage($cid, $cid); $newPage->PageTitle = str_replace('&', '&', $newPage->PageTitle); $newPage->PageKeywords = str_replace('&', '&', $newPage->PageKeywords); $newPage->PageDescription = str_replace('&', '&', $newPage->PageDescription); $newPage->DatePageCrawled = time(); $newPage->store(); $this->setRedirect('index.php?option=com_rsseo&task=editpage&cid=' . $cid); }
function sitemapGenerate() { $db =& JFactory::getDBO(); $SitemapFrequency = JRequest::getVar('SitemapFrequency'); $SitemapModification = JRequest::getVar('SitemapModification'); $SitemapPriority = JRequest::getVar('SitemapPriority'); $SitemapNew = JRequest::getVar('SitemapNew'); $protocol = JRequest::getInt('protocol', 0); $sitemap = JPATH_SITE . DS . 'sitemap.xml'; $ror = JPATH_SITE . DS . 'ror.xml'; $root = JURI::root(); if (substr($root, 0, 8) == 'https://' && $protocol == 0) { $root = str_replace('https://', 'http://', $root); } if (substr($root, 0, 7) == 'http://' && $protocol == 1) { $root = str_replace('http://', 'https://', $root); } if (filesize($sitemap) == 0) { $SitemapNew = 'new'; } $replace = array(); $db->setQuery("SELECT RedirectFrom,RedirectTo FROM #__rsseo_redirects WHERE published = 1"); $redirects = $db->loadObjectList(); foreach ($redirects as $redirect) { $redirect->RedirectFrom = htmlentities($redirect->RedirectFrom); $redirect->RedirectTo = htmlentities($redirect->RedirectTo); $replace[$redirect->RedirectFrom] = $redirect->RedirectTo; } if ($SitemapNew == 'new') { $db->setQuery("UPDATE #__rsseo_pages SET PageSitemap=0"); $db->query(); $xml_string = '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> '; $ror_string = '<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:ror="http://rorweb.com/0.1/" > <channel> <title>ROR Sitemap for ' . $root . '</title> <link>' . $root . '</link> <item> <title>ROR Sitemap for ' . $root . '</title> <link>' . $root . '</link> <ror:about>sitemap</ror:about> <ror:type>SiteMap</ror:type> </item> '; } else { $xml_string = ''; $ror_string = ''; } $db->setQuery("SELECT * FROM #__rsseo_pages WHERE PageSitemap=0 AND PageInSitemap = 1 ORDER BY PageLevel LIMIT 500"); $pages = $db->loadObjectList(); if (!empty($pages)) { foreach ($pages as $page) { if ($page->PageLevel == 0) { $page->PageLevel = 1; } if ($SitemapPriority == 'auto') { $priority = number_format(1 / $page->PageLevel, 2, '.', ''); } else { $priority = ''; } if (!empty($replace[$page->PageURL])) { $page->PageURL = $replace[$page->PageURL]; } $xml_string .= '<url> <loc>' . rsseoControllersitemap::xmlentities($root . $page->PageURL) . '</loc> <priority>' . $priority . '</priority> <changefreq>' . $SitemapFrequency . '</changefreq> <lastmod>' . $SitemapModification . '</lastmod> </url> '; $ror_string .= '<item> <link>' . rsseoControllersitemap::xmlentities($root . $page->PageURL) . '</link> <title>' . rsseoControllersitemap::xmlentities($page->PageTitle) . '</title> <ror:updatePeriod>' . $SitemapFrequency . '</ror:updatePeriod> <ror:sortOrder>' . $page->PageLevel . '</ror:sortOrder> <ror:resourceOf>sitemap</ror:resourceOf> </item> '; $db->setQuery("UPDATE #__rsseo_pages SET PageSitemap=1 WHERE IdPage = '" . $page->IdPage . "'"); $db->query(); } rsseoHelper::fwrite($sitemap, $xml_string, $SitemapNew ? 'w' : 'a'); rsseoHelper::fwrite($ror, $ror_string, $SitemapNew ? 'w' : 'a'); } else { $filename = JPATH_SITE . DS . 'sitemap.xml'; rsseoHelper::fwrite($filename, "\n" . '</urlset>', 'a'); $filename = JPATH_SITE . DS . 'ror.xml'; rsseoHelper::fwrite($filename, '</channel>' . "\n" . '</rss>', 'a'); echo 'finish'; exit; } //get total number of pages $db->setQuery("SELECT count(*) FROM #__rsseo_pages WHERE PageInSitemap = 1"); $total = $db->loadResult(); $db->setQuery("SELECT count(*) FROM #__rsseo_pages WHERE PageSitemap=1 AND PageInSitemap = 1"); $processed = $db->loadResult(); echo '<div class="sitemapContainer"><div class="sitemapProgress" style="width:' . ceil($processed * 100 / $total) . '%;">Progress: ' . ceil($processed * 100 / $total) . '%</div></div>'; exit; }
function checkconnections() { $url = JURI::root(); $result = rsseoHelper::checkconnections($url); if (empty($result->err) && !empty($result->ok)) { $ok = implode(',', $result->ok); JError::raiseNotice(200, 'Connection with "' . $ok . '" successfully'); } if (empty($result->ok) && !empty($result->err)) { JError::raiseWarning(500, 'Your server does not accept loopback connections.Click <a href="http://www.rsjoomla.com/customer-support/documentations/73-troubleshooting/417-how-can-you-use-rsseo-without-loopback-connections.html" target="_blank">here</a> for more informations about this problem.'); } if (!empty($result->err)) { $err = implode(',', $result->err); $ok = implode(',', $result->ok); JError::raiseWarning(500, 'Could not connect using "' . $err . '" but could connect with "' . $ok . '"'); } echo 'Click <a href="index.php?option=com_rsseo">here</a> to go to RSSeo! Control Panel'; }
function refreshCompetitor($id = null) { $db =& JFactory::getDBO(); $app =& JFactory::getApplication(); $rsseoConfig = $app->getuserState('rsseoConfig'); $cid = is_null($id) ? JRequest::getInt('cid', 0) : $id; $db->setQuery("SELECT * FROM #__rsseo_competitors WHERE IdCompetitor= '" . $cid . "'"); $Competitor = $db->loadObject(); if (isset($Competitor->Competitor) && !is_null($Competitor->Competitor)) { $array['page_rank'] = rsseoHelper::getPageRank($Competitor->Competitor); $array['alexa_rank'] = rsseoHelper::getAlexaRank($Competitor->Competitor); $array['tehnorati_rank'] = rsseoHelper::getTehnoratiRank($Competitor->Competitor); $array['google_pages'] = rsseoHelper::getGooglePages($Competitor->Competitor); $array['yahoo_pages'] = rsseoHelper::getYahooPages($Competitor->Competitor); $array['bing_pages'] = rsseoHelper::getBingPages($Competitor->Competitor); $array['google_backlinks'] = rsseoHelper::getGoogleBacklinks($Competitor->Competitor); $array['yahoo_backlinks'] = rsseoHelper::getYahooBacklinks($Competitor->Competitor); $array['bing_backlinks'] = rsseoHelper::getBingBacklinks($Competitor->Competitor); $dmoz = rsseoHelper::getDmoz($Competitor->Competitor); $array['date_refreshed'] = time(); $query = "INSERT INTO #__rsseo_competitors_history SET " . "IdCompetitor='" . $cid . "', " . "PageRank='" . $array['page_rank'] . "', " . "AlexaRank='" . $array['alexa_rank'] . "', " . "TehnoratiRank='" . $array['tehnorati_rank'] . "', " . "GoogleBacklinks='" . $array['google_backlinks'] . "', " . "YahooBacklinks='" . $array['yahoo_backlinks'] . "', " . "BingBacklinks='" . $array['bing_backlinks'] . "', " . "GooglePages='" . $array['google_pages'] . "', " . "YahooPages='" . $array['yahoo_pages'] . "', " . "BingPages='" . $array['bing_pages'] . "', " . "DateRefreshed='" . $array['date_refreshed'] . "'"; //save to keyword details $db->setQuery($query); $db->query(); $query = "UPDATE #__rsseo_competitors SET " . "LastPageRank='" . $array['page_rank'] . "', " . "LastAlexaRank='" . $array['alexa_rank'] . "', " . "LastTehnoratiRank='" . $array['tehnorati_rank'] . "', " . "LastGoogleBacklinks='" . $array['google_backlinks'] . "', " . "LastYahooBacklinks='" . $array['yahoo_backlinks'] . "', " . "LastBingBacklinks='" . $array['bing_backlinks'] . "', " . "LastGooglePages='" . $array['google_pages'] . "', " . "LastYahooPages='" . $array['yahoo_pages'] . "', " . "LastBingPages='" . $array['bing_pages'] . "', " . "Dmoz='" . $dmoz . "', " . "LastDateRefreshed='" . $array['date_refreshed'] . "' " . "WHERE IdCompetitor = '" . $cid . "'"; //update last keyword $db->setQuery($query); $db->query(); $array['date_refreshed'] = date($rsseoConfig['global.dateformat'], $array['date_refreshed']); $db->setQuery("SELECT * FROM #__rsseo_competitors_history WHERE IdCompetitor = " . $cid . " ORDER BY DateRefreshed DESC LIMIT 2 "); $history = $db->loadObjectList(); if (isset($history[1])) { $compare = $history[0]; } //google page rank if ($compare->PageRank > $Competitor->LastPageRank) { $color1 = 'colorgreen'; } if ($compare->PageRank < $Competitor->LastPageRank) { $color1 = 'colorred'; } if ($compare->PageRank == $Competitor->LastPageRank) { $color1 = 'colornone'; } //alexa page rank if ($compare->AlexaRank > $Competitor->LastAlexaRank) { $color2 = 'colorred'; } if ($compare->AlexaRank < $Competitor->LastAlexaRank) { $color2 = 'colorgreen'; } if ($compare->AlexaRank == $Competitor->LastAlexaRank) { $color2 = 'colornone'; } //google pages if ($compare->GooglePages > $Competitor->LastGooglePages) { $color3 = 'colorgreen'; } if ($compare->GooglePages < $Competitor->LastGooglePages) { $color3 = 'colorred'; } if ($compare->GooglePages == $Competitor->LastGooglePages) { $color3 = 'colornone'; } //yahoo pages if ($compare->YahooPages > $Competitor->LastYahooPages) { $color4 = 'colorgreen'; } if ($compare->YahooPages < $Competitor->LastYahooPages) { $color4 = 'colorred'; } if ($compare->YahooPages == $Competitor->LastYahooPages) { $color4 = 'colornone'; } //bing pages if ($compare->BingPages > $Competitor->LastBingPages) { $color5 = 'colorgreen'; } if ($compare->BingPages < $Competitor->LastBingPages) { $color5 = 'colorred'; } if ($compare->BingPages == $Competitor->LastBingPages) { $color5 = 'colornone'; } //google backlinks if ($compare->GoogleBacklinks > $Competitor->LastGoogleBacklinks) { $color6 = 'colorgreen'; } if ($compare->GoogleBacklinks < $Competitor->LastGoogleBacklinks) { $color6 = 'colorred'; } if ($compare->GoogleBacklinks == $Competitor->LastGoogleBacklinks) { $color6 = 'colornone'; } //yahoo backlinks if ($compare->YahooBacklinks > $Competitor->LastYahooBacklinks) { $color7 = 'colorgreen'; } if ($compare->YahooBacklinks < $Competitor->LastYahooBacklinks) { $color7 = 'colorred'; } if ($compare->YahooBacklinks == $Competitor->LastYahooBacklinks) { $color7 = 'colornone'; } //bing backlinks if ($compare->BingBacklinks > $Competitor->LastBingBacklinks) { $color8 = 'colorgreen'; } if ($compare->BingBacklinks < $Competitor->LastBingBacklinks) { $color8 = 'colorred'; } if ($compare->BingBacklinks == $Competitor->LastBingBacklinks) { $color8 = 'colornone'; } //tehnorati rank if ($compare->TehnoratiRank > $Competitor->LastTehnoratiRank) { $color9 = 'colorgreen'; } if ($compare->TehnoratiRank < $Competitor->LastTehnoratiRank) { $color9 = 'colorred'; } if ($compare->TehnoratiRank == $Competitor->LastTehnoratiRank) { $color9 = 'colornone'; } $array['color1'] = $color1; $array['color2'] = $color2; $array['color3'] = $color3; $array['color4'] = $color4; $array['color5'] = $color5; $array['color6'] = $color6; $array['color7'] = $color7; $array['color8'] = $color8; $array['color9'] = $color9; $array['dmoz'] = $dmoz == 0 ? JText::_('RSSEO_NO') : JText::_('RSSEO_YES'); echo implode("\n", $array); } if ($id == null) { exit; } }
function refreshkeyword($IdKeyword = null) { $app =& JFactory::getApplication(); $db =& JFactory::getDBO(); $rsseoConfig = $app->getuserState('rsseoConfig'); if (!$IdKeyword) { $cid = intval(JRequest::getVar('cid')); } else { $cid = $IdKeyword; } $db->setQuery("SELECT ActualKeywordPosition FROM #__rsseo_keywords WHERE IdKeyword =" . $cid); $currentPosition = $db->loadResult(); $db->setQuery("SELECT Keyword FROM #__rsseo_keywords WHERE IdKeyword='" . $cid . "'"); $keyword = $db->loadResult(); $rsseoConfig['subdomains'] = str_replace("\r", '', $rsseoConfig['subdomains']); $domains = array(); $domains = explode("\n", $rsseoConfig['subdomains']); $domains[] = JURI::root(); $q = str_replace(" ", "+", $keyword); $q = str_replace("%26", "&", $q); $valid = 0; $i = 1; for ($google_page = 0; $google_page < 5; $google_page++) { $parser = rsseoHelper::file_get_html('http://www.' . $rsseoConfig['google.domain'] . '/search?q=' . $q . '&pws=0&start=' . 10 * $google_page); while ($parser->parse()) { if (strtolower($parser->iNodeName) == 'a' && @$parser->iNodeAttributes['class'] == 'l' && empty($parser->iNodeAttributes['title']) && empty($parser->iNodeAttributes['style'])) { $href = @$parser->iNodeAttributes['href']; foreach ($domains as $domain) { if (empty($domain)) { continue; } if (strpos($href, $domain) !== false) { $valid = 1; continue; } } if ($valid) { continue; } $i++; } } if ($valid) { break; } } $array['position'] = $valid ? $i : 0; $array['date_refreshed'] = time(); if ($array['position'] > $currentPosition) { $array['color'] = "colorred"; } if ($array['position'] < $currentPosition) { $array['color'] = "colorgreen"; } if ($array['position'] == $currentPosition) { $array['color'] = "colornone"; } //update last keyword $db->setQuery("UPDATE #__rsseo_keywords SET ActualKeywordPosition ='" . $array['position'] . "' , LastKeywordPosition = " . $currentPosition . " , DateRefreshed='" . $array['date_refreshed'] . "' WHERE IdKeyword = '" . $cid . "'"); $db->query(); $array['date_refreshed'] = date($rsseoConfig['global.dateformat'], $array['date_refreshed']); if ($IdKeyword == null) { echo serialize($array); exit; } }
function display($tpl = null) { $app =& JFactory::getApplication(); JSubMenuHelper::addEntry(JText::_('RSSEO_OVERVIEW'), 'index.php?option=com_rsseo'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_COMPETITORS'), 'index.php?option=com_rsseo&task=listcompetitors'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_PAGES'), 'index.php?option=com_rsseo&task=listpages', true); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_REDIRECTS'), 'index.php?option=com_rsseo&task=listredirects'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_SITEMAP'), 'index.php?option=com_rsseo&task=sitemap'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_CRAWLER'), 'index.php?option=com_rsseo&task=crawler'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_KEYWORDS'), 'index.php?option=com_rsseo&task=listkeywords'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_BACKUPRESTORE'), 'index.php?option=com_rsseo&task=backuprestore'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_ANALYTICS'), 'index.php?option=com_rsseo&task=analytics'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_SETTINGS'), 'index.php?option=com_rsseo&task=editsettings'); JSubMenuHelper::addEntry(JText::_('RSSEO_MENU_UPDATE'), 'index.php?option=com_rsseo&task=update'); $task = JRequest::getVar('task'); switch ($task) { case 'listpages': $db =& JFactory::getDBO(); JToolBarHelper::title(JText::_('RSSEO_LIST_PAGES'), 'rsseo'); JToolBarHelper::custom('publish', 'rsseo_ignore', 'rsseo_ignore', JText::_('RSSEO_PAGE_PUBLISHED')); JToolBarHelper::custom('unpublish', 'rsseo_unignore', 'rsseo_unignore', JText::_('RSSEO_PAGE_UNPUBLISHED')); JToolBarHelper::custom('restore', 'restore', 'restore', JText::_('RSSEO_RESTORE_PAGES')); JToolBarHelper::custom('refresh', 'refresh', 'refresh', JText::_('RSSEO_BULK_REFRESH')); JToolBarHelper::addNewX('editpage'); JToolBarHelper::editListX('editpage'); JToolBarHelper::deleteList("Are you sure you want to delete?", 'remove', "Delete"); $bar =& JToolBar::getInstance('toolbar'); $bar->appendButton('Confirm', JText::_('RSSEO_DELETE_ALL_PAGES_MESSAGE', true), 'delete', JText::_('RSSEO_DELETE_ALL_PAGES'), 'removeall', false); JToolBarHelper::custom('rsseo', 'preview.png', 'preview_f2.png', JText::_('RSSEO_PRODUCT'), false); $filter = $app->getUserStateFromRequest('com_rsseo.pages.rs_filter', 'rs_filter', ''); $md5_descr = JRequest::getVar('md5_descr'); $md5_title = JRequest::getVar('md5_title'); $status_filter = JRequest::getVar('rs_status_filter'); $page_level_filter = JRequest::getVar('rs_page_level_filter'); $sortColumn = JRequest::getVar('filter_order', 'PageLevel'); $sortOrder = JRequest::getVar('filter_order_Dir', 'asc'); $pagination = $this->get('pagination'); $page_published[] = JHTML::_('select.option', '', JText::_('RSSEO_PAGE_STATUS'), 'val', 'text'); $page_published[] = JHTML::_('select.option', '0', JText::_('RSSEO_PAGE_UNPUBLISHED'), 'val', 'text'); $page_published[] = JHTML::_('select.option', '1', JText::_('RSSEO_PAGE_PUBLISHED'), 'val', 'text'); $page_level[] = JHTML::_('select.option', '', JText::_('RSSEO_PAGE_LEVEL'), 'val', 'text'); $page_level[] = JHTML::_('select.option', '0', '0', 'val', 'text'); $page_level[] = JHTML::_('select.option', '1', '1', 'val', 'text'); $page_level[] = JHTML::_('select.option', '2', '2', 'val', 'text'); $page_level[] = JHTML::_('select.option', '3', '3', 'val', 'text'); $page_level[] = JHTML::_('select.option', '4', '4', 'val', 'text'); $page_level[] = JHTML::_('select.option', '5', '5', 'val', 'text'); $page_level[] = JHTML::_('select.option', '127', JText::_('RSSEO_UNDEFINED'), 'val', 'text'); $lists['page_published'] = JHTML::_('select.genericlist', $page_published, 'rs_status_filter', 'class="inputbox" size="1" onchange="submitbutton(\'listpages\');"', 'val', 'text', $status_filter); $lists['page_level'] = JHTML::_('select.genericlist', $page_level, 'rs_page_level_filter', 'class="inputbox" size="1" onchange="submitbutton(\'listpages\');"', 'val', 'text', $page_level_filter); $listpages = $this->get('data'); $this->assignRef('location_filter', $category_filter); $this->assignRef('lists', $lists); $this->assignRef('filter', $filter); $this->assignRef('md5_descr', $md5_descr); $this->assignRef('md5_title', $md5_title); $this->assignRef('sortColumn', $sortColumn); $this->assignRef('sortOrder', $sortOrder); $this->assignRef('listpages', $listpages); $this->assignRef('pagination', $pagination); $this->assignRef('rsseoConfig', $app->getuserState('rsseoConfig')); break; case 'editpage': JHTML::_('behavior.tooltip'); $db =& JFactory::getDBO(); $cid = JRequest::getVar('cid', array(0), 'request', 'array'); if (is_array($cid)) { $cid = intval($cid[0]); } if ($cid == 0) { JToolBarHelper::title(JText::_('RSSEO_PAGE_NEW'), 'rsseo'); } else { JToolBarHelper::title(JText::_('RSSEO_PAGE_EDIT'), 'rsseo'); } JToolBarHelper::custom('checkpage', 'html', 'html', JText::_('RSSEO_CHECK'), false); JToolBarHelper::save(); JToolBarHelper::apply(); JToolBarHelper::cancel(); JToolBarHelper::custom('rsseo', 'preview.png', 'preview_f2.png', JText::_('RSSEO_PRODUCT'), false); $page = $this->get('Page'); $reg = JRegistry::getInstance(''); $registry = JRegistry::getInstance('density'); if (rsseoHelper::is16()) { $reg->loadJSON($page->params); } else { $reg->loadINI($page->params); } if (rsseoHelper::is16()) { $registry->loadJSON($page->densityparams); } else { $registry->loadINI($page->densityparams); } $this->assignRef('cid', $cid); $this->assignRef('data', $page); $this->assignRef('params', $reg->toObject()); $this->assignRef('densityparams', $registry->toArray()); $this->assignRef('rsseoConfig', $app->getuserState('rsseoConfig')); break; case 'showdetails': JToolBarHelper::title(JText::_('RSSEO_PAGE_SIZE_DETAILS'), 'rsseo'); JToolBarHelper::custom('back', 'back', 'back', JText::_('RSSEO_BACK'), false); JToolBarHelper::custom('rsseo', 'preview.png', 'preview_f2.png', JText::_('RSSEO_PRODUCT'), false); $cid = JRequest::getVar('cid'); $layout = $this->get('Details'); $this->assignRef('layout', $layout); $this->assignRef('cid', $cid); break; } parent::display($tpl); }