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

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Ссылки (модуль 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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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),

Готово.

Вернуться в «phpFOX»

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

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