- Timestamp:
- 02/23/12 17:14:32 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/filters/interceptors/FilterMapping.php
r5341 r5539 1 1 <?php 2 2 /** 3 * 4 * Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5 * 6 * This program is free software; you can redistribute it and/or modify it under 7 * the terms of the GNU Affero General Public License version 3 as published by 8 * the Free Software Foundation with the addition of the following permission 9 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED 10 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 11 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 12 * 13 * This program is distributed in the hope that it will be useful, but WITHOUT 14 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 15 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 16 * details. 17 * 18 * You should have received a copy of the GNU Affero General Public License 19 * along with this program; if not, see www.gnu.org/licenses or write to 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 21 * MA 02110-1301 USA. 22 * 23 * This code is based on the OpenXchange Connector and on the Prognus pSync 24 * Connector both developed by the community and licensed under the GPL 25 * version 2 or above as published by the Free Software Foundation. 26 * 27 * You can contact Prognus Software Livre headquarters at Av. Tancredo Neves, 28 * 6731, PTI, Bl. 05, Esp. 02, Sl. 10, Foz do Iguaçu - PR - Brasil or at 29 * e-mail address prognus@prognus.com.br. 30 * 31 * Descrição rápida do arquivo 32 * 33 * Arquivo responsável pela manipulação dos filtros 34 * 35 * @package filters 36 * @license http://www.gnu.org/copyleft/gpl.html GPL 37 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 38 * @version 1.0 39 * @sponsor Caixa EconÎmica Federal 40 * @since Arquivo disponibilizado na versão 2.4 41 */ 42 43 44 45 /** 46 * Classe responsável pela manipulação dos filtros. 47 * 48 * 49 * @package prototype 50 * @license http://www.gnu.org/copyleft/gpl.html GPL 51 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 52 * @author Airton Bordin Junior 53 * @author Gustavo Pereira dos Santos 54 * @version 1.0 55 * @since Classe disponibilizada na versão 2.4 56 */ 3 57 class FilterMapping 4 58 { 5 public function formatSieveScript( $rules ) 59 60 var $service; 61 62 63 /** 64 * Método que formata o Script de acordo com a sintaxe do Sieve. 65 * 66 * @license http://www.gnu.org/copyleft/gpl.html GPL 67 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 68 * @sponsor Caixa EconÎmica Federal 69 * @author Airton Bordin Junior 70 * @author Gustavo Pereira dos Santos 71 * @param <Array> <$rules> <Array com as regras do usuário> 72 * @return <Regra de acordo com a sintaxe do Sieve> 73 * @access <public> 74 */ 75 public function formatSieveScript( $rules ) 6 76 { 7 $require_fileinto = $require_flag = $require_reject = $require_vacation = $require_body = $startswith = $endswith = false; 8 9 $script_rules = $script_header = ""; 10 11 foreach( $rules as $name => $data ) 77 $require_fileinto = $require_flag = $require_reject = $require_vacation = $require_body = $require_imapflag = $vacation = $startswith = $endswith = false; 78 79 $script_rules = $script_header = $script_criteria = ""; 80 $i = 0; 81 foreach( $rules as $name => $data ) 82 { 83 //if( $data['enabled'] ) 84 //continue; 85 86 $criteria = $data['criteria']; 87 $action = $data['actions']; 88 89 ($i >0) ? $script_match = 'els' : $script_match = ''; 90 $data['isExact'] == 'false' ? $script_match .= 'if anyof (' : $script_match .= 'if allof ('; 91 92 for ($j=0; $j<count($criteria); $j++) 93 { 94 switch($criteria[$j]['field']) { 95 case 'To': 96 case 'to': 97 case 'CC': 98 case 'Cc': 99 $criteria[$j]['field'] = "[\"To\", \"TO\", \"Cc\", \"CC\"]"; 100 $script_criteria .= "address :"; 101 break; 102 case 'from': 103 $criteria[$j]['field'] = "\"" . $criteria[$j]['field'] . "\""; 104 $script_criteria .= "address :"; 105 break; 106 case 'size': 107 $criteria[$j]['field'] = ''; 108 $script_criteria .= "size :"; 109 break; 110 case 'subject': 111 $criteria[$j]['field'] = "\"" . $criteria[$j]['field'] . "\""; 112 $criteria[$j]['value'] = "" . imap_8bit($criteria[$j]['value']) . "\", \"" . base64_encode($criteria[$j]['value']) . ""; 113 $script_criteria .= "header :"; 114 break; 115 case 'body': 116 $criteria[$j]['field'] = ''; 117 $script_criteria .= "body :"; 118 $require_body = true; 119 break; 120 case 'vacation': 121 $require_vacation = true; 122 $vacation = true; 123 $script_match = "vacation"; 124 break; 125 default: 126 $script_criteria .= "header :"; 127 break; 128 } 129 130 switch ($criteria[$j]['operator']) { 131 case '>': 132 $criteria[$j]['operator'] = "over"; 133 break; 134 case '<': 135 $criteria[$j]['operator'] = "under"; 136 break; 137 case '=': 138 $criteria[$j]['operator'] = "is"; 139 $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; 140 break; 141 case '*': 142 $criteria[$j]['operator'] = "contains"; 143 $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; 144 break; 145 case '^': 146 $criteria[$j]['operator'] = "matches"; 147 $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "*\"]"; 148 $startswith = true; 149 break; 150 case '$': 151 $criteria[$j]['operator'] = "matches"; 152 $criteria[$j]['value'] = "[\"*" . $criteria[$j]['value'] . "\"]"; 153 $endswith = true; 154 break; 155 /* 156 TO-DO: 157 Arrrumar regra do "não contém". 158 */ 159 case '!*': 160 $criteria[$j]['operator'] = "contains"; 161 $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "\"]"; 162 break; 163 } 164 165 if ($criteria[$j]['field'] == "" || $criteria[$j]['field'] == "\"subject\"" || $startswith || $endswith) 166 { 167 $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " " . $criteria[$j]['value'] . ", "; 168 $startswith = $endswith = false; 169 } 170 else 171 $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " " . $criteria[$j]['value'] . ", "; 172 } 173 $script_criteria = substr($script_criteria,0,-2); 174 if ($vacation == false) 175 $script_criteria .= ")"; 176 else 177 $script_criteria = ""; 178 $script_action = " {\r\n "; 179 for ($k=0; $k<count($action); $k++) 180 { 181 switch ($action[$k]['type']) { 182 case 'redirect': 183 break; 184 case 'reject': 185 $require_reject = true; 186 break; 187 case 'fileinto': 188 $require_fileinto = true; 189 break; 190 case 'vacation': 191 $require_vacation = true; 192 $action[$k]['parameter'] = "\"" . $action[$k]['parameter'] . "\""; 193 $script_action = " :subject \"Fora do Escritório\" " . $action[$k]['parameter'] . ";"; 194 $vacation = true; 195 break; 196 case 'setflag': 197 $require_flag = true; 198 $action[$k]['parameter'] = "\\\\" . $action[$k]['parameter']; 199 break; 200 case 'discard': 201 break; 202 } 203 if ($vacation == false) $script_action .= $action[$k]['type'] . " \"" . $action[$k]['parameter'] . "\";\r\n "; 204 } 205 206 if ($vacation == false) $script_action .= "}"; 207 208 $script_rules .= $script_match . $script_criteria . $script_action . "\r\n"; 209 $script_match = ""; 210 $script_criteria = ""; 211 $i++; 212 } 213 214 if($require_reject || $require_fileinto || $require_vacation || $require_body || $require_flag) 215 { 216 $script_header .= "require ["; 217 $require_reject ? $script_header .= "\"reject\", " : ""; 218 $require_fileinto ? $script_header .= "\"fileinto\", " : ""; 219 $require_vacation? $script_header .= "\"vacation\", " : ""; 220 $require_flag ? $script_header .= "\"imapflags\", " : ""; 221 $require_body ? $script_header .= "\"body\", " : ""; /* tem que instalar as extensões no Cyrus */ 222 $script_header = substr($script_header,0,-2); 223 $script_header .= "];\r\n"; 224 } 225 226 $json_data = json_encode($rules); 227 228 $script_begin = "#Filtro gerado por Expresso Livre versão 2.4\r\n\r\n"; 229 230 $content = $script_begin . $script_header . $script_rules . "\r\n\r\n#PseudoScript#" . "\r\n#" . $json_data; 231 232 /* $content = ""; //fill script! */ 233 return( $content ); 234 } 235 236 237 /** 238 * Método que faz o parsing do Script Sieve, transformando em Array. 239 * 240 * @license http://www.gnu.org/copyleft/gpl.html GPL 241 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 242 * @sponsor Caixa EconÎmica Federal 243 * @author Airton Bordin Junior 244 * @author Gustavo Pereira dos Santos 245 * @param <String> <$script> <Script Sieve com as regras do usuário> 246 * @return <Regras do usuário em Array> 247 * @access <public> 248 */ 249 public function parseSieveScript( $script ) 12 250 { 13 if( $data['enabled'] ) 14 continue; 15 16 $criteria = $data['criteria']; 17 $action = $data['actions']; 18 $data['isExact'] ? $script_match = 'if allof (' : $script_match = 'if anyof ('; 19 20 for ($j=0; $j<count($criteria); $j++) 21 { 22 switch($criteria[$j]['field']) { 23 case 'To': /* Adicionar o TO e Cc também?! */ 24 case 'CC': 25 $criteria[$j]['field'] = "[\"To\", \"TO\", \"Cc\", \"CC\"]"; 26 $script_criteria .= "address :"; 27 break; 28 case 'size': 29 $criteria[$j]['field'] = ''; 30 $script_criteria .= "size :"; 31 break; 32 case 'subject': 33 $criteria[$j]['field'] = "\"" . $criteria[$j]['field'] . "\""; 34 $criteria[$j]['value'] = "[\"" . imap_8bit($criteria[$j]['value']) . "\", \"" . base64_encode($criteria[$j]['value']) . "\"]"; 35 $script_criteria .= "header :"; 36 break; 37 case 'body': 38 $criteria[$j]['field'] = ''; 39 $criteria[$j]['value'] = "\"" . $criteria[$j]['value'] . "\""; 40 $script_criteria .= "body :"; 41 $require_body = true; 42 break; 43 default: 44 $criteria[$j]['field'] = "\"" . $criteria[$j]['field'] . "\""; 45 $script_criteria .= "header :"; 46 break; 251 $pos = strripos($script, "#PseudoScript#"); 252 $pseudo_script = substr( $script, $pos+17 ); 253 254 $return = json_decode( $pseudo_script, true ); 255 256 return $return; 257 } 258 259 var $rules = false; 260 261 /** 262 * Construtor da classe. 263 * 264 * @license http://www.gnu.org/copyleft/gpl.html GPL 265 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 266 * @sponsor Caixa EconÎmica Federal 267 * @author Airton Bordin Junior 268 * @author Gustavo Pereira dos Santos 269 * @access <public> 270 */ 271 public function __construct() 272 { 273 $this->service = Controller::service("Sieve"); 274 } 275 276 277 /** 278 * Método que recupera as regras do usuário. 279 * 280 * @license http://www.gnu.org/copyleft/gpl.html GPL 281 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 282 * @sponsor Caixa EconÎmica Federal 283 * @author Airton Bordin Junior 284 * @author Gustavo Pereira dos Santos 285 * @return <Regras do usuário> 286 * @access <public> 287 */ 288 public function getRules() 289 { 290 $this->rules = Controller::find( array( 'concept' => 'filter' ) ); 291 292 if( !$this->rules ) { 293 $this->rules = array(); 47 294 } 48 49 switch ($criteria[$j]['operator']) { 50 case '>': 51 $criteria[$j]['operator'] = "over"; 52 break; 53 case '<': 54 $criteria[$j]['operator'] = "under"; 55 break; 56 case '=': 57 $criteria[$j]['operator'] = "is"; 58 break; 59 case '*': 60 $criteria[$j]['operator'] = "contains"; 61 break; 62 case '^': 63 $criteria[$j]['operator'] = "matches"; 64 $criteria[$j]['value'] = "[\"" . $criteria[$j]['value'] . "*\"]"; 65 $startswith = true; 66 break; 67 case '$': 68 $criteria[$j]['operator'] = "matches"; 69 $criteria[$j]['value'] = "[\"*" . $criteria[$j]['value'] . "*\"]"; 70 $endswith = true; 71 break; 72 } 73 // if temporário, por favor! :D 74 if ($criteria[$j]['field'] == "" || $criteria[$j]['field'] == "\"subject\"" || $startswith || $endswith) 75 { 76 $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " " . $criteria[$j]['value'] . ", "; 77 $startswith = $endswith = false; 78 } 79 else 80 $script_criteria .= $criteria[$j]['operator'] . " " . $criteria[$j]['field'] . " \"" . $criteria[$j]['value'] . "\", "; 81 } 82 $script_criteria = substr($script_criteria,0,-2); 83 $script_criteria .= ")"; 84 $script_action = " {\r\n "; 85 for ($k=0; $k<count($action); $k++) 86 { 87 switch ($action[$k]['type']) { 88 case 'redirect': 89 break; 90 case 'reject': 91 $require_reject = true; 92 break; 93 case 'fileinto': 94 $require_fileinto = true; 95 break; 96 case 'vacation': 97 $require_vacation = true; 98 break; 99 case 'setflag': 100 $require_flag = true; 101 break; 102 case 'discard': 103 break; 104 } 105 $script_action .= $action[$k]['type'] . " \"" . $action[$k]['parameter'] . "\";\r\n "; 106 } 107 108 $script_action .= "}"; 109 110 $script_rules .= $script_match . $script_criteria . $script_action . "\r\n"; 111 } 112 113 // if temporário meu caro amigo 114 if($require_reject || $require_fileinto || $require_vacation || $require_body || $require_flag) 295 return( $this->rules ); 296 } 297 298 299 /** 300 * Método que aplica o filtro para as mensagens do usuário. 301 * 302 * @license http://www.gnu.org/copyleft/gpl.html GPL 303 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 304 * @sponsor Caixa EconÎmica Federal 305 * @author Airton Bordin Junior 306 * @author Gustavo Pereira dos Santos 307 * @param <$uri> 308 * @param <$result> 309 * @param <$criteria> 310 * @param <$original> 311 * @access <public> 312 */ 313 public function applySieveFilter( &$uri , &$result , &$criteria , $original ) 115 314 { 116 $script_header .= "require ["; 117 $require_reject ? $script_header .= "\"reject\", " : ""; 118 $require_fileinto ? $script_header .= "\"fileinto\", " : ""; 119 $require_vacation? $script_header .= "\"vacation\", " : ""; 120 $require_flag ? $script_header .= "\"imapflags\", " : ""; 121 $require_body ? $script_header .= "\"body\", " : ""; /* tem que instalar o plugin no SIEVE */ 122 $script_header = substr($script_header,0,-2); 123 $script_header .= "];\r\n"; 124 } 125 126 $json_data = json_encode($rules); 127 128 $script_begin = "#Filtro gerado por Expresso Livre versão 2.4 power\r\n\r\n"; 129 130 $content = $script_begin . $script_header . $script_rules . "\r\n\r\n#PseudoScript#" . "\r\n#" . $json_data; 131 132 return( $content ); 133 } 134 135 public function parseSieveScript( $script ) 136 { 137 $pos = strripos($script, "#PseudoScript#"); 138 // Esse 17 hardcodificado é temporário rapá! à o tamanho da palavra #PseudoScript## que vem antes do pseudoscript em si. 139 $pseudo_script = substr( $script, $pos+17 ); 140 141 $return = json_decode( $pseudo_script, true ); 142 143 return $return; 144 145 // if( !$array_rules ) 146 // { 147 // require_once ROOTPATH.'/../expressoMail1_2/inc/class.ScriptS.inc.php'; 148 // 149 // $rules = ScriptS::readScript( $script ); 150 // 151 // foreach( $rules['rule'] as $i => $rule ) 152 // { 153 // $rule = ScriptS::parsePseudoScript( $rule ); 154 // 155 // ob_start(); 156 // print_r( var_export($rule) ); 157 // $output = ob_get_clean(); 158 // file_put_contents( '/tmp/2.log', file_get_contents( '/tmp/2.log' ) . $output ); 159 // } 160 // 161 } 162 163 var $rules = false; 164 165 public function __construct() 166 { 167 168 } 169 170 public function getRules() 171 { 172 $this->rules = Controller::find( array( 'concept' => 'filter' ) ); 173 174 if( !$this->rules ) 175 $this->rules = array(); 176 177 return( $this->rules ); 178 } 179 180 public function applySieveFilter( &$uri , &$result , &$criteria , $original , &$service ){ 181 182 if( $original['properties']['applyMessages'] ) 183 { 184 $filter = Controller::read($uri); 185 186 $proc = array(); 187 $proc['keep'] = false; 188 189 foreach ($filter['actions'] as $v){ 190 if($v['type'] == 'keep') 191 $proc['keep'] = true; 192 else{ 193 $proc['type'] = $v['type']; 194 $proc['parameter'] = $v['parameter']; 195 } 196 } 197 198 $imap = Controller::service( 'Imap' ); 199 200 $imap->apliSieveFilter($original['properties']['applyMessages'] , $proc ); 201 202 return $result; 203 } 204 } 205 206 public function readUserScript( &$uri , &$params , &$criteria , $original, &$service ) 207 { 208 $uri['id'] = $service->config['user']; 209 } 210 211 public function setRule( &$uri , &$params , &$criteria , $original , &$service ) 212 { 213 if( !$this->rules ) 214 $this->rules = $this->getRules(); 215 216 $params['id'] = $uri['id']; 217 315 if( $original['properties']['applyMessages'] ) 316 { 317 $filter = Controller::read($uri); 318 319 $proc = array(); 320 $proc['keep'] = false; 321 322 foreach ($filter['actions'] as $v){ 323 if($v['type'] == 'keep') 324 $proc['keep'] = true; 325 else{ 326 $proc['type'] = $v['type']; 327 $proc['parameter'] = $v['parameter']; 328 } 329 } 330 331 $imap = Controller::service( 'Imap' ); 332 $imap->apliSieveFilter($original['properties']['applyMessages'] , $proc ); 333 return $result; 334 } 335 } 336 337 338 /** 339 * Método que lê o script do usuário. 340 * 341 * @license http://www.gnu.org/copyleft/gpl.html GPL 342 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 343 * @sponsor Caixa EconÎmica Federal 344 * @author Airton Bordin Junior 345 * @author Gustavo Pereira dos Santos 346 * @param <$uri> 347 * @param <$result> 348 * @param <$criteria> 349 * @param <$original> 350 * @return <Script do usuário> 351 * @access <public> 352 */ 353 public function readUserScript( &$uri , &$params , &$criteria , $original ) 354 { 355 $uri['id'] = $this->service->config['user']; 356 } 357 358 359 /** 360 * Método que seta o script do usuário. 361 * 362 * @license http://www.gnu.org/copyleft/gpl.html GPL 363 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 364 * @sponsor Caixa EconÎmica Federal 365 * @author Airton Bordin Junior 366 * @author Gustavo Pereira dos Santos 367 * @param <$uri> 368 * @param <$result> 369 * @param <$criteria> 370 * @param <$original> 371 * @return <Script do usuário> 372 * @access <public> 373 */ 374 public function setRule( &$uri , &$params , &$criteria , $original ) 375 { 376 if( !$this->rules ) 377 $this->rules = $this->getRules(); 378 379 $params['id'] = isset($params['id']) ? $params['id'] : $params['name']; 218 380 $update = false; 219 381 220 382 foreach( $this->rules as $i => $rule ) 221 if( $update = ($rule['id'] === $params['id']) )222 {223 224 225 }383 if( $update = ($rule['id'] === $params['id']) ) 384 { 385 $this->rules[$i] = $params; 386 break; 387 } 226 388 227 389 if( !$update ) 228 390 $this->rules[] = $params; 229 391 230 392 $content = $this->formatSieveScript( $this->rules ); 231 232 $params = array( 'name' => $service->config['user'],393 394 $params = array( 'name' => $this->service->config['user'], 233 395 'content' => $content, 234 396 'active' => true ); 235 } 236 237 public function deleteRule( &$uri, &$params, &$criteria, $original, &$service ) 238 { 239 if( !$this->rules ) 240 $this->rules = $this->getRules(); 241 242 $params['id'] = $uri['id']; 243 244 $update = false; 245 246 foreach( $this->rules as $i => $rule ) 247 if( $rule['id'] === $uri['id'] ) 248 unset( $this->rules[$i] ); 249 250 $uri['id'] = ''; 251 252 $params = array( 'name' => $service->config['user'], 253 'content' => $this->formatSieveScript( $this->rules ), 254 'active' => true ); 255 256 $URI = Controller::URI( $uri['concept'], $service->config['user'] ); 257 258 $service->update( $URI, $params ); 259 } 260 261 public function getSieveRule( &$uri , &$params , &$criteria , $original, &$service ) 262 { 263 $script = $this->parseSieveScript( $params['content'] ); 264 265 foreach( $script as $i => $rule ) 266 if( $rule['name'] === $original['id'] ) 267 return( $params = $rule ); 268 } 269 270 public function listSieveRules( &$uri , &$params , &$criteria , $original , &$service ) 271 { 272 return( $params = $this->parseSieveScript( $params[0]['content'] ) ); 273 } 397 } 398 399 400 /** 401 * Método que deleta o script do usuário. 402 * 403 * @license http://www.gnu.org/copyleft/gpl.html GPL 404 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 405 * @sponsor Caixa EconÎmica Federal 406 * @author Airton Bordin Junior 407 * @author Gustavo Pereira dos Santos 408 * @param <$uri> 409 * @param <$result> 410 * @param <$criteria> 411 * @param <$original> 412 * @access <public> 413 */ 414 public function deleteRule( &$uri, &$params, &$criteria, $original ) 415 { 416 if( !$this->rules ) 417 $this->rules = $this->getRules(); 418 419 $params['id'] = $uri['id']; 420 421 $update = false; 422 423 foreach( $this->rules as $i => $rule ) 424 if( $rule['id'] === $uri['id'] ) 425 unset( $this->rules[$i] ); 426 427 $uri['id'] = ''; 428 429 $params = array( 'name' => $this->service->config['user'], 430 'content' => $this->formatSieveScript( $this->rules ), 431 'active' => true ); 432 433 $URI = Controller::URI( $uri['concept'], $this->service->config['user'] ); 434 $this->service->update( $URI, $params ); 435 436 return( false ); 437 } 438 439 440 /** 441 * Método que pega o script do usuário. 442 * 443 * @license http://www.gnu.org/copyleft/gpl.html GPL 444 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 445 * @sponsor Caixa EconÎmica Federal 446 * @author Airton Bordin Junior 447 * @author Gustavo Pereira dos Santos 448 * @param <$uri> 449 * @param <$result> 450 * @param <$criteria> 451 * @param <$original> 452 * @return <Script do usuário> 453 * @access <public> 454 */ 455 public function getSieveRule( &$uri , &$params , &$criteria , $original ) 456 { 457 $script = $this->parseSieveScript( $params['content'] ); 458 459 foreach( $script as $i => $rule ) 460 if( $rule['name'] === $original['id'] ) 461 return( $params = $rule ); 462 } 463 464 465 /** 466 * Método que lista as regras do usuário. 467 * 468 * @license http://www.gnu.org/copyleft/gpl.html GPL 469 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 470 * @sponsor Caixa EconÎmica Federal 471 * @author Airton Bordin Junior 472 * @author Gustavo Pereira dos Santos 473 * @param <$uri> 474 * @param <$result> 475 * @param <$criteria> 476 * @param <$original> 477 * @return <Regras do usuário> 478 * @access <public> 479 */ 480 public function listSieveRules( &$uri , &$params , &$criteria , $original ) 481 { 482 $return = $params = $this->parseSieveScript( $params[0]['content'] ); 483 return( $return ); 484 } 274 485 }
Note: See TracChangeset
for help on using the changeset viewer.