')) { add_object_page(__('Ads', 'advman'), __('Ads', 'advman'), 8, 'advman-manage', array('advman_admin','manage')); add_submenu_page('advman-manage', __('Edit Ads', 'advman'), __('Edit', 'advman'), 8, 'advman-manage', array('advman_admin','manage')); add_submenu_page('advman-manage', __('Create New Ad', 'advman'), __('Create New', 'advman'), 8, 'advman-create', array('advman_admin','create')); add_options_page(__('Ads', 'advman'), __('Ads', 'advman'), 8, 'advman-settings', array('advman_admin','settings')); } else { add_menu_page(__('Ads', 'advman'), __('Ads', 'advman'), 8, 'advman-manage', array('advman_admin','manage')); add_submenu_page('advman-manage', __('Edit Ads', 'advman'), __('Edit', 'advman'), 8, 'advman-manage', array('advman_admin','manage')); add_submenu_page('advman-manage', __('Create New Ad', 'advman'), __('Create New', 'advman'), 8, 'advman-create', array('advman_admin','create')); add_options_page(__('Ads', 'advman'), __('Ads', 'advman'), 8, 'advman-settings', array('advman_admin','settings')); } add_action( 'admin_notices', array('advman_admin','admin_notices'), 1 ); } /** * Build an HMTL field of type TEXT */ function build_input_text_field($name, $value, $size="", $description="", $id="", $style="") { $n = htmlspecialchars($name, ENT_QUOTES); $v = htmlspecialchars($value, ENT_QUOTES); $sz = !empty($size) ? (' size="' . htmlspecialchars($size, ENT_QUOTES) . '"') : ''; $d = !empty($description) ? (' title="' . htmlspecialchars($description, ENT_QUOTES) . '"') : ''; $i = !empty($id) ? (' id="' . htmlspecialchars($id, ENT_QUOTES) . '"') : ''; $s = !empty($style) ? (' style="' . htmlspecialchars($style, ENT_QUOTES) . '"') : ''; return ""; } function build_input_hidden_field($name, $value, $id="") { $n = htmlspecialchars($name, ENT_QUOTES); $v = htmlspecialchars($value, ENT_QUOTES); $i = !empty($id) ? (' id="' . htmlspecialchars($id, ENT_QUOTES) . '"') : ''; return ""; } function build_label($name, $for="") { $n = htmlspecialchars($name, ENT_QUOTES); $f = !empty($for) ? ( ' for="' . htmlspecialchars($for, ENT_QUOTES) . '"') : ''; return "$n"; } /* NOTIFICATION FUNCTIONS Functions below output notices to update the user on import options, issues with the data imported etc. */ function admin_notices() { global $_advman; if (!empty($_advman['notices'])) { include_once(ADVMAN_TEMPLATE_PATH . '/Notice.php'); Template_Notice::display($_advman['notices']); } } function generate_name($base = null) { global $_advman; if (empty($base)) { $base = 'ad'; } // Generate a unique name if no name was specified $unique = false; $i = 1; $name = $base; while (!$unique) { $unique = true; foreach ($_advman['ads'] as $ad) { if ($ad->name == $name) { $unique = false; break; } } if (!$unique) { $name = $base . '-' . $i++; } } return $name; } function validate_id($id) { global $_advman; $validId = false; if (is_numeric($id) && !empty($_advman['ads'][$id])) { $validId = $id; } return $validId; } function generate_id() { global $_advman; if (empty($_advman['next_ad_id'])) { $_advman['next_ad_id'] = 1; } $nextId = $_advman['next_ad_id']; $_advman['next_ad_id'] = $nextId + 1; return $nextId; } function _save_ad($target) { global $_advman; $id = advman_admin::validate_id($target); $_advman['ads'][$id]->id = $id; // Update internal ID reference $_advman['ads'][$id]->save_settings(); update_option('plugin_adsensem', $_advman); } function _save_network($target) { global $_advman; if (!empty($_advman['defaults'][$target])) { $networkAd = new $target; $networkAd->save_defaults(); update_option('plugin_adsensem', $_advman); } } function _save_settings() { global $_advman; $_advman['settings']['openx-market'] = !empty($_POST['advman-openx-market']); $_advman['settings']['openx-sync'] = !empty($_POST['advman-openx-sync']); $_advman['settings']['openx-market-cpm'] = !empty($_POST['advman-openx-market-cpm']) ? OX_Tools::sanitize_number($_POST['advman-openx-market-cpm']) : '0.20'; update_option('plugin_adsensem', $_advman); } function _copy_ad($target) { global $_advman; //Copy selected advert $id = advman_admin::validate_id($target); $newid = advman_admin::generate_id(); $_advman['ads'][$newid] = advman_clone($_advman['ads'][$id]); //clone() php4 hack $_advman['ads'][$newid]->id = $newid; //update internal id reference $_advman['ads'][$newid]->set('revisions', null); // remove any previous revisions $_advman['ads'] = OX_Tools::sort($_advman['ads']); $_advman['ads'][$newid]->add_revision(); update_option('plugin_adsensem', $_advman); return $newid; } function _delete_ad($target) { global $_advman; $id = advman_admin::validate_id($target); unset($_advman['ads'][$id]); update_option('plugin_adsensem', $_advman); } function _import_ad($target) { global $_advman; global $_advman_networks; if (empty($target)) { // Cut'n'paste code rather than selecting an adsense classic function //We're attempting to import code $imported = false; $code = stripslashes($_POST['advman-code']); if (!empty($code)) { foreach ($_advman_networks as $network => $n) { if (call_user_func(array($network, 'import_detect_network'), $code)) { $ad = new $network; $ad->import_settings($code); $imported = true; break; //leave the foreach loop } } } // Not a pre-defined network - we will make it HTML code... if (!$imported) { $ad=new OX_Adnet_Html(); $ad->import_settings($code); } } else { $ad = new $target; } $name = advman_admin::generate_name($ad->shortName); $id = advman_admin::generate_id(); $ad->name = $name; $ad->id = $id; $_advman['ads'][$id] = $ad; OX_Tools::sort($_advman['ads']); $_advman['ads'][$id]->add_revision(); update_option('plugin_adsensem', $_advman); return $id; } function _set_active($id, $active) { global $_advman; //Set selected advert as active $id = advman_admin::validate_id($id); if ($_advman['ads'][$id]->active != $active) { $_advman['ads'][$id]->active = $active; $_advman['ads'][$id]->add_revision(); update_option('plugin_adsensem', $_advman); } } function _set_default($id) { global $_advman; //Set selected advert as active $id = advman_admin::validate_id($id); $name = $_advman['ads'][$id]->name; if ($name != $_advman['default-ad']) { $_advman['default-ad'] = $name; update_option('plugin_adsensem', $_advman); } } // turn on/off optimisation across openx for all ads function _set_auto_optimise($active) { global $_advman; $market = ($active) ? 'yes' : 'no'; foreach ($_advman['ads'] as $id => $ad) { $_advman['ads'][$id]->set('openx-market', $market); } foreach ($_advman['defaults'] as $network => $settings) { $_advman['defaults'][$network]['openx-market'] = $market; } update_option('plugin_adsensem', $_advman); } function manage() { // Get our options and see if we're handling a form submission. global $_advman; global $_advman_networks; $update_advman = false; $mode = !empty($_POST['advman-mode']) ? OX_Tools::sanitize_key($_POST['advman-mode']) : null; $action = !empty($_POST['advman-action']) ? OX_Tools::sanitize_key($_POST['advman-action']) : null; $target = !empty($_POST['advman-action-target']) ? OX_Tools::sanitize_key($_POST['advman-action-target']) : null; $targets = !empty($_POST['advman-action-targets']) ? OX_Tools::sanitize_key($_POST['advman-action-targets']) : null; $filter = null; switch ($action) { case 'activate' : advman_admin::_set_active($target, true); break; case 'apply' : if (is_numeric($target)) { advman_admin::_save_ad($target); $mode = 'edit_ad'; } else { advman_admin::_save_network($target); $mode = 'edit_network'; } break; case 'cancel' : $mode = !empty($_advman['ads']) ? 'list_ads' : 'create_ad'; break; case 'clear' : break; case 'copy' : if (!empty($target)) { $target = advman_admin::_copy_ad($target); } elseif (!empty($targets)) { foreach ($targets as $target) { advman_admin::_copy_ad($target); } } break; case 'deactivate' : advman_admin::_set_active($target, false); break; case 'default' : advman_admin::_set_default($target); break; case 'delete' : if (!empty($target)) { advman_admin::_delete_ad($target); } elseif (!empty($targets)) { foreach ($targets as $target) { advman_admin::_delete_ad($target); } } $mode = !empty($_advman['ads']) ? 'list_ads' : 'create_ad'; break; case 'edit' : $mode = is_numeric($target) ? 'edit_ad' : 'edit_network'; break; case 'filter' : if (!empty($_POST['advman-filter-active'])) { $filter['active'] = $_POST['advman-filter-active']; } if (!empty($_POST['advman-filter-network'])) { $filter['network'] = $_POST['advman-filter-network']; } break; case 'import' : $target = advman_admin::_import_ad($target); $mode = 'edit_ad'; break; case 'list' : $mode = 'list_ads'; break; case 'save' : if ($mode == 'settings') { advman_admin::_save_settings(); } else { if (is_numeric($target)) { advman_admin::_save_ad($target); } else { advman_admin::_save_network($target); } $mode = 'list_ads'; } break; case 'settings' : $mode = 'settings'; break; default : $mode = !empty($_advman['ads']) ? 'list_ads' : 'create_ad'; break; } switch ($mode) { case 'list_ads' : $template = OX_Tools::get_template('ListAds'); $template->display(); break; case 'create_ad' : advman_admin::create(); break; case 'edit_ad' : $ad = $_advman['ads'][$target]; $template = OX_Tools::get_template('EditAd', $ad); $template->display($target); break; case 'edit_network' : $ad = new $target; $template = OX_Tools::get_template('EditNetwork', $ad); $template->display($target); break; case 'settings' : $template = OX_Tools::get_template('Settings'); $template->display(); break; } } /** * This function is called from the Wordpress Ads menu */ function create() { $template = OX_Tools::get_template('CreateAd'); $template->display(); } /** * This function is called from the Wordpress Settings menu */ function settings() { // Get our options and see if we're handling a form submission. if ($_POST['advman-action'] == 'save') { advman_admin::_save_settings(); } include_once(ADVMAN_TEMPLATE_PATH . '/Settings.php'); Template_Settings::display(); } /* STARTUP SCRIPTS Initialised at startup to provide functions to the plugin etc. */ function admin_print_scripts() { $page = !empty($_GET['page']) ? $_GET['page'] : ''; if ($page == 'advman-manage') { wp_enqueue_script('prototype'); wp_enqueue_script('postbox'); } } function admin_head() { $page = !empty($_GET['page']) ? $_GET['page'] : ''; if ($page == 'advman-manage') { ?>