/modules/dbndir-1.0/libraries/drivers/freeswitch/dbndir.php

https://github.com/robertleeplummerjr/bluebox · PHP · 134 lines · 111 code · 23 blank · 0 comment · 62 complexity · af9d79bc26cad65d70aa6c157be545fb MD5 · raw file

  1. <?php defined('SYSPATH') or die('No direct access allowed.');
  2. class FreeSwitch_dbndir_Driver extends FreeSwitch_Base_Driver
  3. {
  4. public static function set($dbnData)
  5. {
  6. if ($dbnData instanceof Dbndir)
  7. {
  8. $xml = Telephony::getDriver()->xml;
  9. $root = '//document/section[@name="configuration"]/configuration[@name="directory.conf"][@description="Directory"]';
  10. $xml->setXmlRoot($root);
  11. $updatestr = '/settings';
  12. $xml->update($updatestr);
  13. $root = '//document/section[@name="configuration"]/configuration[@name="directory.conf"][@description="Directory"]/profiles/profile[@name="dbnprofile_' . $dbnData->dbn_id . '"]';
  14. $xml->setXmlRoot($root);
  15. if (isset($dbnData->dbn_max_menu_attempts) && !empty($dbnData->dbn_max_menu_attempts) && $dbnData->dbn_max_menu_attempts != '')
  16. $updatestr = '/param[@name="max-menu-attempts"]{@value="' . $dbnData->dbn_max_menu_attempts . '"}';
  17. else
  18. $updatestr = '/param[@name="max-menu-attempts"]{@value="3"}';
  19. Kohana::log('debug', $updatestr);
  20. $xml->update($updatestr);
  21. if (isset($dbnData->dbn_min_search_digits) && !empty($dbnData->dbn_min_search_digits) && $dbnData->dbn_min_search_digits != '')
  22. $updatestr = '/param[@name="min-search-digits"]{@value="' . $dbnData->dbn_min_search_digits . '"}';
  23. else
  24. $updatestr = '/param[@name="min-search-digits"]{@value="3"}';
  25. $xml->update($updatestr);
  26. if (isset($dbnData->dbn_terminator_key) && !empty($dbnData->dbn_terminator_key) && $dbnData->dbn_terminator_key != '')
  27. $updatestr = '/param[@name="terminator-key"]{@value="' . $dbnData->dbn_terminator_key . '"}';
  28. else
  29. $updatestr = '/param[@name="terminator-key"]{@value="#"}';
  30. $xml->update($updatestr);
  31. if (isset($dbnData->dbn_digit_timeout) && !empty($dbnData->dbn_digit_timeout) && $dbnData->dbn_digit_timeout != '')
  32. $updatestr = '/param[@name="digit-timeout"]{@value="' . $dbnData->dbn_digit_timeout . '"}';
  33. else
  34. $updatestr = '/param[@name="digit-timeout"]{@value="3000"}';
  35. $xml->update($updatestr);
  36. if (isset($dbnData->dbn_max_result) && !empty($dbnData->dbn_max_result) && $dbnData->dbn_max_result != '')
  37. $updatestr = '/param[@name="max-result"]{@value="' . $dbnData->dbn_max_result . '"}';
  38. else
  39. $updatestr = '/param[@name="max-result"]{@value="5"}';
  40. $xml->update($updatestr);
  41. if (isset($dbnData->dbn_next_key) && !empty($dbnData->dbn_next_key) && $dbnData->dbn_next_key != '')
  42. $updatestr = '/param[@name="next-key"]{@value="' . $dbnData->dbn_next_key . '"}';
  43. else
  44. $updatestr = '/param[@name="next-key"]{@value="6"}';
  45. $xml->update($updatestr);
  46. if (isset($dbnData->dbn_prev_key) && !empty($dbnData->dbn_prev_key) && $dbnData->dbn_prev_key != '')
  47. $updatestr = '/param[@name="prev-key"]{@value="' . $dbnData->dbn_prev_key . '"}';
  48. else
  49. $updatestr = '/param[@name="prev-key"]{@value="4"}';
  50. $xml->update($updatestr);
  51. if (isset($dbnData->dbn_switch_order_key) && !empty($dbnData->dbn_switch_order_key) && $dbnData->dbn_switch_order_key != '')
  52. $updatestr = '/param[@name="switch-order-key"]{@value="' . $dbnData->dbn_switch_order_key . '"}';
  53. else
  54. $updatestr = '/param[@name="switch-order-key"]{@value="*"}';
  55. $xml->update($updatestr);
  56. if (isset($dbnData->dbn_select_name_key) && !empty($dbnData->dbn_select_name_key) && $dbnData->dbn_select_name_key != '')
  57. $updatestr = '/param[@name="select-name-key"]{@value="' . $dbnData->dbn_select_name_key . '"}';
  58. else
  59. $updatestr = '/param[@name="select-name-key"]{@value="1"}';
  60. $xml->update($updatestr);
  61. if (isset($dbnData->dbn_new_search_key) && !empty($dbnData->dbn_new_search_key) && $dbnData->dbn_new_search_key != '')
  62. $updatestr = '/param[@name="new-search-key"]{@value="' . $dbnData->dbn_new_search_key . '"}';
  63. else
  64. $updatestr = '/param[@name="new-search-key"]{@value="3"}';
  65. $xml->update($updatestr);
  66. if (isset($dbnData->dbn_search_order) && !empty($dbnData->dbn_search_order) && $dbnData->dbn_search_order != '')
  67. $updatestr = '/param[@name="search-order"]{@value="' . $dbnData->dbn_search_order . '"}';
  68. else
  69. $updatestr = '/param[@name="search-order"]{@value="last_name"}';
  70. $xml->update($updatestr);
  71. }
  72. else if($dbnData instanceof Device)
  73. {
  74. $dbndir = $dbnData['plugins']['dbndir'];
  75. $domain = '$${location_' .$dbnData['User']['location_id'] .'}';
  76. $xml = FreeSwitch::setSection('user', $domain, $dbnData['device_id']);
  77. if (isset($dbndir['full_name']) && !empty($dbndir['full_name']) && $dbndir['full_name'] != '')
  78. {
  79. $xml->update('/variables/variable[@name="directory_full_name"]{@value="' . $dbndir['full_name'] . '"}');
  80. } else {
  81. $username = $dbnData->User->first_name . ' ' . $dbnData->User->last_name;
  82. $xml->update('/variables/variable[@name="directory_full_name"]{@value="' . $username . '"}');
  83. }
  84. if (isset($dbndir['visible']) && !empty($dbndir['visible']) && $dbndir['visible'] != '')
  85. {
  86. $xml->update('/params/param[@name="directory-visible"]{@value="True"}');
  87. } else {
  88. $xml->update('/params/param[@name="directory-visible"]{@value="False"}');
  89. }
  90. if (isset($dbndir['announce_ext']) && !empty($dbndir['announce_ext']) && $dbndir['announce_ext'] != '')
  91. {
  92. $xml->update('/params/param[@name="directory-exten-visible"]{@value="True"}');
  93. } else {
  94. $xml->update('/params/param[@name="directory-exten-visible"]{@value="False"}');
  95. }
  96. }
  97. }
  98. public static function delete($dbnData)
  99. {
  100. $xml = Telephony::getDriver()->xml;
  101. $root = '//document/section[@name="configuration"]/configuration[@name="directory.conf"][@description="Directory"]/profiles/';
  102. $xml->setXmlRoot($root);
  103. $xml->deleteNode('/profile[@name="dbnprofile_' . $dbnData->dbn_id . '"]');
  104. }
  105. public static function dialplan($Number)
  106. {
  107. $xml = Telephony::getDriver()->xml;
  108. $xmlText = '<action application="directory" data="dbnprofile_' . $Number['Destination']['dbn_id'] . ' $${location_' . $Number->Location->location_id . '} context_' . $Number['dialplan']['dbndir']['trancontextid'] . '"/>';
  109. $xml->replaceWithXml($xmlText);
  110. }
  111. }