PluginProbe
Packeta / 2.3.2
Packeta v2.3.2
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / Carrier / CarrierUpdater.php

CarrierUpdater.php in Packeta 2.3.2, at src/Packetery/Module/Carrier/CarrierUpdater.php

78 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Packetery\Module\Carrier;
6
7 use DateTimeImmutable;
8 use Packetery\Module\Framework\WpAdapter;
9 use Packetery\Module\Options\OptionNames;
10 use Packetery\Module\Transients;
11 use Packetery\Nette\Http\Request;
12
13 class CarrierUpdater {
14
15 /**
16 * @var Request
17 */
18 private $httpRequest;
19
20 /**
21 * @var Downloader
22 */
23 private $downloader;
24
25 /**
26 * @var WpAdapter
27 */
28 private $wpAdapter;
29
30 public function __construct(
31 Request $httpRequest,
32 Downloader $downloader,
33 WpAdapter $wpAdapter
34 ) {
35 $this->httpRequest = $httpRequest;
36 $this->downloader = $downloader;
37 $this->wpAdapter = $wpAdapter;
38 }
39
40 public function startUpdate( string $redirectUrl ): void {
41 if ( $this->httpRequest->getQuery( 'update_carriers' ) !== null ) {
42 $this->wpAdapter->setTransient( Transients::RUN_UPDATE_CARRIERS, true );
43 if ( $this->wpAdapter->safeRedirect( $redirectUrl ) ) {
44 exit;
45 }
46 }
47 }
48
49 public function runUpdate(): array {
50 $carriersUpdateParams = [];
51
52 if ( $this->wpAdapter->getTransient( Transients::RUN_UPDATE_CARRIERS ) !== false ) {
53 [ $carrierUpdaterResult, $carrierUpdaterClass ] = $this->downloader->run();
54 $carriersUpdateParams = [
55 'result' => $carrierUpdaterResult,
56 'resultClass' => $carrierUpdaterClass,
57 ];
58 $this->wpAdapter->deleteTransient( Transients::RUN_UPDATE_CARRIERS );
59 }
60
61 return $carriersUpdateParams;
62 }
63
64 public function getLastUpdate(): ?string {
65 $lastCarrierUpdate = $this->wpAdapter->getOption( OptionNames::LAST_CARRIER_UPDATE );
66 if ( $lastCarrierUpdate !== false ) {
67 $date = DateTimeImmutable::createFromFormat( DATE_ATOM, $lastCarrierUpdate );
68 if ( $date !== false ) {
69 $date->setTimezone( $this->wpAdapter->timezone() );
70
71 return $date->format( $this->wpAdapter->getOption( 'date_format' ) . ' ' . $this->wpAdapter->getOption( 'time_format' ) );
72 }
73 }
74
75 return null;
76 }
77 }
78