new Ad_ShoppingAds, $_adsensem['defaults'] = array(); $_adsensem['account-ids'] = array(); $_adsensem['default-ad']==''; $_adsensem['version'] = ADSENSEM_VERSION; $deluxe=get_option('acmetech_adsensedeluxe'); if(is_array($deluxe)){adsensem_admin::add_notice('upgrade adsense-deluxe','AdSense Manager has detected a previous installation of AdSense Deluxe. Import settings?','yn');} $update_adsensem = true; } else if(adsensem_admin::version_upgrade($_adsensem['version'],ADSENSEM_VERSION)){ require('class-upgrade.php'); //Backup cycle $backup=get_option('plugin_adsensem_backup'); $backup[adsensem_admin::major_version($_adsensem['version'])]=$_adsensem; update_option('plugin_adsensem_backup',$backup); unset($backup); adsensem_upgrade::go(); $update_adsensem=true; } if($update_adsensem){ update_option('plugin_adsensem', $_adsensem); } } function major_version($v){ $mv=explode('.', $v); return $mv[0]; //Return major version } function version_upgrade($old,$new){ $ov=explode('.', $old); $nv=explode('.', $new); if($nv[0]>$ov[0]){ return true; } else if($nv[0]==$ov[0]){ if($nv[1]>$ov[1]){ return true; } else if($nv[1]==$ov[1]){ if($nv[2]>$ov[2]){ return true; } } } //else return false; } /* NOTIFICATION FUNCTIONS Functions below output notices to update the user on import options, issues with the data imported etc. */ function admin_notices(){ global $_adsensem; ?> $notice){ ?>
AdSense Manager',$notice['text']); ?>
$value) { if(is_array($value)){ ?> 'Use Default'); if(is_array(current($list))){$default=array('Default'=>$default);} //If optgroups in use, move the default into one. Smart. ?> d($id)!='') && ($_POST['adsensem-action']!=='edit defaults') ){?> p[$id], ENT_QUOTES); ?> d($id)!='') && ($_POST['adsensem-action']!=='edit defaults') ){?>

{_form_settings_.$formelement}(); ?>
$network){ $count--; if( $network['display']===false ) { continue; } if( $network['www-signup']!='' ){ ?>1){echo ', ';} else if($count==1){echo ' and ';} } } function sort_ad_step($a,$b){ $sort_network=strcmp( $GLOBALS['_adsensem_sort_ads_by_network'][$a]->network(), $GLOBALS['_adsensem_sort_ads_by_network'][$b]->network() ); if($sort_network==0){ //Same network, sort name return strcmp($a,$b); } else {return $sort_network;} } /* Sort ads by the network they're on, allows Manage Ads display to show grouped */ function sort_ads_by_network($ads){ $GLOBALS['_adsensem_sort_ads_by_network']=$ads; //Needed to pass data into the comparison function uksort($ads,array('adsensem_admin','sort_ad_step')); $GLOBALS['_adsensem_sort_ads_by_network']=''; return $ads; } /* IMPORTING AND SAVING FUNCTIONS Functions below are for running the import process from ad network code and for checking the validity of submitted values, e.g. for names */ function import_ad($code){ global $_adsensem_networks; $imported=false; //We're attempting to import code $code=stripslashes($code); if($code!==''){ foreach ($_adsensem_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 } } } if(!$imported){$ad=new Ad_Code(); $ad->import_settings($code);} return $ad; } function validate_name($name,$network=false){ global $_adsensem,$_adsensem_networks; $name=sanitize_title($name); if($name==''){ if($network){ $base=$_adsensem_networks[$network]['shortname']; } else { $base='ad'; } } else { $base=$name; } $a=0; while (isset($_adsensem['ads'][$name]) || ($name=='')){ $a++; $name=$base . '-' . $a; } return $name; } /* PROCESS ADMIN/EDITING SUBMISSION Takes submission from the admin Manage ads area and processes it to save results, import code & update */ /* Define and manage AdSense ad blocks for your Wordpress setup */ function admin_manage() { // Get our options and see if we're handling a form submission. global $_adsensem, $_adsensem_networks; $update_adsensem=false; switch ($_POST['adsensem-mode'].':'.$_POST['adsensem-action']){ case 'manage:copy unit': //Copy selected advert $copyto=adsensem_admin::validate_name($_POST['adsensem-action-target']); $_adsensem['ads'][$copyto]=adsensem_clone($_adsensem['ads'][$_POST['adsensem-action-target']]); //clone() php4 hack $_adsensem['ads'][$copyto]->name=$copyto; //update internal name reference $_adsensem['ads']=adsensem_admin::sort_ads_by_network($_adsensem['ads']); $update_adsensem=true; break; case 'manage:delete unit': //Delete selected advert if($_POST['adsensem-action-target']!=$_adsensem['default-ad']){ unset($_adsensem['ads'][$_POST['adsensem-action-target']]); $update_adsensem=true; } break; case 'manage:set default': //Set selected advert as default $_adsensem['default-ad']=$_POST['adsensem-default-name']; $update_adsensem=true; break; case 'save:edit defaults': $temp = new $_POST['adsensem-action-target']; //temporary to access network-specific functions $temp->save_settings(); $_adsensem['defaults'][$_POST['adsensem-action-target']]=$temp->p; $_POST['adsensem-mode']='manage'; $_POST['adsensem-action']=''; $update_adsensem=true; break; case 'save:edit new': $name=adsensem_admin::validate_name($_POST['adsensem-name']); $_adsensem['ads'][$name] = new $_POST['adsensem-action-target']; //temporary to access network-specific functions $_adsensem['ads'][$name]->name=$name; //Update internal name reference (always, to ensure accuracy) $_adsensem['ads'][$name]->save_settings(); $_POST['adsensem-mode']='manage'; $_POST['adsensem-action']=''; $update_adsensem=true; break; case 'save:edit unit': case 'apply:edit unit': /* Changing the name of an Ad, copy and delete old */ if($_POST['adsensem-name']!=$_POST['adsensem-name-old']){ $name=adsensem_admin::validate_name($_POST['adsensem-name']); $_adsensem['ads'][$name]=adsensem_clone($_adsensem['ads'][$_POST['adsensem-name-old']]); //$_adsensem['ads'][$name]->name=$name; //Update object-held name unset($_adsensem['ads'][$_POST['adsensem-name-old']]); /* We can now use the new $name from this point forward, lovely */ /* Update default if neccessary */ if($_adsensem['default-ad']==$_POST['adsensem-name-old']){$_adsensem['default-ad']=$name;} $_adsensem['ads'][$name]->name=$name; //Update internal name reference (always, to ensure accuracy) } else {$name=stripslashes($_POST['adsensem-name']);} $_adsensem['ads'][$name]=adsensem_admin::import_ad($_POST['adsensem-html']); $_adsensem['ads'][$name]->save_settings(); if($_POST['adsensem-mode']!=='apply'){//Only for Save (Apply leave as is, return to edit page) $_POST['adsensem-mode']='manage'; $_POST['adsensem-action']='';} //if($_adsensem['default-ad']==''){$_adsensem['default-ad']=$name;} $update_adsensem=true; break; case 'import:edit unit': $ad=adsensem_admin::import_ad($_POST['adsensem-html']); $name=adsensem_admin::validate_name($_POST['adsensem-name'],$ad->network()); $_adsensem['ads'][$name]=$ad; $_adsensem['ads'][$name]->name=$name; //Ensure that account-id passed to defaults when it does not match current submission //if($_adsensem['defaults'][$ad->network()]['account-id']!==$ad->p['account-id']){$_adsensem['defaults'][$ad->network()]['account-id']=$ad->p['account-id'];} //Forces imported unit into the edit mode for changes $_POST['adsensem-action']='edit unit'; $_POST['adsensem-action-target']=$name; $update_adsensem=true; break; case 'manage:edit unit': //Pass through stuff to switch modes between pages. case 'manage:edit defaults': case 'import:edit new': $_POST['adsensem-mode']='edit'; break; default: $_POST['adsensem-mode']='manage'; $_POST['adsensem-action']=''; } //End switch cases //Set default if possible if($_adsensem['default-ad']==''){ if(sizeof($_adsensem['ads']!==0)){reset($_adsensem['ads']); $_adsensem['default-ad']=key($_adsensem['ads']); $update_adsensem=true;} } //BUGFIX CLEANUP, REMOVE WHEN STABLE foreach($_adsensem['ads'] as $n=>$c){ if((get_class($c)=='stdClass') || (!is_object($c)) ){unset($_adsensem['ads'][$n]); $update_adsensem=true;} } //END BUGFIX CLEANUP, REMOVE WHEN STABLE if($update_adsensem){ $_adsensem['ads']=adsensem_admin::sort_ads_by_network($_adsensem['ads']); update_option('plugin_adsensem', $_adsensem); $_GET['pagesub']=''; //Show listing } if($_POST['adsensem-mode']=='manage'){ //Managing (i.e. not Importing, or editing) if( ($_GET['pagesub']=='create_new') || (sizeof($_adsensem['ads'])==0) ){ adsensem_admin::admin_manage_create(); } else { //Only if ads available adsensem_admin::admin_manage_table(); } } else { //If in edit mode, output the editing form (create, edit, defaults, etc.) adsensem_admin::admin_manage_edit(); } } /* MAIN INTERFACE FUNCTIONS Output the HTML for the main user interface in admin mode - including managing ads and initiating edit forms */ function admin_manage_network_header($network){ global $_adsensem, $_adsensem_networks; $defaults = $_adsensem['defaults'][$network]; ?>
         Create New Ad...

Manage Ad Units

$ad) { if($ad->network()!==$previous_network){ adsensem_admin::admin_manage_network_header($ad->network()); $previous_network=$ad->network(); $shade=0; } /* The below hides ads from other networks while editing a given network */ //if(($_POST['adsensem-edit-network']!='') && ($ad['network']!=$_POST['adsensem-edit-network'])){continue;} ?>p)){ ?>
NameDimensionsSlotColorAlternateNotesModifyDA
p['adformat'], ENT_QUOTES); ?> p))&&(!array_key_exists('channel',$ad->p))){ echo 'class="disabled"'; } ?> style="text-align:center">p['slot'], ENT_QUOTES); ?>p['channel']!=''){echo htmlspecialchars('/'.$ad->p['channel'], ENT_QUOTES) ;} ?>           p['alternate-ad'], ENT_QUOTES); ?> p['notes'], ENT_QUOTES); ?> checked >

Earn even more with Text Link Ads and InLinks!

By changing the Network settings you can update all Ads on a network at once.
Default Ad indicates which Ad will be displayed in any space on your site where no specific ID is used.

Ads can be included in templates using <?php adsensem_ad('name'); ?> or <?php adsensem_ad(); ?> for the default Ad.
Ads can be inserted into posts / pages using [ad#name] or [ad] for the default Ad.
Note that the old <!--adsense#name--> style still works if you prefer it.

Create Ads


AdSense Manager supports most Ad networks including .

Add your ad!

Simply paste your Ad Code below and click Import to get started.

p=$_adsensem['defaults'][$_POST['adsensem-action-target']]; //Load defaults into temporary ad ?>

Edit Default Settings for '' units

Edit the default settings for your ads below.

name=$_POST['adsensem-action-target']; ?>

Edit ''

Edit the settings for your Ad below. To use the network defaults for any element, simply leave that section blank or select "Use Default" from the drop down menus.

Basic

admin_manage_column1(); ?>

Code

admin_manage_column2(); ?>

Advanced

admin_manage_column3(); ?>

AdSense Manager Options

AdSense Manager has been redesigned to be as simple to use as possible. To get you started, the instructions below will guide you through the process of adding your first ad to AdSense Manager. Once you've created the first one you can simply repeat the process to add as many ads as you like!

Getting Started

  1. Or use .
  2. Create a new ad unit using your network's ad online management system.
  3. Copy the ad code generated (Edit » Copy, from within your browser)
  4. Go to Manage » Ad Units and paste the code into the box
  5. Click Import to New Ad Unit»

If you need more help, there are detailed instructions available on our website, or check the forum and ask a question.

Be Nice!

Please support the developers of this plugin by making a donation:

  1. I've given a a very generous donation through Paypal and got a warm fuzzy feeling.
  2. I've ordered a random gift from your wishlist so you don't need to waste valuable development time in the shops.

Thanks to all those that have shown their support, it really does make a difference!