Example #1
0
 /**
  * Set vacation
  *
  * @param array $info        Vacation details.
  *   - addresses: (mixed)    Address list to enable vacation for.
  *   - days: (integer)       Number of days between vacation replies.
  *   - excludes: (mixed)     Address list to exclude from vacation replies.
  *   - ignorelist: (boolean) If set, ignore mailing lists.
  *   - reason: (string)      Vacation message.
  *   - subject: (string)     Vacation email subject.
  *   - start: (integer)      Timestamp of vacation starttime.
  *   - end: (integer)        Timestamp of vacation endtime.
  * @param boolean $enable  Enable the filter?
  *
  * @throws Ingo_Exception
  */
 public function setVacation($info, $enable = true)
 {
     global $injector, $registry;
     if (empty($info)) {
         return true;
     }
     /* Get vacation filter. */
     $ingo_storage = $injector->getInstance('Ingo_Factory_Storage')->create();
     $vacation = new Ingo_Rule_System_Vacation();
     /* Make sure we have at least one address. */
     if (empty($info['addresses'])) {
         $identity = $injector->getInstance('Horde_Core_Factory_Identity')->create();
         /* Remove empty lines. */
         $info['addresses'] = preg_replace('/\\n{2,}/', "\n", implode("\n", $identity->getAll('from_addr')));
         if (empty($info['addresses'])) {
             $info['addresses'] = $registry->getAuth();
         }
     }
     $vacation->addresses($info['addresses']);
     if (isset($info['days'])) {
         $vacation->days = $info['days'];
     }
     if (isset($info['excludes'])) {
         $vacation->exclude = $info['excludes'];
     }
     if (isset($info['ignorelist'])) {
         $vacation->ignore_list = $info['ignorelist'] == 'on';
     }
     if (isset($info['reason'])) {
         $vacation->reason = $info['reason'];
     }
     if (isset($info['subject'])) {
         $vacation->subject = $info['subject'];
     }
     if (isset($info['start'])) {
         $vacation->start = $info['start'];
     }
     if (isset($info['end'])) {
         $vacation->end = $info['end'];
     }
     $vacation->enable = $enable;
     $ingo_storage->updateRule($vacation);
     $injector->getInstance('Ingo_Factory_Script')->activateAll();
 }