PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/demo2024feb.kerihosting.com/wp-content/plugins/wp-automatic/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/demo2024feb.kerihosting.com/wp-content/plugins/wp-automatic/core.ezinearticles.php |
<?php // Main class to inherit wp_automatic require_once 'core.php'; // Specific articles class Class WpAutomaticArticles extends wp_automatic{ /* * ---* article base get links for a keyword --- */ function article_base_getlinks($keyword, $camp) { $camp_opt = unserialize ( $camp->camp_options ); if (stristr ( $camp->camp_general, 'a:' )) $camp->camp_general = base64_encode ( $camp->camp_general ); $camp_general = unserialize ( base64_decode ( $camp->camp_general ) ); // get associated page num from the keyword and camp id from wp_automatic_articles_keys $query = "select * from {$this->wp_prefix}automatic_articles_keys where keyword = '$keyword' and camp_id = '$camp->camp_id'"; $camp_key = $this->db->get_results ( $query ); if (count ( $camp_key ) == 0){ echo '<br>Keyword record not found'; return false; } $camp_key = $camp_key [0]; $foundUrls = array(); $page = $camp_key->page_num; if ( $page == - 1) { //check if it is reactivated or still deactivated if($this->is_deactivated($camp->camp_id, $keyword)){ $page = '0000'; }else{ //still deactivated return false; } } //Make sure start is 0,1,2 for bing if( ! stristr($page, '1994') ){ $page = 0; }else{ $page = str_replace('1994', '', $page); } if($page >9 ) $page = 9; $startIndex = 1 + 10 * $page; echo '<br>Trying to call EA for new links start from page:' . $page; //$keywordenc = urlencode ( 'site:ezinearticles.com '. trim($keyword). ' inurl:"id"' ); //$keywordenc = urlencode ( trim($keyword). ' inurl:"id"' ); $keywordenc = urlencode ( trim($keyword) ); echo '<br>Using Google custom search to find new articles...'; //verify Google custom search key existence $wp_automatic_search_key = get_option('wp_automatic_search_key',''); if(trim($wp_automatic_search_key) == ''){ echo '<br><span style="color:red" >Google custom search API key is required. Please visit the plugin settings page and add it inside EzineArticles settings box</span>'; return false; } //Good we have some keys, verify usage limits //Now get one key out of many if applicable $wp_rankie_googlecustom_keys = explode(',', $wp_automatic_search_key); $wp_rankie_googlecustom_keys = array_filter($wp_rankie_googlecustom_keys); $now = time(); $validWorkingKey = ''; foreach ($wp_rankie_googlecustom_keys as $current_key){ if(trim($current_key) != ''){ //check if key is disabled or not $current_keyMd5 = md5($current_key); $disabledTill = get_option('wp_automatic_'.$current_keyMd5,'1463843434'); if($disabledTill > $now){ continue; }else{ $validWorkingKey = $current_key; break; } } } if(trim($validWorkingKey) == ''){ echo '<br><span style="color:red" >Custom search API keys reached its daily search requests limit, we will try again after one hour. each key gives us 100 daily search request.</b>'; return false; }else{ echo '<br>Using an added key:'.substr($validWorkingKey, 0,5).'.....'; } $wp_rankie_googlecustom_id = '013156076200156289477:aavh3lmtysa'; $wp_rankie_googlecustom_id = '013156076200156289477:e_o1j3uv0rs'; $wp_rankie_ezmlm_gl = 'google.com'; $url ="https://www.googleapis.com/customsearch/v1?key=" . urlencode( trim($validWorkingKey) ) . "&cx=" . urlencode( trim($wp_rankie_googlecustom_id) ) . "&q=".$keywordenc.'&googlehost='.urlencode($wp_rankie_ezmlm_gl).'&start='.$startIndex; //date limit if(in_array('OPT_ARTICLES_DATE' , $camp_opt )){ $cg_articles_date_last_val = $camp_general['cg_articles_date_last_val']; $cg_articles_date_last = $camp_general['cg_articles_date_last']; if(is_numeric($cg_articles_date_last_val)){ if($cg_articles_date_last == 'Months'){ $url.= "&dateRestrict=m{$cg_articles_date_last_val}"; }else{ //years $url.= "&dateRestrict=y{$cg_articles_date_last_val}"; } } } //echo '<br>Search URL:'.$url; //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); $exec=curl_exec($this->ch); $x=curl_error($this->ch); //validate a reply if(trim($exec) == ''){ echo '<br>Empty reply from Google search API with possible cURL error '.$x; return false; } //validate json if( ! stristr($exec , '{') ){ echo '<br>Not a json reply '.$exec; return false; } // good let's get results $jsonReply = json_decode($exec); if(isset($jsonReply->error)){ $jsonErr = $jsonReply->error->errors[0]; $errReason = $jsonErr->reason; $errMessage = $jsonErr->message; $message = 'Api returned an error: '.$errReason.' '.$errMessage; echo '<br>'.$message; // disable limited keys if($errReason == 'dailyLimitExceeded'){ update_option('wp_automatic_'.$current_keyMd5,$now + 60*60); } $return['message'] = $message; return $return; } if(isset($jsonReply->items)){ $foundLinks = $jsonReply->items; }else{ $foundLinks = array(); } foreach ($foundLinks as $foundLink){ $finalUrl= $foundLink->link; $foundUrls[] = $finalUrl; } // No links? return if yes if(count($foundUrls) == 0 ){ echo '<br> no matching results found for this keyword'; $query = "update {$this->wp_prefix}automatic_articles_keys set page_num = '-1' where keyword = '$keyword' and camp_id = '$camp->camp_id'"; $this->db->query ( $query ); //deactivate permanently $this->deactivate_key($camp->camp_id, $keyword,0); return false; }else{ // good lets update next page $page++; if($page > 9){ $query = "update {$this->wp_prefix}automatic_articles_keys set page_num = '-1' where keyword = '$keyword' and camp_id = '$camp->camp_id'"; $this->db->query ( $query ); //deactivate for 60 minutes $this->deactivate_key($camp->camp_id, $keyword ,0); }else{ $page= "1994$page"; $query = "update {$this->wp_prefix}automatic_articles_keys set page_num = $page where keyword = '$keyword' and camp_id = '$camp->camp_id' "; $this->db->query ( $query ); } } // Report links count echo '<br>Articles links got from EA:' . count ( $foundUrls ); $this->log ( 'links found', count ( $foundUrls ) . ' New Links added from ezine articles to post articles from' ); echo '<ol>'; $i = 0; foreach ( $foundUrls as $link ) { $link = urldecode($link); // verify id in link echo '<li>Link:'.($link); $link_url = $link; if (stristr ( $link, 'id=' )) { // verify uniqueness if( $this->is_execluded($camp->camp_id, $link_url) ){ echo '<-- Execluded'; continue; } if ( ! $this->is_duplicate($link_url) ) { $title = ''; $cache = ''; // cache link $urlEncoded = urlencode($link_url); $bingcache= ''; $query = "insert into {$this->wp_prefix}automatic_articles_links (link,keyword,page_num,title,bing_cache) values('$link' ,'$keyword','$page','$title','$bingcache')"; $this->db->query ( $query ); $freshlinks = 1; } else { echo ' <- duplicated <a href="'.get_edit_post_link($this->duplicate_id).'">#'.$this->duplicate_id.'</a>'; } echo '</li>'; // incrementing i } // if contain id $i ++; } // foreach link echo '</ol>'; // updating page num $page = $page + 1; $pageDisplayed = $page + 1; return; } /* * ---* articlebase process camp --- */ function articlebase_get_post($camp) { $keywords = $camp->camp_keywords; $keywords = explode ( ",", $keywords ); foreach ( $keywords as $keyword ) { $keyword = trim($keyword); if (trim ( $keyword ) != '') { //update last keyword update_post_meta($camp->camp_id, 'last_keyword', trim($keyword)); // check if keyword exhausted to skip $query = "select * from {$this->wp_prefix}automatic_articles_keys where keyword = '$keyword' and camp_id='$camp->camp_id'"; $key = $this->db->get_results ( $query ); $key = $key [0]; // process feed echo '<br><b>Getting article for Keyword:</b>' . $keyword; // get links to fetch and post on the blogs $query = "select * from {$this->wp_prefix}automatic_articles_links where keyword = '$keyword' "; $links = $this->db->get_results ( $query ); // when no links available get some links if (count ( $links ) == 0) { //clean any old cache for this keyword $query_delete = "delete from {$this->wp_prefix}automatic_articles_links where keyword = '$keyword' "; $this->db->query ( $query_delete ); $this->article_base_getlinks ( $keyword, $camp ); // get links to fetch and post on the blogs $links = $this->db->get_results ( $query ); } // if no links then return if (count ( $links ) != 0) { foreach ( $links as $link ) { // update the link status to 1 $query = "delete from {$this->wp_prefix}automatic_articles_links where id={$link->id}"; $this->db->query ( $query ); // processing page and getting content $url = ($link->link) ; $title = $link->title; $cacheTxt = $link->bing_cache; echo '<br>Processing Article :' . urldecode($url); //duplicaate check if($this->is_duplicate($url)){ echo ' <- duplicated <a href="'.get_edit_post_link($this->duplicate_id).'">#'.$this->duplicate_id.'</a>'; continue; } $binglink = "http://webcache.googleusercontent.com/search?q=cache:".urlencode($url); echo '<br>Cache link:'.$binglink; $headers = array(); curl_setopt($this->ch, CURLOPT_HTTPHEADER, $headers); curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, trim ( ( $binglink ) ) ); curl_setopt ( $this->ch, CURLOPT_REFERER, 'http://ezinearticles.com' ); $exec = curl_exec ( $this->ch ); $x = curl_error($this->ch); // bing cache if google cache failed if( ! stristr($exec,'comments') && stristr($cacheTxt, '|')){ echo '<br>Google cache did not return the correct content, trying Bing cache instead...'; $cacheParts = explode('|', $cacheTxt); $cacheLink = "http://cc.bingj.com/cache.aspx?q=123458&d=".$cacheParts[2]."&mkt=en-XA&setlang=en-US&w=".$cacheParts[3]; echo '<br>Cache link:'.$cacheLink; curl_setopt ( $this->ch, CURLOPT_URL, trim ( ( $cacheLink ) ) ); curl_setopt ( $this->ch, CURLOPT_REFERER, 'http:/bing.com' ); $exec = curl_exec ( $this->ch ); $x = curl_error($this->ch); } $cacheLoadSuccess = false; // success flag if(stristr($exec,'comments')){ //valid google cache echo '<br>Successfully loaded the page from cache'; $cacheLoadSuccess = true; }else{ // Google translate echo '<br>Google cache failed Loading using GtranslateProxy...'; require_once 'inc/proxy.GoogleTranslate.php'; try { $GoogleTranslateProxy = new GoogleTranslateProxy($this->ch); $exec = $GoogleTranslateProxy->fetch($url); } catch (Exception $e) { echo '<br>ProxyViaGoogleException:'.$e->getMessage(); } // Validate Google Translate Proxy if(stristr($exec,'comments')){ //valid google cache echo '<br>Successfully loaded the page from GTranslateProxy'; $cacheLoadSuccess = true; // pre Gtranslate adaption $exec = str_replace( 'article-content>','article-content">',$exec); $exec = str_replace('<div id=article-resource', '<div id="article-resource', $exec); $exec = str_replace('rel=author', 'rel="author', $exec); } if(!$cacheLoadSuccess){ // Direct call echo '<br>Google cache didnot return valid result direct call to ezine '.$x; curl_setopt ( $this->ch, CURLOPT_URL, trim ( ( urldecode( $url ) ) ) ); curl_setopt ( $this->ch, CURLOPT_REFERER, 'http://ezinearticles.com' ); $exec = curl_exec ( $this->ch ); if(stristr($exec, 'comments')){ echo '<br>Ezinearticles returned the article successfully '; }else{ if(stristr($exec,'excessive amount')){ echo '<br>Ezinearticles says there is excessive amount of traffic'; return false ; }else{ echo '<br>Ezinearticles did not return the article we called... Will die now and try with a new article another time. '; return false ; } } } } // extracting articles $arr = explode ( 'article-content">', $exec ); $lastpart = $arr [1]; unset ( $arr ); $newarr = explode ( '<div id="article-resource', $lastpart ); $cont = $newarr [0]; //remove last closing </div> $cont = preg_replace('{</div>$}s', '', trim($cont)); //striping js $cont = preg_replace('{<script.*?script>}s', '', $cont); $cont = preg_replace('{<div class=["]?mobile-ad-container["]?>.*?</div>}s', '', $cont); // get the title <title>Make Money With Google Profit Kits Exposed - Don't Get Ripped Off!</title> @preg_match_all ( "{<title>(.*?)</title>}", $exec, $matches, PREG_PATTERN_ORDER ); @$res = $matches [1]; @$ttl = $res [0]; if (isset ( $ttl )) { $title = $ttl; } // get author name and author link <a href="/?expert=Naina_Jain" rel="author" class="author-name" title="EzineArticles Expert Author Naina Jain"> Naina Jain </a> @preg_match_all ( '{<a href=(.*?) rel="author.*?>(.*?)</a>}', $exec, $matches, PREG_PATTERN_ORDER ); $author_link = $matches [1] [0]; // remove " $author_link = str_replace('"', '', $author_link); // fix from translation url if (stristr($author_link, 'translate')){ $authorParts = explode('u=', $author_link); $author_link = $authorParts[1] ; $author_link = preg_replace('{&.*}', '', $author_link ); } // fix relative linking if( ! stristr( $author_link , 'ezinearticles' )){ $author_link = 'http://ezinearticles.com' . $author_link; } $author_name = trim ( $matches [2] [0] ); $ret ['cont'] = $cont; $ret ['title'] = $title; $ret ['original_title'] = $title; $ret ['source_link'] = ($url); $ret ['author_name'] = $author_name; $ret ['author_link'] = $author_link; $ret ['matched_content'] = $cont; $this->used_keyword=$link->keyword; if( trim($ret['cont']) == '' ) echo ' exec:'.$exec; return $ret; } // foreach link } // if count(links) } // if keyword not '' } // foreach keyword } }