mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Reports/Fixup
* also include source url when checking target context * cleanup source url to be usable as key
This commit is contained in:
@@ -144,11 +144,11 @@ class Report
|
|||||||
$this->subject ??= 0; // 0 for utility, tools and misc pages?
|
$this->subject ??= 0; // 0 for utility, tools and misc pages?
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkTargetContext() : int
|
private function checkTargetContext(?string $url) : int
|
||||||
{
|
{
|
||||||
// check already reported
|
// check already reported
|
||||||
$field = User::isLoggedIn() ? 'userId' : 'ip';
|
$field = User::isLoggedIn() ? 'userId' : 'ip';
|
||||||
if (DB::Aowow()->selectCell('SELECT 1 FROM ?_reports WHERE `mode` = ?d AND `reason`= ?d AND `subject` = ?d AND ?# = ?', $this->mode, $this->reason, $this->subject, $field, User::$id ?: User::$ip))
|
if (DB::Aowow()->selectCell('SELECT 1 FROM ?_reports WHERE `mode` = ?d AND `reason`= ?d AND `subject` = ?d{ AND `url` = ?} AND ?# = ?', $this->mode, $this->reason, $this->subject, $url ?: DBSIMPLE_SKIP, $field, User::$id ?: User::$ip))
|
||||||
return self::ERR_ALREADY_REPORTED;
|
return self::ERR_ALREADY_REPORTED;
|
||||||
|
|
||||||
// check targeted post/postOwner staff status
|
// check targeted post/postOwner staff status
|
||||||
@@ -190,7 +190,28 @@ class Report
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($err = $this->checkTargetContext())
|
// clean up src url: dont use anchors, clean up query
|
||||||
|
if ($pageUrl)
|
||||||
|
{
|
||||||
|
$urlParts = parse_url($pageUrl);
|
||||||
|
if (!empty($urlParts['query']))
|
||||||
|
{
|
||||||
|
parse_str($urlParts['query'], $query); // kills redundant param declarations
|
||||||
|
unset($query['locale']); // locale param shouldn't be needed. more..?
|
||||||
|
$urlParts['query'] = http_build_query($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pageUrl = '';
|
||||||
|
if (isset($urlParts['scheme']))
|
||||||
|
$pageUrl .= $urlParts['scheme'].':';
|
||||||
|
|
||||||
|
$pageUrl .= '//'.($urlParts['host'] ?? '').($urlParts['path'] ?? '');
|
||||||
|
|
||||||
|
if (isset($urlParts['query']))
|
||||||
|
$pageUrl .= '?'.$urlParts['query'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($err = $this->checkTargetContext($pageUrl))
|
||||||
{
|
{
|
||||||
$this->errorCode = $err;
|
$this->errorCode = $err;
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user