Browse Source

#42 - Evolution : Afficher Feed en erreur lors de la dernière synchro.

cobalt74 7 years ago
parent
commit
f37d1a92e8

+ 5 - 1
Feed.class.php

@@ -8,7 +8,7 @@
 
 class Feed extends MysqlEntity{
 
-    protected $id,$name,$url,$events=array(),$description,$website,$folder,$lastupdate,$isverbose;
+    protected $id,$name,$url,$events=array(),$description,$website,$folder,$lastupdate,$isverbose,$lastSyncInError;
     protected $TABLE_NAME = 'feed';
     protected $CLASS_NAME = 'Feed';
     protected $object_fields =
@@ -21,6 +21,7 @@ class Feed extends MysqlEntity{
         'lastupdate'=>'string',
         'folder'=>'integer',
         'isverbose'=>'boolean',
+        'lastSyncInError'=>'boolean',
     );
 
     protected $object_fields_index =
@@ -50,6 +51,7 @@ class Feed extends MysqlEntity{
     }
 
     function getError() { return $this->error; }
+    function getLastSyncInError() { return $this->lastSyncInError; }
 
     /*@TODO: fournir un extrait quand il 'y a pas de description. De même pour les médias.
     @TODO: SimplePie remplace "é" par "é", il ne devrait pas le faire.
@@ -77,8 +79,10 @@ class Feed extends MysqlEntity{
         $feed->force_feed($forceFeed);
         $feed->set_feed_url($this->url);
         $feed->set_useragent('Mozilla/4.0 Leed (LightFeed Agrgegator) '.VERSION_NAME.' by idleman http://projet.idleman.fr/leed');
+        $this->lastSyncInError = 0;
         if (!$feed->init()) {
             $this->error = $feed->error;
+            $this->lastSyncInError = 1;
             $this->lastupdate = $_SERVER['REQUEST_TIME'];
             $this->save();
             return false;

+ 3 - 1
index.php

@@ -25,7 +25,9 @@ $tpl->assign('allFeeds',$allFeeds);
 $tpl->assign('allFeedsPerFolder',$allFeeds['folderMap']);
 //recuperation de tous les event nons lu par dossiers
 $tpl->assign('allEvents',$eventManager->getEventCountPerFolder());
-
+//utilisé pour récupérer le statut d'un feed dans le template (en erreur ou ok)
+$feedState = new Feed();
+$tpl->assign('feedState',$feedState);
 
 $articleDisplayContent = $configurationManager->get('articleDisplayContent');
 $articleView = $configurationManager->get('articleView');

+ 2 - 1
locale/en.json

@@ -57,8 +57,8 @@
  "FORCE_INTEGRATION_DESC":"RSS and Atom feeds are supposed to have specific MIME ypes to allow the softwares to identify them. Some feeds don't follow the rules (for example text/plain). By default SimplePie follows the best pratices, but you can still force the integration with this option. ",
  "FULL":"Complete",
  "FULL_SYNCHRONISATION":"Complete synchronization…",
- "GENERAL_FOLDER":"General",
  "GENERALITY":"Generality",
+ "GENERAL_FOLDER":"General",
  "GIT_REPOSITORY":"Git repository",
  "GOOD":"good",
  "GRADUATE_SYNCHRONISATION":"Graduated synchronization",
@@ -175,6 +175,7 @@
  "SYNCHRONISATION":"Synchronization",
  "SYNCHRONISATION_CODE":"Synchronization code",
  "SYNCHRONISATION_COMPLETE":"Synchronization finished.",
+ "SYNCHRONISATION_ERROR":"Error of the last synchronization",
  "SYNCHRONISATION_OPTION":"Synchronization options",
  "SYNCHRONISATION_TYPE":"Synchronization type",
  "SYNCHRONIZE_COFFEE_TIME":"NB : The synchronization can take time, leave your browser do the job and go grab a coffee :).",

+ 3 - 2
locale/es.json

@@ -57,8 +57,8 @@
  "FORCE_INTEGRATION_DESC":"Los RSS y Atom deben tener tipos MIME asociados especificados para que el script sepa de que tipo de datos se trata. Algunos RSS no siguen estas reglas (por ejemplo text/plain). SimplePie sigue las mejoras practicas por defecto, pero se puede forzar la integración con este parámetro.",
  "FULL":"Completo",
  "FULL_SYNCHRONISATION":"Syncronización completa…",
- "GENERAL_FOLDER":"General",
  "GENERALITY":"Generalidades",
+ "GENERAL_FOLDER":"General",
  "GIT_REPOSITORY":"Repositorio Git",
  "GOOD":"bueno(s)",
  "GRADUATE_SYNCHRONISATION":"Syncronización gradual",
@@ -175,6 +175,7 @@
  "SYNCHRONISATION":"Syncronisación",
  "SYNCHRONISATION_CODE":"Código de syncronisación",
  "SYNCHRONISATION_COMPLETE":"Syncronisación terminada.",
+ "SYNCHRONISATION_ERROR":"Error de la última sincronización",
  "SYNCHRONISATION_OPTION":"Opciones de syncronisación",
  "SYNCHRONISATION_TYPE":"Tipo de syncronisación",
  "SYNCHRONIZE_COFFEE_TIME":"NB : La syncronisación puede tomar cierto tiempo, deje su navegador y vaya tomarse un cafe. :)",
@@ -193,4 +194,4 @@
  "YOU_MUST_BE_CONNECTED_FEED":"Usted debe haber iniciado una sesión para ver sus RSS.",
  "YOU_MUST_BE_CONNECTED_PLUGIN":"Usted debe haber iniciado una sesión para ver los complementos.",
  "YOU_MUST_BE_LOGGED":"Usted debe haber iniciado una sesión para ver sus RSS."
-}
+}

+ 3 - 2
locale/fr.json

@@ -57,8 +57,8 @@
  "FORCE_INTEGRATION_DESC":"Les flux RSS et Atom sont censés avoir des types MIME associés spécifiques afin que le logiciel sache quel type de données il s’agit. Certains flux ne suivent pas ces règles (par exemple text/plain). SimplePie suit les meilleures pratiques par défaut, mais vous pouvez forcer l’intégration avec ce paramètre.",
  "FULL":"Complet",
  "FULL_SYNCHRONISATION":"Synchronisation complète…",
- "GENERAL_FOLDER":"Générale",
  "GENERALITY":"Généralités",
+ "GENERAL_FOLDER":"Générale",
  "GIT_REPOSITORY":"Dépôt Git",
  "GOOD":"bon(s)",
  "GRADUATE_SYNCHRONISATION":"Synchronisation graduée",
@@ -175,6 +175,7 @@
  "SYNCHRONISATION":"Synchronisation",
  "SYNCHRONISATION_CODE":"Code de synchronisation",
  "SYNCHRONISATION_COMPLETE":"Synchronisation terminée.",
+ "SYNCHRONISATION_ERROR":"Erreur lors de la dernière synchronisation",
  "SYNCHRONISATION_OPTION":"Options de synchronisation",
  "SYNCHRONISATION_TYPE":"Type de synchronisation",
  "SYNCHRONIZE_COFFEE_TIME":"NB : La synchronisation peut prendre un certain temps, laissez votre navigateur tourner et allez vous prendre un café. :)",
@@ -193,4 +194,4 @@
  "YOU_MUST_BE_CONNECTED_FEED":"Vous devez être connecté pour voir vos flux.",
  "YOU_MUST_BE_CONNECTED_PLUGIN":"Vous devez être connecté pour voir les plugins.",
  "YOU_MUST_BE_LOGGED":"Vous devez être connecté pour consulter vos flux"
-}
+}

+ 4 - 0
templates/marigolds/css/style.css

@@ -590,6 +590,10 @@ footer a,#main aside a{
     color:#ffffff;
 }
 
+#main article a.inError {
+    color:#ffffff;
+}
+
 .sync{
     padding-left:10px;
 }

+ 19 - 3
templates/marigolds/index.html

@@ -100,7 +100,11 @@
                                         {if="$displayOnlyUnreadFeedFolder=='true'"}
                                         <!-- Affichage des feeds ayant des articles non lus -->
                                             {if="isset($unread[$value2['id']])"}
+                                                {if="$feedState->getById($value2['id'])->getLastSyncInError()==0"}
                                                 <li>
+                                                {else}
+                                                <li class="errorSync" title="{function="_t('SYNCHRONISATION_ERROR')"}">
+                                                {/if}
                                                     {function="Plugin::callHook("menu_pre_feed_link", array(&$value))"}                                             <a href="index.php?action=selectedFeed&amp;feed={$value2['id']}" title="{$value2['url']}">{function="Functions::truncate($value2['name'],37)"} </a>
                                                     <button class="right" style="margin:5px 0 0 10px;" onclick="if(confirm('{function="_t('CONFIRM_MARK_FEED_AS_READ')"}'))window.location='action.php?action=readAll&amp;feed={$value2['id']}';">
                                                         <span title="{function="_t('MARK_AS_READ')"}">{$unread[$value2['id']]}</span>
@@ -109,7 +113,11 @@
                                                 </li>
                                             {else}
                                                 <!-- On cache les feeds n'ayant pas d'article non lus -->
-                                                <li class="hidefeed" style="display:none;">
+                                                    {if="$feedState->getById($value2['id'])->getLastSyncInError()==0"}
+                                                    <li class="hidefeed" style="display:none;">
+                                                    {else}
+                                                    <li class="hidefeed errorSync" style="display:none;" title="{function="_t('SYNCHRONISATION_ERROR')"}">
+                                                    {/if}
                                                     {function="Plugin::callHook("menu_pre_feed_link", array(&$value))"}                                             <a href="index.php?action=selectedFeed&amp;feed={$value2['id']}" title="{$value2['url']}">{function="Functions::truncate($value2['name'],37)"} </a>
                                                     {if="isset($unread[$value2['id']])"}
                                                     <button class="right" style="margin:5px 0 0 10px;" onclick="if(confirm('{function="_t('CONFIRM_MARK_FEED_AS_READ')"}'))window.location='action.php?action=readAll&amp;feed={$value2['id']}';">
@@ -122,9 +130,17 @@
 									    {else}
                                         <!-- Affichage de tous les feeds -->
                                             {if="isset($unread[$value2['id']])"}
-                                            <li>
+                                                {if="$feedState->getById($value2['id'])->getLastSyncInError()==0"}
+                                                <li>
+                                                {else}
+                                                <li class="errorSync" title="{function="_t('SYNCHRONISATION_ERROR')"}">
+                                                {/if}
                                             {else} <!-- On affiche même ceux qui non pas d'article non lus -->
-                                            <li class="hidefeed">
+                                                {if="$feedState->getById($value2['id'])->getLastSyncInError()==0"}
+                                                <li class="hidefeed">
+                                                {else}
+                                                <li class="hidefeed errorSync" title="{function="_t('SYNCHRONISATION_ERROR')"}">
+                                                {/if}
                                             {/if}
                                                 {function="Plugin::callHook("menu_pre_feed_link", array(&$value))"}                                             <a href="index.php?action=selectedFeed&amp;feed={$value2['id']}" title="{$value2['url']}">{function="Functions::truncate($value2['name'],37)"} </a>
                                                 {if="isset($unread[$value2['id']])"}

+ 7 - 0
templates/marigolds/settings.html

@@ -89,9 +89,16 @@
                         <ul class="feedsList">
                             {if="count($feeds)!=0"}
                             {loop="$feedsForFolder"}
+                                {if="$value->getLastSyncInError()==0"}
                                 <li class="feedListItem">
                                     <span class="feedTitle js-feedTitle">
                                         <a href="index.php?action=selectedFeed&feed={$value2->getId();}">{function="Functions::truncate($value2->getName(),40)"}</a><a href="{$value2->getUrl()}" class="underlink">{$value2->getUrl()}</a>
+                                {else}
+                                <!-- feed dernière synchro en erreur -->
+                                <li class="feedListItem errorSync">
+                                    <span class="feedTitle js-feedTitle" title="{function="_t('SYNCHRONISATION_ERROR')"}">
+                                        <a class="inError" href="index.php?action=selectedFeed&feed={$value2->getId();}">{function="Functions::truncate($value2->getName(),40)"}</a><a href="{$value2->getUrl()}" class="underlink">{$value2->getUrl()}</a>
+                                {/if}
                                     </span>
                                     <div class="feedButtons">
                                         <button class="feedRename" onclick="renameFeed(this,{$value2->getId()})">{function="_t('RENAME')"}</button>

+ 1 - 0
updates/00001-Update-20140213.sql

@@ -2,6 +2,7 @@
 --#####
 --#####     MISE À JOUR Base de données de Leed
 --#####			Date : 13/02/2014
+--#####			Version Leed : v1.6
 --#####
 --#####				Préfixe des tables : ##MYSQL_PREFIX## est remplacé automatiquement
 --#####

+ 16 - 0
updates/00002-feedState-20140227.sql

@@ -0,0 +1,16 @@
+--######################################################################################################
+--#####
+--#####     MISE À JOUR Base de données de Leed
+--#####			Date : 27/02/2014
+--#####			Version Leed : v1.7
+--#####
+--#####				Préfixe des tables : ##MYSQL_PREFIX## est remplacé automatiquement
+--#####
+--##### 			Feature(s) :
+--#####				- Option pour stocker si le flux à eu des erreurs lors de la dernière synchro.
+--#####
+--######################################################################################################
+
+-- Mise à jour table FEED (Obligatoire)
+ALTER TABLE `##MYSQL_PREFIX##feed` DROP `lastSyncInError`;
+ALTER TABLE `##MYSQL_PREFIX##feed` ADD `lastSyncInError` INT(1) DEFAULT 0 NOT NULL;