source: pmb4.2/trunk/fuentes/pmb/includes/rss_func.inc.php @ 828

Last change on this file since 828 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 5.5 KB
Line 
1<?php 
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: rss_func.inc.php,v 1.8.2.1 2015-09-11 08:53:13 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9// --------- funtion affichage RSS, reçoit fichier XML
10function affiche_rss($id_rss=0) {
11
12        $req_rss = "select lien, eformat from notices where notice_id='$id_rss' " ;
13        $res_rss = pmb_mysql_query($req_rss);
14        $rss = pmb_mysql_fetch_object($res_rss);
15       
16        $rss_lien = $rss->lien;
17        $rss_lu = explode(' ', $rss->eformat) ;
18        $rss_time = $rss_lu[1] ;
19
20        if ($rss_time=='0' || !$rss_time) return affiche_rss_from_url($rss->lien) ;
21        else {
22                $req_content = "select if(sysdate()<date_add(rss_last, interval $rss_time minute), rss_content, null) as contenu, if(sysdate()<date_add(rss_last, interval $rss_time minute), rss_content_parse, null) as contenu_parse from rss_content where rss_id='$id_rss' " ;
23                $res_content = pmb_mysql_query($req_content);
24                if ($content = pmb_mysql_fetch_object($res_content)) {
25                        // on a trouvé un truc dans la table
26                        if ($content->contenu) {
27                                $etat_cache_rss = 1 ;
28                        } else {
29                                // truc trouvé mais périmé
30                                $etat_cache_rss = 2 ;
31                        }
32                } else {
33                        // même pas trouvé
34                        $etat_cache_rss = 0 ; 
35                }
36                switch ($etat_cache_rss) {
37                        case 1 :
38                                // return affiche_rss_from_fichier($content->contenu) ;
39                                return $content->contenu_parse ;
40                                break ;
41                        case 2 :
42                                $fichier = lit_fichier_rss($rss_lien) ;
43                                $contenu_parse = affiche_rss_from_fichier($fichier);
44                                $rq = "update rss_content set rss_content='".addslashes($fichier)."', rss_content_parse='".addslashes($contenu_parse)."' where rss_id=$id_rss ";
45                                pmb_mysql_query($rq);
46                                return $contenu_parse ;
47                                break ;
48                        case 0 :
49                                $fichier = lit_fichier_rss($rss_lien) ;
50                                $contenu_parse = affiche_rss_from_fichier($fichier);
51                                $rq = "insert into rss_content set rss_id=$id_rss, rss_content='".addslashes($fichier)."', rss_content_parse='".addslashes($contenu_parse)."' ";
52                                pmb_mysql_query($rq);
53                                return $contenu_parse ;
54                                break ;
55                }
56        }       
57}
58
59function lit_fichier_rss($url_fichier) {
60        global $opac_curl_available, $pmb_curl_timeout;
61       
62        $res="";
63        if ($opac_curl_available) {
64                $timeout=($pmb_curl_timeout*1 ? $pmb_curl_timeout*1 : 5);
65                $ch = curl_init($url_fichier);
66                curl_setopt($ch, CURLOPT_HEADER, false);
67                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
68                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
69                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
70                configurer_proxy_curl($ch,$url_fichier);
71                $res=curl_exec($ch);
72                curl_close($ch);
73        } else {
74                $fp=fopen($url_fichier,"r");
75                if ($fp) {
76                        while (!feof($fp)) $res.=fread($fp,2048);
77                        fclose($fp);
78                }
79        }
80
81        return $res;
82}
83
84// --------- funtion affichage RSS, reçoit URL fichier XML
85function affiche_rss_from_url($url_fichier="") {
86
87        $fp=lit_fichier_rss($url_fichier) ;
88        if ($fp) {
89                $red=true;
90                $content=str_replace("&nbsp;"," ",$fp);
91                //Parse du fichier
92                $param=_parser_text_no_function_($content);
93                if (is_array($param)) {
94                        list($forme,$val)=each($param);
95                        $param=$val[0];
96                        for ($j=0; $j<count($param["CHANNEL"]); $j++) {
97                                $current=$param["CHANNEL"][$j];
98                                $articles.="<div class='row'>";
99                                if ($current["IMAGE"][0]) $articles.="<a href='".$current["IMAGE"][0]["LINK"][0]["value"]."' target='_blank'><img src='".$current["IMAGE"][0]["URL"][0]["value"]."' border='0' alt='".$current["IMAGE"][0]["TITLE"][0]["value"]."' title='".$current["IMAGE"][0]["TITLE"][0]["value"]."' align='center'></a>&nbsp;";
100                                $articles.="<b>".$current["TITLE"][0]["value"]."</b>";
101                                if (strpos($forme,"RDF")!==false) $current=$param;
102                                $articles.="<ul class='rss_section'>";
103                                for ($k=0; $k<count($current["ITEM"]); $k++) {
104                                        $articles.="<li class='rss_articles'>";
105                                        $item=$current["ITEM"][$k];
106                                        $articles.="<p><i><a href='".$item["LINK"][0]["value"]."' target='_blank'>".$item["TITLE"][0]["value"]."</a></i></p><div class='rss_descriptions'>".$item["DESCRIPTION"][0]["value"]."</div>";
107                                        $articles.="</li>";
108                                }
109                                $articles.="<div style='clear:both;'></div></ul>";
110                                $articles.="</div>";
111                        }
112                }
113        }
114        return $articles;               
115}
116
117// --------- funtion affichage RSS, reçoit fichier XML
118function affiche_rss_from_fichier($fichier="") {
119
120        $content = $fichier ;
121        $content=str_replace("&nbsp;"," ",$content);
122        //Parse du fichier
123        $param=_parser_text_no_function_($content);
124        if (is_array($param)) {
125                list($forme,$val)=each($param);
126                $param=$val[0];
127                for ($j=0; $j<count($param["CHANNEL"]); $j++) {
128                        $current=$param["CHANNEL"][$j];
129                        $articles.="<div class='row'>";
130                        if ($current["IMAGE"][0]) $articles.="<a href='".$current["IMAGE"][0]["LINK"][0]["value"]."' target='_blank'><img src='".$current["IMAGE"][0]["URL"][0]["value"]."' border='0' alt='".$current["IMAGE"][0]["TITLE"][0]["value"]."' title='".$current["IMAGE"][0]["TITLE"][0]["value"]."' align='center'></a>&nbsp;";
131                        $articles.="<b>".$current["TITLE"][0]["value"]."</b>";
132                        if (strpos($forme,"RDF")!==false) $current=$param;
133                        $articles.="<ul class='rss_section'>";
134                        for ($k=0; $k<count($current["ITEM"]); $k++) {
135                                $articles.="<li class='rss_articles'>";
136                                $item=$current["ITEM"][$k];
137                                $articles.="<p><i><a href='".$item["LINK"][0]["value"]."' target='_blank'>".$item["TITLE"][0]["value"]."</a></i></p><div class='rss_descriptions'>".$item["DESCRIPTION"][0]["value"]."</div>";
138                                $articles.="</li>";
139                        }
140                        $articles.="<div style='clear:both;'></div></ul>";
141                        $articles.="</div>";
142                }
143        }
144        return $articles;               
145}
146
Note: See TracBrowser for help on using the repository browser.