problema sitemapindex.xml su php 5.1.6 / 5.2 va su php 5.3

Questo forum è dedicato alle discussioni riguardanti le contribution per osCommerce

Moderatore: mod Generali

Rispondi
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

problema sitemapindex.xml su php 5.1.6 / 5.2 va su php 5.3

Messaggio da maury2ma »

ho un sito che mi sta facendo dannare:
ha php v 5.1.6

ecco i 2 file inciminati
sitemaps.index.php

Codice: Seleziona tutto

<?php
  $language = $_GET['language'];
  require('includes/application_top.php');
  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_GOOGLE_SITEMAPS);
  $breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_GOOGLE_SITEMAPS));

    chdir('../');

    /**
     * Option to compress the files
     */

    define('GOOGLE_SITEMAP_COMPRESS', 'false');
    /**
     * Option for change frequency of products
     */

    define('GOOGLE_SITEMAP_PROD_CHANGE_FREQ', 'weekly');
    /**
     * Option for change frequency of categories
     */

    define('GOOGLE_SITEMAP_CAT_CHANGE_FREQ', 'weekly');
    /**
     * Carried over from application_top.php for compatibility
     */
     
    $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);

    while ($configuration = tep_db_fetch_array($configuration_query)) {
        define($configuration['cfgKey'], $configuration['cfgValue']);
    }
    include_once(DIR_WS_CLASSES . 'language.php');
    $lng = new language();
    $languages_id = $lng->language['id'];

if ( defined('SEO_ENABLED') && SEO_ENABLED == 'true' ) {

    if ( file_exists(DIR_WS_CLASSES . 'seo.class.php') ){
        require_once(DIR_WS_CLASSES . 'seo.class.php');
        $seo_urls = new SEO_URL($languages_id);
    }    

    require_once(DIR_WS_FUNCTIONS . 'html_output.php');
    if ( file_exists(DIR_WS_CLASSES . 'cache.class.php') ){
        include(DIR_WS_CLASSES . 'cache.class.php');
        $cache = new cache($languages_id);
        if ( file_exists('includes/seo_cache.php') ){
            include('includes/seo_cache.php');
        }
        $cache->get_cache('GLOBAL');
    }
}

require_once('sitemap.class.php');

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"/>
<title><?php echo TITLE; ?></title>

<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>"/>
</head>
<body>
<?php
$google = new GoogleSitemap(DB_SERVER, DB_SERVER_USERNAME, DB_DATABASE, DB_SERVER_PASSWORD);
$submit = true;
echo '<pre>';

if ($google->GenerateProductSitemap()){

    echo GOOGLE_SITEMAPS_PRODUCT_SUCCESS . "\n\n";

} else {

    $submit = false;

    echo GOOGLE_SITEMAPS_PRODUCT_ERROR . "\n\n";

}



if ($google->GenerateCategorySitemap()){

    echo GOOGLE_SITEMAPS_CATEGORY_SUCCESS . "\n\n";

} else {

    $submit = false;

    echo GOOGLE_SITEMAPS_CATEGORY_ERROR . "\n\n";

}



if ($google->GenerateSitemapIndex()){
    echo GOOGLE_SITEMAPS_INDEX_SUCCESS . "\n\n";

} else {

    $submit = false;

    echo GOOGLE_SITEMAPS_INDEX_ERROR . "\n\n";

}



if ($submit){

    echo GOOGLE_SITEMAPS_CONGRATULATION . "\n\n";

    echo GOOGLE_SITEMAPS_ALREADY_SUBMITTED . "\n";

    echo GOOGLE_SITEMAPS_HIGHLY_RECCOMMEND . "\n\n";

    echo $google->GenerateSubmitURL() . "\n\n";

    echo GOOGLE_SITEMAPS_CONVENIENCE . "\n";

    echo 'php ' . dirname($_SERVER['SCRIPT_FILENAME']) . '/sitemaps.index.php' . "\n\n";

    echo GOOGLE_SITEMAPS_HERE_INDEX . $google->base_url . 'sitemapindex.xml' . "\n";

    echo GOOGLE_SITEMAPS_HERE_PRODUCT . $google->base_url . 'sitemapproducts.xml' . "\n";

    echo GOOGLE_SITEMAPS_HERE_CATEGORY . $google->base_url . 'sitemapcategories.xml' . "\n";

} else {

    print_r($google->debug);

}



echo '</pre>';

?>
</body>
e sitemap.class.php

Codice: Seleziona tutto

<?php
/**
 * MySQL_Database Class
 *
 * The MySQL_Database class provides abstraction so the databaes can be accessed
 * without having to use tep API functions. This class has minimal error handling
 * so make sure your code is tight!
 * @package Google-XML-Sitemap-Feed
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @version 1.1
 * @link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
 * @copyright Copyright 2005, Bobby Easland
 * @author Bobby Easland
 */
class MySQL_DataBase{
    /**
     * Database host (localhost, IP based, etc)
    * @var string
     */
    var $host;
    /**
     * Database user
    * @var string
     */
    var $user;
    /**
     * Database name
    * @var string
     */
    var $db;
    /**
     * Database password
    * @var string
     */
    var $pass;
    /**
     * Database link
    * @var resource
     */
    var $link_id;

/**
 * MySQL_DataBase class constructor
 * @author Bobby Easland
 * @version 1.0
 * @param string $host
 * @param string $user
 * @param string $db
 * @param string $pass
 */
    function MySQL_DataBase($host, $user, $db, $pass){
        $this->host = $host;
        $this->user = $user;
        $this->db = $db;
        $this->pass = $pass;
        $this->ConnectDB();
        $this->SelectDB();
    } # end function

/**
 * Function to connect to MySQL
 * @author Bobby Easland
 * @version 1.0
 */
    function ConnectDB(){
        $this->link_id = mysql_connect($this->host, $this->user, $this->pass);
    } # end function

/**
 * Function to select the database
 * @author Bobby Easland
 * @version 1.0
 * @return resoource
 */
    function SelectDB(){
        return mysql_select_db($this->db);
    } # end function

/**
 * Function to perform queries
 * @author Bobby Easland
 * @version 1.0
 * @param string $query SQL statement
 * @return resource
 */
    function Query($query){
        return @mysql_query($query, $this->link_id);
    } # end function

/**
 * Function to fetch array
 * @author Bobby Easland
 * @version 1.0
 * @param resource $resource_id
 * @param string $type MYSQL_BOTH or MYSQL_ASSOC
 * @return array
 */
    function FetchArray($resource_id, $type = MYSQL_BOTH){
        return @mysql_fetch_array($resource_id, $type);
    } # end function

/**
 * Function to fetch the number of rows
 * @author Bobby Easland
 * @version 1.0
 * @param resource $resource_id
 * @return mixed
 */
    function NumRows($resource_id){
        return @mysql_num_rows($resource_id);
    } # end function

/**
 * Function to free the resource
 * @author Bobby Easland
 * @version 1.0
 * @param resource $resource_id
 * @return boolean
 */
    function Free($resource_id){
        return @mysql_free_result($resource_id);
    } # end function

/**
 * Function to add slashes
 * @author Bobby Easland
 * @version 1.0
 * @param string $data
 * @return string
 */
    function Slashes($data){
        return addslashes($data);
    } # end function

/**
 * Function to perform DB inserts and updates - abstracted from osCommerce-MS-2.2 project
 * @author Bobby Easland
 * @version 1.0
 * @param string $table Database table
 * @param array $data Associative array of columns / values
 * @param string $action insert or update
 * @param string $parameters
 * @return resource
 */
    function DBPerform($table, $data, $action = 'insert', $parameters = '') {
        reset($data);
        if ($action == 'insert') {
          $query = 'INSERT INTO `' . $table . '` (';
          while (list($columns, ) = each($data)) {
            $query .= '`' . $columns . '`, ';
          }
          $query = substr($query, 0, -2) . ') values (';
          reset($data);
          while (list(, $value) = each($data)) {
            switch ((string)$value) {
              case 'now()':
                $query .= 'now(), ';
                break;
              case 'null':
                $query .= 'null, ';
                break;
              default:
                $query .= "'" . $this->Slashes($value) . "', ";
                break;
            }
          }
          $query = substr($query, 0, -2) . ')';
        } elseif ($action == 'update') {
          $query = 'UPDATE `' . $table . '` SET ';
          while (list($columns, $value) = each($data)) {
            switch ((string)$value) {
              case 'now()':
                $query .= '`' .$columns . '`=now(), ';
                break;
              case 'null':
                $query .= '`' .$columns .= '`=null, ';
                break;
              default:
                $query .= '`' .$columns . "`='" . $this->Slashes($value) . "', ";
                break;
            }
          }
          $query = substr($query, 0, -2) . ' WHERE ' . $parameters;
        }
        return $this->Query($query);
    } # end function
} # end class

/**
 * Google Sitemap Base Class
 *
 * The MySQL_Database class provides abstraction so the databaes can be accessed
 * @package Google-XML-Sitemap-Feed
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @version 1.2
 * @link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
 * @link http://www.google.com/webmasters/sitemaps/docs/en/about.html About Google Sitemap
 * @copyright Copyright 2005, Bobby Easland
 * @author Bobby Easland
 */
class GoogleSitemap{
    /**
     * $DB is the database object
    * @var object
     */
    var $DB;
    /**
     * $filename is the base name of the feeds (i.e. - 'sitemap')
    * @var string
     */
    var $filename;
    /**
     * $savepath is the path where the feeds will be saved - store root
    * @var string
     */
    var $savepath;
    /**
     * $base_url is the URL for the catalog
    * @var string
     */
    var $base_url;
    /**
     * $debug holds all the debug data
    * @var array
     */
    var $debug;

/**
 * GoogleSitemap class constructor
 * @author Bobby Easland
 * @version 1.0
 * @param string $host Database host setting (i.e. - localhost)
 * @param string $user Database user
 * @param string $db Database name
 * @param string $pass Database password
 */
    function GoogleSitemap($host, $user, $db, $pass){
        $this->DB = new MySQL_Database($host, $user, $db, $pass);
        $this->filename = "sitemap";
        $this->savepath = DIR_FS_CATALOG;
        $this->base_url = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
        $this->debug = array();
    } # end class constructor

/**
 * Function to save the sitemap data to file as either XML or XML.GZ format
 * @author Bobby Easland
 * @version 1.1
 * @param string $data XML data
 * @param string $type Feed type (index, products, categories)
 * @return boolean
 */
    function SaveFile($data, $type){
        $filename = $this->savepath . $this->filename . $type;
        $compress = defined('GOOGLE_SITEMAP_COMPRESS') ? GOOGLE_SITEMAP_COMPRESS : 'false';
        if ($type == 'index') $compress = 'false';
        switch($compress){
            case 'true':
                $filename .= '.xml.gz';
                if ($gz = gzopen($filename,'wb9')){
                    gzwrite($gz, $data);
                    gzclose($gz);
                    $this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
                    return true;
                } else {
                    $file_check = file_exists($filename) ? 'true' : 'false';
                    $this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
                    return false;
                }
                break;
            default:
                $filename .= '.xml';
                if ($fp = fopen($filename, 'w+')){
                    fwrite($fp, $data);
                    fclose($fp);
                    $this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
                    return true;
                } else {
                    $file_check = file_exists($filename) ? 'true' : 'false';
                    $this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
                    return false;
                }
                break;
        } # end switch
    } # end function

/**
 * Function to compress a normal file
 * @author Bobby Easland
 * @version 1.0
 * @param string $file
 * @return boolean
 */
    function CompressFile($file){
        $source = $this->savepath . $file . '.xml';
        $filename = $this->savepath . $file . '.xml.gz';
        $error_encountered = false;
        if( $gz_out = gzopen($filename, 'wb9') ){
            if($fp_in = fopen($source,'rb')){
                while(!feof($fp_in)) gzwrite($gz_out, fread($fp_in, 1024*512));
                    fclose($fp_in);
            } else {
                $error_encountered = true;
            }
            gzclose($gz_out);
        } else {
            $error_encountered = true;
        }
        if($error_encountered){
            return false;
        } else {
            return true;
        }
    } # end function

/**
 * Function to generate sitemap file from data
 * @author Bobby Easland
 * @version 1.0
 * @param array $data
 * @param string $file
 * @return boolean
 */
    function GenerateSitemap($data, $file){
        $content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $content .= '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n";
        $content .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
        foreach ($data as $url){
            $content .= "\t" . '<url>' . "\n";
            $content .= "\t\t" . '<loc>'.$url['loc'].'</loc>' . "\n";
            $content .= "\t\t" . '<lastmod>'.$url['lastmod'].'</lastmod>' . "\n";
            $content .= "\t\t" . '<changefreq>'.$url['changefreq'].'</changefreq>' . "\n";
            $content .= "\t\t" . '<priority>'.$url['priority'].'</priority>' . "\n";
            $content .= "\t" . '</url>' . "\n";
        } # end foreach
        $content .= '</urlset>';
        return $this->SaveFile($content, $file);
    } # end function

/**
 * Function to generate sitemap index file
 * @author Bobby Easland
 * @version 1.1
 * @return boolean
 */
    function GenerateSitemapIndex(){
        $content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $content .= '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n";
        $content .= '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
        $pattern = defined('GOOGLE_SITEMAP_COMPRESS')
                     ?    GOOGLE_SITEMAP_COMPRESS == 'true'
                             ?    "{sitemap*.xml.gz}"
                            :     "{sitemap*.xml}"
                     :    "{sitemap*.xml}";
        foreach ( glob($this->savepath . $pattern, GLOB_BRACE) as $filename ) {
           if ( preg_match('/index/i', $filename) ) continue;
           $content .= "\t" . '<sitemap>' . "\n";
           $content .= "\t\t" . '<loc>'.$this->base_url . basename($filename).'</loc>' . "\n";
           $content .= "\t\t" . '<lastmod>'.date ("Y-m-d", filemtime($filename)).'</lastmod>' . "\n";
           $content .= "\t" . '</sitemap>' . "\n";
        } # end foreach
        $content .= '</sitemapindex>';
        return $this->SaveFile($content, 'index');
    } # end function

/**
 * Function to generate product sitemap data
 * @author Bobby Easland
 * @version 1.1
 * @return boolean
 */
    function GenerateProductSitemap(){
// enable disable categories begin
          $sql = "SELECT p.products_id as pID, p.products_date_added as date_added, p.products_last_modified as last_mod, p.products_ordered 
                  FROM " . TABLE_PRODUCTS . " as p
                  LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c ON (p.products_id = p2c.products_id)
                  LEFT JOIN " . TABLE_CATEGORIES . " c on (p2c.categories_id = c.categories_id)
                  WHERE (p.products_status='1' AND c.categories_status='1')
                  ORDER BY products_ordered DESC";
// enable disable categories end
        if ( $products_query = $this->DB->Query($sql) ){
            $this->debug['QUERY']['PRODUCTS']['STATUS'] = 'success';
            $this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = $this->DB->NumRows($products_query);
            $container = array();
            $number = 0;
            $top = 0;
            while( $result = $this->DB->FetchArray($products_query) ){
                $top = max($top, $result['products_ordered']);
                $location = $this->hrefLink(FILENAME_PRODUCT_INFO, 'products_id=' . $result['pID'], 'NONSSL', false);
                $lastmod = $this->NotNull($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
                $changefreq = GOOGLE_SITEMAP_PROD_CHANGE_FREQ;
                // enable disable categories begin
                $ratio = $top > 0 ? $result['p.products_ordered']/$top : 0;
                // enable disabel categories end
                $priority = $ratio < .1 ? .1 : number_format($ratio, 1, '.', '');
                $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                                     'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                                     'changefreq' => $changefreq,
                                     'priority' => $priority
                                     );
                if ( sizeof($container) >= 50000 ){
                    $type = $number == 0 ? 'products' : 'products' . $number;
                    $this->GenerateSitemap($container, $type);
                    $container = array();
                    $number++;
                }
            } # end while
            $this->DB->Free($products_query);
            if ( sizeof($container) > 0 ) {
                $type = $number == 0 ? 'products' : 'products' . $number;
                return $this->GenerateSitemap($container, $type);
            } # end if
        } else {
            $this->debug['QUERY']['PRODUCTS']['STATUS'] = 'false';
            $this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = '0';
        }
    } # end function

/**
 * Funciton to generate category sitemap data
 * @author Bobby Easland
 * @version 1.1
 * @return boolean
 */
    function GenerateCategorySitemap(){
        $sql = "SELECT categories_id as cID, date_added, last_modified as last_mod
                FROM " . TABLE_CATEGORIES . " WHERE categories_status='1'
                ORDER BY parent_id ASC, sort_order ASC, categories_id ASC";
        if ( $categories_query = $this->DB->Query($sql) ){
            $this->debug['QUERY']['CATEOGRY']['STATUS'] = 'success';
            $this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = $this->DB->NumRows($categories_query);
            $container = array();
            $number = 0;
            while( $result = $this->DB->FetchArray($categories_query) ){
                $location = $this->hrefLink(FILENAME_DEFAULT, 'cPath=' . $this->GetFullcPath($result['cID']), 'NONSSL', false);
                $lastmod = $this->NotNull($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
                $changefreq = GOOGLE_SITEMAP_CAT_CHANGE_FREQ;
                $priority = .5;
                $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                                     'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                                     'changefreq' => $changefreq,
                                     'priority' => $priority
                                     );
                if ( sizeof($container) >= 50000 ){
                    $type = $number == 0 ? 'categories' : 'categories' . $number;
                    $this->GenerateSitemap($container, $type);
                    $container = array();
                    $number++;
                }
            } # end while
            $this->DB->Free($categories_query);
            if ( sizeof($container) > 0 ) {
                $type = $number == 0 ? 'categories' : 'categories' . $number;
                return $this->GenerateSitemap($container, $type);
            } # end if
        } else {
            $this->debug['QUERY']['CATEOGRY']['STATUS'] = 'false';
            $this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = '0';
        }
    } # end function



/**
 * Function to retrieve full cPath from category ID
 * @author Bobby Easland
 * @version 1.0
 * @param mixed $cID Could contain cPath or single category_id
 * @return string Full cPath string
 */
    function GetFullcPath($cID){
        if ( preg_match('/_/', $cID) ){
            return $cID;
        } else {
            $c = array();
            $this->GetParentCategories($c, $cID);
            $c = array_reverse($c);
            $c[] = $cID;
            $cID = sizeof($c) > 1 ? implode('_', $c) : $cID;
            return $cID;
        }
    } # end function

/**
 * Recursion function to retrieve parent categories from category ID
 * @author Bobby Easland
 * @version 1.0
 * @param mixed $categories Passed by reference
 * @param integer $categories_id
 */
    function GetParentCategories(&$categories, $categories_id) {
        $sql = "SELECT parent_id
                FROM " . TABLE_CATEGORIES . "
                WHERE categories_id='" . (int)$categories_id . "'";
        $parent_categories_query = $this->DB->Query($sql);
        while ($parent_categories = $this->DB->FetchArray($parent_categories_query)) {
            if ($parent_categories['parent_id'] == 0) return true;
            $categories[sizeof($categories)] = $parent_categories['parent_id'];
            if ($parent_categories['parent_id'] != $categories_id) {
                $this->GetParentCategories($categories, $parent_categories['parent_id']);
            }
        }
    } # end function

/**
 * Function to check if a value is NULL
 * @author Bobby Easland as abstracted from osCommerce-MS2.2
 * @version 1.0
 * @param mixed $value
 * @return boolean
 */
    function NotNull($value) {
        if (is_array($value)) {
            if (sizeof($value) > 0) {
                return true;
            } else {
                return false;
            }
        } else {
            if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
                return true;
            } else {
                return false;
            }
        }
    } # end function

/**
 * Function to return href_link
 * @author Bobby Easland
 * @version 1.0
 * @param mixed $value
 * @return boolean
 */
    function hrefLink($page, $parameters, $connection, $add_session_id) {
        if ( defined('SEO_URLS') && SEO_URLS == 'true' || defined('SEO_ENABLED') && SEO_ENABLED == 'true' ) {
            return tep_href_link($page, $parameters, $connection, $add_session_id);
        } else {
            return $this->base_url . $page . '?' . $parameters;
        }
    } # end function

/**
 * Utility function to read and return the contents of a GZ formatted file
 * @author Bobby Easland
 * @version 1.0
 * @param string $file File to open
 * @return string
 */
    function ReadGZ( $file ){
        $file = $this->savepath . $file;
        $lines = gzfile($file);
        return implode('', $lines);
    } # end function

/**
 * Utility function to generate the submit URL
 * @author Bobby Easland
 * @version 1.0
 * @return string
 */
    function GenerateSubmitURL(){
        $url = urlencode($this->base_url . 'sitemapindex.xml');
        return htmlspecialchars(utf8_encode('http://www.google.com/webmasters/sitemaps/ping?sitemap=' . $url));
    } # end function
} #  end class

?>
funzionano perfettamente su php4 che 5.3 ma su questo serve invece di crearmi i 3 file :
sitemapcategories.xml contenente elenco categorie (correttamente creato)
sitemapproducts.xml contente elenco prodotti (correttamente creato)
sitemapindex.xml contenete i link ai 2 file precedenti (creato vuoto come da esempio sotto)

Codice: Seleziona tutto

<?xml-stylesheet type="text/xsl" href="gss.xsl"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
</sitemapindex>
invece dovrebbe contenere

Codice: Seleziona tutto

<?xml-stylesheet type="text/xsl" href="gss.xsl"?>
<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">
    <sitemap>
        <loc>site/catalog/sitemapcategories.xml</loc>
        <lastmod>2010-11-01</lastmod>
    </sitemap>
    <sitemap>
        <loc>site/catalog/sitemapproducts.xml</loc>
        <lastmod>2010-11-01</lastmod>
    </sitemap>
</sitemapindex>
qualcuno sa cosa correggere ?
non capisco perchè vada solo su alcuni serve e non su altri...
qualcuno mi ha riferito che non va anche su php v5.2
ma non capisco cosa sia errato.


la funzione incriminata è questa, ma non capisco dove sia il potenziale errore :

Codice: Seleziona tutto

/**
 * Function to generate sitemap index file
 * @author Bobby Easland
 * @version 1.1
 * @return boolean
 */
    function GenerateSitemapIndex(){
        $content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
        $content .= '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n";
        $content .= '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
        $pattern = defined('GOOGLE_SITEMAP_COMPRESS')
                     ?    GOOGLE_SITEMAP_COMPRESS == 'true'
                             ?    "{sitemap*.xml.gz}"
                            :     "{sitemap*.xml}"
                     :    "{sitemap*.xml}";
        foreach ( glob($this->savepath . $pattern, GLOB_BRACE) as $filename ) {
           if ( preg_match('/index/i', $filename) ) continue;
           $content .= "\t" . '<sitemap>' . "\n";
           $content .= "\t\t" . '<loc>'.$this->base_url . basename($filename).'</loc>' . "\n";
           $content .= "\t\t" . '<lastmod>'.date ("Y-m-d", filemtime($filename)).'</lastmod>' . "\n";
           $content .= "\t" . '</sitemap>' . "\n";
        } # end foreach
        $content .= '</sitemapindex>';
        return $this->SaveFile($content, 'index');
    } # end function
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: problema sitemapindex.xml su php 5.1.6 / 5.2 va su php 5.3

Messaggio da maury2ma »

trovato:

Codice: Seleziona tutto

glob
non funziona su tutti i server

e l'aggoiunta di

Codice: Seleziona tutto

GLOB_BRACE
è implementato solo da PHP5.3

risolto il mistero.

insomma sul mio server non funziona, lo sto sostituendo con una funziona simile e più compatibile
maury2ma
membro Master
membro Master
Messaggi: 1669
Iscritto il: 10/02/2006, 14:04
Contatta:

Re: problema sitemapindex.xml su php 5.1.6 / 5.2 va su php 5.3

Messaggio da maury2ma »

se servisse ad altri ecco il file modificato : sitemap.class.php

Codice: Seleziona tutto

<?php

function searchFile($folder, $srch, &$results) {
  $folder = rtrim($folder, "/") . '/';
  if ($hd = opendir($folder)) {
    while (false !== ($file = readdir($hd))) {
      if($file != '.' && $file != '..') {
        if(preg_match("#\.$srch$#", $file)) {
          $results[] = $file;
        }
      }
    }
    closedir($hd);
  }
}

/**
 * Google Sitemap Base Class
 *
 * The MySQL_Database class provides abstraction so the databaes can be accessed
 * package Google-XML-Sitemap-Feed
 * license http://opensource.org/licenses/gpl-license.php GNU Public License
 * version 1.2
 * link http://www.oscommerce-freelancers.com/ osCommerce-Freelancers
 * link http://www.google.com/webmasters/sitemaps/docs/en/about.html About Google Sitemap
 * copyright Copyright 2005, Bobby Easland
 * author Bobby Easland
 */
class GoogleSitemap{
  /**
   * $filename is the base name of the feeds (i.e. - 'sitemap')
  * var string
   */
  var $filename;
  /**
   * $savepath is the path where the feeds will be saved - store root
  * var string
   */
  var $savepath;
  /**
   * $base_url is the URL for the catalog
  * var string
   */
  var $base_url;
  /**
   * $debug holds all the debug data
  * var array
   */
  var $debug;
  /**
   * $excludeList holds the files being excluded from the pages map
  * var array
   */
  var $excludeList;

/**
 * GoogleSitemap class constructor
 * author Bobby Easland
 * version 1.0
 */
  function GoogleSitemap(){
    $this->filename = "sitemap";
    $this->savepath = DIR_FS_CATALOG;
    $this->base_url = HTTP_SERVER . DIR_WS_HTTP_CATALOG;
    $this->debug = array();

    $this->excludeList = array(0 => 'account.php',
                               1 => 'account_edit.php',
                               2 => 'account_history.php',
                               3 => 'account_history_info.php',
                               4 => 'account_newsletters.php',
                               5 => 'account_notifications.php',
                               6 => 'account_password.php',
                               7 => 'add_checkout_success.php',
                               8 => 'address_book.php',
                               9 => 'address_book_process.php',
                               10 => 'advanced_search_result.php',
                               11 => 'ask_a_question.php',
                               12 => 'barcodegen.php',
                               13 => 'checkout_confirmation.php',
                               14 => 'checkout_payment.php',
                               15 => 'checkout_payment_address.php',
                               16 => 'checkout_process.php',
                               17 => 'checkout_shipping.php',
                               18 => 'checkout_shipping_address.php',
                               19 => 'checkout_success.php',
                               20 => 'cookie_usage.php',
                               21 => 'create_account.php',
                               22 => 'create_account_success.php',
                               23 => 'download.php',
                               24 => 'gv_faq.php',
                               25 => 'gv_redeem.php',
                               26 => 'gv_send.php',
                               27 => 'info_shopping_cart.php',
                               28 => 'login.php',
                               29 => 'logoff.php',
                               30 => 'my_points.php',
                               31 => 'my_points_help.php',
                               32 => 'password_forgotten.php',
                               33 => 'popup_coupon_help.php',
                               34 => 'popup_image.php',
                               35 => 'popup_search_help.php',
                               36 => 'product_info.php',
                               37 => 'product_reviews.php',
                               38 => 'product_reviews_info.php',
                               39 => 'product_reviews_write.php',
                               40 => 'product_thumb.php',
                               41 => 'redirect.php',
                               42 => 'review_notice.php',
                               43 => 'reviews.php',
                               44 => 'searchsuggest.php',
                               45 => 'shopping_cart.php',
                               46 => 'ssl_check.php',
                               47 => 'tell_a_friend.php',
                               48 => 'validation_png.php',
                               49 => 'specials.php',
                               50 => 'products_new.php',
                               51 => 'advanced_search.php',
                               52 => 'catalog_products_list.php',
                               53 => 'account_validation.php',
                               54 => 'add_ccgvdc.php',
                               55 => 'meta_tags.php' );
  } # end class constructor

  function IsViewableGoogle($file){
    if (($fp = file($file))){
      for ($idx = 0; $idx < count($fp); ++$idx){
         if (strpos($fp[$idx], "include (bts_select(") !== FALSE)
           return true;
      }
    }
    return false;
  }

/**
 * Function to save the sitemap data to file as either XML or XML.GZ format
 * author Bobby Easland
 * version 1.1
 * param string $data XML data
 * param string $type Feed type (index, products, categories)
 * return boolean
 */
  function SaveFile($data, $type){
    $filename = $this->savepath . $this->filename . $type;
    if (strpos($filename, 'googlesitemap') !== FALSE){
      $file_check = file_exists($filename) ? 'true' : 'false';
      $this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'failure due to incorrect file name', 'file_exists' => $file_check);
      return false;
    }

    $compress = defined('GOOGLE_SITEMAP_COMPRESS') ? GOOGLE_SITEMAP_COMPRESS : 'false';
    if ($type == 'index') $compress = 'false';
    switch($compress){
      case 'true':
        $filename .= '.xml.gz';
        if ($gz = gzopen($filename,'wb9')){
          gzwrite($gz, $data);
          gzclose($gz);
          $this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
          return true;
        } else {
          $file_check = file_exists($filename) ? 'true' : 'false';
          $this->debug['SAVE_FILE_COMPRESS'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
          return false;
        }
        break;
      default:
        $filename .= '.xml';
        echo 'Opening   '.$filename. '<br />FS_CAT    '.DIR_FS_CATALOG. '<br />Server    ' . HTTP_SERVER . '<br />Save Path '. $this->savepath . '<br />WS_CAT    '. DIR_WS_HTTP_CATALOG.' <br />';
        if ($fp = fopen($filename, 'w+')){
             echo 'Write '.$filename.'<br />';
          fwrite($fp, $data);
          fclose($fp);
          $this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'success', 'file_exists' => 'true');
          return true;
        } else {
          $file_check = file_exists($filename) ? 'true' : 'false';
          $this->debug['SAVE_FILE_XML'][] = array('file' => $filename, 'status' => 'failure', 'file_exists' => $file_check);
          return false;
        }
        break;
    } # end switch
  } # end function

/**
 * Function to compress a normal file
 * author Bobby Easland
 * version 1.0
 * param string $file
 * return boolean
 */
  function CompressFile($file){
    $source = $this->savepath . $file . '.xml';
    $filename = $this->savepath . $file . '.xml.gz';
    $error_encountered = false;
    if( $gz_out = gzopen($filename, 'wb9') ){
      if($fp_in = fopen($source,'rb')){
        while(!feof($fp_in)) gzwrite($gz_out, fread($fp_in, 1024*512));
          fclose($fp_in);
      } else {
        $error_encountered = true;
      }
      gzclose($gz_out);
    } else {
      $error_encountered = true;
    }
    if($error_encountered){
      return false;
    } else {
      return true;
    }
  } # end function

/**
 * Function to generate sitemap file from data
 * author Bobby Easland
 * version 1.0
 * param array $data
 * param string $file
 * return boolean
 */
  function GenerateSitemap($data, $file){
    $content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    $content .= '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n";
    $content .= '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
    foreach ($data as $url){
      $content .= "\t" . '<url>' . "\n";
      $content .= "\t\t" . '<loc>'.$url['loc'].'</loc>' . "\n";
      $content .= "\t\t" . '<lastmod>'.$url['lastmod'].'</lastmod>' . "\n";
      $content .= "\t\t" . '<changefreq>'.$url['changefreq'].'</changefreq>' . "\n";
      $content .= "\t\t" . '<priority>'.$url['priority'].'</priority>' . "\n";
      $content .= "\t" . '</url>' . "\n";
    } # end foreach
    $content .= '</urlset>';
    return $this->SaveFile($content, $file);
  } # end function

/**
 * Function to generate sitemap index file
 * author Bobby Easland
 * version 1.1
 * return boolean
 */
  function GenerateSitemapIndex(){
    $content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
    $content .= '<?xml-stylesheet type="text/xsl" href="gss.xsl"?>' . "\n"; //human readable
    $content .= '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">' . "\n";
    $pattern = defined('GOOGLE_SITEMAP_COMPRESS')
               ? GOOGLE_SITEMAP_COMPRESS == 'true'
               ? '.xml.gz' : 'xml' : 'xml';
    $listxml=array();
    searchFile($this->savepath, $pattern, $listxml);
    foreach ( $listxml as $filename ) {
       if ( preg_match('/index/i', $filename) ) continue;
       if ( preg_match('/manufacturers/i', $filename) && GOOGLE_XML_SITEMAP_CREATE_MANU != 'true' ) continue;
       if ( preg_match('/pages/i', $filename) && GOOGLE_XML_SITEMAP_CREATE_PAGES != 'true' ) continue;
       if ( preg_match('/specials/i', $filename) && GOOGLE_XML_SITEMAP_CREATE_SPECIALS != 'true' ) continue;
       $content .= "\t" . '<sitemap>' . "\n";
       $content .= "\t\t" . '<loc>'.$this->base_url . basename($filename).'</loc>' . "\n";
       $content .= "\t\t" . '<lastmod>'.date ("Y-m-d", filemtime($filename)).'</lastmod>' . "\n";
       $content .= "\t" . '</sitemap>' . "\n";
    } # end foreach
    $content .= '</sitemapindex>';
    return $this->SaveFile($content, 'index');
  } # end function

/**
 * Function to generate product sitemap data
 * author Bobby Easland
 * version 1.1
 * return boolean
 */
  function GenerateProductSitemap(){
    $quotes = (defined('QUOTES_CATEGORY_NAME') ? " and customers_email_address = '' and quotes_email_address = ''" : '');
    $sql = "SELECT p.products_id as pID, p.products_date_added as date_added, p.products_last_modified as last_mod, p.products_ordered
            FROM " . TABLE_PRODUCTS . " p, " . TABLE_CATEGORIES . " c, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where c.categories_status='1' and p.products_id = p2c.products_id and p2c.categories_id = c.categories_id and p.products_status='1'" . $quotes . "
            ORDER BY products_ordered DESC";
    if ( $products_query = tep_db_query($sql) ){
      $this->debug['QUERY']['PRODUCTS']['STATUS'] = 'success';
      $this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = tep_db_num_rows($products_query);
      $container = array();
      $number = 0;
      $top = 0;
      while( $result = tep_db_fetch_array($products_query) ){
        $top = max($top, $result['products_ordered']);
        $location = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $result['pID'], 'NONSSL', false);
        $lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
        $changefreq = GOOGLE_SITEMAP_PROD_CHANGE_FREQ;
        $ratio = $top > 0 ? $result['products_ordered']/$top : 0;
        $priority = $ratio < .1 ? .1 : number_format($ratio, 1, '.', '');
        $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                             'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                             'changefreq' => $changefreq,
                             'priority' => $priority
                             );
        if ( sizeof($container) >= 50000 ){
          $type = $number == 0 ? 'products' : 'products' . $number;
          $this->GenerateSitemap($container, $type);
          $container = array();
          $number++;
        }
      } # end while
      tep_db_free_result($products_query);
      if ( sizeof($container) > 0 ) {
        $type = $number == 0 ? 'products' : 'products' . $number;
        return $this->GenerateSitemap($container, $type);
      } # end if
    } else {
      $this->debug['QUERY']['PRODUCTS']['STATUS'] = 'false';
      $this->debug['QUERY']['PRODUCTS']['NUM_ROWS'] = '0';
    }
  } # end function

/**
 * Funciton to generate category sitemap data
 * author Bobby Easland
 * version 1.1
 * return boolean
 */
  function GenerateCategorySitemap(){
    $sql = "SELECT categories_id as cID, date_added, last_modified as last_mod
            FROM " . TABLE_CATEGORIES . " WHERE categories_status='1'
            ORDER BY parent_id ASC, sort_order ASC, categories_id ASC";
    if ( $categories_query = tep_db_query($sql) ){
      $this->debug['QUERY']['CATEOGRY']['STATUS'] = 'success';
      $this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = tep_db_num_rows($categories_query);
      $container = array();
      $number = 0;
      while( $result = tep_db_fetch_array($categories_query) ){
        $location = tep_href_link(FILENAME_DEFAULT, 'cPath=' . $this->GetFullcPath($result['cID']), 'NONSSL', false);
        $lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
        $changefreq = GOOGLE_SITEMAP_CAT_CHANGE_FREQ;
        $priority = .5;
        $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                             'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                             'changefreq' => $changefreq,
                             'priority' => $priority );
        if ( sizeof($container) >= 50000 ){
          $type = $number == 0 ? 'categories' : 'categories' . $number;
          $this->GenerateSitemap($container, $type);
          $container = array();
          $number++;
        }
      } # end while
      tep_db_free_result($categories_query);
      if ( sizeof($container) > 0 ) {
        $type = $number == 0 ? 'categories' : 'categories' . $number;
        return $this->GenerateSitemap($container, $type);
      } # end if
    } else {
      $this->debug['QUERY']['CATEOGRY']['STATUS'] = 'false';
      $this->debug['QUERY']['CATEOGRY']['NUM_ROWS'] = '0';
    }
  } # end function

/**
 * Funciton to generate manufacturer sitemap data
 * author Jack_mcs from Bobbys code
 * version 1.1
 * return boolean
 */
  function GenerateManufacturerSitemap(){
    $sql = "SELECT manufacturers_id as mID, date_added, last_modified as last_mod, manufacturers_name
            FROM " . TABLE_MANUFACTURERS . " order by manufacturers_name DESC";
    if ( $manufacturers_query = tep_db_query($sql) ){
      $this->debug['QUERY']['MANUFACTURERS']['STATUS'] = 'success';
      $this->debug['QUERY']['MANUFACTURERS']['NUM_ROWS'] = tep_db_num_rows($manufacturers_query);
      $container = array();
      $number = 0;
      while( $result = tep_db_fetch_array($manufacturers_query) ){
        $location = tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $result['mID'], 'NONSSL', false);
        $lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
        $changefreq = GOOGLE_SITEMAP_MAN_CHANGE_FREQ;
        $priority = .5;
        $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                             'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                             'changefreq' => $changefreq,
                             'priority' => $priority );
        if ( sizeof($container) >= 50000 ){
          $type = $number == 0 ? 'manufacturers' : 'manufacturers' . $number;
          $this->GenerateSitemap($container, $type);
          $container = array();
          $number++;
        }
      } # end while
      tep_db_free_result($manufacturers_query);
      if ( sizeof($container) > 0 ) {
        $type = $number == 0 ? 'manufacturers' : 'manufacturers' . $number;
        return $this->GenerateSitemap($container, $type);
      } # end if
    } else {
      $this->debug['QUERY']['MANUFACTURERS']['STATUS'] = 'false';
      $this->debug['QUERY']['MANUFACTURERS']['NUM_ROWS'] = '0';
    }
  } # end function

/**
 * Funciton to generate manufacturer sitemap data
 * author Jack_mcs from Bobbys code
 * version 1.1
 * return boolean
 */
  function GenerateSpecialsSitemap($languages_id){
        $sql = "SELECT p.products_id as pID, s.specials_date_added as date_added, s.specials_last_modified as last_mod, p.products_ordered
                FROM(((( " . TABLE_PRODUCTS . " p )left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on p.products_id = pd.products_id )left join " . TABLE_SPECIALS . " s on pd.products_id = s.products_id
                )left join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on p.products_id = p2c.products_id 
                )left join " . TABLE_CATEGORIES . " c on p2c.categories_id = c.categories_id
            where c.categories_status = '1' and p.products_status = '1' and s.status = '1' and pd.language_id = " . (int)$languages_id . " order by s.specials_date_added desc ";
    if ( $products_query = tep_db_query($sql) ){
      $this->debug['QUERY']['SPECIALS']['STATUS'] = 'success';
      $this->debug['QUERY']['SPECIALS']['NUM_ROWS'] = tep_db_num_rows($products_query);
      $container = array();
      $number = 0;
      $top = 0;
      while( $result = tep_db_fetch_array($products_query) ){
        $top = max($top, $result['products_ordered']);
        $location = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $result['pID'], 'NONSSL', false);
        $lastmod = tep_not_null($result['last_mod']) ? $result['last_mod'] : $result['date_added'];
        $changefreq = GOOGLE_SITEMAP_SPECIALS_CHANGE_FREQ;
        $ratio = $top > 0 ? $result['products_ordered']/$top : 0;
        $priority = $ratio < .1 ? .1 : number_format($ratio, 1, '.', '');
        $container[] = array('loc' => htmlspecialchars(utf8_encode($location)),
                             'lastmod' => date ("Y-m-d", strtotime($lastmod)),
                             'changefreq' => $changefreq,
                             'priority' => $priority
                             );
        if ( sizeof($container) >= 50000 ){
          $type = $number == 0 ? 'specials' : 'specials' . $number;
          $this->GenerateSitemap($container, $type);
          $container = array();
          $number++;
        }
      } # end while
      tep_db_free_result($products_query);
      if ( sizeof($container) > 0 ) {
        $type = $number == 0 ? 'specials' : 'specials' . $number;
        return $this->GenerateSitemap($container, $type);
      } # end if
    } else {
      $this->debug['QUERY']['SPECIALS']['STATUS'] = 'false';
      $this->debug['QUERY']['SPECIALS']['NUM_ROWS'] = '0';
    }
  } # end function

/**
 * Function to generate sitemap pages file
 * author Jack_mcs
 * version 1.1
 * return boolean
 */
  function GeneratePagesSitemap(){
    $container = array();
    $changefreq = GOOGLE_SITEMAP_PAGES_CHANGE_FREQ;
    $priority = '.1';
    include_once(DIR_WS_CLASSES . 'language.php');
    $lng = new language();
    $slash = substr(DIR_FS_CATALOG, 0 -1) == '/' ? 1 : 0;
    $path = (($pos = strpos(DIR_FS_CATALOG, "googlesitemap")) !== FALSE) ? substr(DIR_FS_CATALOG, 0, -strlen('googlesitemap') - $slash) : DIR_FS_CATALOG;
    $pages = $this->GetPagesArray($path, DIR_WS_LANGUAGES . $lng->language['directory'], $lng->language['id']);
    for ($i = 0; $i < count($pages); ++$i){
      $container[] = array('loc' => htmlspecialchars(utf8_encode($pages[$i]['filename'])),
                           'lastmod' => $pages[$i]['lastmod'],
                           'changefreq' => $changefreq,
                           'priority' => $priority );
    }

    if ($i > 0)
       return $this->GenerateSitemap($container, 'pages');
  } # end function

/**
 * Function to retrieve full cPath from category ID
 * author Bobby Easland
 * version 1.0
 * param mixed $cID Could contain cPath or single category_id
 * return string Full cPath string
 */
  function GetFullcPath($cID){
    if ( preg_match('/_/', $cID) ){
      return $cID;
    } else {
      $c = array();
      $this->GetParentCategories($c, $cID);
      $c = array_reverse($c);
      $c[] = $cID;
      $cID = sizeof($c) > 1 ? implode('_', $c) : $cID;
      return $cID;
    }
  } # end function

/**
 * Recursion function to retrieve parent categories from category ID
 * author Bobby Easland
 * version 1.0
 * param mixed $categories Passed by reference
 * param integer $categories_id
 */
  function GetParentCategories(&$categories, $categories_id) {
    $sql = "SELECT parent_id
            FROM " . TABLE_CATEGORIES . "
            WHERE categories_id='" . (int)$categories_id . "'";
    $parent_categories_query = tep_db_query($sql);
    while ($parent_categories = tep_db_fetch_array($parent_categories_query)) {
      if ($parent_categories['parent_id'] == 0) return true;
        $categories[sizeof($categories)] = $parent_categories['parent_id'];
      if ($parent_categories['parent_id'] != $categories_id) {
        $this->GetParentCategories($categories, $parent_categories['parent_id']);
      }
    }
  } # end function

/**
 * Utility function to generate the submit URL
 * author Bobby Easland
 * version 1.0
 * return string
 */
  function GenerateSubmitURL(){
    $url = urlencode($this->base_url . 'sitemapindex.xml');
    return htmlspecialchars(utf8_encode('http://www.google.com/webmasters/sitemaps/ping?sitemap=' . $url));
  } # end function

  function GetPagesArray($locn, $languagesDir, $languageID)
  {
    $cwd = getcwd();
    $pagesArray = array();
    $end =  (substr($locn, strlen($locn) - 1) !== '/') ? '/' : '';
    $root = $locn . $end;
    $path = $root . $languagesDir;
    $end =  (substr($path, strlen($path) - 1) !== '/') ? '/' : '';
    $path = $path . $end;
    chdir ($path);
    $listphp=array();
    searchFile(DIR_FS_CATALOG, 'php', $listphp);
    foreach ( $listphp as $filename ) {
      if (! in_array($filename, $this->excludeList) && $this->IsViewableGoogle($root . $filename)){
        $r = stat($filename);
        $displayName = ucwords(str_replace("_", " ", substr($filename, 0, strpos($filename, ".")))); //remove the .php and underscores
        $pagesArray[] = array('filename' => $this->base_url . $filename,
                              'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));
        /*** ADD INFORMATION PAGES ***/
        if ($filename === 'information.php'){
          $sql = "SELECT information_id from " . TABLE_INFORMATION . " where visible = '1' and language_id = '" . (int)$languageID . "'";
          if ( $information_query = tep_db_query($sql) ){
            while( $result = tep_db_fetch_array($information_query) ){
                $pagesArray[] = array('filename' => tep_href_link('information.php', 'info_id=' . $result['information_id'], 'NONSSL', false),
                                      'lastmod' => gmstrftime ("%Y-%m-%d", $r[9]));
            }
          }
        }
      }
    }
    chdir ($cwd);
    return $pagesArray;
  }

} #  end class
?>
Rispondi