';
+ require('class/lastRSS.php');
+ $rss = new lastRSS;
+ // options lastRSS
+ $rss->cache_dir = './cache'; // dossier pour le cache
+ $rss->cache_time = 3600; // fréquence de mise à jour du cache (en secondes)
+ $rss->date_format = 'd/m/y'; // format de la date (voir fonction date() pour syntaxe)
+ $rss->CDATA = 'content'; // on retire les tags CDATA en conservant leur contenu
+ if($linksXML = simplexml_load_file('db/rss.xml')){
+ foreach($linksXML->link as $individualLink){
+ if ($rs = $rss->get($individualLink->url))
+ echo ''.$rs['items'][0]['pubDate'].''.$rs['items'][0]['title'].' ';
+ else
+ echo 'Flux RSS non trouvé';
+ }
+ }
+ echo '
';
+ }
+
+ private function setParams($params){
+ $this->params = $params;
+ }
+
+ public static function start($params){
+ $rssblogs = new rssblogs($params);
+ }
+
+ public function setX($x){
+ // Saving the position and z-index of the note:
+ $xmla = simplexml_load_file('../'.AccueilModules::CONFIG_FILE);
+
+ $path = $xmla->xpath("//item[@id='weather']");
+ $path[0]->x = $x;
+
+ $xmla->asXML('../'.AccueilModules::CONFIG_FILE);
+
+ echo "ok";
+ }
+
+ public function setY($y){
+ // Saving the position and z-index of the note:
+ $xmla = simplexml_load_file('../'.AccueilModules::CONFIG_FILE);
+
+ $path = $xmla->xpath("//item[@id='weather']");
+ $path[0]->y = $y;
+
+ $xmla->asXML('../'.AccueilModules::CONFIG_FILE);
+
+ echo "ok";
+ }
+
+ public function setVisibility($visibility){
+ // Saving the position and z-index of the note:
+ $xmla = simplexml_load_file('../'.AccueilModules::CONFIG_FILE);
+
+ $path = $xmla->xpath("//item[@id='weather']");
+ $path[0]->visibility = $visibility;
+
+ $xmla->asXML('../'.AccueilModules::CONFIG_FILE);
+
+ echo "ok";
+ }
+
+ public static function updateConfig($updated){
+ foreach ($updated as $what=>$withWhat){
+ if(in_array($what, self::$paramsList)){
+ call_user_func(array(get_class(), "set".ucfirst($what)), $withWhat);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/class/lastRSS.php b/class/lastRSS.php
new file mode 100644
index 0000000..c4167cc
--- /dev/null
+++ b/class/lastRSS.php
@@ -0,0 +1,220 @@
+cache_dir != '') {
+ $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url);
+ $timedif = @(time() - filemtime($cache_file));
+ if ($timedif < $this->cache_time) {
+ // cached file is fresh enough, return cached array
+ $result = unserialize(join('', file($cache_file)));
+ // set 'cached' to 1 only if cached file is correct
+ if ($result) $result['cached'] = 1;
+ } else {
+ // cached file is too old, create new
+ $result = $this->Parse($rss_url);
+ $serialized = serialize($result);
+ if ($f = @fopen($cache_file, 'w')) {
+ fwrite ($f, $serialized, strlen($serialized));
+ fclose($f);
+ }
+ if ($result) $result['cached'] = 0;
+ }
+ }
+ // If CACHE DISABLED >> load and parse the file directly
+ else {
+ $result = $this->Parse($rss_url);
+ if ($result) $result['cached'] = 0;
+ }
+ // return result
+ return $result;
+ }
+
+ // -------------------------------------------------------------------
+ // Modification of preg_match(); return trimed field with index 1
+ // from 'classic' preg_match() array output
+ // -------------------------------------------------------------------
+ function my_preg_match ($pattern, $subject) {
+ // start regullar expression
+ preg_match($pattern, $subject, $out);
+
+ // if there is some result... process it and return it
+ if(isset($out[1])) {
+ // Process CDATA (if present)
+ if ($this->CDATA == 'content') { // Get CDATA content (without CDATA tag)
+ $out[1] = strtr($out[1], array(''', ']]>'=>''));
+ } elseif ($this->CDATA == 'strip') { // Strip CDATA
+ $out[1] = strtr($out[1], array(''', ']]>'=>''));
+ }
+
+ // If code page is set convert character encoding to required
+ if ($this->cp != '')
+ //$out[1] = $this->MyConvertEncoding($this->rsscp, $this->cp, $out[1]);
+ $out[1] = iconv($this->rsscp, $this->cp.'//TRANSLIT', $out[1]);
+ // Return result
+ return trim($out[1]);
+ } else {
+ // if there is NO result, return empty string
+ return '';
+ }
+ }
+
+ // -------------------------------------------------------------------
+ // Replace HTML entities &something; by real characters
+ // -------------------------------------------------------------------
+ function unhtmlentities ($string) {
+ // Get HTML entities table
+ $trans_tbl = get_html_translation_table (HTML_ENTITIES, ENT_QUOTES);
+ // Flip keys<==>values
+ $trans_tbl = array_flip ($trans_tbl);
+ // Add support for ' entity (missing in HTML_ENTITIES)
+ $trans_tbl += array(''' => "'");
+ // Replace entities by values
+ return strtr ($string, $trans_tbl);
+ }
+
+ // -------------------------------------------------------------------
+ // Parse() is private method used by Get() to load and parse RSS file.
+ // Don't use Parse() in your scripts - use Get($rss_file) instead.
+ // -------------------------------------------------------------------
+ function Parse ($rss_url) {
+ // Open and load RSS file
+ if ($f = @fopen($rss_url, 'r')) {
+ $rss_content = '';
+ while (!feof($f)) {
+ $rss_content .= fgets($f, 4096);
+ }
+ fclose($f);
+
+ // Parse document encoding
+ $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
+ // if document codepage is specified, use it
+ if ($result['encoding'] != '')
+ { $this->rsscp = $result['encoding']; } // This is used in my_preg_match()
+ // otherwise use the default codepage
+ else
+ { $this->rsscp = $this->default_cp; } // This is used in my_preg_match()
+
+ // Parse CHANNEL info
+ preg_match("'(.*?)'si", $rss_content, $out_channel);
+ foreach($this->channeltags as $channeltag)
+ {
+ $temp = $this->my_preg_match("'<$channeltag.*?>(.*?)$channeltag>'si", $out_channel[1]);
+ if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty
+ }
+ // If date_format is specified and lastBuildDate is valid
+ if ($this->date_format != '' && ($timestamp = strtotime($result['lastBuildDate'])) !==-1) {
+ // convert lastBuildDate to specified date format
+ $result['lastBuildDate'] = date($this->date_format, $timestamp);
+ }
+
+ // Parse TEXTINPUT info
+ preg_match("']*[^/])>(.*?)'si", $rss_content, $out_textinfo);
+ // This a little strange regexp means:
+ // Look for tag with or without any attributes, but skip truncated version (it's not beggining tag)
+ if (isset($out_textinfo[2])) {
+ foreach($this->textinputtags as $textinputtag) {
+ $temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)$textinputtag>'si", $out_textinfo[2]);
+ if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty
+ }
+ }
+ // Parse IMAGE info
+ preg_match("'(.*?)'si", $rss_content, $out_imageinfo);
+ if (isset($out_imageinfo[1])) {
+ foreach($this->imagetags as $imagetag) {
+ $temp = $this->my_preg_match("'<$imagetag.*?>(.*?)$imagetag>'si", $out_imageinfo[1]);
+ if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty
+ }
+ }
+ // Parse ITEMS
+ preg_match_all("'(.*?)'si", $rss_content, $items);
+ $rss_items = $items[2];
+ $i = 0;
+ $result['items'] = array(); // create array even if there are no items
+ foreach($rss_items as $rss_item) {
+ // If number of items is lower then limit: Parse one item
+ if ($i < $this->items_limit || $this->items_limit == 0) {
+ foreach($this->itemtags as $itemtag) {
+ $temp = $this->my_preg_match("'<$itemtag.*?>(.*?)$itemtag>'si", $rss_item);
+ if ($temp != '') $result['items'][$i][$itemtag] = $temp; // Set only if not empty
+ }
+ // Strip HTML tags and other bullshit from DESCRIPTION
+ if ($this->stripHTML && $result['items'][$i]['description'])
+ $result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description'])));
+ // Strip HTML tags and other bullshit from TITLE
+ if ($this->stripHTML && $result['items'][$i]['title'])
+ $result['items'][$i]['title'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['title'])));
+ // If date_format is specified and pubDate is valid
+ if ($this->date_format != '' && ($timestamp = strtotime($result['items'][$i]['pubDate'])) !==-1) {
+ // convert pubDate to specified date format
+ $result['items'][$i]['pubDate'] = date($this->date_format, $timestamp);
+ }
+ // Item counter
+ $i++;
+ }
+ }
+
+ $result['items_count'] = $i;
+ return $result;
+ }
+ else // Error in opening return False
+ {
+ return False;
+ }
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/css/rssblogs.css b/css/rssblogs.css
new file mode 100644
index 0000000..f337bc1
--- /dev/null
+++ b/css/rssblogs.css
@@ -0,0 +1,18 @@
+#rssblogs {padding:5px;width:350px;-webkit-border-radius: 5px;
+ -moz-border-radius: 5px;border: 1px solid rgba(0,0,0,0.3);
+ -webkit-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: 0px 3px 3px rgba(0, 0, 0, 0.15);
+ overflow:hidden;}
+
+
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; background-position: -80px -224px;background-image: url(../images/interface/ui-icons_888888_256x240.png);}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
\ No newline at end of file
diff --git a/db/config.xml b/db/config.xml
index ffe9c0f..a10fc7c 100644
--- a/db/config.xml
+++ b/db/config.xml
@@ -8,35 +8,40 @@
trueParis
- 488
- 658
+ 495
+ 465true
- false
+ truetrue
- true
- 79
- 137
+ false
+ 478
+ 73true
- 130
- 138
+ 30
+ -4true8010
- Times New Roman, serial
+ Times New Roman, serif20px%A %d %B %Y - %H:%M:%S#000
+
+ true
+ 478
+ 73
+
diff --git a/db/rss.xml b/db/rss.xml
new file mode 100644
index 0000000..49b2dfe
--- /dev/null
+++ b/db/rss.xml
@@ -0,0 +1,15 @@
+
+
+
+ PenelopeBagieu
+ http://feeds.feedburner.com/BlogPenelopeJolicoeur
+
+
+ CyanideAndHapiness
+ http://feeds.feedburner.com/Explosm
+
+
+ MargauxMotin
+ http://margauxmotin.typepad.fr/margaux_motin/rss.xml
+
+
\ No newline at end of file