/** * save a new placement * * @since 1.1.0 * @param array $new_placement * @return mixed true if saved; error message if not */ public static function save_new_placement($new_placement) { // load placements // -TODO use model $placements = Advanced_Ads::get_ad_placements_array(); // create slug $new_placement['slug'] = sanitize_title($new_placement['name']); // check if slug already exists or is empty if ($new_placement['slug'] === '' || isset($placements[$new_placement['slug']])) { return false; } // make sure only allowed types are being saved $placement_types = Advanced_Ads_Placements::get_placement_types(); $new_placement['type'] = isset($placement_types[$new_placement['type']]) ? $new_placement['type'] : 'default'; // escape name $new_placement['name'] = esc_attr($new_placement['name']); // add new place to all placements $placements[$new_placement['slug']] = array('type' => $new_placement['type'], 'name' => $new_placement['name']); // save array update_option('advads-ads-placements', $placements); return true; }
/** * Render the placements page * * @since 1.1.0 */ public function display_placements_page() { $placement_types = Advanced_Ads_Placements::get_placement_types(); $placements = Advanced_Ads::get_ad_placements_array(); // -TODO use model $items = Advanced_Ads_Placements::items_for_select(); // load ads and groups for select field // display view include ADVADS_BASE_PATH . 'admin/views/placements.php'; }
public function get_ad_by_placement($args) { if (isset($args['override'])) { return $args['override']; } if (!isset($args['id']) || $args['id'] == '') { return; } // check conditions if (!Advanced_Ads_Placements::can_display($args['id'])) { return; } // get placement content $id = $args['id']; return Advanced_Ads_Placements::output($id, $args); }
/** * injected ad into content (before and after) * displays ALL ads * * @since 1.1.0 * @param str $content post content */ public function inject_content($content = '') { // run only within the loop on single pages of public post types $public_post_types = get_post_types(array('public' => true, 'publicly_queryable' => true), 'names', 'or'); // check if admin allows injection in all places $options = $this->plugin->options(); if (!isset($options['content-injection-everywhere'])) { // check if this is a singular page within the loop if (!is_singular($public_post_types) || !in_the_loop()) { return $content; } } $placements = get_option('advads-ads-placements', array()); if (!apply_filters('advanced-ads-can-inject-into-content', true, $content, $placements)) { return $content; } foreach ($placements as $_placement_id => $_placement) { if (empty($_placement['item']) || !isset($_placement['type'])) { continue; } $_options = isset($_placement['options']) ? $_placement['options'] : array(); switch ($_placement['type']) { case 'post_top': // TODO broken: does not serve placement but serves ad directly $content = Advanced_Ads_Select::get_instance()->get_ad_by_method($_placement_id, Advanced_Ads_Select::PLACEMENT, $_options) . $content; break; case 'post_bottom': $content .= Advanced_Ads_Select::get_instance()->get_ad_by_method($_placement_id, Advanced_Ads_Select::PLACEMENT, $_options); break; case 'post_content': $content = Advanced_Ads_Placements::inject_in_content($_placement_id, $_options, $content); break; } } return $content; }
</option> <?php } ?> </select> <input type="number" name="advads[placements][<?php echo $_placement_slug; ?> ][options][index]" value="<?php echo isset($_placement['options']['index']) ? $_placement['options']['index'] : 1; ?> "/>. <?php $tags = Advanced_Ads_Placements::tags_for_content_injection(); ?> <select name="advads[placements][<?php echo $_placement_slug; ?> ][options][tag]"> <?php foreach ($tags as $_tag_key => $_tag) { ?> <option value="<?php echo $_tag_key; ?> " <?php if (isset($_placement['options']['tag'])) { selected($_placement['options']['tag'], $_tag_key); }