PluginProbe
ReCrawler / 0.2.0
ReCrawler v0.2.0
1.1.0 1.0.2 1.0.1 1.0.0 0.3.4 0.3.3 0.1.1 0.1.2 0.1.2.1 0.1.2.2 0.1.3 0.1.4 0.1.5 0.2.0 0.3.0 0.3.1 0.3.2 trunk 0.1.0 0.1.0.1
recrawler / src / Cron.php

Cron.php in ReCrawler 0.2.0, at src/Cron.php

71 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Mihdan\ReCrawler;
3
4 use Mihdan\ReCrawler\Logger\Logger;
5 use Mihdan\ReCrawler\Views\WPOSA;
6
7 class Cron {
8 public const EVENT_NAME = 'recrawler__clear-log';
9
10 /**
11 * Logger instance.
12 *
13 * @var Logger $logger
14 */
15 private $logger;
16
17 /**
18 * WPOSA instance.
19 *
20 * @var WPOSA $wposa
21 */
22 private $wposa;
23
24 /**
25 * Cron constructor.
26 *
27 * @param Logger $logger Logger instance.
28 * @param WPOSA $wposa
29 */
30 public function __construct( Logger $logger, WPOSA $wposa ) {
31 $this->logger = $logger;
32 $this->wposa = $wposa;
33 }
34 public function setup_hooks() {
35 add_action( 'admin_init', [ $this, 'add_task' ] );
36 add_action( self::EVENT_NAME, [ $this, 'clear_log' ] );
37 }
38
39 public function add_task() {
40 if ( ! wp_next_scheduled( self::EVENT_NAME ) ) {
41 wp_schedule_event( time(), 'hourly', self::EVENT_NAME );
42 }
43 }
44
45 /**
46 * Clear log table.
47 *
48 * @return bool
49 */
50 public function clear_log(): bool {
51 global $wpdb;
52
53 $lifetime = $this->wposa->get_option( 'lifetime', 'logs', 1 );
54 $table_name = $this->logger->get_logger_table_name();
55
56 $wpdb->query(
57 $wpdb->prepare( "DELETE FROM {$table_name} WHERE DATEDIFF(NOW(), created_at)>=%d", $lifetime )
58 );
59
60 if ( $this->wposa->get_option( 'cron_events', 'logs', 'off' ) === 'on' ) {
61 $data = [
62 'direction' => 'internal',
63 ];
64
65 $this->logger->info( 'Old log entries were deleted successfully.', $data );
66 }
67
68 return true;
69 }
70 }
71