Esempio n. 1
0
 /**
  * Save a forward and redirect the client on success or display the form with errors
  * @param array $params the parameters for the request
  * @return array the vars and template for the forward form when there are errors
  */
 public function saveForward($params)
 {
     $openSRS = new openSRS_mail($params["configoption1"], $params["configoption2"], $params["configoption3"], $params["configoption4"], $params["configoption5"]);
     $success = false;
     if ($this->getVar("new")) {
         //$mailboxName = $this->getVar("mailbox");
         $mailboxName = $this->getVar("mailbox") . "@" . $params["domain"];
         if (!filter_var($mailboxName, FILTER_VALIDATE_EMAIL)) {
             $this->vars["error"][] = "Invalid Email format. (ex. john.doe or john_doe or johndoe)";
         } else {
             $result = $openSRS->getMailbox($params["domain"], $mailboxName);
             if ($result["is_success"]) {
                 $this->vars["error"][] = "The mailbox cannot be added because it already exists.";
                 return $this->addEditMailbox($params);
             } else {
                 if ($result["response_code"] == 2) {
                     // forwardEmail
                     $forwards = $this->getVar("forwardEmail");
                     if (empty($forwards)) {
                         $this->vars["error"][] = "You must provide addresses to forward to.";
                     } else {
                         $forwardAddresses = explode("\n", $forwards);
                         foreach ($forwardAddresses as $fwid => $forwardAddress) {
                             if (!$forwardAddress) {
                                 unset($forwardAddresses[$fwid]);
                                 continue;
                             }
                             $forwardAddress = trim($forwardAddress);
                             $forwardAddresses[$fwid] = $forwardAddress;
                             if (!filter_var($forwardAddress, FILTER_VALIDATE_EMAIL)) {
                                 $this->vars["error"][] = "The address \"" . $forwardAddress . "\" is not valid.";
                             }
                         }
                     }
                     $forwardAddresses = $openSRS->validateAliasForward($params["domain"], $this->getVar("mailbox"), $forwardAddresses);
                     if (count($forwardAddresses) < 1) {
                         $this->vars["error"][] = "You must provide addresses to forward to.";
                     }
                     // aliases
                     $aliases = $this->getVar("aliases");
                     if (!empty($aliases)) {
                         $aliasAddresses = explode("\n", $aliases);
                         foreach ($aliasAddresses as $alid => $aliasAddress) {
                             if (!$aliasAddress) {
                                 unset($aliasAddress[$alid]);
                                 continue;
                             }
                             $aliasAddress = trim($aliasAddress);
                             $aliasAddresses[$alid] = $aliasAddress;
                             if (!filter_var($aliasAddress, FILTER_VALIDATE_EMAIL)) {
                                 $this->vars["error"][] = "The alias address \"" . $aliasAddress . "\" is not valid.";
                             }
                         }
                     }
                     $aliasAddresses = $openSRS->validateAliasForward($params["domain"], $this->getVar("mailbox"), $aliasAddresses);
                     foreach ($forwardAddresses as $fwaddress) {
                         foreach ($aliasAddresses as $aladdress) {
                             if ($aladdress == $fwaddress) {
                                 $this->vars["error"][] = "Email loop ({$fwaddress}).";
                             }
                         }
                     }
                     if (empty($this->vars["error"])) {
                         /*$result = $openSRS->createMailboxForwardOnly(
                            $params["domain"],
                            $mailboxName,
                            $this->getVar("workgroup"),
                            $forwards
                           );*/
                         $result = $openSRS->createMailboxForwardOnly($params["domain"], $mailboxName, $this->getVar("workgroup"), $forwardAddresses, $aliasAddresses, $_GET['type']);
                         if ($result["is_success"]) {
                             $success = "&added=true";
                         } else {
                             $this->vars["error"][] = $result["response_text"];
                         }
                     }
                 } else {
                     $this->vars["error"][] = $result["response_text"];
                 }
             }
         }
     } else {
         $mailboxName = $this->getVar("mailbox");
         $result = $openSRS->getMailbox($params["domain"], $mailboxName);
         if ($result["is_success"]) {
             $forwards = $this->getVar("forwardEmail");
             if (empty($forwards)) {
                 $this->vars["error"][] = "You must provide addresses to forward to.";
             } else {
                 $forwardAddresses = explode("\n", $forwards);
                 foreach ($forwardAddresses as $fwid => $forwardAddress) {
                     if (!$forwardAddress) {
                         unset($forwardAddresses[$fwid]);
                         continue;
                     }
                     $forwardAddress = trim($forwardAddress);
                     $forwardAddresses[$fwid] = $forwardAddress;
                     if (!filter_var($forwardAddress, FILTER_VALIDATE_EMAIL)) {
                         $this->vars["error"][] = "The address \"" . $forwardAddress . "\" is not valid.";
                     }
                 }
             }
             $forwardAddresses = $openSRS->validateAliasForward($params["domain"], $this->getVar("mailbox") . "@" . $params["domain"], $forwardAddresses);
             if (count($forwardAddresses) < 1) {
                 $this->vars["error"][] = "You must provide addresses to forward to.";
             }
             $aliases = $this->getVar("aliases");
             if (!empty($aliases)) {
                 $aliasAddresses = explode("\n", $aliases);
                 foreach ($aliasAddresses as $alid => $aliasAddress) {
                     if (!$aliasAddress) {
                         unset($aliasAddress[$alid]);
                         continue;
                     }
                     $aliasAddress = trim($aliasAddress);
                     $aliasAddresses[$alid] = $aliasAddress;
                     if (!filter_var($aliasAddress, FILTER_VALIDATE_EMAIL)) {
                         $this->vars["error"][] = "The alias address \"" . $aliasAddress . "\" is not valid.";
                     }
                 }
             }
             $aliasAddresses = $openSRS->validateAliasForward($params["domain"], $this->getVar("mailbox") . "@" . $params["domain"], $aliasAddresses);
             foreach ($forwardAddresses as $fwaddress) {
                 foreach ($aliasAddresses as $aladdress) {
                     if ($aladdress == $fwaddress) {
                         $this->vars["error"][] = "Email loop ({$fwaddress}).";
                     }
                 }
             }
             if (empty($this->vars["error"])) {
                 /*$result = $openSRS->changeMailboxForwardOnly(
                 			$params["domain"],
                 			$mailboxName,
                 			$forwards
                 		); */
                 $result = $openSRS->changeMailboxForwardOnly($params["domain"], $mailboxName, $forwardAddresses, $aliasAddresses, $_GET['type']);
                 if ($result["is_success"]) {
                     $success = "&edited=true";
                 } else {
                     $this->vars["error"][] = $result["response_text"];
                 }
             }
         } else {
             $this->vars["error"][] = $result["response_text"];
         }
     }
     if ($success) {
         header("Location: /clientarea.php?action=productdetails&id=" . $params["serviceid"] . $success);
     } else {
         return $this->addEditMailbox($params);
     }
 }
 /**
  * Save a forward and redirect the client on success or display the form with errors
  * @param array $params the parameters for the request
  * @return array the vars and template for the forward form when there are errors
  */
 public function saveForward($params)
 {
     $openSRS = new openSRS_mail($params["configoption1"], $params["configoption2"], $params["configoption3"], $params["configoption4"], $params["configoption5"]);
     $success = false;
     if ($this->getVar("new")) {
         $mailboxName = $this->getVar("mailbox");
         $result = $openSRS->getMailbox($params["domain"], $mailboxName);
         if ($result["is_success"]) {
             $this->vars["error"][] = "The mailbox cannot be added because it already exists.";
             return $this->addEditMailbox($params);
         } else {
             if ($result["response_code"] == 17) {
                 $forwards = $this->getVar("forwardEmail");
                 if (empty($forwards)) {
                     $this->vars["error"][] = "You must provide addresses to forward to.";
                 } else {
                     $forwardAddresses = explode(",", $forwards);
                     foreach ($forwardAddresses as $forwardAddress) {
                         if (!filter_var($forwardAddress, FILTER_VALIDATE_EMAIL)) {
                             $this->vars["error"][] = "The address " . $forwardAddress . " is not valid.";
                         }
                     }
                 }
                 if (empty($this->vars["error"])) {
                     $result = $openSRS->createMailboxForwardOnly($params["domain"], $mailboxName, $this->getVar("workgroup"), $forwards);
                     if ($result["is_success"]) {
                         $success = "&added=true";
                     } else {
                         $this->vars["error"][] = $result["response_text"];
                     }
                 }
             } else {
                 $this->vars["error"][] = $result["response_text"];
             }
         }
     } else {
         $mailboxName = $this->getVar("mailbox");
         $result = $openSRS->getMailbox($params["domain"], $mailboxName);
         if ($result["is_success"]) {
             $forwards = $this->getVar("forwardEmail");
             if (empty($forwards)) {
                 $this->vars["error"][] = "You must provide addresses to forward to.";
             } else {
                 $forwardAddresses = explode(",", $forwards);
                 foreach ($forwardAddresses as $forwardAddress) {
                     if (!filter_var($forwardAddress, FILTER_VALIDATE_EMAIL)) {
                         $this->vars["error"][] = "The address " . $forwardAddress . " is not valid.";
                     }
                 }
             }
             if (empty($this->vars["error"])) {
                 $result = $openSRS->changeMailboxForwardOnly($params["domain"], $mailboxName, $forwards);
                 if ($result["is_success"]) {
                     $success = "&edited=true";
                 } else {
                     $this->vars["error"][] = $result["response_text"];
                 }
             }
         } else {
             $this->vars["error"][] = $result["response_text"];
         }
     }
     if ($success) {
         header("Location: clientarea.php?action=productdetails&id=" . $params["serviceid"] . $success);
     } else {
         return $this->addEditMailbox($params);
     }
 }