conf = new configuration(); } public function addFeed($url, $type, $source, $credits) { $f = array(); $f['updated_at'] = '0000-00-00 00:00:00'; $f['error'] = 0; $f['title'] = ''; $f['url'] = ''; $f['credits'] = $credits; $f['site_url'] = ''; $f['id_user'] = $_SESSION['user_id']; switch ($source) { case 'Rss': $f['url'] = $url; $f['type'] = $type; break; case 'VOX': $f['url'] = 'http://{{username}}.vox.com/library/posts/atom.xml'; $f['type'] = 1; break; case 'Digg': $f['url'] = 'http://digg.com/rss/{{username}}/index2.xml'; $f['type'] = 1; break; case 'Tumblr': $f['url'] = 'http://{{username}}.tumblr.com/rss'; $f['type'] = 1; break; case 'Twitter': $f['url'] = 'http://twitter.com/{{username}}'; $f['type'] = 1; break; case 'Last.fm': $f['url'] = 'http://ws.audioscrobbler.com/1.0/user/{{username}}/recenttracks.rss'; $f['type'] = 1; break; case 'Blogger': $f['url'] = 'http://{{username}}.blogspot.com/feeds/posts/default'; $f['type'] = 1; break; case 'Youtube': $f['url'] = 'http://www.youtube.com/rss/user/{{username}}/videos.rss'; $f['type'] = 1; break; case 'Wordpress.com': $f['url'] = 'http://{{username}}.wordpress.com/feed/'; $f['type'] = 1; break; case 'Del.icio.us': $f['url'] = 'http://feeds.delicious.com/rss/{{username}}'; $f['type'] = 1; break; default: $f['url'] = ''; break; } if (!empty($f['url'])) { $f['url'] = str_replace('{{username}}', $url, $f['url']); return ($this->insertarDeFormulario($this->conf->tablePrefix."feeds", $f)); } print_r($_POST); print_r($f); } public function removeFeed($id) { return ($this->ejecutarConsulta("DELETE FROM ".$this->conf->tablePrefix."feeds WHERE id_feed=".$id)); } public function updateFeeds() { $timeToUpdate = trim($this->conf->rssImportFrec). ' ago'; $feeds = $this->getFeedList("WHERE updated_at < '".date("Y-m-d H:i:s", strtotime($timeToUpdate))."'"); foreach ($feeds as $feed) { $data = new SimplePie(); $data->feed_url($feed['url']); $data->cache_location(Absolute_Path."/uploads/CACHE"); $data->init(); $temp = array(); $temp['updated_at'] = date("Y-m-d H:i:s"); if (!empty($data->error)) { // Error report $temp['error'] = 1; $this->modificarDeFormulario($this->conf->tablePrefix."feeds", $temp, 'id_feed = '.$feed['id_feed']); } else { if ($data->data) { $timeFilter = strtotime($timeToUpdate); foreach ($data->get_items() as $post) { if (strtotime($post->get_date("Y-m-d H:i:s")) > strtotime($feed['updated_at'])) { $newPost = array(); $newPost['id_user'] = $feed['id_user']; $newPost['title'] = $post->get_title(); $newPost['date'] = $post->get_date("Y-m-d H:i:s"); if ($feed['type'] == 1) { //TEXT $newPost['type'] = 1; if ($post->get_title() != $post->get_description()) { if (strpos($feed['url'], 'twitter.com') <= 0) { $newPost['description'] = $post->get_description(); // Youtube Fix to add a link to the image if (strpos($feed['url'], 'youtube.com') > 0) { $newPost['description'] = preg_replace('/\]+)/', 'get_description()); // Delicious fix to add a link post } elseif (strpos($feed['url'], 'delicious.com') > 0) { $newPost['type'] = 4; $newPost['url'] = $post->get_link(); } } } } elseif ($feed['type'] == 2) { //IMAGES $ma = array(); $url_image = ''; @preg_match_all('/\]+)/', $post->get_description(), $ma); @preg_match_all('/src\=\"([^\"]+)\"/', $ma[0][0], $ma); $url_image = $ma[1][0]; if (empty($url_image)) { /* Theres no image, lets make a text post */ $newPost['type'] = 1; if ($post->get_title() != $post->get_description()) { if (strpos($feed['url'], 'twitter.com') <= 0) { $newPost['description'] = $post->get_description(); } } } else { $newPost['type'] = 2; $newPost['url'] = $url_image; $newPost['description'] = $post->get_title(); } } if ($feed['credits'] == 1 && !empty($feed['title'])) { $newPost['description'] .= '
(via '.$feed['title'].')
'; } $this->insertarDeFormulario($this->conf->tablePrefix."data", $newPost); } } $temp['title'] = (!empty($data->data['info']['title']))? $data->data['info']['title'] : ''; $temp['site_url'] = (!empty($data->data['info']['link']['alternate'][0]))? $data->data['info']['link']['alternate'][0] : $data->data['info']['link']; $temp['error'] = 0; $this->modificarDeFormulario($this->conf->tablePrefix."feeds", $temp, 'id_feed = '.$feed['id_feed']); } } } } public function getFeedList($condition = '') { $feeds = array(); $this->ejecutarConsulta('SELECT * FROM '.$this->conf->tablePrefix.'feeds '.$condition.' ORDER BY id_feed DESC'); while ($feed = $this->mid_consulta->fetch(PDO::FETCH_ASSOC)) { $feeds[] = $feed; } return $feeds; } /** * Calculate the seconds until next update * @param $feed can be an ID, or the raw array from the DB * @return int */ public function getNextUpdate($feed) { if (is_numeric($feed)) { $id = (int)$feed; } elseif (is_array($feed)) { $id = $feed['id_feed']; } else { return false; } $timeToUpdate = trim($this->conf->rssImportFrec). ' ago'; $delta = time() - strtotime($timeToUpdate); $this->ejecutarConsulta('SELECT (UNIX_TIMESTAMP(updated_at) - '.$delta.') - UNIX_TIMESTAMP(NOW()) FROM '.$this->conf->tablePrefix.'feeds WHERE id_feed = '.$id); $time = $this->mid_consulta->fetch(); return $time[0]; } } ?>