| 1 | <?php # -*- coding: utf-8 -*- |
||||||
| 2 | declare(strict_types=1); |
||||||
| 3 | |||||||
| 4 | namespace MultisiteGlobalMedia\Rest; |
||||||
| 5 | |||||||
| 6 | use MultisiteGlobalMedia\Helper; |
||||||
| 7 | use MultisiteGlobalMedia\SingleSwitcher; |
||||||
| 8 | use MultisiteGlobalMedia\Site; |
||||||
| 9 | use MultisiteGlobalMedia\SiteSwitcher; |
||||||
| 10 | use WP_REST_Attachments_Controller; |
||||||
| 11 | |||||||
| 12 | /** |
||||||
| 13 | * Class RestController |
||||||
| 14 | * |
||||||
| 15 | * Disable our codestyle for several topics, because we extend a WP core class, method. |
||||||
| 16 | */ |
||||||
| 17 | class RestController extends WP_REST_Attachments_Controller |
||||||
| 18 | { |
||||||
| 19 | use Helper; |
||||||
| 20 | |||||||
| 21 | /** |
||||||
| 22 | * @var Site |
||||||
| 23 | */ |
||||||
| 24 | private $site; |
||||||
| 25 | |||||||
| 26 | /** |
||||||
| 27 | * @var SiteSwitcher |
||||||
| 28 | */ |
||||||
| 29 | private $siteSwitcher; |
||||||
| 30 | |||||||
| 31 | /** |
||||||
| 32 | * {@inheritDoc} |
||||||
| 33 | * |
||||||
| 34 | * phpcs:disable Inpsyde.CodeQuality.ArgumentTypeDeclaration.NoArgumentType |
||||||
| 35 | * phpcs:disable Inpsyde.CodeQuality.VariablesName.SnakeCaseVar |
||||||
| 36 | */ |
||||||
| 37 | public function __construct($post_type) |
||||||
| 38 | { |
||||||
| 39 | // phpcs:enable |
||||||
| 40 | $this->site = new Site(); |
||||||
| 41 | $this->siteSwitcher = new SingleSwitcher(); |
||||||
| 42 | |||||||
| 43 | // phpcs:ignore Inpsyde.CodeQuality.VariablesName.SnakeCaseVar |
||||||
| 44 | parent::__construct($post_type); |
||||||
| 45 | } |
||||||
| 46 | |||||||
| 47 | /** |
||||||
| 48 | * {@inheritDoc} |
||||||
| 49 | * |
||||||
| 50 | * phpcs:disable Inpsyde.CodeQuality.NoAccessors.NoGetter |
||||||
| 51 | * phpcs:disable Inpsyde.CodeQuality.ArgumentTypeDeclaration.NoArgumentType |
||||||
| 52 | * phpcs:disable Inpsyde.CodeQuality.ReturnTypeDeclaration.NoReturnType |
||||||
| 53 | * phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps |
||||||
| 54 | */ |
||||||
| 55 | public function get_item_permissions_check($request) |
||||||
| 56 | { |
||||||
| 57 | // phpcs:enable |
||||||
| 58 | $idPrefix = $this->site->idSitePrefix(); |
||||||
| 59 | |||||||
| 60 | if (!$this->idPrefixIncludedInAttachmentId((int)$request['id'], $idPrefix)) { |
||||||
| 61 | return parent::get_item_permissions_check($request); |
||||||
| 62 | } |
||||||
| 63 | |||||||
| 64 | // Clone so the original id is available in other methods. |
||||||
| 65 | $requestClone = clone $request; |
||||||
| 66 | $requestClone['id'] = $this->stripSiteIdPrefixFromAttachmentId( |
||||||
| 67 | $idPrefix, |
||||||
| 68 | (int)$request['id'] |
||||||
| 69 | ); |
||||||
| 70 | |||||||
| 71 | $this->siteSwitcher->switchToBlog($this->site->id()); |
||||||
| 72 | $response = parent::get_item_permissions_check($requestClone); |
||||||
| 73 | $this->siteSwitcher->restoreBlog(); |
||||||
| 74 | |||||||
| 75 | return $response; |
||||||
| 76 | } |
||||||
| 77 | |||||||
| 78 | /** |
||||||
| 79 | * {@inheritDoc} |
||||||
| 80 | * |
||||||
| 81 | * phpcs:disable Inpsyde.CodeQuality.NoAccessors.NoGetter |
||||||
| 82 | * phpcs:disable Inpsyde.CodeQuality.ArgumentTypeDeclaration.NoArgumentType |
||||||
| 83 | * phpcs:disable Inpsyde.CodeQuality.ReturnTypeDeclaration.NoReturnType |
||||||
| 84 | * phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps |
||||||
| 85 | */ |
||||||
| 86 | public function get_item($request) |
||||||
| 87 | { |
||||||
| 88 | // phpcs:enable |
||||||
| 89 | $idPrefix = $this->site->idSitePrefix(); |
||||||
| 90 | |||||||
| 91 | if (!$this->idPrefixIncludedInAttachmentId((int)$request['id'], $idPrefix)) { |
||||||
| 92 | return parent::get_item($request); |
||||||
| 93 | } |
||||||
| 94 | |||||||
| 95 | $attachmentId = (int)$request['id']; |
||||||
| 96 | $request['id'] = $this->stripSiteIdPrefixFromAttachmentId($idPrefix, $attachmentId); |
||||||
| 97 | $this->siteSwitcher->switchToBlog($this->site->id()); |
||||||
| 98 | $response = parent::get_item($request); |
||||||
| 99 | $data = $response->get_data(); |
||||||
|
0 ignored issues
–
show
|
|||||||
| 100 | $this->siteSwitcher->restoreBlog(); |
||||||
| 101 | |||||||
| 102 | if (isset($data['id'])) { |
||||||
| 103 | $data['id'] = $attachmentId; |
||||||
| 104 | $response->set_data($data); |
||||||
|
0 ignored issues
–
show
The method
set_data() does not exist on WP_Error.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces. This is most likely a typographical error or the method has been renamed. Loading history...
|
|||||||
| 105 | } |
||||||
| 106 | |||||||
| 107 | return $response; |
||||||
| 108 | } |
||||||
| 109 | } |
||||||
| 110 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.