24.01.2021 01:40:15 am
Потребовалось с одной странице (группы) перенести некоторые заметки в другую. Чтобы осуществить перенос, необходимо изменить определенные значения в Базе Данных. Контента оказалось не мало, что исправлять значения в ручную. Тогда я решил написать инструмент, чтобы облегчить себе выполнение поставленной задачи.
Значения правятся в таблице стены страниц, общей стены и таблице самой записи, например, видео, фото, блог и так далее. Для себя, я как то, добавил в таблицу общей стены поле "page_id", по этому мне пришлось изменять значение и там. Если у Вас нет такого поля в таблице
Код инструмента:
В функцию
Пользоваться функцией так:
На данный момент, функция может принять два типа записи, это
Если надо массово перенести контент (не по одной записи), можно составить массив, например:
И прогнать его, через цикл:
Обратите внимание на строчку в коде:
Это говорит о том, что файл, в котором будет находиться данный код, должен быть в папке, что находится в корне сайта. Обращаться к инструменту по адресу: "site/папка/tool.php".
Значения правятся в таблице стены страниц, общей стены и таблице самой записи, например, видео, фото, блог и так далее. Для себя, я как то, добавил в таблицу общей стены поле "page_id", по этому мне пришлось изменять значение и там. Если у Вас нет такого поля в таблице
feed
, то исправляйте запрос, под свою структуру.Код инструмента:
<?php
define('PHPFOX', true);
include('../include/setting/server.sett.php');
$db = new mysqli($_CONF['db']['host'], $_CONF['db']['user'], $_CONF['db']['pass'], $_CONF['db']['name']);
if ($db->connect_errno)
{
exit('Error MYSQLI: ' . $db->connect_error);
}
$db->set_charset('utf8');
function carryover($item, $itemID, $pageID, $userID)
{
global $db;
// "phpfox_" - Префикс таблицы (При необходимости, сменить на свой)
$prefix = 'phpfox_';
$field = 'item_id';
if ($item == 'photo')
{
$field = 'group_id';
}
$q = 'UPDATE ' . $prefix . $item . '
SET
' . $field . ' = ' . (int) $pageID . ',
user_id = ' . (int) $userID . '
WHERE ' . $item . '_id = ' . (int) $itemID;
$db->query($q) or exit($db->error);
$q = 'UPDATE ' . $prefix . 'feed
SET
page_id = ' . (int) $pageID . ',
user_id = ' . (int) $userID . '
WHERE type_id = \'' . $item . '\' AND item_id = ' . (int) $itemID;
$db->query($q) or exit($db->error);
$q = 'UPDATE ' . $prefix . 'pages_feed
SET
parent_user_id = ' . (int) $pageID . ',
user_id = ' . (int) $userID . '
WHERE type_id = \'' . $item . '\' AND item_id = ' . (int) $itemID;
$db->query($q) or exit($db->error);
echo 'Ok!';
}
В функцию
carryover
входят четыре обязательных параметра:$item
- Обрабатываемый предмет (Например: photo, video)$itemID
- Идентификатор предмета$pageID
- Идентификатор страницы, куда перенести предмет$userID
- Идентификатор автора предметаПользоваться функцией так:
carryover('video', 1932, 104, 777);
На данный момент, функция может принять два типа записи, это
photo
и video
. Возможно в будущем, я добавлю типов записи.Если надо массово перенести контент (не по одной записи), можно составить массив, например:
$array = [
['photo', 1918],
['photo', 1919],
['photo', 1920],
['photo', 1921],
['photo', 1922],
['photo', 1934],
['photo', 1947],
['photo', 1962],
['photo', 1963],
['photo', 1974],
['photo', 1980],
['photo', 1981],
['photo', 2017],
['photo', 2047]
];
И прогнать его, через цикл:
foreach ($array as $arr)
{
carryover($arr[0], $arr[1], 104, 777);
}
Обратите внимание на строчку в коде:
include('../include/setting/server.sett.php');
Это говорит о том, что файл, в котором будет находиться данный код, должен быть в папке, что находится в корне сайта. Обращаться к инструменту по адресу: "site/папка/tool.php".
- Жалоба