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"); }