public function add($data) { $this->auto_render = FALSE; self::authorize(); switch ($data) { case 'extension': if (!($user_id = arr::get($_REQUEST, 'user_id'))) { $user_id = 1; } $number = self::requireRequest('number'); $extcid = self::requireRequest('ext_cid'); $username = self::requireRequest('username'); $password = self::requireRequest('password'); $context_id = self::requireRequest('context_id'); $user_id = self::requireRequest('user_id'); $options = array('callerid_internal_number' => $number, 'callerid_external_number' => $extcid, 'sip_username' => $username, 'sip_password' => $password); Doctrine_Manager::connection()->beginTransaction(); $success = Bluebox_Tenant::createUserExtension($user_id, $number, $context_id, NULL, $options); if (!$success) { Doctrine_Manager::connection()->rollback(); self::throwErrorAndDie('Could not add extension'); } else { Doctrine_Manager::connection()->commit(); } self::returnSuccessAndDie("Added extension"); break; case 'trunk': $name = self::requireRequest('name'); $server = self::requireRequest('server'); $username = self::requireRequest('username'); $password = self::requireRequest('password'); $interface_id = self::requireRequest('interface_id'); $contexts = array_fill_keys(explode(',', self::requireRequest('contexts')), '1'); $register = self::requireRequest('register'); $cid_name = self::requireRequest('cid_name'); $cid_number = self::requireRequest('cid_number'); $pattern_ids = explode(',', self::requireRequest('pattern_ids')); $prepends = explode(',', self::requireRequest('prepends')); $account_id = self::requireRequest('account_id'); foreach ($pattern_ids as $index => $pattern_id) { $patterns[$pattern_id]['enabled'] = 1; if (($prepend = arr::get($prepends, $index)) === FALSE) { $prepend = ""; } $patterns[$pattern_id]['prepend'] = $prepend; } Doctrine_Manager::connection()->beginTransaction(); $trunk = new Trunk(); $trunk->synchronizeWithArray(array('name' => $name, 'type' => 'sip', 'server' => $server, 'plugins' => array('sip' => array('username' => $username, 'password' => $password, 'register' => $register, 'cid_format' => '1', 'caller_id_field' => 'rpid', 'sip_invite_format' => '1'), 'sipinterface' => array('sipinterface_id' => $interface_id), 'simpleroute' => array('patterns' => $patterns, 'contexts' => $contexts, 'caller_id_name' => $cid_name, 'caller_id_number' => $cid_number, 'continue_on_fail' => '1')))); $trunk->account_id = $account_id; $trunk->refreshRelated(); $success = $trunk->save(); if (!$success) { Doctrine_Manager::connection()->rollback(); self::throwErrorAndDie('Could not add trunk'); } else { Doctrine_Manager::connection()->commit(); } self::returnSuccessAndDie('Added trunk'); break; default: self::throwErrorAndDie('Command not recognized'); break; } }