Просмотр файла mpanel/smiles.php

Размер файла: 12.09Kb
  1. <?php
  2. #-----------------------------------------------------#
  3. # ********* ROTORCMS ********* #
  4. # Made by : VANTUZ #
  5. # E-mail : visavi.net@mail.ru #
  6. # Site : http://pizdec.ru #
  7. # WAP-Site : http://visavi.net #
  8. # ICQ : 36-44-66 #
  9. # Вы не имеете право вносить изменения в код скрипта #
  10. # для его дальнейшего распространения #
  11. #-----------------------------------------------------#
  12. require_once ('../includes/start.php');
  13. require_once ('../includes/functions.php');
  14. require_once ('../includes/header.php');
  15. include_once ('../themes/header.php');
  16.  
  17. include_once ('../includes/upload.php');
  18.  
  19. $smilemaxsize = 10240; // Максимальный вес смайла, byte
  20. $smilemaxweight = 100; // Максимальный размер смайла, px
  21. $smileminweight = 16; // Минимальный размер смайла, px
  22.  
  23. $act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
  24. $id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : 0;
  25. $start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;
  26.  
  27. if (is_admin(array(101, 102))) {
  28. show_title('site.png', 'Управление смайлами');
  29.  
  30. switch ($act):
  31. ############################################################################################
  32. ## Список смайлов ##
  33. ############################################################################################
  34. case 'index':
  35.  
  36. $total = DB::run() -> querySingle("SELECT count(*) FROM `smiles`;");
  37.  
  38. if ($total > 0) {
  39. if ($start >= $total) {
  40. $start = 0;
  41. }
  42.  
  43. $querysmiles = DB::run() -> query("SELECT * FROM `smiles` ORDER BY LENGTH(`smiles_code`) ASC LIMIT ".$start.", ".$config['smilelist'].";");
  44.  
  45. echo '<form action="smiles.php?act=del&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  46.  
  47. while ($data = $querysmiles -> fetch()) {
  48. echo '<img src="/images/smiles/'.$data['smiles_name'].'" alt="" /> — <b>'.$data['smiles_code'].'</b><br />';
  49.  
  50. echo '<input type="checkbox" name="del[]" value="'.$data['smiles_id'].'" /> <a href="smiles.php?act=edit&amp;id='.$data['smiles_id'].'&amp;start='.$start.'&amp;'.SID.'">Редактировать</a><br />';
  51. }
  52.  
  53. echo '<br /><input type="submit" value="Удалить выбранное" /></form>';
  54.  
  55. page_strnavigation('smiles.php?', $config['smilelist'], $start, $total);
  56.  
  57. echo 'Всего cмайлов: <b>'.$total.'</b><br /><br />';
  58. } else {
  59. show_error('Смайлы еще не загружены!');
  60. }
  61.  
  62. echo '<img src="/images/img/download.gif" alt="image" /> <a href="smiles.php?act=add&amp;start='.$start.'&amp;'.SID.'">Загрузить</a><br />';
  63. break;
  64.  
  65. ############################################################################################
  66. ## Форма загрузки смайла ##
  67. ############################################################################################
  68. case 'add':
  69.  
  70. $config['newtitle'] = 'Добавление смайла';
  71.  
  72. echo '<div class="form">';
  73. echo '<form action="smiles.php?act=load&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post" enctype="multipart/form-data">';
  74.  
  75. echo 'Прикрепить смайл:<br /><input type="file" name="smile" /><br />';
  76. echo 'Код смайла: <br /><input type="text" name="code" /> <i>Код смайла должен начинаться со знака двоеточия</i><br />';
  77.  
  78. echo '<input type="submit" value="Загрузить" /></form></div><br />';
  79.  
  80. echo 'Разрешается добавлять смайлы с расширением jpg, jpeg, gif, png, bmp<br />';
  81. echo 'Весом не более '.formatsize($smilemaxsize).' и размером до '.$smilemaxweight.' px<br /><br />';
  82.  
  83. echo '<img src="/images/img/back.gif" alt="image" /> <a href="smiles.php?start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  84. break;
  85.  
  86. ############################################################################################
  87. ## Загрузка смайла ##
  88. ############################################################################################
  89. case 'load':
  90.  
  91. $config['newtitle'] = 'Результат добавления';
  92.  
  93. $uid = check($_GET['uid']);
  94. $code = check(strtolower($_POST['code']));
  95.  
  96. if (is_writeable(BASEDIR.'images/smiles')){
  97.  
  98. $smile = DB::run() -> queryFetch("SELECT * FROM `smiles` WHERE `smiles_code`=? LIMIT 1;", array($code));
  99.  
  100. $validation = new Validation;
  101.  
  102. $validation -> addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')
  103. -> addRule('empty', $smile, 'Смайл с данным кодом уже имеется в списке!')
  104. -> addRule('string', $code, 'Слишком длинный или короткий код смайла!', true, 2, 20)
  105. -> addRule('regex', array($code, '|^:+[a-z0-9_\-/]+$|i'), 'Код смайла должен начинаться с двоеточия. Разрешены знаки латинского алфавита, цифры и дефис!', true);
  106.  
  107.  
  108. if ($validation->run()) {
  109.  
  110. $handle = new FileUpload($_FILES['smile']);
  111.  
  112. if ($handle -> uploaded) {
  113.  
  114. $handle -> file_new_name_body = substr($code, 1);
  115. $handle -> file_overwrite = true;
  116.  
  117. $handle -> ext_check = array('jpg', 'jpeg', 'gif', 'png', 'bmp');
  118. $handle -> file_max_size = $smilemaxsize; // byte
  119. $handle -> image_max_width = $smilemaxweight; // px
  120. $handle -> image_max_height = $smilemaxweight; // px
  121. $handle -> image_min_width = $smileminweight; // px
  122. $handle -> image_min_height = $smileminweight; // px
  123.  
  124. $handle -> process(BASEDIR.'images/smiles/');
  125.  
  126. if ($handle -> processed) {
  127.  
  128. DB::run() -> query("INSERT INTO `smiles` (`smiles_cats`, `smiles_name`, `smiles_code`) VALUES (?, ?, ?);", array(1, $handle -> file_dst_name, $code));
  129. $handle -> clean();
  130.  
  131. notice('Смайл успешно загружен!');
  132. redirect("smiles.php?".SID);
  133.  
  134. } else {
  135. show_error($handle->error);
  136. }
  137. } else {
  138. show_error($handle->error);
  139. }
  140. } else {
  141. show_error($validation->errors);
  142. }
  143. } else {
  144. show_error('Ошибка! Не установлены атрибуты доступа на дирекоторию со смайлами!');
  145. }
  146. echo '<img src="/images/img/back.gif" alt="image" /> <a href="smiles.php?act=add&amp;start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  147. break;
  148.  
  149. ############################################################################################
  150. ## Редактирование ##
  151. ############################################################################################
  152. case 'edit':
  153.  
  154. $data = DB::run() -> queryFetch("SELECT * FROM `smiles` WHERE `smiles_id`=? LIMIT 1;", array($id));
  155.  
  156. if (!empty($data)) {
  157. echo '<b><big>Редактирование смайла</big></b><br /><br />';
  158.  
  159. echo '<img src="/images/smiles/'.$data['smiles_name'].'" alt="" /> — <b>'.$data['smiles_code'].'</b><br />';
  160.  
  161. echo '<div class="form">';
  162. echo '<form action="smiles.php?act=change&amp;id='.$id.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  163. echo 'Код смайла:<br />';
  164. echo '<input type="text" name="code" value="'.$data['smiles_code'].'" /> <i>Код смайла должен начинаться со знака двоеточия</i><br />';
  165. echo '<input type="submit" value="Изменить" /></form></div><br />';
  166. } else {
  167. show_error('Ошибка! Смайла для редактирования не существует!');
  168. }
  169.  
  170. echo '<img src="/images/img/back.gif" alt="image" /> <a href="smiles.php?start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  171. break;
  172.  
  173. ############################################################################################
  174. ## Изменение смайла ##
  175. ############################################################################################
  176. case 'change':
  177.  
  178. $uid = check($_GET['uid']);
  179. $code = check(strtolower($_POST['code']));
  180.  
  181. $smile = DB::run() -> queryFetch("SELECT * FROM `smiles` WHERE `smiles_id`=? LIMIT 1;", array($id));
  182. $checkcode = DB::run() -> querySingle("SELECT `smiles_id` FROM `smiles` WHERE `smiles_code`=? AND `smiles_id`<>? LIMIT 1;", array($code, $id));
  183.  
  184. $validation = new Validation;
  185.  
  186. $validation -> addRule('equal', array($uid, $_SESSION['token']), 'Неверный идентификатор сессии, повторите действие!')
  187. -> addRule('not_empty', $smile, 'Не найден смайл для редактирования!')
  188. -> addRule('empty', $checkcode, 'Смайл с данным кодом уже имеется в списке!')
  189. -> addRule('string', $code, 'Слишком длинный или короткий код смайла!', true, 1, 20)
  190. -> addRule('regex', array($code, '|^:+[a-z0-9_\-/]+$|i'), 'Код смайла должен начинаться с двоеточия. Разрешены знаки латинского алфавита, цифры и дефис!', true);
  191.  
  192. if ($validation->run()) {
  193.  
  194. $newname = rename_file($smile['smiles_name'], substr($code, 1));
  195.  
  196. if (rename(BASEDIR.'images/smiles/'.$smile['smiles_name'], BASEDIR.'images/smiles/'.$newname)){
  197.  
  198. DB::run() -> query("UPDATE `smiles` SET `smiles_name`=?, `smiles_code`=? WHERE `smiles_id`=?", array($newname, $code, $id));
  199.  
  200. notice('Смайл успешно отредактирован!');
  201. redirect("smiles.php?start=$start&".SID);
  202.  
  203. } else {
  204. show_error('Ошибка! Не удалось переименовать файл смайла!');
  205. }
  206. } else {
  207. show_error($validation->errors);
  208. }
  209.  
  210. echo '<img src="/images/img/back.gif" alt="image" /> <a href="smiles.php?act=edit&amp;id='.$id.'&amp;start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  211. break;
  212.  
  213. ############################################################################################
  214. ## Удаление смайлов ##
  215. ############################################################################################
  216. case 'del':
  217. $uid = check($_GET['uid']);
  218. $del = (isset($_POST['del'])) ? intar($_POST['del']) : 0;
  219.  
  220. if ($uid == $_SESSION['token']) {
  221. if (!empty($del)) {
  222. if (is_writeable(BASEDIR.'images/smiles')){
  223.  
  224. $del = implode(',', $del);
  225.  
  226. $querydel = DB::run() -> query("SELECT `smiles_name` FROM `smiles` WHERE `smiles_id` IN (".$del.");");
  227. $arr_smiles = $querydel -> fetchAll();
  228.  
  229. if (count($arr_smiles)>0){
  230. foreach ($arr_smiles as $delfile) {
  231. if (file_exists(BASEDIR.'images/smiles/'.$delfile['smiles_name'])) {
  232. unlink(BASEDIR.'images/smiles/'.$delfile['smiles_name']);
  233. }
  234. }
  235. }
  236.  
  237. DB::run() -> query("DELETE FROM `smiles` WHERE `smiles_id` IN (".$del.");");
  238.  
  239. notice('Выбранные смайлы успешно удалены!');
  240. redirect("smiles.php?act=$ref&start=$start&".SID);
  241.  
  242. } else {
  243. show_error('Ошибка! Не установлены атрибуты доступа на дирекоторию со смайлами!');
  244. }
  245. } else {
  246. show_error('Ошибка! Отсутствуют выбранные смайлы!');
  247. }
  248. } else {
  249. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  250. }
  251.  
  252. echo '<img src="/images/img/back.gif" alt="image" /> <a href="smiles.php?act='.$ref.'&amp;start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  253. break;
  254.  
  255. default:
  256. redirect("smiles.php?".SID);
  257. endswitch;
  258.  
  259. echo '<img src="/images/img/panel.gif" alt="image" /> <a href="index.php?'.SID.'">В админку</a><br />';
  260.  
  261. } else {
  262. redirect(BASEDIR.'index.php?'.SID);
  263. }
  264.  
  265. include_once ('../themes/footer.php');
  266. ?>