Server IP : 180.180.241.3 / Your IP : 216.73.216.252 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/app/webroot/news/administrator/components/com_xmap/classes/ |
Upload File : |
<?php /** * $Id: XmapSitemap.php 158 2011-07-14 02:54:08Z guilleva $ * $LastChangedDate: 2011-07-13 20:54:08 -0600 (Wed, 13 Jul 2011) $ * $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.' ); /** Wraps all configuration functions for Xmap */ class XmapSitemap extends JTable { var $id = NULL; var $name = ""; var $expand_category = 1; var $expand_section = 1; var $show_menutitle = 1; var $columns = 1; var $exlinks = 1; var $ext_image = 'img_grey.gif'; var $menus = "mainmenu,0,1,1,0.5,daily"; var $exclmenus = ''; var $includelink = 1; var $usecache = 1; var $cachelifetime = 900; var $classname = 'xmap'; var $count_xml = 0; var $count_html = 0; var $views_xml = 0; var $views_html = 0; var $lastvisit_xml = 0; var $lastvisit_html = 0; var $excluded_items = ''; var $compress_xml = 0; var $_items = array(); function XmapSitemap(&$db) { $config =& JFactory::getConfig(); $this->name= _XMAP_NAME_NEW_SITEMAP; $this->usecache = $config->getValue('config.caching'); $this->cachelifetime= $config->getValue('config.cachetime'); $this->_excluded_items=NULL; parent::__construct('#__xmap_sitemap', 'id', $db); } /** Return $menus as an associative array */ function &getMenus() { $lines = explode("\n", $this->menus); $menus = array(); foreach( $lines as $line ) { if ($line) { list( $menutype, $ordering, $show, $showXML, $priority, $changefreq ) = explode(',', $line); $info = explode(',', $line); $menu = new stdclass; $menu->menutype = @$info[0]; $menu->ordering = @$info[1]; $menu->show = @$info[2]; $menu->showXML = @$info[3]; $menu->priority = (@$info[4]? $info[4] : '0.5'); $menu->changefreq = (@$info[5]? $info[5] : 'weekly'); $menu->module = (@$info[6]? $info[6] : 'mod_mainmenu'); $menus[$menutype] = $menu; } } return $menus; } /** Set $menus from an associative array of menu objects */ function setMenus( &$menus ) { $db = & JFactory::getDBO(); $lines = array(); foreach( $menus as $menutype => $menu ) { $show = $menu->show ? 1 : 0; $showXML = $menu->showXML ? 1 : 0; $lines[] = $db->getEscaped($menutype).','.intval($menu->ordering).','.$show.','.$showXML.','.$db->getEscaped($menu->priority).','.$db->getEscaped($menu->changefreq).','.$db->getEscaped($menu->module); } $this->menus = implode("\n", $lines); } /** Remove the sitemap from the table */ function remove() { $db = & JFactory::getDBO(); $query = "delete from #__xmap_sitemap where `id`=".$this->id; $db->setQuery( $query ); if( $db->query() === FALSE ) { echo _XMAP_ERR_NO_DROP_DB . "<br />\n"; echo mosStripslashes($db->getErrorMsg()); return false; } return true; } /** Load settings from the database into this instance */ function load($id) { $db = & JFactory::getDBO(); $this->id = intval($id); $query = 'SELECT * FROM `#__xmap_sitemap` where id='.$this->id; $db->setQuery( $query ); if( !$res = $db->loadAssocList( )) { return false; // defaults are still set, though } $this->bind($res[0]); $this->_items = NULL; return true; } /** Save current settings to the database */ function save($forceinstall=false) { $db = & JFactory::getDBO(); $fields = array(); $vars = get_object_vars( $this ); foreach($vars as $name => $value) { if (is_array($value) || is_object($value)) { continue; } if ($name[0]!=='_' && ($name != 'id' || ($forceinstall && $value) ) ) { $fields["`{$name}`"] = "'{$value}'"; } } if ($this->id && !$forceinstall) { $sep = ""; $values=""; foreach ($fields as $k => $value) { if ($k != 'id') { $values .= "$sep$k=$value"; $sep = ","; } } $query = "UPDATE #__xmap_sitemap SET $values WHERE id=" . intval($this->id); $isInsert = 0; } else { $query = "INSERT INTO #__xmap_sitemap (". implode(',',array_keys($fields)) .") VALUES (".implode(',',$fields).")"; $isInsert = 1; } $db->setQuery( $query ); # echo $db->getQuery( ); if( $db->query() === FALSE ) { echo stripslashes($db->getErrorMsg()); return false; } if ($isInsert) { $this->id = $db->insertid( ); } return true; } /** Debug output of current settings */ function dump() { $vars = get_object_vars( $this ); echo '<pre style="text-align:left">'; foreach( $vars as $name => $value ) { echo $name.': '.$value."\n"; } echo '</pre>'; } function bind( $array, $ignore='' ) { if (!is_array( $array )) { $this->_error = strtolower(get_class( $this ))."::bind failed."; return false; } else { foreach (get_object_vars($this) as $k => $v) { if( substr( $k, 0, 1 ) != '_' ) { // internal attributes of an object are ignored if ( isset($array[$k]) ) { $this->$k = get_magic_quotes_gpc() ? stripslashes( $array[$k] ) : $array[$k]; } elseif ( !in_array($k, array('id','count_xml','views_xml','views_html','lastvisit_xml','count_html','views_html','lastvisit_html')) ) { $this->$k = ''; } } } } } /** Move the display order of a record */ function orderMenu( $menutype, $inc ) { $menus = $this->getMenus(); if (empty($menus[$menutype]) ) { return false; } if ($menus[$menutype]->ordering == 0 && $inc < 0) return false; if ($menus[$menutype]->ordering >= count($menus) && $inc > 0) return false; $menus[$menutype]->ordering += $inc; // move position up/down foreach( $menus as $type => $menu ) { // swap position of previous entry at that position if( $type != $menutype && $menu->ordering == $menus[$menutype]->ordering ) $menus[$type]->ordering -= $inc; } $this->sortMenus( $menus ); $this->setMenus( $menus ); } function &getExcludedItems() { if (!$this->_excluded_items) { $this->_excluded_items = array(); $pairs = explode(';',$this->excluded_items); foreach ($pairs as $pair) { if (strpos($pair,':') !== FALSE) { list($itemid,$items) = explode(':',$pair); $this->_excluded_items[$itemid] = explode(',',$items); } } } return $this->_excluded_items; } function isExcluded($itemid,$uid) { $this->getExcludedItems(); if (!empty($this->_excluded_items[$itemid])) { $excluded_items = $this->_excluded_items[$itemid]; } else { $excluded_items = NULL; } return ( $excluded_items && in_array($uid,$excluded_items)); } function loadItems ($view,$itemid=NULL) { $db =& JFactory::getDBO(); if ($this->_items !== NULL && isset($this->_items[$view]) && ($itemid==NULL || isset($this->_items[$view][$itemid]))) { return; } $query = "select * from #__xmap_items where view='".$db->getEscaped($view)."' and sitemap_id=".$this->id; $db->setQuery($query); $rows = $db->loadObjectList(); $this->_items[$view] = array(); if ($rows && is_array($rows)) { foreach ($rows as $row) { $this->_items[$view][$row->itemid] = array(); $this->_items[$view][$row->itemid][$row->uid] = array(); $pairs = explode(';',$row->properties); foreach ($pairs as $pair) { if (strpos($pair,'=') !== FALSE) { list($property,$value) = explode('=',$pair); $this->_items[$view][$row->itemid][$row->uid][$property] = $value; } } } } } function getProperty($property,$default,$itemid,$view,$uid) { if ($this->_items == NULL || !isset($this->_items[$view][$itemid][$uid][$property])) { return $default; } return $this->_items[$view][$itemid][$uid][$property]; } function chageItemPropery($uid,$itemid,$view,$property,$value) { $this->loadItems($view,$itemid); $db = &JFactory::getDBO(); $isNew = false; if (empty($this->_items[$view][$itemid][$uid])) { $this->_items[$view][$itemid][$uid] = array(); $isNew = true; } $this->_items[$view][$itemid][$uid][$property]=$value; $sep = $properties = ''; foreach ($this->_items[$view][$itemid][$uid] as $k => $v) { $properties .= $sep.$k.'='.$v; $sep = ';'; } if (!$isNew) { $query = 'UPDATE #__xmap_items SET properties=\''.$db->getEscaped($properties)."' where uid='".$db->getEscaped($uid). "' and itemid=$itemid and view='$view' and sitemap_id=".$this->id; } else { $query = 'INSERT #__xmap_items (uid,itemid,view,sitemap_id,properties) values ( \''.$db->getEscaped($uid). "',$itemid,'$view',{$this->id},'".$db->getEscaped($properties)."')"; } $db->setQuery($query); if ($db->query()) { XmapCache::cleanCache($this); return true; } else { return false; } } function toggleItem($uid,$itemid) { if ( !$this->isExcluded($itemid,$uid) ) { $this->_excluded_items[$itemid][] = $uid; $state = 0; } else { if (is_array($this->_excluded_items[$itemid]) && count($this->_excluded_items[$itemid])) { $this->_excluded_items[$itemid] = array_filter($this->_excluded_items[$itemid],create_function('$var', 'return ($var != \''.$uid.'\');')); } else { unset($this->_excluded_items[$itemid]); } $state = 1; } $sep = $str = ''; foreach ($this->_excluded_items as $itemid => $items) { $str .= $sep."$itemid:".implode(',',$items); $sep = ';'; } $db = &JFactory::getDBO(); $query = "UPDATE #__xmap_sitemap set excluded_items='".$db->getEscaped($str) ."' where id=". $this->id; $db->setQuery($query); $db->query(); return $state; } /** uasort function that compares element ordering */ function sort_ordering( &$a, &$b) { if( $a->ordering == $b->ordering) { return 0; } return $a->ordering < $b->ordering ? -1 : 1; } /** make menu ordering continuous*/ function sortMenus( &$menus ) { uasort( $menus, array('XmapSitemap','sort_ordering') ); $i = 0; foreach( $menus as $key => $menu) $menus[$key]->ordering = $i++; } }