Advertisement
Guest User

ext ticket argos cms

a guest
Feb 19th, 2022
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.91 KB | None | 0 0
  1. <?php
  2. namespace ext\pok4;
  3. use \PDO;
  4. if(count(get_included_files()) == 1) exit("Direct access not permitted."); //Don't edit
  5. //Your Extension Script
  6. class the_tickets extends \App\Controllers\BaseController {
  7.  
  8. public function __construct() {
  9. parent::__construct();
  10.  
  11. $this->the_tickets_lang(); //our language definitions
  12. }
  13.  
  14.  
  15. public function custom_page_admin() {
  16. if (strpos($_SERVER['REQUEST_URI'], 'apage=view_tickets') !== false) {
  17. return $this->admin_form();
  18. }
  19. }
  20.  
  21. public function ajax() {
  22. global $bb_is_admin;
  23.  
  24. //close ticket
  25. if(is_ajax() && isset($_GET['id'])) {
  26.  
  27. $id = (int)$_GET['id'];
  28. $username = $this->username;
  29.  
  30. if($bb_is_admin) {
  31. $this->db->query("UPDATE ".$this->argos_db_prefix."tickets SET open=0 WHERE id='$id'");
  32. } else {
  33. $this->db->query("UPDATE ".$this->argos_db_prefix."tickets SET open=0 WHERE id='$id' AND username='$username'");
  34. }
  35.  
  36. }
  37.  
  38. //submit ticket
  39. if(is_ajax() && isset($_POST['tid'])) {
  40. $tid = (int)$_POST['tid'];
  41. $text = nl2br(htmlspecialchars($_POST['t_msg']));
  42. $username = $this->username;
  43. $date = time();
  44.  
  45. if($this->is_admin) {
  46. $go = $this->db->prepare("INSERT INTO ".$this->argos_db_prefix."tickets_comments (tid,text,username,date,authored) VALUES('$tid',?,'$username','$date', '0');");
  47. $go->bindParam(1, $text, PDO::PARAM_STR);
  48. $go->execute();
  49. } else {
  50. $go = $this->db->prepare("INSERT INTO ".$this->argos_db_prefix."tickets_comments (tid,text,username,date,authored) VALUES('$tid',?,'$username','$date', '1');");
  51. $go->bindParam(1, $text, PDO::PARAM_STR);
  52. $go->execute();
  53. }
  54. }
  55. }
  56.  
  57.  
  58. public function admin_form() {
  59.  
  60. //pagination
  61. $results_check = $this->db->query('SELECT COUNT(id) FROM '.$this->argos_db_prefix.'tickets')->fetchColumn();
  62. if($results_check > 0) {
  63. $pagination = pagination($results_check, [
  64. 'get_vars' => [
  65. 'apage' => @$_GET['apage'],
  66. 'view_tickets' => @$_GET['view_tickets']
  67. ],
  68. 'per_page' => 10, //how many results per page
  69. 'per_side' => 3,
  70. 'get_name' => 'page'
  71. ]);
  72. } else {
  73. //reset this variables to 0, to prevent errors
  74. $pagination['limit']['first'] = 0;
  75. $pagination['limit']['second'] = 0;
  76. }
  77.  
  78. $print = $this->lang['ext_the_tickets_welcome']."<br/><br/>";
  79.  
  80. $query_check = $this->db->query("SELECT * FROM ".$this->argos_db_prefix."tickets ORDER by id DESC LIMIT {$pagination['limit']['first']}, {$pagination['limit']['second']}");
  81. if($query_check->rowCount() > 0) {
  82. while ($row=$query_check->fetch(PDO::FETCH_ASSOC)) {
  83. $tid = $row['id'];
  84. $tq = $row['question'];
  85. $open = $row['open'];
  86. $category = $row['category'];
  87. $username = $row['username'];
  88. $open_s = "";//globalize
  89. if($open == '1') {
  90. $open_s = $this->lang['ext_the_tickets_open'].' &nbsp;&nbsp; <i style="cursor:pointer;color:red" title="close" class="close_t_'.$tid.' fa fa-close"></i>&nbsp&nbsp; <form method="post" style="display:inline-block"><input type="hidden" name="tid" value="'.$tid.'"/><input class="btn btn-xs btn-danger" type="submit" name="del_t" value="delete"/></form>';
  91. } else {
  92. $open_s = $this->lang['ext_the_tickets_closed'].' <form method="post" style="display:inline-block"><input type="hidden" name="tid" value="'.$tid.'"/><input class="btn btn-xs btn-danger" type="submit" name="del_t" value="delete"/></form>';
  93. }
  94. $date = date('d.m.y H:i:s',$row['date']);
  95. $text = $row['text'];
  96. $print .= '
  97. <div class="tickets_box t_'.$tid.'">['.$category.'] '.$tq.' | '.$this->lang['ext_the_tickets_date'].': '.$date.' | '.$this->lang['ext_the_tickets_status'].': '.$open_s.'</div>
  98. <div class="t_container_style t_cont_'.$tid.'" style="display:none">
  99. <div class=" t_new_msg_body">('.$username.'): ('.$date.'): <br/>'.$text.'</div>';
  100.  
  101.  
  102. $get_all_msgs = $this->db->query("SELECT * FROM ".$this->argos_db_prefix."tickets_comments WHERE tid='$tid' Order by id ASC");
  103. while($row = $get_all_msgs->fetch(PDO::FETCH_ASSOC)) {
  104. $textt = $row['text'];
  105. $datet = date('d.m.y H:i:s',$row['date']);
  106. $authored = $row['authored'];
  107. $username = $row['username'];
  108. if($authored == 1) {
  109. $authored = "($username):";
  110. } else {
  111. $authored = "<span style='color:red'>Administrator:</span>";
  112. }
  113. $print .= "<div class='t_new_msg_body'>$authored ($datet):<br/> $textt</div>";
  114. }
  115.  
  116. //send new message to current ticket start
  117. if($open == '1') {
  118.  
  119. $print .='<br/>
  120. <form method="post" class="form_submit_t_'.$tid.'">
  121. <textarea name="t_msg" class="form-control"></textarea><br/>
  122. <input type="hidden" name="tid" value="'.$tid.'"/>
  123. <input type="submit" class="btn btn-xs btn-success send_ticket_message_'.$tid.'" name="send_ticket_message" value="'.$this->lang['ext_the_tickets_send'].'"/>
  124. </form>
  125. <div id="show_msg_t_'.$tid.'"></div>';
  126. $this->dispatcher->dispatch('core_admin_event_inside_script_tag','
  127. $( ".send_ticket_message_'.$tid.'" ).click(function() {
  128. var str = $( ".form_submit_t_'.$tid.'" ).serialize();
  129. $.ajax({
  130. url: "/ajax/ext/pok4/the_tickets",
  131. type: "POST",
  132. data: str,
  133. success: function(data){
  134. $("#show_msg_t_'.$tid.'").html("'.$this->lang['ext_the_tickets_message_has_send'].' <a href=\"'.url().'/admin/custom_pages_ext.php?apage=view_tickets\" style=\"color:red\">Refresh.</a>");
  135. }
  136. });
  137. return false;
  138. });
  139. ');
  140.  
  141.  
  142. } else {
  143. $print .= '<br/><div class="alert alert-danger">'.$this->lang['ext_the_tickets_ticket_closed'].'</div>';
  144. }
  145.  
  146. $print .= '
  147. </div> <!-- t_container end -->
  148.  
  149. ';
  150. $this->dispatcher->dispatch('core_admin_event_inside_script_tag','
  151. $( ".t_'.$tid.'" ).click(function() {$( ".t_cont_'.$tid.'" ).toggle( "fast", function() {});});
  152.  
  153. $( ".close_t_'.$tid.'" ).click(function() {
  154. $.ajax({
  155. url: "/ajax/ext/pok4/the_tickets",
  156. type: "GET",
  157. data:{"id": "'.$tid.'"},
  158. success: function(data){
  159. location.reload();
  160. }
  161. });
  162. });
  163. ');
  164. }
  165. $print .= $pagination['output'];
  166. } else {
  167. $print .= "<div class='alert alert-info'>".$this->lang['ext_the_tickets_no_tickets_for_now']."</div>";
  168. }
  169.  
  170. return $print.$this->submit_admin_del_ticket(); //we print everything and proceed to submit request
  171.  
  172. }
  173.  
  174. public function submit_admin_del_ticket() {
  175. if(isset($_POST['del_t'])) {
  176. header("refresh: 1;"); //refresh the page to view results
  177. $tid = (int)$_POST['tid'];
  178. $go = $this->db->query("DELETE FROM ".$this->argos_db_prefix."tickets WHERE id=$tid");
  179. $go = $this->db->query("DELETE FROM ".$this->argos_db_prefix."tickets_comments WHERE tid=$tid");
  180. }
  181. }
  182.  
  183.  
  184. public function custom_page() {
  185. if (strpos($_SERVER['REQUEST_URI'], '/pages/send_ticket') !== false) {
  186.  
  187. $this->mustache->addHelper('legacy', [
  188. 'php' => function() {
  189. ob_start();
  190. echo $this->custom_page_content();
  191. return ob_get_clean();
  192. },
  193. ]);
  194.  
  195. }
  196. }
  197.  
  198. public function custom_page_content() {
  199. $ticket_type = $_GET['t_type'];
  200.  
  201. $print = "<a href='".url()."/pages/send_ticket' class='btn btn-xs btn-success' style='color:#fff !important'>".$this->lang['ext_the_tickets_home']."</a> || <a href='".url()."/pages/send_ticket?t_type=send_ticket' class='btn btn-xs btn-info' style='color:#fff !important'>".$this->lang['ext_the_tickets_send_ticket']."</a><br/><br/>";
  202.  
  203. if(!isset($ticket_type)) {
  204.  
  205. $username = $this->username;
  206. $results = $this->db->query("SELECT COUNT(`id`) FROM `".$this->argos_db_prefix."tickets` WHERE username='$username'")->fetchColumn();;
  207. $pagination = pagination($results, array(
  208. 'get_vars' => [
  209. 'cat' => (int)@$_GET['cat'],
  210. 'view' => @$_GET['view']
  211. ],
  212. 'per_page' => 10,
  213. 'per_side' => 3,
  214. 'get_name' => 'page'
  215. ));
  216.  
  217. $query = $this->db->query("SELECT * FROM `".$this->argos_db_prefix."tickets` WHERE username='$username' ORDER by id DESC LIMIT {$pagination['limit']['first']}, {$pagination['limit']['second']}");
  218. $query_check = $this->db->query("SELECT * FROM `".$this->argos_db_prefix."tickets` WHERE username='$username' ORDER by id DESC");
  219. if($query_check->rowCount() >0) {
  220. while ($row=$query->fetch(PDO::FETCH_ASSOC)) {
  221. $tid = $row['id'];
  222. $tq = $row['question'];
  223. $open = $row['open'];
  224. $category = $row['category'];
  225. $open_s = "";//globalize
  226. if($open == '1') {
  227. $open_s = $this->lang['ext_the_tickets_open'].' <i style="cursor:pointer;color:red" title="close" class="close_t_'.$tid.' fa fa-close"></i>';
  228. } else {
  229. $open_s = $this->lang['ext_the_tickets_closed'];
  230. }
  231. $date = date('d.m.y H:i:s',$row['date']);
  232. $text = $row['text'];
  233. $print .= '
  234. <div class="tickets_box t_'.$tid.'">['.$category.'] '.$tq.' | '.$this->lang['ext_the_tickets_date'].': '.$date.' | '.$this->lang['ext_the_tickets_status'].': '.$open_s.'</div>
  235. <div class="t_container_style t_cont_'.$tid.'" style="display:none">
  236. <div class="t_new_msg_body"> '.$this->lang['ext_the_tickets_first_message'].' ('.$date.'): <br/>'.$text.'</div>';
  237.  
  238. $get_all_msgs = $this->db->query("SELECT * FROM ".$this->argos_db_prefix."tickets_comments WHERE tid='$tid' Order by id ASC");
  239. while($row = $get_all_msgs->fetch(PDO::FETCH_ASSOC)) {
  240. $textt = $row['text'];
  241. $datet = date('d.m.y H:i:s',$row['date']);
  242. $authored = $row['authored'];
  243. $username = $row['username'];
  244. if($authored == 1) {
  245. $authored = $this->lang['ext_the_tickets_your_message']." ($username):";
  246. } else {
  247. $authored = "<span style='color:red'>".$this->lang['ext_the_tickets_message_from_team'].":</span>";
  248. }
  249. $print .= "<div class='t_new_msg_body'>$authored ($datet):<br/> $textt</div>";
  250. }
  251.  
  252. //send new message to current ticket start
  253. if($open == '1') {
  254. $print .='<br/>
  255. <form method="post" class="form_submit_t_'.$tid.'">
  256. <textarea name="t_msg" class="form-control"></textarea><br/>
  257. <input type="hidden" name="tid" value="'.$tid.'"/>
  258. <input type="submit" class="btn btn-xs btn-success send_ticket_message_'.$tid.'" name="send_ticket_message" value="'.$this->lang['ext_the_tickets_send'].'"/>
  259. </form>
  260. <div id="show_msg_t_'.$tid.'"></div>
  261. <script>
  262. head.ready(function(){
  263. $( ".send_ticket_message_'.$tid.'" ).click(function() {
  264. var str = $( ".form_submit_t_'.$tid.'" ).serialize();
  265. $.ajax({
  266. url: "/ajax/ext/pok4/the_tickets",
  267. type: "POST",
  268. data: str,
  269. success: function(){
  270. $("#show_msg_t_'.$tid.'").html("'.$this->lang['ext_the_tickets_message_has_send'].' <a href=\"'.url().'/pages/send_ticket\" style=\"color:red\">Refresh.</a>");
  271. }
  272. });
  273. return false;
  274. });
  275. });
  276. </script>
  277. ';
  278.  
  279.  
  280. } else {
  281. $print .= '<br/><div class="alert alert-danger">'.$this->lang['ext_the_tickets_ticket_closed'].'</div>';
  282. }
  283.  
  284. $print .= '
  285. </div> <!-- t_container end -->
  286.  
  287. <script>
  288. head.ready(function(){
  289. $( ".t_'.$tid.'" ).click(function() {$( ".t_cont_'.$tid.'" ).toggle( "fast", function() {});});
  290.  
  291. $( ".close_t_'.$tid.'" ).click(function() {
  292. $.ajax({
  293. url: "/ajax/ext/pok4/the_tickets",
  294. type: "GET",
  295. data: {"id" : "'.$tid.'"},
  296. success: function(data){
  297. location.reload();
  298. }
  299. });
  300. });
  301. });
  302. </script>';
  303. }
  304.  
  305. $print .= $pagination['output']; //we show pages for user
  306. } else {
  307. $print .= "<div class='alert alert-info'>".$this->lang['ext_the_tickets_no_tickets_for_now_user']."</div>";
  308. }
  309. }
  310.  
  311. if($ticket_type == "send_ticket") { //ticket send
  312. if($this->is_anonymous) { $print .= "<div class='alert alert-warning'>".$this->lang['ext_the_tickets_login_to_send']."</div>"; } else {
  313. $print .= '<form method="post" style="max-width:400px">
  314. <select name="category" class="form-control">
  315. <option value="'.$this->lang['ext_the_ticket_select_1'].'">'.$this->lang['ext_the_ticket_select_1'].'</option>
  316. <option value="'.$this->lang['ext_the_ticket_select_2'].'">'.$this->lang['ext_the_ticket_select_2'].'</option>
  317. <option value="'.$this->lang['ext_the_ticket_select_3'].'">'.$this->lang['ext_the_ticket_select_3'].'</option>
  318. <option value="'.$this->lang['ext_the_ticket_select_4'].'">'.$this->lang['ext_the_ticket_select_4'].'</option>
  319. <option value="'.$this->lang['ext_the_ticket_select_5'].'">'.$this->lang['ext_the_ticket_select_5'].'</option>
  320. </select>
  321. <input type="text" name="your_q" class="form-control" placeholder="'.$this->lang['ext_the_tickets_your_question'].'" required/><br/>
  322. '.$this->lang['ext_the_tickets_your_text'].':<br/>
  323. <textarea class="form-control" name="your_text" required></textarea><br/>
  324. <img src="{{baseurl}}/captcha.php" alt="captcha" class="img-responsive" id="capImage"/><br/>
  325. <input class="form-control" placeholder="Enter the code" name="captcha_code" type="text" value="">
  326. <input type="submit" name="submit_ticket" class="btn btn-md btn-success" value="'.$this->lang['ext_the_tickets_send'].'"/>
  327. </form>';
  328. }
  329. if(isset($_POST['submit_ticket'])) {
  330.  
  331. $date_t = time();
  332. $t_category = htmlspecialchars($_POST['category']);
  333. $t_question = htmlspecialchars($_POST['your_q']);
  334. $t_text = nl2br(htmlspecialchars($_POST['your_text']));
  335. $username = $this->username;
  336. $captchaCode = $_SESSION['captchaCode'];
  337. $enteredcaptchaCode = trim($_POST['captcha_code']);
  338.  
  339. if($enteredcaptchaCode == $captchaCode){
  340. //make log
  341. make_log('has send a ticket','user');
  342. $go = $this->db->prepare("INSERT INTO ".$this->argos_db_prefix."tickets (username,category,question,text,date,open) VALUES('$username',?,?,?,'$date_t','1')");
  343. $go->bindParam(1, $t_category, PDO::PARAM_STR);
  344. $go->bindParam(2, $t_question, PDO::PARAM_STR);
  345. $go->bindParam(3, $t_text, PDO::PARAM_STR);
  346. $go->execute();
  347. $print .= "<div class='alert alert-success'>".$this->lang['ext_the_tickets_form_succ']."</div>";
  348. } else {
  349. $print .= "<div class='alert alert-danger'>".$this->lang['lang_wrong_captcha']."</div>";
  350. }
  351. }
  352. }
  353.  
  354. return $print;
  355. }
  356.  
  357. //Extension language definitions
  358. public function the_tickets_lang() {
  359. if(get_current_language() == 'bg') {
  360. $this->lang= array_merge($this->lang, [
  361. 'ext_the_tickets_welcome'=>'От тук, вие може да отговаряте на тикетите, които са пуснати от вашите потребители!',
  362. 'ext_the_tickets_open'=>'Отворен',
  363. 'ext_the_tickets_closed'=>'Затворен',
  364. 'ext_the_tickets_date'=> 'Дата',
  365. 'ext_the_tickets_status'=> 'Статус',
  366. 'ext_the_tickets_message_from_team'=>'Съобщение от екипа на сайта',
  367. 'ext_the_tickets_your_message'=>'Твоето съобщение',
  368. 'ext_the_tickets_first_message'=>'Твоето първо съобщение',
  369. 'ext_the_tickets_send'=>'Изпрати',
  370. 'ext_the_tickets_send_ticket'=>'Изпрати тикет',
  371. 'ext_the_tickets_home'=>'Начало',
  372. 'ext_the_tickets_ticket_closed'=>'Не можеш да отговаряш повече на този тикет, тъй като той е затворен (приключен)',
  373. 'ext_the_tickets_message_has_send'=>'Съобщението е изпратено, моля рефрешнете страницата.',
  374. 'ext_the_tickets_no_tickets_for_now'=>'За момента няма отворени тикети.',
  375. 'ext_the_tickets_no_tickets_for_now_user'=>'За момента нямаш отворени тикети.',
  376. //form
  377. 'ext_the_tickets_login_to_send'=>'Логни се, за да видиш тази секция!',
  378. 'ext_the_tickets_your_question'=>'Вашият въпрос',
  379. 'ext_the_tickets_your_text'=>'Вашия текст',
  380. 'ext_the_ticket_select_1'=> 'Общи въпроси',
  381. 'ext_the_ticket_select_2'=> 'Проблем със сървърите',
  382. 'ext_the_ticket_select_3'=> 'Относно вип привилегиите',
  383. 'ext_the_ticket_select_4'=> 'За реклама',
  384. 'ext_the_ticket_select_5'=> 'Проблеми със сайта',
  385. 'ext_the_tickets_form_succ'=> 'Тикета е изпратен успешно! :)',
  386. ]);
  387. }
  388. if(get_current_language() == 'en') {
  389. $this->lang= array_merge($this->lang, [
  390. 'ext_the_tickets_welcome'=>'From here, you can reply to the tickets released by your users!',
  391. 'ext_the_tickets_open'=>'Open',
  392. 'ext_the_tickets_closed'=>'Closed',
  393. 'ext_the_tickets_date'=> 'Date',
  394. 'ext_the_tickets_status'=> 'Status',
  395. 'ext_the_tickets_message_from_team'=>'Message from the site team',
  396. 'ext_the_tickets_your_message'=>'Your message',
  397. 'ext_the_tickets_first_message'=>'Your first message',
  398. 'ext_the_tickets_send'=>'Send',
  399. 'ext_the_tickets_send_ticket'=>'Send ticket',
  400. 'ext_the_tickets_home'=>'Home',
  401. 'ext_the_tickets_ticket_closed'=>'You can no longer reply to this ticket as it is closed',
  402. 'ext_the_tickets_message_has_send'=>'The message has been sent, please refresh the page.',
  403. 'ext_the_tickets_no_tickets_for_now'=>'There are currently no open tickets.',
  404. 'ext_the_tickets_no_tickets_for_now_user'=>'You currently have no open tickets.',
  405. //form
  406. 'ext_the_tickets_login_to_send'=>'Login, to see this section!',
  407. 'ext_the_tickets_your_question'=>'Your question',
  408. 'ext_the_tickets_your_text'=>'Your text',
  409. 'ext_the_ticket_select_1'=> 'General questions',
  410. 'ext_the_ticket_select_2'=> 'Problems with servers',
  411. 'ext_the_ticket_select_3'=> 'About VIP privileges',
  412. 'ext_the_ticket_select_4'=> 'For advertising',
  413. 'ext_the_ticket_select_5'=> 'Problems with the site',
  414. 'ext_the_tickets_form_succ'=> 'The ticket was sent successfully! :)',
  415. ]);
  416. }
  417. if(get_current_language() == 'ru') {
  418. $this->lang= array_merge($this->lang, [
  419. 'ext_the_tickets_welcome'=>'Отсюда вы можете отвечать на тикеты, выпущенные вашими пользователями!',
  420. 'ext_the_tickets_open'=>'Oткрытым',
  421. 'ext_the_tickets_closed'=>'Закрыто',
  422. 'ext_the_tickets_date'=> 'Дата',
  423. 'ext_the_tickets_status'=> 'Положение дел',
  424. 'ext_the_tickets_message_from_team'=>'Сообщение от команды сайта',
  425. 'ext_the_tickets_your_message'=>'Ваше сообщение',
  426. 'ext_the_tickets_first_message'=>'Ваше первое сообщение',
  427. 'ext_the_tickets_send'=>'Отправить',
  428. 'ext_the_tickets_send_ticket'=>'Отправить билет',
  429. 'ext_the_tickets_home'=>'Дома',
  430. 'ext_the_tickets_ticket_closed'=>'Вы больше не можете отвечать на этот тикет, так как он закрыт',
  431. 'ext_the_tickets_message_has_send'=>'Сообщение отправлено, обновите страницу.',
  432. 'ext_the_tickets_no_tickets_for_now'=>'В настоящее время нет открытых билетов.',
  433. 'ext_the_tickets_no_tickets_for_now_user'=>'В настоящее время у вас нет открытых билетов.',
  434. //form
  435. 'ext_the_tickets_login_to_send'=>'Войдите, чтобы увидеть этот раздел!',
  436. 'ext_the_tickets_your_question'=>'Ваш вопрос',
  437. 'ext_the_tickets_your_text'=>'Ваш текст',
  438. 'ext_the_ticket_select_1'=> 'Основные вопросы',
  439. 'ext_the_ticket_select_2'=> 'Проблема с сервером',
  440. 'ext_the_ticket_select_3'=> 'О VIP-привилегиях',
  441. 'ext_the_ticket_select_4'=> 'Для рекламы',
  442. 'ext_the_ticket_select_5'=> 'Проблемы с сайтом',
  443. 'ext_the_tickets_form_succ'=> 'Билет успешно отправлен! :)',
  444. ]);
  445. }
  446. }
  447.  
  448.  
  449.  
  450. public function load() {
  451.  
  452. $this->dispatcher->dispatch('core_admin_event_custom_pages_ext',$this->custom_page_admin());
  453. $this->dispatcher->dispatch('core_event_before_header',$this->custom_page());
  454. if (strpos($_SERVER['REQUEST_URI'], '/pages/send_ticket') !== false) {
  455. $this->dispatcher->dispatch('core_event_head_append','<link rel="stylesheet" href="ext/pok4/the_tickets/css/css.css">');
  456. }
  457. if (strpos($_SERVER['REQUEST_URI'], 'page=view_tickets') !== false) {
  458. $this->dispatcher->dispatch('core_admin_event_head_append','<link rel="stylesheet" href="../ext/pok4/the_tickets/css/css.css">');
  459. }
  460. $this->dispatcher->dispatch('core_admin_event_ext_pages','<li><a href="custom_pages_ext.php?apage=view_tickets">Tickets</a></li>');
  461. }
  462.  
  463. };
  464.  
  465. $load_ext = new the_tickets;
  466. $load_ext->load();
  467.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement