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

Размер файла: 12.7Kb
  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. $config['listinvite'] = 20;
  18. $act = (isset($_GET['act'])) ? check($_GET['act']) : 'index';
  19. $start = (isset($_GET['start'])) ? abs(intval($_GET['start'])) : 0;
  20. $used = (!empty($_GET['used'])) ? 1 : 0;
  21.  
  22. if (is_admin(array(101, 102, 103))) {
  23. show_title('site.png', 'Приглашения');
  24.  
  25. switch ($act):
  26. ############################################################################################
  27. ## Главная страница ##
  28. ############################################################################################
  29. case 'index':
  30.  
  31. if (empty($config['invite'])) {
  32. echo '<img src="/images/img/warning.gif" alt="image" /> <span style="color:#ff0000"><b>Внимание! Регистрация по приглашения выключена!</b></span><br /><br />';
  33. }
  34.  
  35. if (empty($used)){
  36. echo '<b>Неиспользованные</b> / <a href="invitations.php?used=1&amp;'.SID.'">Использованные</a><hr />';
  37. } else {
  38. echo '<a href="invitations.php?'.SID.'">Неиспользованные</a> / <b>Использованные</b><hr />';
  39. }
  40.  
  41. $total = DB::run() -> querySingle("SELECT COUNT(*) FROM `invite` WHERE `used`=?;", array($used));
  42.  
  43. if ($total > 0) {
  44. if ($start >= $total) {
  45. $start = 0;
  46. }
  47.  
  48. $invitations = DB::run() -> query("SELECT * FROM `invite` WHERE `used`=? ORDER BY `time` DESC LIMIT ".$start.", ".$config['listinvite'].";", array($used));
  49.  
  50. echo '<form action="invitations.php?act=del&amp;used='.$used.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  51.  
  52. while ($data = $invitations -> fetch()) {
  53.  
  54. echo '<div class="b"><input type="checkbox" name="del[]" value="'.$data['id'].'" /> <b>'.$data['key'].'</b></div>';
  55. echo '<div>Владелец: '.profile($data['user']).'<br />';
  56.  
  57. if (!empty($data['invited'])) {
  58. echo 'Приглашенный: '.profile($data['invited']).'<br />';
  59. }
  60. echo 'Создан: '.date_fixed($data['time']).'<br />';
  61. echo '</div>';
  62. }
  63.  
  64. echo '<br /><input type="submit" value="Удалить выбранное" /></form>';
  65.  
  66. page_strnavigation('invitations.php?used='.$used.'&amp;', $config['listinvite'], $start, $total);
  67.  
  68. echo 'Всего ключей: <b>'.$total.'</b><br /><br />';
  69.  
  70. } else {
  71. show_error('Приглашений еще нет!');
  72. }
  73.  
  74. echo '<img src="/images/img/open.gif" alt="image" /> <a href="invitations.php?act=new&amp;'.SID.'">Создать ключи</a><br />';
  75. echo '<img src="/images/img/keys.gif" alt="image" /> <a href="invitations.php?act=list&amp;'.SID.'">Список ключей</a><br />';
  76. break;
  77.  
  78. ############################################################################################
  79. ## Создание ключей ##
  80. ############################################################################################
  81. case 'new':
  82.  
  83. echo '<b><big>Генерация новых ключей:</big></b><br />';
  84. echo '<div class="form">';
  85. echo '<form action="invitations.php?act=generate&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  86. echo '<select name="keys">';
  87. echo '<option value="1">1 ключ</option>';
  88. echo '<option value="2">2 ключа</option>';
  89. echo '<option value="3">3 ключа</option>';
  90. echo '<option value="5">5 ключей</option>';
  91. echo '<option value="10">10 ключей</option>';
  92. echo '<option value="20">20 ключей</option>';
  93. echo '<option value="50">50 ключей</option>';
  94. echo '</select> ';
  95. echo '<input type="submit" value="Генерировать" /></form></div><br />';
  96.  
  97. echo '<b><big>Отправить ключ пользователю:</big></b><br />';
  98. echo '<div class="form">';
  99. echo '<form action="invitations.php?act=send&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  100. echo 'Логин пользователя:<br />';
  101. echo '<input type="text" name="user" /><br />';
  102. echo '<select name="keys">';
  103. echo '<option value="1">1 ключ</option>';
  104. echo '<option value="2">2 ключа</option>';
  105. echo '<option value="3">3 ключа</option>';
  106. echo '<option value="4">4 ключа</option>';
  107. echo '<option value="5">5 ключей</option>';
  108. echo '</select><br />';
  109. echo '<input type="submit" value="Отправить" /></form></div><br />';
  110.  
  111. if (is_admin(array(101))){
  112. echo '<b><big>Рассылка ключей:</big></b><br />';
  113. echo '<div class="form">';
  114. echo 'Разослать ключи активным пользователям:<br />';
  115. echo '<form action="invitations.php?act=mailing&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  116. echo '<input type="submit" value="Разослать" /></form></div><br />';
  117. }
  118.  
  119. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?'.SID.'">Вернуться</a><br />';
  120. break;
  121.  
  122. ############################################################################################
  123. ## Список ключей ##
  124. ############################################################################################
  125. case 'list':
  126. $invitations = DB::run() -> query("SELECT `key` FROM `invite` WHERE `user`=? AND `used`=? ORDER BY `time` DESC;", array($log, 0));
  127. $invite = $invitations -> fetchAll(PDO::FETCH_COLUMN);
  128. $total = count($invite);
  129.  
  130. if ($total > 0){
  131. echo 'Всего ваших ключей: '.$total.'<br />';
  132. echo '<textarea cols="25" rows="10">'.implode(', ', $invite).'</textarea><br /><br />';
  133. } else {
  134. show_error('Ошибка! Нет ваших пригласительных ключей!');
  135. }
  136. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?'.SID.'">Вернуться</a><br />';
  137. break;
  138.  
  139. ############################################################################################
  140. ## Отправка ключей в приват ##
  141. ############################################################################################
  142. case 'send':
  143.  
  144. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  145. $keys = (isset($_POST['keys'])) ? abs(intval($_POST['keys'])) : 1;
  146. $user = (isset($_REQUEST['user'])) ? check($_REQUEST['user']) : '';
  147.  
  148. if ($uid == $_SESSION['token']) {
  149. if (check_user($user)) {
  150.  
  151.  
  152. $dbr = DB::run() -> prepare("INSERT INTO `invite` (`key`, `user`, `time`) VALUES (?, ?, ?);");
  153.  
  154. $listkeys = array();
  155.  
  156. for($i = 0; $i < $keys; $i++) {
  157. $key = generate_password(rand(12, 15));
  158. $dbr -> execute($key, $user, SITETIME);
  159. $listkeys[] = $key;
  160. }
  161.  
  162. $text = 'Вы получили пригласительные ключи в количестве '.count($listkeys).'шт.<br />Список ключей: '.implode(', ', $listkeys);
  163. send_private($user, $log, $text);
  164.  
  165. notice('Ключи успешно отправлены!');
  166. redirect("invitations.php?".SID);
  167.  
  168.  
  169. } else {
  170. show_error('Ошибка! Не найден пользователь с заданным логином!');
  171. }
  172. } else {
  173. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  174. }
  175.  
  176. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?act=new&amp;'.SID.'">Вернуться</a><br />';
  177. break;
  178.  
  179. ############################################################################################
  180. ## Отправка ключей в приват ##
  181. ############################################################################################
  182. case 'mailing':
  183.  
  184. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  185.  
  186. if ($uid == $_SESSION['token']) {
  187. if (is_admin(array(101))){
  188.  
  189. $query = DB::run()->query("SELECT `users_login` FROM `users` WHERE `users_timelastlogin`>?;", array(SITETIME - (86400 * 7)));
  190. $users = $query->fetchAll(PDO::FETCH_COLUMN);
  191.  
  192. $users = array_diff($users, array($log));
  193. $total = count($users);
  194.  
  195. // Рассылка сообщений с подготовкой запросов
  196. if ($total>0){
  197.  
  198. $text = 'Поздравляем! Вы получили пригласительный ключ <br />Ваш ключ: %s';
  199.  
  200. $updateusers = DB::run() -> prepare("UPDATE `users` SET `users_newprivat`=`users_newprivat`+1 WHERE `users_login`=? LIMIT 1;");
  201. $insertprivat = DB::run() -> prepare("INSERT INTO `inbox` (`inbox_user`, `inbox_author`, `inbox_text`, `inbox_time`) VALUES (?, ?, ?, ?);");
  202. $dbr = DB::run() -> prepare("INSERT INTO `invite` (`key`, `user`, `time`) VALUES (?, ?, ?);");
  203.  
  204. foreach ($users as $user){
  205. $key = generate_password(rand(12, 15));
  206. $updateusers -> execute($user);
  207. $insertprivat -> execute($user, $log, sprintf($text, $key), SITETIME);
  208. $dbr -> execute($key, $user, SITETIME);
  209. }
  210.  
  211. notice('Ключи успешно разосланы! (Отправлено: '.$total.')');
  212. redirect("invitations.php?".SID);
  213.  
  214. } else {
  215. show_error('Ошибка! Отсутствуют получатели ключей!');
  216. }
  217. } else {
  218. show_error('Ошибка! Рассылать ключи может только администрация!');
  219. }
  220. } else {
  221. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  222. }
  223.  
  224. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?act=new&amp;'.SID.'">Вернуться</a><br />';
  225. break;
  226. ############################################################################################
  227. ## Генерация ключей ##
  228. ############################################################################################
  229. case 'generate':
  230.  
  231. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  232. $keys = (isset($_POST['keys'])) ? abs(intval($_POST['keys'])) : 0;
  233.  
  234. if ($uid == $_SESSION['token']) {
  235. if (!empty($keys)) {
  236.  
  237. $dbr = DB::run() -> prepare("INSERT INTO `invite` (`key`, `user`, `time`) VALUES (?, ?, ?);");
  238.  
  239. for($i = 0; $i < $keys; $i++) {
  240. $key = generate_password(rand(12, 15));
  241. $dbr -> execute($key, $log, SITETIME);
  242. }
  243.  
  244. notice('Ключи успешно сгенерированы!');
  245. redirect("invitations.php?".SID);
  246.  
  247. } else {
  248. show_error('Ошибка! Не указано число генерируемых ключей!');
  249. }
  250. } else {
  251. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  252. }
  253.  
  254. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?act=new&amp;'.SID.'">Вернуться</a><br />';
  255. break;
  256.  
  257. ############################################################################################
  258. ## Удаление ключей ##
  259. ############################################################################################
  260. case 'del':
  261.  
  262. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  263. $del = (isset($_REQUEST['del'])) ? intar($_REQUEST['del']) : 0;
  264.  
  265. if ($uid == $_SESSION['token']) {
  266. if (!empty($del)) {
  267.  
  268. $del = implode(',', $del);
  269.  
  270. DB::run() -> query("DELETE FROM `invite` WHERE `id` IN (".$del.");");
  271.  
  272. notice('Выбранные ключи успешно удалены!');
  273. redirect("invitations.php?used=$used&start=$start&".SID);
  274.  
  275. } else {
  276. show_error('Ошибка! Отсутствуют выбранные ключи!');
  277. }
  278. } else {
  279. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  280. }
  281.  
  282. echo '<img src="/images/img/back.gif" alt="image" /> <a href="invitations.php?'.SID.'">Вернуться</a><br />';
  283. break;
  284.  
  285. default:
  286. redirect("invitations.php?".SID);
  287. endswitch;
  288.  
  289. echo '<img src="/images/img/panel.gif" alt="image" /> <a href="index.php?'.SID.'">В админку</a><br />';
  290.  
  291. } else {
  292. redirect(BASEDIR.'index.php?'.SID);
  293. }
  294.  
  295. include_once ('../themes/footer.php');
  296. ?>