diff --git a/app/devices/app_defaults.php b/app/devices/app_defaults.php index 172cfd296d..4f46138af5 100644 --- a/app/devices/app_defaults.php +++ b/app/devices/app_defaults.php @@ -14,7 +14,6 @@ License. The Original Code is FusionPBX - The Initial Developer of the Original Code is Mark J Crane Portions created by the Initial Developer are Copyright (C) 2008-2016 @@ -24,8 +23,8 @@ Mark J Crane */ - if ($domains_processed == 1) { + //set all lines to enabled (true) where null or empty string $sql = "update v_device_lines set "; $sql .= "enabled = 'true' "; @@ -50,94 +49,106 @@ if ($domains_processed == 1) { } unset($device_keys, $sql); - //add device vendor and functions to the database - //get a list of vendors - $prep_statement = $db->prepare("SELECT device_vendor_uuid, name FROM v_device_vendors;"); + //add device vendor functions to the database + $sql = "select count(*) as num_rows from v_device_vendors; "; + $prep_statement = $db->prepare($sql); if ($prep_statement) { $prep_statement->execute(); - $db_vendors = $prep_statement->fetchAll(PDO::FETCH_KEY_PAIR); - unset($prep_statement); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + if ($row['num_rows'] == 0) { - //get the vendor array - require_once $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/devices/app_config.php'; + //get the vendor array + require_once $_SERVER["DOCUMENT_ROOT"].'/'.PROJECT_PATH.'/app/devices/app_config.php'; - //get the groups and create an array to use the name to get the uuid - $sql = "SELECT group_name, group_uuid FROM v_groups; "; - $prep_statement = $db->prepare($sql); - $prep_statement->execute(); - $group_uuids = $prep_statement->fetchAll(PDO::FETCH_KEY_PAIR); - unset($prep_statement); - - //process the array - foreach ($vendors as $vendor) { - //check if vendor is already in the database - $device_vendor_uuid=array_search($vendor['name'], $db_vendors); - if(!$device_vendor_uuid) { - //add vendor to the database - $device_vendor_uuid = uuid(); - $sql = "insert into v_device_vendors (device_vendor_uuid, name, enabled) "; - $sql .= "values (?, ?, 'true');"; + //get the groups and create an array to use the name to get the uuid + $sql = "select * from v_groups; "; $prep_statement = $db->prepare($sql); - $prep_statement->bindValue(1, $device_vendor_uuid); - $prep_statement->bindValue(2, $vendor['name']); $prep_statement->execute(); + $groups = $prep_statement->fetchAll(PDO::FETCH_ASSOC); unset($prep_statement); - } - - //get list of functions for vendor - $prep_statement = $db->prepare("select device_vendor_function_uuid, name from v_device_vendor_functions where device_vendor_uuid = ?;"); - $prep_statement->bindValue(1, $device_vendor_uuid); - $prep_statement->execute(); - $db_vendor_functions = $prep_statement->fetchAll(PDO::FETCH_KEY_PAIR); - unset($prep_statement); - - //add the vendor functions - foreach ($vendor['functions'] as $function) { - //check if function already exists - $device_vendor_function_uuid=array_search($function['name'], $db_vendor_functions); - if (!$device_vendor_function_uuid) { - //add the device vendor funtction - $device_vendor_function_uuid = uuid(); - $sql = "insert into v_device_vendor_functions (device_vendor_uuid, device_vendor_function_uuid, name, value, enabled, description) "; - $sql .= "values ( ?, ?, ?, ?, 'true', ?);"; - $prep_statement = $db->prepare($sql); - $prep_statement->bindValue(1, $device_vendor_uuid); - $prep_statement->bindValue(2, $device_vendor_function_uuid); - $prep_statement->bindValue(3, $function['name']); - $prep_statement->bindValue(4, $function['value']); - $prep_statement->bindValue(5, $function['description']); - $prep_statement->execute(); - unset($prep_statement); - } - - //add the device vendor function groups - if (is_array($function['groups'])) { - //get list of function groups for vendor - $prep_statement = $db->prepare("select device_vendor_function_group_uuid, group_name from v_device_vendor_function_groups where device_vendor_uuid = ? and device_vendor_function_uuid = ?;"); - $prep_statement->bindValue(1, $device_vendor_uuid); - $prep_statement->execute(); - $db_vendor_function_groups = $prep_statement->fetchAll(PDO::FETCH_KEY_PAIR); - unset($prep_statement); - - foreach ($function['groups'] as $group_name) { - if (!array_search($group_name, $db_vendor_function_groups)) { - $sql = "insert into v_device_vendor_function_groups "; - $sql .= "(device_vendor_function_group_uuid, device_vendor_function_uuid, device_vendor_uuid, group_uuid) "; - $sql .= "values (?,?,?,?,?)"; - $prep_statement = $db->prepare($sql); - $prep_statement->bindValue(1, uuid()); - $prep_statement->bindValue(2, $device_vendor_function_uuid); - $prep_statement->bindValue(3, $device_vendor_uuid); - $prep_statement->bindValue(5, $group_uuids[$group_name]); - $prep_statement->execute(); - unset($prep_statement); - } + foreach ($groups as $row) { + if ($row['domain_uuid'] == '') { + $group_uuids[$row['group_name']] = $row['group_uuid']; } } - } - } + //process the array + foreach ($vendors as $vendor) { + //insert the data into the database + $device_vendor_uuid = uuid(); + $sql = "insert into v_device_vendors "; + $sql .= "("; + $sql .= "device_vendor_uuid, "; + $sql .= "name, "; + $sql .= "enabled "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".$device_vendor_uuid."', "; + $sql .= "'".$vendor['name']."', "; + $sql .= "'true' "; + $sql .= ");"; + //echo $sql."\n"; + $db->exec(check_sql($sql)); + unset($sql); + + //add the vendor functions + foreach ($vendor['functions'] as $function) { + //get the id + $device_vendor_function_uuid = uuid(); + //add the device vendor funtction + $sql = "insert into v_device_vendor_functions "; + $sql .= "("; + $sql .= "device_vendor_uuid, "; + $sql .= "device_vendor_function_uuid, "; + //$sql .= "label, "; + $sql .= "name, "; + $sql .= "value, "; + $sql .= "enabled, "; + $sql .= "description "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".$device_vendor_uuid."', "; + $sql .= "'".$device_vendor_function_uuid."', "; + //$sql .= "'".$function['label']."', "; + $sql .= "'".$function['name']."', "; + $sql .= "'".$function['value']."', "; + $sql .= "'true', "; + $sql .= "'".$function['description']."' "; + $sql .= ");"; + //echo $sql."\n"; + $db->exec(check_sql($sql)); + unset($sql); + + //add the device vendor function groups + if (is_array($function['groups'])) { + $sql = "insert into v_device_vendor_function_groups "; + $sql .= "("; + $sql .= "device_vendor_function_group_uuid, "; + $sql .= "device_vendor_function_uuid, "; + $sql .= "device_vendor_uuid, "; + $sql .= "group_name, "; + $sql .= "group_uuid "; + $sql .= ") "; + $sql .= "values "; + $i = 0; + foreach ($function['groups'] as $group_name) { + if ($i == 0) { $sql .= "("; } else { $sql .= ",("; } + $sql .= "'".uuid()."', "; + $sql .= "'".$device_vendor_function_uuid."', "; + $sql .= "'".$device_vendor_uuid."', "; + $sql .= "'$group_name', "; + $sql .= "'".$group_uuids[$group_name]."' "; + $sql .= ")"; + $i++; + } + $db->exec($sql); + } + } + } + + } //if num_rows } // if prep_statement } - ?>