Browse Source

- [RESOLUTION BUG] Lorsqu'on ajoute un flux, le nom n'est pas ajouté automatique ; à la place, c'est l'adresse du lien du flux qui s'affiche.

- [RESOLUTION BUG] Le nom des flux personnalisés n'est pas conservé lors des mises à jour CRON.

- [RESOLUTION REGRESSION] La preference racine du serveur n'etait pas pris en compte

- [RESOLUTION REGRESSION] Certaines preferences ne pouvaient plus être modifiées

- [VERIFIE + FONCTIONNE = AUCUNE ACTION] le bouton déplier ne marche pas sur Safari

- [FONCTIONNALITE] Possibilité de modifier le login et le mot de passe admin

- [RESOLUTION BUG] L'export genere un modèle mal encodé


git-svn-id: http://projet.idleman.fr/leed.svn@54 cbb609ad-8cd9-463b-aa97-3ec7c4f0f680
Valentin CARRUESCO 8 years ago
parent
commit
042e17e301
7 changed files with 48 additions and 181 deletions
  1. 3 0
      Configuration.class.php
  2. 2 143
      Feed.class.php
  3. 1 1
      Functions.class.php
  4. 10 8
      action.php
  5. 8 0
      addFeed.php
  6. 1 1
      install.php
  7. 23 28
      todo.txt

+ 3 - 0
Configuration.class.php

@@ -43,6 +43,7 @@ class Configuration extends SQLiteEntity{
 	}
 
 	public function get($key){
+
 		return (isset($this->confTab[$key])?$this->confTab[$key]:'');
 	}
 
@@ -58,6 +59,8 @@ class Configuration extends SQLiteEntity{
 		$config->setKey($key);
 		$config->setValue($value);
 		$config->save();
+		$this->confTab[$key] = $value;
+		unset($_SESSION['configuration']);
 	}
 	
 	function getId(){

+ 2 - 143
Feed.class.php

@@ -37,148 +37,6 @@ class Feed extends SQLiteEntity{
 		}
 	}
 
-	/*function parse2(){
-
-		
-		//TODO parser a travers un proxy
-
-		 $proxy = getenv("HTTP_PROXY"); 
-		
-		 if (strlen($proxy) > 1) { 
-		 $r_default_context = stream_context_get_default (array 
-		                    ('http' => array( 
-		                     'proxy' => $proxy, 
-		                     'request_fulluri' => True, 
-		                     'header'=>sprintf('Authorization: Basic %s',base64_encode('login:password'))
-		                    ), 
-		                ) 
-		            ); 
-		  libxml_set_streams_context($r_default_context); 
-		      } 
-		
-
-		$xml = @simplexml_load_file($this->url,"SimpleXMLElement",LIBXML_NOCDATA);
-
-		if(is_object($xml)){
-
-			if(trim($this->name=='')) $this->name = (isset($xml->title)?$xml->title:$xml->channel->title);
-			$this->description = $xml->channel->description;
-			$this->website = $xml->channel->link;
-
-			if(trim($this->website)=='') $this->website = (isset($xml->link[1]['href'])?$xml->link[1]['href']:$xml->link['href']);
-			if(trim($this->description)=='') $this->description = $xml->subtitle;
-
-			$eventManager = new Event();
-			$items = $xml->xpath('//item');
-			if(count($items)==0) $items = $xml->entry;
-			$nonParsedEvents = array();
-			foreach($items as $item){
-
-				//Deffinition du GUID : 
-				$guid = (trim($item->guid)!=''?$item->guid:$item->link['href']);
-				$guid = (trim($guid)!=''?$guid:$item->link);
-				$alreadyParsed = $eventManager->rowCount(array('guid'=>htmlentities($guid)));
-				
-				if($alreadyParsed==0){
-					$event = new Event($guid,$item->title);
-					$namespaces = $item->getNameSpaces(true);
-					if(isset($namespaces['dc'])){ 
-						$dc = $item->children($namespaces['dc']);
-						$event->setCreator($dc->creator);
-						$event->setPubdate($dc->date);
-						if($event->getPubdate()=='') $event->setPubdate($dc->pubDate);
-					}
-
-
-					if(trim($event->getPubdate())=='')
-						$event->setPubdate($item->pubDate);
-
-					if(trim($event->getPubdate())=='')
-						$event->setPubdate($item->date);
-
-					if(trim($event->getPubdate())=='')
-						$event->setPubdate($item->published);
-
-					if(trim($event->getPubdate())=='')
-						$event->setPubdate($item->updated);
-
-					if(trim($event->getCreator())=='')
-						$event->setCreator($item->creator);
-
-					if(trim($event->getCreator())=='')
-						$event->setCreator($item->author);
-
-					if(trim($event->getCreator())=='')
-						$event->setCreator($item->author->name);
-
-					if(trim($event->getCreator())=='')
-						$event->setCreator('Anonyme');
-					
-					$event->setDescription($item->description);
-				
-					$event->setLink($item->link);
-
-					if(trim($event->getLink())=='')
-					$event->setLink($item->link['href']);
-
-					$event->setContent($item->content);
-
-					if(trim($event->getContent())=='' && isset($namespaces['content']))
-						$event->setContent($item->children($namespaces['content']));
-					
-					
-					if(trim($event->getDescription())=='')
-						$event->setDescription(substr($event->getContent(),0,300).'...<br><a href="'.$event->getLink().'">Lire la suite de l\'article</a>');
-					
-
-					if(trim($event->getContent())=='')
-						$event->setContent($event->getDescription());
-					
-
-						//Tentative de detronquage si la description existe
-						if($event->getDescription()!=''){
-							  // preg_match('#<a(.+)href=(.+)>#isU', $event->getDescription(), $matches);
-							 //echo var_dump($matches);
-
-							//Récup de l'article dans son contexte
-							 $allContent = simplexml_load_file($event->getGuid());
-							 if($allContent!=false){
-							 	foreach($xml->xpath('//item') as $div){
-							 		echo var_dump($div);
-							 		echo '<hr>';
-							 	}
-							 }
-							
-
-						}
-						
-					
-					
-					$event->setCategory($item->category);
-					
-					$event->setFeed($this->id);
-					$event->setUnread(1);
-					$nonParsedEvents[] = $event;
-					unset($event);
-				}
-
-			}
-
-			if(count($nonParsedEvents)!=0) $eventManager->massiveInsert($nonParsedEvents);
-
-			$result = true;
-				
-		}else{
-			$this->name = 'Flux invalide';
-			$this->description = 'Impossible de se connecter au flux demand&eacute, peut &ecirc;tre est il en maintenance?';
-			$result = false;
-		}
-			$this->lastupdate = $_SERVER['REQUEST_TIME'];
-			$this->save();
-			return $result;
-	}
-
-*/
 	function parse(){
 
 		
@@ -187,7 +45,8 @@ class Feed extends SQLiteEntity{
 		$feed->init();
 		$feed->handle_content_type();
 
-		$this->name = $feed->get_title();
+		if($this->name=='') $this->name = $feed->get_title();
+		if($this->name=='') $this->name = $this->url;
 		$this->website = $feed->get_link();
 		$this->description = $feed->get_description();
 

+ 1 - 1
Functions.class.php

@@ -374,7 +374,7 @@ class Functions
 					$xmlStream .='<outline text="'.Functions::stripAccents(strip_tags($folder->getName())).'" title="'.Functions::stripAccents(strip_tags($folder->getName())).'" icon="">'."\n";
 					$xmlStream .= Functions::recursiveExportOutline($childFolders);
 						foreach($feeds as $feed){
-							$xmlStream .= '				<outline xmlUrl="'.$feed->getUrl().'" htmlUrl="'.$feed->getWebsite().'" text="'.Functions::stripAccents(strip_tags($feed->getDescription())).'" title="'.Functions::stripAccents(strip_tags($feed->getName())).'" description="'.Functions::stripAccents(strip_tags($feed->getDescription())).'" />'."\n";
+							$xmlStream .= '				<outline xmlUrl="'.$feed->getUrl().'" htmlUrl="'.$feed->getWebsite().'" text="'.$feed->getWebsite().'" title="'.$feed->getWebsite().'" description="'.$feed->getWebsite().'" />'."\n";
 						}
 					
 					$xmlStream .= '			</outline>';

+ 10 - 8
action.php

@@ -16,11 +16,7 @@ switch ($_['action']){
 
 
 	case 'sandbox':
-		// $feed = new Feed();
-		// $feed->setUrl('http://blog.idleman.fr/?feed=rss2');
-		// $feed->parse2();
-		// var_dump($feed);
-		
+		var_dump($configurationManager->populate());
 	break;
 
 	case 'synchronize':
@@ -86,8 +82,8 @@ switch ($_['action']){
 			$configurationManager->put('root',(substr($_['root'], strlen($_['root'])-1)=='/'?$_['root']:$_['root'].'/'));
 			//$configurationManager->put('view',$_['view']);
 			$configurationManager->put('articleView',$_['articleView']);
-			$configurationManager->add('articleDisplayContent',$_['articleDisplayContent']);
-			$configurationManager->add('articleDisplayAnonymous',$_['articleDisplayAnonymous']);
+			$configurationManager->put('articleDisplayContent',$_['articleDisplayContent']);
+			$configurationManager->put('articleDisplayAnonymous',$_['articleDisplayAnonymous']);
 
 			$configurationManager->put('articlePerPages',$_['articlePerPages']);
 			$configurationManager->put('articleDisplayLink',$_['articleDisplayLink']);
@@ -96,7 +92,13 @@ switch ($_['action']){
 			$configurationManager->put('plugin_shaarli',(isset($_['plugin_shaarli']) && $_['plugin_shaarli']=='on'?1:0));
 			$configurationManager->put('plugin_shaarli_link',$_['plugin_shaarli_link']);
 			$configurationManager->put('synchronisationType',$_['synchronisationType']);
-			$configurationManager->add('feedMaxEvents',$_['feedMaxEvents']);
+			$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()));
+		
 
 
 	header('location: ./addFeed.php');

+ 8 - 0
addFeed.php

@@ -48,6 +48,14 @@ if($configurationManager->get('articleDisplayAnonymous')=='1' || $myUser!=false
 					</section>
 
 					<section>
+						<h2>Utilisateur</h2>
+						<p>Identifiant : <input type="text" name="login" value="<?php echo $myUser->getLogin(); ?>"></p>
+						<p>Mot de passe : <input type="text" name="password" value=""></p>
+						<h3>Laissez le champs vide si vous ne souhaitez pas changer le mot de passe</h3>
+					
+					</section>
+
+					<section>
 						<h2>Synchronisation</h2>
 						<p><input type="radio" <?php $synchronisationType =$configurationManager->get('synchronisationType'); if($synchronisationType=='auto'){ ?> checked="checked" <?php } ?> value="auto" name="synchronisationType"> <strong>Automatique (complet) :</strong> Le script mettra à jour automatiquement tous vos flux en une seule fois, ceci permet la mise &agrave; jour en une foix de tous vos flux mais peux faire ramer votre serveur, les appels cron ne doivent pas être trop rapproch&eacute;s</p>
 						<p><input type="radio" <?php if($synchronisationType=='graduate'){ ?> checked="checked" <?php } ?>  value="graduate" name="synchronisationType"> <strong>Automatique (gradu&eacute;) :</strong> Le script mettra à jour automatiquement les 10 flux les plus vieux en terme de mise &agrave; jour, ceci permet d'alleger la charge serveur et d'eviter els timeout intempestif mais necessiteun appel de cron plus fréquent afin de mettre à jour le plus de flux possible</p>

+ 1 - 1
install.php

@@ -88,7 +88,7 @@ if(isset($_['installButton'])){
 	//Identification de l'utilisateur en session
 	$_SESSION['currentUser'] = serialize($admin);
 	//Ajout des préférences et reglages
-	$configurationManager->put('root',(substr($_['root'], strlen($_['root'])-1)=='/'?$_['root']:$_['root'].'/'));
+	$configurationManager->add('root',(substr($_['root'], strlen($_['root'])-1)=='/'?$_['root']:$_['root'].'/'));
 	//$configurationManager->put('view',$_['view']);
 	$configurationManager->add('articleView',$_['articleView']);
 	$configurationManager->add('articleDisplayContent',$_['articleDisplayContent']);

+ 23 - 28
todo.txt

@@ -6,25 +6,36 @@ Cette feuille existe dans l'unique but d'organiser ma petite tête sur le projet
 ==== DERNIER COMMIT ====
 ========================
 
-- Résolution : Le bouton deplier disparait quand il n'y a plus d'evenements non lu
-- Optimisation  du parsage
+- [RESOLUTION BUG] Lorsqu'on ajoute un flux, le nom n'est pas ajouté automatique ; à la place, c'est l'adresse du lien du flux qui s'affiche.
+
+- [RESOLUTION BUG] Le nom des flux personnalisés n'est pas conservé lors des mises à jour CRON.
+
+- [RESOLUTION REGRESSION] La preference racine du serveur n'etait pas pris en compte
+
+- [RESOLUTION REGRESSION] Certaines preferences ne pouvaient plus être modifiées
+
+- [VERIFIE + FONCTIONNE = AUCUNE ACTION] le bouton déplier ne marche pas sur Safari
+
+- [FONCTIONNALITE] Possibilité de modifier le login et le mot de passe admin
+
+- [RESOLUTION BUG] L'export genere un modèle mal encodé
+
 =======================
 ==== BUGS VALIDES  ====
 =======================
 
-
 - A cause de la rotation des evenements, certains evenements sont reparsé et remis en non lu, au lieu de supprimer les events qui tournent, ne garder que l'uid et vider le reste.
-- L'export genere un modèle mal encodé
+
 
 =====================================
 ==== ECARTS FONCTIONNELS VALIDES ====
 =====================================
-
+- Je trouve l'option "shaarli" pas très KiSS compliant.
+C'est une porte ouverte à ajouter une option twitter puis facebook etc... (j'exagère) ==> Il a raison : remplacer module shaarli par plugin generique s'adaptant a tout type d services ou ne rien mettre du tout :).
 - Au clic avec la molette de souris ou sur le lien de fin de description, l'evenements n'est pas marqué comme lu (sous firefox du moins).
-- Pertes de perfs sur les dernieres revisions
-- Include dans boucle de synchro a dégager pour gain de perf
+- Pertes de perfs sur les dernieres revisions j'ai l'impression
 - marquer comme lu un dossier est extremement long
-
+"Import du 13-05-2012.log" à la racine et "Import du 31-05-2012.log" dans le dossier logs pourraient être effacés du dépôt...
 ==============================
 ==== SUGGESTIONS VALIDEES ====
 ==============================
@@ -33,43 +44,27 @@ Cette feuille existe dans l'unique but d'organiser ma petite tête sur le projet
 - Dans le cas ou la description est trop longue, penser a la tronquer
 - Dans les catégories unread, il serait bien de voir le titre du blog emetteur quelque part
 - Traiter le module de synchro comme le module d'import pour la progression
-- Intervertir le bouton depliage et le boutton de parcour d'un dossier (regle un bug graphique et c'ets plus logique)
 - mettre en place la pagination pour les parcours de dossiers
-- Intervertir la disposition des bouton pour parcourir (bientot deplier) et des flux pour que les boutons toujours visibles soient alignés
-- Interdire la visibilité de la partie gestion si les préférences ont décochée le read for anonymous
+- le bouton lu/non lu de chaque news de la page d'accueil n'est toujours pas sur une position fixe comme annoncé sur les features de la rev 49 (si titre sur deux lignes, le bouton descend et si nom du rédacteur de la news varie beaucoup en longueur, le bouton se déplace) 
 
 
 ===================
 ==== A TRAITER ====
 ===================
 
-
 - Tu devrais utiliser le nommage dynamique pour éviter d'utiliser les fonctions eval()
 - Verifier que les connexions a la base sql ne sont pas multiples inutilement
-- Ajout un plugin pour Sharrre ( http://sharrre.com/ )
 - Proposer un .sh d'installation complete du programme + cron automatique
 - Détronquer les flux qui ne comportent que la description courte de l'article
 - Fermer un dossier lors d'une ouverture d'un autre (a configurer dans les prefs).
-- Possibilité de parser a travers un proxy
 - Dissocier l'appel du menu de l'appl des flux via ajax pour eviter de recharger inutilement le menu a chaque fois ? (gain de perfs...)
 - proposer un passage à MySQL pour les grands nombres de flux
-- Code proxy :   Attention car sous GNU/Linux les variables sont Case sensitive il faut en tenir compte avec la fonction getenv.
+- Possibilité de parser a travers un proxy:  Attention car sous GNU/Linux les variables sont Case sensitive il faut en tenir compte avec la fonction getenv.
 - Ajouter des raccourcis touches, imiter rsslounge pour de na perdre les habitudes utilisateurs :http://code.google.com/p/rsslounge/wiki/Shortcuts
-Ce matin tous les flux de 3 de mes 4 quatre dossiers ont été renommés en "flux invalide".Ils sont par contre toujours fonctionnels.
-erreur de copier collé, c'est le premier lien qui ne marche pas (http://feeds.boston.com/boston/bigpicture/index) 
 
+- Pour curl je dirais que ce serait bien de l'avoir en option car parfois on doit désactiver l'option allow_url_fopen et là ton simplexml_load_file est mort ainsi que toute ton appli.
 
-Pour curl je dirais que ce serait bien de l'avoir en option car parfois on doit désactiver l'option allow_url_fopen et là ton simplexml_load_file est mort ainsi que toute ton appli.
-Est ce que tu as eu les de regarder SimplePie ?
-
-
-Idées d'amélioration :
-- Dans un répertoire Classer les flux avec des non lus en premier ça évite de scroller dans les répertoirs qui ont beaucoup des flux
 - Mettre l'info de la dernière date heure de mise jour des flux (peut-être a coté du calcul du temps de génération de la page)
+
 - Trouver un moyen de manager les favoris sinon ce va être difficile de s'il retrouver
 - Faire une recherche dans les events
-
-Nice to Have :
-- L'application est inutilisable quand on désactive JavaScript
-- Si allow_url_fopen = off l'import ne fonctionne plus dans ce cas l'utilisation de curl peut-être utile
-- Une extension de PDO a la place de Sqlite3 serait sympa pour les malheureux qui ne peuvent pas installer autre chose que sqlite2, pdo et pdo_sqlite