PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.13
Advanced Ads – Ad Manager & AdSense v1.13
2.0.25 2.0.24 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 7 years ago class-ad-groups-list.php 7 years ago class-ad-type.php 7 years ago class-licenses.php 7 years ago class-list-filters.php 7 years ago class-menu.php 7 years ago class-meta-box.php 7 years ago class-notices.php 7 years ago class-options.php 9 years ago class-overview-widgets.php 7 years ago class-settings.php 7 years ago class-shortcode-creator.php 9 years ago notices.php 7 years ago shortcode-creator-l10n.php 10 years ago
class-menu.php
270 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 }
129
130
131 // allows extensions to insert sub menu pages
132 do_action( 'advanced-ads-submenu-pages', $this->plugin_slug );
133 }
134
135 /**
136 * Highlights the 'Advanced Ads->Ads' item in the menu when an ad edit page is open
137 * @see the 'parent_file' and the 'submenu_file' filters for reference
138 */
139 public function highlight_menu_item() {
140 global $parent_file, $submenu_file, $post_type;
141 if ( $post_type === $this->post_type ) {
142 $parent_file = $this->plugin_slug;
143 $submenu_file = 'edit.php?post_type=' . $this->post_type;
144 }
145 }
146
147 /**
148 * Render the overview page
149 *
150 * @since 1.2.2
151 */
152 public function display_overview_page() {
153
154 include ADVADS_BASE_PATH . 'admin/views/overview.php';
155 }
156
157 /**
158 * Render the settings page
159 *
160 * @since 1.0.0
161 */
162 public function display_plugin_settings_page() {
163 include ADVADS_BASE_PATH . 'admin/views/settings.php';
164 }
165
166 /**
167 * Render the placements page
168 *
169 * @since 1.1.0
170 */
171 public function display_placements_page() {
172 $placement_types = Advanced_Ads_Placements::get_placement_types();
173 $placements = Advanced_Ads::get_ad_placements_array(); // -TODO use model
174 $items = Advanced_Ads_Placements::items_for_select();
175 // load ads and groups for select field
176
177 // display view
178 include ADVADS_BASE_PATH . 'admin/views/placements.php';
179 }
180
181 /**
182 * Render the support page
183 *
184 * @since 1.6.8.1
185 */
186 public function display_support_page() {
187
188 include ADVADS_BASE_PATH . 'admin/views/support.php';
189 }
190
191 /**
192 * Render the ad group page
193 *
194 * @since 1.0.0
195 */
196 public function ad_group_admin_page() {
197
198 $taxonomy = Advanced_Ads::AD_GROUP_TAXONOMY;
199 $post_type = Advanced_Ads::POST_TYPE_SLUG;
200 $tax = get_taxonomy( $taxonomy );
201
202 $action = Advanced_Ads_Admin::get_instance()->current_action();
203
204 // handle new and updated groups
205 if ( 'editedgroup' == $action ) {
206 $group_id = (int) $_POST['group_id'];
207 check_admin_referer( 'update-group_' . $group_id );
208
209 if ( ! current_user_can( $tax->cap->edit_terms ) ) {
210 wp_die( __( 'Sorry, you are not allowed to access this feature.', 'advanced-ads' ) ); }
211
212 // handle new groups
213 if ( 0 == $group_id ) {
214 $ret = wp_insert_term( $_POST['name'], $taxonomy, $_POST );
215 if ( $ret && ! is_wp_error( $ret ) ) {
216 $forced_message = 1; }
217 else {
218 $forced_message = 4; }
219 // handle group updates
220 } else {
221 $tag = get_term( $group_id, $taxonomy );
222 if ( ! $tag ) {
223 wp_die( __( 'You attempted to edit an ad group that doesn&#8217;t exist. Perhaps it was deleted?', 'advanced-ads' ) ); }
224
225 $ret = wp_update_term( $group_id, $taxonomy, $_POST );
226 if ( $ret && ! is_wp_error( $ret ) ) {
227 $forced_message = 3; }
228 else {
229 $forced_message = 5; }
230 }
231 // deleting items
232 } elseif ( $action == 'delete' ){
233 $group_id = (int) $_REQUEST['group_id'];
234 check_admin_referer( 'delete-tag_' . $group_id );
235
236 if ( ! current_user_can( $tax->cap->delete_terms ) ) {
237 wp_die( __( 'Sorry, you are not allowed to access this feature.', 'advanced-ads' ) ); }
238
239 wp_delete_term( $group_id, $taxonomy );
240 // delete the weights
241 Advanced_Ads_Group::delete_ad_weights($group_id);
242
243 $forced_message = 2;
244 }
245
246 // handle views
247 switch ( $action ) {
248 case 'edit' :
249 $title = $tax->labels->edit_item;
250 if ( isset($_REQUEST['group_id']) ) {
251 $group_id = absint( $_REQUEST['group_id'] );
252 $tag = get_term( $group_id, $taxonomy, OBJECT, 'edit' );
253 } else {
254 $group_id = 0;
255 $tag = false;
256 }
257
258 include ADVADS_BASE_PATH . 'admin/views/ad-group-edit.php';
259 break;
260
261 default :
262 $title = $tax->labels->name;
263 $wp_list_table = _get_list_table( 'WP_Terms_List_Table' );
264
265 // load template
266 include ADVADS_BASE_PATH . 'admin/views/ad-group.php';
267 }
268 }
269
270 }