/** * public function to access the directory * * @param string $mac */ public function directory($mac) { $this->_authenticate(); # get the phone Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' phone ' . $mac); $phone = Voipmanager_Controller_Snom_Phone::getInstance()->getByMacAddress($mac); Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' phone ' . $phone->template_id); $template = Voipmanager_Controller_Snom_Template::getInstance()->get($phone->template_id); Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' phone ' . $template->setting_id); $settings = Voipmanager_Controller_Snom_Setting::getInstance()->get($template->setting_id); $language = $settings->language ? $settings->language : 'en'; $translate = Tinebase_Translation::getTranslation($this->_applicationName, new Zend_Locale('de')); Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' phone ' . $language); $baseUrl = $this->_getBaseUrl(); $xml = '<?xml version="1.0" encoding="UTF-8"?> <SnomIPPhoneInput> <Prompt>Prompt</Prompt> <URL>' . $baseUrl . '</URL> <InputItem> <DisplayName>' . $translate->_('Enter search') . ':</DisplayName> <QueryStringParam>method=Phone.searchContacts&TINE20SESSID=' . Tinebase_Session::getId() . '&mac=' . $mac . '&query</QueryStringParam> <DefaultValue/> <InputFlags>a</InputFlags> </InputItem> </SnomIPPhoneInput> '; header('Content-Type: text/xml'); echo $xml; }
/** * Sets up the fixture. * This method is called before a test is executed. * * @access protected */ protected function setUp() { $this->_backends['Asterisk_Context'] = Voipmanager_Controller_Asterisk_Context::getInstance(); $this->_backends['Asterisk_Meetme'] = Voipmanager_Controller_Asterisk_Meetme::getInstance(); $this->_backends['Asterisk_SipPeer'] = Voipmanager_Controller_Asterisk_SipPeer::getInstance(); $this->_backends['Asterisk_Voicemail'] = Voipmanager_Controller_Asterisk_Voicemail::getInstance(); $this->_backends['Snom_Line'] = Voipmanager_Controller_Snom_Line::getInstance(); $this->_backends['Snom_Location'] = Voipmanager_Controller_Snom_Location::getInstance(); $this->_backends['Snom_Phone'] = Voipmanager_Controller_Snom_Phone::getInstance(); $this->_backends['Snom_Setting'] = Voipmanager_Controller_Snom_Setting::getInstance(); $this->_backends['Snom_Software'] = Voipmanager_Controller_Snom_Software::getInstance(); $this->_backends['Snom_Template'] = Voipmanager_Controller_Snom_Template::getInstance(); }
/** * create edit MyPhone dialog * * @param int $phoneId * * @todo remove that when new myphone edit dialog is working * @deprecated */ public function editMyPhone($phoneId = NULL) { $currentAccount = Tinebase_Core::getUser()->toArray(); if (!empty($phoneId)) { $snomPhone = Phone_Controller_MyPhone::getInstance()->get($phoneId); //unset($phone->lines); $_phoneData = $snomPhone->toArray(); $_phoneSettingsData = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($_phoneData['id'])->toArray(); $_templateData = Voipmanager_Controller_Snom_Template::getInstance()->get($_phoneData['template_id'])->toArray(); $_settingsData = Voipmanager_Controller_Snom_Setting::getInstance()->get($_templateData['setting_id'])->toArray(); $_writableFields = array('web_language', 'language', 'display_method', 'mwi_notification', 'mwi_dialtone', 'headset_device', 'message_led_other', 'global_missed_counter', 'scroll_outgoing', 'show_local_line', 'show_call_status', 'call_waiting'); foreach ($_writableFields as $wField) { $_fieldRW = $wField . '_writable'; if ($_settingsData[$_fieldRW] == '0') { $_phoneSettingsData[$wField] = $_settingsData[$wField]; $_notWritable[$wField] = 'true'; } else { if ($_phoneSettingsData[$wField] === NULL) { $_phoneSettingsData[$wField] = $_settingsData[$wField]; } $_notWritable[$wField] = ''; } } $encodedWritable = Zend_Json::encode($_notWritable); $_phoneData = array_merge($_phoneSettingsData, $_phoneData); if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_phoneData, true)); } // encode the data arrays $encodedSnomPhone = Zend_Json::encode($_phoneData); } else { //$phone = new Voipmanager_Model_Snom_Phone(); //$lines = new Tinebase_Record_RecordSet('Voipmanager_Model_Snom_Line'); $encodedWritable = '{}'; $encodedSnomPhone = '{}'; //$encodedSettings = '{}'; } $view = new Zend_View(); $view->setScriptPath('Tinebase/views'); $view->title = "edit myPhone data"; $view->jsExecute = 'Tine.Voipmanager.MyPhones.EditDialog.display(' . $encodedSnomPhone . ', ' . $encodedWritable . ');'; header('Content-Type: text/html; charset=utf-8'); echo $view->render('jsclient.php'); }
/** * update one phone * * @param Voipmanager_Model_Snom_Phone $_phone * @return Voipmanager_Model_Snom_Phone * @throws Voipmanager_Exception_Validation * * @todo do not overwrite update() -> use inspectBefore/After functions */ public function update(Tinebase_Record_Interface $_phone) { // check first if mac address is already used if ($_phone->has('macaddress')) { try { $phoneWithMac = $this->getByMacAddress($_phone->macaddress); if ($phoneWithMac->getId() !== $_phone->getId()) { throw new Voipmanager_Exception_Validation('A phone with this mac address already exists.'); } } catch (Voipmanager_Exception_NotFound $venf) { // everything ok } } try { $db = $this->_backend->getAdapter(); $transactionId = Tinebase_TransactionManager::getInstance()->startTransaction($db); $phone = $this->_backend->update($_phone); $_phoneSettings = $_phone->settings; if ($_phoneSettings instanceof Voipmanager_Model_Snom_PhoneSettings) { // force the right phone_id $_phoneSettings->setId($phone->getId()); // set all settings which are equal to the default settings to NULL $template = Voipmanager_Controller_Snom_Template::getInstance()->get($phone->template_id); $settingDefaults = Voipmanager_Controller_Snom_Setting::getInstance()->get($template->setting_id); foreach ($_phoneSettings->toArray() as $key => $value) { if ($key == 'phone_id') { continue; } if ($settingDefaults->{$key} == $value) { $_phoneSettings->{$key} = NULL; } } if (Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($phone->getId())) { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->update($_phoneSettings); } else { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->create($_phoneSettings); } } Voipmanager_Controller_Snom_Line::getInstance()->deletePhoneLines($phone->getId()); $this->_createLines($phone, $_phone->lines); // save phone rights if (isset($_phone->rights)) { $this->_backend->setPhoneRights($_phone); } Tinebase_TransactionManager::getInstance()->commitTransaction($transactionId); } catch (Exception $e) { $this->_handleRecordCreateOrUpdateException($e); } return $this->get($phone->getId()); }
/** * get snom phone template * * @return array */ protected function _getSnomTemplate() { $testSoftware = $this->_getSnomSoftware(); $returnedSoftware = Voipmanager_Controller_Snom_Software::getInstance()->create($testSoftware); $testSetting = $this->_getSnomSetting(); $returnedSetting = Voipmanager_Controller_Snom_Setting::getInstance()->create($testSetting); return new Voipmanager_Model_Snom_Template(array('name' => Tinebase_Record_Abstract::generateUID(), 'setting_id' => $returnedSetting['id'], 'software_id' => $returnedSoftware['id']), TRUE); }
/** * delete multiple settings * * @param array $ids list of settingId's to delete * @return array */ public function deleteSnomSettings($ids) { return $this->_delete($ids, Voipmanager_Controller_Snom_Setting::getInstance()); }
/** * update one phone * * @param Voipmanager_Model_Snom_Phone $_phone * @param Voipmanager_Model_Snom_PhoneSettings|optional $_phoneSettings * @return Voipmanager_Model_Snom_Phone * @throws Voipmanager_Exception_Validation */ public function update(Tinebase_Record_Interface $_phone) { //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_phone->toArray(), true)); // check first if mac address is already used if ($_phone->has('macaddress')) { try { $phoneWithMac = $this->getByMacAddress($_phone->macaddress); if ($phoneWithMac->getId() !== $_phone->getId()) { throw new Voipmanager_Exception_Validation('A phone with this mac address already exists.'); } } catch (Voipmanager_Exception_NotFound $venf) { // everything ok } } $phone = $this->_backend->update($_phone); $_phoneSettings = $_phone->settings; if ($_phoneSettings instanceof Voipmanager_Model_Snom_PhoneSettings) { // force the right phone_id $_phoneSettings->setId($phone->getId()); // set all settings which are equal to the default settings to NULL $template = Voipmanager_Controller_Snom_Template::getInstance()->get($phone->template_id); $settingDefaults = Voipmanager_Controller_Snom_Setting::getInstance()->get($template->setting_id); foreach ($_phoneSettings->toArray() as $key => $value) { if ($key == 'phone_id') { continue; } if ($settingDefaults->{$key} == $value) { $_phoneSettings->{$key} = NULL; } } if (Voipmanager_Controller_Snom_PhoneSettings::getInstance()->get($phone->getId())) { //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . print_r($_phoneSettings->toArray(), true)); $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->update($_phoneSettings); } else { $phoneSettings = Voipmanager_Controller_Snom_PhoneSettings::getInstance()->create($_phoneSettings); } } Voipmanager_Controller_Snom_Line::getInstance()->deletePhoneLines($phone->getId()); $this->_createLines($phone, $_phone->lines); // save phone rights if (isset($_phone->rights)) { $this->_backend->setPhoneRights($_phone); } return $this->get($phone->getId()); }
/** * create edit template dialog * * @param int $templateId * @todo catch permission denied exceptions only * @todo move stuff out of registry. Registry is reserved for Tinebase!!! * */ public function editSnomTemplate($templateId = NULL) { if (!empty($templateId)) { $template = Voipmanager_Controller_Snom_Template::getInstance()->get($templateId); // encode the template array $encodedTemplate = Zend_Json::encode($template->toArray()); } else { $encodedTemplate = '{}'; } // software data $software = Voipmanager_Controller_Snom_Software::getInstance()->search(); $encodedSoftware = Zend_Json::encode($software->toArray()); // keylayout data // $keylayout = $controller->getKeylayout(); $encodedKeylayout = Zend_Json::encode('[]'); // settings data $settings = Voipmanager_Controller_Snom_Setting::getInstance()->search(); $encodedSettings = Zend_Json::encode($settings->toArray()); $view = new Zend_View(); $view->setScriptPath('Tinebase/views'); $view->title = "edit snom template data"; $view->jsExecute = ' Tine.Tinebase.registry.add("softwareVersions", ' . Voipmanager_Controller_Snom_Software::getInstance()->search()->toArray() . ' ); Tine.Voipmanager.Snom.Templates.EditDialog.display(' . $encodedTemplate . ',' . $encodedSoftware . ',' . $encodedKeylayout . ',' . $encodedSettings . '); '; header('Content-Type: text/html; charset=utf-8'); echo $view->render('jsclient.php'); }