=> 'admin' => 'ddle' ]; $ver = '1.0.1'; set_time_limit(0); class db {} class ddd_db { public $link = null; public function __construct($DBHOST,$DBUSER, $DBPASS, $DBNAME) { $this->link = mysqli_connect($DBHOST,$DBUSER, $DBPASS, $DBNAME); return $this->link; } public function exec($sql){ $ret = mysqli_query($this->link, $sql); if ($ret === false) { $err = mysqli_error($this->link); if ($err) throw new Exception($err); } return $ret; } public function getRows($sql){ $ret = null; if ($result = $this->exec($sql)) { $ret = []; if (mysqli_num_rows($result)>0) { while ($row = mysqli_fetch_assoc($result)) { $ret[] = $row; } } mysqli_free_result($result); } return $ret; } public function getRow($sql){ $ret = null; if ($result = $this->exec($sql)) { $ret = []; if (mysqli_num_rows($result)>0) { $ret = mysqli_fetch_assoc($result); } mysqli_free_result($result); } return $ret; } public function getFirst($sql){ $ret = null; if ($row = $this->getRow($sql)) { $ret = array_shift($row); } return $ret; } } class DDD_Request { public function post($var, $default=null) { return isset($_POST[$var]) ? $_POST[$var] : $default; } public function form($var=null, $default=null){ if (is_null($var)) { return isset($_POST['form']) ? $_POST['form'] : $default; } return isset($_POST['form'][$var]) ? $_POST['form'][$var] : $default; } } $db = null; if (file_exists('engine/data/dbconfig.php')) { require_once('engine/data/dbconfig.php'); $db = new ddd_db(DBHOST, DBUSER, DBPASS, DBNAME); } $request = new DDD_Request; // ------------------------------------------------------------------------------------------- if ($useHttpBasicAuth) { $realm = 'Restricted area'; $valid_passwords = $httpBasicAuthAllowedUsers; $valid_users = array_keys($valid_passwords); $user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; $pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; $validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]); if (!$validated) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); die ("Not authorized"); } } // ------------------------------------------------------------------------------------------- $form = [ 'date_from' => $request->form('date_from', date('Y-m-d', strtotime('-1 year'))), 'date_to' => $request->form('date_to', date('Y-m-d', strtotime('+1 year'))), 'use_limits' => $request->form('use_limits'), 'offset' => $request->form('offset'), 'limit' => $request->form('limit'), 'use_sort' => $request->form('use_sort'), 'sort' => $request->form('sort', 'id_asc'), 'update_comments' => $request->form('update_comments', 1), 'update_comments_interval_from' => $request->form('update_comments_interval_from', 1), 'update_comments_interval_to' => $request->form('update_comments_interval_to', 7), 'use_sql_append_select' => $request->form('use_sql_append_select'), 'use_sql_append_update' => $request->form('use_sql_append_update'), 'sql_append_select' => $request->form('sql_append_select'), 'sql_append_update_set' => $request->form('sql_append_update_set'), 'sql_append_update_where' => $request->form('sql_append_update_where'), ]; $totalPosts = 0; if ($db && $db->link) { $totalPosts = $db->getFirst('SELECT COUNT(id) FROM '.PREFIX.'_post'); if (!$request->form()) { $form['limit'] = $totalPosts; } } $sqlSelectionCode = 'SELECT id FROM '.PREFIX.'_post'; if ($form['use_sql_append_select']) { $sqlSelectionCode .= PHP_EOL.trim($form['sql_append_select']); } if ($form['use_sort']) { $sqlSelectionCode .= PHP_EOL.' ORDER BY '; switch ($form['sort']) { default: case 'id_asc': $sqlSelectionCode .= 'id ASC'; break; case 'rand': $sqlSelectionCode .= 'RAND()'; break; case 'id_desc': $sqlSelectionCode .= 'id DESC'; break; } } if ($form['use_limits']) { $sqlSelectionCode .= PHP_EOL.' LIMIT '.intval($form['offset']).','.intval($form['limit']); } $sqlUpdateCode = 'UPDATE '.PREFIX.'_post SET'; $sqlUpdateCode .= PHP_EOL.'date = "{{NEW_RANDOM_DATE}}"'; if ($form['use_sql_append_update']) { $sqlUpdateCode .= PHP_EOL.trim($form['sql_append_update_set']); } $sqlUpdateCode .= PHP_EOL.'WHERE id = {{POST_ID}}'; if ($form['use_sql_append_update']) { $sqlUpdateCode .= PHP_EOL.trim($form['sql_append_update_where']); } $sqlUpdateCode .= PHP_EOL.'LIMIT 1'; $submitExecSqlResult = null; if ($request->form('submit_exec_sql')) { $posts = $db->getRows($sqlSelectionCode); $fromTs = strtotime($request->form('date_from')); $toTs = strtotime($request->form('date_to')) + 24*60*60 - 1; foreach($posts as $post) { $randomDateTs = rand($fromTs, $toTs); $sql = str_replace( ['{{NEW_RANDOM_DATE}}','{{POST_ID}}'], [date('Y-m-d H:i:s',$randomDateTs), $post['id']], $sqlUpdateCode ); try { $db->exec($sql); if ($request->form('update_comments')) { $comments = $db->getRows('SELECT id FROM '.PREFIX.'_comments WHERE post_id='.intval($post['id']).' ORDER BY date ASC'); if ($comments) { $commentDate = $randomDateTs; foreach ($comments as $comment) { $commentDateOffset = rand( intval($request->form('update_comments_interval_from'))*24*60*60, intval($request->form('update_comments_interval_to'))*24*60*60 ); $commentDate += $commentDateOffset; try { $commentsSql = 'UPDATE '.PREFIX.'_comments SET date="'.date('Y-m-d H:i:s',$commentDate).'" WHERE id='.intval($comment['id']).' LIMIT 1'; $db->exec($commentsSql); } catch(Exception $ex) { $submitExecSqlResult = $ex->getMessage().PHP_EOL.PHP_EOL.$sql.PHP_EOL.PHP_EOL.$commentsSql; break(2); } } } } $submitExecSqlResult = true; } catch(Exception $ex) { $submitExecSqlResult = $ex->getMessage().PHP_EOL.PHP_EOL.$sql; break; } } } ?> DDLE <?=$ver?>

Инфо

Подключение к БД: link):?> Нет Есть
link):?> Всего постов:

link):?> Файл engine/data/dbconfig.php не найден Не могу подключиться используя параметры:
DBHOST:
DBUSER:
DBPASS:
DBNAME:

Изменение дат постов

Новая дата, от даты:

Новая дата, до даты:


> Использовать лимиты
Начать с:

Кол-во:

** Если не установлены лимиты изменения будет применены ко всем постам
> Использовать сортировку

> Добавить SQL к выборке постов

> Добавить SQL к обновлению постов
В SET секцию запроса
В WHERE секцию запроса

> Согласовать дату комментариев с датой поста
Интервал между комментариями (в днях)
от:

до:

** последовательность комментариев будет сохранена

      Выполнено!
form('submit_show_sql')):?>

SQL код выборки постов

',htmlspecialchars($sqlSelectionCode))?> **С помощью этого кода будут выбраны посты

SQL код обновления поста

',htmlspecialchars($sqlUpdateCode))?> **Этот код будет применен для каждого выбранного поста