示例#1
0
文件: Usuarios.php 项目: rootzig/SNEP
 /**
  * Retorna um usuário em sua classe nativa.
  *
  * ex: PBX_Asterisk_Ramal e no futuro Snep_Agent
  *
  * @param int $userid
  * @return Snep_Usuario usuario
  */
 public static function get($userid)
 {
     $db = Snep_Db::getInstance();
     $userid = str_replace("'", "\\'", $userid);
     $select = $db->select()->from('peers')->where("name = '{$userid}' AND peer_type='R'");
     $stmt = $db->query($select);
     $usuario = $stmt->fetchObject();
     if (!$usuario) {
         throw new PBX_Exception_NotFound("Usuario {$userid} nao encontrado");
     }
     $tech = substr($usuario->canal, 0, strpos($usuario->canal, '/'));
     if ($tech == "SIP") {
         require_once "PBX/Asterisk/Interface/SIP.php";
         $interface = new PBX_Asterisk_Interface_SIP(array("username" => $usuario->name, "secret" => $usuario->secret));
     } else {
         if ($tech == "IAX2") {
             require_once "PBX/Asterisk/Interface/IAX2.php";
             $interface = new PBX_Asterisk_Interface_IAX2(array("username" => $usuario->name, "secret" => $usuario->secret));
         } else {
             if ($tech == "MANUAL") {
                 require_once "PBX/Asterisk/Interface/VIRTUAL.php";
                 $interface = new PBX_Asterisk_Interface_VIRTUAL(array("channel" => substr($usuario->canal, strpos($usuario->canal, '/') + 1)));
             } else {
                 if ($tech == "VIRTUAL") {
                     require_once "PBX/Asterisk/Interface/VIRTUAL.php";
                     $trunk = PBX_Trunks::get(substr($usuario->canal, strpos($usuario->canal, '/') + 1));
                     $interface = new PBX_Asterisk_Interface_VIRTUAL(array("channel" => $trunk->getInterface()->getCanal() . "/" . $userid));
                 } else {
                     if ($tech == "KHOMP") {
                         require_once "PBX/Asterisk/Interface/KHOMP.php";
                         $khomp_id = substr($usuario->canal, strpos($usuario->canal, '/') + 1);
                         $khomp_board = substr($khomp_id, 1, strpos($khomp_id, 'c') - 1);
                         $khomp_channel = substr($khomp_id, strpos($khomp_id, 'c') + 1);
                         $interface = new PBX_Asterisk_Interface_KHOMP(array("board" => $khomp_board, "channel" => $khomp_channel));
                     } else {
                         throw new Exception("Tecnologia {$tech} desconhecida ou invalida.");
                     }
                 }
             }
         }
     }
     $user = new Snep_Exten($usuario->name, $usuario->password, $usuario->callerid, $interface);
     $user->setGroup($usuario->group);
     if ($usuario->authenticate) {
         $user->lock();
     }
     if ($usuario->dnd) {
         $user->DNDEnable();
     }
     if ($usuario->sigame != "") {
         $user->setFollowMe($usuario->sigame);
     }
     if (is_numeric($usuario->pickupgroup)) {
         $user->setPickupGroup($usuario->pickupgroup);
     }
     if ($usuario->usa_vc) {
         $user->setMailBox($usuario->mailbox);
         $user->setEmail($usuario->email);
     }
     return $user;
 }
示例#2
0
 /**
  * Processa os dados de um objeto em um array associativo que pode ser
  * usado para manipulação do banco de dados.
  *
  * @param Snep_Exten $exten
  * @return array string
  */
 private function getExtenDataAsArray(Snep_Exten $exten)
 {
     $extenData = array("context" => "default", "peer_type" => "R", "name" => $exten->getNumero(), "fromuser" => $exten->getNumero(), "username" => $exten->getNumero(), "callerid" => $exten->getCallerid(), "password" => $exten->getPassword(), "pickupgroup" => $exten->getPickupGroup(), "canal" => $exten->getInterface()->getCanal(), "group" => $exten->getGroup(), "email" => $exten->getEmail(), "usa_vc" => $exten->hasVoiceMail(), "mailbox" => $exten->getMailBox(), "authenticate" => $exten->isLocked(), "time_total" => $exten->getTimeTotal(), "time_chargeby" => $exten->getCtrlType());
     /**
      * Adicionando informações específica de interface.
      */
     if ($exten->getInterface() instanceof PBX_Asterisk_Interface_SIP || $exten->getInterface() instanceof PBX_Asterisk_Interface_IAX2) {
         $interface = $exten->getInterface();
         $extenData['allow'] = $interface->allow;
         $extenData['type'] = $interface->type;
         $extenData['secret'] = $interface->secret;
         $extenData['qualify'] = $interface->qualify;
         $extenData['dtmfmode'] = $interface->dtmfmode;
         $extenData['call-limit'] = $interface->{'call-limit'};
         $extenData['nat'] = $interface->nat;
     }
     return $extenData;
 }