diff --git a/app/devices/app_config.php b/app/devices/app_config.php index 2d36c958f3..1b7ae8a6ab 100644 --- a/app/devices/app_config.php +++ b/app/devices/app_config.php @@ -706,7 +706,6 @@ $apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "group_uuid"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; - //vendor details $y=0; //vendor array index $z=0; //functions array index @@ -1190,6 +1189,18 @@ $y++; //vendors array index $z=0; //functions array index $vendors[$y]['name'] = "aastra"; + $vendors[$y]['functions'][$z]['label'] = "label-none"; + $vendors[$y]['functions'][$z]['name'] = "none"; + $vendors[$y]['functions'][$z]['value'] = "none"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-empty"; + $vendors[$y]['functions'][$z]['name'] = "empty"; + $vendors[$y]['functions'][$z]['value'] = "empty"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; $vendors[$y]['functions'][$z]['label'] = "label-blf"; $vendors[$y]['functions'][$z]['name'] = "blf"; $vendors[$y]['functions'][$z]['value'] = "blf"; @@ -1202,29 +1213,143 @@ $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; $vendors[$y]['functions'][$z]['groups'][] = "admin"; $z++; + $vendors[$y]['functions'][$z]['label'] = "label-blf_list"; + $vendors[$y]['functions'][$z]['name'] = "blf_list"; + $vendors[$y]['functions'][$z]['value'] = "list"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; $vendors[$y]['functions'][$z]['label'] = "label-callers"; $vendors[$y]['functions'][$z]['name'] = "callers"; $vendors[$y]['functions'][$z]['value'] = "callers"; $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; $vendors[$y]['functions'][$z]['groups'][] = "admin"; $z++; + $vendors[$y]['functions'][$z]['label'] = "label-callforward"; + $vendors[$y]['functions'][$z]['name'] = "callforward"; + $vendors[$y]['functions'][$z]['value'] = "callforward"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-conf"; + $vendors[$y]['functions'][$z]['name'] = "conf"; + $vendors[$y]['functions'][$z]['value'] = "conf"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; $vendors[$y]['functions'][$z]['label'] = "label-dnd"; $vendors[$y]['functions'][$z]['name'] = "dnd"; $vendors[$y]['functions'][$z]['value'] = "dnd"; $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; $vendors[$y]['functions'][$z]['groups'][] = "admin"; $z++; + $vendors[$y]['functions'][$z]['label'] = "label-directory"; + $vendors[$y]['functions'][$z]['name'] = "directory"; + $vendors[$y]['functions'][$z]['value'] = "directory"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-flash"; + $vendors[$y]['functions'][$z]['name'] = "flash"; + $vendors[$y]['functions'][$z]['value'] = "flash"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-filter"; + $vendors[$y]['functions'][$z]['name'] = "filter"; + $vendors[$y]['functions'][$z]['value'] = "filter"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-icom"; + $vendors[$y]['functions'][$z]['name'] = "icom"; + $vendors[$y]['functions'][$z]['value'] = "icom"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-lcr"; + $vendors[$y]['functions'][$z]['name'] = "lcr"; + $vendors[$y]['functions'][$z]['value'] = "lcr"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-line"; + $vendors[$y]['functions'][$z]['name'] = "line"; + $vendors[$y]['functions'][$z]['value'] = "line"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-page"; + $vendors[$y]['functions'][$z]['name'] = "page"; + $vendors[$y]['functions'][$z]['value'] = "paging"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-park"; + $vendors[$y]['functions'][$z]['name'] = "park"; + $vendors[$y]['functions'][$z]['value'] = "park"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-phonelock"; + $vendors[$y]['functions'][$z]['name'] = "phonelock"; + $vendors[$y]['functions'][$z]['value'] = "phonelock"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-pickup"; + $vendors[$y]['functions'][$z]['name'] = "pickup"; + $vendors[$y]['functions'][$z]['value'] = "pickup"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-redail"; + $vendors[$y]['functions'][$z]['name'] = "redail"; + $vendors[$y]['functions'][$z]['value'] = "redail"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-sprecode"; + $vendors[$y]['functions'][$z]['name'] = "sprecode"; + $vendors[$y]['functions'][$z]['value'] = "sprecode"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; $vendors[$y]['functions'][$z]['label'] = "label-speed_dial"; $vendors[$y]['functions'][$z]['name'] = "speed_dial"; $vendors[$y]['functions'][$z]['value'] = "speeddial"; $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; $vendors[$y]['functions'][$z]['groups'][] = "admin"; $z++; + $vendors[$y]['functions'][$z]['label'] = "label-speed_dial_xfer"; + $vendors[$y]['functions'][$z]['name'] = "speed_dial_xfer"; + $vendors[$y]['functions'][$z]['value'] = "speeddialxfer"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-speed_dial_conf"; + $vendors[$y]['functions'][$z]['name'] = "speed_dial_conf"; + $vendors[$y]['functions'][$z]['value'] = "speeddialconf"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-speed_dial_mwi"; + $vendors[$y]['functions'][$z]['name'] = "speed_dial_mwi"; + $vendors[$y]['functions'][$z]['value'] = "speeddialmwi"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; $vendors[$y]['functions'][$z]['label'] = "label-xfer"; $vendors[$y]['functions'][$z]['name'] = "xfer"; $vendors[$y]['functions'][$z]['value'] = "xfer"; $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; $vendors[$y]['functions'][$z]['groups'][] = "admin"; + $z++; + $vendors[$y]['functions'][$z]['label'] = "label-xml"; + $vendors[$y]['functions'][$z]['name'] = "xml"; + $vendors[$y]['functions'][$z]['value'] = "xml"; + $vendors[$y]['functions'][$z]['groups'][] = "superadmin"; + $vendors[$y]['functions'][$z]['groups'][] = "admin"; $y++; //vendors array index $z=0; //functions array index diff --git a/app/devices/app_defaults.php b/app/devices/app_defaults.php index 4596dded76..172cfd296d 100644 --- a/app/devices/app_defaults.php +++ b/app/devices/app_defaults.php @@ -50,108 +50,93 @@ if ($domains_processed == 1) { } unset($device_keys, $sql); - //add device vendor functions to the database - $sql = "select count(*) as num_rows from v_device_vendors; "; - $prep_statement = $db->prepare($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;"); if ($prep_statement) { $prep_statement->execute(); - $row = $prep_statement->fetch(PDO::FETCH_ASSOC); - if ($row['num_rows'] == 0) { + $db_vendors = $prep_statement->fetchAll(PDO::FETCH_KEY_PAIR); + unset($prep_statement); - //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 * from v_groups; "; + //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');"; $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); - foreach ($groups as $row) { - if ($row['domain_uuid'] == '') { - $group_uuids[$row['group_name']] = $row['group_uuid']; + } + + //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); + } } } + } + } - //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 }