PluginProbe
Packeta / 1.6.4
Packeta v1.6.4
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 / Log / DbLogger.php

DbLogger.php in Packeta 1.6.4, at src/Packetery/Module/Log/DbLogger.php

129 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class DbLogger
4 *
5 * @package Packetery\Module\Log
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module\Log;
12
13 use Packetery\Core\Helper;
14 use Packetery\Core\Log\Record;
15
16 /**
17 * Class DbLogger
18 *
19 * @package Packetery\Module\Log
20 */
21 class DbLogger implements \Packetery\Core\Log\ILogger {
22
23 /**
24 * Log repository.
25 *
26 * @var Repository
27 */
28 private $logRepository;
29
30 /**
31 * Constructor.
32 *
33 * @param Repository $logRepository Log repository.
34 */
35 public function __construct( Repository $logRepository ) {
36 $this->logRepository = $logRepository;
37 }
38
39 /**
40 * Registers logger.
41 *
42 * @return void
43 */
44 public function register(): void {
45 }
46
47 /**
48 * Adds record.
49 *
50 * @param Record $record Record.
51 *
52 * @return void
53 * @throws \Exception From DateTimeImmutable.
54 */
55 public function add( Record $record ): void {
56 if ( null === $record->date ) {
57 $record->date = Helper::now();
58 }
59
60 $this->logRepository->save( $record );
61 }
62
63 /**
64 * Gets records.
65 *
66 * @param mixed $orderId Order ID.
67 * @param string|null $action Action.
68 * @param array $sorting Sorting config.
69 * @param int $limit Limit.
70 *
71 * @return iterable|Record[]
72 * @throws \Exception From DateTimeImmutable.
73 */
74 public function getRecords( $orderId, ?string $action, array $sorting = [], int $limit = 100 ): iterable {
75 $arguments = [
76 'orderby' => $sorting,
77 'limit' => $limit,
78 ];
79
80 if ( is_numeric( $orderId ) ) {
81 $arguments['order_id'] = $orderId;
82 }
83 if ( null !== $action ) {
84 $arguments['action'] = $action;
85 }
86
87 $logs = $this->logRepository->find( $arguments );
88 if ( ! $logs ) {
89 return [];
90 }
91
92 return $logs;
93 }
94
95 /**
96 * Counts records.
97 *
98 * @param int|null $orderId Order ID.
99 * @param string|null $action Action.
100 *
101 * @return int
102 */
103 public function countRecords( $orderId = null, ?string $action = null ): int {
104 return $this->logRepository->countRows( $orderId, $action );
105 }
106
107 /**
108 * Gets logs for given period as array.
109 *
110 * @param array $dateQuery Date_query compatible array.
111 *
112 * @return array
113 * @throws \Exception From DateTimeImmutable.
114 */
115 public function getForPeriodAsArray( array $dateQuery ): iterable {
116 $arguments = [
117 'orderby' => [ 'date' => 'ASC' ],
118 'date_query' => $dateQuery,
119 ];
120
121 $logs = $this->logRepository->find( $arguments );
122 if ( ! $logs ) {
123 return [];
124 }
125
126 return $logs;
127 }
128 }
129