/** * Load the database information * * @return void */ public static function loadDBInfo() { if (!self::isInstalled()) { return; } $config_file = self::getConfigFile(); if (is_readable($config_file)) { include $config_file; } // If master_db information does not exist, the config file needs to be updated if (!isset($db_info->master_db)) { $db_info->master_db = array(); $db_info->master_db["db_type"] = $db_info->db_type; unset($db_info->db_type); $db_info->master_db["db_port"] = $db_info->db_port; unset($db_info->db_port); $db_info->master_db["db_hostname"] = $db_info->db_hostname; unset($db_info->db_hostname); $db_info->master_db["db_password"] = $db_info->db_password; unset($db_info->db_password); $db_info->master_db["db_database"] = $db_info->db_database; unset($db_info->db_database); $db_info->master_db["db_userid"] = $db_info->db_userid; unset($db_info->db_userid); $db_info->master_db["db_table_prefix"] = $db_info->db_table_prefix; unset($db_info->db_table_prefix); if (isset($db_info->master_db["db_table_prefix"]) && substr_compare($db_info->master_db["db_table_prefix"], '_', -1) !== 0) { $db_info->master_db["db_table_prefix"] .= '_'; } $db_info->slave_db = array($db_info->master_db); self::setDBInfo($db_info); $oInstallController = getController('install'); $oInstallController->makeConfigFile(); } if (!$db_info->use_prepared_statements) { $db_info->use_prepared_statements = 'Y'; } if (!$db_info->time_zone) { $db_info->time_zone = date('O'); } $GLOBALS['_time_zone'] = $db_info->time_zone; $GLOBALS['_time_zone_offset'] = get_time_zone_offset($db_info->time_zone); if ($db_info->qmail_compatibility != 'Y') { $db_info->qmail_compatibility = 'N'; } $GLOBALS['_qmail_compatibility'] = $db_info->qmail_compatibility; if (!$db_info->use_db_session) { $db_info->use_db_session = 'N'; } if (!$db_info->use_ssl) { $db_info->use_ssl = 'none'; } self::set('_use_ssl', $db_info->use_ssl); self::set('_http_port', $db_info->http_port ? $db_info->http_port : NULL); self::set('_https_port', $db_info->https_port ? $db_info->https_port : NULL); if (!$db_info->sitelock_whitelist) { $db_info->sitelock_whitelist = '127.0.0.1'; } if (is_string($db_info->sitelock_whitelist)) { $db_info->sitelock_whitelist = explode(',', $db_info->sitelock_whitelist); } self::setDBInfo($db_info); }
function render() { //debug $debug = $_REQUEST['debug']; // array //get the variables $domain_uuid = $this->domain_uuid; $device_template = $this->device_template; $template_dir = $this->template_dir; $mac = $this->mac; $file = $this->file; //get the device template if (strlen($_REQUEST['template']) > 0) { $device_template = $_REQUEST['template']; $search = array('..', '/./'); $device_template = str_replace($search, "", $device_template); $device_template = str_replace('//', '/', $device_template); } //remove ../ and slashes in the file name $search = array('..', '/', '\\', '/./', '//'); $file = str_replace($search, "", $file); //get the domain_name if (strlen($domain_name) == 0) { $sql = "SELECT domain_name FROM v_domains "; $sql .= "WHERE domain_uuid=:domain_uuid "; $prep_statement = $this->db->prepare(check_sql($sql)); if ($prep_statement) { //use the prepared statement $prep_statement->bindParam(':domain_uuid', $domain_uuid); $prep_statement->execute(); $row = $prep_statement->fetch(); unset($prep_statement); //set the variables from values in the database $domain_name = $row["domain_name"]; } } //build the provision array foreach ($_SESSION['provision'] as $key => $val) { if (strlen($val['var']) > 0) { $value = $val['var']; } if (strlen($val['text']) > 0) { $value = $val['text']; } $provision[$key] = $value; } //check to see if the mac_address exists in devices if (strlen($_REQUEST['user_id']) == 0 || strlen($_REQUEST['userid']) == 0) { if ($this->mac_exists($mac)) { //get the device_template if (strlen($device_template) == 0) { $sql = "SELECT * FROM v_devices "; $sql .= "WHERE device_mac_address=:mac "; //$sql .= "WHERE device_mac_address= '$mac' "; $prep_statement_2 = $this->db->prepare(check_sql($sql)); if ($prep_statement_2) { //use the prepared statement $prep_statement_2->bindParam(':mac', $mac); $prep_statement_2->execute(); $row = $prep_statement_2->fetch(); //set the variables from values in the database $device_uuid = $row["device_uuid"]; $device_label = $row["device_label"]; if (strlen($row["device_vendor"]) > 0) { $device_vendor = strtolower($row["device_vendor"]); } $device_model = $row["device_model"]; $device_firmware_version = $row["device_firmware_version"]; $device_provision_enable = $row["device_provision_enable"]; $device_template = $row["device_template"]; $device_profile_uuid = $row["device_profile_uuid"]; $device_description = $row["device_description"]; } } //find a template that was defined on another phone and use that as the default. if (strlen($device_template) == 0) { $sql = "SELECT * FROM v_devices "; $sql .= "WHERE domain_uuid=:domain_uuid "; $sql .= "limit 1 "; $prep_statement_3 = $this->db->prepare(check_sql($sql)); if ($prep_statement_3) { $prep_statement_3->bindParam(':domain_uuid', $domain_uuid); $prep_statement_3->execute(); $row = $prep_statement_3->fetch(); $device_label = $row["device_label"]; $device_vendor = strtolower($row["device_vendor"]); $device_model = $row["device_model"]; $device_firmware_version = $row["device_firmware_version"]; $device_provision_enable = $row["device_provision_enable"]; $device_template = $row["device_template"]; $device_profile_uuid = $row["device_profile_uuid"]; $device_description = $row["device_description"]; } } } else { //use the user_agent to pre-assign a template for 1-hit provisioning. Enter the a unique string to match in the user agent, and the template it should match. $template_list = array("Linksys/SPA-2102" => "linksys/spa2102", "Linksys/SPA-3102" => "linksys/spa3102", "Linksys/SPA-9212" => "linksys/spa921", "Cisco/SPA301" => "cisco/spa301", "Cisco/SPA301D" => "cisco/spa302d", "Cisco/SPA303" => "cisco/spa303", "Cisco/SPA501G" => "cisco/spa501g", "Cisco/SPA502G" => "cisco/spa502g", "Cisco/SPA504G" => "cisco/spa504g", "Cisco/SPA508G" => "cisco/spa508g", "Cisco/SPA509G" => "cisco/spa509g", "Cisco/SPA512G" => "cisco/spa512g", "Cisco/SPA514G" => "cisco/spa514g", "Cisco/SPA525G2" => "cisco/spa525g2", "snom300-SIP" => "snom/300", "snom320-SIP" => "snom/320", "snom360-SIP" => "snom/360", "snom370-SIP" => "snom/370", "snom820-SIP" => "snom/820", "snom-m3-SIP" => "snom/m3", "yealink SIP-T20" => "yealink/t20", "yealink SIP-T22" => "yealink/t22", "yealink SIP-T26" => "yealink/t26", "Yealink SIP-T32" => "yealink/t32", "HW GXP1450" => "grandstream/gxp1450", "HW GXP2124" => "grandstream/gxp2124", "HW GXV3140" => "grandstream/gxv3140", "HW GXV3175" => "grandstream/gxv3175", "Wget/1.11.3" => "konftel/kt300ip"); foreach ($template_list as $key => $val) { if (stripos($_SERVER['HTTP_USER_AGENT'], $key) !== false) { $device_template = $val; break; } } unset($template_list); //mac address does not exist in the table so add it if ($_SESSION['provision']['auto_insert_enabled']['boolean'] == "true" and strlen($domain_uuid) > 0) { $device_uuid = uuid(); $sql = "INSERT INTO v_devices "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "device_uuid, "; $sql .= "device_mac_address, "; $sql .= "device_vendor, "; $sql .= "device_model, "; $sql .= "device_provision_enable, "; $sql .= "device_template, "; $sql .= "device_description "; $sql .= ") "; $sql .= "VALUES "; $sql .= "("; $sql .= "'" . $domain_uuid . "', "; $sql .= "'{$device_uuid}', "; $sql .= "'{$mac}', "; $sql .= "'{$device_vendor}', "; $sql .= "'', "; $sql .= "'true', "; $sql .= "'{$device_template}', "; $sql .= "'auto {$_SERVER['HTTP_USER_AGENT']}' "; $sql .= ")"; $this->db->exec(check_sql($sql)); unset($sql); } } } //alternate device_uuid if (strlen($device_uuid) > 0) { $sql = "SELECT * FROM v_devices "; $sql .= "WHERE device_uuid = '" . $device_uuid . "' "; $prep_statement_3 = $this->db->prepare(check_sql($sql)); if ($prep_statement_3) { $prep_statement_3->execute(); $row = $prep_statement_3->fetch(); $device_uuid_alternate = $row["device_uuid_alternate"]; if (is_uuid($device_uuid_alternate)) { //override the original device_uuid $device_uuid = $device_uuid_alternate; //get the new devices information $sql = "SELECT * FROM v_devices "; $sql .= "WHERE device_uuid = '" . $device_uuid . "' "; $prep_statement_4 = $this->db->prepare(check_sql($sql)); if ($prep_statement_4) { $prep_statement_4->execute(); $row = $prep_statement_4->fetch(); $device_label = $row["device_label"]; $device_vendor = strtolower($row["device_vendor"]); $device_firmware_version = $row["device_firmware_version"]; $device_provision_enable = $row["device_provision_enable"]; //keep the original template $device_profile_uuid = $row["device_profile_uuid"]; $device_description = $row["device_description"]; } unset($prep_statement_4); } } unset($prep_statement_3); } //get the device settings table in the provision category and update the provision array if (strlen($device_uuid) > 0) { $sql = "SELECT * FROM v_device_settings "; $sql .= "WHERE device_uuid = '" . $device_uuid . "' "; $sql .= "AND device_setting_enabled = 'true' "; $prep_statement = $this->db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); foreach ($result as $row) { $key = $row['device_setting_subcategory']; $value = $row['device_setting_value']; $provision[$key] = $value; } unset($prep_statement); } //initialize a template object $view = new template(); if (strlen($_SESSION['provision']['template_engine']['text']) > 0) { $view->engine = $_SESSION['provision']['template_engine']['text']; //raintpl, smarty, twig } else { $view->engine = "smarty"; } $view->template_dir = $template_dir . "/" . $device_template . "/"; $view->cache_dir = $_SESSION['server']['temp']['dir']; $view->init(); //replace the variables in the template in the future loop through all the line numbers to do a replace for each possible line number //get the time zone $time_zone_name = $_SESSION['domain']['time_zone']['name']; if (strlen($time_zone_name) > 0) { $time_zone_offset_raw = get_time_zone_offset($time_zone_name) / 3600; $time_zone_offset_hours = floor($time_zone_offset_raw); $time_zone_offset_minutes = ($time_zone_offset_raw - $time_zone_offset_hours) * 60; $time_zone_offset_minutes = number_pad($time_zone_offset_minutes, 2); if ($time_zone_offset_raw > 0) { $time_zone_offset_hours = number_pad($time_zone_offset_hours, 2); $time_zone_offset_hours = "+" . $time_zone_offset_hours; } else { $time_zone_offset_hours = str_replace("-", "", $time_zone_offset_hours); $time_zone_offset_hours = "-" . number_pad($time_zone_offset_hours, 2); } $time_zone_offset = $time_zone_offset_hours . ":" . $time_zone_offset_minutes; $view->assign("time_zone_offset", $time_zone_offset); } //create a mac address with back slashes for backwards compatability $mac_dash = substr($mac, 0, 2) . '-' . substr($mac, 2, 2) . '-' . substr($mac, 4, 2) . '-' . substr($mac, 6, 2) . '-' . substr($mac, 8, 2) . '-' . substr($mac, 10, 2); //get the contacts array and add to the template engine if (strlen($device_uuid) > 0 and strlen($domain_uuid) > 0 and $_SESSION['provision']['directory']['boolean'] == "true") { //get contacts from the database $sql = "select c.contact_organization, c.contact_name_given, c.contact_name_family, p.phone_number, p.phone_extension "; $sql .= "from v_contacts as c, v_contact_phones as p "; $sql .= "where c.domain_uuid = '" . $domain_uuid . "' "; $sql .= "and c.contact_uuid = p.contact_uuid "; $sql .= "and p.phone_type_voice = '1' "; $sql .= "order by c.contact_organization desc, c.contact_name_given asc, c.contact_name_family asc "; $prep_statement = $this->db->prepare(check_sql($sql)); $prep_statement->execute(); $contacts = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset($prep_statement, $sql); //assign the contacts array $view->assign("contacts", $contacts); } //get the provisioning information from device lines table if (strlen($device_uuid) > 0) { //get the device lines array $sql = "select * from v_device_lines "; $sql .= "where device_uuid = '" . $device_uuid . "' "; $sql .= "and (enabled = 'true' or enabled is null or enabled = '') "; $prep_statement = $this->db->prepare(check_sql($sql)); $prep_statement->execute(); $device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED); //assign the keys array $view->assign("lines", $device_lines); //set the variables foreach ($device_lines as $row) { //set the variables $line_number = $row['line_number']; $register_expires = $row['register_expires']; $sip_transport = strtolower($row['sip_transport']); $sip_port = $row['sip_port']; //set defaults if (strlen($register_expires) == 0) { $register_expires = "120"; } if (strlen($sip_transport) == 0) { $sip_transport = "tcp"; } if (strlen($sip_port) == 0) { if ($line_number == "" || $line_number == "1") { $sip_port = "5060"; } else { $sip_port = "506" . ($line_number + 1); } } //set a lines array index is the line number $lines[$line_number]['register_expires'] = $register_expires; $lines[$line_number]['sip_transport'] = strtolower($sip_transport); $lines[$line_number]['sip_port'] = $sip_port; $lines[$line_number]['server_address'] = $row["server_address"]; $lines[$line_number]['outbound_proxy'] = $row["outbound_proxy"]; $lines[$line_number]['display_name'] = $row["display_name"]; $lines[$line_number]['auth_id'] = $row["auth_id"]; $lines[$line_number]['user_id'] = $row["user_id"]; $lines[$line_number]['password'] = $row["password"]; //assign the variables $view->assign("server_address_" . $line_number, $row["server_address"]); $view->assign("outbound_proxy_" . $line_number, $row["outbound_proxy"]); $view->assign("display_name_" . $line_number, $row["display_name"]); $view->assign("auth_id_" . $line_number, $row["auth_id"]); $view->assign("user_id_" . $line_number, $row["user_id"]); $view->assign("user_password_" . $line_number, $row["password"]); $view->assign("sip_transport_" . $line_number, $sip_transport); $view->assign("sip_port_" . $line_number, $sip_port); $view->assign("register_expires_" . $line_number, $register_expires); } unset($prep_statement); } //get the provisioning information from device keys if (strlen($device_uuid) > 0) { //get the device keys array $sql = "SELECT * FROM v_device_keys "; $sql .= "WHERE ("; $sql .= "device_uuid = '" . $device_uuid . "' "; if (strlen($device_profile_uuid) > 0) { $sql .= "or device_profile_uuid = '" . $device_profile_uuid . "' "; } $sql .= ") "; //$sql .= "AND domain_uuid = '".$domain_uuid."' "; $sql .= "ORDER BY device_key_category asc, device_key_id asc, device_uuid desc"; $prep_statement = $this->db->prepare(check_sql($sql)); $prep_statement->execute(); $device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED); //rebuild the array to allow profile keys to be overridden by keys assigned to this device $x = 0; $previous_category = ''; $previous_id = ''; foreach ($device_keys as $row) { //set the variables if ($row['device_key_category'] == $previous_category && $row['device_key_id'] == $previous_id) { $device_keys[$x]['device_key_override'] = "true"; $device_keys[$x]['device_key_message'] = "value=" . $device_keys[$x - 1]['device_key_value'] . "&label=" . $device_keys[$x - 1]['device_key_label']; unset($device_keys[$x - 1]); } $device_keys[$x]['device_key_category'] = $row['device_key_category']; $device_keys[$x]['device_key_id'] = $row['device_key_id']; //1 $device_keys[$x]['device_key_type'] = $row['device_key_type']; //line, memory, expansion $device_keys[$x]['device_key_line'] = $row['device_key_line']; $device_keys[$x]['device_key_value'] = $row['device_key_value']; //1 $device_keys[$x]['device_key_extension'] = $row['device_key_extension']; $device_keys[$x]['device_key_label'] = $row['device_key_label']; //label if (is_uuid($row['device_profile_uuid'])) { $device_keys[$x]['device_key_owner'] = "profile"; } else { $device_keys[$x]['device_key_owner'] = "device"; } //set previous values $previous_category = $row['device_key_category']; $previous_id = $row['device_key_id']; //increment the key $x++; } } //debug information if ($debug == "array") { echo "<pre>\n"; print_r($device_keys); echo "<pre>\n"; exit; } //assign the keys array $view->assign("keys", $device_keys); //set the variables foreach ($device_keys as $row) { //set the variables $device_key_category = $row['device_key_category']; $device_key_id = $row['device_key_id']; //1 $device_key_type = $row['device_key_type']; //line $device_key_line = $row['device_key_line']; $device_key_value = $row['device_key_value']; //1 $device_key_extension = $row['device_key_extension']; $device_key_label = $row['device_key_label']; //label //set the line key $x = $device_key_line; //add a simple variable with the index if ($x === 0 || $x === 1) { $device_key_value = str_replace("\${user_id}", $lines[$x]['user_id'], $device_key_value); $device_key_value = str_replace("\${auth_id}", $lines[$x]['auth_id'], $device_key_value); $device_key_value = str_replace("\${extension}", $lines[$x]['user_id'], $device_key_value); $device_key_value = str_replace("\${password}", $lines[$x]['password'], $device_key_value); $device_key_value = str_replace("\${register_expires}", $lines[$x]['register_expires'], $device_key_value); $device_key_value = str_replace("\${sip_transport}", $lines[$x]['sip_transport'], $device_key_value); $device_key_value = str_replace("\${sip_port}", $lines[$x]['sip_port'], $device_key_value); $device_key_value = str_replace("\${server_address}", $lines[$x]['server_address'], $device_key_value); $device_key_value = str_replace("\${outbound_proxy}", $lines[$x]['outbound_proxy'], $device_key_value); $device_key_value = str_replace("\${display_name}", $lines[$x]['display_name'], $device_key_value); $device_key_extension = str_replace("\${user_id}", $lines[$x]['user_id'], $device_key_extension); $device_key_extension = str_replace("\${auth_id}", $lines[$x]['auth_id'], $device_key_extension); $device_key_extension = str_replace("\${extension}", $lines[$x]['user_id'], $device_key_extension); $device_key_extension = str_replace("\${password}", $lines[$x]['password'], $device_key_extension); $device_key_extension = str_replace("\${register_expires}", $lines[$x]['register_expires'], $device_key_extension); $device_key_extension = str_replace("\${sip_transport}", $lines[$x]['sip_transport'], $device_key_extension); $device_key_extension = str_replace("\${sip_port}", $lines[$x]['sip_port'], $device_key_extension); $device_key_extension = str_replace("\${server_address}", $lines[$x]['server_address'], $device_key_extension); $device_key_extension = str_replace("\${outbound_proxy}", $lines[$x]['outbound_proxy'], $device_key_extension); $device_key_extension = str_replace("\${display_name}", $lines[$x]['display_name'], $device_key_extension); $device_key_label = str_replace("\${user_id}", $lines[$x]['user_id'], $device_key_label); $device_key_label = str_replace("\${auth_id}", $lines[$x]['auth_id'], $device_key_label); $device_key_label = str_replace("\${extension}", $lines[$x]['user_id'], $device_key_label); $device_key_label = str_replace("\${password}", $lines[$x]['password'], $device_key_label); $device_key_label = str_replace("\${register_expires}", $lines[$x]['register_expires'], $device_key_label); $device_key_label = str_replace("\${sip_transport}", $lines[$x]['sip_transport'], $device_key_label); $device_key_label = str_replace("\${sip_port}", $lines[$x]['sip_port'], $device_key_label); $device_key_label = str_replace("\${server_address}", $lines[$x]['server_address'], $device_key_label); $device_key_label = str_replace("\${outbound_proxy}", $lines[$x]['outbound_proxy'], $device_key_label); $device_key_label = str_replace("\${display_name}", $lines[$x]['display_name'], $device_key_label); } //add variables with the index $device_key_value = str_replace("\${user_id_{$x}}", $lines[$x]['user_id'], $device_key_value); $device_key_value = str_replace("\${auth_id_{$x}}", $lines[$x]['auth_id'], $device_key_value); $device_key_value = str_replace("\${extension_{$x}}", $lines[$x]['user_id'], $device_key_value); $device_key_value = str_replace("\${password_{$x}}", $lines[$x]['password'], $device_key_value); $device_key_value = str_replace("\${register_expires_{$x}}", $lines[$x]['register_expires'], $device_key_value); $device_key_value = str_replace("\${sip_transport_{$x}}", $lines[$x]['sip_transport'], $device_key_value); $device_key_value = str_replace("\${sip_port_{$x}}", $lines[$x]['sip_port'], $device_key_value); $device_key_value = str_replace("\${server_address_{$x}}", $lines[$x]['server_address'], $device_key_value); $device_key_value = str_replace("\${outbound_proxy_{$x}}", $lines[$x]['outbound_proxy'], $device_key_value); $device_key_value = str_replace("\${display_name_{$x}}", $lines[$x]['display_name'], $device_key_value); $device_key_extension = str_replace("\${user_id_{$x}}", $lines[$x]['user_id'], $device_key_label); $device_key_extension = str_replace("\${auth_id_{$x}}", $lines[$x]['auth_id'], $device_key_label); $device_key_extension = str_replace("\${extension_{$x}}", $lines[$x]['user_id'], $device_key_label); $device_key_extension = str_replace("\${password_{$x}}", $lines[$x]['password'], $device_key_label); $device_key_extension = str_replace("\${register_expires_{$x}}", $lines[$x]['register_expires'], $device_key_label); $device_key_extension = str_replace("\${sip_transport_{$x}}", $lines[$x]['sip_transport'], $device_key_label); $device_key_extension = str_replace("\${sip_port_{$x}}", $lines[$x]['sip_port'], $device_key_label); $device_key_extension = str_replace("\${server_address_{$x}}", $lines[$x]['server_address'], $device_key_label); $device_key_extension = str_replace("\${outbound_proxy_{$x}}", $lines[$x]['outbound_proxy'], $device_key_label); $device_key_extension = str_replace("\${display_name_{$x}}", $lines[$x]['display_name'], $device_key_label); $device_key_label = str_replace("\${user_id_{$x}}", $lines[$x]['user_id'], $device_key_label); $device_key_label = str_replace("\${auth_id_{$x}}", $lines[$x]['auth_id'], $device_key_label); $device_key_label = str_replace("\${extension_{$x}}", $lines[$x]['user_id'], $device_key_label); $device_key_label = str_replace("\${password_{$x}}", $lines[$x]['password'], $device_key_label); $device_key_label = str_replace("\${register_expires_{$x}}", $lines[$x]['register_expires'], $device_key_label); $device_key_label = str_replace("\${sip_transport_{$x}}", $lines[$x]['sip_transport'], $device_key_label); $device_key_label = str_replace("\${sip_port_{$x}}", $lines[$x]['sip_port'], $device_key_label); $device_key_label = str_replace("\${server_address_{$x}}", $lines[$x]['server_address'], $device_key_label); $device_key_label = str_replace("\${outbound_proxy_{$x}}", $lines[$x]['outbound_proxy'], $device_key_label); $device_key_label = str_replace("\${display_name_{$x}}", $lines[$x]['display_name'], $device_key_label); //add general variables $device_key_value = str_replace("\${domain_name}", $domain_name, $device_key_value); $device_key_extension = str_replace("\${domain_name}", $domain_name, $device_key_extension); $device_key_label = str_replace("\${domain_name}", $domain_name, $device_key_label); //grandstream modes are different based on the category if ($device_vendor == "grandstream") { if ($device_key_category == "line") { switch ($device_key_type) { case "line": $device_key_type = "0"; break; case "shared line": $device_key_type = "1"; break; case "speed dial": $device_key_type = "10"; break; case "blf": $device_key_type = "11"; break; case "presence watcher": $device_key_type = "12"; break; case "eventlist blf": $device_key_type = "13"; break; case "speed dial active": $device_key_type = "14"; break; case "dial dtmf": $device_key_type = "15"; break; case "voicemail": $device_key_type = "16"; break; case "call return": $device_key_type = "17"; break; case "transfer": $device_key_type = "18"; break; case "call park": $device_key_type = "19"; break; case "intercom": $device_key_type = "20"; break; case "ldap search": $device_key_type = "21"; break; } } if ($device_key_category == "memory") { switch ($device_key_type) { case "speed dial": $device_key_type = "0"; break; case "blf": $device_key_type = "1"; break; case "presence watcher": $device_key_type = "2"; break; case "eventlist blf": $device_key_type = "3"; break; case "speed dial active": $device_key_type = "4"; break; case "dial dtmf": $device_key_type = "5"; break; case "voicemail": $device_key_type = "6"; break; case "call return": $device_key_type = "7"; break; case "transfer": $device_key_type = "8"; break; case "call park": $device_key_type = "9"; break; case "intercom": $device_key_type = "10"; break; case "ldap search": $device_key_type = "11"; break; } } } //assign the variables if (strlen($device_key_category) == 0) { $view->assign("key_id_" . $device_key_id, $device_key_id); $view->assign("key_type_" . $device_key_id, $device_key_type); $view->assign("key_line_" . $device_key_id, $device_key_line); $view->assign("key_value_" . $device_key_id, $device_key_value); $view->assign("key_extension_" . $device_key_id, $device_key_extension); $view->assign("key_label_" . $device_key_id, $device_key_label); } else { $view->assign($device_key_category . "_key_id_" . $device_key_id, $device_key_id); $view->assign($device_key_category . "_key_type_" . $device_key_id, $device_key_type); $view->assign($device_key_category . "_key_line_" . $device_key_id, $device_key_line); $view->assign($device_key_category . "_key_value_" . $device_key_id, $device_key_value); $view->assign($device_key_category . "_key_extension_" . $device_key_id, $device_key_extension); $view->assign($device_key_category . "_key_label_" . $device_key_id, $device_key_label); } } unset($prep_statement); //set the mac address in the correct format switch (strtolower($device_vendor)) { case "aastra": $mac = strtoupper($mac); break; case "snom": $mac = strtolower($mac); break; case "polycom": $mac = strtolower($mac); break; default: $mac = strtolower($mac); $mac = substr($mac, 0, 2) . '-' . substr($mac, 2, 2) . '-' . substr($mac, 4, 2) . '-' . substr($mac, 6, 2) . '-' . substr($mac, 8, 2) . '-' . substr($mac, 10, 2); } //replace the variables in the template in the future loop through all the line numbers to do a replace for each possible line number $view->assign("mac", $mac); $view->assign("label", $device_label); $view->assign("firmware_version", $device_firmware_version); $view->assign("domain_name", $domain_name); $view->assign("project_path", PROJECT_PATH); $view->assign("server1_address", $server1_address); $view->assign("proxy1_address", $proxy1_address); $view->assign("user_id", $user_id); $view->assign("password", $password); $view->assign("template", $device_template); //replace the dynamic provision variables that are defined in default, domain, and device settings foreach ($provision as $key => $val) { $view->assign($key, $val); } //set the template directory if (strlen($provision["template_dir"]) > 0) { $template_dir = $provision["template_dir"]; } //if the domain name directory exists then only use templates from it if (is_dir($template_dir . '/' . $domain_name)) { $device_template = $domain_name . '/' . $device_template; } //if $file is not provided then look for a default file that exists if (strlen($file) == 0) { if (file_exists($template_dir . "/" . $device_template . "/{\$mac}")) { $file = "{\$mac}"; } elseif (file_exists($template_dir . "/" . $device_template . "/{\$mac}.xml")) { $file = "{\$mac}.xml"; } elseif (file_exists($template_dir . "/" . $device_template . "/{\$mac}.cfg")) { $file = "{\$mac}.cfg"; } else { echo "file not found"; exit; } } else { //make sure the file exists if (!file_exists($template_dir . "/" . $device_template . "/" . $file)) { echo "file not found"; if ($_SESSION['provision']['debug']['boolean'] == 'true') { echo ":{$template_dir}/{$device_template}/{$file}<br/>"; echo "template_dir: {$template_dir}<br/>"; echo "device_template: {$device_template}<br/>"; echo "file: {$file}"; } exit; } } //output template to string for header processing $file_contents = $view->render($file); //log file for testing if ($_SESSION['provision']['debug']['boolean'] == 'true') { $tmp_file = "/tmp/provisioning_log.txt"; $fh = fopen($tmp_file, 'w') or die("can't open file"); $tmp_string = $mac . "\n"; fwrite($fh, $tmp_string); fclose($fh); } //returned the rendered template return $file_contents; }
echo "\t\t<select id='default_setting_value' name='default_setting_value' class='formfld' style=''>\n"; //$list = DateTimeZone::listAbbreviations(); $time_zone_identifiers = DateTimeZone::listIdentifiers(); $previous_category = ''; $x = 0; foreach ($time_zone_identifiers as $key => $val) { $time_zone = explode("/", $val); $category = $time_zone[0]; if ($category != $previous_category) { if ($x > 0) { echo "\t\t</optgroup>\n"; } echo "\t\t<optgroup label='" . $category . "'>\n"; } if (strlen($val) > 0) { $time_zone_offset = get_time_zone_offset($val) / 3600; $time_zone_offset_hours = floor($time_zone_offset); $time_zone_offset_minutes = ($time_zone_offset - $time_zone_offset_hours) * 60; $time_zone_offset_minutes = number_pad($time_zone_offset_minutes, 2); if ($time_zone_offset > 0) { $time_zone_offset_hours = number_pad($time_zone_offset_hours, 2); $time_zone_offset_hours = "+" . $time_zone_offset_hours; } else { $time_zone_offset_hours = str_replace("-", "", $time_zone_offset_hours); $time_zone_offset_hours = "-" . number_pad($time_zone_offset_hours, 2); } } if ($val == $default_setting_value) { echo "\t\t\t<option value='" . $val . "' selected='selected'>(UTC " . $time_zone_offset_hours . ":" . $time_zone_offset_minutes . ") " . $val . "</option>\n"; } else { echo "\t\t\t<option value='" . $val . "'>(UTC " . $time_zone_offset_hours . ":" . $time_zone_offset_minutes . ") " . $val . "</option>\n";