mirror of
https://github.com/LBRYFoundation/lbry.com.git
synced 2025-08-23 17:47:26 +00:00
Fix claimId not being passed to report form. (#1135)
* Fix claimId not being passed to report form. * Delegate methods so DRY isn't that hurt. Since the router doesn't support optional routing and this application uses an EOL (End of Life) PHP version the only thing I was able to do was extracting duplicated code into private methods.
This commit is contained in:
parent
96c0a94ead
commit
50615c34d4
3 changed files with 90 additions and 16 deletions
|
@ -127,6 +127,7 @@ class Controller
|
||||||
$router->any('/list/edit/{token}', 'MailActions::editEmailSettings');
|
$router->any('/list/edit/{token}', 'MailActions::editEmailSettings');
|
||||||
|
|
||||||
$router->any('/dmca', 'ReportActions::executeDmca');
|
$router->any('/dmca', 'ReportActions::executeDmca');
|
||||||
|
$router->any('/dmca/{claimid}', 'ReportActions::executeDmcaWithClaimId');
|
||||||
|
|
||||||
$router->post('/youtube/edit', 'AcquisitionActions::executeYoutubeEdit');
|
$router->post('/youtube/edit', 'AcquisitionActions::executeYoutubeEdit');
|
||||||
$router->post('/youtube/token', 'AcquisitionActions::executeYoutubeToken');
|
$router->post('/youtube/token', 'AcquisitionActions::executeYoutubeToken');
|
||||||
|
|
|
@ -2,32 +2,80 @@
|
||||||
|
|
||||||
class ReportActions extends Actions
|
class ReportActions extends Actions
|
||||||
{
|
{
|
||||||
public static function executeDmca()
|
|
||||||
{
|
/**
|
||||||
Response::setHeader(Response::HEADER_CROSS_ORIGIN, "*");
|
* Handles all routing requests without a claimId as parameter.
|
||||||
if (!Request::isPost()) {
|
* E.g. /dmca
|
||||||
return ['report/dmca'];
|
*
|
||||||
}
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static function executeDmca() {
|
||||||
|
|
||||||
|
self::setResponseHeader();
|
||||||
|
self::redirectIfPostRequest(false, '');
|
||||||
|
|
||||||
$values = [];
|
$values = [];
|
||||||
$errors = [];
|
$errors = [];
|
||||||
|
|
||||||
|
self::validateForm($values, $errors);
|
||||||
|
|
||||||
|
return ['report/dmca', [
|
||||||
|
'errors' => $errors,
|
||||||
|
'values' => $values
|
||||||
|
]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles all routing requests with a claimId as routing parameter since the used router doesn't support optional parameters.
|
||||||
|
* E.g. /dmca/this-is-a-claim-id
|
||||||
|
*
|
||||||
|
* @param string $claimId
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static function executeDmcaWithClaimId(string $claimId): array {
|
||||||
|
|
||||||
|
$claimId = htmlspecialchars($claimId);
|
||||||
|
|
||||||
|
self::setResponseHeader();
|
||||||
|
self::redirectIfPostRequest(true, $claimId);
|
||||||
|
|
||||||
|
$values = [];
|
||||||
|
$errors = [];
|
||||||
|
|
||||||
|
self::validateForm($values, $errors);
|
||||||
|
|
||||||
|
return ['report/dmca', [
|
||||||
|
'errors' => $errors,
|
||||||
|
'values' => $values,
|
||||||
|
'claimId' => $claimId
|
||||||
|
]];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param array $values
|
||||||
|
* @param array $errors
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
private static function validateForm(array $values, array $errors)
|
||||||
|
{
|
||||||
|
|
||||||
foreach (['name', 'email', 'rightsholder', 'identifier'] as $field) {
|
foreach (['name', 'email', 'rightsholder', 'identifier'] as $field) {
|
||||||
$value = Request::getPostParam($field);
|
$value = Request::getPostParam($field);
|
||||||
|
|
||||||
if (!$value) {
|
if (!$value) {
|
||||||
$errors[$field] = __('form_error.required');
|
$errors[$field] = __('form_error.required');
|
||||||
} elseif ($field == 'email' && !filter_var($value, FILTER_VALIDATE_EMAIL)) {
|
} elseif ($field === 'email' && !filter_var($value, FILTER_VALIDATE_EMAIL)) {
|
||||||
$errors[$field] = __('form_error.invalid');
|
$errors[$field] = __('form_error.invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
$values[$field] = $value;
|
$values[$field] = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_GET['claim_id'] && !$values['identifier']) {
|
|
||||||
$values['identifier'] = htmlspecialchars($_GET['claim_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$errors) {
|
if (!$errors) {
|
||||||
$values['report_id'] = Encoding::base58Encode(random_bytes(6));
|
$values['report_id'] = Encoding::base58Encode(random_bytes(6));
|
||||||
Mailgun::sendDmcaReport($values);
|
Mailgun::sendDmcaReport($values);
|
||||||
|
@ -35,9 +83,34 @@ class ReportActions extends Actions
|
||||||
return Controller::redirect(Request::getRelativeUri(), 303);
|
return Controller::redirect(Request::getRelativeUri(), 303);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ['report/dmca', [
|
}
|
||||||
'errors' => $errors,
|
|
||||||
'values' => $values
|
/**
|
||||||
]];
|
* Sets the response header.
|
||||||
|
*/
|
||||||
|
private static function setResponseHeader()
|
||||||
|
{
|
||||||
|
Response::setHeader(Response::HEADER_CROSS_ORIGIN, "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chooses the right template according to passed variables.
|
||||||
|
*
|
||||||
|
* @param bool $hasClaimId
|
||||||
|
* @param string $claimId
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private static function redirectIfPostRequest(bool $hasClaimId = false, string $claimId = '') {
|
||||||
|
|
||||||
|
if ($hasClaimId && !empty($claimId)) {
|
||||||
|
$returnValue = ['report/dmca', ['claimId' => $claimId]];
|
||||||
|
} else {
|
||||||
|
$returnValue = ['report/dmca'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Request::isPost()) {
|
||||||
|
return $returnValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
<?php echo View::render('form/_formRow', [
|
<?php echo View::render('form/_formRow', [
|
||||||
'field' => 'identifier',
|
'field' => 'identifier',
|
||||||
'value' => $values['identifier'] ?? null,
|
'value' => $claimId ?? null,
|
||||||
'error' => $errors['identifier'] ?? null,
|
'error' => $errors['identifier'] ?? null,
|
||||||
'label' => __('dmca.form_labels.identifier'),
|
'label' => __('dmca.form_labels.identifier'),
|
||||||
'help' => __('dmca.form_help.identifier'),
|
'help' => __('dmca.form_help.identifier'),
|
||||||
|
|
Loading…
Add table
Reference in a new issue