Skip to content
Browse files

[BUG] Image reject repost board option now also affects YT embeds

  • Loading branch information...
1 parent 85f7e8e commit 41b06ff0372975718dd148ae28b693dfed5223fc @ctrlcctrlv committed Aug 23, 2015
Showing with 74 additions and 1 deletion.
  1. +47 −0 inc/functions.php
  2. +27 −1 post.php
View
47 inc/functions.php
@@ -2844,6 +2844,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;
View
28 post.php
@@ -358,6 +358,32 @@ function strip_array($var) {
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'])) {
@@ -909,7 +935,7 @@ function ipv4to6($ip) {
));
}
}
- }
+ }
if (!hasPermission($config['mod']['postunoriginal'], $board['uri']) && $config['robot_enable'] && checkRobot($post['body_nomarkup'])) {
undoImage($post);

0 comments on commit 41b06ff

Please sign in to comment.
Something went wrong with that request. Please try again.