models
4 years ago
queries
4 years ago
utils
4 years ago
chart.php
4 years ago
db.php
4 years ago
delete_data_ajax.php
4 years ago
filters.php
4 years ago
filters_ajax.php
4 years ago
rest_api.php
4 years ago
settings.php
4 years ago
settings_ajax.php
4 years ago
super_secret_content_generator.php
4 years ago
table.php
4 years ago
table_referrers.php
4 years ago
table_views.php
4 years ago
track_resource_changes.php
4 years ago
super_secret_content_generator.php
224 lines
| 1 | <?php |
| 2 | |
| 3 | namespace IAWP; |
| 4 | |
| 5 | class Super_Secret_Content_Generator |
| 6 | { |
| 7 | public function __construct() |
| 8 | { |
| 9 | add_action('admin_init', [$this, 'admin_init']); |
| 10 | add_action('init', [$this, 'init']); |
| 11 | } |
| 12 | |
| 13 | public function generate_views() |
| 14 | { |
| 15 | $potential_referrers = ['https://google.com', 'https://facebook.com', 'https://stackoverflow.com', null]; |
| 16 | $potential_page_types = ['singular', 'author_archive', 'date_archive', 'post_type_archive', 'term_archive', 'search', 'home', '404']; |
| 17 | $now = (new \DateTime())->getTimestamp(); |
| 18 | $month_ago = (new \DateTime('-1 month'))->getTimestamp(); |
| 19 | $two_years_ago = (new \DateTime('-2 years'))->getTimestamp(); |
| 20 | |
| 21 | foreach (range(1, 200) as $i) { |
| 22 | $random_referrer = $potential_referrers[array_rand($potential_referrers)]; |
| 23 | $random_page_type = $potential_page_types[array_rand($potential_page_types)]; |
| 24 | $random_date = date('Y-m-d H:i:s', mt_rand($two_years_ago, $month_ago)); |
| 25 | $random_page = mt_rand(1, 3); |
| 26 | $method_name = 'generate_' . $random_page_type; |
| 27 | $this->$method_name($random_page_type, $random_date, $random_page, $random_referrer); |
| 28 | } |
| 29 | |
| 30 | foreach (range(1, 50) as $i) { |
| 31 | $random_referrer = $potential_referrers[array_rand($potential_referrers)]; |
| 32 | $random_page_type = $potential_page_types[array_rand($potential_page_types)]; |
| 33 | $random_date = date('Y-m-d H:i:s', mt_rand($month_ago, $now)); |
| 34 | $random_page = mt_rand(1, 3); |
| 35 | $method_name = 'generate_' . $random_page_type; |
| 36 | $this->$method_name($random_page_type, $random_date, $random_page, $random_referrer); |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | private function generate_singular($page_type, $date, $page, $referrer) |
| 41 | { |
| 42 | $post_ids = get_posts([ |
| 43 | 'fields' => 'ids', // Only get post IDs |
| 44 | 'posts_per_page' => -1, |
| 45 | 'post_type' => ['post', 'recipes'], |
| 46 | ]); |
| 47 | $page_ids = get_all_page_ids(); |
| 48 | $singular_ids = array_merge($post_ids, $page_ids); |
| 49 | foreach ($singular_ids as $singular_id) { |
| 50 | IAWP()->db->record_view([ |
| 51 | 'resource' => $page_type, |
| 52 | 'singular_id' => $singular_id, |
| 53 | 'page' => $page, |
| 54 | ], $referrer, $date); |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | private function generate_author_archive($page_type, $date, $page, $referrer) |
| 59 | { |
| 60 | IAWP()->db->record_view([ |
| 61 | 'resource' => $page_type, |
| 62 | 'author_id' => get_current_user_id(), |
| 63 | 'page' => $page, |
| 64 | ], $referrer, $date); |
| 65 | } |
| 66 | |
| 67 | private function generate_date_archive($page_type, $date, $page, $referrer) |
| 68 | { |
| 69 | $posts = get_posts([ |
| 70 | 'posts_per_page' => -1, |
| 71 | 'post_type' => ['post', 'recipes'], |
| 72 | ]); |
| 73 | $post_date = new \DateTime($posts[0]->post_date); |
| 74 | $date_formats = [$post_date->format('Y'), $post_date->format('Y-m'), $post_date->format('Y-m-d')]; |
| 75 | |
| 76 | foreach ($date_formats as $format) { |
| 77 | IAWP()->db->record_view([ |
| 78 | 'resource' => $page_type, |
| 79 | 'date_archive' => $format, |
| 80 | 'page' => $page, |
| 81 | ], $referrer, $date); |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | private function generate_post_type_archive($page_type, $date, $page, $referrer) |
| 86 | { |
| 87 | IAWP()->db->record_view([ |
| 88 | 'resource' => $page_type, |
| 89 | 'post_type' => 'recipes', |
| 90 | 'page' => $page, |
| 91 | ], $referrer, $date); |
| 92 | } |
| 93 | |
| 94 | private function generate_term_archive($page_type, $date, $page, $referrer) |
| 95 | { |
| 96 | $term = get_term_by('slug', 'breakfast', 'meals'); |
| 97 | $term_id = $term->term_id; |
| 98 | |
| 99 | IAWP()->db->record_view([ |
| 100 | 'resource' => $page_type, |
| 101 | 'term_id' => $term_id, |
| 102 | 'page' => $page, |
| 103 | ], $referrer, $date); |
| 104 | } |
| 105 | |
| 106 | private function generate_search($page_type, $date, $page, $referrer) |
| 107 | { |
| 108 | $potential_search_queries = ['Food', 'Dinner idea', 'Bacon']; |
| 109 | $random_search_query = $potential_search_queries[array_rand($potential_search_queries)]; |
| 110 | |
| 111 | IAWP()->db->record_view([ |
| 112 | 'resource' => $page_type, |
| 113 | 'search_query' => $random_search_query, |
| 114 | 'page' => $page, |
| 115 | ], $referrer, $date); |
| 116 | } |
| 117 | |
| 118 | private function generate_home($page_type, $date, $page, $referrer) |
| 119 | { |
| 120 | IAWP()->db->record_view([ |
| 121 | 'resource' => $page_type, |
| 122 | 'page' => $page, |
| 123 | ], $referrer, $date); |
| 124 | } |
| 125 | |
| 126 | private function generate_404($page_type, $date, $page, $referrer) |
| 127 | { |
| 128 | $potential_paths = ['/not-real', '/does/not/exist', '/bad/url']; |
| 129 | $random_paths = $potential_paths[array_rand($potential_paths)]; |
| 130 | |
| 131 | IAWP()->db->record_view([ |
| 132 | 'resource' => $page_type, |
| 133 | 'not_found_url' => get_site_url() . $random_paths, |
| 134 | 'page' => $page, |
| 135 | ], $referrer, $date); |
| 136 | } |
| 137 | |
| 138 | public function admin_init() |
| 139 | { |
| 140 | $already_run = get_cat_ID('Easy recipes') > 0; |
| 141 | |
| 142 | if ($already_run) { |
| 143 | return; |
| 144 | } |
| 145 | |
| 146 | wp_insert_category([ |
| 147 | 'cat_name' => 'Easy recipes', |
| 148 | 'category_description' => 'Our easiest and quickest recipes', |
| 149 | 'category_nicename' => 'easy-recipes', |
| 150 | 'category_parent' => null, |
| 151 | ]); |
| 152 | |
| 153 | flush_rewrite_rules(); |
| 154 | } |
| 155 | |
| 156 | public function init() |
| 157 | { |
| 158 | register_post_type('recipes', [ |
| 159 | 'label' => 'recipes', |
| 160 | 'labels' => [ |
| 161 | 'name' => 'Recipes', |
| 162 | 'singular_name' => 'Recipe', |
| 163 | 'menu_name' => 'Recipes', |
| 164 | ], |
| 165 | 'public' => true, |
| 166 | 'has_archive' => true, |
| 167 | 'publicly_queryable' => true, |
| 168 | ]); |
| 169 | |
| 170 | wp_insert_term( |
| 171 | 'Term: Vegan', |
| 172 | 'post_tag' |
| 173 | ); |
| 174 | |
| 175 | register_taxonomy('meals', 'post', [ |
| 176 | 'labels' => [ |
| 177 | 'name' => 'Meals', |
| 178 | 'singular_name' => 'Meal', |
| 179 | ], |
| 180 | 'public' => true, |
| 181 | 'show_admin_column' => true, |
| 182 | ]); |
| 183 | |
| 184 | wp_insert_term( |
| 185 | 'breakfast', |
| 186 | 'meals' |
| 187 | ); |
| 188 | |
| 189 | flush_rewrite_rules(); |
| 190 | |
| 191 | $already_run = get_cat_ID('Easy recipes') > 0; |
| 192 | |
| 193 | if ($already_run) { |
| 194 | return; |
| 195 | } |
| 196 | |
| 197 | $category_id = get_cat_ID('Easy recipes'); |
| 198 | $tag_id = get_term_by('slug', 'Term: Vegan', 'post_tag')->term_id; |
| 199 | $tax_id = get_term_by('slug', 'breakfast', 'meals')->term_id; |
| 200 | |
| 201 | wp_insert_post([ |
| 202 | 'post_title' => 'First post: Burgers', |
| 203 | 'post_content' => 'A burger recipe', |
| 204 | 'post_status' => 'publish', |
| 205 | ]); |
| 206 | |
| 207 | wp_insert_post([ |
| 208 | 'post_title' => 'Second post: Sprouts', |
| 209 | 'post_content' => 'My secret sprouts recipe', |
| 210 | 'post_status' => 'publish', |
| 211 | 'post_category' => [$category_id], |
| 212 | 'tags_input' => [$tag_id], |
| 213 | 'tax_input' => ['sometax' => [$tax_id]], |
| 214 | ]); |
| 215 | |
| 216 | wp_insert_post([ |
| 217 | 'post_title' => 'About Page', |
| 218 | 'post_content' => 'Learn something about me on this page', |
| 219 | 'post_status' => 'publish', |
| 220 | 'post_type' => 'page', |
| 221 | ]); |
| 222 | } |
| 223 | } |
| 224 |