Example #1
0
 public function editAction()
 {
     $id = $this->_request->getParam("id");
     $this->view->breadcrumb = Snep_Breadcrumb::renderPath(array($this->view->translate("Manage"), $this->view->translate("Extensions"), $this->view->translate("Edit %s", $id)));
     Zend_Registry::set('cancel_url', $this->getFrontController()->getBaseUrl() . '/' . $this->getRequest()->getControllerName() . '/index');
     $form = $this->getForm();
     if (!$this->view->all_writable) {
         $form->getElement("submit")->setAttrib("disabled", "disabled");
     }
     $this->view->form = $form;
     $this->view->boardData = $this->boardData;
     $this->view->url = $this->getFrontController()->getBaseUrl() . '/' . $this->getRequest()->getControllerName();
     if ($this->getRequest()->isPost()) {
         $postData = $this->_request->getParams();
         if ($postData["technology"]['type'] == "virtual" && !key_exists('virtual', $postData)) {
             $this->view->error = $this->view->translate("There's no trunks available in the system. Try a different technology");
             $this->view->form->valid(false);
         } else {
             if ($this->view->form->isValid($_POST)) {
                 $postData["extension"]["exten"] = $this->_request->getParam("id");
                 $ret = $this->execAdd($postData, true);
                 if (!is_string($ret)) {
                     $this->_redirect('/extensions/');
                 } else {
                     $this->view->error = $ret;
                     $this->view->form->valid(false);
                 }
             }
         }
     }
     $extenUtil = new Snep_Extensions();
     $exten = $extenUtil->ExtenDataAsArray($extenUtil->get($id));
     $name = $exten["name"];
     $nameField = $form->getSubForm('extension')->getElement('exten');
     $nameField->setValue($name);
     $nameField->setAttrib('readonly', true);
     $nameField->setAttrib('disabled', true);
     if (!$exten["canal"] || $exten["canal"] == 'INVALID' || substr($exten["canal"], 0, strpos($exten["canal"], '/')) == '') {
         $techType = 'manual';
     } else {
         $techType = strtolower(substr($exten["canal"], 0, strpos($exten["canal"], '/')));
     }
     $form->getSubForm('technology')->getElement('type')->setValue($techType);
     $password = $exten["password"];
     $form->getSubForm('extension')->getElement('password')->setValue($password);
     $form->getSubForm('extension')->getElement('password')->renderPassword = true;
     $callerid = $exten["callerid"];
     $form->getSubForm('extension')->getElement('name')->setValue($callerid);
     $extenGroup = $exten["group"];
     $form->getSubForm('extension')->getElement('exten_group')->setValue($extenGroup);
     $pickupGroup = $exten["pickupgroup"];
     $form->getSubForm('extension')->getElement('pickup_group')->setValue($pickupGroup);
     $voiceMail = $exten["usa_vc"];
     if ($voiceMail) {
         $form->getSubForm('advanced')->getElement('voicemail')->setAttrib('checked', 'checked');
     }
     $email = $exten["email"];
     $form->getSubForm('advanced')->getElement('email')->setValue($email);
     $padlock = $exten["authenticate"];
     if ($padlock) {
         $form->getSubForm('advanced')->getElement('padlock')->setAttrib('checked', 'checked');
     }
     $timeTotal = $exten["time_total"];
     if (!empty($timeTotal)) {
         $form->getSubForm('advanced')->getElement('minute_control')->setAttrib('checked', 'checked');
         $form->getSubForm('advanced')->getElement('timetotal')->setValue($timeTotal);
         $ctrlType = $exten["time_chargeby"];
         $form->getSubForm('advanced')->getElement('controltype')->setValue($ctrlType);
     } else {
         $form->getSubForm('advanced')->getElement('timetotal')->setAttrib('disabled', true);
         $form->getSubForm('advanced')->getElement('timetotal')->setAttrib('readonly', true);
         $form->getSubForm('advanced')->getElement('controltype')->setAttrib('disabled', true);
         $form->getSubForm('advanced')->getElement('controltype')->setAttrib('readonly', true);
     }
     switch ($techType) {
         case "sip":
             $pass = $exten["secret"];
             $simCalls = $exten["call-limit"];
             $nat = $exten["nat"];
             $qualify = $exten["qualify"];
             $typeIp = $exten["type"];
             $dtmfMode = $exten["dtmfmode"];
             $form->getSubForm('sip')->getElement('password')->setValue($pass);
             $form->getSubForm('sip')->getElement('password')->renderPassword = true;
             $form->getSubForm('sip')->getElement('calllimit')->setValue($simCalls);
             if ($nat == 'yes') {
                 $form->getSubForm('sip')->getElement('nat')->setAttrib('checked', 'checked');
             }
             if ($qualify == 'yes') {
                 $form->getSubForm('sip')->getElement('qualify')->setAttrib('checked', 'checked');
             }
             $form->getSubForm('sip')->getElement('type')->setValue($typeIp);
             $form->getSubForm('sip')->getElement('dtmf')->setValue($dtmfMode);
             $codecs = explode(";", $exten['allow']);
             $form->getSubForm('sip')->getElement('codec')->setValue($codecs[0]);
             $form->getSubForm('sip')->getElement('codec1')->setValue($codecs[1]);
             $form->getSubForm('sip')->getElement('codec2')->setValue($codecs[2]);
             break;
         case "iax2":
             $pass = $exten["secret"];
             $simCalls = $exten["call-limit"];
             $nat = $exten["nat"];
             $qualify = $exten["qualify"];
             $typeIp = $exten["type"];
             $dtmfMode = $exten["dtmfmode"];
             $form->getSubForm('iax2')->getElement('password')->setValue($pass);
             $form->getSubForm('iax2')->getElement('password')->renderPassword = true;
             $form->getSubForm('iax2')->getElement('calllimit')->setValue($simCalls);
             if ($nat == 'yes') {
                 $form->getSubForm('iax2')->getElement('nat')->setAttrib('checked', 'checked');
             }
             if ($qualify == 'yes') {
                 $form->getSubForm('iax2')->getElement('qualify')->setAttrib('checked', 'checked');
             }
             $form->getSubForm('iax2')->getElement('type')->setValue($typeIp);
             $form->getSubForm('iax2')->getElement('dtmf')->setValue($dtmfMode);
             $codecs = explode(";", $exten['allow']);
             $form->getSubForm('iax2')->getElement('codec')->setValue($codecs[0]);
             $form->getSubForm('iax2')->getElement('codec1')->setValue($codecs[1]);
             $form->getSubForm('iax2')->getElement('codec2')->setValue($codecs[2]);
             break;
         case "khomp":
             $khompInfo = substr($exten["canal"], strpos($exten["canal"], '/') + 1);
             $khompBoard = substr($khompInfo, strpos($khompInfo, 'b') + 1, strpos($khompInfo, 'c') - 1);
             $khompChannel = substr($khompInfo, strpos($khompInfo, 'c') + 1);
             $khompInfo = new PBX_Khomp_Info();
             if ($khompInfo->hasWorkingBoards()) {
                 foreach ($khompInfo->boardInfo() as $board) {
                     if (preg_match("/KFXS/", $board['model'])) {
                         $channels = range(0, $board['channels']);
                         $form->getSubForm('khomp')->getElement('board')->addMultiOption($board['id'], $board['id']);
                         $boardList[$board['id']] = $channels;
                         if ($board['id'] == $khompBoard) {
                             foreach ($channels as $value) {
                                 $form->getSubForm('khomp')->getElement('channel')->addMultiOption($value, $value);
                             }
                         }
                     }
                 }
                 $form->getSubForm('khomp')->getElement('board')->setValue($khompBoard);
                 $form->getSubForm('khomp')->getElement('channel')->setValue($khompChannel);
             }
             break;
         case "virtual":
             $virtualTrunk = substr($exten["canal"], strpos($exten["canal"], '/') + 1);
             $form->getSubForm('virtual')->getElement('virtual')->setValue($virtualTrunk);
             break;
         case "manual":
             $manualComp = substr($exten["canal"], strpos($exten["canal"], '/') + 1);
             $form->getSubForm('manual')->getElement('manual')->setValue($manualComp);
             break;
     }
     $this->renderScript("extensions/add_edit.phtml");
 }