/** * Method to parse the source's data into a standard format */ protected function parse_data() { // Create a normalized feed array (to be served later) $parsed_data = array(); // Reference just the feed $feed = $this->data->feed; // If the feed doesn't have a title, give it a generic name $feed_title = $feed->title(); if (strlen($feed_title) <= 0) { $feed_title = 'Plymouth State News'; } // Let's loop through each article $item_count = 0; foreach ($feed as $item) { // If we've gone over the post limit setting, then break out of this loop if ($item_count > $this->post_limit) { // Stop adding posts from this feed break; } // Cut posts if they're too old $post_timestamp = strtotime($item->pubDate()); if (time() - $post_timestamp > $this->old_post_days * 86400) { // Skip adding this one... its too old continue; } // Quick function to clean the posts text $clean_the_post = function ($post) { // Run some cleaners on the string $post = htmlspecialchars_decode($post); $post = html_entity_decode($post); $post = strip_tags($post); $post = \PSU::html_all_entities($post); $post = str_replace('⿿', '\'', $post); return $post; }; $post_text = $clean_the_post($item->title()); // Add the posts data to the normalized array $parsed_data[] = array('source' => 'RSS', 'title' => $feed_title, 'userid' => '', 'rawtime' => $item->pubDate(), 'timestamp' => $post_timestamp, 'datetime' => \PSU::html5_datetime($post_timestamp), 'time_ago' => \PSU::date_diff($post_timestamp, time(), 'simple'), 'url' => $item->link(), 'text' => $post_text, 'description' => $item->description(), 'content' => $item->content()); $item_count++; } return $parsed_data; }