Browse Source

issue #150 - possibilité de paramètre activation du cache
issue #169 - possibilité de paramètre activation du force_feed
correction sur upgrade des paramètre -> redirection sur les paramètres
correction installe -> ne pas charger le user car ne sert pas en amont de la création

cobalt74 6 years ago
parent
commit
155af654c9
5 changed files with 48 additions and 15 deletions
  1. 3 2
      Feed.class.php
  2. 9 11
      action.php
  3. 17 1
      install.php
  4. 2 0
      settings.php
  5. 17 1
      templates/marigolds/settings.html

+ 3 - 2
Feed.class.php

@@ -61,7 +61,7 @@ class Feed extends MysqlEntity{
 	nécessaire, et appelle parse(). Impossible de vérifier dans parse() même
 	car elle est appelée aussi pour autre chose que l'ajout.
 	*/
-	function parse($syncId){
+	function parse($syncId, $enableCache=true, $forceFeed=false){
 		assert('is_int($syncId) && $syncId>0');
 		if (empty($this->id) || 0 == $this->id) {
 			/* Le flux ne dispose pas pas d'id !. Ça arrive si on appelle
@@ -73,7 +73,8 @@ class Feed extends MysqlEntity{
 			die($msg); // Arrêt, sinon création événements sans flux associé.
 		}
 		$feed = new SimplePie();
-		$feed->enable_cache(false);
+		$feed->enable_cache($enableCache);
+		$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');
 		if (!$feed->init()) {

+ 9 - 11
action.php

@@ -36,8 +36,7 @@ switch ($action){
 			die('Vous devez vous connecter pour cette action.');
 		}
 		Functions::triggerDirectOutput();
-				
-		// On ne devrait pas mettre de style ici.
+
 		if (!$commandLine)
 			echo '<html>
 				<head>
@@ -70,10 +69,12 @@ switch ($action){
 		$nbTotal = 0;
 		$localTotal = 0; // somme de tous les temps locaux, pour chaque flux
 		$syncId = time();
+		$enableCache = $configurationManager->get('synchronisationEnableCache');
+		$forceFeed = $configurationManager->get('synchronisationForceFeed');
 		foreach ($feeds as $feed) {
 			$nbTotal++;
 			$startLocal = microtime(true);
-			$parseOk = $feed->parse($syncId);
+			$parseOk = $feed->parse($syncId, $enableCache, $forceFeed);
 			$parseTime = microtime(true)-$startLocal;
 			$localTotal += $parseTime;
 			$parseTimeStr = number_format($parseTime, 3);
@@ -165,7 +166,6 @@ switch ($action){
 	case 'updateConfiguration':
 		if($myUser==false) exit('Vous devez vous connecter pour cette action.');
 
-
 			//Ajout des préférences et réglages
 			$configurationManager->put('root',(substr($_['root'], strlen($_['root'])-1)=='/'?$_['root']:$_['root'].'/'));
 			//$configurationManager->put('view',$_['view']);
@@ -180,16 +180,14 @@ switch ($action){
 			$configurationManager->put('articleDisplayHomeSort',$_['articleDisplayHomeSort']);
 			$configurationManager->put('articleDisplayFolderSort',$_['articleDisplayFolderSort']);
 			$configurationManager->put('synchronisationType',$_['synchronisationType']);
+			$configurationManager->put('synchronisationEnableCache',$_['synchronisationEnableCache']);
+			$configurationManager->put('synchronisationForceFeed',$_['synchronisationForceFeed']);
 			$configurationManager->put('feedMaxEvents',$_['feedMaxEvents']);
 
-	
-		
-			 $userManager->change(array('login'=>$_['login']),array('id'=>$myUser->getId()));
-			 if(trim($_['password'])!='') $userManager->change(array('password'=>User::encrypt($_['password'])),array('id'=>$myUser->getId()));
-		
-
+			$userManager->change(array('login'=>$_['login']),array('id'=>$myUser->getId()));
+			if(trim($_['password'])!='') $userManager->change(array('password'=>User::encrypt($_['password'])),array('id'=>$myUser->getId()));
 
-	header('location: ./settings.php');
+	header('location: ./settings.php#preferenceBloc');
 	break;
 
 

+ 17 - 1
install.php

@@ -122,7 +122,7 @@ if(isset($_['installButton'])){
 	require_once('User.class.php');
 	require_once('Folder.class.php');
 	require_once('Configuration.class.php');
-	$myUser = (isset($_SESSION['currentUser'])?unserialize($_SESSION['currentUser']):false);
+
 	$feedManager = new Feed();
 	$eventManager = new Event();
 	$userManager = new User();
@@ -161,6 +161,8 @@ if(isset($_['installButton'])){
 	$configurationManager->add('feedMaxEvents',$_['feedMaxEvents']);
 	
 	$configurationManager->add('synchronisationCode',$synchronisationCode);
+	$configurationManager->add('synchronisationEnableCache',$_['synchronisationEnableCache']);
+	$configurationManager->add('synchronisationForceFeed',$_['synchronisationForceFeed']);
 
 	//Création du dossier de base
 	$folder = $folderManager->load(array('id'=>1));
@@ -286,6 +288,20 @@ Si vous n'avez pas accès a la commande wget sur votre serveur, vous pouvez essa
 					<p><input type="radio" checked="checked" value="auto" name="synchronisationType"> <strong>Automatique (complet) :</strong> Le script mettra à jour automatiquement tous vos flux en une seule fois, ceci permet la mise à jour en une fois de tous vos flux mais peux faire ramer votre serveur, les appels cron ne doivent pas être trop rapprochés.</p>
 					<p><input type="radio"  value="graduate" name="synchronisationType"> <strong>Automatique (gradué) : </strong>Le script mettra à jour automatiquement les 10 flux les plus vieux en terme de mise à jour, ceci permet d'alléger la charge serveur et d'éviter les timeouts intempestifs mais nécessite un appel de cron plus fréquent afin de mettre à jour le plus de flux possible.</p>
 					<p><input type="radio"  value="manual" name="synchronisationType"> <strong>Manuel (complet) : </strong>Le script ne fait aucune mise à jour automatique, vous devez faire vous même les mises à jour depuis l'espace administration.</p>
+					<p><strong>Options de synchronisation</strong>
+						<fieldset>
+							<legend>Activer le Cache</legend>
+							<input type="radio" checked="checked" value="1" name="synchronisationEnableCache" /><label for="synchronisationEnableCacheYes">Oui</label>
+							<input type="radio" value="0" name="synchronisationEnableCache" /><label for="synchronisationEnableCacheNo">Non</label>
+							<p>Cette option vous permet de désactiver la mise en cache. Cependant, la désactivation du cache peut entraîner des temps de chargement plus longs.</p>
+						</fieldset>
+						<fieldset>
+							<legend>Forcer l'intégration</legend>
+							<input type="radio" value="1" name="synchronisationForceFeed" /><label for="synchronisationForceFeedYes">Oui</label>
+							<input type="radio" checked="checked" value="0" name="synchronisationForceFeed" /><label for="synchronisationForceFeedNo">Non</label>
+							<p>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.</p>
+						</fieldset>
+					</p>
 				</section>
 
 				<section>

+ 2 - 0
settings.php

@@ -13,6 +13,8 @@ require_once('header.php');
 $tpl->assign('feeds',$feedManager->populate('name'));
 $tpl->assign('folders',$folderManager->populate('name'));
 $tpl->assign('synchronisationType',$configurationManager->get('synchronisationType'));
+$tpl->assign('synchronisationEnableCache',$configurationManager->get('synchronisationEnableCache'));
+$tpl->assign('synchronisationForceFeed',$configurationManager->get('synchronisationForceFeed'));
 $tpl->assign('articleDisplayAnonymous', $configurationManager->get('articleDisplayAnonymous'));
 $tpl->assign('articleDisplayLink', $configurationManager->get('articleDisplayLink')); 
 $tpl->assign('articleDisplayDate', $configurationManager->get('articleDisplayDate')); 

File diff suppressed because it is too large
+ 17 - 1
templates/marigolds/settings.html