PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.17
Advanced Ads – Ad Manager & AdSense v1.17
2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / admin / includes / class-menu.php
advanced-ads / admin / includes Last commit date
ad-health-notices.php 6 years ago class-ad-groups-list.php 6 years ago class-ad-network-ad-importer.php 6 years ago class-ad-network-ad-unit.php 6 years ago class-ad-network.php 6 years ago class-ad-type.php 6 years ago class-licenses.php 6 years ago class-list-filters.php 6 years ago class-menu.php 6 years ago class-meta-box.php 6 years ago class-notices.php 6 years ago class-options.php 6 years ago class-overview-widgets.php 6 years ago class-settings.php 6 years ago class-shortcode-creator.php 9 years ago notices.php 6 years ago shortcode-creator-l10n.php 10 years ago
class-menu.php
284 lines
1 <?php
2 defined( 'ABSPATH' ) || exit;
3
4 class Advanced_Ads_Admin_Menu {
5 /**
6 * Instance of this class.
7 *
8 * @var object
9 */
10 protected static $instance = null;
11
12 /**
13 * Slug of the ad group page
14 *
15 * @since 1.0.0
16 * @var string
17 */
18 protected $ad_group_hook_suffix = null;
19
20 private function __construct() {
21 // Add menu items
22 add_action( 'admin_menu', array($this, 'add_plugin_admin_menu') );
23 add_action( 'admin_head', array( $this, 'highlight_menu_item' ) );
24
25 $this->plugin_slug = Advanced_Ads::get_instance()->get_plugin_slug();
26 $this->post_type = constant( 'Advanced_Ads::POST_TYPE_SLUG' );
27 }
28
29 /**
30 * Return an instance of this class.
31 *
32 * @return object A single instance of this class.
33 */
34 public static function get_instance() {
35 // If the single instance hasn't been set, set it now.
36 if ( null == self::$instance ) {
37 self::$instance = new self;
38 }
39
40 return self::$instance;
41 }
42
43 /**
44 * Register the administration menu for this plugin into the WordPress Dashboard menu.
45 *
46 * @since 1.0.0
47 */
48 public function add_plugin_admin_menu() {
49
50 $has_ads = Advanced_Ads::get_number_of_ads();
51
52 // get number of ad health notices
53 $notices = Advanced_Ads_Ad_Health_Notices::get_number_of_notices();
54
55 // use the overview page only when there is an ad already
56 if( $has_ads ){
57 add_menu_page(
58 __( 'Overview', 'advanced-ads' ),
59 'Advanced Ads',
60 //sprintf( 'Advanced Ads' . '<span class="update-plugins count-' . $notices. '"><span class="update-count">' . $notices . '</span></span>' ),
61 Advanced_Ads_Plugin::user_cap( 'advanced_ads_see_interface'), $this->plugin_slug, array($this, 'display_overview_page'), 'dashicons-chart-line', '58.74'
62 );
63 }
64 // forward Ads link to new-ad page when there is no ad existing yet.
65 // the target to post-new.php needs the extra "new" or any other attribute, since the original add-ad link was removed by CSS using the exact href attribute as a selector
66 $target = ( ! $has_ads ) ? 'post-new.php?post_type=' . Advanced_Ads::POST_TYPE_SLUG . '&new=new' : 'edit.php?post_type=' . Advanced_Ads::POST_TYPE_SLUG;
67 add_submenu_page(
68 $this->plugin_slug, __( 'Ads', 'advanced-ads' ), __( 'Ads', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads'), $target
69 );
70
71 // display the main overview page as second item when we don’t have ads yet
72 if( ! $has_ads ){
73 add_menu_page(
74 __( 'Overview', 'advanced-ads' ), 'Advanced Ads', Advanced_Ads_Plugin::user_cap( 'advanced_ads_see_interface'), $this->plugin_slug, array($this, 'display_overview_page'), 'dashicons-chart-line', '58.74'
75 );
76
77 add_submenu_page(
78 $this->plugin_slug, __( 'Overview', 'advanced-ads' ), __( 'Overview', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_see_interface'), $this->plugin_slug, array($this, 'display_overview_page')
79 );
80 }
81
82 // hidden by css; not placed in 'options.php' in order to highlight the correct item, see the 'highlight_menu_item()'
83 if ( ! current_user_can( 'edit_posts' ) ) {
84 add_submenu_page(
85 $this->plugin_slug, __( 'Add New Ad', 'advanced-ads' ), __( 'New Ad', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads'), 'post-new.php?post_type=' . Advanced_Ads::POST_TYPE_SLUG
86 );
87 }
88
89 $this->ad_group_hook_suffix = add_submenu_page(
90 $this->plugin_slug, __( 'Ad Groups & Rotations', 'advanced-ads' ), __( 'Groups & Rotation', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_edit_ads'), $this->plugin_slug . '-groups', array($this, 'ad_group_admin_page')
91 );
92
93 // add placements page
94 add_submenu_page(
95 $this->plugin_slug, __( 'Ad Placements', 'advanced-ads' ), __( 'Placements', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_placements'), $this->plugin_slug . '-placements', array($this, 'display_placements_page')
96 );
97 // add settings page
98 Advanced_Ads_Admin::get_instance()->plugin_screen_hook_suffix = add_submenu_page(
99 $this->plugin_slug, __( 'Advanced Ads Settings', 'advanced-ads' ), __( 'Settings', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options'), $this->plugin_slug . '-settings', array($this, 'display_plugin_settings_page')
100 );
101 // add support page
102 /*add_submenu_page(
103 $this->plugin_slug, __( 'Support', 'advanced-ads' ), __( 'Support', 'advanced-ads' ), Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options'), $this->plugin_slug . '-support', array($this, 'display_support_page')
104 );*/
105
106 /**
107 * since we forward the support link to the settings page, we need to add the menu item manually
108 * could break if WordPress changes the API at one point, but it didn’t do that for many years
109 */
110 global $submenu;
111 if(current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options') ) ){
112 $submenu['advanced-ads'][] = array(
113 __('Support', 'advanced-ads' ), // title
114 Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options'), // capability
115 admin_url( 'admin.php?page=advanced-ads-settings#top#support' ),
116 __('Support', 'advanced-ads' ), // not sure what this is, but it is in the API
117 );
118 global $menu;
119 // manipulate the title of the overview page and add error count
120 if( isset( $menu[ '58.74' ][ 0 ] ) ){
121 $menu[ '58.74' ][ 0 ] .= '&nbsp;<span class="update-plugins count-' . $notices. '"><span class="update-count">' . $notices . '</span></span>';
122 }
123 /*if( $has_ads ){
124 $submenu['advanced-ads'][0][0] .= '&nbsp;<span class="update-plugins count-' . $notices. '"><span class="update-count">' . $notices . '</span></span>';
125 } else {
126 $submenu['advanced-ads'][1][0] .= '&nbsp;<span class="update-plugins count-' . $notices. '"><span class="update-count">' . $notices . '</span></span>';
127 }*/
128 // link to license tab if they are invalid
129 if( Advanced_Ads_Checks::licenses_invalid() ){
130 $submenu['advanced-ads'][] = array(
131 __('Licenses', 'advanced-ads' ) // title.
132 . '&nbsp;<span class="update-plugins count-1"><span class="update-count">!</span></span>',
133 Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options'), // capability
134 admin_url( 'admin.php?page=advanced-ads-settings#top#licenses' ),
135 __('Licenses', 'advanced-ads' ), // not sure what this is, but it is in the API
136 );
137 }
138 }
139
140 add_filter( 'option_page_capability_' . ADVADS_SLUG, function () {
141 return Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options' );
142 } );
143
144 // allows extensions to insert sub menu pages
145 do_action( 'advanced-ads-submenu-pages', $this->plugin_slug );
146 }
147
148 /**
149 * Highlights the 'Advanced Ads->Ads' item in the menu when an ad edit page is open
150 * @see the 'parent_file' and the 'submenu_file' filters for reference
151 */
152 public function highlight_menu_item() {
153 global $parent_file, $submenu_file, $post_type;
154 if ( $post_type === $this->post_type ) {
155 $parent_file = $this->plugin_slug;
156 $submenu_file = 'edit.php?post_type=' . $this->post_type;
157 }
158 }
159
160 /**
161 * Render the overview page
162 *
163 * @since 1.2.2
164 */
165 public function display_overview_page() {
166
167 include ADVADS_BASE_PATH . 'admin/views/overview.php';
168 }
169
170 /**
171 * Render the settings page
172 *
173 * @since 1.0.0
174 */
175 public function display_plugin_settings_page() {
176 include ADVADS_BASE_PATH . 'admin/views/settings.php';
177 }
178
179 /**
180 * Render the placements page
181 *
182 * @since 1.1.0
183 */
184 public function display_placements_page() {
185 $placement_types = Advanced_Ads_Placements::get_placement_types();
186 $placements = Advanced_Ads::get_ad_placements_array(); // -TODO use model
187 $items = Advanced_Ads_Placements::items_for_select();
188 // load ads and groups for select field
189
190 // display view
191 include ADVADS_BASE_PATH . 'admin/views/placements.php';
192 }
193
194 /**
195 * Render the support page
196 *
197 * @since 1.6.8.1
198 */
199 public function display_support_page() {
200
201 include ADVADS_BASE_PATH . 'admin/views/support.php';
202 }
203
204 /**
205 * Render the ad group page
206 *
207 * @since 1.0.0
208 */
209 public function ad_group_admin_page() {
210
211 $taxonomy = Advanced_Ads::AD_GROUP_TAXONOMY;
212 $post_type = Advanced_Ads::POST_TYPE_SLUG;
213 $tax = get_taxonomy( $taxonomy );
214
215 $action = Advanced_Ads_Admin::get_instance()->current_action();
216
217 // handle new and updated groups
218 if ( 'editedgroup' == $action ) {
219 $group_id = (int) $_POST['group_id'];
220 check_admin_referer( 'update-group_' . $group_id );
221
222 if ( ! current_user_can( $tax->cap->edit_terms ) ) {
223 wp_die( __( 'Sorry, you are not allowed to access this feature.', 'advanced-ads' ) ); }
224
225 // handle new groups
226 if ( 0 == $group_id ) {
227 $ret = wp_insert_term( $_POST['name'], $taxonomy, $_POST );
228 if ( $ret && ! is_wp_error( $ret ) ) {
229 $forced_message = 1; }
230 else {
231 $forced_message = 4; }
232 // handle group updates
233 } else {
234 $tag = get_term( $group_id, $taxonomy );
235 if ( ! $tag ) {
236 wp_die( __( 'You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was deleted?', 'advanced-ads' ) ); }
237
238 $ret = wp_update_term( $group_id, $taxonomy, $_POST );
239 if ( $ret && ! is_wp_error( $ret ) ) {
240 $forced_message = 3; }
241 else {
242 $forced_message = 5; }
243 }
244 // deleting items
245 } elseif ( $action == 'delete' ){
246 $group_id = (int) $_REQUEST['group_id'];
247 check_admin_referer( 'delete-tag_' . $group_id );
248
249 if ( ! current_user_can( $tax->cap->delete_terms ) ) {
250 wp_die( __( 'Sorry, you are not allowed to access this feature.', 'advanced-ads' ) ); }
251
252 wp_delete_term( $group_id, $taxonomy );
253 // delete the weights
254 Advanced_Ads_Group::delete_ad_weights($group_id);
255
256 $forced_message = 2;
257 }
258
259 // handle views
260 switch ( $action ) {
261 case 'edit' :
262 $title = $tax->labels->edit_item;
263 if ( isset($_REQUEST['group_id']) ) {
264 $group_id = absint( $_REQUEST['group_id'] );
265 $tag = get_term( $group_id, $taxonomy, OBJECT, 'edit' );
266 } else {
267 $group_id = 0;
268 $tag = false;
269 }
270
271 include ADVADS_BASE_PATH . 'admin/views/ad-group-edit.php';
272 break;
273
274 default :
275 $title = $tax->labels->name;
276 $wp_list_table = _get_list_table( 'WP_Terms_List_Table' );
277
278 // load template
279 include ADVADS_BASE_PATH . 'admin/views/ad-group.php';
280 }
281 }
282
283 }
284