[code.view]

[top] / php / GetSimpleCMS-3.2.3 / admin / inc / caching_functions.php

     <?php 
     /****************************************************
     *
     * @File:  caching_functions.php
     * @Package: GetSimple
     * @since 3.1
     * @Action:  Plugin to create pages.xml and new functions  
     *
     *****************************************************/
     
     $pagesArray = array();
     
     add_action('index-header','getPagesXmlValues',array(false));        // make $pagesArray available to the theme 
     add_action('header', 'create_pagesxml',array('false'));             // add hook to save  $tags values 
     add_action('page-delete', 'create_pagesxml',array('true'));         // Create pages.array if file deleted
     
     /**
      * Get Page Content
      *
      * Retrieve and display the content of the requested page. 
      * As the Content is not cahed the file is read in.
      *
      * @since 2.0
      * @param $page - slug of the page to retrieve content
      *
      */
     function getPageContent($page,$field='content'){   
     	$thisfile = file_get_contents(GSDATAPAGESPATH.$page.'.xml');
     	$data = simplexml_load_string($thisfile);
     	$content = stripslashes(htmlspecialchars_decode($data->$field, ENT_QUOTES));
     	if ($field=='content'){
     		$content = exec_filter('content',$content);
     	}
     	echo $content;
     }
     
     /**
      * Get Page Field
      *
      * Retrieve and display the requested field from the given page. 
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * @param $field - the Field to display
      * 
      */
     function getPageField($page,$field){   
     	global $pagesArray;
     	if ($field=="content"){
     	  getPageContent($page);  
     	} else {
     		if (array_key_exists($field, $pagesArray[(string)$page])){
     	  		echo strip_decode($pagesArray[(string)$page][(string)$field]);
     		} else {
     			getPageContent($page,$field);
     		}
     	} 
     }
     
     /**
      * Echo Page Field
      *
      * Retrieve and display the requested field from the given page. 
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * @param $field - the Field to display
      * 
      */
     function echoPageField($page,$field){
     	getPageField($page,$field);
     }
     
     
     /**
      * Return Page Content
      *
      * Return the content of the requested page. 
      * As the Content is not cahed the file is read in.
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * @param $raw false - if true return raw xml
      * @param $nofilter false - if true skip content filter execution
      *
      */
     function returnPageContent($page, $field='content', $raw = false, $nofilter = false){   
     	$thisfile = file_get_contents(GSDATAPAGESPATH.$page.'.xml');
     	$data = simplexml_load_string($thisfile);
     	$content = $data->$field;
     	if(!$raw) $content = stripslashes(htmlspecialchars_decode($content, ENT_QUOTES));
     	if ($field=='content' and !$nofilter){
     		$content = exec_filter('content',$content);
     	}
       	return $content;
     }
     
     /**
      * Get Page Field
      *
      * Retrieve and display the requested field from the given page. 
      * If the field is "content" it will call returnPageContent()
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * @param $field - the Field to display
      * 
      */
     function returnPageField($page,$field){   
     	global $pagesArray;
     	if ($field=="content"){
     	  $ret=returnPageContent($page); 
     	} else {
     		if (array_key_exists($field, $pagesArray[(string)$page])){
     	  		$ret=strip_decode(@$pagesArray[(string)$page][(string)$field]);
     		} else {
     			$ret = returnPageContent($page,$field);
     		}
     	} 
     	return $ret;
     }
     
     
     /**
      * Get Page Children
      *
      * Return an Array of pages that are children of the requested page/slug
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * 
      * @returns - Array of slug names 
      * 
      */
     function getChildren($page){
     	global $pagesArray;
     	$returnArray = array();
     	foreach ($pagesArray as $key => $value) {
     	    if ($pagesArray[$key]['parent']==$page){
     	      $returnArray[]=$key;
     	    }
     	}
     	return $returnArray;
     }
     
     /**
      * Get Page Children - returns multi fields
      *
      * Return an Array of pages that are children of the requested page/slug with optional fields.
      *
      * @since 3.1
      * @param $page - slug of the page to retrieve content
      * @param options - array of optional fields to return
      * 
      * @returns - Array of slug names and optional fields. 
      * 
      */
     
     function getChildrenMulti($page,$options=array()){
     	global $pagesArray;
     	$count=0;
     	$returnArray = array();
     	foreach ($pagesArray as $key => $value) {
     	    if ($pagesArray[$key]['parent']==$page){
     	      	$returnArray[$count]=array();
     			$returnArray[$count]['url']=$key;
     	    	foreach ($options as $option){
     	    		$returnArray[$count][$option]=returnPageField($key,$option);
     	    	}
     			$count++;
     		}
     	}
     	return $returnArray;
     }
     
     /**
      * Get Cached Pages XML Values
      *
      * Loads the Cached XML data into the Array $pagesArray
      * If the file does not exist it is created the first time. 
      *
      * @since 3.1
      *  
      */
     function getPagesXmlValues($chkcount=true){
       global $pagesArray;
       $pagesArray=array();
       $file=GSDATAOTHERPATH."pages.xml";
       if (file_exists($file)){
       // load the xml file and setup the array. 
         $thisfile = file_get_contents($file);
         $data = simplexml_load_string($thisfile);
         $pages = $data->item;
           foreach ($pages as $page) {
             $key=$page->url;
             $pagesArray[(string)$key]=array();
             foreach ($page->children() as $opt=>$val) {
                 $pagesArray[(string)$key][(string)$opt]=(string)$val;
             }
             
           }
     	  $path = GSDATAPAGESPATH;
     	  $dir_handle = @opendir($path) or die("Unable to open $path");
     	  $filenames = array();
     	  while ($filename = readdir($dir_handle)) {
     	    $ext = substr($filename, strrpos($filename, '.') + 1);
     	    if ($ext=="xml"){
     	      $filenames[] = $filename;
     	    }
     	  }
     	  if ($chkcount==true){
     		  if (count($pagesArray)!=count($filenames)) {
     		  		create_pagesxml('true');
     	    		getPagesXmlValues(false);
     		  }
     	  }
       } else {
         create_pagesxml(true);
         getPagesXmlValues(false);
       }
       
     }
     
     /**
      * Create the Cached Pages XML file
      *
      * Reads in each page of the site and creates a single XML file called 
      * data/pages/pages.array 
      *
      * @since 3.1
      *  
      */
     function create_pagesxml($flag){
     global $pagesArray;
     
     if ((isset($_GET['upd']) && $_GET['upd']=="edit-success") || $flag=='true'){
       $menu = '';
       $filem=GSDATAOTHERPATH."pages.xml";
     
       $path = GSDATAPAGESPATH;
       $dir_handle = @opendir($path) or die("Unable to open $path");
       $filenames = array();
       while ($filename = readdir($dir_handle)) {
         $ext = substr($filename, strrpos($filename, '.') + 1);
         if ($ext=="xml"){
           $filenames[] = $filename;
         }
       }
       
       $count=0;
       $xml = @new SimpleXMLExtended('<channel></channel>');
       if (count($filenames) != 0) {
         foreach ($filenames as $file) {
           if ($file == "." || $file == ".." || is_dir(GSDATAPAGESPATH.$file) || $file == ".htaccess"  ) {
             // not a page data file
           } else {
             $thisfile = file_get_contents($path.$file);
             $data = simplexml_load_string($thisfile);
             $count++;   
             $id=$data->url;
             
         	$pages = $xml->addChild('item');
             $pages->addChild('url', $id);
             $pagesArray[(string)$id]['url']=(string)$id;            
                     
             foreach ($data->children() as $item => $itemdata) {
                     if ($item!="content"){
                             $note = $pages->addChild($item);
                     $note->addCData($itemdata);
                     $pagesArray[(string)$id][$item]=(string)$itemdata;
                     }
             }
                     
             $note = $pages->addChild('slug');
             $note->addCData($id);
             $pagesArray[(string)$id]['slug']=(string)$data->slug;
                     
             $pagesArray[(string)$id]['filename']=$file;
             $note = $pages->addChild('filename'); 
             $note->addCData($file);
     		
             // Plugin Authors should add custome fields etc.. here
       		exec_action('caching-save');
     	  
           } // else
         } // end foreach
       }   // endif      
       if ($flag==true){
         $xml->asXML($filem);
       }
     }
     }
     
     
     
     ?>

[top] / php / GetSimpleCMS-3.2.3 / admin / inc / caching_functions.php

contact | logmethods.com