| Server IP : 180.180.241.3 / Your IP : 216.73.216.216 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/AppServ/www/news/administrator/components/com_xmap/classes/ |
Upload File : |
<?php
/**
* $Id: XmapAdmin.php 117 2010-06-08 02:44:07Z guilleva $
* $LastChangedDate: 2010-06-07 20:44:07 -0600 (Mon, 07 Jun 2010) $
* $LastChangedBy: guilleva $
* Xmap by Guillermo Vargas
* a sitemap component for Joomla! CMS (http://www.joomla.org)
* Author Website: http://joomla.vargas.co.cr
* Project License: GNU/GPL http://www.gnu.org/copyleft/gpl.html
*/
defined( '_JEXEC' ) or die( 'Direct Access to this location is not allowed.' );
class XmapAdmin {
var $config = null;
/** Parses input parameters and calls appropriate function */
function show( &$config, &$task, &$cid ) {
$this->config = &$config;
global $xmapComponentPath;
switch ($task) {
case 'save':
$this->saveOptions( $config );
break;
case 'cancel':
global $mainframe;
$mainframe->redirect( 'index2.php' );
break;
case 'uploadfile':
xmapUploadPlugin();
break;
case 'installfromdir':
xmapInstallPluginFromDirectory();
break;
case 'ajax_request':
include($xmapComponentPath . '/ajaxResponse.php');
exit;
break;
case 'navigator':
xmapShowNavigator($this->config);
break;
case 'navigator-links':
xmapShowNavigatorLinks($this->config);
break;
default:
$success = JRequest::getVar('success','',"REQUEST");
$this->showSettingsDialog($success);
break;
}
}
/** Show settings dialog
* @param integer configuration save success
*/
function showSettingsDialog( $success = 0 ) {
global $mainframe;
$database = & JFactory::getDBO();
$menus = $this->getMenus();
# $this->sortMenus( $menus );
$config = &$this->config;
// success messages
switch( $success ) {
case 1:
$lists['msg_success'] = _XMAP_MSG_SET_BACKEDUP;
break;
case 2:
$lists['msg_success'] = _XMAP_ERR_CONF_SAVE;
break;
default:
$lists['msg_success'] = '';
break;
}
$pluginList = '';
$xmlfile = '';
loadInstalledPlugins($pluginList,$xmlfile);
require_once( $mainframe->getPath( 'admin_html' ) );
XmapAdminHtml::show( $config, $menus, $lists,$pluginList,$xmlfile );
}
/** Save settings handed via POST */
function saveOptions( &$config ) {
global $mainframe;
// save css
$csscontent = JRequest::getVar('csscontent', '',"POST","STRING",JREQUEST_ALLOWHTML); // CSS
$file = JPATH_COMPONENT_SITE.DS.'css'.DS.'xmap.css';
$success = 1;
$exclude_css = JRequest::getVar('exclude_css', 0 ,"POST");
$exclude_xsl = JRequest::getVar('exclude_xsl', 0 ,"POST");
$config->exclude_css = $exclude_css;
$config->exclude_xsl = $exclude_xsl;
$config->save();
JFile::write($file, stripslashes( $csscontent ));
$mainframe->redirect('index2.php?option=com_xmap&success='.$success);
exit;
}
/**
*
* get the complete list of menus in joomla
*/
function &getMenus() {
$config = &$this->config;
require_once( JPATH_ADMINISTRATOR.DS.'components'.DS.'com_menus'.DS.'helpers'.DS.'helper.php' );
$menutypes = MenusHelper::getMenuTypeList();
$allmenus = array();
$i=0;
foreach( $menutypes as $menu ) {
$menutype = $menu->menutype;
$allmenus[$menutype] = new stdclass;
$allmenus[$menutype]->ordering = $i;
$allmenus[$menutype]->show = false;
$allmenus[$menutype]->showSitemap = false;
$allmenus[$menutype]->priority = '0.5';
$allmenus[$menutype]->changefreq = 'weekly';
$allmenus[$menutype]->id = $i;
$allmenus[$menutype]->type = $menutype;
$i++;
}
return $allmenus;
}
}
function loadInstalledPlugins( &$rows,&$xmlfile ) {
$database = & JFactory::getDBO();
if (!defined('DOMIT_INCLUDE_PATH') ) {
require_once (JPATH_SITE.DS.'libraries'.DS.'domit'.DS.'xml_domit_lite_parser.php');
}
$query = "SELECT id, extension, published"
. "\n FROM #__xmap_ext"
. "\n WHERE extension not like '%.bak'"
. "\n ORDER BY extension";
$database->setQuery( $query );
$rows = $database->loadObjectList();
$n = count( $rows );
for ($i = 0; $i < $n; $i++) {
$row =& $rows[$i];
// path to module directory
$extensionBaseDir = JPATH_COMPONENT_ADMINISTRATOR.DS.'extensions'.DS;
// xml file for module
$xmlfile = $extensionBaseDir. $row->extension. ".xml";
if (file_exists( $xmlfile )) {
$xmlDoc = new DOMIT_Lite_Document();
$xmlDoc->resolveErrors( true );
if (!$xmlDoc->loadXML( $xmlfile, false, true )) {
continue;
}
$root = &$xmlDoc->documentElement;
if ($root->getTagName() != 'install' && $root->getTagName() != 'mosinstall') {
continue;
}
if ($root->getAttribute( "type" ) != "xmap_ext") {
continue;
}
$element = &$root->getElementsByPath( 'name', 1 );
$row->name = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'creationDate', 1 );
$row->creationdate = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'author', 1 );
$row->author = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'copyright', 1 );
$row->copyright = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'authorEmail', 1 );
$row->authorEmail = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'authorUrl', 1 );
$row->authorUrl = $element ? $element->getText() : '';
$element = &$root->getElementsByPath( 'version', 1 );
$row->version = $element ? $element->getText() : '';
}else {
echo "Missing file '$xmlfile'";
}
}
}
function showInstalledPlugins( $_option ) {
$rows = '';
$xmlfile = '';
loadInstalledPlugins($rows,$xmlfile);
XmapAdminHtml::showInstalledModules( $rows, $_option, $xmlfile, $lists );
}
require_once(JPATH_COMPONENT_ADMINISTRATOR.DS.'classes'.DS.'XmapPluginInstaller.php');
require_once(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_installer'.DS.'models'.DS.'install.php');
function xmapUploadPlugin( ) {
$lang =& JFactory::getLanguage();
$lang->load('com_installer',JPATH_ADMINISTRATOR);
$installerModel = new InstallerModelInstall;
// Get an installer instance
$installer =& JInstaller::getInstance();
$xmapInstaller = new XmapPluginInstaller($installer);
/* Fix for a small bug on Joomla on PHP 4 */
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
// We use eval to avoid PHP warnings on PHP>=5 versions
eval("\$installer->setAdapter('xmap_ext',&\$xmapInstaller);");
}else {
$installer->setAdapter('xmap_ext',$xmapInstaller);
}
$xmapInstaller->parent = &$installer;
$install->_adapters['xmap_ext'] = &$xmapXinstaller;
/* End of the fix for PHP <= 4 */
if ($installerModel->install()) {
XmapAdminHtml::showInstallMessage(_XMAP_EXT_INSTALLED_MSG, '', 'index.php?option=com_xmap');
} else {
XmapAdminHtml::showInstallFailedMessage(_XMAP_EXT_INSTALLED_MSG, '', 'index.php?option=com_xmap');
}
}
function xmapInstallPluginFromDirectory() {
return xmapUploadPlugin();
}
function xmapUninstallPlugin( $extensionid ) {
require_once(JPATH_COMPONENT_ADMINISTRATOR.DS.'classes'.DS.'XmapPluginInstaller.php');
// Get an installer instance
$installer =& JInstaller::getInstance();
$xmapInstaller = new XmapPluginInstaller($installer);
$installer->setAdapter('xmap_ext',$xmapInstaller);
$result = false;
if ($extensionid) {
$result = $installer->uninstall('xmap_ext', $extensionid );
}
if (!$result) {
echo $installer->getError();
}
return $result;
}
function xmapShowNavigator($config) {
require_once(JPATH_COMPONENT_ADMINISTRATOR.DS.'classes'.DS.'XmapNav.php');
$sitemapid = JRequest::getInt('sitemap',0);
$link = urldecode(JRequest::getVar('link',''));
$name = JRequest::getCmd('e_name','');
if (!$sitemapid) {
$sitemapid = $config->sitemap_default;
}
$sitemap = new XmapSitemap($database);
if ( !$sitemap->load($sitemapid) ) {
echo _XMAP_INVALID_SITEMAP;
return false;
}
JHTML::script('mootree.js','media/system/js/');
JHTML::stylesheet('mootree.css','media/system/css/');
XmapAdminHtml::showNavigator($sitemapid,$name);
}
function xmapShowNavigatorLinks($config) {
require_once( JPATH_COMPONENT_ADMINISTRATOR.DS.'classes'.DS.'XmapNav.php');
require_once( JPATH_COMPONENT_ADMINISTRATOR.DS.'classes'.DS.'XmapPlugins.php');
require_once( JPATH_SITE.DS.'includes'.DS.'application.php');
# DEBUG
ini_set('display_errors', 1);
error_reporting(E_ALL);
# DEBUG
$sitemapid = JRequest::getInt('sitemap',0);
$link = urldecode(JRequest::getVar('link',''));
$name = JRequest::getCmd('e_name','');
$Itemid = JRequest::getInt('Itemid');
if (!$sitemapid) {
$sitemapid = $config->sitemap_default;
}
$sitemap = new XmapSitemap($database);
if ( !$sitemap->load($sitemapid) ) {
echo _XMAP_INVALID_SITEMAP;
return false;
}
$menus = $sitemap->getMenus();
$list = array();
// Show the menu items
if (! $link && !$Itemid ) {
foreach ( $menus as $menutype => $menu ) {
$node = new stdclass();
$menu->id = 0;
$menu->menutype = $menutype;
$node->uid = $menu->uid = "menu".$menu->id;
$node->menutype = $menutype;
$node->ordering = $menu->ordering;
$node->priority = $menu->priority;
$node->changefreq = $menu->changefreq;
$node->browserNav = 3;
$node->type = 'separator';
if (!$node->name = xmapGetMenuTitle($menutype,@$menu->module) ) {
$node->name = $menutype;
}
$node->link = '-menu-'.$menutype;
$node->expandible = true;
$node->selectable = false;
//$node->name = $this->getMenuTitle($menutype,@$menu->module); // get the mod_mainmenu title from modules table
$list[] = $node;
}
} else {
$nav = new XmapNav($config, $sitemap);
$extensions = XmapPlugins::loadAvailablePlugins();
$parent = new stdClass;
if ( $Itemid ) {
$items = &JSite::getMenu();
$item =& $items->getItem($Itemid);
if ( isset($menus[$item->menutype]) ) {
$parent->name = $item->name;
$parent->id = $item->id;
$parent->uid = 'itemid'.$item->id;
$parent->link = $link;
$parent->type = $item->type;
$parent->browserNav = $item->browserNav;
$parent->priority = $menus[$item->menutype]->priority;
$parent->changefreq = $menus[$item->menutype]->changefreq;
$parent->menutype = $item->menutype;
$parent->selectable = false;
$parent->expandible = true;
}
} else {
$parent->id = 0;
$parent->link = $link;
}
$list = $nav->expandLink($parent,$extensions);
}
XmapAdminHtml::showNavigatorLinks($sitemapid,$list,$name);
}
/** Look up the title for the module that links to $menutype */
function xmapGetMenuTitle($menutype,$module='mod_mainmenu') {
$database = &JFactory::getDBO();
$query = "SELECT title FROM #__modules WHERE published='1' AND module ='$module' AND params LIKE '%menutype=". $menutype ."%'";
$database->setQuery( $query );
if( !$title = $database->loadResult() ) {
$items = &JSite::getMenu();
$query = "SELECT title FROM #__menu_types WHERE menutype='$menutype'";
$database->setQuery( $query );
$title = $database->loadResult();
}
return $title;
}