PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.6.5.1
JetFormBuilder — Dynamic Blocks Form Builder v3.6.5.1
3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.4 3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 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.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / vendor / woocommerce / action-scheduler / classes / data-stores / ActionScheduler_DBLogger.php
jetformbuilder / vendor / woocommerce / action-scheduler / classes / data-stores Last commit date
ActionScheduler_DBLogger.php 1 year ago ActionScheduler_DBStore.php 1 month ago ActionScheduler_HybridStore.php 1 month ago ActionScheduler_wpCommentLogger.php 1 year ago ActionScheduler_wpPostStore.php 1 month ago ActionScheduler_wpPostStore_PostStatusRegistrar.php 1 year ago ActionScheduler_wpPostStore_PostTypeRegistrar.php 1 year ago ActionScheduler_wpPostStore_TaxonomyRegistrar.php 1 year ago
ActionScheduler_DBLogger.php
155 lines
1 <?php
2
3 /**
4 * Class ActionScheduler_DBLogger
5 *
6 * Action logs data table data store.
7 *
8 * @since 3.0.0
9 */
10 class ActionScheduler_DBLogger extends ActionScheduler_Logger {
11
12 /**
13 * Add a record to an action log.
14 *
15 * @param int $action_id Action ID.
16 * @param string $message Message to be saved in the log entry.
17 * @param DateTime|null $date Timestamp of the log entry.
18 *
19 * @return int The log entry ID.
20 */
21 public function log( $action_id, $message, ?DateTime $date = null ) {
22 if ( empty( $date ) ) {
23 $date = as_get_datetime_object();
24 } else {
25 $date = clone $date;
26 }
27
28 $date_gmt = $date->format( 'Y-m-d H:i:s' );
29 ActionScheduler_TimezoneHelper::set_local_timezone( $date );
30 $date_local = $date->format( 'Y-m-d H:i:s' );
31
32 /** @var \wpdb $wpdb */ //phpcs:ignore Generic.Commenting.DocComment.MissingShort
33 global $wpdb;
34 $wpdb->insert(
35 $wpdb->actionscheduler_logs,
36 array(
37 'action_id' => $action_id,
38 'message' => $message,
39 'log_date_gmt' => $date_gmt,
40 'log_date_local' => $date_local,
41 ),
42 array( '%d', '%s', '%s', '%s' )
43 );
44
45 return $wpdb->insert_id;
46 }
47
48 /**
49 * Retrieve an action log entry.
50 *
51 * @param int $entry_id Log entry ID.
52 *
53 * @return ActionScheduler_LogEntry
54 */
55 public function get_entry( $entry_id ) {
56 /** @var \wpdb $wpdb */ //phpcs:ignore Generic.Commenting.DocComment.MissingShort
57 global $wpdb;
58 $entry = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->actionscheduler_logs} WHERE log_id=%d", $entry_id ) );
59
60 return $this->create_entry_from_db_record( $entry );
61 }
62
63 /**
64 * Create an action log entry from a database record.
65 *
66 * @param object $record Log entry database record object.
67 *
68 * @return ActionScheduler_LogEntry
69 */
70 private function create_entry_from_db_record( $record ) {
71 if ( empty( $record ) ) {
72 return new ActionScheduler_NullLogEntry();
73 }
74
75 if ( is_null( $record->log_date_gmt ) ) {
76 $date = as_get_datetime_object( ActionScheduler_StoreSchema::DEFAULT_DATE );
77 } else {
78 $date = as_get_datetime_object( $record->log_date_gmt );
79 }
80
81 return new ActionScheduler_LogEntry( $record->action_id, $record->message, $date );
82 }
83
84 /**
85 * Retrieve an action's log entries from the database.
86 *
87 * @param int $action_id Action ID.
88 *
89 * @return ActionScheduler_LogEntry[]
90 */
91 public function get_logs( $action_id ) {
92 /** @var \wpdb $wpdb */ //phpcs:ignore Generic.Commenting.DocComment.MissingShort
93 global $wpdb;
94
95 $records = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->actionscheduler_logs} WHERE action_id=%d", $action_id ) );
96
97 return array_map( array( $this, 'create_entry_from_db_record' ), $records );
98 }
99
100 /**
101 * Initialize the data store.
102 *
103 * @codeCoverageIgnore
104 */
105 public function init() {
106 $table_maker = new ActionScheduler_LoggerSchema();
107 $table_maker->init();
108 $table_maker->register_tables();
109
110 parent::init();
111
112 add_action( 'action_scheduler_deleted_action', array( $this, 'clear_deleted_action_logs' ), 10, 1 );
113 }
114
115 /**
116 * Delete the action logs for an action.
117 *
118 * @param int $action_id Action ID.
119 */
120 public function clear_deleted_action_logs( $action_id ) {
121 /** @var \wpdb $wpdb */ //phpcs:ignore Generic.Commenting.DocComment.MissingShort
122 global $wpdb;
123 $wpdb->delete( $wpdb->actionscheduler_logs, array( 'action_id' => $action_id ), array( '%d' ) );
124 }
125
126 /**
127 * Bulk add cancel action log entries.
128 *
129 * @param array $action_ids List of action ID.
130 */
131 public function bulk_log_cancel_actions( $action_ids ) {
132 if ( empty( $action_ids ) ) {
133 return;
134 }
135
136 /** @var \wpdb $wpdb */ //phpcs:ignore Generic.Commenting.DocComment.MissingShort
137 global $wpdb;
138 $date = as_get_datetime_object();
139 $date_gmt = $date->format( 'Y-m-d H:i:s' );
140 ActionScheduler_TimezoneHelper::set_local_timezone( $date );
141 $date_local = $date->format( 'Y-m-d H:i:s' );
142 $message = __( 'action canceled', 'action-scheduler' );
143 $format = '(%d, ' . $wpdb->prepare( '%s, %s, %s', $message, $date_gmt, $date_local ) . ')';
144 $sql_query = "INSERT {$wpdb->actionscheduler_logs} (action_id, message, log_date_gmt, log_date_local) VALUES ";
145 $value_rows = array();
146
147 foreach ( $action_ids as $action_id ) {
148 $value_rows[] = $wpdb->prepare( $format, $action_id ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
149 }
150 $sql_query .= implode( ',', $value_rows );
151
152 $wpdb->query( $sql_query ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
153 }
154 }
155