<$rules> * @return * @access */ public function formatSieveScript( $rules ) { $require_fileinto = $require_flag = $require_reject = $require_vacation = $require_body = $require_imapflag = $vacation = $startswith = $endswith = false; $script_rules = $script_header = $script_criteria = $vacation_action = ""; $i = 0; foreach( $rules as $name => $data ) { /* Usado na opção Bloquear usuário do ExpressoMail */ if($data['block']) { ($i >0) ? $script_match = 'elsif anyof' : $script_match = 'if anyof'; $script_match = $script_match . "(address :is \"from\" [\"" .$data['name'] . "\"]) {\r\n"; $script_match .= "fileinto \"INBOX/Spam\"; \r\n}\r\n"; $script_rules .= $script_match; $script_match = ""; $script_criteria = ""; $require_fileinto = true; $i++; continue; } if( $data['enabled'] == 'false' ) continue; $vacation = false; $criteria = $data['criteria']; $action = $data['actions']; ($i >0) ? $script_match = 'els' : $script_match = ''; $data['isExact'] == 'false' ? $script_match .= 'if anyof (' : $script_match .= 'if allof ('; for ($j=0; $j': $criteria[$j]['operator'] = "over"; break; case '<': $criteria[$j]['operator'] = "under"; break; case '=': $criteria[$j]['operator'] = "is"; $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; break; case '*': $criteria[$j]['operator'] = "contains"; $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; break; case '^': $criteria[$j]['operator'] = "matches"; $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "*\"]"; $startswith = true; break; case '$': $criteria[$j]['operator'] = "matches"; $criteria[$j]['value'] = "[\"*" . $criteria[$j]['value'] . "\"]"; $endswith = true; break; /* TO-DO: Arrrumar regra do "não contém". */ case '!*': $criteria[$j]['operator'] = "contains"; $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; break; } if ($criteria[$j]['field'] == "" || $criteria[$j]['field'] == "\"subject\"" || $startswith || $endswith) { $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " " . $criteria[$j]['value'] . ", "; $startswith = $endswith = false; } else $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " " . $criteria[$j]['value'] . ", "; } $script_criteria = substr($script_criteria,0,-2); /* if ($vacation == false) */ $script_criteria .= ")"; $script_action = " {\r\n "; for ($k=0; $k * @return * @access */ public function readOldScript($scriptName) { // Recebe o conteúdo do array; $lines = array(); $lines = preg_split("/\n/", $scriptName); // Pega o tamanho da regra na primeira do script; $size_rule = array_shift($lines); // Recebe o tamanho do script, pela primeira linha; $this->size = trim($size_rule); // Verifica a composição do script; */ $line = array_shift($lines); // Variaveis para a regra e o campo ferias; $regexps = array('^ *##PSEUDO', '^ *#rule', '^ *#vacation', '^ *#mode'); $retorno['rule'] = array(); $line = array_shift($lines); while (isset($line)) { foreach ($regexps as $regp) { if (preg_match("/$regp/i", $line)) { // Recebe todas as regras criadas no servidor; if (preg_match("/^ *#rule&&/i", $line)) { $retorno['rule'][] = $line . "\n"; } } } // Pega a proxima linha do sript; $line = array_shift($lines); } return $retorno; } /** * Método que faz o parsing do Script Sieve, transformando em Array. * * @license http://www.gnu.org/copyleft/gpl.html GPL * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) * @sponsor Caixa Econômica Federal * @author Airton Bordin Junior * @author Gustavo Pereira dos Santos * @param <$script>