Ссылки (модуль phpFOX 3)

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2086
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

Ссылки (модуль phpFOX 3)

Сообщение Slash » Пт мар 04, 2016 1:54 pm

В phpFOX, как и во многих социальных сетях есть возможность добавить ссылку на страницу.

Инструмент для удаления лишних записей в таблице phpfox_link (ссылок)
Написал инструмент для удаления лишних записей в таблице phpfox_link. Сценарий выбирает все записи с таблицы phpfox_link, затем делает проверку по двум таблица phpfox_feed и phpfox_pages_feed, те записи, которые не найдены в этих двух таблицах, можно будет сразу удалить, нажав на ссылку Удалить.

И так, создаем файл: tool.php с таки содержимым:

Код: Выделить всё

<html> 
<head>
    <meta charset="utf-8">
    <title>Поиск лишних записей</title>
</head>
<body>

<?php
$dbhost    = '';
$dbuser    = '';
$dbpasswd  = '';
$dbname    = '';

$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$connect)
{
    echo 'Ошибка подключения MySQL: ' . mysqli_connect_error($connect);
    exit;
}

if (isset($_GET['del']))
{
    if (!$_GET['del'])
    {
        echo 'Ошибка GET.<br />';
    }
    else
    {
        $q = 'DELETE FROM phpfox_link WHERE link_id = ' . $_GET['del'];
        $r = mysqli_query($connect, $q);
        if (!$r)
        {
            echo 'Ошибка MySQL: ' . mysqli_error($connect) . '<br />';
        }
        else
        {
            echo 'Запись успешно удалена!<br />';            
        }
    }

    echo '<a href="tool.php">Продолжить проверку</a>.';
    exit;
}

$q = 'SELECT * FROM phpfox_link';
$r = mysqli_query($connect, $q);

$list = array();
while($row = mysqli_fetch_assoc($r))
{
    $list[] = $row;
}

echo '---------------<br />';
echo 'Проверка таблицы <strong>phpfox_feed</strong><br />';
echo '---------------<br />';

foreach ($list as $value)
{
    if ($value['module_id'] == null)
    {
        $q = 'SELECT * FROM phpfox_feed WHERE type_id = \'link\' AND item_id = ' . $value['link_id'];
        $r = mysqli_query($connect, $q);
        
        if (mysqli_num_rows($r) > 0)
        {
            echo $value['link_id'] . ' * Yes<br />';
        }
        else
        {
            echo $value['link_id'] . ' * No | <a href="tool.php?del=' . $value['link_id'] . '">Удалить</a><br />';
        }
    }
}

echo '---------------<br />';
echo 'Проверка таблицы <strong>phpfox_pages_feed</strong><br />';
echo '---------------<br />';

foreach ($list as $value)
{
    if ($value['module_id'] == 'pages')
    {
        $q = 'SELECT * FROM phpfox_pages_feed WHERE type_id = \'link\' AND item_id = ' . $value['link_id'];
        $r = mysqli_query($connect, $q);
        
        if (mysqli_num_rows($r) > 0)
        {
            echo $value['link_id'] . ' * Yes<br />';
        }
        else
        {
            echo $value['link_id'] . ' * No | <a href="tool.php?del=' . $value['link_id'] . '">Удалить</a><br />';
        }
    }
}
?>

</body>
</html>
Забить переменные своими данными доступа к Базе Данных:

Код: Выделить всё

$dbhost    = '';
$dbuser    = '';
$dbpasswd  = '';
$dbname    = '';
Залить файл tool.php в корень сайта и перейти по адресу: site.ru/tool.php. На экране появятся список таблицы phpfox_link, записи: id ссылки и Yes|No (есть или нету записи в таблицах лент новостей). Если запись о ссылке не будет найдена в таблицах лент новостей, то будет предложено удалить запись о ссылки в таблице phpfox_link, в виде ссылки Удалить рядом с информацией о записи. После нажатия на ссылку Удалить, сценарий выполнит действие по удалению записи и можно будет продолжить проверку ссылок.

По окончанию проверки, файл следует удалить с сервера, в целях безопасности.

Данным инструментом пользовался на живом сайте: http://danfa.net/, операция прошла без ошибок. Остается сделать обратную проверку записей о ссылки, то есть проверять наличие записи в таблице phpfox_link, которые есть в таблицах лент новостей. И наверно стоит сделать массовое удаление записей, что бы не "тыркаться" из-за каждой ссылки. Но это чуть позже.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2086
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

Re: Ссылки (модуль phpFOX 3)

Сообщение Slash » Пт мар 04, 2016 5:38 pm

Набросал ещё один инструмент для поиска "кривых" записях о ссылка, только мусор уже ищет в таблицах phpfox_feed и phpfox_pages_feed.
Для запуска проверки, создаем файл: tool.php с кодом внутри:

Код: Выделить всё

<html> 
<head>
    <meta charset="utf-8">
    <title>Поиск лишних записей</title>
</head>
<body>

<?php
$dbhost    = '';
$dbuser    = '';
$dbpasswd  = '';
$dbname    = '';

$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname);
if (!$connect)
{
    echo 'Ошибка подключения MySQL: ' . mysqli_connect_error($connect);
    exit;
}

$table = 'phpfox_feed';

if (isset($_GET['del']))
{
    if (!$_GET['del'])
    {
        echo 'Ошибка GET.<br />';
    }
    else
    {
        $q = 'DELETE FROM ' . $table . ' WHERE feed_id = ' . $_GET['del'];
        $r = mysqli_query($connect, $q);
        if (!$r)
        {
            echo 'Ошибка MySQL: ' . mysqli_error($connect) . '<br />';
        }
        else
        {
            echo 'Запись успешно удалена!<br />';            
        }
    }

    echo '<a href="tool.php">Продолжить проверку</a>.';
    exit;
}

$q = 'SELECT * FROM ' . $table . ' WHERE type_id = \'link\'';
$r = mysqli_query($connect, $q);

$list = array();
while($row = mysqli_fetch_assoc($r))
{
    $list[] = $row;
}

echo '---------------<br />';
echo 'Проверка таблицы <strong>' . $table . '</strong><br />';
echo '---------------<br />';

$num = 0;
$yes = 0;
$no  = 0;
foreach ($list as $value)
{
    $num++;
    $q = 'SELECT * FROM phpfox_link WHERE link_id = ' . $value['item_id'];
    $r = mysqli_query($connect, $q);    
    if (mysqli_num_rows($r) > 0)
    {
        $yes++;
        echo 'Номер: ' . $num . ' ID записи: ' . $value['feed_id'] . ' * Yes<br />';
    }
    else
    {
        $no++;
        echo 'Номер: ' . $num . ' ID записи: ' .  $value['feed_id'] . ' * No | <a href="tool.php?del=' . $value['feed_id'] . '">Удалить</a><br />';
    }
}

echo '---------------<br />';
echo 'Всего записей <strong>' . count($list) . '</strong> | Верные записи: <strong>' . $yes . '</strong> | Мусор: <strong>' . $no . '</strong><br />';
echo '---------------<br />';
?>

</body>
</html>
Заливаем в корень сайта и запускаем. Проверка будет выполнена по таблице phpfox_feed, после проверке меняем строку:

Код: Выделить всё

$table = 'phpfox_feed'; 
на:

Код: Выделить всё

$table = 'phpfox_pages_feed'; 
И запускаем сценарий ещё раз. Мусор так же можно сразу удалить по ссылке Удалить.

Аватара пользователя
Slash
Администратор
Сообщения: 2086
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 69 раз

Re: Ссылки (модуль phpFOX 3)

Сообщение Slash » Вс май 08, 2016 1:07 pm

При добавлении ссылки, как вложение, скажем в сообщение форума, без http://, могут возникнуть проблемы при переходе по такой ссылки.
Ссылки модуль phpFOX 3  - Add Link.jpg
Чтобы http:// была у адреса в любом случаи, даже если ее не написали, я сделал так:
Открываю: module/link/include/service/process.class.php, нахожу:

Код: Выделить всё

                'link'            => $this->preParse()->clean($aVals['link']['url'], 255),
Меняю на:

Код: Выделить всё

                'link'            => $this->preParse()->clean((!preg_match('#(http|https):\/\/#i', $aVals['link']['url']) ? 'http://' . $aVals['link']['url'] : $aVals['link']['url']), 1024),
Готово.

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость