<?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 _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 _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; }
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); }