PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/point/point.model.php

http://xe-core.googlecode.com/
PHP | 195 lines | 140 code | 25 blank | 30 comment | 24 complexity | 51046f901b2930b285cf86b8a723498f MD5 | raw file
Possible License(s): LGPL-2.1, BSD-3-Clause
  1. <?php
  2. /**
  3. * @class pointModel
  4. * @author NHN (developers@xpressengine.com)
  5. * @brief The model class fo the point module
  6. */
  7. class pointModel extends point
  8. {
  9. var $pointList = array();
  10. /**
  11. * @brief Initialization
  12. */
  13. function init()
  14. {
  15. }
  16. /**
  17. * @brief Check if there is points information
  18. */
  19. function isExistsPoint($member_srl)
  20. {
  21. $member_srl = abs($member_srl);
  22. // Get from instance memory
  23. if($this->pointList[$member_srl]) return true;
  24. // Get from file cache
  25. $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl));
  26. $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl);
  27. if(file_exists($cache_filename))
  28. {
  29. if(!$this->pointList[$member_srl])
  30. $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename));
  31. return true;
  32. }
  33. $args =new stdClass();
  34. $args->member_srl = $member_srl;
  35. $output = executeQuery('point.getPoint', $args);
  36. if($output->data->member_srl == $member_srl)
  37. {
  38. if(!$this->pointList[$member_srl])
  39. $this->pointList[$member_srl] = (int)$output->data->point;
  40. return true;
  41. }
  42. return false;
  43. }
  44. /**
  45. * @brief Get the points
  46. */
  47. function getPoint($member_srl, $from_db = false)
  48. {
  49. $member_srl = abs($member_srl);
  50. // Get from instance memory
  51. if(!$from_db && $this->pointList[$member_srl]) return $this->pointList[$member_srl];
  52. // Get from file cache
  53. $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl));
  54. $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl);
  55. if(!$from_db && file_exists($cache_filename))
  56. return $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename));
  57. // Get from the DB
  58. $args =new stdClass();
  59. $args->member_srl = $member_srl;
  60. $output = executeQuery('point.getPoint', $args);
  61. if(isset($output->data->member_srl))
  62. {
  63. $point = (int)$output->data->point;
  64. $this->pointList[$member_srl] = $point;
  65. if(!is_dir($path)) FileHandler::makeDir($path);
  66. FileHandler::writeFile($cache_filename, $point);
  67. return $point;
  68. }
  69. return 0;
  70. }
  71. /**
  72. * @brief Get the level
  73. */
  74. function getLevel($point, $level_step)
  75. {
  76. $level_count = count($level_step);
  77. for($level=0;$level<=$level_count;$level++) if($point < $level_step[$level]) break;
  78. $level --;
  79. return $level;
  80. }
  81. function getMembersPointInfo()
  82. {
  83. $member_srls = Context::get('member_srls');
  84. $member_srls = explode(',',$member_srls);
  85. if(count($member_srls)==0) return;
  86. array_unique($member_srls);
  87. $oModuleModel = &getModel('module');
  88. $config = $oModuleModel->getModuleConfig('point');
  89. $info = array();
  90. foreach($member_srls as $v)
  91. {
  92. $obj = new stdClass;
  93. $obj->point = $this->getPoint($v);
  94. $obj->level = $this->getLevel($obj->point, $config->level_step);
  95. $obj->member_srl = $v;
  96. $info[] = $obj;
  97. }
  98. $this->add('point_info',$info);
  99. }
  100. /**
  101. * @brief Get a list of points members list
  102. */
  103. function getMemberList($args = null, $columnList = array())
  104. {
  105. // Arrange the search options
  106. $args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
  107. $args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
  108. $args->selected_group_srl = Context::get('selected_group_srl');
  109. $search_target = trim(Context::get('search_target'));
  110. $search_keyword = trim(Context::get('search_keyword'));
  111. // if search keyword is emtpy, show all list
  112. if(!$search_keyword)
  113. {
  114. unset($args->is_admin, $args->is_denied, $args->selected_group_srl, $search_target);
  115. }
  116. if($search_target && $search_keyword)
  117. {
  118. switch($search_target)
  119. {
  120. case 'user_id' :
  121. if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
  122. $args->s_user_id = $search_keyword;
  123. break;
  124. case 'user_name' :
  125. if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
  126. $args->s_user_name = $search_keyword;
  127. break;
  128. case 'nick_name' :
  129. if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
  130. $args->s_nick_name = $search_keyword;
  131. break;
  132. case 'email_address' :
  133. if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
  134. $args->s_email_address = $search_keyword;
  135. break;
  136. case 'regdate' :
  137. $args->s_regdate = $search_keyword;
  138. break;
  139. case 'last_login' :
  140. $args->s_last_login = $search_keyword;
  141. break;
  142. case 'extra_vars' :
  143. $args->s_extra_vars = $search_keyword;
  144. break;
  145. }
  146. }
  147. // If there is a selected_group_srl, change the "query id" (for table join)
  148. if($args->selected_group_srl)
  149. {
  150. $query_id = 'point.getMemberListWithinGroup';
  151. }
  152. else
  153. {
  154. $query_id = 'point.getMemberList';
  155. }
  156. $output = executeQuery($query_id, $args, $columnList);
  157. if($output->total_count)
  158. {
  159. $oModuleModel = &getModel('module');
  160. $config = $oModuleModel->getModuleConfig('point');
  161. foreach($output->data as $key => $val)
  162. {
  163. $output->data[$key]->level = $this->getLevel($val->point, $config->level_step);
  164. }
  165. }
  166. return $output;
  167. }
  168. }
  169. /* End of file point.model.php */
  170. /* Location: ./modules/point/point.model.php */