$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];
?>
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
Or use .
Create a new ad unit using your network's ad online management system.
Copy the ad code generated (Edit » Copy, from within your browser)