more image report display options
This commit is contained in:
parent
b533a43428
commit
bc3e482247
@ -22,21 +22,28 @@ class RemoveReportedImageEvent extends Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class AddReportedImageEvent extends Event {
|
class AddReportedImageEvent extends Event {
|
||||||
|
/** @var ImageReport */
|
||||||
|
public $report;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ImageReport $report
|
||||||
|
*/
|
||||||
|
public function __construct($report) {
|
||||||
|
$this->report = $report;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ImageReport {
|
||||||
/** @var int */
|
/** @var int */
|
||||||
public $reporter_id;
|
public $user_id;
|
||||||
/** @var int */
|
/** @var int */
|
||||||
public $image_id;
|
public $image_id;
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $reason;
|
public $reason;
|
||||||
|
|
||||||
/**
|
public function __construct($image_id, $user_id, $reason) {
|
||||||
* @param int $image_id
|
|
||||||
* @param int $reporter_id
|
|
||||||
* @param string $reason
|
|
||||||
*/
|
|
||||||
public function __construct($image_id, $reporter_id, $reason) {
|
|
||||||
$this->reporter_id = $reporter_id;
|
|
||||||
$this->image_id = $image_id;
|
$this->image_id = $image_id;
|
||||||
|
$this->user_id = $user_id;
|
||||||
$this->reason = $reason;
|
$this->reason = $reason;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -56,7 +63,7 @@ class ReportImage extends Extension {
|
|||||||
if($event->get_arg(0) == "add") {
|
if($event->get_arg(0) == "add") {
|
||||||
if(!empty($_POST['image_id']) && !empty($_POST['reason'])) {
|
if(!empty($_POST['image_id']) && !empty($_POST['reason'])) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
send_event(new AddReportedImageEvent($image_id, $user->id, $_POST['reason']));
|
send_event(new AddReportedImageEvent(new ImageReport($image_id, $user->id, $_POST['reason'])));
|
||||||
$page->set_mode("redirect");
|
$page->set_mode("redirect");
|
||||||
$page->set_redirect(make_link("post/view/$image_id"));
|
$page->set_redirect(make_link("post/view/$image_id"));
|
||||||
}
|
}
|
||||||
@ -93,11 +100,11 @@ class ReportImage extends Extension {
|
|||||||
|
|
||||||
public function onAddReportedImage(AddReportedImageEvent $event) {
|
public function onAddReportedImage(AddReportedImageEvent $event) {
|
||||||
global $database;
|
global $database;
|
||||||
log_info("report_image", "Adding report of Image #{$event->image_id} with reason '{$event->reason}'", false, array("image_id" => $event->image_id));
|
log_info("report_image", "Adding report of Image #{$event->report->image_id} with reason '{$event->report->reason}'", false, array("image_id" => $event->report->image_id));
|
||||||
$database->Execute(
|
$database->Execute(
|
||||||
"INSERT INTO image_reports(image_id, reporter_id, reason)
|
"INSERT INTO image_reports(image_id, reporter_id, reason)
|
||||||
VALUES (?, ?, ?)",
|
VALUES (?, ?, ?)",
|
||||||
array($event->image_id, $event->reporter_id, $event->reason));
|
array($event->report->image_id, $event->report->user_id, $event->report->reason));
|
||||||
$database->cache->delete("image-report-count");
|
$database->cache->delete("image-report-count");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +124,7 @@ class ReportImage extends Extension {
|
|||||||
public function onDisplayingImage(DisplayingImageEvent $event) {
|
public function onDisplayingImage(DisplayingImageEvent $event) {
|
||||||
global $user;
|
global $user;
|
||||||
if($user->can('create_image_report')) {
|
if($user->can('create_image_report')) {
|
||||||
$reps = $this->get_reporters($event->image);
|
$reps = $this->get_reports($event->image);
|
||||||
$this->theme->display_image_banner($event->image, $reps);
|
$this->theme->display_image_banner($event->image, $reps);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,6 +148,20 @@ class ReportImage extends Extension {
|
|||||||
$this->delete_reports_by($event->id);
|
$this->delete_reports_by($event->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
|
$sb = new SetupBlock("Image Reports");
|
||||||
|
|
||||||
|
$opts = array(
|
||||||
|
"Reporter Only" => "user",
|
||||||
|
"Reason Only" => "reason",
|
||||||
|
"Both" => "both",
|
||||||
|
"None" => "none",
|
||||||
|
);
|
||||||
|
$sb->add_choice_option("report_image_publicity", $opts, "Show publicly: ");
|
||||||
|
|
||||||
|
$event->panel->add_block($sb);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $user_id
|
* @param int $user_id
|
||||||
*/
|
*/
|
||||||
@ -168,17 +189,21 @@ class ReportImage extends Extension {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Image $image
|
* @param Image $image
|
||||||
* @return string[]
|
* @return ImageReport[]
|
||||||
*/
|
*/
|
||||||
public function get_reporters(Image $image) {
|
public function get_reports(Image $image) {
|
||||||
global $database;
|
global $database;
|
||||||
|
|
||||||
return $database->get_col("
|
$rows = $database->get_all("
|
||||||
SELECT users.name
|
SELECT *
|
||||||
FROM image_reports
|
FROM image_reports
|
||||||
JOIN users ON reporter_id = users.id
|
|
||||||
WHERE image_reports.image_id = :image_id
|
WHERE image_reports.image_id = :image_id
|
||||||
", array("image_id" => $image->id));
|
", array("image_id" => $image->id));
|
||||||
|
$reps = array();
|
||||||
|
foreach($rows as $row) {
|
||||||
|
$reps[] = new ImageReport($row["image_id"], $row["reporter_id"], $row["reason"]);
|
||||||
|
}
|
||||||
|
return $reps;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,7 @@ class ReportImageTheme extends Themelet {
|
|||||||
* @param array $reports
|
* @param array $reports
|
||||||
*/
|
*/
|
||||||
public function display_reported_images(Page $page, $reports) {
|
public function display_reported_images(Page $page, $reports) {
|
||||||
global $config;
|
global $config, $user;
|
||||||
|
|
||||||
$h_reportedimages = "";
|
$h_reportedimages = "";
|
||||||
foreach($reports as $report) {
|
foreach($reports as $report) {
|
||||||
@ -27,7 +27,6 @@ class ReportImageTheme extends Themelet {
|
|||||||
$reporter_name = html_escape($report['reporter_name']);
|
$reporter_name = html_escape($report['reporter_name']);
|
||||||
$userlink = "<a href='".make_link("user/$reporter_name")."'>$reporter_name</a>";
|
$userlink = "<a href='".make_link("user/$reporter_name")."'>$reporter_name</a>";
|
||||||
|
|
||||||
global $user;
|
|
||||||
$iabbe = new ImageAdminBlockBuildingEvent($image, $user);
|
$iabbe = new ImageAdminBlockBuildingEvent($image, $user);
|
||||||
send_event($iabbe);
|
send_event($iabbe);
|
||||||
ksort($iabbe->parts);
|
ksort($iabbe->parts);
|
||||||
@ -65,15 +64,31 @@ class ReportImageTheme extends Themelet {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Image $image
|
* @param Image $image
|
||||||
* @param array $reporters
|
* @param ImageReport[] $reports
|
||||||
*/
|
*/
|
||||||
public function display_image_banner(Image $image, /*array*/ $reporters) {
|
public function display_image_banner(Image $image, /*array*/ $reports) {
|
||||||
global $page;
|
global $config, $page;
|
||||||
|
|
||||||
$i_image = int_escape($image->id);
|
$i_image = int_escape($image->id);
|
||||||
$html = "";
|
$html = "";
|
||||||
if(count($reporters) > 0) {
|
$public = $config->get_string("report_image_publicity");
|
||||||
$html .= "<b>Image reported by ".html_escape(implode(", ", $reporters))."</b><p>";
|
if($public != "none" && count($reports) > 0) {
|
||||||
|
$html .= "<b>Current reports:</b>";
|
||||||
|
foreach($reports as $report) {
|
||||||
|
$html .= "<br>";
|
||||||
|
if($public == "both") {
|
||||||
|
$html .= html_escape(User::by_id($report->user_id)->name);
|
||||||
|
$html .= " - ";
|
||||||
|
$html .= html_escape($report->reason);
|
||||||
|
}
|
||||||
|
elseif($public == "user") {
|
||||||
|
$html .= html_escape(User::by_id($report->user_id)->name);
|
||||||
|
}
|
||||||
|
elseif($public == "reason") {
|
||||||
|
$html .= html_escape($report->reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$html .= "<p>";
|
||||||
}
|
}
|
||||||
$html .= "
|
$html .= "
|
||||||
".make_form(make_link("image_report/add"))."
|
".make_form(make_link("image_report/add"))."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user