1
0
mirror of https://github.com/vichan-devel/vichan.git synced 2024-11-28 09:20:58 +01:00
vichan/tools/hide_bans_links.php
2014-12-24 06:14:04 -08:00

35 lines
1.1 KiB
PHP

<?php
require dirname(__FILE__) . '/inc/cli.php';
$query = prepare('SELECT * FROM bans');
$query->execute() or error(db_error($query));
$num_bans = $query->rowCount();
$iter = 0;
while ($ban = $query->fetch(PDO::FETCH_ASSOC)) {
$iter++;
if (!$ban['post'])
continue;
$match_urls = '(?xi)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))';
$matched = array();
$post = json_decode($ban['post']);
preg_match_all("#$match_urls#im", $post->body_nomarkup, $matched);
if (!isset($matched[0]) || !$matched[0])
continue;
$post->body = str_replace($matched[0], '###Link-Removed###', $post->body);
$post->body_nomarkup = str_replace($matched[0], '###Link-Removed###', $post->body_nomarkup);
$update = prepare('UPDATE ``bans`` SET `post` = :post WHERE `id` = :id');
$update->bindValue(':post', json_encode($post));
$update->bindValue(':id', $ban['id']);
$update->execute() or error(db_error($update));
echo "Processed $iter/$num_bans\n";
}