function load_extension_from_csv($smarty, $ruta_archivo, $base_dir, $pDB, $arrAST, $arrAMP) { $Messages = ""; $arrayColumnas = array(); $data_connection = array('host' => "127.0.0.1", 'user' => "admin", 'password' => obtenerClaveAMIAdmin()); $result = isValidCSV($pDB, $ruta_archivo, $arrayColumnas); if ($result != "valided") { $smarty->assign("mb_message", $result); return; } $hArchivo = fopen($ruta_archivo, 'r+'); $cont = 0; $pLoadExtension = new paloSantoLoadExtension($pDB); if ($hArchivo) { //Linea 1 header ignorada $tupla = fgetcsv($hArchivo, 4096, ","); $prueba = count($tupla); //Desde linea 2 son datos while ($tupla = fgetcsv($hArchivo, 4096, ",")) { if (is_array($tupla) && count($tupla) >= 3) { $Name = $tupla[$arrayColumnas[0]]; $Ext = $tupla[$arrayColumnas[1]]; $Direct_DID = isset($arrayColumnas[2]) ? $tupla[$arrayColumnas[2]] : ""; $Outbound_CID = isset($arrayColumnas[3]) ? $tupla[$arrayColumnas[3]] : ""; $Call_Waiting = isset($arrayColumnas[4]) ? $tupla[$arrayColumnas[4]] : ""; $Secret = $tupla[$arrayColumnas[5]]; $VoiceMail = isset($arrayColumnas[6]) ? $tupla[$arrayColumnas[6]] : ""; $VoiceMail_PW = isset($arrayColumnas[7]) ? $tupla[$arrayColumnas[7]] : ""; $VM_Email_Address = isset($arrayColumnas[8]) ? $tupla[$arrayColumnas[8]] : ""; $VM_Pager_Email_Addr = isset($arrayColumnas[9]) ? $tupla[$arrayColumnas[9]] : ""; $VM_Options = isset($arrayColumnas[10]) ? $tupla[$arrayColumnas[10]] : ""; $VM_EmailAttachment = isset($arrayColumnas[11]) ? $tupla[$arrayColumnas[11]] : ""; $VM_Play_CID = isset($arrayColumnas[12]) ? $tupla[$arrayColumnas[12]] : ""; $VM_Play_Envelope = isset($arrayColumnas[13]) ? $tupla[$arrayColumnas[13]] : ""; $VM_Delete_Vmail = isset($arrayColumnas[14]) ? $tupla[$arrayColumnas[14]] : ""; $Context = isset($arrayColumnas[15]) ? $tupla[$arrayColumnas[15]] : "from-internal"; if (trim($Context) == "") { $Context = "from-internal"; } $Tech = strtolower($tupla[$arrayColumnas[16]]); $Callgroup = isset($arrayColumnas[17]) ? $tupla[$arrayColumnas[17]] : ""; $Pickupgroup = isset($arrayColumnas[18]) ? $tupla[$arrayColumnas[18]] : ""; $Disallow = isset($arrayColumnas[19]) ? $tupla[$arrayColumnas[19]] : ""; $Allow = isset($arrayColumnas[20]) ? $tupla[$arrayColumnas[20]] : ""; $Deny = isset($arrayColumnas[21]) ? $tupla[$arrayColumnas[21]] : ""; $Permit = isset($arrayColumnas[22]) ? $tupla[$arrayColumnas[22]] : ""; $Record_Incoming = isset($arrayColumnas[23]) ? $tupla[$arrayColumnas[23]] : ""; $Record_Outgoing = isset($arrayColumnas[24]) ? $tupla[$arrayColumnas[24]] : ""; ////////////////////////////////////////////////////////////////////////////////// $Record_Incoming = strtolower($Record_Incoming); $Record_Outgoing = strtolower($Record_Outgoing); if (preg_match("/^(on demand|adhoc)/", $Record_Incoming)) { $Record_Incoming = "Adhoc"; } elseif (preg_match("/^always/", $Record_Incoming)) { $Record_Incoming = "always"; } elseif (preg_match("/^never/", $Record_Incoming)) { $Record_Incoming = "never"; } if (preg_match("/(on demand|adhoc)/", $Record_Outgoing)) { $Record_Outgoing = "Adhoc"; } elseif (preg_match("/^always/", $Record_Outgoing)) { $Record_Outgoing = "always"; } elseif (preg_match("/^never/", $Record_Outgoing)) { $Record_Outgoing = "never"; } ////////////////////////////////////////////////////////////////////////////////// // validando para que coja las comillas $Outbound_CID = preg_replace('/“/', "\"", $Outbound_CID); $Outbound_CID = preg_replace('/”/', "\"", $Outbound_CID); ////////////////////////////////////////////////////////////////////////////////// //Paso 1: creando en la tabla sip - iax if (!$pLoadExtension->createTechDevices($Ext, $Secret, $VoiceMail, $Context, $Tech, $Disallow, $Allow, $Deny, $Permit, $Callgroup, $Pickupgroup, $Record_Incoming, $Record_Outgoing)) { $Messages .= "Ext: {$Ext} - " . _tr('Error updating Tech') . ": " . $pLoadExtension->errMsg . "<br />"; } else { //Paso 2: creando en la tabla users if (!$pLoadExtension->createUsers($Ext, $Name, $VoiceMail, $Direct_DID, $Outbound_CID, $Record_Incoming, $Record_Outgoing)) { $Messages .= "Ext: {$Ext} - " . _tr('Error updating Users') . ": " . $pLoadExtension->errMsg . "<br />"; } //Paso 3: creando en la tabla devices if (!$pLoadExtension->createDevices($Ext, $Tech, $Name)) { $Messages .= "Ext: {$Ext} - " . _tr('Error updating Devices') . ": " . $pLoadExtension->errMsg . "<br />"; } //Paso 4: creando en el archivo /etc/asterisk/voicemail.conf los voicemails if (!$pLoadExtension->writeFileVoiceMail($Ext, $Name, $VoiceMail, $VoiceMail_PW, $VM_Email_Address, $VM_Pager_Email_Addr, $VM_Options, $VM_EmailAttachment, $VM_Play_CID, $VM_Play_Envelope, $VM_Delete_Vmail)) { $Messages .= "Ext: {$Ext} - " . _tr('Error updating Voicemail') . "<br />"; } //Paso 5: Configurando el call waiting if (!$pLoadExtension->processCallWaiting($Call_Waiting, $Ext)) { $Messages .= "Ext: {$Ext} - " . _tr('Error processing CallWaiting') . "<br />"; } $outboundcid = preg_replace("/\"/", "'", $Outbound_CID); $outboundcid = preg_replace("/\"/", "'", $outboundcid); $outboundcid = preg_replace("/ /", "", $outboundcid); if (!$pLoadExtension->putDataBaseFamily($data_connection, $Ext, $Tech, $Name, $VoiceMail, $outboundcid, $Record_Incoming, $Record_Outgoing)) { $Messages .= "Ext: {$Ext} - " . _tr('Error processing Database Family') . "<br />"; } $cont++; } //////////////////////////////////////////////////////////////////////// //Paso 7: Escribiendo en tabla incoming if ($Direct_DID !== "") { if (!$pLoadExtension->createDirect_DID($Ext, $Direct_DID)) { $Messages .= "Ext: {$Ext} - " . _tr('Error to insert or update Direct DID') . "<br />"; } } ///////////////////////////////////////////////////////////////////////// } } //Paso 6: Realizo reload if (!$pLoadExtension->do_reloadAll($data_connection, $arrAST, $arrAMP)) { $Messages .= $pLoadExtension->errMsg; } $Messages .= _tr('Total extension updated') . ": {$cont}<br />"; $smarty->assign("mb_message", $Messages); } unlink($ruta_archivo); }