Overview

Packages

  • Horde
    • Icalendar
      • UnitTests
  • Ingo
    • UnitTests
  • None

Classes

  • Horde_Core_Ui_VarRenderer_Ingo
  • Ingo
  • Ingo_Api
  • Ingo_Exception
  • Ingo_Exception_Pear
  • Ingo_LoginTasks_SystemTask_Upgrade
  • Ingo_Script
  • Ingo_Script_Imap
  • Ingo_Script_Imap_Api
  • Ingo_Script_Imap_Live
  • Ingo_Script_Maildrop
  • Ingo_Script_Maildrop_Comment
  • Ingo_Script_Maildrop_Recipe
  • Ingo_Script_Maildrop_Variable
  • Ingo_Script_Procmail
  • Ingo_Script_Procmail_Comment
  • Ingo_Script_Procmail_Recipe
  • Ingo_Script_Procmail_Variable
  • Ingo_Script_Sieve
  • Ingo_Script_Sieve_Action
  • Ingo_Script_Sieve_Action_Addflag
  • Ingo_Script_Sieve_Action_Discard
  • Ingo_Script_Sieve_Action_Fileinto
  • Ingo_Script_Sieve_Action_Flag
  • Ingo_Script_Sieve_Action_Keep
  • Ingo_Script_Sieve_Action_Notify
  • Ingo_Script_Sieve_Action_Redirect
  • Ingo_Script_Sieve_Action_Reject
  • Ingo_Script_Sieve_Action_Removeflag
  • Ingo_Script_Sieve_Action_Stop
  • Ingo_Script_Sieve_Action_Vacation
  • Ingo_Script_Sieve_Comment
  • Ingo_Script_Sieve_Else
  • Ingo_Script_Sieve_Elsif
  • Ingo_Script_Sieve_If
  • Ingo_Script_Sieve_Test
  • Ingo_Script_Sieve_Test_Address
  • Ingo_Script_Sieve_Test_Allof
  • Ingo_Script_Sieve_Test_Anyof
  • Ingo_Script_Sieve_Test_Body
  • Ingo_Script_Sieve_Test_Exists
  • Ingo_Script_Sieve_Test_False
  • Ingo_Script_Sieve_Test_Header
  • Ingo_Script_Sieve_Test_Not
  • Ingo_Script_Sieve_Test_Relational
  • Ingo_Script_Sieve_Test_Size
  • Ingo_Script_Sieve_Test_True
  • Ingo_Storage
  • Ingo_Storage_Blacklist
  • Ingo_Storage_Filters
  • Ingo_Storage_Filters_Sql
  • Ingo_Storage_Forward
  • Ingo_Storage_Mock
  • Ingo_Storage_Prefs
  • Ingo_Storage_Rule
  • Ingo_Storage_Spam
  • Ingo_Storage_Sql
  • Ingo_Storage_Vacation
  • Ingo_Storage_VacationTest
  • Ingo_Storage_Whitelist
  • Ingo_Test
  • Ingo_Transport
  • Ingo_Transport_Ldap
  • Ingo_Transport_Null
  • Ingo_Transport_Sivtest
  • Ingo_Transport_Timsieved
  • Ingo_Transport_Vfs
  • Overview
  • Package
  • Class
  • Tree
 1: <?php
 2: /**
 3:  * The Ingo_Script_Sieve_Test_Body class represents a test on the contents of
 4:  * the body in a message.
 5:  *
 6:  * See the enclosed file LICENSE for license information (ASL).  If you
 7:  * did not receive this file, see http://www.horde.org/licenses/apache.
 8:  *
 9:  * @author  Michael Menge <michael.menge@zdv.uni-tuebingen.de>
10:  * @package Ingo
11:  */
12: class Ingo_Script_Sieve_Test_Body extends Ingo_Script_Sieve_Test
13: {
14:     /**
15:      * Constructor.
16:      *
17:      * @param array $vars  Any required parameters.
18:      */
19:     public function __construct($vars = array())
20:     {
21:         $this->_vars['comparator'] = isset($vars['comparator'])
22:             ? $vars['comparator']
23:             : 'i;ascii-casemap';
24:         $this->_vars['match-type'] = isset($vars['match-type'])
25:             ? $vars['match-type']
26:             : ':is';
27:         $this->_vars['strings'] = isset($vars['strings'])
28:             ? $vars['strings']
29:             : '';
30:     }
31: 
32:     /**
33:      * Checks if the rule parameters are valid.
34:      *
35:      * @return boolean|string  True if this rule is valid, an error message
36:      *                         otherwise.
37:      */
38:     public function check()
39:     {
40:         return preg_split('((?<!\\\)\,|\r\n|\n|\r)', $this->_vars['strings']);
41:     }
42: 
43:     /**
44:      * Returns a script snippet representing this rule and any sub-rules.
45:      *
46:      * @return string  A Sieve script snippet.
47:      */
48:     public function toCode()
49:     {
50:         $code = 'body ' .
51:             ':comparator "' . $this->_vars['comparator'] . '" ' .
52:             $this->_vars['match-type'] . ' ';
53: 
54:         $strings = preg_split('(\r\n|\n|\r)', $this->_vars['strings']);
55:         $strings = array_filter($strings);
56:         if (count($strings) > 1) {
57:             $code .= "[";
58:             $stringlist = '';
59:             foreach ($strings as $str) {
60:                 $stringlist .= empty($stringlist) ? '"' : ', "';
61:                 $stringlist .= Ingo_Script_Sieve::escapeString($str, $this->_vars['match-type'] == ':regex') . '"';
62:             }
63:             $code .= $stringlist . "] ";
64:         } elseif (count($strings) == 1) {
65:             $code .= '"' . Ingo_Script_Sieve::escapeString($strings[0], $this->_vars['match-type'] == ':regex') . '" ';
66:         } else {
67:             return _("No strings specified");
68:         }
69: 
70:         return $code;
71:     }
72: 
73:     /**
74:      * Returns a list of sieve extensions required for this rule and any
75:      * sub-rules.
76:      *
77:      * @return array  A Sieve extension list.
78:      */
79:     public function requires()
80:     {
81:         return ($this->_vars['match-type'] == ':regex')
82:             ? array('regex', 'body')
83:             : array('body');
84:     }
85: 
86: }
87: 
API documentation generated by ApiGen