public static function get_instance()
 {
     // If the single instance hasn't been set, set it now.
     if (null == self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
 public static function load_google_feed_rss($rss_url = '', $amount = 50)
 {
     if (!$rss_url) {
         return;
     }
     $rss_url = esc_url($rss_url);
     $amount = (int) $amount ? (int) $amount : 10;
     $arr_url = array('v' => '1.0', 'output' => 'json', 'num' => $amount, 'q' => $rss_url);
     $link = self::$google_link_api . "feed/load?" . http_build_query($arr_url);
     $content = file_get_contents($link);
     $jobject = json_decode($content);
     $result = $arr_hashes = array();
     if (isset($jobject->responseStatus) && $jobject->responseStatus == '200') {
         foreach ($jobject->responseData->feed->entries as $i => $entry) {
             $url = esc_url($entry->link);
             $hash = DLN_Cron_Helper::generate_hash($url);
             $arr_hashes[] = $hash;
             $obj = new stdClass();
             $obj->title = $entry->title;
             $obj->link = $url;
             $obj->publishedDate = date('Y-m-d H:i:s', strtotime($entry->publishedDate));
             //$obj->contentSnippet = wp_strip_all_tags( trim( $entry->contentSnippet ) );
             $content = preg_replace('/\\s+/', ' ', wp_strip_all_tags(trim($entry->content)));
             $obj->content = $content;
             //$obj->categories     = $entry->categories;
             $obj->hash = $hash;
             $result[] = $obj;
             $arr_urls[] = $url;
         }
     }
     return array('post' => $result, 'hash' => $arr_hashes, 'urls' => $arr_urls);
 }
 private static function process_crawl_data($rss_link, $term_id, $folders)
 {
     if (!$rss_link || !$term_id) {
         return;
     }
     $data = DLN_Source_Helper::load_rss_link($rss_link);
     //$data = DLN_Source_Helper::load_google_feed_rss( $rss_link );
     // get links added in db
     $hashes = $data['hash'];
     $posts = $data['post'];
     $arr_urls = $data['urls'];
     $arr_url = parse_url(esc_url($rss_link));
     $site = isset($arr_url['host']) ? $arr_url['host'] : '';
     $hashes_added = self::get_post_link_added($site, $hashes);
     // Exclude links added
     $post_added_ids = array();
     if (!empty($hashes_added)) {
         $arr_new_posts = array();
         foreach ($posts as $i => $post) {
             foreach ($hashes_added as $j => $hash) {
                 if (isset($hash['hash']) && $post->hash == $hash['hash']) {
                     unset($posts[$i]);
                     $post_added_ids[] = $hash['post_id'];
                 }
             }
         }
         $arr_new_posts = array_merge($posts);
         $posts = $arr_new_posts;
     }
     // Add relation for post and source
     self::add_relate_post_source($post_added_ids, $term_id);
     // Re-validate url
     foreach ($posts as $i => $post) {
         if (!self::is_valid_url($post->link)) {
             unset($posts[$i]);
         }
     }
     // Assign facebook information for posts
     $links = !empty($arr_urls) ? implode("','", $arr_urls) : '';
     if ($links) {
         $fql = urlencode("SELECT url, normalized_url, total_count, share_count, like_count, comment_count, comments_fbid FROM link_stat WHERE url IN ('{$links}')");
         $app_id = FB_APP_ID;
         $app_secret = FB_SECRET;
         $jfb_object = json_decode(file_get_contents_curl("https://graph.facebook.com/fql?q={$fql}&access_token={$app_id}|{$app_secret}"), false, 512, JSON_BIGINT_AS_STRING);
         if (!empty($jfb_object) && isset($jfb_object->data)) {
             foreach ($posts as $i => $post) {
                 foreach ($jfb_object->data as $j => $fb_obj) {
                     if ($post->link == $fb_obj->url) {
                         $posts[$i]->total_count = $fb_obj->total_count;
                         $posts[$i]->share_count = $fb_obj->share_count;
                         $posts[$i]->like_count = $fb_obj->like_count;
                         $posts[$i]->comment_count = $fb_obj->comment_count;
                         $posts[$i]->comments_fbid = $fb_obj->comments_fbid;
                     }
                 }
             }
         }
     }
     if (!empty($posts)) {
         $arr_post_ids = array();
         foreach ($posts as $i => $post) {
             // Get published date use google news api
             if ($post->title) {
                 //$post = DLN_Source_Helper::load_google_news( $post->title, $post->link, $post );
                 // Get image use google images api
                 //if ( empty( $post->image ) ) {
                 //$post    = DLN_Source_Helper::load_google_images( $post->title, $post->link, $post );
                 $post_id = self::insert_post_link($post, $term_id, $folders);
                 if ($post_id) {
                     // Insert to dln_post_link
                     $link = esc_url($post->link);
                     $arr_url = parse_url($link);
                     $site = isset($arr_url['host']) ? $arr_url['host'] : '';
                     $hash = DLN_Cron_Helper::generate_hash($link);
                     $data = array('post_id' => $post_id, 'site' => $site, 'link' => $link, 'hash' => $hash, 'time_create' => date('Y-m-d H:i:s'), 'total_count' => $post->total_count, 'comment_fbid' => $post->comments_fbid);
                     self::insert_dln_post_link($data);
                     $arr_post_ids[] = $post_id;
                 }
                 //}
             }
         }
         self::add_relate_post_source($arr_post_ids, $term_id);
     }
     // Update crawl count source link
     $crawl_count = 1;
     $data = array('crawl' => $crawl_count);
     self::update_source_link($data, $term_id);
     var_dump($posts, date('Y-m-d H:i:s'));
 }
 public function save_dln_source($term_id, $tt_id)
 {
     if (!$term_id) {
         return;
     }
     $data = array();
     if (isset($_POST['dln_source_link'])) {
         $data['link'] = $_POST['dln_source_link'];
         if (isset($_POST['dln_source_hash'])) {
             if (empty($_POST['dln_source_hash'])) {
                 $data['hash'] = DLN_Cron_Helper::generate_hash($data['link']);
             } else {
                 $data['hash'] = $_POST['dln_source_hash'];
             }
         }
     }
     if (isset($_POST['dln_source_priority'])) {
         $data['priority'] = $_POST['dln_source_priority'];
     }
     if (isset($_POST['dln_source_crawl'])) {
         $data['crawl'] = $_POST['dln_source_crawl'];
     }
     if (isset($_POST['dln_source_enable'])) {
         $data['enable'] = $_POST['dln_source_enable'];
     }
     $return = self::insert_source($term_id, $data);
     if (isset($_POST['dln_source_folder'])) {
         self::insert_source_folder($term_id, $_POST['dln_source_folder']);
     }
 }