Esempio n. 1
0
 /**
  * Tests that Feed::parse gets the correct number of elements
  *
  * @test
  * @dataProvider provider_parse
  * @covers feed::parse
  * @param string  $source   URL to test
  * @param integer $expected Count of items
  */
 public function test_parse($source, $expected_titles)
 {
     $titles = array();
     foreach (Feed::parse($source) as $item) {
         $titles[] = $item['title'];
     }
     $this->assertSame($expected_titles, $titles);
 }
Esempio n. 2
0
 /**
  * Automatically executed before the widget action. Can be used to set
  * class properties, do authorization checks, and execute other custom code.
  *
  * @return  void
  */
 public function before()
 {
     //try to get the RSS from the cache
     $rss = Core::cache($this->rss_url, NULL, $this->rss_expire);
     //not cached :(
     if ($rss === NULL) {
         $rss = Feed::parse($this->rss_url, $this->rss_limit);
         Core::cache($this->rss_url, $rss, $this->rss_expire);
     }
     $this->rss_items = $rss;
 }
Esempio n. 3
0
 /**
  * 
  * @return array [$rss_url, $items]
  */
 public function fetch_data()
 {
     $cache = Cache::instance();
     $data = $cache->get($this->id);
     if (empty($data)) {
         $data = Feed::parse($this->rss_url, $this->limit);
         $cache->set($this->id, $data, Date::MINUTE * 10);
     }
     $data['rss_url'] = $this->rss_url;
     return $data;
 }
Esempio n. 4
0
 public function action_index()
 {
     //if not god redirect him to the normal profile page
     if (Auth::instance()->get_user()->id_role != Model_Role::ROLE_ADMIN) {
         HTTP::redirect(Route::url('oc-panel', array('controller' => 'profile', 'action' => 'index')));
     }
     Core::ocacu();
     $this->template->title = __('Welcome');
     Breadcrumbs::add(Breadcrumb::factory()->set_title($this->template->title));
     $rss_url = 'http://feeds.feedburner.com/RssBlogOpenEshop';
     $rss = Feed::parse($rss_url, 10);
     $this->template->content = View::factory('oc-panel/home', array('rss' => $rss));
 }
Esempio n. 5
0
File: docs.php Progetto: nexeck/docs
	public function action_static()
	{
		$category = $this->request->param('category');
		$article = $this->request->param('article');
		
		try
		{
			// Load the article
			$view = new View("docs/{$this->lang}/$category/$article");
		}
		catch (Exception $e)
		{
			// Oh noes!
			$this->response->status(404);
			$view = new View('404');
		}

		$this->template->content = $view;

		if (($feed = Cache::instance()->get('feed')) === NULL)
		{
			// GitHub atom feed URL
			$url = 'https://github.com/goyote/docs/commits/master.atom';

			// Grab the 10 latest entries
			$entries = Feed::parse($url, 10);

			$feed = array();
			foreach ($entries as $entry)
			{
				$feed[] = array(
					'title' => $entry['title'],
					'href' => (string) $entry['link']['href'],
					'date' => Date::formatted_time($entry['updated'], 'n-d-Y'),
				);
			}

			// Cache the entries for 1 day
			Cache::instance()->set('feed', $feed, Date::DAY);
		}

		$this->template->set(array(
			'category' => ucwords(Inflector::humanize($category)),
			'article' => ucwords(Inflector::humanize($article)),
			'url' => array('category' => $category, 'article' => $article),
			'navigation' => $this->_config['navigation'],
			'resources' => Arr::path($this->_config, "resources.$category.$article"),
			'languages' => $this->_config['language']['supported'],
			'feed' => $feed,
		));
	}
Esempio n. 6
0
 /**
  * Retrieve the news feed items. First try from cache, otherwise load it from the website.
  * @return array
  */
 private function _get_news_feed()
 {
     $benchmark = Profiler::start('Admin Dashboard', __FUNCTION__);
     $cache = Cache::instance();
     // Attempt to load feed from cache otherwise get it from the website.
     if (!($feed = $cache->get('admin.dashboard.news_feed', FALSE))) {
         try {
             $feed = Feed::parse($this->_news_feed_url);
             $cache->set('admin.dashboard.news_feed', $feed, 360);
         } catch (Exception $e) {
             Hint::error($e);
         }
     }
     Profiler::stop($benchmark);
     return $feed;
 }
Esempio n. 7
0
 public function action_index()
 {
     //if not god redirect him to the normal profile page
     if (Auth::instance()->get_user()->id_role != Model_Role::ROLE_ADMIN) {
         Request::current()->redirect(Route::url('oc-panel', array('controller' => 'profile', 'action' => 'index')));
     }
     Breadcrumbs::add(Breadcrumb::factory()->set_title(__('Welcome')));
     $this->template->title = 'Welcome';
     //try to get the RSS from the cache
     $rss_url = 'http://feeds.feedburner.com/OpenClassifieds';
     $rss = Core::cache($rss_url, NULL, 3 * 24 * 60 * 60);
     //not cached :(
     if ($rss === NULL) {
         $rss = Feed::parse($rss_url, 10);
         Core::cache($rss_url, $rss, 3 * 24 * 60 * 60);
     }
     $this->template->content = View::factory('oc-panel/home', array('rss' => $rss));
 }
Esempio n. 8
0
 public function action_index()
 {
     //if not god redirect him to the normal profile page
     if (Auth::instance()->get_user()->id_role != Model_Role::ROLE_ADMIN) {
         HTTP::redirect(Route::url('oc-panel', array('controller' => 'myads', 'action' => 'index')));
     }
     Core::ocacu();
     $this->template->title = __('Welcome');
     Breadcrumbs::add(Breadcrumb::factory()->set_title($this->template->title));
     $this->template->bind('content', $content);
     $content = View::factory('oc-panel/home');
     /////////////////////RSS////////////////////////////////
     //try to get the RSS from the cache
     $rss_url = 'http://feeds.feedburner.com/OpenClassifieds';
     $content->rss = Feed::parse($rss_url, 10);
     /////////////////////ADS////////////////////////////////
     $content->res = new Model_Ad();
     //filter ads by status
     $content->res = $content->res->where('status', '=', Core::get('status', Model_Ad::STATUS_PUBLISHED));
     $content->res = $content->res->order_by('created', 'desc')->limit(10)->find_all();
     /////////////////////STATS////////////////////////////////
     //Getting the dates and range
     $from_date = Core::post('from_date', strtotime('-1 month'));
     $to_date = Core::post('to_date', time());
     //we assure is a proper time stamp if not we transform it
     if (is_string($from_date) === TRUE) {
         $from_date = strtotime($from_date);
     }
     if (is_string($to_date) === TRUE) {
         $to_date = strtotime($to_date);
     }
     //mysql formated dates
     $my_from_date = Date::unix2mysql($from_date);
     $my_to_date = Date::unix2mysql($to_date);
     //dates range we are filtering
     $dates = Date::range($from_date, $to_date, '+1 day', 'Y-m-d', array('date' => 0, 'count' => 0), 'date');
     //dates displayed in the form
     $content->from_date = date('Y-m-d', $from_date);
     $content->to_date = date('Y-m-d', $to_date);
     //ads published last XX days
     $query = DB::select(DB::expr('DATE(published) date'))->select(DB::expr('COUNT(id_ad) count'))->from('ads')->where('status', '=', Model_Ad::STATUS_PUBLISHED)->where('published', 'between', array($my_from_date, $my_to_date))->group_by(DB::expr('DATE( published )'))->order_by('date', 'asc')->execute();
     $ads_dates = $query->as_array('date');
     //Today
     $query = DB::select(DB::expr('COUNT(id_ad) count'))->from('ads')->where('status', '=', Model_Ad::STATUS_PUBLISHED)->where(DB::expr('DATE( created )'), '=', DB::expr('CURDATE()'))->group_by(DB::expr('DATE( published )'))->order_by('published', 'asc')->execute();
     $ads = $query->as_array();
     $content->ads_today = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Yesterday
     $query = DB::select(DB::expr('COUNT(id_ad) count'))->from('ads')->where('status', '=', Model_Ad::STATUS_PUBLISHED)->where(DB::expr('DATE( created )'), '=', date('Y-m-d', strtotime('-1 day')))->group_by(DB::expr('DATE( published )'))->order_by('published', 'asc')->execute();
     $ads = $query->as_array();
     $content->ads_yesterday = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Last 30 days ads
     $query = DB::select(DB::expr('COUNT(id_ad) count'))->from('ads')->where('status', '=', Model_Ad::STATUS_PUBLISHED)->where('published', 'between', array(date('Y-m-d', strtotime('-30 day')), date::unix2mysql()))->execute();
     $ads = $query->as_array();
     $content->ads_month = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //total ads
     $query = DB::select(DB::expr('COUNT(id_ad) count'))->from('ads')->where('status', '=', Model_Ad::STATUS_PUBLISHED)->execute();
     $ads = $query->as_array();
     $content->ads_total = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     /////////////////////VISITS STATS////////////////////////////////
     //visits created last XX days
     $query = DB::select(DB::expr('DATE(created) date'))->select(DB::expr('COUNT(id_visit) count'))->from('visits')->where('created', 'between', array($my_from_date, $my_to_date))->group_by(DB::expr('DATE( created )'))->order_by('date', 'asc')->execute();
     $visits = $query->as_array('date');
     $stats_daily = array();
     foreach ($dates as $date) {
         $count_views = isset($visits[$date['date']]['count']) ? $visits[$date['date']]['count'] : 0;
         $count_ads = isset($ads_dates[$date['date']]['count']) ? $ads_dates[$date['date']]['count'] : 0;
         $stats_daily[] = array('date' => $date['date'], 'views' => $count_views, 'ads' => $count_ads);
     }
     $content->stats_daily = $stats_daily;
     //Today
     $query = DB::select(DB::expr('COUNT(id_visit) count'))->from('visits')->where(DB::expr('DATE( created )'), '=', DB::expr('CURDATE()'))->group_by(DB::expr('DATE( created )'))->order_by('created', 'asc')->execute();
     $ads = $query->as_array();
     $content->visits_today = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Yesterday
     $query = DB::select(DB::expr('COUNT(id_visit) count'))->from('visits')->where(DB::expr('DATE( created )'), '=', date('Y-m-d', strtotime('-1 day')))->group_by(DB::expr('DATE( created )'))->order_by('created', 'asc')->execute();
     $ads = $query->as_array();
     $content->visits_yesterday = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Last 30 days visits
     $query = DB::select(DB::expr('COUNT(id_visit) count'))->from('visits')->where('created', 'between', array(date('Y-m-d', strtotime('-30 day')), date::unix2mysql()))->execute();
     $visits = $query->as_array();
     $content->visits_month = isset($visits[0]['count']) ? $visits[0]['count'] : 0;
     //total visits
     $query = DB::select(DB::expr('COUNT(id_visit) count'))->from('visits')->execute();
     $visits = $query->as_array();
     $content->visits_total = isset($visits[0]['count']) ? $visits[0]['count'] : 0;
     /////////////////////ORDERS STATS////////////////////////////////
     //orders created last XX days
     $query = DB::select(DB::expr('DATE(created) date'))->select(DB::expr('COUNT(id_order) count'))->select(DB::expr('SUM(amount) total'))->from('orders')->where('created', 'between', array($my_from_date, $my_to_date))->where('status', '=', Model_Order::STATUS_PAID)->group_by(DB::expr('DATE( created )'))->order_by('date', 'asc')->execute();
     $orders = $query->as_array('date');
     $stats_orders = array();
     foreach ($dates as $date) {
         $count_orders = isset($orders[$date['date']]['count']) ? $orders[$date['date']]['count'] : 0;
         $count_sum = isset($orders[$date['date']]['total']) ? $orders[$date['date']]['total'] : 0;
         $stats_orders[] = array('date' => $date['date'], '#orders' => $count_orders, '$' => $count_sum);
     }
     $content->stats_orders = $stats_orders;
     //Today
     $query = DB::select(DB::expr('COUNT(id_order) count'))->from('orders')->where(DB::expr('DATE( created )'), '=', DB::expr('CURDATE()'))->where('status', '=', Model_Order::STATUS_PAID)->group_by(DB::expr('DATE( created )'))->order_by('created', 'asc')->execute();
     $ads = $query->as_array();
     $content->orders_yesterday = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Yesterday
     $query = DB::select(DB::expr('COUNT(id_order) count'))->from('orders')->where(DB::expr('DATE( created )'), '=', date('Y-m-d', strtotime('-1 day')))->where('status', '=', Model_Order::STATUS_PAID)->group_by(DB::expr('DATE( created )'))->order_by('created', 'asc')->execute();
     $ads = $query->as_array();
     $content->orders_today = isset($ads[0]['count']) ? $ads[0]['count'] : 0;
     //Last 30 days orders
     $query = DB::select(DB::expr('COUNT(id_order) count'))->from('orders')->where('created', 'between', array(date('Y-m-d', strtotime('-30 day')), date::unix2mysql()))->where('status', '=', Model_Order::STATUS_PAID)->execute();
     $orders = $query->as_array();
     $content->orders_month = isset($orders[0]['count']) ? $orders[0]['count'] : 0;
     //total orders
     $query = DB::select(DB::expr('COUNT(id_order) count'))->from('orders')->where('status', '=', Model_Order::STATUS_PAID)->execute();
     $orders = $query->as_array();
     $content->orders_total = isset($orders[0]['count']) ? $orders[0]['count'] : 0;
 }
Esempio n. 9
0
 /**
  * Automatically executed before the widget action. Can be used to set
  * class properties, do authorization checks, and execute other custom code.
  *
  * @return  void
  */
 public function before()
 {
     //try to get the RSS from the cache
     $rss = Feed::parse($this->rss_url, $this->rss_limit, $this->rss_expire);
     $this->rss_items = $rss;
 }
Esempio n. 10
0
<?php

// Displayed feeds are cached for 5 minutes
if (!Fragment::load('feed:' . $feed . ':' . $limit, Date::MINUTE * 5)) {
    // Parse the feed
    $items = Feed::parse($feed, $limit);
    // Set the "link" and "title" variable names
    isset($link) or $link = 'link';
    isset($title) or $title = 'title';
    foreach ($items as $item) {
        // Clean the title so no one can inject anything
        $clean = html::chars($item[$title]);
        // Shorten it to 50 characters, but don't cut words in half, add 2 so that if the 51st char is a space, it will grab the 52nd character, and the word its attached to, so that the strrpos below works.
        $short = Text::limit_chars($clean, 52, false, true);
        // If the string is longer than 50 chars, cut off the leftover workd from limit_chars, and append '...'
        if (strlen($short) > 50) {
            $short = substr($short, 0, strrpos($short, ' ')) . '&#8230;';
        }
        // At this point, $short is at MAX 51 characters (50 characters of the string + "..."), usually less, because its rare for the words to line up exactly with the 50th character.
        echo '<li>' . HTML::anchor($item[$link], $short, array('title' => $clean)) . '</li>';
    }
    Fragment::save();
}
Esempio n. 11
0
 private function rss_feed()
 {
     // RSS Feed parameters:
     $api_id = 2;
     // api_id = 2 for RSS Feeds
     // Perform gathering for each active RSS feed URL for given project_id
     $rss_feeds = $this->model_gather->get_active_rss_feeds($this->project_id);
     foreach ($rss_feeds as $rss_feed) {
         $total_results_gathered = 0;
         // If RSS feed was set searchable generate search query GET string
         $keyword_str = "";
         if ($rss_feed['searchable']) {
             $num_keywords = count($this->keywords_phrases);
             $i = 0;
             foreach ($this->keywords_phrases as $keyword_phrase) {
                 $i++;
                 $word_split = explode(" ", $keyword_phrase['keyword_phrase']);
                 if (count($word_split) > 1) {
                     // Is phrase (more than 1 word)
                     // Check if searching "exact phrase" -> if so add quotes
                     if ($keyword_phrase['exact_phrase']) {
                         $keyword_str .= '"' . urlencode($keyword_phrase['keyword_phrase']) . '"';
                     } else {
                         $keyword_str .= '(' . urlencode($keyword_phrase['keyword_phrase']) . ')';
                     }
                 } else {
                     // Is single keyword
                     $keyword_str .= urlencode($keyword_phrase['keyword_phrase']);
                 }
                 if ($i < $num_keywords) {
                     $keyword_str .= '+OR+';
                 }
             }
         }
         $connection_retries = 0;
         $this->api_connect_error = 0;
         while (TRUE) {
             // Compile request URL
             $request_url = $rss_feed['url'] . $keyword_str;
             print "Query: {$request_url}\n";
             // Check for connection errors
             try {
                 $status_code = Remote::status($request_url);
             } catch (Exception $e) {
                 $this->api_connect_error = "Error connecting to {$request_url}. Cannot locate host.";
             }
             if (!$this->api_connect_error and ($status_code < 200 or $status_code > 299)) {
                 $this->api_connect_error = "Error connecting to {$request_url}. Status code: {$status_code}";
             }
             if (!$this->api_connect_error) {
                 $rss_output = Feed::parse($request_url);
                 $num_results = count($rss_output);
                 if ($num_results > 0) {
                     // Loop through each result, parse, and store data
                     foreach ($rss_output as $item) {
                         $title = array_key_exists('title', $item) ? $item['title'] : '';
                         $text = array_key_exists('description', $item) ? $item['description'] : '';
                         $date_published_timestamp = array_key_exists('pubDate', $item) ? strtotime($item['pubDate']) : 0;
                         // Append title to text & strip all HTML tags except <br>'s
                         $text = "Title: {$title}<br>{$text}";
                         $text = strip_tags($text, "<br>");
                         // Determine unique identifier, if no URL -> use guid -> if no GUID give error
                         if (array_key_exists('link', $item) and $item['link'] != "") {
                             $url = $item['link'];
                         } else {
                             if (array_key_exists('guid', $item)) {
                                 $url = $item['guid'];
                             } else {
                                 print "Error: item has no URL or GUID. Cannot use.\n";
                                 continue;
                             }
                         }
                         // Add each result to database
                         $require_keywords = $rss_feed['searchable'] ? 0 : 1;
                         // Only require keywords if RSS feed is NOT searchable
                         $total_results_gathered += $this->add_metadata($url, $text, $require_keywords, array('project_id' => $this->project_id, 'api_id' => $api_id, 'date_published' => $date_published_timestamp, 'date_retrieved' => time()));
                     }
                 }
                 break;
             } else {
                 // Retry connecting to API
                 $connection_retries++;
                 // Connection error (only for non-searchable RSS feeds, it is assumed an error has occured if no item comes through the feed after multiple connection attempts)
                 if ($connection_retries > $this->connection_retries) {
                     if (!$rss_feed['searchable']) {
                         $this->model_gather->insert_gather_log(array('project_id' => $this->project_id, 'search_query' => $this->api_connect_error, 'date' => time(), 'results_gathered' => 0, 'error' => 1));
                         $this->api_connect_error = 1;
                     }
                     break;
                 }
             }
         }
         // Add entry to gather log (as long as no errors occurred)
         if (!$this->api_connect_error) {
             $this->model_gather->insert_gather_log(array('project_id' => $this->project_id, 'search_query' => $request_url, 'date' => time(), 'results_gathered' => $total_results_gathered));
         }
     }
 }
Esempio n. 12
0
         exit(_t('YOU_MUST_BE_CONNECTED_ACTION'));
     }
     require_once "SimplePie.class.php";
     if (!isset($_['newUrl'])) {
         break;
     }
     $newFeed = new Feed();
     $newFeed->setUrl(Functions::clean_url($_['newUrl']));
     if ($newFeed->notRegistered()) {
         ///@TODO: avertir l'utilisateur du doublon non ajouté
         $newFeed->getInfos();
         $newFeed->setFolder(isset($_['newUrlCategory']) ? $_['newUrlCategory'] : 1);
         $newFeed->save();
         $enableCache = $configurationManager->get('synchronisationEnableCache') == '' ? 0 : $configurationManager->get('synchronisationEnableCache');
         $forceFeed = $configurationManager->get('synchronisationForceFeed') == '' ? 0 : $configurationManager->get('synchronisationForceFeed');
         $newFeed->parse(time(), $_, $enableCache, $forceFeed);
         Plugin::callHook("action_after_addFeed", array(&$newFeed));
     }
     header('location: ./settings.php#manageBloc');
     break;
 case 'changeFeedFolder':
     if ($myUser == false) {
         exit(_t('YOU_MUST_BE_CONNECTED_ACTION'));
     }
     if (isset($_['feed'])) {
         $feedManager->change(array('folder' => $_['folder']), array('id' => $_['feed']));
     }
     header('location: ./settings.php');
     break;
 case 'removeFeed':
     if ($myUser == false) {
Esempio n. 13
0
 /**
  * Parses authentic jobs feeds
  *
  * @var Integer $max_days Max of days old to fectch an ad
  */
 private function action_aj($max_days = null)
 {
     // Selects the feed
     $jobs = Feed::parse("http://www.authenticjobs.com/rss/index.xml");
     echo "[Authentic Jobs]\n";
     if (count($jobs) > 0) {
         echo "Found " . count($jobs) . " jobs...\n";
         $new_ads = 0;
         // Iterates and start the actual import
         foreach ($jobs as $key => $job) {
             if ($max_days) {
                 $datetime1 = date_create($job['pubDate']);
                 $datetime2 = date_create('now');
                 $interval = date_diff($datetime1, $datetime2);
                 $diff = (int) $interval->format('%r%a');
                 // If older ignore
                 if ($diff > $max_days) {
                     continue;
                 }
             }
             // Splits the title and company name
             $parse_title = explode(":", $job['title']);
             $job['title'] = $parse_title[1];
             $job['company_name'] = $parse_title[0];
             echo "Fetching: {$job['title']}...";
             // Checks for an existing ad
             $ad = ORM::factory('ad')->where('title', '=', trim($job['title']))->where('company_name', '=', trim($job['company_name']))->find_all();
             // if exists go to gnext
             if ($ad->count() > 0) {
                 echo "[DUPLICATED]\n";
                 continue;
             }
             // Get the page contents
             $page = file_get_html($job['link']);
             // Parse the logo if it exists
             $job['company_logo'] = null;
             $logo = $page->find('a[class=avatar]', 0);
             if ($logo) {
                 $logo = $logo->children(0)->src;
                 $job['company_logo'] = "http://www.authenticjobs.com/" . $logo;
                 if (copy($job['company_logo'], $this->config['global']['base_path'] . "/media/uploads/tmp_file.jpg")) {
                     $job['company_logo'] = $this->save_image($this->config['global']['base_path'] . "/media/uploads/tmp_file.jpg");
                     unlink($this->config['global']['base_path'] . "/media/uploads/tmp_file.jpg");
                 }
             }
             // Get the job type
             $type = $page->find('h4[class=type]', 0)->innertext;
             switch ($type) {
                 case 'Full-time':
                     $job['jobtype_id'] = 1;
                     break;
                 case 'Contract':
                     $job['jobtype_id'] = 2;
                     break;
                 case 'Freelance':
                     $job['jobtype_id'] = 3;
                     break;
                 case 'internship':
                     $job['jobtype_id'] = 4;
                     break;
                 default:
                     $job['jobtype_id'] = 1;
             }
             // Get the company url
             $job['company_url'] = null;
             if ($page->find('li[class=website]', 0)) {
                 $job['company_url'] = $page->find('li[class=website]', 0)->children(1)->href;
             }
             // Checks if this is a telecommuter
             $job['telecommute'] = FALSE;
             if ($page->find('em[class=telecommute]')) {
                 $job['telecommute'] = TRUE;
             }
             // Destroy the page object
             $page->clear();
             unset($page);
             // Finds the location
             $matches = array();
             preg_match("/<p><strong>\\((.+?)\\)/iu", $job['description'], $matches);
             $job['location'] = 'Anywhere';
             if (count($matches) > 0) {
                 $job['location'] = $matches[1];
             }
             // Cleans the description
             echo "[OK]\n";
             $this->add_ad(array('title' => $job['title'], 'description' => $job['description'], 'budget' => null, 'category_id' => null, 'jobtype_id' => $job['jobtype_id'], 'contact' => $job['link'], 'category_id' => 2, 'location' => $job['location'], 'company_name' => $job['company_name'], 'company_url' => $job['company_url'], 'telecommute' => $job['telecommute'], 'created_at' => date("Y-m-d h:i:s", strtotime($job['pubDate'])), 'email' => '*****@*****.**', 'company_logo' => $job['company_logo'], 'jobboard_id' => 2));
             $new_ads++;
         }
         print "[Authentic Jobs Completed with {$new_ads} new ads]\n\n\n";
     }
 }
Esempio n. 14
0
 /**
  * Tests that Feed::parse gets the correct number of elements
  *
  * @test
  * @dataProvider provider_parse
  * @covers feed::parse
  * @param string  $source   URL to test
  * @param integer $expected Count of items
  */
 public function test_parse($source, $expected)
 {
     $this->markTestSkipped('We don\'t go to the internet for tests.');
     $this->assertEquals($expected, count(Feed::parse($source)));
 }