function wpr_post($camp_id, $keyword="", $retry=1, $manual=0) { global $wpdb, $wpr_table_campaigns, $wpr_table_posts, $wpr_table_errors; if($retry > 0) {$retrymsg = " <b>(".__("Retry","wprobot")." $retry)</b>";} else {$retrymsg = "";} $time = current_time('mysql'); $errors = array(); $options = unserialize(get_option("wpr_options")); $result = $wpdb->get_row("SELECT * FROM " . $wpr_table_campaigns . " WHERE id = '$camp_id'"); if($result->pause == 1 && $manual == 0) {return false;} // select KEYWORD $keywords = unserialize($result->keywords); if(!$keyword) { if(empty($keywords)) { // SAVE and DISPLAY error $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$keyword', '', 'Inactive', ".__("'Post skipped because no keywords were found in the campaign.$retrymsg'", 'wprobot').", '$time' );"; $results = $wpdb->query($esql); return false; } // REMOVE KEYWORDS WHERE SKIPPED = 5 (better way without loop?) $keywords2 = $keywords; foreach($keywords as $key => $keyword) { if($keyword["skipped"] >= $options['wpr_err_disable'] && !$keyword["feed"]) { unset($keywords2[$key]); } } //echo "<pre>";print_r($keywords2);echo "</pre>"; //$keywords = array_values($keywords); $rnd = array_rand($keywords2); $keyword = $keywords[$rnd][0]; if($rnd === "" || $keyword === "" && !empty($keyword["feed"]) || !is_numeric($rnd)) { // SAVE and DISPLAY error $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$keyword', '', 'Inactive', ".__("'No active keywords or feeds for this campaign, possibly because they were disabled due to repeated errors. Check the status and reenable them on the campaign detail page.$retrymsg'", 'wprobot').", '$time' );"; $results = $wpdb->query($esql); return false; } } else { foreach($keywords as $key => $kw) { if($kw[0] == $keyword) { $rnd = $key; } } } $keywordsbackup = $keywords[$rnd]; // select CATEGORY $categories = unserialize($result->categories); if(!empty($categories[0]["id"])) {$categories = wpr_transform_cats($categories);} $catarray = array(); if(count($categories) == 1) { foreach($categories[0] as $cats) {$catarray[] = $cats["id"];} //$category = $categories[0]["id"]; } else { foreach($categories[$rnd] as $cats) {$catarray[] = $cats["id"];} //$category = $categories[$rnd]["id"]; } // select TEMPLATE $templates = unserialize($result->templates); $i = 1; foreach($templates as $tchance) { $tch[$i] = $templates[$i]["chance"]; $i++; } $random = rand(1,100); foreach($tch as $name => $chance){ $luck += $chance; if($random <= $luck && empty($templatenum)){ $templatenum = $name; } } $template = $templates[$templatenum]["content"]; $templateexcerpt = substr(strip_tags($template), 0, 130); $templateusedmsg = '<a target="_blank" class="tooltip" href="#">?<span>'.__('The template used for this post was: <strong>Post Template ',"wprobot").$templatenum.__('</strong>, starting with:<br/>',"wprobot").$templateexcerpt.__('<br/><br/><strong>If there was an error please check the associated module messages directly below this one!</strong>',"wprobot") .'</span></a>'; // Wordpress action hook do_action('wpr_before_post', $insert); $content = $template;//echo $template."<br>"; $noqkeyword = str_replace('"', '', $keyword); $content = str_replace("{keyword}", $noqkeyword, $content); $content = str_replace("{Keyword}", ucwords($noqkeyword), $content); $content = str_replace("{title}", $title, $content); $catreplace = get_category_link( $catarray[0] ); if (!is_wp_error($catreplace)) { $content = str_replace("{catlink}", $catreplace, $content); } else {$content = str_replace("{catlink}", "", $content); } // AMAZON preg_match_all('#\{amazonlist(.*)\}#iU', $content, $matches, PREG_SET_ORDER); if ($matches) { foreach($matches as $match) { $match[1] = substr($match[1], 1); if($match[1]) {$amanum = $match[1];} else {$amanum = 1;} $amalist = wpr_amazon_getlist($keywords[$rnd][0],$amanum); if(isset($amalist["error"]) && is_array($amalist)) {$errors[] = $amalist["error"];$content = str_replace($match[0], "", $content);} $content = str_replace($match[0], $amalist, $content); } } // THUMBNAIL preg_match_all('#\{thumbnail(.*)\}#iU', $content, $matches, PREG_SET_ORDER); if ($matches) { foreach($matches as $match) { $match[1] = substr($match[1], 1); if($match[1]) {$tkw = $match[1];} else {$tkw = $keywords[$rnd][0];} $thumbnail = wpr_flickr_getthumbnail($tkw); if(!empty($thumbnail["error"])) {$errors[] = $thumbnail["error"];} $content = str_replace($match[0], $thumbnail[0]["content"], $content); } } // RANDOM Tags $content = wpr_random_tags($content); $title = $templates[$templatenum]["title"]; $noqkeyword = str_replace('"', '', $keyword); $title = str_replace("{keyword}", $noqkeyword, $title); $title = str_replace("{Keyword}", ucwords($noqkeyword), $title); if(!empty($keywords[$rnd]["alternative"])) { $ll = 1; foreach($keywords[$rnd]["alternative"] as $alternative) { $content = str_replace("{keyword$ll}", $alternative, $content); $title = str_replace("{keyword$ll}", $alternative, $title); $ll++; } } // RANDOM Tags $title = wpr_random_tags($title); $raz[0] = "{";$raz[1] = "}"; preg_match_all("/\\".$raz[0]."[^\\".$raz[1]."]+\\".$raz[1]."/s", $content, $matches); $counts = array_count_values ( $matches[0] ); //echo $counts["{amazon}"]; $wpr_modulesnum = count($matches[0]); if($wpr_modulesnum <= 0) { // SAVE and DISPLAY error $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$keyword', '', 'Inactive', ".__("'Post skipped because no modules were found in the template.$retrymsg'", 'wprobot').", '$time' );"; $results = $wpdb->query($esql); return false; } $usql = "INSERT INTO ".$wpr_table_posts." ( campaign, keyword, module, unique_id, time ) VALUES"; // Get Content for each Module // ["content"] = Content of the item (replaced module template code) // ["title"] = Title of the item (i.e. Product title) // ["unique"] = Unique ID (i.e. ASIN) // ["comments"] = Possible comment content of the item (i.e. reviews) $contents = array(); $commentsarray = array(); $titleerror = 0; $duplicatecount = 0; $errorcount = 0; foreach($counts as $module => $count) { $modulname = str_replace(array("{","}"), "", $module); $function = "wpr_".$modulname."post"; $optional = "";$comments = ""; switch ($modulname) { case "amazon": $optional = array($result->amazon_department,$keywords[$rnd]["node"]); break; case "ebay": $optional = $result->ebay_cat; break; case "flickr": $comments = $templates[$templatenum]["comments"]["$modulname"]; break; case "youtube": $comments = $templates[$templatenum]["comments"]["$modulname"]; break; case "yahooanswers": $optional = $result->yahoo_cat; $comments = $templates[$templatenum]["comments"]["$modulname"]; break; case "rss": $optional = $keywords[$rnd]["feed"]; break; } // GET CONTENT if(function_exists($function)) { $contents["$modulname"] = $function($keyword, $count, $keywords[$rnd][1]["$modulname"], $optional, $comments); if(!empty($contents["$modulname"]["error"])) { $errors[] = $contents["$modulname"]["error"]; $errorcount = $errorcount + 1 * $counts["{".$modulname."}"]; } } else { $title = str_replace("{".$modulname."title}", "", $title); $errors[] = array("module" => ucwords($modulname), "reason" => "Not Installed", "message" => __("$modulname is not installed on this weblog and has been skipped.", 'wprobot')); $errorcount = $errorcount + 1; } // CONTENT REPLACE $$modulname = 0; $dupl = 0; foreach ($matches[0] as $element) { if($element=="{".$modulname."}") { $unique = $contents["$modulname"][$$modulname]["unique"]; if($unique != "" || $modulname == "ebay" ) { $dcheck = wpr_check_unique($unique); //echo "CHECK".$dcheck; if($options['wpr_check_unique_old'] == "Yes") {$dcheck2 = wpr_check_unique_old($contents["$modulname"][$$modulname]["title"]);} else {$dcheck2 = false;} if($dcheck == false && $dcheck2 == false) { $content = preg_replace('/\{'.$modulname.'\}/', $contents["$modulname"][$$modulname]["content"], $content, 1); if(!isset($contents["$modulname"]["error"]) ) { $unique = $wpdb->escape($unique); $ekeyword = $wpdb->escape($keyword); $usql .= " ( '$camp_id', '$ekeyword', '$modulname', '$unique', '$time' ),"; } if($templates[$templatenum]["comments"]["$modulname"] == 1) {$commentsarray[] = $contents["$modulname"][$$modulname]["comments"];} } else { // DUPLICATE POST $dupl = 1; $duplicatecount++; $content = preg_replace('/\{'.$modulname.'\}/', "", $content, 1); $errors[] = array("module" => ucwords($modulname), "reason" => "Duplicate", "message" => __("Skipping ", 'wprobot').ucwords($modulname).__(" module because the content has already been posted.", 'wprobot')); $errorcount = $errorcount + 1; } } //echo "------------DEBUG START------------<br/>"; //echo $dupl." DUPLICATE<br/>"; //echo $contents["$modulname"]["error"]." ERROR<br/>"; //echo $counts["{".$modulname."}"]." FIRST COUNT<br/>"; //echo $$modulname." SECOND COUNT<br/>"; // TITLE REPLACE $titlecheck = strpos($title, "{".$modulname."title}"); $titlecheck2 = strpos($title, "{title}"); $modulecheckvar = $$modulname + 1; if ($titlecheck !== false || $titlecheck2 !== false) { if ($counts["{".$modulname."}"] > $modulecheckvar && $dupl == 1 || $counts["{".$modulname."}"] > $modulecheckvar && !empty($contents["$modulname"]["error"])) { // Dont Replace Title because there is another title module item } elseif($counts["{".$modulname."}"] <= $modulecheckvar && $dupl == 1) { // Title Duplicate $titleduplicate = 1; } elseif($counts["{".$modulname."}"] <= $modulecheckvar && !empty($contents["$modulname"]["error"]) || $counts["{".$modulname."}"] <= $modulecheckvar && empty($contents["$modulname"][0]["title"])) { // Title Error $titleerror = 1; } else { // Replace Title $title = str_replace("{".$modulname."title}", $contents["$modulname"][$$modulname]["title"], $title); $title = str_replace("{title}", $contents["$modulname"][$$modulname]["title"], $title); } } $$modulname++; } } if($contents["$modulname"]["error"]["reason"] == "IncNum") {$incnum = 1;} else {$incnum = 0;} // INCREASE NUMS if(empty($contents["$modulname"]["error"]) || $contents["$modulname"]["error"]["reason"] == "IncNum") { // don't increase NUMs if ERROR for module $keywords[$rnd][1]["$modulname"] = $keywords[$rnd][1]["$modulname"] + $$modulname; // RESET POST COUNT if($keywords[$rnd][1]["$modulname"] > $options['wpr_resetcount'] && $options['wpr_resetcount'] != "no") {$keywords[$rnd][1]["$modulname"] = 0;} if($modulename == "ebay" && $keywords[$rnd][1]["$modulname"] > 50) {$keywords[$rnd][1]["$modulname"] = 0;} } $content = str_replace("{".$modulname."}","",$content); } // check ERRORS //$errorsnum = count($errors); $errorsnum = $errorcount; $skip = 0; if(!empty($keywords[$rnd]["feed"])) {$errkeyword = "Feed";} elseif(!empty($keywords[$rnd]["node"])) {$errkeyword = "Node:".$keywords[$rnd]["node"];} else {$errkeyword = $wpdb->escape($keyword);} // EXCLUDE KEYWORDS Check $options["wpr_global_exclude"] $excludeskip = 0; $excludes = unserialize($result->excludekws); $globals = str_replace("\r", "", $options["wpr_global_exclude"]); $globals = explode("\n", $globals); $excludes = array_merge($excludes, $globals); if(!empty($excludes)) { foreach($excludes as $exclude) { if($exclude != "" && $exclude != " " ) { $excheck = stripos($content, $exclude); $texcheck = stripos($title, $exclude); if($excheck === false && $texcheck === false) { } else { $excludeskip = 1; $errors = array(); $errors[] = array("module" => "", "reason" => "Exclude", "message" => __("Skipping post because exclude keyword $exclude was found.$retrymsg $templateusedmsg", 'wprobot'), "time" => "$time"); break; } } } } if($excludeskip == 0) { // MARK KEYWORD AS yellow, orange, etc $wpr_modulessuccess = $wpr_modulesnum - $errorsnum; $duplsuccess = $wpr_modulesnum - $duplicatecount; if($duplicatecount > $options["wpr_err_maxerr"] || $duplsuccess < $options["wpr_err_minmod"] || $titleduplicate == 1) { // DUPLICATE ERROR - WiTHOUT skipped INCREASE $errors[] = array("module" => "", "reason" => "Duplicate Content", "message" => __("Skipping post to prevent duplicate content.", 'wprobot')."$retrymsg $templateusedmsg", "time" => "$time"); $skip = 1; } elseif($titleerror == 1) { if($incnum != 1) {$keywords[$rnd] = $keywordsbackup;} $keywords[$rnd]["skipped"] = $keywords[$rnd]["skipped"] + 1; $errors[] = array("module" => "", "reason" => "Post skipped", "message" => __("Skipping post because the main module (title module) returned an error.", 'wprobot')."$retrymsg $templateusedmsg", "time" => "$time"); $skip = 1; } elseif($errorsnum > $options["wpr_err_maxerr"] || $wpr_modulessuccess < $options["wpr_err_minmod"]) { if($incnum != 1) {$keywords[$rnd] = $keywordsbackup;} $keywords[$rnd]["skipped"] = $keywords[$rnd]["skipped"] + 1; $errors[] = array("module" => "", "reason" => "Post skipped", "message" => __("Skipping post because too many module errors were encountered.", 'wprobot')."$retrymsg $templateusedmsg", "time" => "$time"); $skip = 1; } else { $keywords[$rnd]["skipped"] = 0; } } // SAVE ERRORS if($errorsnum > 0 || $excludeskip == 1 || $titleerror == 1) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; foreach($errors as $error) { $error["message"] = $wpdb->escape($error["message"]); $esql .= " ( '$camp_id', '$errkeyword', '".$error["module"]."', '".$error["reason"]."', '".$error["message"]."', '$time' ),"; } $esql = substr_replace($esql ,";",-1); $results = $wpdb->query($esql); } // SKIP if EXCLUDE found, errors > MAXERRORS or modules < MINMODULES if($excludeskip == 1 || $skip == 1) { // - update campaign entry with new NUMS $keywords = serialize($keywords); $keywords = $wpdb->escape($keywords); $sql = "UPDATE " . $wpr_table_campaigns . " SET `keywords` = '".$keywords."' WHERE `id` = '".$camp_id."'"; $results = $wpdb->query($sql); return false; } // SAVE IMAGES if($options['wpr_save_images'] == "Yes") { $allimages = wpr_findimages($content); $imageurls = $allimages[2]; //echo "<pre>";print_r($allimages[2]);echo "</pre>"; if(sizeof($imageurls)) { foreach($imageurls as $oldurl) { if(strpos($oldurl, plugin_basename( dirname(__FILE__) )) === false) { $newurl = wpr_saveimage($oldurl,$keyword); if($newurl) {$content = str_replace($oldurl, $newurl, $content);} } } } } // TRANSLATION if(function_exists("wpr_translate_partial")) { $title = wpr_translate_partial($title); } $translation = unserialize($result->translation); if($translation["chance"] >= rand(1,100)) { if($translation["from"] != "no" && $translation["to1"] != "no") { $translationcontent = wpr_translate($content,$translation["from"],$translation["to1"],$translation["to2"],$translation["to3"]); //print_r($translationcontent); if($options["wpr_trans_titles"] == "yes") { $translationtitle = wpr_translate($title,$translation["from"],$translation["to1"],$translation["to2"],$translation["to3"]); } if(!empty($translationcontent["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'Translation', '".$translationcontent["error"]["reason"]."', '".$translationcontent["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); if($options['wpr_trans_fail'] == "skip") { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', '', 'Post skipped', '".__("Skipping post because translation failed ","wprobot")."$retrymsg $templateusedmsg', '$time' );"; $results = $wpdb->query($esql); return false; } } elseif(empty($translationcontent)) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'Translation', 'Translation Failed', '".__("The post could not be translated.","wprobot")."', '$time' );"; $results = $wpdb->query($esql); if($options['wpr_trans_fail'] == "skip") { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', '', 'Post skipped', '".__("Skipping post because translation failed ","wprobot")."$retrymsg $templateusedmsg', '$time' );"; $results = $wpdb->query($esql); return false; } } else { $content = $translationcontent; if($options["wpr_trans_titles"] == "yes") {$title = $translationtitle;} if($translation["comments"] == 1) {$transcomments = 1;} else {$transcomments = 0;} } } } $yahoocat = unserialize($result->yahoo_cat); if(!is_array($yahoocat)) { $yahoocat = array(); $yahoocat["rw"] = 0; $yahoocat["ps"] = $result->yahoo_cat; $yahoocat["a"] = ""; } // REWRITE if($yahoocat["rw"] == 1) { $rewriter = array(); if($options['wpr_rewrite_active_tbs'] == 1 || $options['wpr_rewrite_active'] == "tbs" || $options['wpr_rewrite_active'] == "both") { $rewriter[] = "tbs"; } if($options['wpr_rewrite_active_sc'] == 1 || $options['wpr_rewrite_active'] == "sc" || $options['wpr_rewrite_active'] == "both") { $rewriter[] = "sc"; } if($options['wpr_rewrite_active_schimp'] == 1 || $options['wpr_rewrite_active'] == "schimp" || $options['wpr_rewrite_active'] == "both") { $rewriter[] = "schimp"; } if($options['wpr_rewrite_active_ucg'] == 1 || $options['wpr_rewrite_active'] == "Yes" || $options['wpr_rewrite_active'] == "both") { $rewriter[] = "ucg"; } if($options['wpr_rewrite_active_sr'] == 1) { $rewriter[] = "sr"; } if($options['wpr_rewrite_active_wai'] == 1) { $rewriter[] = "wai"; } $rand_key = array_rand($rewriter); if($rewriter[$rand_key] == "tbs") { $options['wpr_rewrite_active'] = "tbs"; } elseif($rewriter[$rand_key] == "sc") { $options['wpr_rewrite_active'] = "sc"; } elseif($rewriter[$rand_key] == "schimp") { $options['wpr_rewrite_active'] = "schimp"; } elseif($rewriter[$rand_key] == "ucg") { $options['wpr_rewrite_active'] = "Yes"; } elseif($rewriter[$rand_key] == "sr") { $options['wpr_rewrite_active'] = "sr"; } elseif($rewriter[$rand_key] == "wai") { $options['wpr_rewrite_active'] = "wai"; } //print_r($rewriter);echo "Rewriter: ".$rand_key . " ". $options['wpr_rewrite_active'] . "\n"; } if($options['wpr_rewrite_active'] == "Yes" && $yahoocat["rw"] == 1) { // UCG if(empty($options['wpr_rewrite_email']) || empty($options['wpr_rewrite_key'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'UCG Rewriter', 'UCG Rewriter', 'You need to enter your API Key and Email in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/>".$content . "<br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_rewrite($content,$options['wpr_rewrite_level']); //echo $rewrite . "<br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'UCG Rewriter', '".$rewrite["error"]["reason"]."', '".$rewrite["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; } } } elseif($options['wpr_rewrite_active'] == "tbs" && $yahoocat["rw"] == 1) { // TBS if(empty($options['wpr_tbs_rewrite_pw']) || empty($options['wpr_tbs_rewrite_email'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'TheBestSpinner', 'TheBestSpinner', 'You need to enter your TheBestSpinner email and password in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/>".$content . "<br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_tbs_rewrite($content,$options['wpr_tbs_rewrite_email'],$options['wpr_tbs_rewrite_pw'],$options['wpr_tbs_spintxt'],$options['wpr_tbs_quality'],$keyword,$options['wpr_rewrite_protected']); //echo $rewrite . "<br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'TheBestSpinner', '".$rewrite["error"]["reason"]."', '".$rewrite["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; //echo "<br/><br/>-------CONTENT-------------<br/><br/>".$content . "<br/><br/>---------CONTENT----------<br/><br/>";////////// } // REWRITE TITLE if($options['wpr_tbs_rewrite_title'] == "Yes") { $rewritetitle = wpr_tbs_rewrite($title,$options['wpr_tbs_rewrite_email'],$options['wpr_tbs_rewrite_pw'],$options['wpr_tbs_spintxt'],$options['wpr_tbs_quality'],$keyword,$options['wpr_rewrite_protected']); if(!empty($rewritetitle["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'TheBestSpinner', '".$rewritetitle["error"]["reason"]."', '".$rewritetitle["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $title = $rewritetitle; } } } } elseif($options['wpr_rewrite_active'] == "sc" && $yahoocat["rw"] == 1) { // Spinnerchief if(empty($options['wpr_sc_rewrite_pw']) || empty($options['wpr_sc_rewrite_email'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', 'SpinnerChief', 'You need to enter your SpinnerChief username and password in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/><div>".$content . "</div><br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_sc_rewrite($content,$options['wpr_sc_rewrite_email'],$options['wpr_sc_rewrite_pw'],$options['wpr_sc_quality'],$keyword,$options['wpr_rewrite_protected'],$options['wpr_sc_port'], $options['wpr_sc_thesaurus']); //echo "<div>".$rewrite . "</div><br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', '".$rewrite["error"]["reason"]."', '".$wpdb->escape($rewrite["error"]["message"])."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; //echo "<br/><br/>-------CONTENT-------------<br/><br/>".$content . "<br/><br/>---------CONTENT----------<br/><br/>";////////// } // REWRITE TITLE if($options['wpr_tbs_rewrite_title'] == "Yes") { $rewritetitle = wpr_sc_rewrite($title,$options['wpr_sc_rewrite_email'],$options['wpr_sc_rewrite_pw'],$options['wpr_sc_quality'],$keyword,$options['wpr_rewrite_protected'],$options['wpr_sc_port'], $options['wpr_sc_thesaurus']); if(!empty($rewritetitle["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', '".$rewritetitle["error"]["reason"]."', '".$rewritetitle["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $title = $rewritetitle; } } } } elseif($options['wpr_rewrite_active'] == "schimp" && $yahoocat["rw"] == 1) { // SpinChimp if(empty($options['wpr_schimp_rewrite_pw']) || empty($options['wpr_schimp_rewrite_email'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', 'SpinnerChief', 'You need to enter your SpinnerChief username and password in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/><div>".$content . "</div><br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_schimp_rewrite($content,$options['wpr_schimp_rewrite_email'],$options['wpr_schimp_rewrite_pw'],$options['wpr_schimp_quality'],$keyword,$options['wpr_rewrite_protected']); //echo "<div>".$rewrite . "</div><br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', '".$rewrite["error"]["reason"]."', '".$wpdb->escape($rewrite["error"]["message"])."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; //echo "<br/><br/>-------CONTENT-------------<br/><br/>".$content . "<br/><br/>---------CONTENT----------<br/><br/>";////////// } // REWRITE TITLE if($options['wpr_tbs_rewrite_title'] == "Yes") { $rewritetitle = wpr_schimp_rewrite($title,$options['wpr_schimp_rewrite_email'],$options['wpr_schimp_rewrite_pw'],$options['wpr_schimp_quality'],$keyword,$options['wpr_rewrite_protected']); if(!empty($rewritetitle["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinnerChief', '".$rewritetitle["error"]["reason"]."', '".$rewritetitle["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $title = $rewritetitle; } } } } elseif($options['wpr_rewrite_active'] == "sr" && $yahoocat["rw"] == 1) { // Spin Rewriter if(empty($options['wpr_sr_rewrite_pw']) || empty($options['wpr_sr_rewrite_email'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinRewriter', 'SpinRewriter', 'You need to enter your SpinRewriter email and password in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/><div>".$content . "</div><br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_sr_rewrite($content,$options['wpr_sr_rewrite_email'],$options['wpr_sr_rewrite_pw'],$options['wpr_sr_quality'],$keyword,$options['wpr_rewrite_protected']); //echo "<div>".$rewrite . "</div><br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinRewriter', '".$rewrite["error"]["reason"]."', '".$wpdb->escape($rewrite["error"]["message"])."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; //echo "<br/><br/>-------CONTENT-------------<br/><br/>".$content . "<br/><br/>---------CONTENT----------<br/><br/>";////////// } // REWRITE TITLE if($options['wpr_tbs_rewrite_title'] == "Yes") { $rewritetitle = wpr_sr_rewrite($title,$options['wpr_sr_rewrite_email'],$options['wpr_sr_rewrite_pw'],$options['wpr_sr_quality'],$keyword,$options['wpr_rewrite_protected']); if(!empty($rewritetitle["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'SpinRewriter', '".$rewritetitle["error"]["reason"]."', '".$rewritetitle["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $title = $rewritetitle; } } } } elseif($options['wpr_rewrite_active'] == "wai" && $yahoocat["rw"] == 1) { // WordAI if(empty($options['wpr_wai_rewrite_pw']) || empty($options['wpr_wai_rewrite_email'])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'WordAI', 'WordAI', 'You need to enter your WordAI email and password in the Options!', '$time' );"; $results = $wpdb->query($esql); } else { //echo "<br/><br/>-------orig-------------<br/><br/><div>".$content . "</div><br/><br/>---------rewrite----------<br/><br/>";////////// $rewrite = wpr_wai_rewrite($content,$options['wpr_wai_rewrite_email'],$options['wpr_wai_rewrite_pw'],$options['wpr_wai_quality'],$keyword,$options['wpr_rewrite_protected']); //echo "<div>".$rewrite . "</div><br/><br/>--------------------<br/><br/>"; ////////// if(!empty($rewrite["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'WordAI', '".$rewrite["error"]["reason"]."', '".$wpdb->escape($rewrite["error"]["message"])."', '$time' );"; $results = $wpdb->query($esql); } else { $content = $rewrite; //echo "<br/><br/>-------CONTENT-------------<br/><br/>".$content . "<br/><br/>---------CONTENT----------<br/><br/>";////////// } // REWRITE TITLE if($options['wpr_tbs_rewrite_title'] == "Yes") { $rewritetitle = wpr_wai_rewrite($title,$options['wpr_wai_rewrite_email'],$options['wpr_wai_rewrite_pw'],$options['wpr_wai_quality'],$keyword,$options['wpr_rewrite_protected']); if(!empty($rewritetitle["error"]["reason"])) { $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', 'WordAI', '".$rewritetitle["error"]["reason"]."', '".$rewritetitle["error"]["message"]."', '$time' );"; $results = $wpdb->query($esql); } else { $title = $rewritetitle; } } } } // REPLACES $replaces = unserialize($result->replacekws); if(!empty($replaces)) { foreach($replaces as $replace) { if($replace["chance"] >= rand(1,100)) { $replace["from"] = trim($replace["from"]); $replace["to"] = trim($replace["to"]); if($replace["code"] == "1") { $content = str_replace($replace["from"], $replace["to"], $content); $title = str_replace($replace["from"], $replace["to"], $title); } else { $content = str_replace(" ".$replace["from"], " ".$replace["to"], $content); $title = str_replace(" ".$replace["from"], " ".$replace["to"], $title); } } } } // Wordpress action hook do_action('wpr_before_post_save', $content,$title,$catarray); // INSERT POST into db $insert = wpr_insertpost($content,$title,$catarray,$yahoocat["ps"],$yahoocat["a"],"","",$yahoocat["pt"]); if (is_wp_error($insert)) { $errormessage = $insert->get_error_message(); // SAVE and DISPLAY error $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', '', 'Insert failed', ".__("'Wordpress Error: ", 'wprobot')."$errormessage $retrymsg $templateusedmsg', '$time' );"; $results = $wpdb->query($esql); return false; } elseif(isset($insert)) { // - update campaign entry with new NUMS $posts_created = $result->posts_created + 1; $keywords[$rnd][1]["total"] = $keywords[$rnd][1]["total"] + 1; $keywords = serialize($keywords); $keywords = $wpdb->escape($keywords); $sql = "UPDATE " . $wpr_table_campaigns . " SET `keywords` = '".$keywords."', `posts_created` = '".$posts_created."' WHERE `id` = '".$camp_id."'"; $results = $wpdb->query($sql); // - save UNIQUE IDS to post table $usql = substr_replace($usql ,";",-1); $results = $wpdb->query($usql); //echo $usql;echo "RES".$results; // - insert COMMENTS wpr_insertcomments($insert,$commentsarray,"",$transcomments,$translation); // - insert CUSTOM FIELDS //if($counts["{amazon}"] > 0) { // add_post_meta($insert, 'ma_amazonpost', $contents["amazon"][0]["unique"]); //} //add_post_meta($insert, 'wpr_keyword', $keyword); $customfield = unserialize($result->customfield); if(isset($customfield["name"])) { $customfields = array(); $customfields[1]["name"] = $customfield["name"]; $customfields[1]["value"] = $customfield["value"]; $customfield = $customfields; } if($yahoocat["t"] == 1 || !empty($customfield)) { if(!empty($contents["amazon"][0]["customfield"]["amazonthumbnail"])) {$ximage = $contents["amazon"][0]["customfield"]["amazonthumbnail"]; } elseif(!empty($contents["commissionjunction"][0]["customfield"]["cjthumbnail"])) {$ximage = $contents["commissionjunction"][0]["customfield"]["cjthumbnail"]; } elseif(!empty($contents["rss"][0]["customfield"]["rssimage"])) {$ximage = $contents["rss"][0]["customfield"]["rssimage"]; } elseif(!empty($contents["flickr"][0]["customfield"]["flickrimage"])) {$ximage = $contents["flickr"][0]["customfield"]["flickrimage"]; } elseif(!empty($thumbnail[0]["customfield"]["thumbnail"])) {$ximage = $thumbnail[0]["customfield"]["thumbnail"]; } elseif(!empty($contents["youtube"][0]["customfield"]["youtubethumbnail"])) {$ximage = $contents["youtube"][0]["customfield"]["youtubethumbnail"]; } elseif(!empty($contents["oodle"][0]["customfield"]["oodlethumbnail"])) {$ximage = $contents["oodle"][0]["customfield"]["oodlethumbnail"]; } elseif(!empty($contents["shopzilla"][0]["customfield"]["shopzillathumbnail"])) {$ximage = $contents["shopzilla"][0]["customfield"]["shopzillathumbnail"]; } elseif(!empty($contents["avantlink"][0]["customfield"]["avantlinkthumbnail"])) {$ximage = $contents["avantlink"][0]["customfield"]["avantlinkthumbnail"]; } elseif(!empty($contents["pressrelease"][0]["customfield"]["prthumbnail"])) {$ximage = $contents["pressrelease"][0]["customfield"]["prthumbnail"]; } else {$ximage = "";} if($options['wpr_save_images'] == "Yes" && !empty($ximage)) { if(strpos($ximage, plugin_basename( dirname(__FILE__) )) === false) { $newurl = wpr_saveimage($ximage,$keyword); if($newurl) {$ximage = $newurl;} } } $blogurl = get_bloginfo( "url" ); $yimage = str_replace($blogurl."/","",$newurl); //echo $ximage."<br>"; } for ($i = 1; $i <= count($customfield); $i++) { $cfname = $wpdb->escape($customfield[$i]["name"]); $cfcontent = $customfield[$i]["value"]; if($cfcontent != "" && $cfname != "") { $cfcontent = wpr_random_tags($cfcontent); $cfcontent = str_replace("{image}", $ximage, $cfcontent); $cfcontent = str_replace("{image-relative}", $yimage, $cfcontent); $cfcontent = str_replace("{keyword}", $keyword, $cfcontent); // NEW CUSTOM FIELD REPLACE foreach($contents as $content) { if(!empty($content[0]["customfield"])) { foreach($content[0]["customfield"] as $key => $value) { $cfcontent = str_replace("{".$key."}", $value, $cfcontent); } } } $cfcontent = preg_replace('#\{(.*)\}#smiU', '', $cfcontent); $cfcontent = $wpdb->escape($cfcontent); if(!empty($cfcontent)) {add_post_meta($insert, $cfname, $cfcontent);} } } // Post Thumbnails if($yahoocat["t"] == 1 && !empty($ximage)) { $upload_dir = wp_upload_dir(); $zimage = str_replace($upload_dir['baseurl']. "/","",$ximage); //echo $zimage." ZIMAGE<br>"; $post_thumbnail = wpr_insertpost($content,$title,$catarray,$yahoocat["ps"],$yahoocat["a"],$zimage,$insert); if(isset($post_thumbnail)) { add_post_meta($post_thumbnail, "_wp_attached_file", $zimage); list($width, $height) = getimagesize($ximage); $wpameta = array("file" => $zimage, "width" => $width, "height" => $height); //print_r($wpameta); add_post_meta($post_thumbnail, "_wp_attachment_metadata", serialize($wpameta)); add_post_meta($insert, "_thumbnail_id", $post_thumbnail); } } /* Array ( [width] => 1001 [height] => 1500 [hwstring_small] => height='96' width='64' [file] => 2011/01/la3-5-1500-001.jpg [sizes] => Array ( [thumbnail] => Array ( [file] => la3-5-1500-001-150x150.jpg [width] => 150 [height] => 150 ) ) ) */ // Wordpress action hook do_action('wpr_after_post', $insert); // - display success message IN OTHER FUNCTION $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', '', 'Post created', ".__("'The post has been created successfully.", 'wprobot')."$retrymsg $templateusedmsg'".", '$time' );"; $results = $wpdb->query($esql); return true; } else { // SAVE and DISPLAY error $esql = "INSERT INTO ".$wpr_table_errors." ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '$camp_id', '$errkeyword', '', 'Insert failed', ".__("'The post could not be inserted into the Wordpress database.", 'wprobot')."$retrymsg $templateusedmsg', '$time' );"; $results = $wpdb->query($esql); return false; } }
function wpr_rsspost($keyword="",$num,$start,$url,$comments="") { global $wpdb, $wpr_table_templates; $template = $wpdb->get_var("SELECT content FROM " . $wpr_table_templates . " WHERE type = 'rss'"); if($template == false || empty($template)) { $return["error"]["module"] = "RSS"; $return["error"]["reason"] = "No template"; $return["error"]["message"] = __("Module Template does not exist or could not be loaded.","wprobot"); return $return; } $options = unserialize(get_option("wpr_options")); $kw = $keyword; $url = trim($url); $url2 = urldecode($url); $start = 0; $found = 0; if ( function_exists('curl_init') ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Konqueror/4.0; Microsoft Windows) KHTML/4.0.80 (like Gecko)"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url2); curl_setopt($ch, CURLOPT_TIMEOUT, 60); $response = curl_exec($ch); if (!$response) { $return["error"]["module"] = "RSS"; $return["error"]["reason"] = "cURL Error"; $return["error"]["message"] = __("cURL Error Number ","wprobot").curl_errno($ch).": ".curl_error($ch); return $return; } curl_close($ch); } else { $response = @file_get_contents($url2); if (!$response) { $return["error"]["module"] = "RSS"; $return["error"]["reason"] = "cURL Error"; $return["error"]["message"] = __("cURL is not installed on this server!","wprobot"); return $return; } } $therss = @simplexml_load_string($response); if (!$therss){ $therss = @simplexml_load_file($url); } //echo "<pre>".print_r($therss)."</pre>"; if (empty($therss)) { $return["error"]["module"] = "RSS"; $return["error"]["reason"] = "RSS Error"; $return["error"]["message"] = __("RSS Feed could not be loaded or is empty!","wprobot"); return $return; } $posts = array(); if(isset($therss->entry)) {$fee = $therss->entry;$ffr="blogger";} elseif(isset($therss->channel->item)) {$fee = $therss->channel->item;} elseif(isset($therss->item)) {$fee = $therss->item;} else {$fee = "stop";} if($ffr=="blogger") { $ctitle = $therss->title; } else { $ctitle = $therss->channel->title; $clink = $therss->channel->link; $cdesc = $therss->channel->description; } if($fee == "stop") { $return["error"]["module"] = "RSS"; $return["error"]["reason"] = "Invalid Feed"; $return["error"]["message"] = __("Invalid Feed","wprobot"); return $return; } else { foreach ($fee as $item) { $allabort = 0; $abort = 0; //print_r($item); $title = $item->title; $title = preg_replace('/[\r\n\s]+/xms', ' ', trim($title)); $title = strip_tags($title); $guid = $item->guid; $gattr = $guid->attributes(); if($gattr['isPermaLink'] != "false" && !empty($guid)) {$unguid = $guid;} else {$unguid = "";} if($ffr=="blogger") { $link = $item->link; $descr = $item->summary; $fullcontent = $item->content; $date = $item->published; if($kw != "" && $options['wpr_rss_filter']=='yes') { $kw = str_replace('"', '', $kw); $kws = explode(" AND ", $kw); //print_r($kws); foreach($kws as $kwx) { $kw2 = " ".$kwx." "; //echo $kw2."<br>"; $c1 = stripos($fullcontent, $kw2); $c2 = stripos($descr, $kw2); $c3 = stripos($title, $kw2); if($c1 != false || $c2 != false || $c3 != false) { //echo "keyword was found<br>"; $abort = 0; } else { //echo "keyword was not found<br>"; $abort = 1; $allabort = 1; } } } foreach ($item->link as $link) { $attr = $link->attributes(); if($link['rel'] == "replies" && $link['type'] == "application/atom+xml") {$commentRss = $link['href'];} if($link['rel'] == "alternate") {$sourcelink = $link['href']; } //echo $sourcelink . "<br><br>"; print_r($link); } } else { $sourcelink = $item->link; $descr = $item->description; $date = $item->pubDate; $dc = $item->children("http://purl.org/dc/elements/1.1/"); $creator = (string) $dc->creator; $ccc = $item->children("http://purl.org/rss/1.0/modules/content/"); $fullcontent = (string)trim($ccc->encoded); if($kw != "" && $options['wpr_rss_filter']=='yes') { $kw = str_replace('"', '', $kw); $kws = explode(" AND ", $kw); //print_r($kws); foreach($kws as $kwx) { $kw2 = " ".$kwx." "; //echo $kw2."<br>"; $c1 = stripos($fullcontent, $kw2); $c2 = stripos($descr, $kw2); $c3 = stripos($title, $kw2); if($c1 != false || $c2 != false || $c3 != false) { //echo "keyword was found<br>"; $abort = 0; } else { //echo "keyword was not found<br>"; $abort = 1; $allabort = 1; } } } $wfw = $item->children("http://wellformedweb.org/CommentAPI/"); $commentRss = $wfw->commentRss; $enclosure = $item->enclosure["url"]; $media = $item->children('http://search.yahoo.com/mrss/'); if($media->player) { $attrs = $media->player->attributes(); $mediaplayer = $attrs['url']; } if($media->content) { $attrs = $media->content->attributes(); $mediacontent = $attrs['url']; $mediatype = $attrs['type']; $mediaheight = $attrs['height']; $mediawidth = $attrs['width']; $video =' <object width="'.$mediawidth.'" height="'.$mediaheight.'"> <param name="movie" value="'.$mediacontent.'"></param> <embed src="'.$mediacontent.'" type="'.$mediatype.'" width="'.$mediawidth.'" height="'.$mediaheight.'"></embed> </object>'; } if($media->thumbnail) { $attrs = $media->thumbnail[0]->attributes(); $mediathumbnail = $attrs['url']; } } if(!empty($unguid)) {$uid = $unguid;} else {$uid = $sourcelink;} if($abort == 0 && $allabort == 0 && !wpr_check_unique($uid)) { $source = '<a rel="nofollow" href="'.$sourcelink.'">'.$ctitle.'</a>'; if($fullcontent != "" && $options['wpr_rss_content']=='full') {$content = $fullcontent;} else {$content = $descr;} if ($options['wpr_rss_striplinks']=='yes') {$content = wpr_strip_selected_tags($content, array('a','iframe','script'));} if($options['wpr_rss_content']=='trunc') {$content = substr($content,0,350). "...";} $post = $template; $post = wpr_random_tags($post); $content = str_replace("$", "$ ", $content); $content = str_replace("\n\r", " ", $content); $content = str_replace("\n", " ", $content); $post = str_replace("{content}", $content, $post); $post = str_replace("{source}", $source, $post); $post = str_replace("{author}", $creator, $post); $noqkeyword = str_replace('"', '', $keyword); $post = str_replace("{keyword}", $noqkeyword, $post); $post = str_replace("{Keyword}", ucwords($noqkeyword), $post); $post = str_replace("{url}", $sourcelink, $post); $post = str_replace("{title}", $title, $post); $post = str_replace("{mediacontent}", $video, $post); $post = str_replace("{mediathumbnail}", $mediathumbnail, $post); $post = str_replace("{enclosure}", $enclosure, $post); if(function_exists("wpr_translate_partial")) { $post = wpr_translate_partial($post); } if(function_exists("wpr_rewrite_partial")) { $post = wpr_rewrite_partial($post,$options); } if(!empty($mediathumbnail)) {$customfield = $mediathumbnail;} elseif(!empty($enclosure)) {$customfield = $enclosure;} else {$customfield = "";} $customfield2 = array(); $customfield2["rsstitle"] = $title; $customfield2["rssmediacontent"] = $video; $customfield2["rssenclosure"] = $enclosure; $customfield2["rsssource"] = $sourcelink; $customfield2["rssimage"] = $customfield; $posts[$found]["unique"] = $uid; $posts[$found]["title"] = $title; $posts[$found]["content"] = $post; $posts[$found]["customfield"] = $customfield2; $found++; } if ($found==$num){break;} } } //print_r($posts); if($found > 0) { return $posts; } elseif($abort == 1) { // error: no posts found for keywords $posts["error"]["module"] = "RSS"; $posts["error"]["reason"] = "No content"; $posts["error"]["message"] = __("No post found in RSS feed for keyword $kw","wprobot"); return $posts; } elseif($found == 0) { // error: no posts found $posts["error"]["module"] = "RSS"; $posts["error"]["reason"] = "No content"; $posts["error"]["message"] = __("No unposted RSS items found!","wprobot"); return $posts; } elseif(empty($posts)) { // error: no posts found $posts["error"]["module"] = "RSS"; $posts["error"]["reason"] = "No content"; $posts["error"]["message"] = __("No items found in this feed!","wprobot"); return $posts; } else { // error: no posts found $posts["error"]["module"] = "RSS"; $posts["error"]["reason"] = "No content"; $posts["error"]["message"] = __("No items found in this feed!","wprobot"); return $posts; } }
function wpr_post($camp_id, $keyword = "", $retry = 1, $manual = 0) { global $wpdb, $wpr_table_campaigns, $wpr_table_posts, $wpr_table_errors; if ($retry > 0) { $retrymsg = " <b>(Retry {$retry})</b>"; } else { $retrymsg = ""; } $time = current_time('mysql'); $errors = array(); $options = unserialize(get_option("wpr_options")); $result = $wpdb->get_row("SELECT * FROM " . $wpr_table_campaigns . " WHERE id = '{$camp_id}'"); if ($result->pause == 1 && $manual == 0) { return false; } // select KEYWORD $keywords = unserialize($result->keywords); if (!$keyword) { if (empty($keywords)) { // SAVE and DISPLAY error $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$keyword}', '', 'Inactive', " . __("'Post skipped because no keywords were found in the campaign.{$retrymsg}'", 'wprobot') . ", '{$time}' );"; $results = $wpdb->query($esql); return false; } // REMOVE KEYWORDS WHERE SKIPPED = 5 (better way without loop?) $keywords2 = $keywords; foreach ($keywords as $key => $keyword) { if ($keyword["skipped"] >= $options['wpr_err_disable'] && !$keyword["feed"]) { unset($keywords2[$key]); } } //echo "<pre>";print_r($keywords2);echo "</pre>"; //$keywords = array_values($keywords); $rnd = array_rand($keywords2); $keyword = $keywords[$rnd][0]; if ($rnd === "" || $keyword === "" && !empty($keyword["feed"]) || !is_numeric($rnd)) { // SAVE and DISPLAY error $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$keyword}', '', 'Inactive', " . __("'No active keywords or feeds for this campaign.{$retrymsg}'", 'wprobot') . ", '{$time}' );"; $results = $wpdb->query($esql); return false; } } else { foreach ($keywords as $key => $kw) { if ($kw[0] == $keyword) { $rnd = $key; } } } $keywordsbackup = $keywords[$rnd]; // select CATEGORY $categories = unserialize($result->categories); if (count($categories) == 1) { $category = $categories[0]["id"]; } else { $category = $categories[$rnd]["id"]; } // select TEMPLATE $templates = unserialize($result->templates); $i = 1; foreach ($templates as $tchance) { $tch[$i] = $templates[$i]["chance"]; $i++; } $random = rand(1, 100); foreach ($tch as $name => $chance) { $luck += $chance; if ($random <= $luck && empty($templatenum)) { $templatenum = $name; } } $template = $templates[$templatenum]["content"]; $content = $template; //echo $template."<br>"; $content = str_replace("{keyword}", $keyword, $content); $content = str_replace("{Keyword}", ucwords($keyword), $content); $content = str_replace("{title}", $title, $content); $content = str_replace("{catlink}", get_category_link($category), $content); // THUMBNAIL preg_match_all('#\\{thumbnail(.*)\\}#iU', $content, $matches, PREG_SET_ORDER); if ($matches) { foreach ($matches as $match) { $match[1] = substr($match[1], 1); if ($match[1]) { $tkw = $match[1]; } else { $tkw = $keywords[$rnd][0]; } $thumbnail = wpr_flickr_getthumbnail($tkw); if (!empty($thumbnail["error"])) { $errors[] = $thumbnail["error"]; } $content = str_replace($match[0], $thumbnail[0]["content"], $content); } } // RANDOM Tags $content = wpr_random_tags($content); $title = $templates[$templatenum]["title"]; $title = str_replace("{keyword}", $keyword, $title); $title = str_replace("{Keyword}", ucwords($keyword), $title); // RANDOM Tags $title = wpr_random_tags($title); $raz[0] = "{"; $raz[1] = "}"; preg_match_all("/\\" . $raz[0] . "[^\\" . $raz[1] . "]+\\" . $raz[1] . "/s", $content, $matches); $counts = array_count_values($matches[0]); //echo $counts["{amazon}"]; $modulesnum = count($matches[0]); if ($modulesnum <= 0) { // SAVE and DISPLAY error $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$keyword}', '', 'Inactive', " . __("'Post skipped because no modules were found in the template.{$retrymsg}'", 'wprobot') . ", '{$time}' );"; $results = $wpdb->query($esql); return false; } $usql = "INSERT INTO " . $wpr_table_posts . " ( campaign, keyword, module, unique_id, time ) VALUES"; // Get Content for each Module // ["content"] = Content of the item (replaced module template code) // ["title"] = Title of the item (i.e. Product title) // ["unique"] = Unique ID (i.e. ASIN) // ["comments"] = Possible comment content of the item (i.e. reviews) $contents = array(); $commentsarray = array(); $titleerror = 0; $duplicatecount = 0; foreach ($counts as $module => $count) { $modulname = str_replace(array("{", "}"), "", $module); $function = "wpr_" . $modulname . "post"; $optional = ""; $comments = ""; switch ($modulname) { case "amazon": $optional = array($result->amazon_department, $keywords[$rnd]["node"]); break; case "ebay": $optional = $result->ebay_cat; break; case "flickr": $comments = $templates[$templatenum]["comments"]["{$modulname}"]; break; case "youtube": $comments = $templates[$templatenum]["comments"]["{$modulname}"]; break; case "yahooanswers": $optional = $result->yahoo_cat; $comments = $templates[$templatenum]["comments"]["{$modulname}"]; break; case "rss": $optional = $keywords[$rnd]["feed"]; break; } // GET CONTENT if (function_exists($function)) { $contents["{$modulname}"] = $function($keyword, $count, $keywords[$rnd][1]["{$modulname}"], $optional, $comments); if (!empty($contents["{$modulname}"]["error"])) { $errors[] = $contents["{$modulname}"]["error"]; } } else { $title = str_replace("{" . $modulname . "title}", "", $title); $errors[] = array("module" => ucwords($modulname), "reason" => "Not Installed", "message" => __("{$modulname} is not installed on this weblog and has been skipped.", 'wprobot')); } // CONTENT REPLACE ${$modulname} = 0; $dupl = 0; foreach ($matches[0] as $element) { if ($element == "{" . $modulname . "}") { $unique = $contents["{$modulname}"][${$modulname}]["unique"]; if ($unique != "" || $modulname == "ebay") { $dcheck = wpr_check_unique($unique); if ($options['wpr_check_unique_old'] == "Yes") { $dcheck2 = wpr_check_unique_old($contents["{$modulname}"][${$modulname}]["title"]); } else { $dcheck2 = false; } if ($dcheck == false && $dcheck2 == false) { $content = preg_replace('/\\{' . $modulname . '\\}/', $contents["{$modulname}"][${$modulname}]["content"], $content, 1); if (!isset($contents["{$modulname}"]["error"])) { $unique = $wpdb->escape($unique); $usql .= " ( '{$camp_id}', '{$keyword}', '{$modulname}', '{$unique}', '{$time}' ),"; } if ($templates[$templatenum]["comments"]["{$modulname}"] == 1) { $commentsarray[] = $contents["{$modulname}"][${$modulname}]["comments"]; } } else { // DUPLICATE POST $dupl = 1; $duplicatecount++; $content = preg_replace('/\\{' . $modulname . '\\}/', "", $content, 1); $errors[] = array("module" => ucwords($modulname), "reason" => "Duplicate", "message" => __("Skipping {$modulname} module because the content has already been posted.", 'wprobot')); } } //echo "------------DEBUG START------------<br/>"; //echo $dupl." DUPLICATE<br/>"; //echo $contents["$modulname"]["error"]." ERROR<br/>"; //echo $counts["{".$modulname."}"]." FIRST COUNT<br/>"; //echo $$modulname." SECOND COUNT<br/>"; // TITLE REPLACE $titlecheck = strpos($title, "{" . $modulname . "title}"); $titlecheck2 = strpos($title, "{title}"); $modulecheckvar = ${$modulname} + 1; if ($titlecheck !== false || $titlecheck2 !== false) { if ($counts["{" . $modulname . "}"] > $modulecheckvar && $dupl == 1 || $counts["{" . $modulname . "}"] > $modulecheckvar && !empty($contents["{$modulname}"]["error"])) { // Dont Replace Title because there is another title module item } elseif ($counts["{" . $modulname . "}"] <= $modulecheckvar && $dupl == 1) { // Title Duplicate $titleduplicate = 1; } elseif ($counts["{" . $modulname . "}"] <= $modulecheckvar && !empty($contents["{$modulname}"]["error"]) || $counts["{" . $modulname . "}"] <= $modulecheckvar && empty($contents["{$modulname}"][0]["title"])) { // Title Error $titleerror = 1; } else { // Replace Title $title = str_replace("{" . $modulname . "title}", $contents["{$modulname}"][${$modulname}]["title"], $title); $title = str_replace("{title}", $contents["{$modulname}"][${$modulname}]["title"], $title); } } ${$modulname}++; } } // INCREASE NUMS if (empty($contents["{$modulname}"]["error"])) { // don't increase NUMs if ERROR for module $keywords[$rnd][1]["{$modulname}"] = $keywords[$rnd][1]["{$modulname}"] + ${$modulname}; // RESET POST COUNT if ($keywords[$rnd][1]["{$modulname}"] > $options['wpr_resetcount'] && $options['wpr_resetcount'] != "no") { $keywords[$rnd][1]["{$modulname}"] = 0; } if ($modulename == "ebay" && $keywords[$rnd][1]["{$modulname}"] > 50) { $keywords[$rnd][1]["{$modulname}"] = 0; } } $content = str_replace("{" . $modulname . "}", "", $content); } // check ERRORS $errorsnum = count($errors); $skip = 0; if (!empty($keywords[$rnd]["feed"])) { $errkeyword = "Feed"; } elseif (!empty($keywords[$rnd]["node"])) { $errkeyword = "Node:" . $keywords[$rnd]["node"]; } else { $errkeyword = $keyword; } // EXCLUDE KEYWORDS Check $options["wpr_global_exclude"] $excludeskip = 0; $excludes = unserialize($result->excludekws); $globals = str_replace("\r", "", $options["wpr_global_exclude"]); $globals = explode("\n", $globals); $excludes = array_merge($excludes, $globals); if (!empty($excludes)) { foreach ($excludes as $exclude) { if ($exclude != "" && $exclude != " ") { $excheck = strpos($content, $exclude); if ($excheck === false) { } else { $excludeskip = 1; $errors = array(); $errors[] = array("module" => "", "reason" => "Exclude", "message" => __("Skipping post because exclude keyword {$exclude} was found.{$retrymsg}", 'wprobot'), "time" => "{$time}"); break; } } } } if ($excludeskip == 0) { // MARK KEYWORD AS yellow, orange, etc $modulessuccess = $modulesnum - $errorsnum; $duplsuccess = $modulesnum - $duplicatecount; if ($duplicatecount > $options["wpr_err_maxerr"] || $duplsuccess < $options["wpr_err_minmod"] || $titleduplicate == 1) { // DUPLICATE ERROR - WiTHOUT skipped INCREASE $errors[] = array("module" => "", "reason" => "Duplicate Content", "message" => __("Skipping post to prevent duplicate content.{$retrymsg}", 'wprobot'), "time" => "{$time}"); $skip = 1; } elseif ($titleerror == 1) { $keywords[$rnd] = $keywordsbackup; $keywords[$rnd]["skipped"] = $keywords[$rnd]["skipped"] + 1; $errors[] = array("module" => "", "reason" => "Post skipped", "message" => __("Skipping post because the main module (title module) returned an error.{$retrymsg}", 'wprobot'), "time" => "{$time}"); $skip = 1; } elseif ($errorsnum > $options["wpr_err_maxerr"] || $modulessuccess < $options["wpr_err_minmod"]) { $keywords[$rnd] = $keywordsbackup; $keywords[$rnd]["skipped"] = $keywords[$rnd]["skipped"] + 1; $errors[] = array("module" => "", "reason" => "Post skipped", "message" => __("Skipping post because too many module errors were encountered.{$retrymsg}", 'wprobot'), "time" => "{$time}"); $skip = 1; } else { $keywords[$rnd]["skipped"] = 0; } } // SAVE ERRORS if ($errorsnum > 0 || $excludeskip == 1 || $titleerror == 1) { $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; foreach ($errors as $error) { $error["message"] = $wpdb->escape($error["message"]); $esql .= " ( '{$camp_id}', '{$errkeyword}', '" . $error["module"] . "', '" . $error["reason"] . "', '" . $error["message"] . "', '{$time}' ),"; } $esql = substr_replace($esql, ";", -1); $results = $wpdb->query($esql); } // SKIP if EXCLUDE found, errors > MAXERRORS or modules < MINMODULES if ($excludeskip == 1 || $skip == 1) { // - update campaign entry with new NUMS $keywords = serialize($keywords); $sql = "UPDATE " . $wpr_table_campaigns . " SET `keywords` = '" . $keywords . "' WHERE `id` = '" . $camp_id . "'"; $results = $wpdb->query($sql); return false; } // TRANSLATION $translation = unserialize($result->translation); if ($translation["chance"] >= rand(1, 100)) { if ($translation["from"] != "no" && $translation["to1"] != "no") { $translationcontent = wpr_translate($content, $translation["from"], $translation["to1"], $translation["to2"]); //print_r($translationcontent); if ($options["wpr_trans_titles"] == "yes") { $translationtitle = wpr_translate($title, $translation["from"], $translation["to1"], $translation["to2"]); } if (!empty($translationcontent["error"]["reason"])) { $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', 'Translation', '" . $translationcontent["error"]["reason"] . "', '" . $translationcontent["error"]["message"] . "', '{$time}' );"; $results = $wpdb->query($esql); if ($options['wpr_trans_fail'] == "skip") { $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', '', 'Post skipped', 'Skipping post because translation failed.{$retrymsg}', '{$time}' );"; $results = $wpdb->query($esql); return false; } } elseif (empty($translationcontent)) { $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', 'Translation', 'Translation Failed', '" . __("The post could not be translated.", "wprobot") . "', '{$time}' );"; $results = $wpdb->query($esql); if ($options['wpr_trans_fail'] == "skip") { $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', '', 'Post skipped', 'Skipping post because translation failed.{$retrymsg}', '{$time}' );"; $results = $wpdb->query($esql); return false; } } else { $content = $translationcontent; if ($options["wpr_trans_titles"] == "yes") { $title = $translationtitle; } if ($translation["comments"] == 1) { $transcomments = 1; } else { $transcomments = 0; } } } } // REPLACES $replaces = unserialize($result->replacekws); if (!empty($replaces)) { foreach ($replaces as $replace) { if ($replace["chance"] >= rand(1, 100)) { $content = str_replace(" " . $replace["from"], " " . $replace["to"], $content); } } } // INSERT POST into db $insert = wpr_insertpost($content, $title, $category); if ($insert) { // - update campaign entry with new NUMS $posts_created = $result->posts_created + 1; $keywords[$rnd][1]["total"] = $keywords[$rnd][1]["total"] + 1; $keywords = serialize($keywords); $sql = "UPDATE " . $wpr_table_campaigns . " SET `keywords` = '" . $keywords . "', `posts_created` = '" . $posts_created . "' WHERE `id` = '" . $camp_id . "'"; $results = $wpdb->query($sql); // - save UNIQUE IDS to post table $usql = substr_replace($usql, ";", -1); $results = $wpdb->query($usql); // - insert COMMENTS wpr_insertcomments($insert, $commentsarray, "", $transcomments, $translation); // - insert CUSTOM FIELDS if ($counts["{amazon}"] > 0) { add_post_meta($insert, 'ma_amazonpost', $contents["amazon"][0]["unique"]); } $customfield = unserialize($result->customfield); $cfname = $customfield["name"]; $cfcontent = $customfield["value"]; if ($cfcontent != "" && $cfname != "") { if (!empty($contents["amazon"][0]["customfield"])) { $ximage = $contents["amazon"][0]["customfield"]; } elseif (!empty($contents["youtube"][0]["customfield"])) { $ximage = $contents["youtube"][0]["customfield"]; } elseif (!empty($contents["flickr"][0]["customfield"])) { $ximage = $contents["flickr"][0]["customfield"]; } elseif (!empty($thumbnail[0]["customfield"])) { $ximage = $thumbnail[0]["customfield"]; } else { $ximage = ""; } $cfcontent = str_replace("{image}", $ximage, $cfcontent); $cfcontent = str_replace("{amazonthumbnail}", $contents["amazon"][0]["customfield"], $cfcontent); $cfcontent = str_replace("{youtubethumbnail}", $contents["youtube"][0]["customfield"], $cfcontent); $cfcontent = str_replace("{flickrimage}", $contents["flickr"][0]["customfield"], $cfcontent); $cfcontent = str_replace("{thumbnail}", $thumbnail[0]["customfield"], $cfcontent); if (!empty($cfcontent)) { add_post_meta($insert, $cfname, $cfcontent); } } // - display success message IN OTHER FUNCTION $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', '', 'Post created', " . __("'The post has been created successfully.{$retrymsg}'", 'wprobot') . ", '{$time}' );"; $results = $wpdb->query($esql); return true; } else { // SAVE and DISPLAY error $esql = "INSERT INTO " . $wpr_table_errors . " ( campaign, keyword, module, reason, message, time ) VALUES"; $esql .= " ( '{$camp_id}', '{$errkeyword}', '', 'Insert failed', " . __("'The post could not be inserted into the Wordpress database.{$retrymsg}'", 'wprobot') . ", '{$time}' );"; $results = $wpdb->query($esql); return false; } }