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']); } }