api.annoyance.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /**
  3. * Warm/Cold calls tasks generation class
  4. */
  5. /**
  6. * TODO:
  7. * - users filtering
  8. * - smszilla calllists filtering
  9. * - saving results as separate annoy-reports
  10. * - extend management permissions?
  11. * - calling report via stigmata engine
  12. */
  13. class Annoyance {
  14. /**
  15. * Contains system alter config as key=>value
  16. *
  17. * @var array
  18. */
  19. protected $altCfg = array();
  20. /**
  21. * Contains internet users data as login=>stgUserdata
  22. *
  23. * @var array
  24. */
  25. protected $allUsers = array();
  26. /**
  27. * Contains extended cached users data as login=>data
  28. *
  29. * @var array
  30. */
  31. protected $allUserData = array();
  32. /**
  33. * Contains available tariffs array as tariffname=>tariffData
  34. *
  35. * @var array
  36. */
  37. protected $allTariffs = array();
  38. /**
  39. * Contains available tariffs as tariffname=>tariffname
  40. *
  41. * @var array
  42. */
  43. protected $allTariffNames = array();
  44. /**
  45. * Contains available user extended mobiles data as login=>mobiles arr
  46. *
  47. * @var array
  48. */
  49. protected $mobilesExt = array();
  50. //routes, URLs, etc...
  51. const URL_ME = '?module=report_annoyance';
  52. const PROUTE_FILTERUSERS = 'runusersannoying';
  53. const PROUTE_TARIFF_FILTER = 'userstarifffilter';
  54. const PROUTE_ACTIVE_FILTER = 'useractivefilter';
  55. /**
  56. * Creates new report instance
  57. */
  58. public function __construct() {
  59. $this->loadAlter();
  60. $this->loadUserData();
  61. $this->loadTariffs();
  62. $this->loadMobilesExt();
  63. }
  64. /**
  65. * Preloads required configs for further usage
  66. *
  67. * @global object $ubillingConfig
  68. *
  69. * @return void
  70. */
  71. protected function loadAlter() {
  72. global $ubillingConfig;
  73. $this->altCfg = $ubillingConfig->getAlter();
  74. }
  75. /**
  76. * Loads users additional mobiles from database
  77. *
  78. * @return void
  79. */
  80. protected function loadMobilesExt() {
  81. if ($this->altCfg['MOBILES_EXT']) {
  82. $mobilesExt = new MobilesExt();
  83. $this->mobilesExt = $mobilesExt->getAllUsersMobileNumbers();
  84. }
  85. }
  86. /**
  87. * Loads available users data from database into protected props
  88. *
  89. * @return void
  90. */
  91. protected function loadUserData() {
  92. $this->allUsers = zb_UserGetAllStargazerDataAssoc();
  93. $this->allUserData = zb_UserGetAllDataCache();
  94. }
  95. /**
  96. * Loads available tariffs data from database
  97. *
  98. * @return void
  99. */
  100. protected function loadTariffs() {
  101. $this->allTariffs = zb_TariffGetAllData();
  102. if (!empty($this->allTariffs)) {
  103. foreach ($this->allTariffs as $io => $each) {
  104. $this->allTariffNames[$each['name']] = $each['name'];
  105. }
  106. }
  107. }
  108. /**
  109. * Returns form with some existing users filters
  110. *
  111. * @return string
  112. */
  113. public function renderUsersFilterForm() {
  114. $result = '';
  115. $inputs = wf_HiddenInput(self::PROUTE_FILTERUSERS, 'true');
  116. $tariffsArr = array('' => __('Any'));
  117. $tariffsArr += $this->allTariffNames;
  118. $inputs .= wf_Selector(self::PROUTE_TARIFF_FILTER, $tariffsArr, __('Tariff'), ubRouting::post(self::PROUTE_TARIFF_FILTER), false) . ' ';
  119. $inputs .= wf_CheckInput(self::PROUTE_ACTIVE_FILTER, __('User is active'), false, ubRouting::post(self::PROUTE_ACTIVE_FILTER)) . ' ';
  120. $inputs .= wf_Submit('Search');
  121. $result .= wf_Form('', 'POST', $inputs, 'glamour');
  122. return($result);
  123. }
  124. /**
  125. * Performs filtering of existing userbase
  126. *
  127. * @return string
  128. */
  129. public function runUsersFilter() {
  130. $result = '';
  131. if (!empty($this->allUserData)) {
  132. }
  133. return($result);
  134. }
  135. }