More queries now depends on UNIX_TIMESTAMP() SQL function, wrong index in autopurge...
[mailer.git] / inc / rdf.class.php
index f0efb0c91aabb1fb786df278db77f66a30eebafd..36cda4dd0e26f5c797459455123bfc6a8856c232 100644 (file)
@@ -447,16 +447,16 @@ class fase4_rdf {
     * This Method avtually parses the XML data.
     *
     * @access    private
-       * @author    Stefan Saasen <s@fase4.com>
+    * @author    Stefan Saasen <s@fase4.com>
     * @param     string $data    RDF File XML Data
-       * @see           _clear_Items()
+    * @see       _clear_Items()
     */
     function _parse_xRDF( $data )
     {
         $this->_clear_Items();
         $xml_parser = xml_parser_create();
         xml_set_object($xml_parser,$this);
-               xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
+        xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
         xml_set_element_handler($xml_parser, "_startElement", "_endElement");
         xml_set_character_data_handler($xml_parser, "_parseData");
         if (!xml_parse($xml_parser, trim($data))) {
@@ -619,16 +619,16 @@ class fase4_rdf {
             $this->_parse_mode = "all";
         }
 
-        if( !isset( $this->_depth[$parser] ) ) {
-            $this->_depth[$parser] = 0;
+        if( !isset( $this->_depth[$this->get_parser_id($parser)] ) ) {
+            $this->_depth[$this->get_parser_id($parser)] = 0;
         }
-        $this->_depth[$parser]++;
+        $this->_depth[$this->get_parser_id($parser)]++;
         array_push($this->_tags, $name);
 
-        if( !isset( $this->_cdepth[$parser] ) ) {
-            $this->_cdepth[$parser] = 0;
+        if( !isset( $this->_cdepth[$this->get_parser_id($parser)] ) ) {
+            $this->_cdepth[$this->get_parser_id($parser)] = 0;
         }
-        $this->_cdepth[$parser]++;
+        $this->_cdepth[$this->get_parser_id($parser)]++;
         array_push($this->_ctags, $name);
     }   // END _startElement()
 
@@ -686,9 +686,9 @@ class fase4_rdf {
     */
     function _endElement($parser, $name) {
         array_pop($this->_tags);
-        $this->_depth[$parser]--;
+        $this->_depth[$this->get_parser_id($parser)]--;
         array_pop($this->_ctags);
-        $this->_cdepth[$parser]--;
+        $this->_cdepth[$this->get_parser_id($parser)]--;
         $this->_item["link"] = trim($this->_item["link"]);
           if ((!empty($this->_display_opt["refid"])) && (!empty($this->_item["link"])))
           {
@@ -850,6 +850,27 @@ class fase4_rdf {
         return $this->_array_textinput;
     }
 
+       /**
+       * Getter for parser id from resource
+       *
+       * @access private
+       * @author       Roland Haeder <webmaster@mxchange.org>
+       * @return       int
+       */
+       function get_parser_id ($parser) {
+               // Default is zero
+               $id = 0;
+
+               // Is it a resource?
+               if (is_resource($parser)) {
+                       // Cast the resource into id
+                       $id = (int) $parser;
+               } // END - if
+
+               // Return the id
+               return $id;
+       }
+
     /**
     * This Method returns the data from <image />.
     *
@@ -890,17 +911,17 @@ class fase4_rdf {
         if ($clean) {
             $text = preg_replace("/^\s+/", "", $text)."\n";
                 if($this->_parse_mode == "all") {
-                        if ( isset($this->_item[$this->_tags[$this->_depth[$parser]]]) &&
-                            $this->_item[$this->_tags[$this->_depth[$parser]]] ) {
-                           $this->_item[$this->_tags[$this->_depth[$parser]]] .= $text;
+                        if ( isset($this->_item[$this->_tags[$this->_depth[$this->get_parser_id($parser)]]]) &&
+                            $this->_item[$this->_tags[$this->_depth[$this->get_parser_id($parser)]]] ) {
+                           $this->_item[$this->_tags[$this->_depth[$this->get_parser_id($parser)]]] .= $text;
                         } else {
-                           $this->_item[$this->_tags[$this->_depth[$parser]]] = $text;
+                           $this->_item[$this->_tags[$this->_depth[$this->get_parser_id($parser)]]] = $text;
                         }
                 } elseif (isset($this->_parse_mode) && $this->_parse_mode == "channel") {
-                        if ( isset($this->_citem[$this->_ctags[$this->_cdepth[$parser]]]) ) {
-                           $this->_citem[$this->_ctags[$this->_cdepth[$parser]]] .= $text;
+                        if ( isset($this->_citem[$this->_ctags[$this->_cdepth[$this->get_parser_id($parser)]]]) ) {
+                           $this->_citem[$this->_ctags[$this->_cdepth[$this->get_parser_id($parser)]]] .= $text;
                         } else {
-                           $this->_citem[$this->_ctags[$this->_cdepth[$parser]]] = $text;
+                           $this->_citem[$this->_ctags[$this->_cdepth[$this->get_parser_id($parser)]]] = $text;
                         }
                 }
         }
@@ -1140,15 +1161,14 @@ class fase4_rdf {
     {
         $dir = dir($this->_cache_dir);
         while($file=$dir->read()) {
-            if($file!="." && $file!="..")  {
+            // Exclude directories
+            if (is_file($dir->path.$file) && substr($file, -6, 6) != ".cache" && substr($file, -4, 4) != ".log")  {
                 if(!@unlink($dir->path.$file)) {
-                    $this->_throw_exception(
-                    "Unable to unlink ".$dir->path.$file
-                    ."<br /><br />Exception at Line: ".__LINE__ );
+                    $this->_throw_exception("Unable to unlink ".$dir->path.$file."<br />\n<br />\nException at Line: ".__LINE__ );
                     return false;
-                }
-            }
-        }
+                } // END - if
+            } // END - if
+        } // END - while
         $dir->close();
         return true;
     }   // END clear_cache()
@@ -1164,8 +1184,8 @@ class fase4_rdf {
     function _cut_string( $string, $str_len = "30" )
     {
         if(strlen(trim($string))>$str_len) {
-        $string = substr( trim($string) , 0, $str_len - 4);
-        $string .= " ...";
+            $string = substr( trim($string) , 0, $str_len - 4);
+            $string .= " ...";
         }
         return $string;
     }   // END _cut_string()
@@ -1183,9 +1203,9 @@ class fase4_rdf {
         if (rand(1, 100) <= $this->gc_probability) {
             $dir = dir($this->_cache_dir);
             while($file=$dir->read()) {
-                if($file!="." AND $file!=".." AND filemtime($dir->path.$file) <= time() - $this->_refresh )  {
-                @unlink($dir->path.$file);
-                }
+                if (is_file($dir->path.$file) && substr($file, -6, 6) != ".cache" && substr($file, -4, 4) != ".log" && filemtime($dir->path.$file) <= time() - $this->_refresh )  {
+                    @unlink($dir->path.$file);
+                } // END - if
         }
         $dir->close();
         }   // END if