Esempio n. 1
0
 /**
  * @test
  *
  * @dataProvider provider_create
  *
  * @covers feed::create
  *
  * @param string  $info     info to pass
  * @param integer $items    items to add
  * @param integer $matcher  output
  */
 public function test_create($info, $items, $enviroment, $matcher_item, $matchers_image)
 {
     $this->setEnvironment($enviroment);
     $this->assertTag($matcher_item, Feed::create($info, $items), '', FALSE);
     foreach ($matchers_image as $matcher_image) {
         $this->assertTag($matcher_image, Feed::create($info, $items), '', FALSE);
     }
 }
Esempio n. 2
0
 public function action_index()
 {
     $pages = ORM::factory('page')->find_all();
     $info = array('title' => 'RSS подписка на страницы');
     $all = array();
     foreach ($pages as $page) {
         array_push($all, array('title' => $page->pagename, 'description' => $page->content, 'pubDate' => $page->date, 'link' => '/page'));
     }
     $feed = Feed::create($info, $all);
     $this->response->body($feed);
 }
Esempio n. 3
0
 public function action_feed()
 {
     $info = array('title' => __($this->metadata->title), 'pubDate' => date('r'), 'description' => $this->metadata->description, 'language' => I18n::lang(), 'ttl' => 60);
     $news = ORM::factory('Publication')->where('published', '=', 1)->order_by('date', 'desc')->limit(40)->find_all();
     $items = array();
     foreach ($news as $item) {
         $items[] = array('title' => $item->title, 'description' => strip_tags($item->desc), 'image' => isset($item->picture->file_path) && $item->picture->file_path ? URL::media($item->picture->file_path, TRUE) : '', 'content' => strip_tags($item->text), 'link' => Url::site('publications/view/' . $item->id, true), 'pubDate' => date('r', strtotime($item->date)));
     }
     header('Content-Type: text/xml; charset=utf-8');
     $xml = Feed::create($info, $items, 'UTF-8');
     echo $xml;
     die;
 }
Esempio n. 4
0
 public function action_blog()
 {
     $this->auto_render = FALSE;
     $info = array('title' => 'RSS Blog ' . Core::config('general.site_name'), 'pubDate' => date("D, d M Y H:i:s T"), 'description' => __('Latest post published'), 'generator' => 'Open Classifieds');
     $items = array();
     $posts = new Model_Post();
     $posts = $posts->where('status', '=', 1)->order_by('created', 'desc')->limit(Core::config('general.feed_elements'))->cached()->find_all();
     foreach ($posts as $post) {
         $url = Route::url('blog', array('seotitle' => $post->seotitle));
         $items[] = array('title' => preg_replace('/&(?!\\w+;)/', '&', $post->title), 'link' => $url, 'pubDate' => Date::mysql2unix($post->created), 'description' => Text::removebbcode(preg_replace('/&(?!\\w+;)/', '&', $post->description)));
     }
     $xml = Feed::create($info, $items);
     $this->response->headers('Content-type', 'text/xml');
     $this->response->body($xml);
 }
Esempio n. 5
0
 public function action_talk()
 {
     $this->response->headers('Content-Type', 'application/rss+xml; charset=UTF-8');
     $talks = ORM::factory('Talk')->where('deleted', '=', 0)->limit(15)->order_by('created', 'DESC')->find_all();
     $feed = array();
     if ((bool) $talks->count()) {
         foreach ($talks as $talk) {
             $description = $talk->content();
             $description = strip_tags($description);
             $description = str_replace(array("\r\n", "\n"), ' ', $description);
             $description = substr($description, 0, 200);
             $feed[] = array('title' => $talk->title, 'pubDate' => $talk->created, 'link' => $talk->url(), 'description' => $description, 'guid' => $talk->url());
         }
     }
     echo Feed::create(array('title' => 'Talk about Morning Pages', 'link' => 'talk', 'description' => 'New talks on Morning Pages'), $feed);
 }
Esempio n. 6
0
 public function action_index()
 {
     // Load items
     $content = Request::factory('articles/all.json');
     $content->get = array('articles' => 1, 'limit' => $this->_config['feed_length']);
     $content = $content->execute();
     if ($content->status !== 200 or $content->headers['Content-Type'] !== 'application/json') {
         $this->response->status = 500;
         $this->response->body = '<h1>Internal server error</h1>';
         return;
     }
     $content = json_decode($content->body);
     $content = $this->_format_feed_array($content);
     $info = array('title' => $this->_config['blog_name'], 'link' => Url::site(), 'description' => $this->_config['description'], 'language' => $this->_config['language'], 'copyright' => $this->_config['copyright'], 'pubDate' => $this->_pub_date, 'lastBuildDate' => $this->_last_build);
     $this->response->headers['Content-Type'] = 'application/rss+xml';
     $this->response->body = Feed::create($info, $content);
 }
Esempio n. 7
0
 function action_index()
 {
     $newsportal = ORM::factory('newsportal')->where('active', '=', 1)->order_by('date', 'DESC');
     $newsservice = ORM::factory('newsservice')->where('active', '=', 1)->order_by('date_create', 'DESC');
     $news_world = ORM::factory('newsworld')->where('active', '=', 1)->order_by('date', 'DESC');
     $info = array('title' => 'Новости', 'language' => 'ru', 'description' => 'Новости от ' . date('d.m.Y H:i'), 'pubDate' => time());
     $items = array();
     foreach ($newsportal->find_all() as $news) {
         $items[] = array('title' => $news->title, 'url' => URL::base() . 'news/association/' . $news->id, 'guid' => URL::base() . 'news/association/' . $news->id, 'description' => strip_tags(htmlspecialchars($news->text)), 'pubDate' => $news->date);
     }
     foreach ($newsservice->find_all() as $news) {
         $items[] = array('title' => $news->service->name . ': ' . $news->title, 'url' => URL::base() . 'news/' . $news->id, 'guid' => URL::base() . 'news/' . $news->id, 'description' => strip_tags(htmlspecialchars($news->text)), 'pubDate' => $news->date_create);
     }
     foreach ($news_world->find_all() as $news) {
         $items[] = array('title' => $news->title, 'url' => URL::base() . 'news/world/' . $news->id, 'guid' => URL::base() . 'news/world/' . $news->id, 'description' => strip_tags(htmlspecialchars($news->text)), 'pubDate' => $news->date);
     }
     $this->response->headers('Content-type', 'text/xml');
     echo Feed::create($info, $items, 'rss', 'utf-8');
 }
Esempio n. 8
0
 public function action_forum()
 {
     $this->auto_render = FALSE;
     $info = array('title' => 'RSS Forum ' . Core::config('general.site_name'), 'pubDate' => date("r"), 'description' => __('Latest post published'), 'generator' => 'Open Classifieds');
     $items = array();
     $topics = new Model_Topic();
     if (Model_Forum::current()->loaded()) {
         $topics->where('id_forum', '=', Model_Forum::current()->id_forum);
     } else {
         $topics->where('id_forum', '!=', NULL);
     }
     //any forum
     $topics = $topics->where('status', '=', Model_Topic::STATUS_ACTIVE)->where('id_post_parent', 'IS', NULL)->order_by('created', 'desc')->limit(Core::config('advertisement.feed_elements'))->cached()->find_all();
     foreach ($topics as $topic) {
         $url = Route::url('forum-topic', array('seotitle' => $topic->seotitle, 'forum' => $topic->forum->seoname));
         $items[] = array('title' => htmlspecialchars($topic->title, ENT_QUOTES), 'link' => $url, 'pubDate' => Date::mysql2unix($topic->created), 'description' => htmlspecialchars(Text::removebbcode($topic->description), ENT_QUOTES), 'guid' => $url);
     }
     $xml = Feed::create($info, $items);
     $this->response->headers('Content-type', 'text/xml');
     $this->response->body($xml);
 }
Esempio n. 9
0
 public function render($resource)
 {
     $limit = filter_var(Arr::get($_GET, 'limit', 30), FILTER_SANITIZE_NUMBER_INT);
     $offset = filter_var(Arr::get($_GET, 'offset', 0), FILTER_SANITIZE_NUMBER_INT);
     $prefixSource = clone $resource;
     $xml = array();
     if ($resource instanceof ORM) {
         $items = $resource->limit($limit)->offset($offset)->find_all();
         $allItems = $prefixSource->find_all();
         $count = $allItems->count();
     } else {
         $items = $resource;
         $count = count($items);
     }
     $offset = $offset > 0 ? $offset - 1 : 0;
     $limit = $limit > 0 && $limit < $count ? $limit : $count;
     $numUsed = 0;
     for ($i = $offset; $i < $count && $numUsed < $limit; ++$i) {
         $numUsed++;
         $item = $items[$i];
         $xml[] = $item instanceof ORM ? $this->scrub($item->as_array()) : $this->scrub($item);
     }
     echo Feed::create(array('title' => 'Kids MyShot Image Feed', 'amount' => $numUsed), $xml);
 }
Esempio n. 10
0
function feed_controller()
{
    global $mysqli, $redis, $session, $route, $feed_settings;
    $result = false;
    require_once "Modules/feed/feed_model.php";
    $feed = new Feed($mysqli, $redis, $feed_settings);
    if ($route->format == 'html') {
        if ($route->action == "list" && $session['write']) {
            $result = view("Modules/feed/Views/feedlist_view.php", array());
        } else {
            if ($route->action == "api" && $session['write']) {
                $result = view("Modules/feed/Views/feedapi_view.php", array());
            }
        }
    } else {
        if ($route->format == 'json') {
            // Public actions available on public feeds.
            if ($route->action == "list") {
                if ($session['read']) {
                    if (!isset($_GET['userid']) || isset($_GET['userid']) && $_GET['userid'] == $session['userid']) {
                        $result = $feed->get_user_feeds($session['userid']);
                    } else {
                        if (isset($_GET['userid']) && $_GET['userid'] != $session['userid']) {
                            $result = $feed->get_user_public_feeds(get('userid'));
                        }
                    }
                } else {
                    if (isset($_GET['userid'])) {
                        $result = $feed->get_user_public_feeds(get('userid'));
                    }
                }
            } elseif ($route->action == "create" && $session['write']) {
                $result = $feed->create($session['userid'], get('tag'), get('name'), get('datatype'), get('engine'), json_decode(get('options')));
            } elseif ($route->action == "updatesize" && $session['write']) {
                $result = $feed->update_user_feeds_size($session['userid']);
            } elseif ($route->action == "buffersize" && $session['write']) {
                $result = $feed->get_buffer_size();
                // To "fetch" multiple feed values in a single request
                // http://emoncms.org/feed/fetch.json?ids=123,567,890
            } elseif ($route->action == "fetch" && $session['read']) {
                $feedids = (array) explode(",", get('ids'));
                for ($i = 0; $i < count($feedids); $i++) {
                    $feedid = (int) $feedids[$i];
                    if ($feed->exist($feedid)) {
                        // if the feed exists
                        $result[$i] = $feed->get_value($feedid);
                        // null is a valid response
                    } else {
                        $result[$i] = false;
                    }
                    // false means feed not found
                }
            } else {
                $feedid = (int) get('id');
                // Actions that operate on a single existing feed that all use the feedid to select:
                // First we load the meta data for the feed that we want
                if ($feed->exist($feedid)) {
                    $f = $feed->get($feedid);
                    // if public or belongs to user
                    if ($f['public'] || $session['userid'] > 0 && $f['userid'] == $session['userid'] && $session['read']) {
                        if ($route->action == "timevalue") {
                            $result = $feed->get_timevalue($feedid);
                        } else {
                            if ($route->action == 'data') {
                                $skipmissing = 1;
                                $limitinterval = 1;
                                if (isset($_GET['skipmissing']) && $_GET['skipmissing'] == 0) {
                                    $skipmissing = 0;
                                }
                                if (isset($_GET['limitinterval']) && $_GET['limitinterval'] == 0) {
                                    $limitinterval = 0;
                                }
                                $result = $feed->get_data($feedid, get('start'), get('end'), get('interval'), $skipmissing, $limitinterval);
                            } else {
                                if ($route->action == "value") {
                                    $result = $feed->get_value($feedid);
                                } else {
                                    if ($route->action == "get") {
                                        $result = $feed->get_field($feedid, get('field'));
                                    } else {
                                        if ($route->action == "aget") {
                                            $result = $feed->get($feedid);
                                        } else {
                                            if ($route->action == 'histogram') {
                                                $result = $feed->histogram_get_power_vs_kwh($feedid, get('start'), get('end'));
                                            } else {
                                                if ($route->action == 'kwhatpower') {
                                                    $result = $feed->histogram_get_kwhd_atpower($feedid, get('min'), get('max'));
                                                } else {
                                                    if ($route->action == 'kwhatpowers') {
                                                        $result = $feed->histogram_get_kwhd_atpowers($feedid, get('points'));
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    // write session required
                    if (isset($session['write']) && $session['write'] && $session['userid'] > 0 && $f['userid'] == $session['userid']) {
                        // Storage engine agnostic
                        if ($route->action == 'set') {
                            $result = $feed->set_feed_fields($feedid, get('fields'));
                        } else {
                            if ($route->action == "insert") {
                                $result = $feed->insert_data($feedid, time(), get("time"), get("value"));
                            } else {
                                if ($route->action == "update") {
                                    $result = $feed->update_data($feedid, time(), get("time"), get('value'));
                                } else {
                                    if ($route->action == "delete") {
                                        $result = $feed->delete($feedid);
                                    } else {
                                        if ($route->action == "getmeta") {
                                            $result = $feed->get_meta($feedid);
                                        } else {
                                            if ($route->action == "csvexport") {
                                                $result = $feed->csv_export($feedid, get('start'), get('end'), get('interval'), get('timeformat'));
                                            } else {
                                                if ($route->action == "process") {
                                                    if ($f['engine'] != Engine::VIRTUALFEED) {
                                                        $result = array('success' => false, 'message' => 'Feed is not Virtual');
                                                    } else {
                                                        if ($route->subaction == "get") {
                                                            $result = $feed->get_processlist($feedid);
                                                        } else {
                                                            if ($route->subaction == "set") {
                                                                $result = $feed->set_processlist($feedid, post('processlist'));
                                                            } else {
                                                                if ($route->subaction == "reset") {
                                                                    $result = $feed->reset_processlist($feedid);
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if ($f['engine'] == Engine::MYSQL || $f['engine'] == Engine::MYSQLMEMORY) {
                            if ($route->action == "export") {
                                $result = $feed->mysqltimeseries_export($feedid, get('start'));
                            } else {
                                if ($route->action == "deletedatapoint") {
                                    $result = $feed->mysqltimeseries_delete_data_point($feedid, get('feedtime'));
                                } else {
                                    if ($route->action == "deletedatarange") {
                                        $result = $feed->mysqltimeseries_delete_data_range($feedid, get('start'), get('end'));
                                    }
                                }
                            }
                        } elseif ($f['engine'] == Engine::PHPTIMESERIES) {
                            if ($route->action == "export") {
                                $result = $feed->phptimeseries_export($feedid, get('start'));
                            }
                        } elseif ($f['engine'] == Engine::PHPFIWA) {
                            if ($route->action == "export") {
                                $result = $feed->phpfiwa_export($feedid, get('start'), get('layer'));
                            }
                        } elseif ($f['engine'] == Engine::PHPFINA) {
                            if ($route->action == "export") {
                                $result = $feed->phpfina_export($feedid, get('start'));
                            }
                        }
                    }
                } else {
                    $result = array('success' => false, 'message' => 'Feed does not exist');
                }
            }
        }
    }
    return array('content' => $result);
}
Esempio n. 11
0
 }
 require_once 'constant.php';
 require_once 'MysqlEntity.class.php';
 class_exists('Update') or (require_once 'Update.class.php');
 Update::ExecutePatch(true);
 require_once 'Feed.class.php';
 require_once 'Event.class.php';
 require_once 'User.class.php';
 require_once 'Folder.class.php';
 require_once 'Configuration.class.php';
 $cryptographicSalt = User::generateSalt();
 $synchronisationCode = substr(sha1(rand(0, 30) . time() . rand(0, 30)), 0, 10);
 $root = substr($_['root'], strlen($_['root']) - 1) == '/' ? $_['root'] : $_['root'] . '/';
 // DOSSIERS À CONSERVER TELS QUELS, SI DÉJÀ EXISTANTS
 $feedManager = new Feed();
 $feedManager->create();
 $eventManager = new Event();
 $eventManager->create();
 // COMPTE ADMINISTRATEUR, RÀZ SI NÉCESSAIRE
 $userManager = new User();
 if ($userManager->tableExists()) {
     // Suppose qu'il n'y a qu'un seul utilisateur
     $userManager->truncate();
 }
 $userManager->create();
 $admin = new User();
 $admin->setLogin($_['login']);
 $admin->setPassword($_['password'], $cryptographicSalt);
 $admin->save();
 $_SESSION['currentUser'] = serialize($admin);
 // DOSSIERS DE FLUX, RECRÉE LE DOSSIER GÉNÉRAL SI NÉCESSAIRE
Esempio n. 12
0
 private function create_feeds($userid, $node, &$feedArray)
 {
     global $feed_settings;
     require_once "Modules/feed/feed_model.php";
     $feed = new Feed($this->mysqli, $this->redis, $feed_settings);
     foreach ($feedArray as $f) {
         // Create each feed
         $name = $f->name;
         if (property_exists($f, "tag")) {
             $tag = $f->tag;
         } else {
             $tag = $node;
         }
         $datatype = constant($f->type);
         // DataType::
         $engine = constant($f->engine);
         // Engine::
         if (property_exists($f, "interval")) {
             $options_in[] = array();
             $options_in['interval'] = $f->interval;
         } else {
             $options_in = null;
         }
         $this->log->info("create_feeds() userid={$userid} tag={$tag} name={$name} datatype={$datatype} engine={$engine}");
         $result = $feed->create($userid, $tag, $name, $datatype, $engine, $options_in);
         if ($result["success"] !== true) {
             return $result;
         }
         $f->feedId = $result["feedid"];
         // Assign the created feed id to the feeds array
     }
     return $result;
 }
Esempio n. 13
0
 /**
  * Create feed
  *
  * @uses  Feed::create
  */
 public function after()
 {
     parent::after();
     if (isset($this->_items['title'])) {
         unset($this->_items['title']);
     }
     echo $this->_feed->create($this->_info, $this->_items);
 }
Esempio n. 14
0
function feed_controller()
{
    global $mysqli, $redis, $session, $route, $feed_settings;
    $result = false;
    include "Modules/feed/feed_model.php";
    $feed = new Feed($mysqli, $redis, $feed_settings);
    if ($route->format == 'html') {
        if ($route->action == "list" && $session['write']) {
            $result = view("Modules/feed/Views/feedlist_view.php", array());
        }
        if ($route->action == "api" && $session['write']) {
            $result = view("Modules/feed/Views/feedapi_view.php", array());
        }
    }
    if ($route->format == 'json') {
        // Public actions available on public feeds.
        if ($route->action == "list") {
            if (!isset($_GET['userid']) && $session['read']) {
                $result = $feed->get_user_feeds($session['userid']);
            }
            if (isset($_GET['userid']) && $session['read'] && $_GET['userid'] == $session['userid']) {
                $result = $feed->get_user_feeds($session['userid']);
            }
            if (isset($_GET['userid']) && $session['read'] && $_GET['userid'] != $session['userid']) {
                $result = $feed->get_user_public_feeds(get('userid'));
            }
            if (isset($_GET['userid']) && !$session['read']) {
                $result = $feed->get_user_public_feeds(get('userid'));
            }
        } elseif ($route->action == "getid" && $session['read']) {
            $result = $feed->get_id($session['userid'], get('name'));
        } elseif ($route->action == "create" && $session['write']) {
            $result = $feed->create($session['userid'], get('name'), get('datatype'), get('engine'), json_decode(get('options')));
        } elseif ($route->action == "updatesize" && $session['write']) {
            $result = $feed->update_user_feeds_size($session['userid']);
            // To "fetch" multiple feed values in a single request
            // http://emoncms.org/feed/fetch.json?ids=123,567,890
        } elseif ($route->action == "fetch" && $session['read']) {
            $feedids = (array) explode(",", get('ids'));
            for ($i = 0; $i < count($feedids); $i++) {
                $feedid = (int) $feedids[$i];
                if ($feed->exist($feedid)) {
                    $result[$i] = (double) $feed->get_value($feedid);
                } else {
                    $result[$i] = "";
                }
            }
        } else {
            $feedid = (int) get('id');
            // Actions that operate on a single existing feed that all use the feedid to select:
            // First we load the meta data for the feed that we want
            if ($feed->exist($feedid)) {
                $f = $feed->get($feedid);
                // if public or belongs to user
                if ($f['public'] || $session['userid'] > 0 && $f['userid'] == $session['userid'] && $session['read']) {
                    if ($route->action == "value") {
                        $result = $feed->get_value($feedid);
                    }
                    if ($route->action == "timevalue") {
                        $result = $feed->get_timevalue_seconds($feedid);
                    }
                    if ($route->action == "get") {
                        $result = $feed->get_field($feedid, get('field'));
                    }
                    // '/[^\w\s-]/'
                    if ($route->action == "aget") {
                        $result = $feed->get($feedid);
                    }
                    if ($route->action == 'histogram') {
                        $result = $feed->histogram_get_power_vs_kwh($feedid, get('start'), get('end'));
                    }
                    if ($route->action == 'kwhatpower') {
                        $result = $feed->histogram_get_kwhd_atpower($feedid, get('min'), get('max'));
                    }
                    if ($route->action == 'kwhatpowers') {
                        $result = $feed->histogram_get_kwhd_atpowers($feedid, get('points'));
                    }
                    if ($route->action == 'data') {
                        $result = $feed->get_data($feedid, get('start'), get('end'), get('dp'));
                    }
                    if ($route->action == 'average') {
                        $result = $feed->get_average($feedid, get('start'), get('end'), get('interval'));
                    }
                    if ($route->action == 'history') {
                        $result = $feed->get_history($feedid, get('start'), get('end'), get('interval'));
                    }
                }
                // write session required
                if (isset($session['write']) && $session['write'] && $session['userid'] > 0 && $f['userid'] == $session['userid']) {
                    // Storage engine agnostic
                    if ($route->action == 'set') {
                        $result = $feed->set_feed_fields($feedid, get('fields'));
                    }
                    if ($route->action == "insert") {
                        $result = $feed->insert_data($feedid, time(), get("time"), get("value"));
                    }
                    if ($route->action == "update") {
                        $result = $feed->update_data($feedid, time(), get("time"), get('value'));
                    }
                    if ($route->action == "delete") {
                        $result = $feed->delete($feedid);
                    }
                    if ($route->action == "getmeta") {
                        $result = $feed->get_meta($feedid);
                    }
                    if ($route->action == "csvexport") {
                        $feed->csv_export($feedid, get('start'), get('end'), get('interval'));
                    }
                    if ($f['engine'] == Engine::TIMESTORE) {
                        if ($route->action == "export") {
                            $result = $feed->timestore_export($feedid, get('start'), get('layer'));
                        }
                        if ($route->action == "exportmeta") {
                            $result = $feed->timestore_export_meta($feedid);
                        }
                        if ($route->action == "scalerange") {
                            $result = $feed->timestore_scale_range($feedid, get('start'), get('end'), get('value'));
                        }
                    } elseif ($f['engine'] == Engine::MYSQL) {
                        if ($route->action == "export") {
                            $result = $feed->mysqltimeseries_export($feedid, get('start'));
                        }
                        if ($route->action == "deletedatapoint") {
                            $result = $feed->mysqltimeseries_delete_data_point($feedid, get('feedtime'));
                        }
                        if ($route->action == "deletedatarange") {
                            $result = $feed->mysqltimeseries_delete_data_range($feedid, get('start'), get('end'));
                        }
                    } elseif ($f['engine'] == Engine::PHPTIMESERIES) {
                        if ($route->action == "export") {
                            $result = $feed->phptimeseries_export($feedid, get('start'));
                        }
                    } elseif ($f['engine'] == Engine::PHPFIWA) {
                        if ($route->action == "export") {
                            $result = $feed->phpfiwa_export($feedid, get('start'), get('layer'));
                        }
                    } elseif ($f['engine'] == Engine::PHPFINA) {
                        if ($route->action == "export") {
                            $result = $feed->phpfina_export($feedid, get('start'));
                        }
                    }
                }
            } else {
                $result = array('success' => false, 'message' => 'Feed does not exist');
            }
        }
    }
    return array('content' => $result);
}
Esempio n. 15
0
 public function action_profile()
 {
     $this->auto_render = FALSE;
     $xml = 'FALSE';
     $seoname = $this->request->param('seoname', NULL);
     if ($seoname !== NULL) {
         $user = new Model_User();
         $user->where('seoname', '=', $seoname)->where('status', '=', Model_User::STATUS_ACTIVE)->limit(1)->cached()->find();
         if ($user->loaded()) {
             $info = array('title' => 'RSS ' . htmlspecialchars($user->name, ENT_QUOTES), 'pubDate' => date("r"), 'description' => htmlspecialchars($user->name . ' - ' . $user->description, ENT_QUOTES), 'generator' => 'Yclas', 'link' => Route::url('profile', array('seoname' => $seoname)));
             $items = array();
             //last ads, you can modify this value at: advertisement.feed_elements
             $ads = new Model_Ad();
             $ads->where('status', '=', Model_Ad::STATUS_PUBLISHED)->where('id_user', '=', $user->id_user)->order_by('published', 'desc')->limit(Core::config('advertisement.feed_elements'));
             $ads = $ads->cached()->find_all();
             foreach ($ads as $a) {
                 $url = Route::url('ad', array('category' => $a->category->seoname, 'seotitle' => $a->seotitle));
                 $item = array('title' => htmlspecialchars($a->title, ENT_QUOTES), 'link' => $url, 'pubDate' => Date::mysql2unix($a->published), 'description' => htmlspecialchars(Text::removebbcode($a->description), ENT_QUOTES), 'guid' => $url);
                 if ($a->get_first_image() !== NULL) {
                     $item['description'] = '<img src="' . $a->get_first_image() . '" />' . $item['description'];
                 }
                 $items[] = $item;
             }
             $xml = Feed::create($info, $items);
         }
     }
     $this->response->headers('Content-type', 'text/xml');
     $this->response->body($xml);
 }
Esempio n. 16
0
 /**
  * Push feed url list in database
  * @param array urls
  */
 public function addFeeds($urls)
 {
     if (!empty($urls)) {
         $urls = array_unique($urls);
         foreach ($urls as $url) {
             $feed = Feed::create();
             $feed->url = $url;
             if (!$feed->exists()) {
                 $feed->save();
             }
         }
     }
 }