Posted 19 апреля, 20168 yr comment_105431 Здравствуйте. В прошлый раз сделал скрипт, помогающий изменять автора темы, благодаря чему можно создать анонимный раздел. Но мне этого показалось мало и вот, я решил немного доработать свой файлик. Скажу сразу, это не мод, не хак и вообще не относится к движку форума. Это просто php файл, который изменяет данные в вашей MySQL базе. Итак, в любом месте вашего форума создаем файлик, с именем db_time.php и копируем в него вот это: Спойлер <!DOCTYPE html> <html> <head> <META content="text/html; charset=utf-8" http-equiv="Content-Type"> <style> table { border: 1px solid #ccc; border-radius: 5px; } table td { padding: 2px; } tr:nth-child(2n-1) { background: #f8f8f8; } body { font-family: Tahoma, Arial; font-size: 13px; } a { text-decoration: none; cursor: pointer; } a:hover { text-decoration: underline; } </style> </head> <body> <?php $mypass = "1234"; //Ваш секретный пароль $mypage = "db_time.php"; //Имя этого файла $id_post = $_POST['id_post']; $pass = $_POST['pass']; $days = $_POST['days']; $hours = $_POST['hours']; $minuts = $_POST['minuts']; $seconds = $_POST['seconds']; $plusminus = $_POST['plusminus']; $approved = $_POST['approved']; $calendar_dt = $_POST['calendar_dt']; $dt = new DateTime($calendar_dt); $author_id = $_POST['author_id']; $new_author = $author_id; if (!isset($dt)) { $dt = "0"; } if (!isset($days)) { $days = "0"; } if (!isset($hours)) { $hours = "0"; } if (!isset($minuts)) { $minuts = "0"; } if (!isset($seconds)) { $seconds = "0"; } if (!isset($plusminus)) { $plusminus = "0"; } if (!isset($approved)) { $approved = "0"; } if (!isset($author_id)) { $author_id = "1"; } if (!isset($message)) { $message = "<span style=\"color: #777\">Введите параметры</span>"; } mysql_connect("localhost", "username", "password"); //Ваши параметры подключения к бд mysql_select_db("dbname"); //Если у пользователя больше одной базы, имя этой базы (иначе эту строку нужно удалить... вроде :) ) mysql_query ("set_client='utf8'"); mysql_query ("set character_set_results='utf8'"); mysql_query ("set collation_connection='utf8_general_ci'"); mysql_query ("SET NAMES utf8"); if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass)) { $sql = "SELECT `post_date` FROM `forums_posts` WHERE `pid` = $id_post"; $result = mysql_query($sql) or die(mysql_error()); $current_post_time = mysql_fetch_array($result); if ((isset($current_post_time)) AND ($current_post_time != "")) { $sql1 = "SELECT `author_name` FROM `forums_posts` WHERE `pid` = $id_post"; $result1 = mysql_query($sql1) or die(mysql_error()); $post_author = mysql_fetch_array($result1); $post_author_old = $post_author[]; $sql7 = "SELECT `author_id` FROM `forums_posts` WHERE `pid` = $id_post"; $result7 = mysql_query($sql7) or die(mysql_error()); $author_id = mysql_fetch_array($result7); $old_author = $author_id[]; if (!isset($new_author)) { $new_author = $old_author; } $sql10 = "SELECT `name` FROM `core_members` WHERE `member_id` = $new_author"; $result10 = mysql_query($sql10) or die(mysql_error()); $post_author_new = mysql_fetch_array($result10); $post_author_new1 = $post_author_new[]; $post_author_new2 = mysql_escape_string($post_author_new1); if ((isset($current_post_time)) AND ($current_post_time != "")) { $current_post_time1 = date('H:i:s, d.m.Y ', $current_post_time[]); $message = "<span style=\"color: #777\">Время поста: <strong>". $current_post_time1 ."</strong> (" . $current_post_time[] . ") </span>"; } } else { $message = "<span style=\"color: red\">Неверное введен id поста (" . $id_post . ")</span>"; } } if ((isset($current_post_time[])) AND ($current_post_time[] != "") AND ($plusminus != )) { if ($plusminus == 1) { $new_post_time = $current_post_time[] + ($seconds + ($minuts * 60) + ($hours * 60 * 60) + ($days * 60 * 60 * 24)); } if ($plusminus == 2) { $new_post_time = $current_post_time[] - ($seconds + ($minuts * 60) + ($hours * 60 * 60) + ($days * 60 * 60 * 24)); } if ((isset($new_post_time)) AND ($new_post_time > )) { $new_post_time1 = date('H:i:s, d.m.Y ', $new_post_time); $message = "<span style=\"color: #0fc834\">Новое время: <strong>". $new_post_time1 ."</strong> (" . $new_post_time . "). ID автора: " . $new_author . "</span>"; } } if ((($days == "0") AND ($hours == "0") AND ($minuts == "0") AND ($seconds == "0")) OR (($days == "") AND ($hours == "") AND ($minuts == "") AND ($seconds == ""))) { if ((isset($calendar_dt)) AND ($calendar_dt != "")) { $new_post_time = $dt->getTimestamp(); if ((isset($new_post_time)) AND ($new_post_time > )) { $new_post_time1 = date('H:i:s, d.m.Y ', $new_post_time); $message = "<span style=\"color: #0fc834\">Новое время: <strong>". $new_post_time1 ."</strong> (" . $new_post_time . "). ID автора: " . $new_author . "</span>"; } } } if ($pass == $mypass) { if ((isset($new_post_time)) AND ($new_post_time > )) { $old_post_time = $current_post_time[]; $sql2 = "UPDATE `forums_posts` SET `post_date` = $new_post_time WHERE `post_date` = $old_post_time"; $result2 = mysql_query($sql2) or die(mysql_error()); $sql3 = "UPDATE `forums_topics` SET `start_date` = $new_post_time WHERE `start_date` = $old_post_time"; $result3 = mysql_query($sql3) or die(mysql_error()); $sql4 = "UPDATE `forums_topics` SET `last_post` = $new_post_time WHERE `last_post` = $old_post_time"; $result4 = mysql_query($sql4) or die(mysql_error()); $sql5 = "UPDATE `forums_topics` SET `last_real_post` = $new_post_time WHERE `last_real_post` = $old_post_time"; $result5 = mysql_query($sql5) or die(mysql_error()); $sql6 = "UPDATE `forums_forums` SET `last_post` = $new_post_time WHERE `last_post` = $old_post_time"; $result6 = mysql_query($sql6) or die(mysql_error()); $sql11 = "UPDATE `forums_forums` SET `last_poster_id` = $new_author WHERE `last_post` = $old_post_time"; $result11 = mysql_query($sql11) or die(mysql_error()); $sql12 = "UPDATE `forums_topics` SET `last_poster_id` = $new_author WHERE `start_date` = $old_post_time"; $result12 = mysql_query($sql12) or die(mysql_error()); $sql13 = "UPDATE `forums_topics` SET `last_poster_id` = $new_author WHERE `last_post` = $old_post_time"; $result13 = mysql_query($sql13) or die(mysql_error()); $sql14 = "UPDATE `forums_topics` SET `starter_id` = $new_author WHERE `last_post` = $old_post_time"; $result14 = mysql_query($sql14) or die(mysql_error()); if ((isset($id_post)) AND ($id_post != "")) { $sql8 = "UPDATE `forums_posts` SET `author_id` = $new_author WHERE `post_date` = $old_post_time"; $result8 = mysql_query($sql8) or die(mysql_error()); } if ($approved == "1") { $sql15 = "UPDATE `forums_topics` SET `approved` = 1 WHERE `start_date` = $old_post_time"; $result15 = mysql_query($sql15) or die(mysql_error()); } if ($approved == "2") { $sql15 = "UPDATE `forums_topics` SET `approved` = 0 WHERE `start_date` = $old_post_time"; $result15 = mysql_query($sql15) or die(mysql_error()); } } } else { if ((isset($pass)) AND ($pass != $mypass)) { $message = "<span style=\"color: red\">Неверный пароль!</span>"; } } if ((isset($new_post_time)) AND ($new_post_time > )) { $oktime = date('Y-m-d\TH:i:s', $new_post_time); } else { $oktime = date('Y-m-d\TH:i:s', $current_post_time[]); } ?> <form method="post" action="<?php echo $mypage; ?>"> <table align="center"> <tr> <td colspan="2" align="center"> <?php echo $message; ?> </td> </tr> <tr> <td width="350px"> ID поста: <?php if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass) AND (isset($current_post_time))) { echo "<strong>" . $id_post . "</strong>"; } ?> </td> <td width="100px" align="center"> <?php if ((isset($id_post)) AND ($id_post != "") AND ($pass == $mypass) AND (isset($current_post_time))) { echo ("<input type=\"text\" name=\"id_post\" size=\"10\" style=\"width: 5px; text-align: center; visibility: hidden; margin-right: -9px;\" readonly=\"readonly\" value=\"" . $id_post . "\">[<a href=\"". $mypage. "\">Изменить</a>]"); } else { echo ("<input type=\"text\" name=\"id_post\" size=\"10\" style=\"width: 88px; text-align: center;\" placeholder=\"id поста\" value=\"" . $id_post . "\""); } ?> </td> </tr> <?php if ((isset($pass)) AND ($pass != $mypass)) { $message = "<span style=\"color: red\">Неверный пароль!</span>"; } if ((isset($current_post_time)) AND ($current_post_time != "") AND ($pass == $mypass)) { echo (" <tr> <td colspan=\"2\"> Сдвиг времени: </td> </tr> <tr> <td> <select size=\"1\" name=\"plusminus\" style=\"width: 92px; height: 21px;\"> <option selected value=\"0\">Знак</option> <option value=\"1\">Плюс</option> <option value=\"2\">Минус</option> </select> <input type=\"text\" name=\"days\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"дней\" value=\"\"> <input type=\"text\" name=\"hours\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"часов\" value=\"\"> <input type=\"text\" name=\"minuts\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"минут\" value=\"\"> <input type=\"text\" name=\"seconds\" size=\"3\" style=\"width: 50px; text-align: center;\" placeholder=\"секунд\" value=\"\"> </td> <td align=\"center\"> <input type=\"reset\" style=\"width: 90px;\" value=\"Сброс\" /> </td> </tr> <tr> <td colspan=\"2\"> Либо точное время: </td> </tr> <tr> <td> <input type=\"datetime-local\" step=\"1\" value=\"" . $oktime ."\" name=\"calendar_dt\"/> </td> <td align=\"center\"> <input type=\"reset\" style=\"width: 90px;\" value=\"Сброс\" /> </td> </tr> <tr> <td colspan=\"2\"> Изменить автора поста: </td> </tr> <tr> <td> Текущий автор поста <strong>" . $post_author_new2 . "</strong> (id: " . $new_author . ") </td> <td width=\"70px\" align=\"center\"> <input type=\"text\" name=\"author_id\" size=\"3\" style=\"width: 88px; text-align: center;\" placeholder=\"id автора\" value=\"" . $new_author . "\"> </td> </tr> <tr> <td> Если пост является темой, утвердить? </td> <td width=\"70px\" align=\"center\"> <select size=\"1\" name=\"approved\" style=\"width: 92px; height: 21px;\"> <option selected value=\"0\">Не менять</option> <option value=\"1\">Да</option> <option value=\"2\">Нет</option> </select> </td> </tr> "); } ?> <tr> <td> Введите пароль: </td> <td width="70px" align="center"> <input type="text" name="pass" size="10" style="width: 88px; text-align: center;" placeholder="пароль" value="<?php echo $pass ?>"> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" style="width: 90px;" value="Применить" /> </td> </tr> </table> </form> </body> </html> Немного настраиваем наш файлик: Изменяем ваш секретный пароль, имя файла (если оно отличается от db_time.php) и настраиваем ваше подключение к базе данных. Теперь, при переходе по адресу, например http://ваш_сайт.ru/db_time.php (или куда вы там его засунули), вы увидите вот такую картину: После того, как вы введете номер поста и свой пароль, появится примерно вот такое окно: Дальше думаю разберетесь. Есть два способа изменить время: сдвинуть вперед или назад на определенное количество времени, либо указать точное. Если в полях "сдвига" ничего не написано, то учитывается время из поля "Точное время". Внимание! Код очень сырой, кривой и весь на костылях, поскольку я не специалист и поэтому использование этого кода только на ваш страх и риск, ко мне прошу никаких претензий. Но у меня всё работает p.s. Решил дописать, если для вас составляет трудность, определить id поста, то можете в редакторе шаблонов, например в forums -> topics -> post или forums -> topics -> postContainer в нужное вам место вставить {$comment->pid} У меня получилось вот так:
19 апреля, 20168 yr comment_105439 Вот готовый плагин для анонимных сообщений - https://invisionpower.com/files/file/7862-post-anonymously-in-forums/ Вот готовый плагин для смены автора темы - https://invisionpower.com/files/file/7352-change-post-author/
19 апреля, 20168 yr Author comment_105449 Redneck, спасибо за ссылки. Правда думаю эти плагины работают не совсем так, как мне нужно. В плагине анонимного постигла пользователи сами переключают возможность анонимного постинга, а у меня получается раздел (а-ля послушано). И могу сделать анонимным любой пост быстро. Хотя я его не ставил, не знаю точно. Плагине смены автора хорош, но у меня ещё есть возможность смены времени и аппрува, если тема не утверждена. Да и зачем я буду покупать, когда могу сделать сам)) *Постигла=постинга *Плагине=плагин. Очепятки))
20 апреля, 20168 yr comment_105482 13 часов назад, Sergeevich сказал: Да и зачем я буду покупать, когда могу сделать сам)) Зачем я буду делать сам, когда могу скачать? Простите - шутка минутка А вообще задумка интересная )
20 апреля, 20168 yr comment_105490 41 минут назад, Sergeevich сказал: @ArcheR_AWG, просто скачать или купить и скачать? зависит от необходимости и срочности
5 мая, 20168 yr Author comment_106503 Я немного доработал свой скрипт и исправил пару ошибок, но изменить первое сообщение увы не могу. Если кому-то понадобится актуальная версия, пишите в личку.
12 мая, 20168 yr Author comment_106917 Так как несколько раз уже просили в личку, выкладываю новую версию своего скрипта. Проделано очень много работы, кода стало в 3 раза больше. Исправлено куча ошибок. Пользуйтесь. db_time.php
9 августа, 20168 yr comment_111256 Установил, не хочет работать, когда ввожу ID поста и пароль пишет Table 'host5567_admin.forums_posts' doesn't exist
17 августа, 20168 yr Author comment_111448 В 09.08.2016 в 00:20, Verty сказал: Установил, не хочет работать, когда ввожу ID поста и пароль пишет Table 'host5567_admin.forums_posts' doesn't exist Возможно проблема связана с вашим префиксом имен таблиц БД. Напишите мне в личку, попробуем решить вопрос.
5 ноября, 20177 yr comment_138877 В 12.05.2016 в 09:13, Heavenanvil сказал: Так как несколько раз уже просили в личку, выкладываю новую версию своего скрипта. Проделано очень много работы, кода стало в 3 раза больше. Исправлено куча ошибок. Пользуйтесь. db_time.php Интересный скрипт. Жаль не работает. Файл настроил, загрузил, права выставил. При открытии файла белая страница. IPS 4.2.5.
5 ноября, 20177 yr Author comment_138879 Версия ips тут не причем. Вероятно скрипт не адаптирован под php 7. Напишите мне в личку, решим вопрос.
30 декабря, 20176 yr comment_141382 В 17.08.2016 в 12:46, Heavenanvil сказал: Возможно проблема связана с вашим префиксом имен таблиц БД. Напишите мне в личку, попробуем решить вопрос. У меня аналогичная проблема, как решить? Напишите в открытом доступе плз
30 декабря, 20176 yr comment_141383 Нашел решение. Нужно в файл автора добавить свой префикс ко всем таблицам. Я делал вручную, смотрел что в коде похоже на таблицу, смотрел есть ли она в PhpMyAdmin и если есть, то добавлял префикс. Удивительно, но получилось с первого раза, и даже код заработал - изменил дату поста. Очень удобно. Я думаю автор напишет точно, где именно добавлять префикс. Всего 125 добавлений надо будет сделать. Я могу сказать, что это следующие: core_members forums_posts forums_topics forums_forums core_search_index
30 декабря, 20176 yr comment_141384 Пару багов нашел, описал тут http://forum.orkons.ru/topic/179-kak-smenit-datu-posta-ips-425/
14 мая, 20186 yr comment_147598 Братья, а если админ не имеет доступа к БД, то как можно поменять таблицу members? Надо изменить дату регистрации юзверя.
4 ноября, 20186 yr comment_152624 Ошибка на версии 4.3.6 - Unknown column 'название базы' in 'where clause' Я так понял, нужно что-то в скобки добавить, но не пойму что.
4 ноября, 20186 yr Author comment_152625 28 минут назад, tunofak сказал: Ошибка на версии 4.3.6 - Unknown column 'название базы' in 'where clause' Я так понял, нужно что-то в скобки добавить, но не пойму что. А вы не путаете название базы и название столбца?
4 ноября, 20186 yr comment_152626 mysql_connect("localhost", "ЛОГИН", "ПАРОЛЬ"); // Ваши параметры подключения к бд mysql_select_db("bazamysql"); // Если у пользователя больше одной базы, имя этой базы (иначе эту строку нужно удалить) Я когда переходу по ссылке в dm_dbtime.php у меня показывает, что название базы bazamysql-1 (Я когда базу создавал, сделал такое название, потом я выкачал БД и заново закачал под названием bazamysql
12 сентября, 20213 yr comment_172404 Для 4.6 актуально, работает? ☺️ Вот ещё есть решение https://invisioncommunity.com/files/file/8684-change-post-date/ Edited 12 сентября, 20213 yr by bsnet
12 сентября, 20213 yr comment_172405 31 минуту назад, bsnet сказал: Для 4.6 актуально, работает? ☺️ если на пхп от 5.6 и ниже скрип запускать будете, то вероятно.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.