root/helpdesk.php

Revision 280, 8.2 kB (checked in by Nafania, 2 years ago)

Немного новых запросов к базе. Улучшен пхппшный аннонсер.
Правка мелких багов и добавление мелких фич.
Добавлена фича seo оптимизации, но убедительная просьба - не включать, ибо еще не до конца готово и поддержки я оказывать не буду.

Line 
1 <?php</span>
2 <span class="code-lang">$root_path = './';
3 require ($root_path . 'include/config.php');
4 require ($root_path . 'include/functions_post.php');
5
6 $userdata = session_pagestart($user_ip);
7 init_userprefs($userdata);
8 loggedinorreturn();
9
10 $action = request_var('action', '');</span>
11 <span class="code-lang">
12 switch ( $action ) {
13     case 'view_problems':
14         $id = request_var('id', 0);
15          if ( $userdata['class'] < UC_MODERATOR ) {
16             trigger_error($lang['access_denied']);
17          }
18          if ( $id ) {
19               $sql = 'SELECT h.*, u.name AS added_by_username, u2.name AS solved_by_username
20                     FROM ' . HELPDESK_TABLE . ' h, ' . USERS_TABLE . ' u, ' . USERS_TABLE . ' u2
21                     WHERE h.id = ' . $id . ' AND h.added_by = u.uid AND h.solved_by = u2.uid';
22             $result = $db->sql_query($sql);
23               if ( !$arr = $db->sql_fetchrow($result) ) {
24                   trigger_error(sprintf($lang['invalid_id'], $id));
25               }
26
27             if ( $arr['solved'] == 1 ) {
28                 $color = 'green';
29                 $text = $lang['yes'];
30             }
31             elseif ($arr['solved'] == 2) {
32                   $color = 'orange';
33                 $text = $lang['ignored'];
34             }
35             elseif (!$arr['solved']) {
36                 $color = 'red';
37                 $text = $lang['no'];
38             }
39
40             $answers_options = '';
41             foreach ( $lang['helpdesc_standart_answers'] AS $title => $answer ) {
42                     $answers_options .= '<option value="' . $answer . '">' . $title . '</option>';
43             }
44
45             $template->assign_vars(array(
46                     'S_FORM_ACTION' => append_sid('helpdesk.php?action=solve'),
47                     'U_USERDETAILS' => append_sid('userdetails.php?id=' . $arr['added_by']),
48                     'U_SOLVED_BY' => append_sid('userdetails.php?id='.$arr['solved_by']),
49                     'SOLVED_BY_NAME' => $arr['solved_by_username'],
50                     'SOLVED_COLOR' => $color,
51                     'SOLVED_TEXT' => $text,
52
53                     'SOLVED_DATE' => create_date($arr['solved_date']),
54                     'ID' => $id,
55                     'TITLE' => $arr['title'],
56                     'ADDED' => ( $arr['added'] ? create_date($arr['added']) : '' ),
57                     'ADDED_BY_NAME' => $arr['added_by_username'],
58                     'SOLVED_YES' => ( $arr['solved'] == 1? TRUE : '' ),
59                     'SOLVED_IGNORED' => ( $arr['solved'] == 2 ? TRUE : '' ),
60                     'SOLVED_NO' => ( !$arr['solved'] ? TRUE : '' ),
61                     'PROBLEM' => $arr['msg_problem'],
62                     'ANSWER' => $arr['msg_answer'],
63                     'ANSWERS_OPTIONS' => $answers_options
64             ));
65
66             $body = 'helpdesk_view_problem_details_body.html';
67         }
68
69         else {
70             $sql = 'SELECT h.*, u.name AS added_by_username, u2.name AS solved_by_username
71                     FROM ' . HELPDESK_TABLE . ' h
72                     LEFT JOIN users u2 ON h.solved_by = u2.uid,
73                     ' . USERS_TABLE . ' u
74                     WHERE h.added_by = u.uid
75                     ORDER BY h.added DESC';
76             $result = $db->sql_query($sql);
77
78             $template->assign_vars(array(
79                     'S_FORM_ACTION' => append_sid('helpdesk.php?action=cleanuphd')
80             ));
81
82             $count_helpdesk_not_solved = 0;
83
84             while( $arr = $db->sql_fetchrow($result) ) {
85                  if ( !$arr['solved'] ) {
86                      $solved_text = $lang['no'];
87                      $solved_color = 'red';
88
89                      ++$count_helpdesk_not_solved;
90                  }
91                  elseif ($arr['solved'] == 1) {
92                      $solved_text = $lang['yes'];
93                      $solved_color = 'green';
94                  }
95                  elseif ($arr['solved'] == 2) {
96                      $solved_text = $lang['ignored'];
97                      $solved_color = 'orange';
98                  }
99
100                 $template->assign_block_vars('problems_row', array(
101                     'U_USERDETAILS' => append_sid('userdetails.php?id=' . $arr['added_by']),
102                     'U_PROBLEM' => append_sid('helpdesk.php?action=view_problems&amp;id=' . $arr['id']),
103                     'U_SOLVED_BY' => append_sid('userdetails.php?id=' . $arr['solved_by']),
104                     'SOLVED' => $arr['solved'],
105                     'SOLVED_BY_NAME' => $arr['solved_by_username'],
106
107                     'ADDED' => create_date($arr['added']),
108                     'SOLVED_TIME' => create_date($arr['solved_date']),
109                     'ADDED_BY_NAME' => $arr['added_by_username'],
110                     'ADDED_BY_ID' => $arr['added_by'],
111                     'TITLE' => $arr['title'],
112                     'SOLVED_TEXT' => $solved_text,
113                     'SOLVED_COLOR' => $solved_color
114                 ));
115             }
116             if ( $userdata['class'] >= UC_ADMINISTRATOR ) {
117                 $template->assign_block_vars('switch_admin_section', array());
118             }
119
120             if ( $count_helpdesk_not_solved <> $config['count_helpdesk_not_solved'] ) {
121                 set_config('count_helpdesk_not_solved', $count_helpdesk_not_solved, true);
122             }
123
124             $body = 'helpdesc_view_body.html';
125         }
126         stdhead($lang['helpdesc']);
127         $template->set_filenames(array(
128             'body' => $body
129         ));
130         stdfoot();
131     break;
132
133     case 'cleanuphd':
134         $sql = 'DELETE FROM ' . HELPDESK_TABLE . ' WHERE solved = 1 OR solved = 2';
135         $db->sql_query($sql);
136         redirect(append_sid($root_path . 'helpdesk.php?action=view_problems'));
137     break;
138
139     case 'solve':
140         if ( $userdata['class'] < UC_MODERATOR ) {
141             trigger_error('access_denied');
142         }
143         $message = '';
144         $id = request_var('id', 0);
145         $msg_answer = request_var('msg_answer', '');
146         $msg_problem = request_var('message', '');
147
148         if ( isset($_POST['ignore']) ) {
149
150             $sql = 'UPDATE ' . HELPDESK_TABLE . ' SET solved = 2, solved_by= ' . $userdata['uid'] . ', solved_date = ' . time() . ' WHERE id = ' . $id;
151             $db->sql_query($sql);
152
153             $message = 'problem_ignored_succefully';
154         }
155
156         elseif ( isset($_POST['send']) ) {
157             if ( !$msg_answer ) {
158                 trigger_error($lang['post_something']);
159             }
160
161             $sql = 'SELECT added_by FROM ' . HELPDESK_TABLE . ' WHERE solved = 0 AND id = ' . $id;
162             $result = $db->sql_query($sql);
163
164             if ( $row = $db->sql_fetchrow($result) ) {
165
166                 $sql = 'SELECT name, language, email, notifs, language, class FROM ' . USERS_TABLE . ' WHERE uid = ' . $row['added_by'];
167                 $result = $db->sql_query($sql);
168                 $addedby = $db->sql_fetchrow($result);
169
170                 $pm_ary = array();
171
172                 require_once ($root_path . 'languages/lang_' . $addedby['language'] . '/lang_pms.php');
173
174                 $sql = 'UPDATE ' . HELPDESK_TABLE . ' SET solved = 1, solved_by= ' . $userdata['uid'] . ', solved_date = ' . time() . ', msg_answer = ' . "'" . $db->sql_escape($msg_answer) . "'" . ' WHERE id = ' . $id;
175                 $db->sql_query($sql);
176
177
178                 $pm_ary[] = array(
179                     'sender' => $userdata['uid'],
180                     'sender_name' => $userdata['name'],
181                     'receiver' => $row['added_by'],
182                     'msg' => sprintf($lang['pm_helpdesc_answer_body'], '[color=blue][b]', '[/b][/color]', $msg_answer, $addedby['name'], $msg_problem),
183                     'subject' => sprintf($lang['pm_helpdesc_answer_subject'], $id),
184                     'name' => $addedby['name'],
185                     'email' => $addedby['email'],
186                     'notifs' => $addedby['notifs'],
187                     'language' => $addedby['language'],
188                     'class' => $addedby['class']
189                 );
190
191                 send_pm($pm_ary);
192
193                 $message = sprintf($lang['problem_solved_succefully'], $id);
194              }
195         }
196
197         $url = append_sid($root_path . 'helpdesk.php?action=problems');
198
199          if ( $message ) {
200             $current_helpdesk = $config['count_helpdesk_not_solved'] - 1;
201             set_config('count_helpdesk_not_solved', $current_helpdesk, true);
202             meta_refresh(3, $url);
203             trigger_error($message);
204          }
205          else {
206              redirect($url);
207         }
208     break;
209
210     default:
211         if ( isset($_POST['submit']) ) {
212             $msg_problem = request_var('message', '');
213             $title = request_var('title', '');
214             if (!$msg_problem || !$title) {
215                 trigger_error($lang['post_something']);
216             }
217
218             $sql = 'INSERT INTO ' . HELPDESK_TABLE . ' ' . $db->sql_build_array('INSERT', array('title'       => $title,
219                                                              'msg_problem' => $msg_problem,
220                                                              'added'       => time(),
221                                                              'added_by'    => $userdata['uid']
222             ));
223              $db->sql_query($sql);
224
225              $current_helpdesk = $config['count_helpdesk_not_solved'] + 1;
226              set_config('count_helpdesk_not_solved', $current_helpdesk, true);
227
228              meta_refresh(3, append_sid($root_path));
229             trigger_error($lang['message_to_helpdesc_send']);
230         }
231          if ( $userdata['class'] >= UC_MODERATOR ) {
232             redirect(append_sid($root_path . 'helpdesk.php?action=view_problems'));
233          }
234         $template->assign_vars(array(
235             'S_FORM_ACTION' => append_sid('helpdesk.php')
236         ));
237
238         $tpl = textbbcode();
239
240         $template->assign_vars(array('TEXTBBCODE' => $tpl));
241
242         stdhead($lang['helpdesc']);
243         $template->set_filenames(array(
244             'body' => 'helpdesk_send_problem_body.html'
245         ));
246         stdfoot();
247     break;
248 }
249 ?>
Note: See TracBrowser for help on using the browser.