/** * Processes a feed * * @param $feed URL string Feed * @return The number of posts added */ private function processFeed(&$feed) { @set_time_limit(0); trigger_error('<span class="coderr b">'.sprintf(__('Processing feed %1s.', WPeMatico :: TEXTDOMAIN ),$feed).'</span>' , E_USER_NOTICE); // Log $items = array(); $count = 0; $prime = true; // Access the feed $simplepie = WPeMatico :: fetchFeed($feed, false, $this->campaign['campaign_max']); foreach($simplepie->get_items() as $item) { if($prime){ //Siempre guardo el PRIMERO leido por feed (es el ultimo item, mas nuevo) $this->lasthash[$feed] = md5($item->get_permalink()); $prime=false; } $this->currenthash[$feed] = md5($item->get_permalink()); // el hash del item actual del feed feed if( !$this->cfg['allowduplicates'] || !$this->cfg['allowduptitle'] || !$this->cfg['allowduphash'] ){ if( !$this->cfg['allowduphash'] ){ // chequeo a la primer coincidencia sale del foreach $dupi = ( @$this->campaign[$feed]['lasthash'] == $this->currenthash[$feed] ); if ($dupi) { trigger_error(sprintf(__('Found duplicated hash \'%1s\'', WPeMatico :: TEXTDOMAIN ),$item->get_permalink()).': '.$this->currenthash[$feed] ,E_USER_NOTICE); trigger_error(__('Filtering duplicated posts.', WPeMatico :: TEXTDOMAIN ),E_USER_NOTICE); break; } } if( !$this->cfg['allowduptitle'] ){ if($this->isDuplicate($this->campaign, $feed, $item)) { trigger_error(__('Filtering duplicated posts.', WPeMatico :: TEXTDOMAIN ),E_USER_NOTICE); break; } } } $count++; array_unshift($items, $item); // add at Post stack in correct order by date if($count == $this->campaign['campaign_max']) { trigger_error(sprintf(__('Campaign fetch limit reached at %1s.', WPeMatico :: TEXTDOMAIN ),$this->campaign['campaign_max']),E_USER_NOTICE); break; } } // Processes post stack $realcount = 0; foreach($items as $item) { $realcount++; $suma=$this->processItem($simplepie, $item, $feed); if (isset($suma) && is_int($suma)) { $realcount = $realcount + $suma; $suma=""; } } if($realcount) { trigger_error(sprintf(__('%s posts added', WPeMatico :: TEXTDOMAIN ),$realcount),E_USER_NOTICE); } return $realcount; }
public static function CheckFields() { // check required fields values before save post $cfg = get_option(WPeMatico::OPTION_KEY); $err_message = ""; if (isset($_POST['campaign_wrd2cat'])) { $wrd2cat = array(); parse_str($_POST['campaign_wrd2cat'], $wrd2cat); $campaign_wrd2cat = @$wrd2cat['campaign_wrd2cat']; for ($id = 0; $id < count($campaign_wrd2cat); $id++) { $word = $campaign_wrd2cat[$id]; $regex = $_POST['campaign_wrd2cat_regex'][$id] == 1 ? true : false; if (!empty($word)) { if ($regex) { if (false === @preg_match($word, '')) { $err_message = $err_message != "" ? $err_message . "<br />" : ""; $err_message .= sprintf(__('There\'s an error with the supplied RegEx expression in word: %s', WPeMatico::TEXTDOMAIN), '<span class="coderr">' . $word . '</span>'); } } } } } if (isset($_POST['campaign_word_origin'])) { $rewrites = array(); parse_str($_POST['campaign_word_origin'], $rewrites); $campaign_word_origin = @$rewrites['campaign_word_origin']; for ($id = 0; $id < count($campaign_word_origin); $id++) { $origin = $campaign_word_origin[$id]; $regex = $_POST['campaign_word_option_regex'][$id] == 1 ? true : false; if (!empty($origin)) { if ($regex) { if (false === @preg_match($origin, '')) { $err_message = $err_message != "" ? $err_message . "<br />" : ""; $err_message .= sprintf(__('There\'s an error with the supplied RegEx expression in ReWrite: %s', WPeMatico::TEXTDOMAIN), '<span class="coderr">' . $origin . '</span>'); } } } } } if (!isset($cfg['disablecheckfeeds']) || !$cfg['disablecheckfeeds']) { // Si no esta desactivado en settings // Si no hay ningun feed devuelve mensaje de error // Proceso los feeds sacando los que estan en blanco if (isset($_POST['campaign_feeds'])) { $feeds = array(); parse_str($_POST['campaign_feeds'], $feeds); $all_feeds = $feeds['campaign_feeds']; for ($id = 0; $id < count($all_feeds); $id++) { $feedname = $all_feeds[$id]; if (!empty($feedname)) { if (!isset($campaign_feeds)) { $campaign_feeds = array(); } $campaign_feeds[] = $feedname; } } } if (empty($campaign_feeds) || !isset($campaign_feeds)) { $err_message = $err_message != "" ? $err_message . "<br />" : ""; $err_message .= __('At least one feed URL must be filled.', WPeMatico::TEXTDOMAIN); } else { foreach ($campaign_feeds as $feed) { $pos = strpos($feed, ' '); // el feed no puede tener espacios en el medio if ($pos === false) { $simplepie = WPeMatico::fetchFeed($feed, true); if ($simplepie->error()) { $err_message = $err_message != "" ? $err_message . "<br />" : ""; $err_message .= sprintf(__('Feed %s could not be parsed. (SimplePie said: %s)', WPeMatico::TEXTDOMAIN), '<strong class="coderr">' . $feed . '</strong>', $simplepie->error()); } } else { $err_message = $err_message != "" ? $err_message . "<br />" : ""; $err_message .= sprintf(__('Feed %s could not be parsed because has an space in url.', WPeMatico::TEXTDOMAIN), '<strong class="coderr">' . $feed . '</strong>'); } } } } if ($cfg['nonstatic']) { $err_message .= NoNStatic::Checkp($_POST, $err_message); } if ($err_message == "") { $err_message = "1"; } //NO ERROR die($err_message); // Return 1 si OK, else -> error string }