PageRenderTime 43ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/clients/controller/backend/notification/notification.php

https://gitlab.com/vanthanhhoh/devlovebook
PHP | 195 lines | 181 code | 12 blank | 2 comment | 57 complexity | 9101ade4af52944a8625d9651da537c5 MD5 | raw file
  1. <?php
  2. class notification extends Controller {
  3. public $NodeTypeName;
  4. public function __construct() {
  5. $this->NodeTypeName = 'notification';
  6. }
  7. public function Main() {
  8. require(CONTROLLER_PATH . Boot::$ControllerGroup . 'notification' . DIRECTORY_SEPARATOR . 'notification_ListRows.php');
  9. }
  10. public function AddNode() {
  11. Theme::UseJquery();
  12. Theme::JsFooter('AddNodeLib', APPLICATION_DATA_DIR . 'static/Node/add.js');
  13. $NodeID = 0;
  14. $FormValue = array();
  15. if(isset(G::$Registry['Params'][ROUTER_EXTRA_KEY])) {
  16. $NodeID = G::$Registry['Params'][ROUTER_EXTRA_KEY];
  17. $GetNode = DB::Query('notification')->Where('notification_id', '=', $NodeID)->Get();
  18. if($GetNode->num_rows == 1) {
  19. $FormValue = $GetNode->Result[0];
  20. DB::Query('notification')->Where('notification_id', '=', $NodeID)->Update(array('editing_id' => USER_ID));
  21. }
  22. else $NodeID = 0;
  23. }
  24. $FV = $this->SaveNodeAction($NodeID, $FormValue);
  25. if(!empty($FV)) $FormValue = array_merge($FormValue, $FV);
  26. $this->UseCssComponents('Glyphicons,Buttons,Labels,InputGroups');
  27. $Fields = array('title' => array('value' => isset($FormValue['title']) ? $FormValue['title'] : ''),'content' => array('value' => isset($FormValue['content']) ? $FormValue['content'] : ''),'receiver' => array('value' => isset($FormValue['receiver']) ? $FormValue['receiver'] : ''));
  28. $User = DB::Query('users')->Columns('userid,email')->Get()->Result;
  29. Backend::$NodeSettings['status'] = isset($FormValue['status']) ? $FormValue['status'] : 1;
  30. Backend::$NodeSettings['priority'] = isset($FormValue['priority']) ? $FormValue['priority'] : 0;
  31. Backend::$NodeSettings['schedule'] = Filter::UnixTimeToDate(isset($FormValue['schedule']) ? $FormValue['schedule'] : 0);
  32. Backend::$NodeSettings['exprired'] = Filter::UnixTimeToDate(isset($FormValue['exprired']) ? $FormValue['exprired'] : 0);
  33. if(isset($FormValue['node_settings'])) Backend::$NodeSettings['extra'] = $FormValue['node_settings'];
  34. ob_start();
  35. echo '<form class="form-horizontal" action="" method="post">';
  36. echo '<input type="hidden" name="SaveNodeSubmit" value="1"/>';
  37. echo '<input type="hidden" name="NodeID" value="' . $NodeID . '"/>';
  38. include Form::$CompiledPath . 'Controller_notification_InsertNode.php';
  39. echo '<div class="clearfix"></div><div class="clearfix" style="text-align:center;margin:10px 0 15px 0"><input type="submit" class="btn btn-primary" value="Save"/></div>';
  40. echo '</form>';
  41. $Form = ob_get_clean();
  42. $this->Render($Form);
  43. }
  44. public function Action() {
  45. $action = Input::Post('action');
  46. $ids = Input::Post('ids');
  47. $ids = array_filter(explode(',', $ids));
  48. $ids = array_map('intval', $ids);
  49. $rt = array('status' => 'not');
  50. if($action == 'deactive') {
  51. $Deactive = DB::Query('notification')->Where('notification_id', 'IN', $ids)->Update(array('status' => 0));
  52. if($Deactive->status) $rt = array('status' => 'ok', 'items' => $ids);
  53. }
  54. if($action == 'active') {
  55. $Deactive = DB::Query('notification')->Where('notification_id', 'IN', $ids)->Update(array('status' => 1));
  56. if($Deactive->status) $rt = array('status' => 'ok', 'items' => $ids);
  57. }
  58. if($action == 'delete') {
  59. $Deactive = DB::Query('notification')->Where('notification_id', 'IN', $ids)->Delete();
  60. if($Deactive->status) $rt = array('status' => 'ok', 'items' => $ids);
  61. }
  62. echo json_encode($rt);
  63. die();
  64. }
  65. public function RemoveNode() {
  66. $NodeID = 0;
  67. if(isset(G::$Registry['Params'][ROUTER_EXTRA_KEY])) {
  68. $NodeID = G::$Registry['Params'][ROUTER_EXTRA_KEY];
  69. $GetNode = DB::Query('notification')->Where('notification_id', '=', $NodeID)->Get();
  70. if($GetNode->num_rows == 0)
  71. return Helper::Notify('error', 'Node not found');
  72. }
  73. if(Input::Post('RemoveNodeSubmit') == 1) {
  74. $DeleteNode = DB::Query('notification')->Where('notification_id', '=', $NodeID)->Delete();
  75. if($DeleteNode->affected_rows == 1) {
  76. Helper::Notify('success', 'Success delete node ' . $GetNode->Result[0]['title']);
  77. Header('Refresh: 1.5; url=' . Router::Generate('Controller', array('controller' => 'notification')));
  78. }
  79. else Helper::Notify('error', 'Error delete node ' . $GetNode->Result[0]['title']);
  80. }
  81. else {
  82. $config = array('action' => Router::GenerateThisRoute(),
  83. 'tokens' => array(array('name' => 'NodeID', 'value' => $NodeID), array('name' => 'RemoveNodeSubmit', 'value' => 1))
  84. );
  85. $v = Access::Confirm('Confirm remove node: ' . $GetNode->Result[0]['title'], $config);
  86. $this->Render($v);
  87. }
  88. }
  89. public function SaveNodeAction($RealNodeID, $OldFormValue = array()) {
  90. if(Input::Post('SaveNodeSubmit') == 1) {
  91. $FormValue = Input::Post('Field');
  92. if(!isset($FormValue['title']) || $FormValue['title'] == '')
  93. Helper::Notify('error', 'Tiêu đề không thể để trống');
  94. if(!isset($FormValue['content']) || $FormValue['content'] == '')
  95. Helper::Notify('error', 'Nội dung thông báo không thể để trống');
  96. if(isset($FormValue['receiver']))
  97. $FormValue['receiver'] = implode(',', $FormValue['receiver']);
  98. $FormValue['schedule'] = Filter::DateToUnixTime($FormValue['schedule']['date'], $FormValue['schedule']['hour'], $FormValue['schedule']['minute']);
  99. if($FormValue['schedule'] < CURRENT_TIME) $FormValue['schedule'] = CURRENT_TIME;
  100. $FormValue['exprired'] = Filter::DateToUnixTime($FormValue['exprired']['date'], $FormValue['exprired']['hour'], $FormValue['exprired']['minute']);
  101. if($FormValue['exprired'] < CURRENT_TIME) $FormValue['exprired'] = 0;
  102. $FormValue['node_settings'] = Backend::BuildNodePermission(Input::Post('VNP_Settings'));
  103. if(Helper::NotifyCount('error') == 0) {
  104. $NodeID = Input::Post('NodeID');
  105. if(empty($NodeID)) {
  106. $CheckUnique = array();
  107. $NodeExisted = false;
  108. if(!$NodeExisted) {
  109. $FormValue['lang'] = LANG;
  110. $FormValue['user_id'] = USER_ID;
  111. $FormValue['last_edit_id'] = USER_ID;
  112. $FormValue['add_time'] = CURRENT_TIME;
  113. $FormValue['edit_time'] = CURRENT_TIME;
  114. $NodeQuery = DB::Query('notification')->Insert($FormValue);
  115. if($NodeQuery->status && $NodeQuery->insert_id > 0) {
  116. $User = DB::Query('users')->Columns('userid,email')->Get('userid')->Result;
  117. if($FormValue['receiver']==-1){
  118. foreach($User as $id => $item){
  119. if($id>1){
  120. $message = array(
  121. 'to_id'=> $id,
  122. 'content'=>$FormValue['content'],
  123. 'add_time'=>CURRENT_TIME,
  124. 'status'=>0
  125. );
  126. $insert = DB::Query('message')->Insert($message);
  127. if($insert->status && $insert->insert_id>0){
  128. $file = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'clients'.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'log'.DIRECTORY_SEPARATOR."notification.log";
  129. $fh = fopen($file,'a');
  130. fwrite($fh,"Gui thanh cong thong bao :". $FormValue['title']." toi thanh vien: ". $item['email']. " vao luc:".date('h:s d/m/y'));
  131. fwrite($fh,"\r\n");
  132. fclose($fh);
  133. }
  134. }
  135. }
  136. }
  137. else {
  138. $receiver = explode(',',$FormValue['receiver']);
  139. foreach($receiver as $rItem){
  140. $message = array(
  141. 'to_id'=> $rItem,
  142. 'content'=>$FormValue['content'],
  143. 'add_time'=>CURRENT_TIME,
  144. 'status'=>0
  145. );
  146. $insert = DB::Query('message')->Insert($message);
  147. if($insert->status && $insert->insert_id>0){
  148. $file = $_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.'clients'.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'log'.DIRECTORY_SEPARATOR."notification.log";
  149. $fh = fopen($file,'a');
  150. fwrite($fh,"Gui thanh cong thong bao :". $FormValue['title']." toi thanh vien: ". $User[$rItem]['email']. " vao luc:".date('h:s d/m/y'));
  151. fwrite($fh,"\r\n");
  152. fclose($fh);
  153. }
  154. }
  155. }
  156. Helper::Notify('success', 'Successful add node in Thông báo');
  157. }
  158. else Helper::Notify('error', 'Cannot add node in Thông báo');
  159. }
  160. else Helper::Notify('error', 'Cannot add node in Thông báo. Be sure that <em></em> didn\'t existed!');
  161. }
  162. else {
  163. //$CheckExisted = DB::Query('notification')->Where('notification_id', '=', $NodeID)->Get();
  164. //if($CheckExisted->num_rows == 1) {
  165. if($RealNodeID == $NodeID) {
  166. $FormValue['last_edit_id'] = USER_ID;
  167. $FormValue['edit_time'] = CURRENT_TIME;
  168. $FormValue['editing_id'] = 0;
  169. $NodeQuery = DB::Query('notification')->Where('notification_id', '=', $NodeID)->Update($FormValue);
  170. if($NodeQuery->status && $NodeQuery->affected_rows > 0) {
  171. Helper::Notify('success', 'Successful update node in Thông báo');
  172. }
  173. else Helper::Notify('error', 'Cannot update node in Thông báo');
  174. }
  175. else {
  176. Helper::Notify('error', 'Cannot update, Node not found!');
  177. }
  178. }
  179. }
  180. return $FormValue;
  181. }
  182. }
  183. }