From 14115e04e3f9dd6fe794810f9be403408fa81912 Mon Sep 17 00:00:00 2001 From: Alessandro Cosentino Date: Thu, 10 May 2012 15:43:56 -0400 Subject: added a rudimantal feed class (+ trying to save on DB) --- appinfo/app.php | 1 + appinfo/database.xml | 48 +++++++++++++++++++++++++------ lib/feed.php | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++ templates/main.php | 29 ++++++------------- 4 files changed, 128 insertions(+), 29 deletions(-) create mode 100644 lib/feed.php diff --git a/appinfo/app.php b/appinfo/app.php index 43db69fee..303b601b1 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -22,6 +22,7 @@ */ OC::$CLASSPATH['OC_News_Item'] = 'apps/news/lib/item.php'; +OC::$CLASSPATH['OC_News_Feed'] = 'apps/news/lib/feed.php'; $l = new OC_l10n('news'); diff --git a/appinfo/database.xml b/appinfo/database.xml index 562fac158..e2aeb7ee2 100644 --- a/appinfo/database.xml +++ b/appinfo/database.xml @@ -1,14 +1,14 @@ - *dbname* - true - false - latin1 - + *dbname* + true + false + latin1 +
*dbprefix*news_feeds - feed_id + id integer 0 true @@ -16,17 +16,49 @@ 4 - feed_name + url text true 100 - feed_url + title text true 100 + + user_id + text + + true + 64 + + + added + integer + + false + true + 4 + + + lastmodified + integer + + false + true + 4 + + + + id + true + + id + descending + +
diff --git a/lib/feed.php b/lib/feed.php new file mode 100644 index 000000000..91380c6b1 --- /dev/null +++ b/lib/feed.php @@ -0,0 +1,79 @@ +. +* +*/ + + +/** + * This class models a feed. + */ +class OC_News_Feed extends SimplePie_Core{ + + private $url; + private $feed_id; + + public function __construct($url){ + parent::__construct(); + $this->url = $url; + $this->set_item_class('OC_News_Item'); + $this->set_feed_url( $url ); + $this->enable_cache( false ); + + //FIXME: figure out if constructor is the right place for these + $this->init(); + $this->handle_content_type(); + } + + public function saveToDB() { + $CONFIG_DBTYPE = OCP\Config::getSystemValue( "dbtype", "sqlite" ); + if( $CONFIG_DBTYPE == 'sqlite' or $CONFIG_DBTYPE == 'sqlite3' ){ + $_ut = "strftime('%s','now')"; + } elseif($CONFIG_DBTYPE == 'pgsql') { + $_ut = 'date_part(\'epoch\',now())::integer'; + } else { + $_ut = "UNIX_TIMESTAMP()"; + } + + //FIXME: Detect when user adds a known feed + $query = OCP\DB::prepare(" + INSERT INTO *PREFIX*news_feeds + (url, title, userid, added, lastmodified) + VALUES (?, ?, ?, $_ut, $_ut) + "); + + $title = $this->sp->get_title(); + + if(empty($title)) { + $l = OC_L10N::get('news'); + $title = $l->t('no title'); + } + + $params=array( + htmlspecialchars_decode($this->url), + htmlspecialchars_decode($title), + OCP\USER::getUser() + ); + $query->execute($params); + + $feed_id = OCP\DB::insertid('*PREFIX*news_feeds'); + + return $feed_id; + } +} \ No newline at end of file diff --git a/templates/main.php b/templates/main.php index 499483875..771d83b3e 100644 --- a/templates/main.php +++ b/templates/main.php @@ -1,18 +1,16 @@ set_item_class('OC_News_Item'); -$feed->set_feed_url( 'http://algorithmsforthekitchen.com/blog/?feed=rss2' ); -$feed->enable_cache( false ); -$feed->init(); -$feed->handle_content_type(); +$feed = new OC_News_Feed( 'http://algorithmsforthekitchen.com/blog/?feed=rss2' ); +$feed->saveToDB(); $item = $feed->get_item(1); -if ($item->isRead()) +if ($item->isRead()) { echo $l->t('Read'); -else +} +else { echo $l->t('Unread'); +} $item->setRead(); $item->setUnread(); @@ -23,17 +21,6 @@ echo "
" . $item->get_title() . "
"; if ($item->isRead()) { echo $l->t('Read'); } -else +else { echo $l->t('Unread'); - -?> - -This is an example app template - -t('Some Setting');?> -:" - -" -*/ ?> \ No newline at end of file +} -- cgit v1.2.3