diff options
| author | Fredrick Brennan <admin@8chan.co> | 2015-08-23 09:04:37 +0800 |
|---|---|---|
| committer | czaks <marcin@6irc.net> | 2016-05-06 15:12:08 +0200 |
| commit | b476b660073adbe827836a7e7860b0fb3a061ff0 (patch) | |
| tree | a867863c39eb1254e59d9c07d3734bd8ce7f1622 | |
| parent | 2fa37278db9ad0e802a2b4c6a54c5d179ce6df35 (diff) | |
[BUG] Image reject repost board option now also affects YT embeds
| -rwxr-xr-x | inc/functions.php | 47 | ||||
| -rw-r--r-- | post.php | 28 |
2 files changed, 74 insertions, 1 deletions
diff --git a/inc/functions.php b/inc/functions.php index d28d018d..cbe0bc62 100755 --- a/inc/functions.php +++ b/inc/functions.php @@ -2438,6 +2438,53 @@ function getPostByHashInThread($hash, $thread) { return false; } +function getPostByEmbed($embed) { + global $board, $config; + $matches = array(); + foreach ($config['embedding'] as &$e) { + if (preg_match($e[0], $embed, $matches) && isset($matches[1]) && !empty($matches[1])) { + $embed = '%'.$matches[1].'%'; + break; + } + } + + if (!isset($embed)) return false; + + $query = prepare(sprintf("SELECT `id`,`thread` FROM ``posts_%s`` WHERE `embed` LIKE :embed", $board['uri'])); + $query->bindValue(':embed', $embed, PDO::PARAM_STR); + $query->execute() or error(db_error($query)); + + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { + return $post; + } + + return false; +} + +function getPostByEmbedInThread($embed, $thread) { + global $board, $config; + $matches = array(); + foreach ($config['embedding'] as &$e) { + if (preg_match($e[0], $embed, $matches) && isset($matches[1]) && !empty($matches[1])) { + $embed = '%'.$matches[1].'%'; + break; + } + } + + if (!isset($embed)) return false; + + $query = prepare(sprintf("SELECT `id`,`thread` FROM ``posts_%s`` WHERE `embed` = :embed AND ( `thread` = :thread OR `id` = :thread )", $board['uri'])); + $query->bindValue(':embed', $embed, PDO::PARAM_STR); + $query->bindValue(':thread', $thread, PDO::PARAM_INT); + $query->execute() or error(db_error($query)); + + if ($post = $query->fetch(PDO::FETCH_ASSOC)) { + return $post; + } + + return false; +} + function undoImage(array $post) { if (!$post['has_file'] || !isset($post['files'])) return; @@ -294,6 +294,32 @@ if (isset($_POST['delete'])) { if (!isset($post['embed'])) { error($config['error']['invalid_embed']); } + + if ($config['image_reject_repost']) { + if ($p = getPostByEmbed($post['embed'])) { + error(sprintf($config['error']['fileexists'], + ($post['mod'] ? $config['root'] . $config['file_mod'] . '?/' : $config['root']) . + ($board['dir'] . $config['dir']['res'] . + ($p['thread'] ? + $p['thread'] . '.html#' . $p['id'] + : + $p['id'] . '.html' + )) + )); + } + } else if (!$post['op'] && $config['image_reject_repost_in_thread']) { + if ($p = getPostByEmbedInThread($post['embed'], $post['thread'])) { + error(sprintf($config['error']['fileexistsinthread'], + ($post['mod'] ? $config['root'] . $config['file_mod'] . '?/' : $config['root']) . + ($board['dir'] . $config['dir']['res'] . + ($p['thread'] ? + $p['thread'] . '.html#' . $p['id'] + : + $p['id'] . '.html' + )) + )); + } + } } if (!hasPermission($config['mod']['bypass_field_disable'], $board['uri'])) { @@ -798,7 +824,7 @@ if (isset($_POST['delete'])) { )); } } - } + } if (!hasPermission($config['mod']['postunoriginal'], $board['uri']) && $config['robot_enable'] && checkRobot($post['body_nomarkup'])) { undoImage($post); |
