provision_list.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // FusionPBX Upgrade script used to upgrade from 3.2 to 3.3 for those using provisioning in FusionPBX.
  2. // Purpose of this script is to move provisioning assignments that tie a device to an extension
  3. // FusionPBX 3.2 and older used provisioning_list a delimitted list in v_extensions.
  4. // FusionPBX 3.3 and higher use v_device_extensions to assign the device to the extension
  5. // Use this script only one time.
  6. //get the assigned extensions from the provisioning_list
  7. $sql = "select * from v_extensions where provisioning_list <> '' ";
  8. $prep_statement = $db->prepare(check_sql($sql));
  9. $prep_statement->execute();
  10. $result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
  11. $result_count = count($result);
  12. unset ($prep_statement, $sql);
  13. if ($result_count > 0) {
  14. foreach($result as $row) {
  15. $domain_uuid = $row['domain_uuid'];
  16. $extension_uuid = $row['extension_uuid'];
  17. $provisioning_list = $row['provisioning_list'];
  18. if (strlen($provisioning_list) > 1) {
  19. //get the array from the provisioning list
  20. $provision_array = explode("|", $provisioning_list);
  21. //process each device
  22. foreach($provision_array as $provision_row) {
  23. //get the mac address
  24. if (strlen($provision_row) > 0) {
  25. $device_array = explode(":", $provision_row);
  26. $mac_address = $device_array[0];
  27. $device_line = $device_array[1];
  28. }
  29. //normalize the mac address
  30. $mac_address = strtolower($mac_address);
  31. $mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address);
  32. //add the device to device extensions
  33. if (strlen($mac_address) > 0) {
  34. //get the device_uuid using the mac address from devices
  35. $sql = "select device_uuid from v_devices ";
  36. $sql .= "where domain_uuid = '".$domain_uuid."' ";
  37. $sql .= "and device_mac_address = '".$mac_address."' ";
  38. $prep_statement = $db->prepare(check_sql($sql));
  39. $prep_statement->execute();
  40. $sub_result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
  41. foreach ($sub_result as &$field) {
  42. $device_uuid = $field["device_uuid"];
  43. }
  44. //set the uuid
  45. $device_extension_uuid = uuid();
  46. //set a default line number
  47. if (strlen($device_line) == 0) {
  48. $device_line = "1";
  49. }
  50. if (strlen($device_uuid) > 0) {
  51. $sql = "insert into v_device_extensions ";
  52. $sql .= "(";
  53. $sql .= "domain_uuid, ";
  54. $sql .= "device_extension_uuid, ";
  55. $sql .= "device_uuid, ";
  56. $sql .= "extension_uuid, ";
  57. $sql .= "device_line ";
  58. $sql .= ") ";
  59. $sql .= "values ";
  60. $sql .= "(";
  61. $sql .= "'$domain_uuid', ";
  62. $sql .= "'$device_extension_uuid', ";
  63. $sql .= "'$device_uuid', ";
  64. $sql .= "'$extension_uuid', ";
  65. $sql .= "'$device_line' ";
  66. $sql .= ");\n";
  67. echo $sql;
  68. $db->exec(check_sql($sql));
  69. unset($sql);
  70. }
  71. }
  72. //unset the variables
  73. unset($mac_address,$device_uuid,$device_line);
  74. }
  75. }
  76. }
  77. }