PK qhYJF F ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/newfitnessnews.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/newfitnessnews.kerihosting.com/wp-content/plugins/wp-automatic/core.php |
<?php // spintax require_once ('inc/class.spintax.php'); // youtube require_once ('inc/youtube_class.php'); /* * ---* Auto Link Builder Class --- */ class wp_automatic { public $ch = ''; public $db = ''; public $spintax = ''; public $plugin_url = ''; public $wp_prefix = ''; public $used_keyword = ''; public $used_link =''; public $used_tags = '' ; public $duplicate_id = ''; public $cached_file_path = ''; public $minimum_post_timestamp = ''; public $minimum_post_timestamp_camp = ''; public $debug = false; public $translationSuccess ; public $currentCampID ; // Excluded links cache public $campExcludedLinks; // excluded links of the currecnt campaign comma separated public $campExcludedLinksFetched; // true if the excluded links fetched from the database // Duplicated links cache public $campOldDuplicateLinks; // duplicate links found from last run public $campOldDuplicateLinksFetched; // loaded or not? public $campNewDuplicateLinks; // new checked and found duplicate links public $campDuplicateLinksUpdate; // update them or not flag // Call limit public $sourceCallLimit; // number of times allowed to call the source if reached exists public $sourceCallTimes; // number of times the source was called // Link sufix public $isLinkSuffixed; //link once public $isLinkOnce; //proxy connected or not public $isProxified; //general banned words public $generalBannedWords; // if amazon location was simulated public $isAmazonLocationSimulated; /* * ---* Class Constructor --- */ function __construct() { // plugin url $siteurl = get_bloginfo ( 'url' ); $this->plugin_url = $siteurl . '/wp-content/plugins/alb/'; // db global $wpdb; $this->db = $wpdb; $this->wp_prefix = $wpdb->prefix; // $this->db->show_errors(); @$this->db->query ( "set session wait_timeout=28800" ); // curl $this->ch = curl_init (); curl_setopt ( $this->ch, CURLOPT_HEADER, 0 ); curl_setopt ( $this->ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $this->ch, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt ( $this->ch, CURLOPT_TIMEOUT, 200 ); curl_setopt ( $this->ch, CURLOPT_REFERER, 'http://www.bing.com/' ); curl_setopt ( $this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' ); //curl_setopt($this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8'); curl_setopt ( $this->ch, CURLOPT_MAXREDIRS, 20 ); // Good leeway for redirections. @curl_setopt ( $this->ch, CURLOPT_FOLLOWLOCATION, 1 ); // Many login forms redirect at least once. $cjname = $this->cookieJarName(); @curl_setopt ( $this->ch, CURLOPT_COOKIEJAR, str_replace('core.php', $cjname, __FILE__) ); @curl_setopt ( $this->ch, CURLOPT_COOKIEJAR, $cjname ); curl_setopt ( $this->ch, CURLOPT_SSL_VERIFYPEER, false ); //verbose /* $verbose=fopen( str_replace('core.php', 'verbose.txt', __FILE__) , 'w'); curl_setopt($this->ch, CURLOPT_VERBOSE , 1); curl_setopt($this->ch, CURLOPT_STDERR,$verbose); */ // spintax $this->spintax = new Spintax (); // Ini excluded links $this->campExcludedLinksFetched = false; $this->campOldDuplicateLinksFetched = false; $this->campDuplicateLinksUpdate = false; $this->campNewDuplicateLinks = array(); // Link suffix $this->isLinkSuffixed = false; // Link once $this->isLinkOnce = false; // Call Limit $this->sourceCallLimit = 2 ; $this->sourceCallTimes = 0 ; // proxified $this->isProxified = false; //wp_automatic_ccc_stop $this->generalBannedWords = get_option('wp_automatic_ccc_stop',''); $this->isAmazonLocationSimulated = false; } /* * ---* Function Process Campaigns --- */ function process_campaigns($cid = false) { // DB prefix $prefix = $this->db->prefix; // Single or all check if (trim ( $cid ) == '') { // All campaings $last = get_option ( 'gm_last_processed', 0 ); // get all the campaigns from the db lower than the last processed $query = "SELECT * FROM {$this->wp_prefix}automatic_camps where camp_id < $last ORDER BY camp_id DESC"; $camps = $this->db->get_results ( $query ); // check if results returned with id less than the last processed or not if not using regular method $query = "SELECT * FROM {$this->wp_prefix}automatic_camps WHERE camp_id >= $last ORDER BY camp_id DESC"; $camps2 = $this->db->get_results ( $query ); // merging 2 arrays $camps = array_merge ( $camps, $camps2 ); } else { // Single campaign process $query = "SELECT * FROM {$this->wp_prefix}automatic_camps where camp_id = $cid ORDER BY camp_id DESC"; $camps = $this->db->get_results ( $query ); } // check if need to process camaigns or skip if (count ( $camps ) == 0) { echo '<br>No valid campaigns to process '; return; }else{ if(trim($cid) == '') echo '<br>DB contains '.count($camps).' campaigns<br>'; } // now processing each fetched campaign $i = 0; foreach ( $camps as $campaign ) { // reading post status $status = get_post_status ( $campaign->camp_id ); // if published process if ($status == 'publish') { if ($i != 0) echo '<br>'; echo "<b>Processing Campaign</b> $campaign->camp_name { $campaign->camp_id }"; // updating the last id processed update_option ( 'gm_last_processed', $campaign->camp_id ); //check if deserve spinning now or not if(trim($cid) == false){ //read post every x minutes if( stristr($campaign->camp_general, 'a:') ) $campaign->camp_general=base64_encode($campaign->camp_general); $camp_general = unserialize (base64_decode( $campaign->camp_general) ); $camp_general=array_map('wp_automatic_stripslashes', $camp_general); if(! is_array($camp_general) || ! isset($camp_general['cg_update_every']) ){ $camp_general = array('cg_update_every'=>60 ,'cg_update_unit'=> 1); } $post_every = $camp_general['cg_update_every'] * $camp_general['cg_update_unit']; echo '<br>Campaign scheduled to process every '.$post_every . ' minutes '; //get last check time $last_update=get_post_meta($campaign->camp_id,'last_update',1); if(trim($last_update) == '') $last_update =1388692276 ; // echo '<br>Last updated stamp '.$last_update; $difference = $this->get_time_difference($last_update, time()); echo '<br> last processing was <strong>'.$difference. '</strong> minutes ago '; if($difference > $post_every ){ echo '<br>Campaign passed the time and eligible to be processed'; update_post_meta($campaign->camp_id,'last_update',time()); $this->log ( '<strong>Cron</strong> >> eligible waiting campaign' , $campaign->camp_name .'{'.$campaign->camp_id .'} last processing was <strong>'.$difference. '</strong> minutes ago '); //process $this->log ( '<strong>Cron</strong> >> Processing Campaign:' . $campaign->camp_id, $campaign->camp_name .'{'.$campaign->camp_id .'}'); $this->process_campaign ( $campaign ); }else{ echo '<br>Campaign still not passed '.$post_every . ' minutes'; } }else{ // No cron just regular call // update last run update_post_meta($campaign->camp_id,'last_update',time()); // process $this->log ( '<strong>User</strong> >> Processing Campaign:' . $campaign->camp_id, $campaign->camp_name .'{'.$campaign->camp_id .'}' ); $this->process_campaign ( $campaign ); } $i ++; } elseif (! $status) { // deleting Camp record $query = "delete from {$this->wp_prefix}automatic_camps where camp_id= '$campaign->camp_id'"; $this->db->query ( $query ); // deleting matching records for keywords $query = "delete from {$this->wp_prefix}automatic_keywords where keyword_camp ='$campaign->camp_id'"; $this->db->query ( $query ); }else{ echo 'Campaign should be published firstly to run..'; } } } /* * ---* Processing Single Campaign Function --- */ function process_campaign($camp) { // Ini get options $this->currentCampID = $camp->camp_id; $camp_post_every = $camp->camp_post_every; $wp_automatic_tw = get_option ( 'wp_automatic_tw', 400 ); $wp_automatic_options = get_option('wp_automatic_options',array() ); $camp_type = $camp->camp_type; $camp_post_custom_k = unserialize ( $camp->camp_post_custom_k ); $camp_post_custom_v = unserialize ( $camp->camp_post_custom_v ); //camp general options if( stristr($camp->camp_general, 'a:') ) $camp->camp_general=base64_encode($camp->camp_general); $camp_general = unserialize ( base64_decode( $camp->camp_general) ); @$camp_general=array_map('wp_automatic_stripslashes', $camp_general); // get the count of posted posts so far $key = 'Posted:' . $camp->camp_id; $query = "select count(id) as count from {$this->wp_prefix}automatic_log where action='$key'"; $temp = $this->db->get_results ( $query ); $temps = $temp [0]; $posted = $temps->count; // if maximum reached skip if ($camp_post_every <= $posted) { echo '<br>The set maximum number of posts was reached. You have set this campaign to post a maximum of '.$camp_post_every. ' posts.'; $this->log('Cancel Campaign', 'campaign reached maximum number of posts'); return false; } // campaign options $camp_opt = unserialize ( $camp->camp_options ); if (! is_array ( $camp_opt )) $camp_opt = array (); //link suffix if(in_array('OPT_LINK_PREFIX', $camp_opt)){ $this->isLinkSuffixed = true; } //never post same link flag if (in_array('OPT_LINK_ONCE', $camp_opt)){ $this->isLinkOnce = true; } // reading keywords that need to be processed $rawKeywords = trim($camp->camp_keywords); if(! stristr($rawKeywords, ',')){ $newLinesCount = substr_count($rawKeywords, "\n"); if($newLinesCount > 0 ){ $keywords = explode("\n", $rawKeywords); $rawKeywords = implode(',', $keywords); echo '<br>keywords suspected to be one per line adapting...'; } } $keywords = explode ( ',', $rawKeywords ); $keywords=array_filter($keywords); $keywords=array_map('trim', $keywords); // set minimum item date if exists if(in_array('OPT_YT_DATE', $camp_opt)){ // check if dynamic date if(in_array('OPT_YT_DATE_T', $camp_opt) && is_numeric(trim($camp_general['cg_yt_dte_minutes'])) ){ $cg_yt_dte_minutes = trim($camp_general['cg_yt_dte_minutes']); $current_time = time(); $minimum_time = $current_time - $cg_yt_dte_minutes * 60; // echo '<br>Minimum timestamp:'.$minimum_time; $this->minimum_post_timestamp = $minimum_time; }else{ $this->minimum_post_timestamp = strtotime($camp_general['cg_yt_dte_year'].'-'.$camp_general['cg_yt_dte_month'].'-'.$camp_general['cg_yt_dte_day'].'T00:00:00.000Z'); } $this->minimum_post_timestamp_camp = $camp->camp_id; } //Rotate Keywords if(in_array('OPT_ROTATE', $camp_opt)){ echo '<br>Rotating Keywords Enabled'; //last used keyword $last_keyword = get_post_meta($camp->camp_id ,'last_keyword',1); if( ! trim($last_keyword) == ''){ //found last keyword usage let's split echo '<br>Last Keyword: '.$last_keyword; //add all keywords after the last keyword $add = false; foreach ($keywords as $current_keword){ if($add){ //set add flag to add all coming keywords $rotatedKeywords[]=$current_keword; }elseif (trim($current_keword) == trim($last_keyword)) { $add = true; } } //add all keywords before the last keyword foreach ($keywords as $current_keword){ $rotatedKeywords[]=$current_keword; if(trim($current_keword) == trim ($last_keyword)) break ; } //set keywords to rotated keywords if( count($rotatedKeywords) != 0 ) $keywords = $rotatedKeywords; $keywordsString = implode(',', $rotatedKeywords); $camp->camp_keywords=$keywordsString; } }else{ $camp->camp_keywords=implode(',', $keywords); } //Rotate feeds if(in_array('OPT_ROTATE_FEEDS', $camp_opt)){ echo '<br>Rotating feeds Enabled'; //last used feed $last_feed = get_post_meta($camp->camp_id ,'last_feed',1); if( ! trim($last_feed) == ''){ //found last feed usage let's split echo '<br>Last feed: '.$last_feed; //add all feeds after the last feed $add = false; $feeds = explode("\n", $camp->feeds); $feeds = array_filter($feeds); foreach ($feeds as $current_feed){ if($add){ //set add flag to add all coming feeds $rotatedfeeds[]=$current_feed; }elseif (trim($current_feed) == trim($last_feed)) { $add = true; } } //add all feeds before the last feed foreach ($feeds as $current_feed){ $rotatedfeeds[]=$current_feed; if(trim($current_feed) == trim ($last_feed)) break ; } //set feeds to rotated feeds if( count($rotatedfeeds) != 0 ) $feeds = $rotatedfeeds; $feedsString = implode("\n", $rotatedfeeds); $camp->feeds=$feedsString; } } $post_content = stripslashes($camp->camp_post_content ); $post_title = stripslashes( $camp->camp_post_title ); if(in_array('OPT_USE_PROXY', $camp_opt) && $camp_type != 'Articles' && $camp_type != 'ArticlesBase'){ $this->fire_proxy (); } // ini content $abcont = ''; if ($camp_type == 'Articles') { // proxyfy $this->fire_proxy (); $article = $this->articlebase_get_post ( $camp ); $abcont = $article ['cont']; $title = $article ['title']; $source_link = $article ['source_link']; $img = $article; }elseif ($camp_type == 'ArticlesBase') { // proxyfy $this->fire_proxy (); $article = $this->articlebase_get_post ( $camp ); $abcont = $article ['cont']; $title = $article ['title']; $source_link = $article ['source_link']; $img = $article; } elseif ($camp_type == 'Feeds') { // feeds posting echo '<br>Should get content from feeds'; $article = $this->feeds_get_post ( $camp ); $abcont = $article ['cont']; $title = $article ['title']; $source_link = $article ['source_link']; $img = $article; } elseif ($camp_type == 'Amazon') { echo '<br>Trying to post a new Amazon product...'; $product = $this->amazon_get_post ( $camp ); //update offer url to add to chart if ( in_array('OPT_LINK_CHART', $camp_opt) ) { $product['product_link'] = $product['chart_url']; } $img =$product; $abcont = @$product ['offer_desc']; $title = @$product ['offer_title']; $source_link = @$product ['source_link']; $product_img = @$product ['offer_img']; $product_price = @$product ['offer_price']; } elseif ($camp_type == 'Clickbank') { echo '<br>Clickbank product is required'; $img = $product = $this->clickbank_get_post ( $camp ); $abcont = $product ['offer_desc']; $title = $product ['title']; $source_link = $product ['offer_link']; $product_img = $product ['img']; $product_original_link = $product ['original_link']; // print_r($product); } elseif ($camp_type == 'Youtube') { $_SERVER['REQUEST_SCHEME'] = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : 'http'; //refer restrictions curl_setopt ( $this->ch, CURLOPT_REFERER, $_SERVER['REQUEST_SCHEME']. '://' . $_SERVER['SERVER_NAME'] ); echo '<br>Youtube Vid is required'; $img = $vid = $this->youtube_get_post ( $camp ); $abcont = $vid ['vid_desc']; $original_title = $vid ['vid_title']; $title = $vid ['vid_title']; $source_link = $vid ['vid_url']; } elseif($camp_type == 'Vimeo'){ echo '<br>Vimeo campaign let\'s get vimeo vid'; $img = $vid = $this->vimeo_get_post ( $camp ); //set player width and hieght $abcont = $vid ['vid_description']; $original_title = $vid ['vid_title']; $title = $vid ['vid_title']; $source_link = $vid ['vid_url']; } elseif ($camp_type == 'Flicker') { echo '<br>Flicker image is required'; $img = $this->flicker_get_post ( $camp ); $abcont = $img ['img_description']; $original_title = $img ['img_title']; $title = $img ['img_title']; $source_link = $img ['img_link']; } elseif ($camp_type == 'eBay') { echo '<br>eBay item is required'; $img = $this->ebay_get_post ( $camp ); $abcont = $img ['item_desc']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'Spintax'){ echo '<p>Processing spintax campaign'; $abconts =$post_title . '(99999)' . $post_content; if( in_array('OPT_TBS', $camp_opt) ){ $abconts = $this->spin ( $abconts ); } if(in_array('OPT_SP_SIMILAR', $camp_opt)){ $abconts = $this->spintax->spin ( $abconts, TRUE ); }else{ $abconts = $this->spintax->spin ( $abconts ); } $tempz = explode ( '(99999)', $abconts ); // Rewrite the title if(! in_array('OPT_TBS_TTL', $camp_opt)){ echo '<br>Spinning the title'; $post_title = $tempz [0]; } $post_content = $tempz [1]; $title =trim($post_title); $img=array(); }elseif( $camp_type == 'Facebook' ){ $img = $this->fb_get_post($camp); $abcont = $img['matched_content']; $original_title = $img ['original_title']; $title = $img ['original_title']; $source_link = $img ['original_link']; }elseif ($camp_type == 'Pinterest' ){ $img = $this->pinterest_get_post($camp); $abcont = $img ['pin_description']; $original_title = $img ['pin_title']; $title = $img ['pin_title']; $source_link = $img ['pin_url']; }elseif ($camp_type == 'Instagram' ){ $img = $this->instagram_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_url']; }elseif($camp_type == 'Twitter' ){ $img = $this->twitter_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_url']; }elseif($camp_type == 'SoundCloud' ){ $img = $this->sound_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_url']; }elseif($camp_type == 'Craigslist' ){ $img = $this->craigslist_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'Reddit' ){ $img = $this->reddit_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_url']; }elseif($camp_type == 'Careerjet' ){ $img = $this->careerjet_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_url']; }elseif($camp_type == 'Itunes' ){ $img = $this->itunes_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'Envato' ){ $img = $this->envato_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'DailyMotion' ){ $img = $this->DailyMotion_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'Walmart' ){ $img = $this->walmart_get_post($camp); $abcont = $img ['item_description']; $original_title = $img ['item_title']; $title = $img ['item_title']; $source_link = $img ['item_link']; }elseif($camp_type == 'Single' ){ $img = $this->single_get_post($camp); $abcont = $img ['matched_content']; $original_title = $img ['original_title']; $title = $img ['original_title']; $source_link = $img ['source_link']; } //source domain // featured_img_local_source ini $img['featured_img_local_source'] = ''; $img['featured_img_source'] = ''; // link suffix if($this->isLinkSuffixed == true){ if(stristr($source_link, '?')){ $source_link = $source_link.'&rand='.$this->currentCampID ; }else{ $source_link = $source_link.'?rand='.$this->currentCampID ; } } //limit the content returned if(in_array('OPT_LIMIT', $camp_opt)){ echo '<br>Triming post content to '.$camp_general['cg_content_limit'] . ' chars'; $abcont = $this->truncateHtml($abcont,$camp_general['cg_content_limit']); } if(in_array('OPT_LIMIT_TITLE', $camp_opt) && trim($title) != ''){ echo '<br>Triming post title to '.$camp_general['cg_title_limit'] . ' chars'; $titleCharsCount = $this->chars_count($title); if( $camp_general['cg_title_limit'] < $titleCharsCount ){ $non_truncated_title =$title; if(function_exists('mb_substr')){ $title = mb_substr($title, 0,$camp_general['cg_title_limit']); }else{ $title = substr($title, 0,$camp_general['cg_title_limit']); } $title = $this->removeEmoji($title); // remove last truncated word if( in_array( 'OPT_LIMIT_NO_TRUN', $camp_opt) ){ //get last truncated word $truncated_title_parts = explode(' ', $title); $last_truncated_word = $truncated_title_parts[count($truncated_title_parts) - 1]; //check if really truncated $non_truncated_title_parts =explode(' ', $non_truncated_title); foreach ($non_truncated_title_parts as $non_truncated_word){ if($non_truncated_word === $last_truncated_word){ //last truncated word is not truncated break; } } if($non_truncated_word === $last_truncated_word){ }else{ unset($truncated_title_parts[count($truncated_title_parts) - 1] ); $title = implode(' ', $truncated_title_parts); } } if( ! in_array( 'OPT_LIMIT_NO_DOT', $camp_opt) ) $title = $title . '...'; } } // check if valid content fetched before filling the template if (trim ( $title ) != '') { // Validate if the content contains wanted or execluded texts $valid = true; $exact = $camp->camp_post_exact; $execl = $camp->camp_post_execlude; $execr = ''; $execr = @$camp_general['cg_camp_post_regex_exact']; $excludeRegex = @$camp_general['cg_camp_post_regex_exclude']; $valid = $this->validate_exacts($abcont, $title, $camp_opt, $camp,false,$camp_general); // duplicate title check if($valid == true){ //check if there is a post published with the same title if(in_array('OPT_FEED_TITLE_SKIP',$camp_opt) ) { if($this->is_title_duplicate($title,$camp->camp_post_type)){ echo '<-- duplicate title skipping..'; $valid = false; } } } // if not valid process the campaign again and exit if ($valid == false) { //blacklisting the link so we don'g teg it again and cause a loop $this->link_execlude($camp->camp_id, $source_link); $this->process_campaign ( $camp ); exit (); } // strip links if (in_array ( 'OPT_STRIP', $camp_opt )) { echo '<br>Striping links '; //$abcont = strip_tags ( $abcont, '<p><img><b><strong><br><iframe><embed><table><del><i><div>' ); //domain $leave_external = false; if( in_array('OPT_STRIP_EXT', $camp_opt ) ) { $leave_external = true; $source_domain = (parse_url($source_link, PHP_URL_HOST)); } preg_match_all('{<a.*?>(.*?)</a>}' , $abcont , $allLinksMatchs); $allLinksTexts = $allLinksMatchs[1]; $allLinksMatchs=$allLinksMatchs[0]; $j = 0; foreach ($allLinksMatchs as $singleLink){ $singleLink_no_images= preg_replace ( '{<img.*?>}', '' , $singleLink) ; if(! stristr($singleLink, 'twitter.com') && ! ( $leave_external && ! stristr($singleLink_no_images , $source_domain) ) ){ $abcont = str_replace($singleLink, $allLinksTexts[$j], $abcont); } $j++; } if( $camp_type == 'Youtube' ){ echo '...striping inline links'; $abcont = preg_replace('/https?:\/\/[^<\s]+/', '', $abcont); } } // links in new tab if( in_array('OPT_LNK_BLNK', $camp_opt) ){ $abcont = str_replace( '<a ' , '<a target="_blank" ' , $abcont ); } // translate the cotent if (in_array ( 'OPT_TRANSLATE', $camp_opt ) && trim ( $abcont ) != '' && $camp->camp_translate_from != '' && $camp->camp_translate_from != 'no' && $camp->camp_translate_to != '' && $camp->camp_translate_to != 'no' ) { echo '<br>Translating the post...' . $title; //to translate tags $tagsToTranslate= '' ; if( isset($img['tags']) && trim($img['tags']) != '' ){ $tagsToTranslate = trim($img['tags']); } if(isset($img['custom_fields'])){ foreach ($img['custom_fields'] as $customFieldArr ){ if($customFieldArr[0] == 'tags'){ $tagsToTranslate = $customFieldArr[1]; break; } } } // YT tags if( trim($this->used_tags) != ''){ $tagsToTranslate = $this->used_tags; } if( trim($tagsToTranslate) != ''){ $tagsToTranslate = explode(',', $tagsToTranslate) ; $tagsToTranslate = array_filter($tagsToTranslate); $tagsToTranslate=array_map('trim', $tagsToTranslate); $tagsToTranslate=implode('[t]', $tagsToTranslate); $abcont = $abcont . ' .[tagsToTranslate]'. $tagsToTranslate ; } // Translation Method $translationMethod = $camp_general['cg_translate_method']; if($translationMethod != 'googleTranslator' && $translationMethod != 'yandexTranslator' && $translationMethod != 'deeplTranslator' ){ $translationMethod = 'microsoftTranslator'; } // Translation success flag ini $this->translationSuccess = false ; $translation = $this->gtranslate ( $title, $abcont, $camp->camp_translate_from, $camp->camp_translate_to ,$translationMethod); if (in_array ( 'OPT_TRANSLATE_TITLE', $camp_opt )) { $title = $translation [0]; } $abcont = $translation [1]; // check if another translation needed if (trim ( $camp->camp_translate_to_2 ) != 'no' && trim($camp->camp_translate_to_2) !='' ) { // another translate echo '<br>translating the post another time '; $translation = $this->gtranslate ( $title, $abcont, $camp->camp_translate_to, $camp->camp_translate_to_2 ,$translationMethod); if (in_array ( 'OPT_TRANSLATE_TITLE', $camp_opt )) { $title = $translation [0]; } $abcont = $translation [1]; } //strip tagstotransate if(stristr($abcont, 'tagsToTranslate') || stristr($abcont, '[t]')){ //$abcont = str_replace('(t )' , '(t)' ,$abcont ); //$abcont = str_replace( '(tagsToTranslate)' , '[tagsToTranslate]' ,$abcont ) ; //$abcont = str_replace('(t)' , '[t]' ,$abcont ); preg_match('{\[tagsToTranslate\](.*)}', $abcont , $tagMatchs); $tagsTranslated = $tagMatchs[1]; $tagsTranslated = str_replace('[t]', ',' , $tagsTranslated); //strip the tags $abcont = preg_replace('{\[tagsToTranslate.*}', '', $abcont); if(stristr($abcont, '[t]')){ preg_match('{\[t\].*}', $abcont , $tagMatchs); $tagsTranslated = $tagMatchs[0]; $tagsTranslated = explode('[t]', $tagsTranslated); $tagsToTranslate= implode(',', array_filter($tagsTranslated)); $abcont = preg_replace('{\[t\].*}', '', $abcont); } //restore tags if(isset($img['tags']) && trim($img['tags']) != '' ){ $img['tags'] = $tagsTranslated; }elseif(trim($this->used_tags) != ''){ $this->used_tags = $tagsTranslated; } $newFields = array(); if(isset($img['custom_fields'])){ foreach ($img['custom_fields'] as $customFieldArr ){ if($customFieldArr[0] == 'tags'){ $newFields[] = array('tags' , $tagsTranslated) ; }else{ $newFields[] = $customFieldArr; } } $img['custom_fields'] = $newFields; } } //translated values overwrite for custom field geneation $img['original_title'] = $title; $img['matched_content'] = $abcont; } // replacing general terms title and source link if( $camp_type != 'Facebook' ){ if(isset($source_link)) $post_content = str_replace ( '[source_link]', $source_link, $post_content ); } $post_title = @str_replace ( '[original_title]',strip_tags( $title), $post_title ); $post_content = str_replace ( '[original_title]', $title, $post_content ); if ($camp_type == 'Feeds' ) { $post_content = str_replace ( '[matched_content]', $abcont, $post_content ); }elseif( $camp_type == 'Articles' || $camp_type == 'ArticlesBase'){ $post_content = str_replace ( '[matched_content]', $abcont, $post_content ); } elseif ($camp_type == 'Amazon') { $post_content = str_replace ( '[product_desc]', $abcont, $post_content ); $post_content = str_replace ( '[product_img]', $product_img, $post_content ); //$post_content = str_replace ( '[product_link]', $source_link, $post_content ); $post_content = str_replace ( '[product_price]', $product_price, $post_content ); //remove built-in gallery for amazon products when a woo gallery is used if( $camp->camp_post_type == 'product' && in_array('OPT_AM_GALLERY', $camp_opt)){ $post_content = str_replace('[product_imgs_html]', '', $post_content); } } elseif ($camp_type == 'Clickbank') { $post_content = str_replace ( '[product_desc]', $abcont, $post_content ); $post_content = str_replace ( '[product_img]', $product_img, $post_content ); $post_content = str_replace ( '[product_link]', $source_link, $post_content ); $post_content = str_replace ( '[product_original_link]', $product_original_link, $post_content ); } elseif ($camp_type == 'Youtube') { $post_content = str_replace ( '[vid_player]', addslashes ( $vid ['vid_player'] ), $post_content ); $post_content = str_replace ( '[vid_desc]', $abcont, $post_content ); $post_content = str_replace ( '[vid_views]', $vid ['vid_views'], $post_content ); $post_content = str_replace ( '[vid_rating]', $vid ['vid_rating'], $post_content ); $post_content = str_replace ( '[vid_img]', $vid ['vid_img'], $post_content ); }elseif($camp_type == 'eBay'){ $post_content = str_replace('[item_desc]', $abcont, $post_content); //remove built-in gallery for amazon products when a woo gallery is used if( $camp->camp_post_type == 'product' && in_array('OPT_EB_GALLERY', $camp_opt) && is_array($img['item_images']) ){ $post_content = str_replace('[item_images]', '', $post_content); }elseif(stristr($post_content, '[item_images]') && is_array($img['item_images']) ){ $cg_eb_full_img_t = html_entity_decode( $camp_general['cg_eb_full_img_t']); $imgs = $img['item_images']; if(! stristr($cg_eb_full_img_t, '[img_src]') ) { $cg_eb_full_img_t = '<img src="[img_src]" class="wp_automatic_gallery" />'; } $contimgs=''; foreach ($imgs as $newimg){ $tempimg =$cg_eb_full_img_t; $contimgs.= str_replace('[img_src]', $newimg, $tempimg); } $post_content = str_replace('[item_images]', $contimgs, $post_content); } }elseif ($camp_type == 'Flicker' ) { $post_content = str_replace ( '[img_description]', $abcont, $post_content ); } elseif( $camp_type == 'Vimeo' ) { $post_content = str_replace('[vid_description]', $abcont, $post_content); //set player width and height $vm_width = $camp_general['cg_vm_width']; $vm_height = $camp_general['cg_vm_height']; if(trim($vm_width)!= ''){ $img['vid_embed'] = $vid['vid_embed'] = str_replace('width="560"', 'width="'.$vm_width.'"', $vid['vid_embed']); } if(trim($vm_height)!= ''){ $img['vid_embed'] = $vid['vid_embed'] = str_replace('height="315"', 'height="'.$vm_height.'"', $vid['vid_embed']); } }elseif( $camp_type == 'Pinterest' ){ $post_content = str_replace ( '[pin_description]', $abcont, $post_content ); }elseif( $camp_type == 'Instagram' ){ $post_content = str_replace('[item_description]', $abcont, $post_content); // if video hide it's image if(stristr($abcont, '[embed') && ! in_array('OPT_IT_NO_VID_IMG_HIDE', $camp_opt) ){ echo '<br>Hiding vid image'; $post_content = str_replace('[item_img]"', '[item_img]" style="display:none;" ', $post_content); $post_content = str_replace('[item_img]\"', '[item_img]\" style="display:none;" ', $post_content); } }elseif( $camp_type == 'Twitter' ){ $post_content = str_replace('[item_description]', $abcont, $post_content); }elseif( $camp_type == 'Facebook' || $camp_type == 'Single'){ $post_content = str_replace('[matched_content]', $abcont, $post_content); }elseif($camp_type == 'SoundCloud' || $camp_type == 'Craigslist' || $camp_type == 'Itunes' || $camp_type == 'Envato' || $camp_type == 'DailyMotion' || $camp_type == 'Reddit' || $camp_type == 'Walmart' || $camp_type == 'Careerjet' ){ $post_content = str_replace('[item_description]', $abcont, $post_content); } else { $post_content .= "<br>$abcont"; } // Replacing generic tags if(stristr($this->used_keyword, '_')) { $pan=explode('_', $this->used_keyword); $this->used_keyword = $pan[1]; } //used keyword ini if(isset($this->used_keyword)){ $img['keyword'] = $this->used_keyword; } $post_content = str_replace('[keyword]', $this->used_keyword, $post_content); $post_title = str_replace('[keyword]', $this->used_keyword, $post_title); //replacing attributes foreach ( $img as $key => $val ) { if( ! is_array($val)){ $post_content = str_replace ( '[' . $key . ']', $val, $post_content ); $post_title = str_replace ( '[' . $key . ']', $val, $post_title ); } } // replacing custom attributes for feeds if($camp_type == 'Feeds'){ $attributes = $img['attributes']; foreach ($attributes as $attributeKey => $attributeValue){ $post_content = str_replace('['.$attributeKey.']', $attributeValue[0]['data'] , $post_content); } } // formated date if(stristr($post_content ,'formated_date') || stristr($post_title, 'formated_date') ){ $tags = array('formated_date'); global $shortcode_tags; $_tags = $shortcode_tags; // store temp copy foreach ($_tags as $tag => $callback) { if (!in_array($tag, $tags)) // filter unwanted shortcode unset($shortcode_tags[$tag]); } $post_title = do_shortcode($post_title); $post_content = do_shortcode($post_content); $shortcode_tags = $_tags; // put all shortcode back } // replacing the keywords with affiliate links if (in_array ( 'OPT_REPLACE', $camp_opt )) { foreach ( $keywords as $keyword ) { $keyword = trim($keyword); if (trim ( $keyword != '' )) { //$post_content = str_replace ( $keyword, '<a href="' . $camp->camp_replace_link . '">' . $keyword . '</a>', $post_content ); $post_content = preg_replace ( '/\b'.preg_quote($keyword,'/').'\b/', '<a href="' . $camp->camp_replace_link . '">' . $keyword . '</a>', $post_content ); } } } //replacing patterns if(in_array('OPT_RGX_REPLACE', $camp_opt)){ $separator = '|'; if( in_array('OPT_RGX_REPLACE_SEP',$camp_opt) ){ $separator = '#'; } $regex_patterns = trim($camp_general['cg_regex_replace']); echo '<br>Replacing using REGEX'; //protecting tags if(in_array('OPT_RGX_REPLACE_PROTECT', $camp_opt)){ echo '..protecting tags.'; preg_match_all("/<[^<>]+>/is",$post_content,$matches,PREG_PATTERN_ORDER); $htmlfounds=$matches[0]; //extract all fucken shortcodes $pattern="\[.*?\]"; preg_match_all("/".$pattern."/s",$post_content,$matches2,PREG_PATTERN_ORDER); $shortcodes=$matches2[0]; $htmlfounds = array_merge($htmlfounds,$shortcodes); $htmlfounds = array_filter( array_unique($htmlfounds) ); $i=1; foreach ($htmlfounds as $htmlfound){ $post_content = str_replace($htmlfound, "[" . str_repeat('*', $i) . "]", $post_content); $i++; } } if(stristr($regex_patterns, $separator )){ $regex_patterns_arr = explode("\n",$regex_patterns); foreach ($regex_patterns_arr as $regex_pattern){ $regex_pattern = trim($regex_pattern); if(stristr($regex_pattern, $separator )){ //title only flag $isTitleOnly = false; if(stristr($regex_pattern, $separator.'titleonly')){ $isTitleOnly=true; $regex_pattern=str_replace($separator.'titleonly', '', $regex_pattern) ; } $regex_pattern_parts = explode($separator , $regex_pattern); $regex_pattern_search = $regex_pattern_parts[0]; if(count($regex_pattern_parts) > 2 ){ $regex_pattern_replace = $regex_pattern_parts[rand(1,count($regex_pattern_parts) - 1)]; }else{ $regex_pattern_replace = $regex_pattern_parts[1]; } // space in replacement $regex_pattern_replace = str_replace('\s',' ' , $regex_pattern_replace); echo '<br>*Replacing '.htmlentities($regex_pattern_search) .' with '.htmlentities($regex_pattern_replace); // echo $post_content; //exit; if(! $isTitleOnly){ if( ! in_array('OPT_RGX_REPLACE_WORD', $camp_opt)){ $post_content = preg_replace('{'.$regex_pattern_search.'}su', $regex_pattern_replace, $post_content); }else{ $post_content = preg_replace('{\b'.preg_quote( $regex_pattern_search ).'\b}su', $regex_pattern_replace, $post_content); } }else{ echo ' on titles only'; } if(in_array('OPT_RGX_REPLACE_TTL', $camp_opt) || $isTitleOnly){ if( ! in_array('OPT_RGX_REPLACE_WORD', $camp_opt)){ $post_title = preg_replace('{'.$regex_pattern_search.'}su', $regex_pattern_replace, $post_title); }else{ $post_title = preg_replace('{\b'.preg_quote( $regex_pattern_search ).'\b}su', $regex_pattern_replace, $post_title); } } } } } //restore protected tags if( isset($htmlfounds) and count($htmlfounds) >0 ){ //restoring $i = 1; foreach ($htmlfounds as $htmlfound){ $post_content = str_replace('['.str_repeat('*', $i).']', $htmlfound, $post_content); $i++; } } } // cache images locally ? if (in_array ( 'OPT_CACHE', $camp_opt ) || $camp_type == 'Instagram' || $camp_type == 'Clickbank') { //strip srcset srcset= if(! in_array('OPT_FEED_SRCSET', $camp_opt)){ $post_content= preg_replace('{srcset=".*?"}', '', $post_content); $post_content= preg_replace('{sizes=".*?"}', '', $post_content ); } preg_match_all ( '/<img [^>]*src=["|\']([^"|\']+)/i', stripslashes ( $post_content ), $matches ); $srcs = $matches [1]; $srcs = array_unique ( $srcs ); $current_host = parse_url ( home_url (), PHP_URL_HOST ); foreach ( $srcs as $image_url ) { //check inline images if(stristr($image_url, 'data:image')){ continue; } //instantiate so we replace . note we modify image_url $image_url_original = $image_url; //decode html entitiies $image_url = html_entity_decode($image_url); if(stristr($image_url, '%') ) { //commented for version 3.44+ //$image_url = urldecode($image_url); } //file name to store $filename = basename ( $image_url ); //clean names if(in_array('OPT_CACHE_CLEAN' , $camp_opt )){ $clean_name = ''; $clean_name = sanitize_file_name( remove_accents( wp_trim_words( $post_title ,10 , '' ) ) ); if(trim($clean_name) != ""){ //get the image extension \.\w{3} $ext = pathinfo($filename, PATHINFO_EXTENSION); if(stristr($ext, '?')){ $ext_parts = explode('?',$ext); $ext = $ext_parts[0]; } //clean parameters after filename $filename = trim($clean_name); if( trim($ext) !='' ){ $filename = $filename .'.'. $ext; } } } if(stristr($image_url, '%') || stristr($filename, '%') ){ $filename = urldecode($filename); } if(stristr($image_url ,' ')){ $image_url = str_replace(' ', '%20', $image_url); } $imghost = parse_url ( $image_url, PHP_URL_HOST ); if(stristr($imghost, 'http://')){ $imgrefer=$imghost; }else{ $imgrefer = 'http://'.$imghost; } if ($imghost != $current_host ) { echo '<br>Caching image: ' . $image_url; // let's cache this image // set thumbnail $upload_dir = wp_upload_dir (); //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($image_url)); //empty referal if(! in_array('OPT_CACHE_REFER_NULL', $camp_opt) ){ curl_setopt ( $this->ch, CURLOPT_REFERER, $imgrefer ); }else{ curl_setopt ( $this->ch, CURLOPT_REFERER, '' ); } curl_setopt ( $this->ch, CURLOPT_HEADER, 0 ); $image_data=$this->curl_exec_follow($this->ch); $contentType = curl_getinfo($this->ch, CURLINFO_CONTENT_TYPE); if(! stristr($contentType, 'image')){ echo '<-- can not verify if the content returned is an image skipping'; continue; } // now we know the mime, lets add an ext to fname if not existing $filename = $this->append_file_ext($filename,$contentType); $image_data_md5 = md5($image_data); //check if already cached before $is_cached = $this->is_cached($image_url , $image_data_md5); if( $is_cached != false ){ echo '<--already cached'; $post_content = str_replace ( $image_url_original, $is_cached , $post_content ); continue; } $x=curl_error($this->ch); if(trim($image_data) != ''){ $x=curl_error($this->ch); if (stristr ( $filename, '?' )) { $farr = explode ( '?', $filename ); $filename = $farr [0]; } if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; // check if same image name already exists if (file_exists ( $file )) { $filename = time( ) .'_'. rand(0,999) . '_' . $filename; if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; } else { } file_put_contents ( $file, $image_data ); $file_link = $upload_dir ['url'] . '/' . $filename; // replace original src with new file link $post_content = str_replace ( $image_url_original, $file_link, $post_content ); $this->img_cached($image_url_original, $file_link,$image_data_md5,$file); echo '<-- cached'; }else{ echo '<-- can not get image content '.$x; } } } // end foreach image } // replacing words that should be replaced $sets = stripslashes(get_option ( 'wp_automatic_replace', '' ) ); $sets_arr = explode ( "\n", $sets ); if( count($sets_arr) >0 && ! in_array('OPT_REPLACE_NO_PROTECT', $wp_automatic_options) ){ preg_match_all("/<[^<>]+>/is",$post_content,$matches,PREG_PATTERN_ORDER); $htmlfounds=$matches[0]; //extract all shortcodes $pattern="\[.*?\]"; preg_match_all("/".$pattern."/s",$post_content,$matches2,PREG_PATTERN_ORDER); $shortcodes=$matches2[0]; $htmlfounds = array_merge($htmlfounds,$shortcodes); $htmlfounds = array_filter( array_unique($htmlfounds) ); $i=1; foreach ($htmlfounds as $htmlfound){ $post_content = str_replace($htmlfound, "[" . str_repeat('*', $i) . "]", $post_content); $i++; } } foreach ( $sets_arr as $set ) { if (trim ( $set ) != '' && stristr ( $set, '|' )) { // valid set let's replace $set_words = explode ( '|', $set ); // cleaning empty words $i = 0; foreach ( $set_words as $setword ) { if (trim ( $setword ) == '') { unset ( $set_words [$i] ); } $i ++; } if (count ( $set_words ) > 1) { // word 1 $word1 = trim($set_words [0]); // randomize replacing word $rand = rand ( 1, count ( $set_words ) - 1 ); $replaceword = trim($set_words [$rand]); echo '<br>replacing "'.$word1.'" by "'.$replaceword.'"' ; if( in_array('OPT_REPLACE_NO_REGEX', $wp_automatic_options) ){ $post_title = str_replace ( $word1 , $replaceword, $post_title ); $post_content = str_replace ( $word1 , $replaceword, $post_content ); }else{ $post_title = preg_replace ( '/\b' . trim ( preg_quote( $word1,'/') ) . '\b/iu', $replaceword, $post_title ); $post_content = preg_replace ( '/\b' . trim ( preg_quote( $word1,'/') ) . '\b/iu', $replaceword, $post_content ); } } } } //restore protected tags if( isset($htmlfounds) and count($htmlfounds) >0 ){ //restoring $i = 1; foreach ($htmlfounds as $htmlfound){ $post_content = str_replace('['.str_repeat('*', $i).']', $htmlfound, $post_content); $i++; } } $abcontTxt = $camp->camp_post_content; $abtitleTxt = $camp->camp_post_title; // spin the content if (in_array ( 'OPT_TBS', $camp_opt ) && trim ( $abcontTxt ) != '' || stristr($abcontTxt, '{') && stristr($abcontTxt, '}') && stristr($abcontTxt, '|') || stristr($abtitleTxt, '{') && stristr($abtitleTxt, '}') && stristr($abtitleTxt, '|') ) { if($camp_type != 'Spintax'){ echo '<br>Spin the content enabled'; $abconts = $post_title . '(99999)' . $post_content; if (in_array ( 'OPT_TBS', $camp_opt )){ $abconts =$this->spin ( $abconts ); } $abconts = $this->spintax->spin ( $abconts ); $tempz = explode ( '(99999)', $abconts ); // Rewrite the title if(! in_array('OPT_TBS_TTL', $camp_opt)){ echo '<br>Spinning the title'; $post_title = $tempz [0]; } $post_content = $tempz [1]; //remove nospin tags $post_title = str_replace('[nospin]', '', $post_title); $post_title = str_replace('[/nospin]', '', $post_title); $post_content = str_replace('[nospin]', '', $post_content); $post_content = str_replace('[/nospin]', '', $post_content); }//not spintax } //categories for post if( stristr($camp->camp_post_category, ',') ) { $categories = array_filter(explode(',',$camp->camp_post_category )); }else{ $categories = array ($camp->camp_post_category); } //check if dummy title (notitle) $post_title = str_replace( '(notitle)' , '' , $post_title ); // Keyword to category $new_categories = array(); if(in_array('OPT_KEYWORD_CAT', $camp_opt) && trim($camp_general['cg_keyword_cat']) != '' ){ echo '<br>Keyword to category check started...'; $content_to_check = in_array('OPT_KEYWORD_NO_CNT', $camp_opt) ? '' : $post_content ; $content_to_check .= in_array('OPT_KEYWORD_TTL', $camp_opt) ? ' ' . $post_title : '' ; $cg_keyword_cat = $camp_general['cg_keyword_cat']; $cg_keyword_cat_rules = array_filter( explode("\n", $cg_keyword_cat) ); foreach ($cg_keyword_cat_rules as $cg_keyword_cat_rule) { if(stristr( $cg_keyword_cat_rule , '|')){ $cg_keyword_cat_rule = trim($cg_keyword_cat_rule); $cg_keyword_cat_rule_parts = explode ('|', $cg_keyword_cat_rule) ; $cg_keyword_cat_rule_keyword = $cg_keyword_cat_rule_parts[0]; $cg_keyword_cat_rule_category = $cg_keyword_cat_rule_parts[1]; if( preg_match('{\b' . preg_quote( $cg_keyword_cat_rule_keyword ). '\b}siu', $content_to_check) || (stristr($cg_keyword_cat_rule_keyword, '#') && stristr($content_to_check, trim($cg_keyword_cat_rule_keyword)) )){ echo '<br><- Key '.$cg_keyword_cat_rule_keyword . ' exists adding category:'.$cg_keyword_cat_rule_category; if(is_numeric($cg_keyword_cat_rule_category)){ $new_categories[]=$cg_keyword_cat_rule_category; }elseif( stristr($cg_keyword_cat_rule_category, ',') ){ $new_categories = array_merge($new_categories,explode(',', $cg_keyword_cat_rule_category)); } } } } //now new categories are available to consider if(count($new_categories) > 0 ){ if( in_array('OPT_KEYWORD_CAT_FORGET' , $camp_opt) ){ $categories = $new_categories; }else{ $categories = array_merge($categories , $new_categories); } } } // post status if(in_array('OPT_DRAFT_PUBLISH', $camp_opt) && $camp->camp_post_status == 'publish'){ echo '<br>Setting post status to draft temporarily'; $postStatus = 'draft' ; }else{ $postStatus = $camp->camp_post_status; } // building post $my_post = array ( 'post_title' => ( $post_title), 'post_content' => $post_content, 'post_status' => $postStatus, 'post_author' => $camp->camp_post_author, 'post_type' => $camp->camp_post_type, 'post_category' => $categories, ); //Pending for non english if(in_array('OPT_MUST_ENGLISH', $camp_opt)){ echo '<br>Checking If English or not'; if($this->is_english($post_title)){ echo '<-- English '; }else{ echo '<--Guessed as Not English setting as pending'; $my_post['post_status'] = 'pending'; } } //Pending for transation fail // skip if translation failed if( in_array('OPT_TRANSLATE', $camp_opt) && in_array('OPT_TRANSLATE_FTP', $camp_opt)){ echo '<br>Checking if translation faild..'; if($this->translationSuccess == false){ echo ' Found Failed... set to pending..'; $my_post['post_status'] = 'pending'; }else{ echo ' Found succeeded '; } } //prepare author if($camp_type == 'Feeds' && isset($img['author']) && trim($img['author']) != '' && in_array('OPT_ORIGINAL_AUTHOR', $camp_opt) ){ echo '<br>Trying to set the post author to '.$img['author']; $author_id = $this->get_user_id_by_display_name($img['author']); if($author_id != false){ $my_post['post_author'] = $author_id; } } kses_remove_filters (); if ( $camp_type == 'Feeds' && in_array ( 'OPT_ORIGINAL_TIME', $camp_opt ) ){ if( isset( $article['wpdate'] ) && trim( $article['wpdate'] ) != '' ){ $wpdate = get_date_from_gmt( $article['wpdate'] ); echo '<br>Setting date for the post to '.$wpdate; $my_post['post_date'] = $wpdate ; }else{ echo '<br>No date found to set as the original post date'; } } if ( $camp_type == 'Craigslist' && in_array ( 'OPT_CL_TIME', $camp_opt ) ){ $wpdate = get_date_from_gmt( gmdate ( 'Y-m-d H:i:s' , strtotime($img['item_date']) ) ); echo '<br>Setting date for the post to '.$wpdate ; $my_post['post_date'] = $wpdate ; } if ( $camp_type == 'Reddit' && in_array ( 'OPT_RD_TIME', $camp_opt ) ){ $wpdate = get_date_from_gmt( gmdate ( 'Y-m-d H:i:s' , ($img['item_date']) ) ); echo '<br>Setting date for the post to '.$wpdate ; $my_post['post_date'] = $wpdate ; } if ( $camp_type == 'Instagram' && in_array ( 'OPT_IT_DATE', $camp_opt ) ){ echo '<br>Setting date for the post to '. $img['item_created_date']; $my_post['post_date']=$img['item_created_date']; } if ( ($camp_type == 'Twitter' && in_array ( 'OPT_IT_DATE', $camp_opt )) || ($camp_type == 'SoundCloud' && in_array('OPT_SC_DATE', $camp_opt)) ){ $item_created_at = date ( 'Y-m-d H:i:s' , strtotime( $img['item_created_at']) ); //$item_created_at = get_date_from_gmt($item_created_at); echo '<br>Setting date for the post to '.$item_created_at; $my_post['post_date']=$item_created_at; } if ( $camp_type == 'Youtube' && in_array ( 'OPT_YT_ORIGINAL_TIME', $camp_opt ) ){ $realDate = get_date_from_gmt( gmdate('Y-m-d H:i:s' ,$vid['vid_time'] ) ); echo '<br>Setting date for the post to '. $realDate; $my_post['post_date']= $realDate ; } if($camp_type == 'Youtube' && in_array('OPT_YT_AUTHOR', $camp_opt)){ echo '<br>Setting author for the post to '. $img['vid_author_title']; $author_id = $this->get_user_id_by_display_name($img['vid_author_title']); if($author_id != false){ $my_post['post_author'] = $author_id; } } if ( $camp_type == 'DailyMotion' && in_array ( 'OPT_DM_ORIGINAL_TIME', $camp_opt ) ){ $realDate = get_date_from_gmt( gmdate('Y-m-d H:i:s' ,$img['item_published_at'] ) ); echo '<br>Setting date for the post to '. $realDate; $my_post['post_date']= $realDate ; } if ( $camp_type == 'Vimeo' && in_array ( 'OPT_VM_ORIGINAL_TIME', $camp_opt ) ){ $realDate = $vid['vid_created_time'] ; echo '<br>Setting date for the post to '. $realDate; $my_post['post_date']= $realDate ; } if ( $camp_type == 'Facebook' && in_array ( 'OPT_ORIGINAL_FB_TIME', $camp_opt ) ){ $realDate = $img['original_date']; echo '<br>Setting date for the post to '. $realDate; $my_post['post_date']= $realDate ; } //set excerpt of amazon product post type if($camp_type == 'Amazon' && $camp->camp_post_type == 'product' && in_array('OPT_AMAZON_EXCERPT', $camp_opt)){ echo '<br>Setting product short description'; $my_post['post_excerpt'] = $img['product_desc']; } //set excerpt of ebay product post type if($camp_type == 'eBay' && $camp->camp_post_type == 'product' && in_array('OPT_EBAY_EXCERPT', $camp_opt)){ echo '<br>Setting product short description'; $my_post['post_excerpt'] = $img['item_desc']; } //remove filter kses for security remove_filter('content_save_pre', 'wp_filter_post_kses'); //fixing utf8 // echo ' Fixing ... '.$my_post['post_content']; $my_post['post_content'] = $this->fix_utf8($my_post['post_content']); $my_post['post_title'] = $this->fix_utf8($my_post['post_title']); //truemag instagram remove embed if( ($camp_type == 'Instagram' ) && stristr($abcont, '[embed]') ){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ //extract video url $my_post['post_content'] = preg_replace('{\[embed\](.*?)\[/embed\]}','', $my_post['post_content']); } } // Exact match check after filling the template // validating exact $valid = true; $valid = $this->validate_exacts($my_post['post_content'], $title, $camp_opt, $camp,true,$camp_general); // if not valid process the campaign again and exit if ($valid == false) { //blacklisting the link so we don'g teg it again and cause a loop $this->link_execlude($camp->camp_id, $source_link); $this->process_campaign ( $camp ); exit (); } // fix html entities // Emoji fix if(! isset( $wpdb)) global $wpdb; $emoji_fields = array( 'post_title', 'post_content', 'post_excerpt' ); foreach ( $emoji_fields as $emoji_field ) { if ( isset( $my_post[ $emoji_field ] ) ) { $charset = $wpdb->get_col_charset( $wpdb->posts, $emoji_field ); if ( 'utf8' === $charset ) { $my_post[ $emoji_field ] = wp_encode_emoji( $my_post[ $emoji_field ] ); $my_post[ $emoji_field ] = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "", $my_post[ $emoji_field]); } } } // single campaign decide the decision if($camp_type == 'Single'){ $previousPostID = get_post_meta( $camp->camp_id, 'wp_automatic_previous_id' ,1); $previousHash = get_post_meta( $camp->camp_id, 'wp_automatic_previous_hash' ,1); $currentHash = md5( $my_post['post_title'] . $my_post['post_content'] ); $cg_sn_after = $camp_general['cg_sn_after'] ; if( $cg_sn_after == 'justnew' ){ // ignore all of that, a new post should be created ignoring last post }else{ if(trim($previousPostID) == ''){ //inogre that, it is the first post ever echo '<br>First time posting...'; }else{ //previous post exists if($cg_sn_after == 'delete'){ //always delete old post, lets delete it echo '<br>Deleting previous post with ID:'.$previousPostID; wp_delete_post($previousPostID,true); }else{ // we have a previous post, let's see if new post is a differnet or the same if($previousHash == $currentHash){ // nothing changed, it is the same post echo '<br>Previous post contains the latest content as nothing changed...'; exit; }else{ // post changed if($cg_sn_after == 'deletechange'){ //delete and create new one echo '<br>Content changed, Deleting previous post with ID:'.$previousPostID; wp_delete_post($previousPostID,true); }elseif( $cg_sn_after == 'new' ){ // don't delete anything, just create a new post echo '<br>Content changed, keeping old post and create a new one'; }elseif($cg_sn_after == 'update' ){ // update an existing post echo '<br>Content changed, updating post with ID:'.$previousPostID; $my_post['ID'] = $previousPostID; } } } } } } // filter $my_post= apply_filters( 'wp_automatic_before_insert', $my_post); // Insert the post into the database if($my_post['post_type'] == 'topic' && function_exists('bbp_insert_topic')){ $cg_bb_fid = $camp_general['cg_bb_fid']; if(is_numeric($cg_bb_fid)) { $my_post['post_parent'] = $cg_bb_fid; } $topicMeta= array(); $topicMeta['forum_id'] = $cg_bb_fid; $id = bbp_insert_topic( $my_post ,$topicMeta ); }else{ $id = wp_insert_post( $my_post ); } if($id == 0){ echo '<br>Error:Post Insertion failure'; //print_r($my_post); }else{ $args['post_id'] = $id; $args['img'] = $img; $args['my_post'] = $my_post; do_action('wp_automatic_post_added' , $args ); } //wpml internal cron patch if( ! stristr( $_SERVER['REQUEST_URI'] , 'wp_automatic') && function_exists('icl_object_id') ){ $wpml_options = get_option( 'icl_sitepress_settings' ); $default_lang = $wpml_options['default_language']; $args['element_id'] = $id; $args['element_type'] = 'post_'.$camp->camp_post_type; $args['language_code'] = $default_lang; do_action( 'wpml_set_element_language_details', $args ); } //wpml integration if(in_array('OPT_WPML', $camp_opt) && function_exists('icl_object_id') ){ include_once( WP_PLUGIN_DIR . '/sitepress-multilingual-cms/inc/wpml-api.php' ); $language_code = trim($camp_general['cg_wpml_lang']); // change the language code echo '<br>Setting WPML language to: '.$language_code; if(function_exists('wpml_update_translatable_content')){ wpml_update_translatable_content('post_'.$camp->camp_post_type, $id, ($language_code) ); echo '<--Done'; //find if there is a previous instance in another language global $sitepress; $cleanSource = preg_replace('{.rand\=.*}', '', $source_link); $sourceMD5 = md5($cleanSource); $keyName = $sourceMD5.'_wpml'; $Qresults = $this->db->get_results( "SELECT * FROM {$this->db->prefix}postmeta WHERE `meta_key` = '$keyName' limit 1", ARRAY_A ); if(count($Qresults) != 0){ //we have a previous instance $metaRow = $Qresults[0]; $metaValue = $metaRow['meta_value']; $metaParts= explode('_', $metaValue); echo '<br>Found a previous instance of the post in a different langauge:'.$metaValue. ' connecting...'; $sitepress->set_element_language_details($id, $my_post['post_type'] .'_'.$my_post['post_type'] , $metaParts[0], $language_code, $metaParts[1] ); }else{ //record the post for next translation $trid= ($sitepress->get_element_trid($id)); add_post_meta($id,$sourceMD5.'_wpml', $trid.'_'.$language_code ); } }else{ echo '<--Failed make sure wpml directory is named "sitepress-multilingual-cms"'; } } //setting categories for custom post types if( true | $camp->camp_post_type != 'post'){ $customPostTaxonomies = get_object_taxonomies($camp->camp_post_type); if(count($customPostTaxonomies) > 0) { foreach($customPostTaxonomies as $tax) { if(is_taxonomy_hierarchical($tax)){ echo '<br>Setting taxonomy '.$tax.' to '.$camp->camp_post_category; @wp_set_post_terms($id, $categories , $tax,true); } } } }else{ } //feeds category if($camp_type == 'Feeds' && trim($img['cats'] != '')){ //Removed @v3.24.0 //add_post_meta ( $id, 'original_cats', $img['cats'] ); if(in_array('OPT_ORIGINAL_CATS', $camp_opt)){ echo '<br>Setting Categories to :'.$img['cats']; $cats= array_filter(explode(',', $img['cats'])); if( $camp->camp_post_type == 'post' ){ $taxonomy = 'category'; }else{ $taxonomy = $camp_general['cg_camp_tax'] ; } $new_cats = array(); //convert cats to ids foreach($cats as $cat_name){ $cat = get_term_by('name', $cat_name , $taxonomy); //check existence if($cat == false){ //cateogry not exist create it $cat = wp_insert_term($cat_name, $taxonomy); if( ! is_wp_error($cat) ){ //category id of inserted cat $cat_id = $cat['term_id'] ; $new_cats[] = $cat_id; } }else{ //category already exists let's get it's id $cat_id = $cat->term_id ; $new_cats[] = $cat_id; } } //insert cats if(count($new_cats) > 0) wp_set_post_terms($id,$new_cats,$taxonomy ,true); //delete uncategorized if($taxonomy == 'category'){ //get uncategorized slug by term id $uncatObject = get_term(1); wp_remove_object_terms( $id, $uncatObject->slug, $taxonomy ); } } } // Feeds part to field extraction set if($camp_type == 'Feeds'){ $customFieldsArr = $img['custom_fields']; if( is_array($customFieldsArr) && count($customFieldsArr) != 0 ){ foreach ($customFieldsArr as $customFieldSet){ if($customFieldSet[0] == 'excerpt'){ $my_post = array( 'ID' => $id, 'post_excerpt' => $customFieldSet[1] ); wp_update_post( $my_post ); }elseif( $customFieldSet[0] == 'tags'){ if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $customFieldSet[1], trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $customFieldSet[1], true ); } }elseif( stristr( $customFieldSet[0] , 'taxonomy_') ){ wp_set_post_terms( $id, $customFieldSet[1], str_replace('taxonomy_', '' , $customFieldSet[0] ) , true ); }else{ add_post_meta ( $id, $customFieldSet[0], $customFieldSet[1] ); } }//foreach field }//if array }//if feed $post_id = $id; add_post_meta ( $id, 'wp_automatic_camp' , $camp->camp_id ); if(isset($source_link) ){ $addedLink = add_post_meta ( $id, md5($source_link) , $post_title ); if($addedLink === false){ add_post_meta ( $id, md5($source_link) , md5($source_link) ); } add_post_meta ( $id, 'original_link', $source_link ); } // Record link if posted before if (in_array('OPT_LINK_ONCE', $camp_opt)){ $query="insert into {$this->wp_prefix}automatic_links( link_url ,link_keyword ) values ('".md5($source_link)."','".$camp->camp_id."')"; $this->db->query($query); } //if link to source set flag if(in_array('OPT_LINK_SOURSE', $camp_opt)){ add_post_meta ( $id, '_link_to_source', 'yes' ); } //if link canonical _yoast_wpseo_canonical if(in_array('OPT_LINK_CANONICAL', $camp_opt)){ if(defined( 'WPSEO_VERSION' )){ add_post_meta ( $id, '_yoast_wpseo_canonical', $source_link ); }else{ add_post_meta ( $id, 'canonical_url', $source_link ); } } // add featured image if (in_array ( 'OPT_REPLACE', $camp_opt )) { foreach ( $keywords as $keyword ) { $keyword = trim($keyword); if (trim ( $keyword != '' )) { $post_content = str_replace ( $keyword, '<a href="' . $camp->camp_replace_link . '">' . $keyword . '</a>', $post_content ); } } } // Featured image if (in_array ( 'OPT_THUMB', $camp_opt )) { $srcs = array(); //ini $srcs_alts = array(); //if force og_img if(in_array('OPT_FEEDS_OG_IMG', $camp_opt) && isset($img['og_img']) && trim($img['og_img']) != '' ){ if(in_array('OPT_FEEDS_OG_IMG_REVERSE', $camp_opt) && stristr($post_content, '<img')){ echo '<br>og:image found but will be skipped'; //here the image contains a first image and og:image should skipped //set an og:image variable so it get appended to the end of found images. If width check is active and all images on post are not wide enough $og_image = $img['og_img']; }else{ $srcs = array($img['og_img']) ; $srcs_alts[] = $img['og_alt']; } } //if youtube set thumbnail to video thum if($camp_type == 'Youtube' || $camp_type == 'Vimeo' ){ //set youtube/vimeo image as featured image //check if maxres exists if( stristr( $vid['vid_img'] , 'hqdefault' ) ){ $maxres = str_replace('hqdefault', 'maxresdefault', $vid['vid_img']) ; $maxhead = wp_remote_head($maxres); if(! is_wp_error($maxhead) && $maxhead['response']['code'] == 200 ){ $vid['vid_img'] = $maxres; } } $srcs=array($vid['vid_img']); echo '<br>Vid Thumb:'.$vid['vid_img']; }elseif( $camp_type == 'DailyMotion' ){ $srcs=array($img['item_image']); }elseif($camp_type == 'SoundCloud'){ if(trim($img['item_thumbnail']) != ''){ $srcs = array($img['item_thumbnail']); }elseif(trim($img['item_user_thumbnail']) != ''){ //$srcs = array($img['item_user_thumbnail']); } }elseif($camp_type == 'Twitter' && in_array('OPT_TW_CARDS', $camp_opt) && isset($img['item_image']) ){ $srcs = array($img['item_image']); }elseif($camp_type == 'Amazon'){ $srcs = array($img['product_img']); }elseif($camp_type == 'eBay'){ $srcs = array($img['item_img']); }elseif(isset($srcs) && count($srcs) > 0 ){ }else{ // extract first image preg_match_all ( '/<img [^>]*src[\s]*=[\s]*["|\']([^"|\']+).*?>/i', stripslashes ( $post_content ), $matches ); $srcs = $matches [1]; $srcs_html = $matches[0]; foreach ($srcs_html as $src_html){ preg_match('/alt[\s]*=[\s]*["|\'](.*?)["|\']/i', $src_html,$alt_matches) ; if(isset($alt_matches[1])){ $srcs_alts[] = $alt_matches[1]; }else{ $srcs_alts[] = ''; } } if(isset($og_image)){ $og_arr = array(); $og_arr[] = $og_image; $srcs = array_merge($srcs,$og_arr); } } //may be a wp_automatic_Readability missed the image on the content get it from summary ? if( count($srcs) == 0 && $camp_type == 'Feeds' && in_array('OPT_FULL_FEED', $camp_opt) ){ echo '<br>Featured image is missing at full content searching for it in feed instead'; preg_match_all ( '/<img [^>]*src=["|\']([^"|\']+).*?/i', stripslashes ( $article['original_content'] ), $matches ); $srcs = $matches [1]; $srcs_html = $matches[0]; foreach ($srcs_html as $src_html){ preg_match('/alt[\s]*=[\s]*["|\'](.*?)["|\']/i', $src_html,$alt_matches) ; $srcs_alts[] = $alt_matches[1]; } if(count($srcs) == 0){ echo '<br>No image found at the feed summary'; if( trim($img['og_img']) != '' ){ echo '<br>Graph image thumb found'; $srcs = array($img['og_img']); } } } //No featured image found let's check if random image list found if ( count($srcs) == 0 && in_array ( 'OPT_THUMB_LIST', $camp_opt )) { echo '<br>Trying to set random image as featured image'; $cg_thmb_list=$camp_general['cg_thmb_list']; $cg_imgs = explode("\n", $cg_thmb_list); $cg_imgs = array_filter($cg_imgs); $cg_rand_img = trim( $cg_imgs [rand(0,count($cg_imgs)-1)]); //validate image if(trim( $cg_rand_img)!='' ){ $srcs=array($cg_rand_img); } }elseif(in_array ( 'OPT_THUMB_LIST', $camp_opt )){ $cg_thmb_list=$camp_general['cg_thmb_list']; $cg_imgs = explode("\n", $cg_thmb_list); $cg_imgs = array_filter($cg_imgs); $cg_rand_img = trim( $cg_imgs [rand(0,count($cg_imgs)-1)]); //validate image if( trim($cg_rand_img)!= '' ){ $srcs= array_merge($srcs, array($cg_rand_img) ) ; } } //if foce using thumb list if( in_array('OPT_THUMB_LIST_FORCE', $camp_opt) && in_array ( 'OPT_THUMB_LIST', $camp_opt ) ){ echo '<br>Force using image from set list'; $cg_thmb_list=$camp_general['cg_thmb_list']; $cg_imgs = explode("\n", $cg_thmb_list); $cg_imgs = array_filter($cg_imgs); $cg_rand_img = trim( $cg_imgs [rand(0,count($cg_imgs)-1)]); //validate image if(trim( $cg_rand_img)!='' ){ $srcs=array($cg_rand_img); } } //check srcs size to skip small images if(count($srcs) >0 && in_array('OPT_THUMB_WIDTH_CHECK', $camp_opt)){ $cg_minimum_width = 0; $cg_minimum_width = $camp_general['cg_minimum_width']; if(! (is_numeric( $cg_minimum_width ) && $cg_minimum_width > 0 ) ){ $cg_minimum_width = 100; } $n=0; $upload_dir = wp_upload_dir (); foreach($srcs as $current_img){ echo '<br>Candidate featured image: '.$current_img ; if(stristr($current_img, 'data:image') && stristr($current_img, 'base64,')){ $ex = explode('base64,', $current_img); $image_data = base64_decode($ex[1]); }else{ //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($current_img)); $image_data=curl_exec($this->ch); $x=curl_error($this->ch); } if(trim($image_data) != '' ){ //let's save the file if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . 'temp_wp_automatic'; else $file = $upload_dir ['basedir'] . '/' . 'temp_wp_automatic'; file_put_contents ( $file, $image_data ); $size = getimagesize($file); if($size != false){ if($size[0] >$cg_minimum_width ){ echo '<-- Valid width is '.$size[0] . ' larger than '.$cg_minimum_width ; break; }else{ echo '<-- width is too low '.$size[0]; unset($srcs[$n]); if(isset($srcs_alts[$n])) unset($srcs_alts[$n]) ; } }else{ echo '<--size verification failed'; unset($srcs[$n]); if(isset($srcs_alts[$n])) unset($srcs_alts[$n]) ; } }else{ echo '<--no content '; unset($srcs[$n]); if(isset($srcs_alts[$n])) unset($srcs_alts[$n]) ; } $n++; } } //width check // Setting the thumb if (count ( $srcs ) > 0) { $src = reset($srcs); $image_url = $src; $this->log ( 'Featured image', '<a href="' . $image_url . '">' . $image_url . '</a>' ); echo '<br>Featured image src: '.$image_url; // set thumbnail $upload_dir = wp_upload_dir (); //img host $imghost = parse_url ( $image_url, PHP_URL_HOST ); if(stristr($imghost, 'http://')){ $imgrefer=$imghost; }else{ $imgrefer = 'http://'.$imghost; } //empty referal if( ! in_array('OPT_CACHE_REFER_NULL', $camp_opt) ){ curl_setopt ( $this->ch, CURLOPT_REFERER, $imgrefer ); }else{ curl_setopt ( $this->ch, CURLOPT_REFERER, '' ); } if( stristr($image_url, 'base64,') ){ $filename = time(); }else{ //decode html entitiies $image_url = html_entity_decode($image_url); //file named 417t7%2BJs8wL.jpg turned to 417t7%252BJs8wL.jpg if(stristr($image_url, '%') ) { $image_url = urldecode($image_url); } //file name to store $filename = basename ( $image_url ); //empty spaces fix if(stristr($filename,' ')){ $filename = str_replace(' ','-',$filename); } //youtube hqdefault.jpg may exists with different data, change the name if(stristr($filename, 'default.jpg') ) { $filename = time() . '_' .$filename; } if(stristr($image_url ,' ')){ $image_url = str_replace(' ', '%20', $image_url); } } // Clean thumb if(in_array('OPT_THUMB_CLEAN' , $camp_opt )){ $clean_name = ''; $clean_name = $this->removeEmoji($post_title); $clean_name = wp_trim_words( $clean_name ,10 ,''); $clean_name = sanitize_file_name( $clean_name ); if(trim($clean_name) != ""){ //get the image extension \.\w{3} $ext = pathinfo($filename, PATHINFO_EXTENSION); if(stristr($ext, '?')){ $ext_parts = explode('?',$ext); $ext = $ext_parts[0]; } //clean parameters after filename $filename = trim($clean_name); if( trim($ext) !='' ){ $filename = $filename .'.'. $ext; } } } if(!in_array('OPT_THUM_NELO', $camp_opt) || stristr($image_url, 'base64,')){ if( stristr($image_url, 'base64,') ){ $ex = explode('base64,', $current_img); $image_data = base64_decode($ex[1]); //set fileName extention .png, .jpg etc preg_match('{data:image/(.*?);}', $image_url ,$ex_matches); $image_ext = $ex_matches[1]; if(trim($image_ext) != ''){ $filename = $filename .'.'.$image_ext; echo '<br>Fname:'.$filename; } }else{ //get image content $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); //case https://mtvnaija.com/wp-content/uploads/2019/10/Sjava-–-Decoder-Ft.-Ranks-ATM-Just-G-MP3.jpg if( ! stristr($image_url , '%' ) && class_exists('Requests_IRI') ){ $iri = new Requests_IRI($image_url); $iri->host = Requests_IDNAEncoder::encode($iri->ihost); $image_url = $iri->uri; } curl_setopt($this->ch, CURLOPT_URL, trim( html_entity_decode($image_url) ) ); curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false); $image_data=$this->curl_exec_follow($this->ch); $contentType = curl_getinfo($this->ch, CURLINFO_CONTENT_TYPE); echo '<br>Content type:'.$contentType; $x=curl_error($this->ch); $http_code = curl_getinfo($this->ch , CURLINFO_HTTP_CODE ); } // adding ext $filename = $this->append_file_ext($filename, $contentType); // do not validate content type option if(in_array('OPT_THUM_NOTYPE', $camp_opt)){ $contentType = 'image'; } if( trim($image_data) != '' && $http_code == 200 && !stristr($contentType,'image')){ //possibly correct image get it's size $width = $this->get_image_width($image_data); if($width != 0){ echo '<br>Regardless of this content type header, It still seems a valid image with width = ' .$width; $contentType = 'image'; } } if(trim($image_data) != '' && stristr($contentType , 'image') ){ //check if already saved $image_data_md5 = md5($image_data); $is_cached = $this->is_cached($image_url , $image_data_md5); if( $is_cached != false ){ echo '<--already cached' ; $file = $this->cached_file_path; $guid = $is_cached; }else{ if (stristr ( $filename, '?' )) { $farr = explode ( '?', $filename ); $filename = $farr [0]; } //pagepeeker fix if(stristr($image_url, 'pagepeeker') && ! in_array('OPT_THUMB_CLEAN' , $camp_opt )){ $filename = md5($filename).'.jpg'; } if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; // check if same image name already exists if (file_exists ( $file )) { //get the current saved one to check if identical $already_saved_image_link=$upload_dir ['url'] . '/' . $filename; //curl get $x='error'; $url=$already_saved_image_link; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); $exec=curl_exec($this->ch); if(trim($exec) == trim($image_data)){ $idential = true; echo '<br>Featured image already exists with same path.. using it'; }else{ echo '<br>Featured image exists with same path but not identical.. saving '; $filename = time() . '_' . $filename; } } //saving image if(! isset($idential )){ if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; $f=file_put_contents ( $file, $image_data ); //echo '<br>File URL:'.$file; } $guid = $upload_dir['url'] . '/' . basename( $filename ); $this->img_cached($image_url, $guid,$image_data_md5,$file); }//not cached //atttatchment check if exists or not global $wpdb; $query = "select * from $wpdb->posts where guid = '$guid'"; $already_saved_attachment = $wpdb->get_row($query); if(isset($already_saved_attachment->ID)){ $attach_id = $already_saved_attachment->ID; }else{ $wp_filetype = wp_check_filetype ( $filename, null ); if($wp_filetype['type'] == false){ $wp_filetype['type'] = 'image/jpeg'; } //Title handling $imgTitle = sanitize_file_name ( $filename ); if(in_array('OPT_THUMB_ALT',$camp_opt)){ $imgTitle = wp_trim_words( $post_title ,10 ,'' ) ; } $attachment = array ( 'guid' => $guid, 'post_mime_type' => $wp_filetype ['type'], 'post_title' => $imgTitle, 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment ( $attachment, $file, $post_id ); require_once (ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata ( $attach_id, $file ); wp_update_attachment_metadata ( $attach_id, $attach_data ); //alt text if(in_array('OPT_THUMB_ALT2', $camp_opt)){ $img_alt= reset($srcs_alts); if(trim($img_alt) != ''){ update_post_meta($attach_id, '_wp_attachment_image_alt', $img_alt); } if(in_array('OPT_THUMB_ALT3', $camp_opt)){ if(trim($img_alt) == ''){ update_post_meta($attach_id, '_wp_attachment_image_alt', $title); } } } } $img['featured_img_source'] = $image_url; $img['featured_img_local_source'] = $guid; set_post_thumbnail ( $post_id, $attach_id ); echo ' <-- thumbnail set successfully'; $wp_automatic_thumb_success = $post_id; //Flag for successfull thumbnail //if hide first image set the custom field if(in_array('OPT_THUMB_STRIP', $camp_opt)){ if(in_array('OPT_THUMB_STRIP_FULL', $camp_opt)){ echo '<br>Deleting first image from the content...'; $new_post = get_post($id); $new_content = preg_replace ( '/<img [^>]*src=["|\'][^"|\']+.*?>/i', '' ,$new_post->post_content ,1 ); $my_post = array( 'ID' => $id, 'post_content' => $new_content, ); // Update the post into the database wp_update_post( $my_post ); }else{ update_post_meta ( $post_id, 'wp_automatic_remove_first_image', 'yes' ); } } }else{ echo ' <-- can not get image content '.$x; } }else{//nelo //setting custom field for nelo image echo '<br>Setting the featured image custom field for '; if( function_exists('fifu_update_fake_attach_id') ) { echo 'Featured image from URL plugin'; update_post_meta($id, 'fifu_image_url', $image_url); fifu_update_fake_attach_id($id); }else{ echo 'Nelio plugin'; update_post_meta($id, '_nelioefi_url', $image_url); } //if hide first image set the custom field if(in_array('OPT_THUMB_STRIP', $camp_opt)){ if(in_array('OPT_THUMB_STRIP_FULL', $camp_opt)){ echo '<br>Deleting first image from the content...'; $new_post = get_post($id); $new_content = preg_replace ( '/<img [^>]*src=["|\'][^"|\']+.*?>/i', '' ,$new_post->post_content ,1 ); $my_post = array( 'ID' => $id, 'post_content' => $new_content, ); // Update the post into the database wp_update_post( $my_post ); }else{ update_post_meta ( $post_id, 'wp_automatic_remove_first_image', 'yes' ); } } } } else { //currently no images in the content $this->log ( 'Featured image', 'No images found to set as featured' ); } } // thumbnails //featured image set or set as pending? if(in_array('OPT_THUM_MUST', $camp_opt)){ if(isset($wp_automatic_thumb_success) && $wp_automatic_thumb_success == $post_id){ //success }else{ echo '<br>Failed to set featured image, setting the post status to Pending'; //failed set as pending wp_update_post(array( 'ID' => $post_id, 'post_status' => 'pending' )); } } // tags if (in_array ( 'OPT_TAG', $camp_opt )) { $targetKeywords = $keywords; if(in_array('OPT_TAG_KEYONLY', $camp_opt) && isset($this->used_keyword) && trim($this->used_keyword) !='' ){ $targetKeywords = $this->used_keyword; } if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $targetKeywords , trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $targetKeywords, true ); } } //youtube tags and comments if($camp_type == 'Youtube' ){ //tags if(in_array('OPT_YT_TAG', $camp_opt)){ if(trim($this->used_tags) != ''){ if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $this->used_tags , trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $this->used_tags, true ); } } } //comments if(in_array('OPT_YT_COMMENT', $camp_opt) ){ echo '<br>Trying to post comments'; //get id $temp=explode('v=', $this->used_link); $vid_id=$temp[1] ; $wp_automatic_yt_tocken=trim( wp_automatic_single_item( 'wp_automatic_yt_tocken' ) ); $maxResults = rand(20,50); $comments_link="https://www.googleapis.com/youtube/v3/commentThreads?maxResults=$maxResults&part=snippet&videoId=".$vid_id."&key=$wp_automatic_yt_tocken"; echo '<br>Comments yt url:'.$comments_link; //curl get $x='error'; $url=$comments_link; 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); if(trim($x) != '') echo '<br>'.$x; if(trim($exec) !=''){ if( stristr($exec, 'items')){ $exec = str_replace('s28-', 's90-', $exec); $comments_array=json_decode($exec); $entry=$comments_array->items ; if(count($entry) == 0){ echo '<br>No comments found'; }else{ echo '<br>Found '.count($entry). ' comment to post'; foreach($entry as $comment ){ $comment = $comment->snippet->topLevelComment->snippet; $commentText= $comment->textDisplay; $commentAuthor= $comment->authorDisplayName; $profileImage = $comment->authorProfileImageUrl; $commentUri=''; $comment_author_url =''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)){ $comment_author_url = $profileImage .'|'. $comment->authorChannelId->value; $commentUri= $comment->authorChannelUrl; }else{ $comment_author_url = $profileImage.'|'; } if(in_array('OPT_YT_ORIGINAL_TIME', $camp_opt)){ $time = $comment->publishedAt; $time = get_date_from_gmt( gmdate('Y-m-d H:i:s' , strtotime( $time ) ) ); }else{ $time = current_time('mysql'); } if(trim($commentText) != '' ){ //bb replies if($camp->camp_post_type == 'topic' && function_exists('bbp_insert_reply') ){ $post_parent = $post_topic_id = $id; $comment_author_url = "https://www.youtube.com/channel/". $comment->authorChannelId->value ; $reply_data = array('post_parent'=>$post_parent, 'post_content' =>$commentText , 'post_author' => false ,'post_date' => $time ); $reply_meta = array( 'topic_id' => $post_topic_id , 'anonymous_name' =>$commentAuthor , 'anonymous_email' => $profileImage , 'anonymous_website' => $comment_author_url ); $ret = bbp_insert_reply($reply_data,$reply_meta); }else{ $data = array( 'comment_post_ID' => $id, 'comment_author' => $commentAuthor, 'comment_author_email' => '', 'comment_author_url' => $comment_author_url, 'comment_content' => $commentText, 'comment_type' => '', 'comment_parent' => 0, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => $time, 'comment_approved' => 1, ); wp_insert_comment($data); } } } } }else{ echo '<br>could not find comments'; } }else{ echo '<br>No valid comments feed'; } } } // After single scraper if($camp_type == 'Single'){ //update last post update_post_meta( $camp->camp_id, 'wp_automatic_previous_id' ,$id); update_post_meta( $camp->camp_id, 'wp_automatic_previous_hash' ,$currentHash); } // AFTER POST SPECIFIC DAILYMOTION if( $camp_type == 'DailyMotion'){ //tags if(in_array('OPT_DM_TAG', $camp_opt)){ if(trim($this->used_tags) != ''){ if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $this->used_tags , trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $this->used_tags, true ); } } } } // AFTER POST SPECIFIC if ($camp_type == 'Flicker') { if (in_array ( 'OPT_FL_TAG', $camp_opt )) { if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $img ['img_tags'] , trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $img ['img_tags'], true ); } } } // AFTER POST SPECIFIC SoundCloud if ($camp_type == 'SoundCloud') { //tags if (in_array ( 'OPT_SC_TAG', $camp_opt )) { $item_tags = $img['item_tags']; //extract tags with multiple words preg_match_all('{".*?"}', $item_tags, $multiple_tags_matches); $multiple_tags_matches = $multiple_tags_matches[0]; $single_item_tags = $item_tags; foreach ($multiple_tags_matches as $multiple_tag){ $single_item_tags = str_replace($multiple_tag, '', $single_item_tags); $single_item_tags = str_replace(' ', ' ', $single_item_tags); } //remove " $multiple_tags_matches = str_replace('"', '', $multiple_tags_matches); //explode single tags $single_item_tags = explode(' ', $single_item_tags); $all_tags = array_merge($multiple_tags_matches,$single_item_tags); $all_tags = array_filter($all_tags); $all_tags_comma = implode(',', $all_tags); if(trim($all_tags_comma) != ''){ echo '<br>Tags:'.$all_tags_comma; if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $all_tags_comma , trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, $all_tags_comma, true ); } } } //comments if(in_array('OPT_SC_COMMENT', $camp_opt)){ $wp_automatic_sc_client= get_option('wp_automatic_sc_client'); if(trim($wp_automatic_sc_client) != ''){ //getting the comment $item_id = $img['item_id']; echo '<br>Fetching comments for tack:'.$item_id; $commentsCount = rand(20,30); $api_url = "http://api.soundcloud.com/tracks/$item_id/comments?client_id=$wp_automatic_sc_client&limit=$commentsCount"; //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($api_url)); $exec=curl_exec($this->ch); $x=curl_error($this->ch); if( stristr($exec, '"comment"')){ $comments_json = json_decode($exec); echo '<br>Found '.count($comments_json) . ' comments to post.'; $time = current_time('mysql'); foreach ($comments_json as $new_comment){ if($new_comment->kind == 'comment'){ $commentUri=''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)) $commentUri=$new_comment->user->permalink_url; //bb replies if($camp->camp_post_type == 'topic' && function_exists('bbp_insert_reply') ){ $post_parent = $post_topic_id = $id; $reply_data = array('post_parent'=>$post_parent, 'post_content' =>$new_comment->body , 'post_author' => false ,'post_date' => $time ); $reply_meta = array( 'topic_id' => $post_topic_id , 'anonymous_name' =>$new_comment->user->username , 'anonymous_website' => $commentUri ); $ret = bbp_insert_reply($reply_data,$reply_meta); }else{ $data = array( 'comment_post_ID' => $id, 'comment_author' => $new_comment->user->username, 'comment_author_email' => '', 'comment_author_url' => $commentUri, 'comment_content' => $new_comment->body, 'comment_type' => '', 'comment_parent' => 0, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => $time, 'comment_approved' => 1, ); wp_insert_comment($data); } } } }else{ echo '<br>No comments found'; } } } } //After post facebook if($camp_type == 'Facebook'){ //tags if(in_array('OPT_FB_TAGS', $camp_opt)){ if(trim($img['item_tags']) != ''){ echo '<br>Setting tags:'.$img['item_tags']; if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $keywords , $img['item_tags'] , true ); }else{ wp_set_post_tags ( $id, $img['item_tags'], true ); } } } // comments if( in_array('OPT_FB_COMMENT', $camp_opt) && isset( $img['comments'] ) ){ //trying to post FB comments echo '<br>Posting FB comments as comments :'.$img['post_id']; if( isset( $img['comments'] ) ) { $comments = array_slice($img['comments'], 0 , rand(25,50)) ; $added = 0 ; $time = current_time('mysql'); foreach($comments as $comment){ if( trim($comment['text']) != '' ){ $commentText= $comment['text']; $commentAuthor= $comment['author_name']; $commentAuthorID= $comment['author_id']; $commentUri=''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)) $commentUri= "https://facebook.com/". $commentAuthorID; if(in_array('OPT_ORIGINAL_FB_TIME', $camp_opt) ){ $time = date( 'Y-m-d H:i:s' , $comment['time'] ); $time = get_date_from_gmt($time); } if(trim($commentText) != '' ){ $anonymous_email = ''; if( ! in_array('OPT_FB_COMMENT_IMG', $camp_opt) ){ $anonymous_email= $commentAuthorID.'@fb.com' ; } //bb replies if($camp->camp_post_type == 'topic' && function_exists('bbp_insert_reply') ){ $post_parent = $post_topic_id = $id; $reply_data = array('post_parent'=>$post_parent, 'post_content' =>$commentText , 'post_author' => false ,'post_date' => $time ); $reply_meta = array( 'topic_id' => $post_topic_id , 'anonymous_name' =>$commentAuthor , 'anonymous_email' => $anonymous_email , 'anonymous_website' => $commentUri ); $ret = bbp_insert_reply($reply_data,$reply_meta); }else{ $data = array( 'comment_post_ID' => $id, 'comment_author' => $commentAuthor, 'comment_author_email' => $anonymous_email, 'comment_author_url' => $commentUri, 'comment_content' => $commentText, 'comment_type' => '', 'comment_parent' => 0, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => $time, 'comment_approved' => 1, ); wp_insert_comment($data); } } $added++; } } echo '<br>'.$added . ' comments to post'; }else{ echo '<br>No comments found'; } } } //After post vimeo if($camp_type == 'Vimeo'){ if(in_array('OPT_VM_TAG', $camp_opt)){ if(trim($vid['vid_tags']) != ''){ if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $keywords , $vid['vid_tags'], true ); }else{ wp_set_post_tags ( $id, $vid['vid_tags'], true ); } } } } if($camp_type == 'Envato'){ if(in_array('OPT_EV_AUTO_TAGS', $camp_opt)){ if(trim($img['item_tags']) != ''){ if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $keywords , $img['item_tags'], true ); }else{ wp_set_post_tags ( $id, $img['item_tags'], true ); } } } } if($camp_type == 'Instagram'){ if(in_array('OPT_IT_TAGS', $camp_opt)){ if(trim($img['item_tags']) != ''){ echo '<br>Setting tags:'.$img['item_tags']; if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, $keywords , $img['item_tags'] , true ); }else{ wp_set_post_tags ( $id, $img['item_tags'], true ); } } } //comments if(in_array('OPT_IT_COMMENT', $camp_opt) ){ echo '<br>Trying to post comments'; $time = current_time('mysql'); $comments = $img['item_comments']; if(count($comments) > 0){ echo '<br>Found '.count($comments). ' comment to post from'; // random count $commentsCount = count($comments); if($commentsCount == 40 ) { $commentsCount = rand(20,40); echo '...Posting '.$commentsCount; } $i=0; foreach($comments as $comment ){ $i++; if( $i > $commentsCount ) break; $comment = $comment->node; $commentText= $comment->text; if(isset($comment->created_at) && trim($comment->created_at) != ''){ //new comments format $commentAuthor= $comment->owner->username; $commentAuthorID= $comment->owner->id; $commentUri=''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)) $commentUri= "https://instagram.com/". $comment->owner->username; if(in_array('OPT_IT_DATE', $camp_opt) ){ $time = date('Y-m-d H:i:s',$comment->created_at); } }else{ //old comments format $commentAuthor= $comment->from->full_name; if(trim($commentAuthor) == '') $commentAuthor= $comment->from->username; $commentAuthorID= $comment->author[0]->uri->x; $commentUri=''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)) $commentUri= "https://instagram.com/". $comment->from->username; if(in_array('OPT_IT_DATE', $camp_opt) ){ $time = date('Y-m-d H:i:s',$comment->created_time); } } if(trim($commentText) != '' ){ //bb replies if($camp->camp_post_type == 'topic' && function_exists('bbp_insert_reply') ){ $post_parent = $post_topic_id = $id; $reply_data = array('post_parent'=>$post_parent, 'post_content' =>$commentText , 'post_author' => false ,'post_date' => $time ); $reply_meta = array( 'topic_id' => $post_topic_id , 'anonymous_name' =>$commentAuthor , 'anonymous_website' => $commentUri ); $ret = bbp_insert_reply($reply_data,$reply_meta); }else{ $data = array( 'comment_post_ID' => $id, 'comment_author' => $commentAuthor, 'comment_author_email' => '', 'comment_author_url' => $commentUri, 'comment_content' => $commentText, 'comment_type' => '', 'comment_parent' => 0, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => $time, 'comment_approved' => 1, ); wp_insert_comment($data); } } } }else{ echo '<br>No comments found'; } } } //After Twitter if($camp_type == 'Twitter'){ if(in_array('OPT_TW_TAG', $camp_opt)){ if(isset($img['item_hashtags'])){ echo '<br>Tags:'.$img['item_hashtags']; wp_set_post_tags ( $id, $img['item_hashtags'], true ); } } } //After Reddit if($camp_type == 'Reddit'){ if(in_array('OPT_RD_COMMENT', $camp_opt)){ //comments echo '<br>Getting comments'; $comments_link = ($img['item_link'].'.json'); //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($comments_link)); $exec=curl_exec($this->ch); $x=curl_error($this->ch); if(stristr($exec, '[{')){ $commentsJson = json_decode($exec); $commentsJson = $commentsJson[1]->data->children; $commentsJson = array_slice($commentsJson , 0 , rand(25,50)); echo '<br>Found '.count($commentsJson) . ' comments '; $time = current_time('mysql'); foreach ($commentsJson as $newComment){ if(in_array('OPT_RD_TIME', $camp_opt)){ $time = get_date_from_gmt( gmdate ( 'Y-m-d H:i:s' , ($newComment->data->created_utc) ) ) ; } $commentUri=''; if(! in_array('OPT_NO_COMMENT_LINK', $camp_opt)) $commentUri='https://www.reddit.com/u/'.$newComment->data->author; if(trim($newComment->data->body) != ''){ //bb replies if($camp->camp_post_type == 'topic' && function_exists('bbp_insert_reply') ){ $post_parent = $post_topic_id = $id; $reply_data = array('post_parent'=>$post_parent, 'post_content' =>$newComment->data->body , 'post_author' => false ,'post_date' => $time ); $reply_meta = array( 'topic_id' => $post_topic_id , 'anonymous_name' =>$newComment->data->author , 'anonymous_website' => $commentUri ); $ret = bbp_insert_reply($reply_data,$reply_meta); }else{ $data = array( 'comment_post_ID' => $id, 'comment_author' => $newComment->data->author, 'comment_author_email' => '', 'comment_author_url' => $commentUri, 'comment_content' => $newComment->data->body, 'comment_type' => '', 'comment_parent' => 0, 'comment_author_IP' => '127.0.0.1', 'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)', 'comment_date' => $time, 'comment_approved' => 1, ); wp_insert_comment($data); } } } }else{ echo '<br>Not valid reply from Reddit'; } } } //After ebay if(in_array('OPT_EB_REDIRECT_END', $camp_opt)){ echo '<br>Setting expiry date: '.$img['item_end_date']; $expiry_date = strtotime( $img['item_end_date'] ); add_post_meta($id, 'wp_automatic_redirect_date', $expiry_date); add_post_meta($id, 'wp_automatic_redirect_link', $camp_general['cg_eb_redirect_end']); } if(in_array('OPT_EB_TRASH', $camp_opt)){ echo '<br>Setting trash date: '.$img['item_end_date']; $expiry_date = strtotime( $img['item_end_date'] ); add_post_meta($id, 'wp_automatic_trash_date', $expiry_date); } //setting post tags $post_tags=array(); if(in_array('OPT_ADD_TAGS',$camp_opt ) ){ $post_tags = array_filter( explode("\n", $camp_general['cg_post_tags'])); $max = $camp_general['cg_tags_limit']; if(! is_numeric($max)) $max= 100; if(in_array('OPT_RANDOM_TAGS', $camp_opt) && count($post_tags) > $max ){ $rand_keys = array_rand($post_tags,$max); if(is_array($rand_keys)) { $temp_tags = array(); foreach ($rand_keys as $key){ $temp_tags[] = $post_tags[$key]; } }else{ //single value selected like 0 $temp_tags[] = $post_tags[$rand_keys] ; } $post_tags = $temp_tags; } } if(in_array('OPT_ORIGINAL_TAGS', $camp_opt) || in_array('OPT_ORIGINAL_META', $camp_opt)){ $new_tags = explode(',', $img['tags']); if(count($new_tags) > 0 ){ $post_tags = array_merge($post_tags,$new_tags); } } //title tags if(in_array('OPT_TITLE_TAG', $camp_opt)){ $titleWords = explode(' ', $post_title ); $validTitleWords = array(); //get stop words $stopWordsRaw = file_get_contents( dirname(__FILE__) . '/stopwords.txt'); $stopWords = array(); $stopWords = explode(',', $stopWordsRaw); //additional stop words $additionalStopWordsRaw = get_option('wp_automatic_ttt_stop',''); if(trim($additionalStopWordsRaw) != ''){ $additionalStopWordsArr = explode("\n", $additionalStopWordsRaw); $additionalStopWordsArr = array_filter($additionalStopWordsArr); $stopWords = array_merge($stopWords,$additionalStopWordsArr); } $stopWords = array_map('trim', $stopWords); foreach ($titleWords as $titleWord){ $titleWord = preg_replace('#[^\p{L}\p{N}]+#u', '', $titleWord); if( ! in_array( strtolower($titleWord) , $stopWords)){ if(in_array('OPT_TITLE_NUM', $camp_opt) && is_numeric(trim($titleWord))){ //numbers }elseif( strlen($titleWord) < 3 ){ //too short }else{ $validTitleWords[]=$titleWord; } } } $post_tags = array_merge($post_tags,$validTitleWords); } // Keyword to tag if(in_array('OPT_KEYWORD_TAG', $camp_opt) && trim($camp_general['cg_keyword_tag']) != '' ){ echo '<br>Keyword to tag check started...'; $cg_keyword_tag = $camp_general['cg_keyword_tag']; $cg_keyword_tag_rules = array_filter( explode("\n", $cg_keyword_tag) ); foreach ($cg_keyword_tag_rules as $cg_keyword_tag_rule) { if(stristr( $cg_keyword_tag_rule , '|')){ $cg_keyword_tag_rule = trim($cg_keyword_tag_rule); $cg_keyword_tag_rule_parts = explode ('|', $cg_keyword_tag_rule) ; $cg_keyword_tag_rule_keyword = $cg_keyword_tag_rule_parts[0]; $cg_keyword_tag_rule_tag = $cg_keyword_tag_rule_parts[1]; if( preg_match('{\b' . preg_quote( $cg_keyword_tag_rule_keyword ). '\b}siu', $post_title.' '.$abcont)){ echo '<br><- Key '.$cg_keyword_tag_rule_keyword . ' exists adding tag:'.$cg_keyword_tag_rule_tag; if( stristr($cg_keyword_tag_rule_tag, ',') ){ $post_tags = array_merge($post_tags,explode(',', $cg_keyword_tag_rule_tag)); }elseif(trim($cg_keyword_tag_rule_tag)){ $post_tags[]=$cg_keyword_tag_rule_tag; } } } } } if(count( array_filter( $post_tags ) ) > 0){ $post_tags = array_filter($post_tags); echo '<br>Setting ' . count($post_tags) .' post tags as tags'; if(in_array('OPT_TAXONOMY_TAG', $camp_opt)){ wp_set_post_terms( $id, implode(',', $post_tags), trim($camp_general['cg_tag_tax']), true ); }else{ wp_set_post_tags ( $id, implode(',', $post_tags) , true ); } } //now timestamp $now = time(); //amazon woocommerce integration if($camp_type == 'Amazon' && $camp->camp_post_type == 'product'){ $camp_post_custom_k = array_merge ($camp_post_custom_k , array('product_price_updated','product_asin','product_price','product_list_price','_regular_price','_price','_sale_price','_visibility', '_product_url','_button_text','_product_type')); $wp_automatic_woo_buy = get_option('wp_automatic_woo_buy','Buy Now'); if(trim($wp_automatic_woo_buy) == '') $wp_automatic_woo_buy = 'Buy Now' ; $camp_post_custom_v = array_merge ( $camp_post_custom_v , array( $now , '[product_asin]','[product_price]','[product_list_price]','[list_price_numeric]','[price_numeric]','[price_numeric]','visible','[product_link]',$wp_automatic_woo_buy,'external')); //product gallery if( isset($img['product_imgs']) && stristr($img['product_imgs'], ',') && in_array('OPT_AM_GALLERY', $camp_opt)){ echo '<br>Multiple images found setting a gallery'; $attachmentsIDs=array(); $product_imgs_txt = $img['product_imgs']; $product_imgs = explode(',', $product_imgs_txt); //first image already attached if(isset($attach_id)){ //$attachmentsIDs[] = $attach_id; unset($product_imgs[0]); } // set rest images as attachments foreach ($product_imgs as $product_img){ echo '<br>Attaching:'. $product_img ; $newAttach = $this->attach_image($product_img, $camp_opt, $post_id); if(is_numeric($newAttach) && $newAttach > 0 ){ $attachmentsIDs[]=$newAttach; } } if(count($attachmentsIDs) > 0){ $attachmentsIDsStr = implode(',', $attachmentsIDs); add_post_meta($id,'_product_image_gallery',$attachmentsIDsStr); } } wp_set_object_terms ($id, 'external', 'product_type'); }elseif($camp_type == 'eBay' && $camp->camp_post_type == 'product'){ //product gallery if( isset($img['item_images']) && count( $img['item_images'] ) > 1 && in_array('OPT_EB_GALLERY', $camp_opt) ){ echo '<br>Multiple images found setting a gallery for Woo'; $attachmentsIDs=array(); $product_imgs = $img['item_images'] ; //first image already attached if(isset($attach_id)){ //$attachmentsIDs[] = $attach_id; unset($product_imgs[0]); } // set rest images as attachments foreach ($product_imgs as $product_img){ echo '<br>Attaching:'. $product_img ; $newAttach = $this->attach_image($product_img, $camp_opt, $post_id); if(is_numeric($newAttach) && $newAttach > 0 ){ $attachmentsIDs[]=$newAttach; } } if(count($attachmentsIDs) > 0){ $attachmentsIDsStr = implode(',', $attachmentsIDs); add_post_meta($id,'_product_image_gallery',$attachmentsIDsStr); } } $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('_regular_price','_price','_visibility', '_product_url','_button_text','_product_type')); $wp_automatic_woo_buy = get_option('wp_automatic_woo_buy2','Buy Now'); if(trim($wp_automatic_woo_buy) == '') $wp_automatic_woo_buy = 'Buy Now' ; $camp_post_custom_v = array_merge ( $camp_post_custom_v , array('[item_price_numeric]','[item_price_numeric] ','visible','[item_link]',$wp_automatic_woo_buy,'external')); wp_set_object_terms ($id, 'external', 'product_type'); }elseif($camp_type == 'Amazon' && $camp->camp_post_type != 'product'){ $camp_post_custom_k = array_merge ( array('product_price_updated','product_asin','product_price','product_list_price'),$camp_post_custom_k); $camp_post_custom_v = array_merge ( array( $now , '[product_asin]','[product_price]','[product_list_price]'),$camp_post_custom_v); }elseif($camp_type == 'Walmart' && $camp->camp_post_type != 'product'){ $camp_post_custom_k = array_merge ( array('product_price_updated','product_upc','product_price','product_list_price'),$camp_post_custom_k); $camp_post_custom_v = array_merge ( array( $now , '[item_upc]','$[item_price]','$[item_list_price]'),$camp_post_custom_v); }elseif($camp_type == 'Walmart' && $camp->camp_post_type == 'product'){ //affiliate item_link if(stristr( $post_content , 'linksynergy')){ $buyShortCode = '[product_affiliate_url]'; }else{ $buyShortCode = '[item_link]'; } $camp_post_custom_k = array_merge ( array('product_price_updated','product_upc','product_price','product_list_price','_regular_price','_price','_sale_price','_visibility', '_product_url','_button_text','_product_type'),$camp_post_custom_k); $wp_automatic_woo_buy = get_option('wp_automatic_woo_buy','Buy Now'); if(trim($wp_automatic_woo_buy) == '') $wp_automatic_woo_buy = 'Buy Now' ; $camp_post_custom_v = array_merge ( array( $now , '[item_upc]','$[item_price]','$[item_list_price]','[item_list_price]','[item_price]','[item_price]','visible',$buyShortCode,$wp_automatic_woo_buy,'external'),$camp_post_custom_v); //product gallery if( isset($img['item_imgs']) && stristr($img['item_imgs'], ',') && in_array('OPT_WM_GALLERY', $camp_opt)){ echo '<br>Multiple images found setting a gallery'; $attachmentsIDs=array(); $product_imgs_txt = $img['item_imgs']; $product_imgs = explode(',', $product_imgs_txt); //first image already attached if(isset($attach_id)){ //$attachmentsIDs[] = $attach_id; unset($product_imgs[0]); } // set rest images as attachments foreach ($product_imgs as $product_img){ echo '<br>Attaching:'. $product_img ; $newAttach = $this->attach_image($product_img, $camp_opt, $post_id); if(is_numeric($newAttach) && $newAttach > 0 ){ $attachmentsIDs[]=$newAttach; } } if(count($attachmentsIDs) > 0){ $attachmentsIDsStr = implode(',', $attachmentsIDs); add_post_meta($id,'_product_image_gallery',$attachmentsIDsStr); } } wp_set_object_terms ($id, 'external', 'product_type'); }elseif($camp_type == 'Envato' && $camp->camp_post_type == 'product'){ $camp_post_custom_k = array_merge ( array('product_price_updated','product_upc','product_price','product_list_price','_regular_price','_price','_sale_price','_visibility', '_product_url','_button_text','_product_type'),$camp_post_custom_k); $wp_automatic_woo_buy = get_option('wp_automatic_woo_buy','Buy Now'); if(trim($wp_automatic_woo_buy) == '') $wp_automatic_woo_buy = 'Buy Now' ; $buyShortCode = '[item_link]?ref=[affiliate_id]'; $camp_post_custom_v = array_merge ( array( $now , '[item_upc]','$[item_price]','$[item_price]','[item_price]','[item_price]','[item_price]','visible',$buyShortCode,$wp_automatic_woo_buy,'external'),$camp_post_custom_v); wp_set_object_terms ($id, 'external', 'product_type'); }elseif( $camp->camp_post_type == 'product' ){ $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('_visibility')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array('visible')); wp_set_object_terms ($id, 'external', 'product_type'); } //Not external option if( in_array('OPT_SIMPLE' , $camp_opt ) ){ wp_set_object_terms ($id, 'simple', 'product_type'); }elseif( in_array( 'OPT_PRODUCT_EXTERNAL' , $camp_opt ) ){ wp_set_object_terms ($id, 'external', 'product_type'); //_product_url if(! in_array( '_product_url' , $camp_post_custom_k )){ $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('_product_url')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array( $source_link ) ); } } //TrueMag integration if( ($camp_type == 'Youtube' || $camp_type == 'Vimeo') ){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>TrueMag/NewsTube theme exists adabting config..'; $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('tm_video_url','_count-views_all')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array('[source_link]','[vid_views]')); //adding likes n dislikes $vid_likes = $img['vid_likes']; $vid_dislikes = $img['vid_dislikes']; //adding likes if($vid_likes > 0 ){ try { $query = "INSERT INTO {$this->db->prefix}wti_like_post SET "; $query .= "post_id = '" . $id . "', "; $query .= "value = '$vid_likes', "; $query .= "date_time = '" . date( 'Y-m-d H:i:s' ) . "', "; $query .= "ip = ''"; @$this->db->query($query); } catch (Exception $e) { } } if($vid_dislikes > 0 && $camp_type == 'Youtube' ){ $query = "INSERT INTO {$this->db->prefix}wti_like_post SET "; $query .= "post_id = '" . $id . "', "; $query .= "value = '-$vid_dislikes', "; $query .= "date_time = '" . date( 'Y-m-d H:i:s' ) . "', "; $query .= "ip = ''"; @$this->db->query($query); } } } // truemag dailymotion integration if($camp_type == 'DailyMotion'){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>TrueMag/NewsTube theme exists adabting config..'; $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('tm_video_url','_count-views_all')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array('[source_link]','[item_views]')); } } // trumag instagram integration if( ($camp_type == 'Instagram' ) && stristr($abcont, '[embed]') ){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>TrueMag/NewsTube theme exists adabting config..'; //extract video url preg_match('{\[embed\](.*?)\[/embed\]}', $abcont,$embedMatchs); $embedUrl = $embedMatchs[1]; $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('tm_video_file')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array($embedUrl)); //adding likes n dislikes $vid_likes = $img['item_likes_count']; //adding likes if($vid_likes > 0 ){ try { $query = "INSERT INTO {$this->db->prefix}wti_like_post SET "; $query .= "post_id = '" . $id . "', "; $query .= "value = '$vid_likes', "; $query .= "date_time = '" . date( 'Y-m-d H:i:s' ) . "', "; $query .= "ip = ''"; @$this->db->query($query); } catch (Exception $e) { } } } } //truemag facebook integration if($camp_type =='Facebook'){ if(isset($img['vid_url'])){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>TrueMag setup and video exists...'; $camp_post_custom_k = array_merge ( $camp_post_custom_k , array('tm_video_url')); $camp_post_custom_v = array_merge ( $camp_post_custom_v , array($img['vid_url'])); } } } //replacing tags $camp_post_custom_v = implode ( '#****#', $camp_post_custom_v ); foreach ( $img as $key => $val ) { if(! is_array($val)){ $camp_post_custom_v = str_replace ( '[' . $key . ']', $val, $camp_post_custom_v ); } //feed custom attributes if($camp_type == 'Feeds'){ $attributes = $img['attributes']; foreach ($attributes as $attributeKey => $attributeValue){ $camp_post_custom_v = str_replace('['.$attributeKey.']', $attributeValue[0]['data'] , $camp_post_custom_v); } } } $camp_post_custom_v = explode ( '#****#', $camp_post_custom_v ); //NewsPaper theme integration if( ($camp_type == 'Youtube' || $camp_type == 'Vimeo') && function_exists('td_bbp_change_avatar_size') && ! in_array( 'OPT_NO_NEWSPAPER' , $wp_automatic_options ) ){ echo '<br>NewsPaper theme found integrating..'; $td_video = array(); $td_video['td_video'] = $img['vid_url']; $td_video['td_last_video'] = $img['vid_url']; $camp_post_custom_k[] = 'td_post_video'; $camp_post_custom_v[] = $td_video; //format echo '<br>setting post format to Video'; set_post_format($id, 'video' ); //custom field } // adding custom filds $in = 0; if (count ( $camp_post_custom_k ) > 0) { foreach ( $camp_post_custom_k as $key ) { if ( trim ($key) != '' ) { echo '<br>Setting custom field ' . $key ; //serialized arrays if(is_serialized($camp_post_custom_v [$in])) $camp_post_custom_v [$in] = unserialize($camp_post_custom_v [$in]); $key_val = $camp_post_custom_v [$in]; if( ! is_array($key_val) && stristr($key_val, 'rand_' ) ){ $key_val_clean = str_replace( array( '[' ,']') , '', $key_val); $val_parts = explode('_', $key_val_clean); if(count($val_parts) == 3 && is_numeric($val_parts[1]) && is_numeric($val_parts[2]) ){ $key_val = rand($val_parts[1],$val_parts[2]); } } if(stristr($key_val, 'formated_date')){ $key_val = do_shortcode($key_val); } if($key == 'excerpt'){ $my_post = array( 'ID' => $id, 'post_excerpt' => $camp_post_custom_v [$in] , ); wp_update_post( $my_post ); }elseif(stristr($key,'taxonomy_')){ wp_set_post_terms( $id, $key_val, str_replace('taxonomy_', '' , $key ) , true ); }elseif( trim($key) == 'woo_gallery' && $camp->camp_post_type == 'product' ){ echo '<br>Setting gallery from set rule ' . $key; preg_match_all('{<img.*? src="(.*?)".*?}s' , $key_val , $key_imgs_matches ); $key_imgs_matches = $key_imgs_matches[1]; if(count($key_imgs_matches) > 0 ){ echo '<-- Found possible '. count($key_imgs_matches) . ' images'; $attachmentsIDs=array(); $product_imgs = $key_imgs_matches; //first image already attached if(isset($attach_id)){ //$attachmentsIDs[] = $attach_id; unset($product_imgs[0]); } // set rest images as attachments foreach ($product_imgs as $product_img){ echo '<br>Attaching:'. $product_img ; $newAttach = $this->attach_image($product_img, $camp_opt, $post_id); if(is_numeric($newAttach) && $newAttach > 0 ){ $attachmentsIDs[]=$newAttach; } } if(count($attachmentsIDs) > 0){ $attachmentsIDsStr = implode(',', $attachmentsIDs); add_post_meta($id,'_product_image_gallery',$attachmentsIDsStr); } }else{ echo '<-- did not find valid images'; } }else{ //if rand num update_post_meta ( $id, $key, $key_val ); } } $in ++; } } //setting post format OPT_FORMAT if (in_array ( 'OPT_FORMAT', $camp_opt )) { echo '<br>setting post format to '.$camp_general['cg_post_format']; set_post_format($id, stripslashes($camp_general['cg_post_format']) ); }elseif ( ($camp_type == 'Youtube' || $camp_type == 'Vimeo' || $camp_type == 'DailyMotion') ){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>setting post format to Video'; set_post_format($id, 'video' ); } }elseif ( ($camp_type == 'Instagram' ) && stristr($abcont, '[embed]') ){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>setting post format to Video'; set_post_format($id, 'video' ); } }elseif($camp_type == 'Facebook' && isset($img['vid_url'])){ if( (defined('PARENT_THEME') && (PARENT_THEME =='truemag' || PARENT_THEME =='newstube')) || class_exists('Cactus_video') ){ echo '<br>setting post format to Video'; set_post_format($id, 'video' ); } } //publishing the post if(in_array('OPT_DRAFT_PUBLISH', $camp_opt) && $camp->camp_post_status == 'publish'){ echo '<br>Publishing the post now...'; $newUpdatedPostArr['ID'] = $id; $newUpdatedPostArr['post_status'] = 'publish'; wp_update_post($newUpdatedPostArr); } if(in_array('OPT_PREVIEW_EDIT',$wp_automatic_options)){ $plink = admin_url('post.php?post='.$id.'&action=edit'); if(trim($plink) == '') $plink = get_permalink ( $id ) ; }else{ $plink = get_permalink ( $id ) ; } $plink = str_replace('&', '&', $plink) ; $display_title = get_the_title ( $id ); if(trim($display_title) == '') $display_title = '(no title)'; $now = date ( 'Y-m-d H:i:s' ); $now = get_date_from_gmt($now); echo '<br>New Post posted: <a target="_blank" class="new_post_link" time="' . $now . '" href="' . $plink . '">' . $display_title . '</a>'; $this->log ( 'Posted:' . $camp->camp_id, 'New post posted:<a href="' . $plink . '">' . get_the_title ( $id ) . '</a>' ); //returning the security filter add_filter('content_save_pre', 'wp_filter_post_kses'); //duplicate cache update if( $this->campDuplicateLinksUpdate == true ){ $this->campNewDuplicateLinks[$id] = $source_link; update_post_meta($camp->camp_id, 'wp_automatic_duplicate_cache', $this->campNewDuplicateLinks); } exit (); print_r ( $ret ); } // if title } // end function /** * Checks if allowed to call the source or not: compares the call limit with actual previous calls */ function is_allowed_to_call(){ if($this->sourceCallLimit == $this->sourceCallTimes){ echo '<br> We have called the source '.$this->sourceCallLimit.' times already will die now and complete next time...'; exit; } $this->sourceCallTimes++ ; } /** * Validate if the post contains the exact match keywords and does not contain the banned words * @param String $cnt the content * @param String $ttl the title * @param String $opt campaign options * @param String $camp whole camp record * @param boolean $after true if after the template */ function validate_exacts(&$abcont,&$title,&$camp_opt,&$camp,$after=false,$camp_general = array()){ // Valid $valid = true; $exact = $camp->camp_post_exact; $execr = ''; $execr = @$camp_general['cg_camp_post_regex_exact']; $excludeRegex = @$camp_general['cg_camp_post_regex_exclude']; // Validate exacts if(in_array('OPT_EXACT' , $camp_opt )){ // Exact keys // Validating Exact if (trim ( $exact ) != '' && in_array('OPT_EXACT', $camp_opt) && ( ! in_array('OPT_EXACT_AFTER', $camp_opt) && ! $after || in_array('OPT_EXACT_AFTER', $camp_opt) && $after ) ) { $valid = false; $exactArr = explode ( "\n", trim ( $exact ) ); foreach ( $exactArr as $wordexact ) { if (trim ( $wordexact != '' )) { if(in_array('OPT_EXACT_STR', $camp_opt)){ if( in_array('OPT_EXACT_TITLE_ONLY', $camp_opt) && stristr( html_entity_decode($title) , trim ( $wordexact ) ) ){ echo '<br>Title contains the word : ' . $wordexact ; $valid = true; if(! in_array('OPT_EXACT_ALL', $camp_opt)) break; }elseif ( ! in_array('OPT_EXACT_TITLE_ONLY', $camp_opt) && ( stristr ( html_entity_decode($abcont) , trim ( $wordexact ) ) || stristr ( trim ( $wordexact ) , html_entity_decode($title) ) ) ) { echo '<br>Content contains the word : ' . $wordexact ; $valid = true; if(! in_array('OPT_EXACT_ALL', $camp_opt)) break; }else{ echo '<br>Content does not contain the word : ' . $wordexact . ' try another '; $valid = false; if( in_array('OPT_EXACT_ALL', $camp_opt)) break; } // match }else{ if( in_array('OPT_EXACT_TITLE_ONLY', $camp_opt) && preg_match ( '/\b' . trim ( $wordexact ) . '\b/iu', html_entity_decode($title) ) ){ echo '<br>Title contains the word : ' . $wordexact ; $valid = true; if(! in_array('OPT_EXACT_ALL', $camp_opt)) break; }elseif ( ! in_array('OPT_EXACT_TITLE_ONLY', $camp_opt) && ( preg_match ( '/\b' . trim ( $wordexact ) . '\b/iu', html_entity_decode($abcont) ) || preg_match ( '/\b' . trim ( $wordexact ) . '\b/iu', html_entity_decode($title) ) ) ) { echo '<br>Content contains the word : ' . $wordexact ; $valid = true; if(! in_array('OPT_EXACT_ALL', $camp_opt)) break; }else{ echo '<br>Content does not contain the word : ' . $wordexact . ' try another '; $valid = false; if( in_array('OPT_EXACT_ALL', $camp_opt)) break; } // match } } // trim wordexact } // foreach exactword } // trim exact } // VALIDATING EXCLUDES if ($valid == true) { $execl = $camp->camp_post_execlude; if (trim ( $execl ) != '' && in_array('OPT_EXECLUDE', $camp_opt) && ( ! in_array('OPT_EXECLUDE_AFTER', $camp_opt) && ! $after || in_array('OPT_EXECLUDE_AFTER', $camp_opt) && $after ) ) { //additional excl $execl.= "\n".$this->generalBannedWords ; $execlArr = explode ( "\n", trim ( $execl ) ); if( in_array('OPT_EXECLUDE_TITLE_ONLY', $camp_opt) ){ $the_text_to_check = html_entity_decode($title) ; }else{ $the_text_to_check = html_entity_decode($title) . ' ' . html_entity_decode($abcont) ; } foreach ( $execlArr as $wordex ) { if (trim ( $wordex != '' )) { $wordex = trim($wordex); if(in_array('OPT_EXCLUDE_EXACT_STR', $camp_opt)){ if(stristr( $the_text_to_check , $wordex) ){ echo '<br>Content contains the banned word :' . $wordex . ' getting another '; $valid = false; break; } }elseif ( preg_match ( '/\b' . trim ( $wordex ) . '\b/iu', $the_text_to_check ) ) { echo '<br>Content contains the banned word :' . $wordex . ' getting another '; $valid = false; break; } } // trim wordexec } // foreach wordex } // trim execl } // valid // Before only REGEX check if(! $after) { // validate REGEX if($valid == true){ if(trim ( $execr ) != '' & in_array('OPT_EXACT_REGEX', $camp_opt) ){ $valid = false; $exactArr = explode ( "\n", trim ( $execr ) ); foreach ( $exactArr as $wordexact ) { $wordexact = trim($wordexact); if (trim ( $wordexact != '' )) { if ( preg_match ( '{'.$wordexact.'}ius', html_entity_decode($abcont) ) || preg_match ( '{' . trim ( $wordexact ) . '}ius', html_entity_decode($title) ) ) { echo '<br>REGEX Matched : ' . $wordexact ; $valid = true; break; }else{ echo '<br>REGEX did not match : ' . $wordexact . ' try another '; } // match } // trim wordexact } // foreach exactword } } // exclude if match a specific REGEX if( $valid == true ){ if(trim ( $excludeRegex ) != '' & in_array('OPT_EXCLUDE_REGEX', $camp_opt) ){ $excludeArr = explode ( "\n", trim ( $excludeRegex ) ); foreach ( $excludeArr as $wordexact ) { $wordexact = trim($wordexact); if (trim ( $wordexact != '' )) { if ( preg_match ( '{'.$wordexact.'}ius', html_entity_decode($abcont) ) || preg_match ( '{' . trim ( $wordexact ) . '}ius', html_entity_decode($title) ) ) { echo '<br>Exclude REGEX matched : ' . $wordexact ; $valid = false; break; }else{ echo '<br>Exclude REGEX did not match : ' . $wordexact . ' try another '; } // match } // trim wordexact } // foreach exactword } } } //validate length if($valid == true && ! $after && in_array('OPT_MIN_LENGTH' , $camp_opt) && $camp->camp_type != 'Feeds' ){ echo '<br>Validating length .....'; $contentTextual = strip_tags($abcont); $contentTextual = str_replace(' ', '', $contentTextual); if(function_exists('mb_strlen')) { $contentLength = mb_strlen($contentTextual); }else{ $contentLength = strlen($contentTextual); } unset($contentTextual); echo ' Content length:'.$contentLength; if( $contentLength < $camp_general['cg_min_length'] ){ echo '<--Shorter than the minimum... Excluding'; $valid = false; }else{ echo '<-- Valid length '; } } return $valid; } function fire_proxy() { echo '<br>Proxy Check Fired'; $proxies = get_option ( 'wp_automatic_proxy' ); if (stristr ( $proxies, ':' )) { echo '<br>Proxy Found lets try'; // listing all proxies $proxyarr = explode ( "\n", $proxies ); foreach ( $proxyarr as $proxy ) { if (trim ( $proxy ) != '') { $auth = ''; if (substr_count ( $proxy, ':' ) == 3) { echo '<br>Private proxy found .. using authentication'; $proxy_parts = explode ( ':', $proxy ); $proxy = $proxy_parts [0] . ':' . $proxy_parts [1]; $auth = $proxy_parts [2] . ':' . $proxy_parts [3]; curl_setopt ( $this->ch, CURLOPT_PROXY, trim ( $proxy ) ); curl_setopt ( $this->ch, CURLOPT_PROXYUSERPWD, trim($auth) ); } else { curl_setopt ( $this->ch, CURLOPT_PROXY, trim ( $proxy ) ); } echo "<br>Trying using proxy :$proxy"; curl_setopt ( $this->ch, CURLOPT_HTTPPROXYTUNNEL, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, 'www.bing.com/search?count=50&intlF=1&mkt=En-us&first=0&q=test' ); // curl_setopt($this->ch, CURLOPT_URL, 'http://whatismyipaddress.com/'); $exec = curl_exec ( $this->ch ); $x = curl_error ( $this->ch ); if ( trim($x) != '' ) { echo '<br>Curl Proxy Error:' . curl_error ( $this->ch ); } else { if (stristr ( $exec, 'It appears that you are using a Proxy' ) || stristr ( $exec, 'excessive amount of traffic' )) { echo '<br>Proxy working but captcha met let s skip it'; } elseif (stristr ( $exec, 'microsoft.com' )) { // succsfull connection here // echo curl_exec($this->ch); // reordering the proxy $proxies = str_replace ( ' ', '', $proxies ); if(trim($auth) != '') $proxy = $proxy.':'.$auth; $proxies = str_replace($proxy, '', $proxies); $proxies = str_replace ( "\n\n", "\n", $proxies ); $proxies = "$proxy\n$proxies"; // echo $proxies; update_option ( 'wp_automatic_proxy', $proxies ); echo '<br>Connected successfully using this proxy '; $this->isProxified = true; return true; } else { echo '<br>Proxy Reply:'.$exec; } } } } // all proxies not working let's call proxyfrog for new list // no proxyfrog list $this->unproxyify (); // proxifing the connection }else{ echo '..No proxies'; } } /* * ---* Clear proxy function --- */ function unproxyify() { // clean the connection unset ( $this->ch ); // curl ini $this->ch = curl_init (); curl_setopt ( $this->ch, CURLOPT_HEADER, 0 ); curl_setopt ( $this->ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $this->ch, CURLOPT_CONNECTTIMEOUT, 20 ); curl_setopt ( $this->ch, CURLOPT_TIMEOUT, 30 ); curl_setopt ( $this->ch, CURLOPT_REFERER, 'http://www.google.com' ); curl_setopt ( $this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8' ); curl_setopt ( $this->ch, CURLOPT_MAXREDIRS, 5 ); // Good leeway for redirections. curl_setopt ( $this->ch, CURLOPT_FOLLOWLOCATION, 1 ); // Many login forms redirect at least once. curl_setopt ( $this->ch, CURLOPT_COOKIEJAR, "cookie.txt" ); } /* * ---* Spin function that calls TBS --- */ function spin($html) { $url = 'http://thebestspinner.com/api.php'; // $testmethod = 'identifySynonyms'; $testmethod = 'replaceEveryonesFavorites'; // Build the data array for authenticating. $data = array (); $data ['action'] = 'authenticate'; $data ['format'] = 'php'; // You can also specify 'xml' as the format. // The user credentials should change for each UAW user with a TBS account. $tbs_username = get_option ( 'wp_automatic_tbs', '' ); // "gigoftheday@gmail.com"; // Enter your The Best Spinner's Email ID $tbs_password = get_option ( 'wp_automatic_tbs_p', '' ); // "nd8da759a40a551b9aafdc87a1d902f3d"; // Enter your The Best Spinner's Password $tbs_protected = get_option ('wp_automatic_tbs_protected',''); if(trim($tbs_protected) != ''){ $tbs_protected = explode("\n", $tbs_protected); $tbs_protected = array_filter($tbs_protected); $tbs_protected = array_map('trim', $tbs_protected); $tbs_protected = array_filter($tbs_protected); $tbs_protected = implode(',', $tbs_protected); } //add , if not exists if(! stristr($tbs_protected, ',') ){ $tbs_protected = $tbs_protected .','; } //add ad_1, ad_2 , numbers $tbs_protected = $tbs_protected . 'ad_1,ad_2,0,1,2,3,4,5,6,7,8,9,'; if (trim ( $tbs_username ) == '' || trim ( $tbs_password ) == '') { //$this->log ( 'Info', 'No BTS account found , it is highly recommended ' ); return $html; } $data ['username'] = $tbs_username; $data ['password'] = $tbs_password; // Authenticate and get back the session id. // You only need to authenticate once per session. // A session is good for 24 hours. $output = unserialize ( $this->curl_post ( $url, $data, $info ) ); if ($output ['success'] == 'true') { $this->log ( 'TBS', "TBS Login success" ); echo '<br>TBS Login success'; // Success. $session = $output ['session']; // Build the data array for the example. $data = array (); $data ['protectedterms'] = $tbs_protected; $data ['session'] = $session; $data ['format'] = 'php'; // You can also specify 'xml' as the format. //instantiate original html $newhtml = $html; //replace nospins with astrics preg_match_all('{\[nospin.*?\/nospin\]}s', $html ,$nospins); $nospins = $nospins[0]; //shortcodes preg_match_all('{\[.*?]}s', $html ,$shortcodes); $shortcodes = $shortcodes[0]; //html preg_match_all("/<[^<>]+>/is",$html,$matches,PREG_PATTERN_ORDER); $htmlfounds=$matches[0]; //js preg_match_all("/<script.*?<\/script>/is",$html,$matches3,PREG_PATTERN_ORDER); $js=$matches3[0]; //numbers preg_match_all("{\d\d+}is", $html,$numMatches); $numFounds = ($numMatches[0]); $numFounds = array_filter(array_unique($numFounds)); usort($numFounds,'wp_automatic_sort'); $nospins = array_merge($nospins,$shortcodes,$htmlfounds,$js,$numFounds,array(9,8,7,6,5,4,3,2,1)); //remove empty and duplicate $nospins = array_filter(array_unique($nospins)); //replace nospin parts with astrics $i=1; foreach ($nospins as $nospin){ $newhtml = str_replace($nospin, '['.str_repeat('*', $i).']', $newhtml); $i++; } $data ['text'] = ( html_entity_decode($newhtml) ); //$data ['text'] = 'test <br> word <a href="http://onetow.com">http://onetow.com</a> '; $data ['action'] = $testmethod; $data ['maxsyns'] = '100'; // The number of synonyms per term. if ($testmethod == 'replaceEveryonesFavorites') { // Add a quality score for this method. $data ['quality'] = '1'; } // Post to API and get back results. $output = $this->curl_post ( $url, $data, $info ); $output = unserialize ( $output ); // Show results. // echo "<p><b>Method:</b><br>$testmethod</p>"; // echo "<p><b>Text:</b><br>$data[text]</p>"; if ($output ['success'] == 'true') { $this->log ( 'TBS', "TBS Successfully spinned the content" ); //replace the astrics with nospin tags if( count($nospins) > 0 ){ $i = 1 ; foreach($nospins as $nospin){ $output ['output'] = str_replace('['.str_repeat('*', $i).']', $nospin, $output ['output']); $i++; } } echo '<br>TBS Successfully spinned the content'; return $output ['output']; } else { $this->log ( 'error', "TBS Returned an error:$output[error]" ); echo "TBS Returned an error:$output[error]"; return $html; } } else { // There were errors. echo "<br>TBS returned an error : $output[error]"; $this->log ( 'error', "TBS returned an error : $output[error]" ); return $html; } } // end function /* * gtranslte function */ function gtranslate($title, $content, $from, $to , $translationMethod = 'microsoftTranslator') { $contains_bracket = stristr($content, '(' ) ? true : false ; $content = str_replace( '[' , '(' , $content); $content = str_replace( ']' , ')' , $content); // Verify API data if($translationMethod == 'microsoftTranslator'){ //$wp_automatic_mt_secret = trim(get_option('wp_automatic_mt_secret','')); $wp_automatic_mt_id = trim(get_option('wp_automatic_mt_key','')); if(trim($wp_automatic_mt_id) == ''){ echo '<br><span style="color:red">Microsoft translator settings required. Visit the plugin settings and set it.</span>'; return array($title,$content); } $titleSeparator = '[19459000]'; }elseif( $translationMethod == 'yandexTranslator' ){ //wp_automatic_yt_key $wp_automatic_yt_key = trim(get_option('wp_automatic_yt_key','')); if(trim($wp_automatic_yt_key) == ''){ echo '<br><span style="color:red">Yandex translator API key is required. Visit the plugin settings and set it.</span>'; return array($title,$content); } $titleSeparator = '[19459000]'; }elseif( $translationMethod == 'deeplTranslator' ){ //wp_automatic_dl_key $wp_automatic_dl_key = trim(get_option('wp_automatic_dl_key','')); if(trim($wp_automatic_dl_key) == ''){ echo '<br><span style="color:red">Deepl PRO translator API key is required. Visit the plugin settings and set it.</span>'; return array($title,$content); } $titleSeparator = '[19459000]'; }else{ $titleSeparator = '##########'; $titleSeparator = "\n[19459000]"; } // Fix Norwegian language Translation if($from == 'nor') $from = 'no'; if($to == 'nor') $to = 'no'; // Report Translate echo '<br>Translating from '.$from . ' to '.$to . ' using '.$translationMethod; // Concat title and content in one text $text = $title . $titleSeparator . $content; if($this->debug == true) echo "\n\n--- Translation text-------\n".$text; //decode html for chars like € $text = html_entity_decode($text); //scripts preg_match_all('{<script.*?script>}s', $text,$script_matchs); $script_matchs = $script_matchs[0]; //pre and code tags preg_match_all('{<pre.*?/pre>}s', $text,$pre_matchs); $pre_matchs = $pre_matchs[0]; preg_match_all('{<code.*?/code>}s', $text,$code_matchs); $code_matchs = $code_matchs[0]; // STRIP html and links preg_match_all ( "/<[^<>]+>/is", $text, $matches, PREG_PATTERN_ORDER ); $htmlfounds = array_filter( array_unique($matches [0])); $htmlfounds = array_merge($script_matchs,$pre_matchs,$code_matchs,$htmlfounds); $htmlfounds[] = '"'; // Fix alt tags $imgFoundsSeparated = array(); $new_imgFoundsSeparated = array(); $altSeparator = ''; $colonSeparator = ''; foreach($htmlfounds as $key => $currentFound){ if(stristr($currentFound, '<img') && stristr($currentFound, 'alt')){ $altSeparator = ''; $colonSeparator = ''; if(stristr($currentFound, 'alt="')){ $altSeparator = 'alt="'; $colonSeparator = '"'; }elseif(stristr($currentFound, 'alt = "')){ $altSeparator = 'alt = "'; $colonSeparator = '"'; }elseif(stristr($currentFound, 'alt ="')){ $altSeparator = 'alt ="'; $colonSeparator = '"'; }elseif(stristr($currentFound, 'alt= "')){ $altSeparator = 'alt= "'; $colonSeparator = '"'; }elseif(stristr($currentFound, 'alt=\'')){ $altSeparator = 'alt=\''; $colonSeparator = '\''; }elseif(stristr($currentFound, 'alt = \'')){ $altSeparator = 'alt = \''; $colonSeparator = '\''; }elseif(stristr($currentFound, 'alt= \'')){ $altSeparator = 'alt= \''; $colonSeparator = '\''; }elseif(stristr($currentFound, 'alt =\'')){ $altSeparator = 'alt =\''; $colonSeparator = '\''; } if(trim($altSeparator) != ''){ $currentFoundParts = explode($altSeparator, $currentFound); //post alt $preAlt = $currentFoundParts[1]; $preAltParts = explode($colonSeparator, $preAlt); $altText = $preAltParts[0]; if(trim($altText) != ''){ unset($preAltParts[0]); //before alt text part $imgFoundsSeparated[] = $currentFoundParts[0].$altSeparator; //after alt text $imgFoundsSeparated[] = str_replace($altText, '', $currentFoundParts[1] ); //$imgFoundsSeparated[] = $colonSeparator.implode($colonSeparator, $preAltParts); /* echo ' ImageFound:'.$in.' '.$currentFound; print_r($currentFoundParts); print_r($imgFoundsSeparated); */ $htmlfounds[$key] = ''; } } } } //title tag separation $title_separator = str_replace('alt', 'title', $altSeparator); foreach ($imgFoundsSeparated as $img_part){ if(stristr($img_part, ' title')){ $img_part_parts = explode($title_separator, $img_part); //before title text $pre_title_part = $img_part_parts[0] . $title_separator; $post_title_parts = explode($colonSeparator, $img_part_parts[1]); $found_title = $post_title_parts[0]; //after title text $post_title_part = str_replace($found_title, '', $img_part_parts[1]); $new_imgFoundsSeparated[] = $pre_title_part; $new_imgFoundsSeparated[] = $post_title_part; }else{ $new_imgFoundsSeparated[] = $img_part; } } if(count($new_imgFoundsSeparated) != 0){ $htmlfounds = array_merge($htmlfounds,$new_imgFoundsSeparated); } //<!-- <br> --> preg_match_all ( "/<\!--.*?-->/is", $text, $matches2, PREG_PATTERN_ORDER ); $newhtmlfounds = $matches2[0]; //strip shortcodes preg_match_all ( "/\[.*?\]/is", $text, $matches3, PREG_PATTERN_ORDER ); $shortcodesfounds = $matches3[0]; //protected terms $wp_automatic_tra_stop = get_option('wp_automatic_tra_stop',''); $protected_terms = array(); if(trim($wp_automatic_tra_stop) != ''){ $protected_terms_arr = explode("\n", trim($wp_automatic_tra_stop)); $protected_terms = array_filter($protected_terms_arr); $protected_terms = array_map('trim', $protected_terms); } $htmlfounds=array_merge($htmlfounds,$newhtmlfounds,$shortcodesfounds); //clean title separator & empties $in=0; $cleanHtmlFounds = array(); foreach ($htmlfounds as $htmlfound){ if($htmlfound == '[19459000]') { }elseif(trim($htmlfound) == ''){ }else{ $cleanHtmlFounds[] = $htmlfound; } } $htmlfounds = $cleanHtmlFounds; // Replace founds by numbers $start = 19459001; foreach ( $htmlfounds as $htmlfound ) { $text = str_replace ( $htmlfound, '[' . $start . ']', $text ); $start++; } // protected foreach($protected_terms as $exword){ if(trim($exword) != ''){ $text = preg_replace('/\b'. preg_quote(trim($exword),'/').'\b/u', '['.$start.']' , $text); $start++; } } // .{ replace with . { $text = str_replace('.{', '. {', $text); //group consequent matchs [19459003][19459003][19459004][19459003] preg_match_all('!(?:\[1945\d*\][\s]*){2,}!s', $text,$conseqMatchs); if($this->debug == true) { echo "\n\n--- Html finds-------\n"; print_r($htmlfounds); echo "\n\n----- Html before consequent replacements-----\n".$text; echo "\n\n--- Consequent masks finds-------\n"; print_r($conseqMatchs); } //replacing consequents $startConseq = 19659001 ; foreach ($conseqMatchs[0] as $conseqMatch){ $text =preg_replace( '{' . preg_quote( trim($conseqMatch) ) . '}' , '['.$startConseq.']', $text,1 ); $startConseq++; } //copy of the sent masks preg_match_all('{\[.*?\]}', $text,$pre_tags_matches); $pre_tags_matches = ($pre_tags_matches[0]); //copy of sent masks with spaces before and after preg_match_all('{\s*\[.*?\]\s*}u', $text,$pre_tags_matches_s); $pre_tags_matches_s = ($pre_tags_matches_s[0]); if($this->debug == true) { echo "\n\n----- Content to translate without additional lins-----\n".$text; } //each tag in a new line $text = str_replace('[', "\n\n[", $text); $text = str_replace(']', "]\n\n", $text); if($this->debug == true) { echo "\n\n----- Content to translate with additional lins-----\n".$text; } // Check Translation Method and use it if( $translationMethod == 'googleTranslator' ){ try { // Google Translator Class require_once 'inc/translator.Google.php'; // Google Translator Object $GoogleTranslator = new GoogleTranslator($this->ch); // Translate Method $translated = $GoogleTranslator->translateText($text, $from, $to); // same language error The page you have attempted to translate is already if(stristr($translated, 'The page you have attempted to translate is already')){ echo '<br>Google refused to translate and tells that the article is in the same laguage'; $translated=$text; } if($this->debug == true) { echo "\n\n\n\n--- Returned translation-------\n".$translated."\n\n\n" ;} } catch (Exception $e) { echo 'Exception:'.$e->getMessage(); $this->translationSuccess = false ; return array($title,$content); } }elseif( $translationMethod == 'yandexTranslator' ){ try { // Yandex Translator Class require_once 'inc/translator.Yandex.php'; // Yandex Translator Object $YandexTranslator = new YandexTranslator($this->ch , $wp_automatic_yt_key); // Translate Method $translated = $YandexTranslator->translateText($text, $from, $to); if($this->debug == true) { echo "\n\n\n\n--- Returned translation-------\n".$translated."\n\n\n" ;} } catch (Exception $e) { echo 'Exception:'.$e->getMessage(); $this->translationSuccess = false ; return array($title,$content); } }elseif( $translationMethod == 'deeplTranslator' ){ try { // Deepl Translator Class require_once 'inc/translator.Deepl.php'; // Yandex Translator Object $DeeplTranslator = new DeeplTranslator($this->ch , $wp_automatic_dl_key); // Translate Method $translated = $DeeplTranslator->translateText($text, $from, $to); if($this->debug == true) { echo "\n\n\n\n--- Returned translation-------\n".$translated."\n\n\n" ;} } catch (Exception $e) { echo 'Exception:'.$e->getMessage(); $this->translationSuccess = false ; return array($title,$content); } }else{ // Translating using Microsoft translator require_once 'inc/translator.Microsoft.php'; $MicrosoftTranslator = new MicrosoftTranslator($this->ch); try { // Generate access token $accessToken = $MicrosoftTranslator->getToken($wp_automatic_mt_id); echo '<br>Translated text chars: '. $this->chars_count($text); $translated = $MicrosoftTranslator->translateWrap($text, $from, $to); } catch (Exception $e) { echo '<br>Translation error:'.$e->getMessage(); $this->translationSuccess = false ; return array($title,$content); } } // Fix broken ] 19459 $translated = preg_replace('{]\s*?1945}' , '][1945', $translated); // Fix broken Add Comment 19459012] $translated = preg_replace('{ 19459(\d*?)]}' , ' [19459$1]', $translated); // Fix [[1945 $translated = str_replace('[ [1945', '[1945', $translated); // Fix ], [ $translated = str_replace('], ', ']', $translated); //file_put_contents( dirname(__FILE__) .'/test.txt' , $translated); // get all brackets preg_match_all('{\[.*?\]}', $translated,$bracket_matchs); $bracket_matchs= $bracket_matchs[0]; foreach($bracket_matchs as $single_bracket){ if(stristr($single_bracket, '1') && stristr($single_bracket, '9') ){ $single_bracket_clean = str_replace( array(',',' '), '' , $single_bracket); $translated = str_replace($single_bracket,$single_bracket_clean,$translated); } } //copy of the sent masks preg_match_all('{\[.*?\]}', $translated,$post_tags_matches); $post_tags_matches = ($post_tags_matches[0]); if($this->debug == true) { echo "\n\n\n\n------ Pre translation and post tags-------"; print_r($pre_tags_matches); print_r($pre_tags_matches_s); print_r($post_tags_matches); } //validate returned tags if(count($pre_tags_matches) == count($post_tags_matches)){ if($pre_tags_matches !== $post_tags_matches ){ $i=0; foreach ($post_tags_matches as $post_tags_match){ $translated = preg_replace('{'.preg_quote( trim($post_tags_match) ).'}', '['.$i.']', $translated,1); $i++; } if($this->debug == true) { echo "\n\n\n\n-----Translated after replacing each tag with index-------"; echo $translated; } //replacing index tags with real pre translation tags $i=0; foreach ($pre_tags_matches as $pre_tags_match){ $translated = str_replace('['.$i.']' ,$pre_tags_match,$translated); $i++; } } } //each tag in a new line restoration $translated = str_replace( "\n\n[" , '[', $translated); $translated = str_replace( "]\n\n", ']' , $translated); //resotring spaces before and after tags $i=0; foreach ($pre_tags_matches_s as $pre_tags_match){ $pre_tags_match_h = htmlentities($pre_tags_match); if(stristr($pre_tags_match_h, ' ') ){ $pre_tags_match = str_replace(' ', ' ', $pre_tags_match_h); } $translated = preg_replace('{'.preg_quote( trim($pre_tags_match) ).'}', "[$i]" , $translated,1); $i++; } //remove all spaces before and after current tags $translated = preg_replace('{\s*\[}u' , '[' ,$translated ); $translated = preg_replace('{\]\s*}u' , ']' ,$translated ); $i=0; foreach ($pre_tags_matches_s as $pre_tags_match){ // fix $pre_tags_match_h = htmlentities($pre_tags_match); if(stristr($pre_tags_match_h, ' ') ){ $pre_tags_match = str_replace(' ', ' ', $pre_tags_match_h); } $translated = preg_replace('{'.preg_quote( "[$i]" ).'}', $pre_tags_match , $translated,1); $i++; } if($this->debug == true) { echo "\n\n\n\n--- --- Fixed translation-------\n"; print_r($translated);} // restore consquent masks $startConseq = 19659001 ; foreach ($conseqMatchs[0] as $conseqMatch){ $translated = str_replace( '['.$startConseq.']', $conseqMatch,$translated); $startConseq++; } // Grab all replacements with ** preg_match_all('!\[.*?\]!', $translated,$brackets); $brackets = $brackets[0]; $brackets = array_unique($brackets); foreach ($brackets as $bracket){ if(stristr($bracket, '19')){ $corrrect_bracket = str_replace(' ', '', $bracket); $corrrect_bracket = str_replace('.', '', $corrrect_bracket); $corrrect_bracket = str_replace(',', '', $corrrect_bracket); $translated = str_replace($bracket, $corrrect_bracket, $translated); } } // check if successful translation contains *** if (stristr ( $translated, trim($titleSeparator) ) && count($pre_tags_matches) == count($post_tags_matches) ) { $this->translationSuccess = true ; // restore html tags $start = 19459001; foreach ( $htmlfounds as $htmlfound ) { $translated = str_replace ( '[' . $start . ']', $htmlfound, $translated ); $start ++; } //restore excludes foreach ( $protected_terms as $htmlfound ) { $translated = str_replace ( '[' . $start . ']', $htmlfound, $translated ); $start ++; } if($this->debug == true) { echo "\n\n\n\n--- --- Final translation-------\n"; print_r($translated);} $contents = explode ( trim($titleSeparator), $translated ); $title = $contents [0]; $content = $contents [1]; } else { $this->translationSuccess = false ; echo '<br>Translation failed '; } if($contains_bracket == false){ $content = str_replace('(','[',$content); $content = str_replace(')',']',$content); } return array ( $title, $content ); } function curl_post($url, $data, &$info) { $ch = curl_init (); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT,20); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_POST, true ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $this->curl_postData ( $data ) ); curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_REFERER, $url ); $html = trim ( curl_exec ( $ch ) ); print_r(curl_error($ch)); return $html; } function curl_postData($data) { $fdata = ""; foreach ( $data as $key => $val ) { $fdata .= "$key=" . urlencode ( $val ) . "&"; } return $fdata; } /* * ---* update cb categories --- */ function update_categories() { // Get $x = 'error'; while ( trim ( $x ) != '' ) { $url = 'http://www.clickbank.com/advancedMarketplaceSearch.htm'; curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, trim ( $url ) ); $exec = curl_exec ( $this->ch ); echo $x = curl_error ( $this->ch ); } if (stristr ( $exec, '<option value="">- All categories -</option>' )) { echo '<br>categories found'; preg_match_all ( "{>- All categories -</option>((.|\s)*?)</select>}", $exec, $matches, PREG_PATTERN_ORDER ); $res = $matches [0]; $cats = $res [0]; // extracting single parent categories [<option value="1510">Betting Systems</option>] preg_match_all ( "{<option value=\"(.*?)\">(.*?)</option>}", $cats, $matches, PREG_PATTERN_ORDER ); $paretcats_ids = $matches [1]; $paretcats_names = $matches [2]; // delete current records if (count ( $paretcats_names ) > 0) { $query = "delete from {$this->wp_prefix}automatic_categories "; $this->db->query ( $query ); } // adding parent categories $i = 0; foreach ( $paretcats_ids as $parentcat_id ) { $parentcat_name = $paretcats_names [$i]; // inserting cats $query = "insert into {$this->wp_prefix}automatic_categories (cat_id , cat_name) values ('$parentcat_id','$parentcat_name')"; $this->db->query ( $query ); $i ++; } echo '<br>Parent Categories added:' . $i; // extracting subcategories /* * <option value="1265" parent="1253" path="Arts & Entertainment » Architecture"> Architecture </option> */ // echo $exec; // exit; preg_match_all ( "{<option value=\"(.*?)\" parent=\"(.*?)\"(.|\s)*?>((.|\s)*?)</option>}", $exec, $matches, PREG_PATTERN_ORDER ); $subcats_ids = $matches [1]; $subcats_parents = $matches [2]; $subcats_names = $matches [4]; $i = 0; foreach ( $subcats_ids as $subcats_id ) { $subcats_names [$i] = trim ( $subcats_names [$i] ); $subcats_parents [$i] = trim ( $subcats_parents [$i] ); $query = "insert into {$this->wp_prefix}automatic_categories(cat_id,cat_parent,cat_name) values('$subcats_id','$subcats_parents[$i]','$subcats_names[$i]')"; $this->db->query ( $query ); $i ++; } echo '<br>Sub Categories added ' . $i; // print_r($matches); exit (); $res = $matches [2]; $form = $res [0]; preg_match_all ( "{<option value=\"(.*?)\" parent=\"(.*?)\"}", $exec, $matches, PREG_PATTERN_ORDER ); print_r ( $matches ); // print_r($matches); exit (); $res = $matches [0]; $cats = $res [0]; } } /* * ---* Proxy Frog Integration --- */ function alb_proxyfrog() { // get the current list $proxies = get_option ( 'alb_proxy_list' ); // no proxies echo '<br>Need new valid proxies'; if (function_exists ( 'proxyfrogfunc' )) { echo '<br>Getting New Proxy List from ProxyFrog.me'; // Get $x = 'error'; $ch = curl_init (); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt ( $ch, CURLOPT_TIMEOUT, 20 ); curl_setopt ( $ch, CURLOPT_REFERER, 'http://www.bing.com/' ); curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8' ); curl_setopt ( $ch, CURLOPT_MAXREDIRS, 5 ); // Good leeway for redirections. curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 0 ); // Many login forms redirect at least once. curl_setopt ( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); // Get // license $paypal = get_option ( 'pf_license' ); $paypal = urlencode ( $paypal ); $url = "http://proxyfrog.me/proxyfrog/api.php?email=$paypal"; curl_setopt ( $ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $ch, CURLOPT_URL, trim ( $url ) ); $exec = curl_exec ( $ch ); // echo $exec; if (stristr ( $exec, ':' )) { update_option ( 'be_proxy_list', $exec ); update_option ( 'alb_proxy_list', $exec ); echo '<br>New Proxy List <b>Added successfully</b> '; $this->log ( 'ProxyFrog', "New Proxy list added from ProxyFrog" ); return true; } else { $this->log ( 'ProxyFrog', $exec ); } } else { return false; } } // end fun /* * ---* Logging Function --- */ function log($type, $data) { // $now= date("F j, Y, g:i a"); $now = date ( 'Y-m-d H:i:s' ); $data = @addslashes ( $data ); $query = "INSERT INTO {$this->wp_prefix}automatic_log (action,date,data) values('$type','$now','$data')"; // echome$query; $this->db->query ( $query ); $insert = $this->db->insert_id; $insert_below_100 = $insert -100 ; if($insert_below_100 > 0){ //delete $query="delete from {$this->wp_prefix}automatic_log where id < $insert_below_100 and action not like '%Posted%'" ; $this->db->query($query); } } /** * Function that checks if the current link is already posted * @param unknown $link */ function is_duplicate($link_url){ $duplicate=false; // link suffix if($this->isLinkSuffixed == true){ if(stristr($link_url, '?')){ $link_url = $link_url.'&rand='.$this->currentCampID ; }else{ $link_url = $link_url.'?rand='.$this->currentCampID ; } } $md5 = md5($link_url); // Find items from the duplicate cache if( ! $this->campOldDuplicateLinksFetched){ $this->campOldDuplicateLinks = get_post_meta($this->currentCampID,'wp_automatic_duplicate_cache',1); //array it if(! is_array($this->campOldDuplicateLinks)) $this->campOldDuplicateLinks = array(); $this->campOldDuplicateLinksFetched = true; } $possibleID = array_search($link_url, $this->campOldDuplicateLinks ) ; if( $possibleID != false ){ $duplicate = true; $this->duplicate_id = $possibleID; } // Find items with meta = this url if( ! $duplicate ){ //amazon link duplicate check if( stristr($link_url,'/dp/') && stristr($link_url,'https://amazon.') ){ $amazon_link_parts = explode('/dp/' , $link_url); $amazon_asin = $amazon_link_parts[1]; $query = "SELECT post_id FROM `{$this->wp_prefix}postmeta` WHERE meta_key= 'product_asin' and `meta_value` = '$amazon_asin' limit 1"; }else{ $query = "SELECT post_id from {$this->wp_prefix}postmeta where meta_key ='$md5' "; } $pres = $this->db->get_results ( $query ); if(count ( $pres ) == 0 ){ $duplicate = false; }else{ $duplicate = true; foreach($pres as $prow){ $ppid=$prow->post_id; $this->duplicate_id = $ppid; $pstatus = get_post_status($ppid); if($pstatus != 'trash') { break; } } } } // Check if completely deleted if( $this->isLinkOnce ){ if( ! $duplicate ){ $query = "SELECT link_url from {$this->wp_prefix}automatic_links where link_url='$md5' "; $pres = $this->db->get_results ( $query ); if ( count($pres) != 0){ $duplicate = true; $this->duplicate_id = 'Deleted' ; } } } // Update Duplicate cache if($duplicate == true){ // duplicated url, add it to the duplicate cache array if(is_numeric($this->duplicate_id)){ $this->campNewDuplicateLinks[$this->duplicate_id] = $link_url; $this->campDuplicateLinksUpdate = true; } } return $duplicate; } /** * Function link exclude to execlude links * @param unknown $camp_id * @param unknown $source_link */ function link_execlude($camp_id,$source_link){ if($this->campExcludedLinksFetched == true){ $execluded_links = $this->campExcludedLinks; }else{ $execluded_links = get_post_meta($camp_id,'_execluded_links',1); $this->campExcludedLinks = $execluded_links; $this->campExcludedLinksFetched = true; } $newExecluded_links = $execluded_links.','.$source_link; update_post_meta($camp_id,'_execluded_links', $newExecluded_links ); $this->campExcludedLinks = $newExecluded_links; } /** * Check if link is execluded or not i.e it didn't contain exact match keys or contins blocked keys * @param unknown $camp_id * @param unknown $link */ function is_execluded($camp_id,$link){ if($this->campExcludedLinksFetched == true){ $execluded_links = $this->campExcludedLinks; }else{ $execluded_links = get_post_meta($camp_id,'_execluded_links',1); $this->campExcludedLinks = $execluded_links; $this->campExcludedLinksFetched = true; } if(stristr(','.$execluded_links, $link )){ return true; }else{ return false; } } /** * function cache_image * return local image src if found * return false if not cached */ function is_cached($remote_img,$data_md5){ //md5 $md5=md5($remote_img); //query database for this image $query="SELECT * FROM {$this->db->prefix}automatic_cached where img_hash='$md5' and img_data_hash='$data_md5' limit 1"; $rows=$this->db->get_results($query); if(count($rows) == 0 ) return false; $row=$rows[0]; //hm we have cached image with previous same source let's compare $local_src = $row->img_internal; //make sure current image have same data md5 right now otherwise delete //curl get curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($local_src)); $exec=curl_exec($this->ch); if(md5($exec) == $data_md5) { $this->cached_file_path = $row->img_path; return $local_src; }else{ //now the local image no more giving the same md5 may be deleted or changed delete the record $query="delete from {$this->db->prefix}automatic_cached where img_hash = '$md5' "; $this->db->query($query); return false; } } /** * * @param unknown $remote_img * @param unknown $local_img * @param number $thumb_id */ function img_cached($remote_img,$local_img,$image_data_md5,$file_path ){ $md5= md5($remote_img); $query="insert into {$this->db->prefix}automatic_cached(img_external,img_internal,img_hash,img_data_hash,img_path) values ('$remote_img','$local_img','$md5','$image_data_md5','$file_path')"; $this->db->query($query); } /** * deactivate keyword : set the reactivation time to one comig hour * @param integer $camp_id * @param string $keyword */ function deactivate_key($camp_id,$keyword,$seconds= 3600){ $deactivatedUntill = time() + $seconds ; if($seconds == 0) $deactivatedUntill = 0 ; update_post_meta($camp_id, '_'.md5($keyword), $deactivatedUntill ); } /** * is_deactivated: check if the current deactivated keyword is still deactivated or not * if yes it return false * if not deactivated return true * @param integer $camp_id * @param string $key */ function is_deactivated($camp_id,$keyword){ //let's see if this keyword deactivated till date or not $keyword_key = '_'.md5($keyword) ; $deactivated_till = get_post_meta($camp_id,$keyword_key,1); if(trim($deactivated_till) == '') $deactivated_till = 1410020931; if($deactivated_till == 0){ //still deactivated echo '<br>Calling source for this keyword is <strong>deactivated</strong> permanently because last time we called the source for new items, There were no more results to get. You can still <a class="wp_automatic_key_reactivate" data-id="'.$camp_id.'" data-key="'. $keyword_key . '" href="#"><u>Reactivate Now.</u></a><span class="spinner_'.$keyword_key.' spinner"></span>' ; return false; }if(time() > $deactivated_till ){ //time passed let's reactivate echo '<br>Keyword search reached end page lets sart from first page again '; return true; }else{ //still deactivated echo '<br>Calling source for this keyword is <strong>deactivated</strong> temporarily because last time we called the source for new items, There were no more results to get. We will reactivate it after '. number_format(( $deactivated_till - time() ) /60 , 2 ) . ' minutes. You can still <a class="wp_automatic_key_reactivate" data-id="'.$camp_id.'" data-key="'. $keyword_key . '" href="#"><u>Reactivate Now.</u></a><span class="spinner_'.$keyword_key.' spinner"></span>' ; return false; } } /** * Function is_link_old check if the timestamp for the link is older than minimum * @param unknown $camp_id * @param unknown $link_timestamp */ function is_link_old($camp_id , $link_timestamp){ if($this->debug == true) echo '<br>is_link_old Minimum:'.$this->minimum_post_timestamp . ' Current:'.$link_timestamp; if($this->minimum_post_timestamp_camp == $camp_id ){ if($link_timestamp < $this->minimum_post_timestamp){ return true; }else{ return false; } } } /** * function is_title_duplicate * @param unknown $title */ function is_title_duplicate($title,$post_type){ /* echo ' title is:'.$title; var_dump(get_page_by_title( $title, 'OBJECT', $post_type )); exit;*/ if( get_page_by_title( $title, 'OBJECT', $post_type ) ){ return true; }else{ return false; } } function do_tag_exists(&$camp , $tags){ $partToCheck = $camp->camp_post_custom_v.$camp->camp_post_content.$camp->camp_post_title; $partToCheck; foreach ($tags as $tag){ if(stristr($partToCheck, $tag)){ return true; } } return false; } /* * ---* validating --- */ function validate() { $paypal = get_option ( 'alb_license', '' ); $active = get_option ( 'alb_license_active', '' ); $link = 'http://wpplusone.com/trafficautomator/activate.php'; // no license if (trim ( $paypal ) == '') { $this->log ( 'Error', 'License Required please visit settings and add the paypal email you used to purchase the product' ); exit (); } // cehck validety if (trim ( $active ) != '1') { // first time activation // opening the page using curl $this->c->set ( CURLOPT_URL, trim ( "$link?email=$paypal" ) ); $this->c->set ( CURLOPT_CONNECTTIMEOUT, 20 ); $this->c->set ( CURLOPT_TIMEOUT, 50 ); $this->c->set ( CURLOPT_HTTPGET, 1 ); $ret = $this->c->execute (); $ret = trim ( $ret ); // when no response if ($ret == '') { // service not available $this->log ( 'Error', 'Could not activate licence at this time may be our server is under maintenance now I will keep try and if the problem exists contact support' ); exit (); } elseif ($ret == '0') { // not valid license $this->log ( 'Error', 'License is not valid please visit settings and use a valid license please, if you do\'t have a license consider to purchase <a href="http://wpsbox.com/buy">Here</a> and if you have just purchased just hold on our records will update after 10 minutes please be patient' ); exit (); } elseif ($ret == '-1') { // Refunded $this->log ( 'Error', 'License is not valid a Refund may have been already issued for this license' ); exit (); } elseif ($ret == '1') { // valid license update_option ( 'alb_license_active', '1' ); // register last chek $date = date ( "m\-d\-y" ); update_option ( 'alb_license_last', $date ); } else { $this->log ( 'Error', 'License could not be validated at this time, our server may be under maintenance now will try the next cron' ); exit (); } } else { // license is working without problem we should check again $date = date ( "m\-d\-y" ); $last_check = get_option ( 'alb_license_last', $date ); $offset = $this->dateDiff ( "-", $date, $last_check ); if ($offset >= 1) { // echo 'checking license again'; // check again // opening the page using curl $this->c->set ( CURLOPT_URL, trim ( "$link?email=$paypal" ) ); $this->c->set ( CURLOPT_CONNECTTIMEOUT, 20 ); $this->c->set ( CURLOPT_TIMEOUT, 50 ); $this->c->set ( CURLOPT_HTTPGET, 1 ); $ret = $this->c->execute (); $ret = trim ( $ret ); // when no response if ($ret == '0') { // not valid license $this->log ( 'Error', 'License is not valid please visit settings and use a valid license please, if you do\'t have a license consider to purchase <a href="http://wpsbox.com/buy">Here</a>' ); update_option ( 'alb_license_active', '' ); exit (); } elseif ($ret == '-1') { // Refunded $this->log ( 'Error', 'License is not valid a Refund may have been already issued for this license' ); update_option ( 'alb_license_active', '' ); exit (); } elseif ($ret == '1') { // valid license update_option ( 'alb_license_active', '1' ); // register last chek $date = date ( "m\-d\-y" ); update_option ( 'alb_license_last', $date ); } } } return true; } /* * ---* Date Difference return days between two dates --- */ function dateDiff($dformat, $endDate, $beginDate) { $date_parts1 = explode ( $dformat, $beginDate ); $date_parts2 = explode ( $dformat, $endDate ); $start_date = gregoriantojd ( $date_parts1 [0], $date_parts1 [1], $date_parts1 [2] ); $end_date = gregoriantojd ( $date_parts2 [0], $date_parts2 [1], $date_parts2 [2] ); return $end_date - $start_date; } /* * ---* Download File --- */ function downloadfile($link) { $downloader = $this->plugin_url . 'downloader.php'; // $downloader='http://localhost/php/wpsbox_aals/downloader.php'; $link = str_replace ( 'http', 'httpz', $link ); $enc = urlencode ( $link ); // $return=file_get_contents($downloader.'?link='.$enc); // echo $return ; if (stristr ( $return, 'error' )) { echo '<br>An Error downloading the <b>damn file</b> :'; echo ' <i><small>' . $return . '</small></i>'; return false; } return true; } /* * ---* Solve captcha function --- */ function solvecap($url) { $decap_user = get_option ( 'alb_de_u' ); $decap_pass = get_option ( 'alb_de_p' ); // if decap not registered return false if (trim ( $decap_user ) == '' || trim ( $decap_pass ) == '') { echo '<br>decaptcher.com <b>account needed</b>'; $this->log ( 'Error', 'Capatcha Met at ' . $proxy . ' , Decapatcher Account needed please register one at decapatcher.com , add balance to it then enter login details at settings tab ' ); return false; } // curl ini $ch = curl_init (); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt ( $ch, CURLOPT_TIMEOUT, 20 ); curl_setopt ( $ch, CURLOPT_REFERER, 'http://www.bing.com/' ); curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8' ); curl_setopt ( $ch, CURLOPT_MAXREDIRS, 5 ); // Good leeway for redirections. curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 ); // Many login forms redirect at least once. curl_setopt ( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt ( $ch, CURLOPT_URL, trim ( $url ) ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); $img = curl_exec ( $ch ); if (trim ( $img ) == '') return false; if (curl_error ( $ch ) != '') { echo '<br>Image fetched with error:' . curl_error ( $ch ) . '<br>'; return false; } // file_put_contents('files/cap.jpg',$img); // positng image to capatcher to get the decapatched version curl_setopt ( $ch, CURLOPT_VERBOSE, 0 ); curl_setopt ( $ch, CURLOPT_URL, 'http://poster.decaptcher.com' ); curl_setopt ( $ch, CURLOPT_POST, true ); $decap_acc = '1169'; $post = array ( "pict" => "@files/cap.jpg", "function" => "picture2", "username" => $decap_user, "password" => $decap_pass, "pict_to" => "0", "pict_type" => $decap_acc ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post ); if (curl_error ( $ch ) != '') { echo '<br>Captacha Posted with error:' . curl_error ( $ch ) . '<br>'; return false; } $decap = curl_exec ( $ch ); echo '<br>Decap returned:' . $decap; // check if decapatcher returned an error - if (stristr ( $decap, '-' ) || trim ( $decap ) == '') { echo '<br>Decapatcher returned an <b>error</b> ' . $decap; $this->log ( 'Error', 'Decapatcher Account Error Please check login details and suffecient balance' ); return false; } if (trim ( $decap ) == '') return false; $decaps = explode ( '|', $decap ); $decap = $decaps [5]; if (trim ( $decap ) == '') return false; echo '<br>Decap Solution:' . $decap; return $decap; } /* * ---* Trackback function using wp modification --- */ function trackback($trackback_url, $author, $ttl, $excerpt, $link) { $options = array (); $options ['timeout'] = 4; $options ['body'] = array ( 'title' => $ttl, 'url' => $link, 'blog_name' => $author, 'excerpt' => $excerpt ); $response = wp_remote_post ( $trackback_url, $options ); if (is_wp_error ( $response )) { echo '<br>Trackback Error'; return; } else { echo '<br>No Track back error'; } } /* * function get_time_difference: get the time difference in minutes. * @start: time stamp * @end: time stamp */ function get_time_difference( $start, $end ) { $uts['start'] = $start ; $uts['end'] = $end ; if( $uts['start']!==-1 && $uts['end']!==-1 ) { if( $uts['end'] >= $uts['start'] ) { $diff = $uts['end'] - $uts['start']; return round($diff/60,0); } } } function truncateHtml($text, $length = 100, $ending = '...', $exact = false, $considerHtml = true) { if ($considerHtml) { // if the plain text is shorter than the maximum length, return the whole text if (strlen(preg_replace('/<.*?>/', '', $text)) <= $length) { return $text; } // splits all html-tags to scanable lines preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER); $total_length = strlen($ending); $open_tags = array(); $truncate = ''; foreach ($lines as $line_matchings) { // if there is any html-tag in this line, handle it and add it (uncounted) to the output if (!empty($line_matchings[1])) { // if it's an "empty element" with or without xhtml-conform closing slash if (preg_match('/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is', $line_matchings[1])) { // do nothing // if tag is a closing tag } else if (preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) { // delete tag from $open_tags list $pos = array_search($tag_matchings[1], $open_tags); if ($pos !== false) { unset($open_tags[$pos]); } // if tag is an opening tag } else if (preg_match('/^<\s*([^\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) { // add tag to the beginning of $open_tags list array_unshift($open_tags, strtolower($tag_matchings[1])); } // add html-tag to $truncate'd text $truncate .= $line_matchings[1]; } // calculate the length of the plain text part of the line; handle entities as one character $content_length = strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i', ' ', $line_matchings[2])); if ($total_length+$content_length> $length) { // the number of characters which are left $left = $length - $total_length; $entities_length = 0; // search for html entities if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i', $line_matchings[2], $entities, PREG_OFFSET_CAPTURE)) { // calculate the real length of all entities in the legal range foreach ($entities[0] as $entity) { if ($entity[1]+1-$entities_length <= $left) { $left--; $entities_length += strlen($entity[0]); } else { // no more characters left break; } } } $truncate .= substr($line_matchings[2], 0, $left+$entities_length); // maximum lenght is reached, so get off the loop break; } else { $truncate .= $line_matchings[2]; $total_length += $content_length; } // if the maximum length is reached, get off the loop if($total_length>= $length) { break; } } } else { if (strlen($text) <= $length) { return $text; } else { $truncate = substr($text, 0, $length - strlen($ending)); } } // if the words shouldn't be cut in the middle... if (!$exact) { // ...search the last occurance of a space... $spacepos = strrpos($truncate, ' '); if (isset($spacepos)) { // ...and cut the text in this position $truncate = substr($truncate, 0, $spacepos); } } // add the defined ending to the text $truncate .= $ending; if($considerHtml) { // close all unclosed html-tags foreach ($open_tags as $tag) { $truncate .= '</' . $tag . '>'; } } return $truncate; }//end function /** * function: curl with follocation that will get url if openbasedir is set or safe mode enabled * @param unknown $ch * @return mixed */ function curl_exec_follow( &$ch){ $max_redir = 3; for ($i=0;$i<$max_redir;$i++){ $exec=curl_exec($ch); $x=curl_error($ch); $info = curl_getinfo($ch); //meta refresh if(stristr($exec, 'http-equiv="refresh"') && $info['http_code'] == 200 && ! stristr($exec, '_fb_noscript')){ //get the Redirect URL preg_match('{<meta.*?http-equiv="refresh".*?>}', $exec,$redirectMatch); if(isset($redirectMatch[0]) && trim($redirectMatch[0]) != '' ){ preg_match('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $redirectMatch[0],$urlMatchs); if( isset($urlMatchs[0]) && stristr($urlMatchs[0], 'http') ){ $info['http_code'] = 302; $info['redirect_url'] = $urlMatchs[0]; } } }elseif( stristr($exec, 'location.replace') ){ preg_match('{location\.replace\((.*?)\)}' , $exec , $loc_matches); $possible_redirect = $loc_matches[1]; if(stristr($possible_redirect, 'http' )){ $possible_redirect = str_replace(array("'",'"'), '', $possible_redirect); $info['http_code'] = 302; $info['redirect_url'] = trim($possible_redirect); } } if($info['http_code'] == 301 || $info['http_code'] == 302){ //if there is no reddirect_url if(trim($info['redirect_url']) == ''){ $info['redirect_url']= curl_getinfo($ch, CURLINFO_REDIRECT_URL); //if php is below 5.3.7 and there is no redirect_url option if(trim($info['redirect_url']) == '' ){ if(stristr($exec, 'Location:')){ preg_match( '{Location:(.*)}' , $exec, $loc_matches); $redirect_url = trim($loc_matches[1]); if(trim($redirect_url) != ''){ $info['redirect_url'] = $redirect_url; } }else{ //$info['redirect_url'] = $info['url']; } } } //fb %20 correction if(stristr( $info['redirect_url'] , 'mbasic.facebook' )){ $info['redirect_url'] = str_replace('%20','' , $info['redirect_url'] ); } curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_URL, trim($info['redirect_url'])); $exec=curl_exec($ch); }else{ //no redirect just return break; } } return $exec; } /** * function curl_file_exists: check existence of a file * @param unknown $url * @return boolean */ function curl_file_exists($url){ //curl get $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); curl_setopt($this->ch, CURLOPT_REFERER, $url); //curl_setopt($this->ch, CURLOPT_NOBODY, true); $exec=curl_exec($this->ch); $x=curl_error($this->ch); $httpCode = curl_getinfo($this->ch, CURLINFO_HTTP_CODE); //curl_setopt($this->ch, CURLOPT_NOBODY, false); if($httpCode == '200' || $httpCode == '302') return true; return false; } //function to get user id and create it if not exists function get_user_id_by_display_name( $display_name ) { //trim $display_name = trim($display_name); //check user existence if ( ! $user = $this->db->get_row( $this->db->prepare( "SELECT `ID` FROM {$this->db->users} WHERE `display_name` = %s", $display_name ) ) ){ //replace spaces $login_name = str_replace(' ', '_', $display_name); //no user with this name let's create it and return the id $userdata['display_name'] = $display_name; $userdata['user_login'] = md5($display_name); $userdata['role'] = 'contributor'; $user_id = wp_insert_user( $userdata ); if( !is_wp_error($user_id) ) { echo '<br>New user created:'.$display_name; return $user_id; }else { return false; } return false; } return $user->ID; } //remove emoji from instagram function removeEmoji($text) { if(function_exists('wp_staticize_emoji')){ $text= wp_staticize_emoji($text); $text = preg_replace ( '{<img src="https://s.w.org.*?>}s', '', $text); return $text; }else{ $clean_text = ""; // Match Emoticons $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u'; $clean_text = preg_replace($regexEmoticons, '', $text); // Match Miscellaneous Symbols and Pictographs $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u'; $clean_text = preg_replace($regexSymbols, '', $clean_text); // Match Transport And Map Symbols $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u'; $clean_text = preg_replace($regexTransport, '', $clean_text); // Match Miscellaneous Symbols $regexMisc = '/[\x{2600}-\x{26FF}]/u'; $clean_text = preg_replace($regexMisc, '', $clean_text); // Match Dingbats $regexDingbats = '/[\x{2700}-\x{27BF}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); return $clean_text; } } //function for hyperlinking function hyperlink_this($text){ return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$0</a>', $text); } //function for stripping inline urls function strip_urls($content){ return preg_replace('{http[s]?://[^\s]*}', '', $content); } //fix invalid uلtf chars function fix_utf8($string){ //check if wrong utf8 if ( 1 === @preg_match( '/^./us', $string ) ) { return $string; }else{ echo '<br>Fixing invalid utf8 text...' ; if(function_exists('iconv')){ return iconv( 'utf-8', 'utf-8//IGNORE', $string ); }else{ echo '<br>Iconv module is not installed, please install PHP iconv module'; return $string; } } } function cleanthetitle($title) { $title = str_replace('nospin', '', $title); $title = str_replace(' ', '-', $title); // Replaces all spaces with hyphens. $title = preg_replace('/[^A-Za-z0-9\-]/', '', $title); // Removes special chars. return preg_replace('/-+/', '-', $title); // Replaces multiple hyphens with single one. } //is_enlish: checks if the text is english requires mb_string module function is_english ($string){ if( ! function_exists('mb_strlen') ){ echo '<br>Will skip checking if english as mbstring module must be installed '; return true; } $string = str_replace(array('”','“','’','‘','’'),'',$string) ; if(strlen($string) != mb_strlen($string, 'utf-8')) { return false; } else { return true; } } function attach_image($image_url,$camp_opt,$post_id){ // Upload dir $upload_dir = wp_upload_dir (); //img host $imghost = parse_url ( $image_url, PHP_URL_HOST ); if(stristr($imghost, 'http://')){ $imgrefer=$imghost; }else{ $imgrefer = 'http://'.$imghost; } //empty referal if( ! in_array('OPT_CACHE_REFER_NULL', $camp_opt) ){ curl_setopt ( $this->ch, CURLOPT_REFERER, $imgrefer ); }else{ curl_setopt ( $this->ch, CURLOPT_REFERER, '' ); } if( stristr($image_url, 'base64,') ){ $filename = time(); }else{ //decode html entitiies $image_url = html_entity_decode($image_url); if(stristr($image_url, '%') ) { $image_url = urldecode($image_url); } //file name to store $filename = basename ( $image_url ); if(stristr($image_url ,' ')){ $image_url = str_replace(' ', '%20', $image_url); } } // Clean thumb if(in_array('OPT_THUMB_CLEAN' , $camp_opt )){ $clean_name = ''; $clean_name = sanitize_file_name($post_title); echo '<br>clean name'.$clean_name; if(trim($clean_name) != ""){ //get the image extension \.\w{3} $ext = pathinfo($filename, PATHINFO_EXTENSION); if(stristr($ext, '?')){ $ext_parts = explode('?',$ext); $ext = $ext_parts[0]; } //clean parameters after filename $filename = trim($clean_name); if( trim($ext) !='' ){ $filename = $filename .'.'. $ext; } } } if( stristr($image_url, 'base64,') ){ $ex = explode('base64,', $current_img); $image_data = base64_decode($ex[1]); //set fileName extention .png, .jpg etc preg_match('{data:image/(.*?);}', $image_url ,$ex_matches); $image_ext = $ex_matches[1]; if(trim($image_ext) != ''){ $filename = $filename .'.'.$image_ext; } }else{ //get image content $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim( html_entity_decode($image_url) ) ); $image_data=$this->curl_exec_follow($this->ch); $x=curl_error($this->ch); } if(trim($image_data) != ''){ //check if already saved $image_data_md5 = md5($image_data); $is_cached = $this->is_cached($image_url , $image_data_md5); if( $is_cached != false ){ echo '<--already cached' ; $file = $this->cached_file_path; $guid = $is_cached; }else{ if (stristr ( $filename, '?' )) { $farr = explode ( '?', $filename ); $filename = $farr [0]; } //pagepeeker fix if(stristr($image_url, 'pagepeeker') && ! in_array('OPT_THUMB_CLEAN' , $camp_opt )){ $filename = md5($filename).'.jpg'; } if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; // check if same image name already exists if (file_exists ( $file )) { //get the current saved one to check if identical $already_saved_image_link=$upload_dir ['url'] . '/' . $filename; //curl get $x='error'; $url=$already_saved_image_link; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); $exec=curl_exec($this->ch); if(trim($exec) == trim($image_data)){ $idential = true; echo '<br>Featured image already exists with same path.. using it'; }else{ echo '<br>Featured image exists with same path but not identical.. saving '; $filename = time ( ) . '_' . $filename; } } //saving image if(! isset($idential )){ if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . $filename; else $file = $upload_dir ['basedir'] . '/' . $filename; $f=file_put_contents ( $file, $image_data ); } $guid = $upload_dir['url'] . '/' . basename( $filename ); $this->img_cached($image_url, $guid,$image_data_md5,$file); }//not cached //atttatchment check if exists or not global $wpdb; $query = "select * from $wpdb->posts where guid = '$guid'"; $already_saved_attachment = $wpdb->get_row($query); if(isset($already_saved_attachment->ID)){ $attach_id = $already_saved_attachment->ID; }else{ $wp_filetype = wp_check_filetype ( $filename, null ); if($wp_filetype['type'] == false){ $wp_filetype['type'] = 'image/jpeg'; } //Alt handling $imgTitle = sanitize_file_name ( $filename ); if(in_array('OPT_THUMB_ALT',$camp_opt)){ //$imgTitle = $title; } $attachment = array ( 'guid' => $guid, 'post_mime_type' => $wp_filetype ['type'], 'post_title' => $imgTitle, 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment ( $attachment, $file, $post_id ); require_once (ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata ( $attach_id, $file ); wp_update_attachment_metadata ( $attach_id, $attach_data ); } if(is_numeric($attach_id) && $attach_id > 0 ){ return $attach_id; } }else{ echo ' <-- can not get image content '.$x; return false; } } /** * Count chars on text using mb_ module and if not exists it count it using strlen * @param unknown $text */ function chars_count(&$text){ if(function_exists('mb_strlen')){ return mb_strlen($text); }else{ return strlen($text); } } function randomUserAgent(){ $agents = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8 Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0 Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063 Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0 Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"; $arrAgents = explode("\n", $agents); $rand = rand(0,count($arrAgents) -1); return trim($arrAgents[$rand]); } /** * Function to download file and return the url of it at the server * @param String $url * @parm String optional $ext ex .xml * return path of the file or false */ function download_file($url,$ext=''){ //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); if(trim($x) == '' && trim($exec) != ''){ $upload_dir = wp_upload_dir (); $filePath = $upload_dir['basedir'] .'/wp_automatic_temp'.$ext; $fileUrl = $upload_dir['baseurl'] .'/wp_automatic_temp'.$ext; file_put_contents($filePath, $exec); return $fileUrl; } return false; } /** * Fix src links * @param string $content to be fixed content * @param string $url * @return string fixed content */ function fix_relative_paths($content,$url){ //fix images $pars=parse_url($url); $host = $pars['host']; $scheme = $pars['scheme']; if($scheme != 'https') $scheme = 'http'; /*preg_match_all('{<img.*?src[\s]*=[\s]*["|\'](.*?)["|\'].*?>}is', $res['cont'] , $matches); */ $content = str_replace('src="//', 'src="'. $scheme . '://', $content); $content = str_replace('href="//', 'href="'. $scheme . '://', $content); preg_match_all('{(?:href|src)[\s]*=[\s]*["|\'](.*?)["|\'].*?>}is', $content , $matches); $img_srcs = ($matches[1]); $img_srcs = array_filter($img_srcs) ; foreach ($img_srcs as $img_src){ $original_src = $img_src; // ../ remove if(stristr($img_src, '../')){ $img_src = str_replace('../', '', $img_src); } if(stristr($img_src, 'http:') || stristr($img_src, 'www.') || stristr($img_src, 'https:') || stristr($img_src, 'data:image') ){ //valid image }else{ //not valid image i.e relative path starting with a / or not or // $img_src = trim($img_src); if(preg_match('{^//}', $img_src)){ $img_src = $scheme . ':'.$img_src; }elseif( preg_match('{^/}', $img_src) ){ $img_src = $scheme . '://'.$host.$img_src; }else{ $img_src = $scheme . '://'.$host.'/'.$img_src; } $reg_img = '{["|\'][\s]*'.preg_quote($original_src,'{').'[\s]*["|\']}s'; $content = preg_replace( $reg_img, '"'.$img_src.'"', $content); } } //Fix Srcset preg_match_all('{srcset[\s]*=[\s]*["|\'](.*?)["|\']}s' , $content , $srcset_matches ); $srcset_matches_raw = $srcset_matches[0]; $srcset_matches_inner = $srcset_matches[1]; $i = 0; foreach($srcset_matches_raw as $srcset){ if( stristr($srcset , 'http:') || stristr($srcset , 'https:') ){ //valid }else{ //lets fix $correct_srcset = $srcset_inner = $srcset_matches_inner[$i]; $srcset_inner_parts = explode(',' , $srcset_inner ); foreach($srcset_inner_parts as $srcset_row){ $srcset_row_parts = explode(' ', trim($srcset_row)); $img_src_raw = $img_src = $srcset_row_parts[0]; if(preg_match('{^//}', $img_src)){ $img_src = $scheme . ':'.$img_src; }elseif( preg_match('{^/}', $img_src) ){ $img_src = $scheme . '://'.$host.$img_src; }else{ $img_src = $scheme . '://'.$host.'/'.$img_src; } $srcset_row_correct = str_replace( $img_src_raw , $img_src , $srcset_row ); $correct_srcset = str_replace( $srcset_row , $srcset_row_correct , $correct_srcset ); } $content = str_replace($srcset_inner , $correct_srcset , $content ); } $i++; } //Fix relative links $content = str_replace('href="../', 'href="http://'.$host.'/', $content); $content = preg_replace('{href="/(\w)}', 'href="http://'.$host.'/$1', $content); return $content; } /** * return width of an image */ function get_image_width($image_data){ $upload_dir = wp_upload_dir (); //let's save the file if (wp_mkdir_p ( $upload_dir ['path'] )) $file = $upload_dir ['path'] . '/' . 'temp_wp_automatic'; else $file = $upload_dir ['basedir'] . '/' . 'temp_wp_automatic'; file_put_contents ( $file, $image_data ); $size = getimagesize($file); if($size != false){ return $size[0] ; }else{ return 0; } } /** * Auto fix lazy loading * @param $cont */ function lazy_loading_auto_fix($cont){ preg_match_all ( '{<img .*?>}s', $cont, $imgsMatchs ); // if no images $imgs_count = count ( $imgsMatchs [0] ); if ($imgs_count < 1) return $cont; $found_lazy_tag = ''; if (false && stristr ( $original_cont, ' data-src' )) { $found_lazy_tag = 'data-src'; } elseif (false && stristr ( $original_cont, ' data-src' )) { $found_lazy_tag = 'data-lazy-src'; } else { // suspecting lazy $lazy_suspected = false; $images_plain = implode ( ' ', $imgsMatchs [0] ); if (stristr ( $images_plain, 'lazy' )) { $lazy_suspected = true; } else { // src values preg_match_all ( '{ src="(.*?)"}', $images_plain, $srcs_matches ); $found_srcs_count = count ( $srcs_matches [0] ); $unique_srcs_count = count ( array_unique ( $srcs_matches [1] ) ); $diff_percentage = (($found_srcs_count - $unique_srcs_count)) * 100 / $found_srcs_count; if ($diff_percentage > 39) $lazy_suspected = true; } // finding suspected lazy attribute if ($lazy_suspected) { $images_plain_no_src = preg_replace ( '{ src[\s]?=[\s]?".*?"}', '', $images_plain ); $replace_known_attributes = array ( ' alt', ' srcset', ' data-srcset' ); $images_plain_no_src = str_replace ( $replace_known_attributes, '', $images_plain_no_src ); // attributes with slashes preg_match_all ( '{( [\w|-]*?)[\s]?=[\s]?"[^",]*?/[^",]*?"}', $images_plain_no_src, $possible_src_matches ); $unique_attr = (array_unique ( $possible_src_matches [1] )); if (isset ( $unique_attr [0] )) { $found_lazy_tag = $unique_attr[0]; } } } //found tag? if(trim($found_lazy_tag) != ''){ echo '<br>Lazy loading auto-detected lazy tag: '.$found_lazy_tag . ' fixing lazy loading....'; $cg_feed_lazy = trim($found_lazy_tag); }else{ return $cont; } if(! stristr($cont,$cg_feed_lazy)) return $cont; foreach($imgsMatchs[0] as $imgMatch){ if(stristr($imgMatch,$cg_feed_lazy )){ $newImg = $imgMatch; $newImg = preg_replace('{ src=".*?"}', ' ', $newImg); $newImg = str_replace(' '.$cg_feed_lazy, ' src', $newImg); $cont = str_replace($imgMatch, $newImg, $cont); } } return $cont; } /** * Check if filename contains an ext and append it if not based on the mime * @param string $filename file name * @param string $contentType content type */ function append_file_ext($filename,$contentType){ if(!preg_match('/\.(jpg|jpeg|jpe|png|gif|bmp|tiff|tif)$/i', $filename)) { if( stristr($contentType, 'image') ) { $filename.= '.' . trim( str_replace('image/', '', $contentType) ); } } return $filename; } //random text function randomString($length = 10) { $str = ""; $characters = array_merge(range('A','Z'), range('a','z'), range('0','9')); $max = count($characters) - 1; for ($i = 0; $i < $length; $i++) { $rand = mt_rand(0, $max); $str .= $characters[$rand]; } return $str; } /** * Random cookie name * @return string|unknown|mixed|boolean */ function cookieJarName(){ $name = get_option('wp_automatic_cjn',''); if( trim($name) == '') { $name= $this->randomString(). '_' .$this->randomString(); update_option('wp_automatic_cjn',$name); } return $name; } } // End ?>