Browse Source

- Intégration du parseur simplePie, ceci implique :
- Résolution des flux mal parsés
- Import et synchronisation moins gourmands et plus rapides
- Problèmes d'encodages résolus (a tester)
- Problèmes d'evenements parsés en double résolu (a tester)

/!\ Attention, possibilité de grosses régressions, gardez l'oeil ouvert (et le bon :))

git-svn-id: http://projet.idleman.fr/leed.svn@50 cbb609ad-8cd9-463b-aa97-3ec7c4f0f680

Valentin CARRUESCO 8 years ago
parent
commit
fb4e3e529f
5 changed files with 78 additions and 10 deletions
  1. 4 2
      Event.class.php
  2. 61 1
      Feed.class.php
  3. 5 2
      action.php
  4. 1 0
      js/script.js
  5. 7 5
      todo.txt

+ 4 - 2
Event.class.php

@@ -73,7 +73,8 @@ class Event extends SQLiteEntity{
 	}
 
 	function getDescription(){
-		return utf8_encode($this->description);
+		// return utf8_encode($this->description);
+		return $this->description;
 	}
 
 	function setDescription($description,$encoding = true){
@@ -126,7 +127,8 @@ class Event extends SQLiteEntity{
 	}
 
 	function getContent(){
-		return utf8_encode($this->content);
+		//return utf8_encode($this->content);
+		return $this->content;
 	}
 
 	function setContent($content,$encoding=true){

+ 61 - 1
Feed.class.php

@@ -37,7 +37,7 @@ class Feed extends SQLiteEntity{
 		}
 	}
 
-	function parse(){
+	function parse2(){
 
 		/*
 		//TODO parser a travers un proxy
@@ -179,6 +179,66 @@ class Feed extends SQLiteEntity{
 	}
 
 
+	function parse(){
+
+		require_once("SimplePie.class.php");
+		$feed = new SimplePie();
+		$feed->set_feed_url($this->url);
+		$feed->init();
+		$feed->handle_content_type();
+
+		$this->name = $feed->get_title();
+		$this->website = $feed->get_link();
+		$this->description = $feed->get_description();
+
+		$items = $feed->get_items();
+		$eventManager = new Event();
+			
+		$nonParsedEvents = array();
+		foreach($items as $item){
+
+				//Deffinition du GUID : 
+			
+				$alreadyParsed = $eventManager->rowCount(array('guid'=>htmlentities($item->get_id())));
+				
+
+				if($alreadyParsed==0){
+					$event = new Event();
+					$event->setGuid($item->get_id());
+					$event->setTitle($item->get_title());
+					$event->setPubdate($item->get_date());
+					$event->setCreator( (is_object($item->get_author())?$item->get_author()->name:'Anonyme') );
+				
+					$event->setLink($item->get_permalink());
+					$event->setContent($item->get_content());
+					$event->setDescription($item->get_description());
+					
+					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());
+					
+					$event->setCategory($item->get_category());
+					$event->setFeed($this->id);
+					$event->setUnread(1);
+					$nonParsedEvents[] = $event;
+					unset($event);
+				}
+
+		}
+
+			if(count($nonParsedEvents)!=0) $eventManager->massiveInsert($nonParsedEvents);
+
+			$result = true;
+				
+		
+			$this->lastupdate = $_SERVER['REQUEST_TIME'];
+			$this->save();
+			return $result;
+	}
+
+
 	function removeOldEvents($maxEvent){
 		$eventManager = new Event();
 		$limit = $eventManager->rowCount(array('feed'=>$this->id))-$maxEvent;

+ 5 - 2
action.php

@@ -16,8 +16,11 @@ switch ($_['action']){
 
 
 	case 'sandbox':
-		// $events = array(new Event('$guid=null','$title=null','$description=null','$content=null','$pubdate=null','$link=null','$category=null','$creator=null'),new Event('$g','$t','$d','$c','$p','$l','$c','$c'));
-		// $eventManager->massiveInsert($events);
+		// $feed = new Feed();
+		// $feed->setUrl('http://blog.idleman.fr/?feed=rss2');
+		// $feed->parse2();
+		// var_dump($feed);
+		
 	break;
 
 	case 'synchronize':

+ 1 - 0
js/script.js

@@ -1,5 +1,6 @@
 function toggleFolder(element,folder){
 	feedBloc = $('ul',$(element).parent().parent());
+
 	open = 0;
 	if(feedBloc.css('display')=='none') open = 1;
 	feedBloc.slideToggle(200);

+ 7 - 5
todo.txt

@@ -6,17 +6,19 @@ Cette feuille existe dans l'unique but d'organiser ma petite tête sur le projet
 ==== DERNIER COMMIT ====
 ========================
 
-- Dossiers : Inversion des bouton non lu et parcourir pour alignement plus logique
-- Dossiers :Inversion bouton parcourir et bouton de pliage/dépliage 
-- Description la manip de mise à jour (sauvegarde de la base donnée) dans le README
-- Bouton "lu/non lu" de chaque news soit positionné à un endroit fixe
+- Intégration du parseur simplePie, ceci implique :
+		- Résolution des flux mal parsés
+		- Import et synchronisation moins gourmands et plus rapides
+		- Problèmes d'encodages résolus (a tester)
+		- Problèmes d'evenements parsés en double résolu (a tester)
+
+  /!\ Attention, possibilité de grosses régressions, gardez l'oeil ouvert (et le bon :))
 
 =======================
 ==== BUGS VALIDES  ====
 =======================
 
 Certains flux sont nommé "flux invalide" même s'ils fonctionnent correctement.Même après avoir renommé le flux correctement, le nom "flux invalide" revient après mise à jour et apparition de nouvelles actus.
- Le flux suivant ne marche pas :http://feeds.boston.com/boston/bigpicture/indexhttp://www.boston.com/bigpicture/index.xml
 
 
  Flux qui ne fonctionne pas avec le refresh.