PluginProbe
WP Job Manager / trunk
WP Job Manager vtrunk
2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.1.0 1.1.1 1.1.2 1.1.3 1.10.0 1.11.0 1.11.1 1.12.0 1.12.1 1.13.0 1.14.0 1.15.0 All 154 releases
wp-job-manager / includes / class-dev-tools.php
class-dev-tools.php
108 lines 2.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Tools for testing and development.
4 *
5 * @package wp-job-manager
6 */
7
8 namespace WP_Job_Manager;
9
10 if ( ! defined( 'ABSPATH' ) ) {
11 exit;
12 }
13
14 /**
15 * Tools for testing and development.
16 *
17 * @internal
18 */
19 class Dev_Tools {
20
21 /**
22 * Initialize the class, add WP-CLI commands.
23 */
24 public static function init() {
25 if ( defined( 'WP_CLI' ) && WP_CLI ) {
26 \WP_CLI::add_command( 'jm dev stats generate', [ self::class, 'generate_stat_data' ] );
27 }
28 }
29
30 /**
31 * Generate stats for a job.
32 *
33 * ## OPTIONS
34 *
35 * <job_id>
36 * : The ID of the job to generate stats for.
37 *
38 * ## EXAMPLES
39 *
40 * wp jm dev stats generate 123
41 *
42 * @when after_wp_load
43 *
44 * @param array $args
45 */
46 public static function generate_stat_data( $args ) {
47 $job_id = absint( $args[0] );
48
49 $job = get_post( $job_id );
50
51 if ( ! $job_id || ! $job || 'job_listing' !== $job->post_type ) {
52 \WP_CLI::error( 'Invalid job ID' );
53 }
54
55 $stats = Stats::instance();
56
57 $start_date = get_post_datetime( $job );
58
59 $days = $start_date->diff( new \DateTime() )->days;
60
61 $trend = 1;
62 $views = 0;
63
64 $log = '';
65
66 $stats->delete_stats( $job_id );
67
68 $records = [];
69
70 for ( $i = 0; $i <= $days + 1; $i++ ) {
71 $views = (int) max( 0, $views + $trend * wp_rand( 0, 1000 ) );
72 $trend = wp_rand( 0, 10 ) / 10 - 0.5;
73 $unique_views = wp_rand( (int) ( $views * 0.3 ), (int) ( $views * 0.8 ) );
74 $impressions = wp_rand( (int) ( $views * 1.6 ), (int) ( $views * 2.6 ) );
75 $date = $start_date->modify( "+{$i} days" )->format( 'Y-m-d' );
76
77 $log .= $views . ' ';
78
79 $records[] = [
80 'name' => Job_Listing_Stats::VIEW,
81 'post_id' => $job_id,
82 'count' => $views,
83 'date' => $date,
84 ];
85
86 $records[] = [
87 'name' => Job_Listing_Stats::VIEW_UNIQUE,
88 'post_id' => $job_id,
89 'count' => $unique_views,
90 'date' => $date,
91 ];
92
93 $records[] = [
94 'name' => Job_Listing_Stats::SEARCH_IMPRESSION,
95 'post_id' => $job_id,
96 'count' => $impressions,
97 'date' => $date,
98 ];
99
100 }
101
102 $stats->batch_log_stats( $records );
103
104 \WP_CLI::log( \WP_CLI::colorize( 'Stats generated from %C' . $start_date->format( 'Y-m-d' ) . '%n for %C' . $days . ' days%n: ' ) . $log );
105
106 }
107 }
108