3rd-party
2 months ago
abstracts
3 months ago
admin
2 weeks ago
emails
2 weeks ago
forms
2 weeks ago
helper
3 months ago
promoted-jobs
2 weeks ago
ui
2 weeks ago
widgets
2 weeks ago
class-access-token.php
2 years ago
class-dev-tools.php
2 years ago
class-guest-session.php
2 years ago
class-guest-user.php
2 years ago
class-job-dashboard-shortcode.php
6 months ago
class-job-listing-stats.php
2 years ago
class-job-overlay.php
2 years ago
class-stats-dashboard.php
2 years ago
class-stats-script.php
3 months ago
class-stats.php
3 months ago
class-wp-job-manager-ajax.php
2 months ago
class-wp-job-manager-api.php
6 years ago
class-wp-job-manager-blocks.php
2 weeks ago
class-wp-job-manager-cache-helper.php
3 months ago
class-wp-job-manager-category-walker.php
6 years ago
class-wp-job-manager-com-api.php
2 years ago
class-wp-job-manager-data-cleaner.php
2 years ago
class-wp-job-manager-data-exporter.php
3 months ago
class-wp-job-manager-dependency-checker.php
2 years ago
class-wp-job-manager-email-notifications.php
2 years ago
class-wp-job-manager-forms.php
5 years ago
class-wp-job-manager-geocode.php
2 weeks ago
class-wp-job-manager-install.php
2 years ago
class-wp-job-manager-post-types.php
2 weeks ago
class-wp-job-manager-recaptcha.php
6 months ago
class-wp-job-manager-rest-api.php
2 months ago
class-wp-job-manager-shortcodes.php
2 weeks ago
class-wp-job-manager-usage-tracking-data.php
2 years ago
class-wp-job-manager-usage-tracking.php
2 years ago
class-wp-job-manager-widget.php
2 weeks ago
class-wp-job-manager.php
3 months ago
trait-singleton.php
2 years ago
class-dev-tools.php
108 lines
| 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 |