0, 'name' => 'image')
, Array('id' => 1, 'name' => 'text')
);
$ad_engine_ad_deck = Array();
$ad_slot = 0;
// Ad Comparison
function ad_engine_ad_cmp($a, $b) {
if ( $a['cat_name'] == $b['cat_name']) {
if ( $a['co_name'] == $b['co_name']) {
if ( $a['ad_name'] == $b['ad_name']) {
return 0;
}
return ($a['ad_name'] < $b['ad_name']) ? -1 : 1;
}
return ($a['co_name'] < $b['co_name']) ? -1 : 1;
}
return ($a['cat_name'] < $b['cat_name']) ? -1 : 1;
}
function ad_engine_get_ad_deck($a, $b) {
$jads = ad_engine_get_counts();
$ad_deck = Array();
$iter = 0;
while($iter <= $jads['ads']) {
$tmp = get_option('ad_engine_' . $iter);
if(isset($tmp['ad_id']))
$ad_deck[] = $tmp;
$iter++;
}
uasort($ad_deck, ad_engine_category_cmp);
return $ad_deck;
}
// Ad Group Compare function (Used for Sort)
function ad_engine_category_cmp($a, $b) {
if ($a['cat_name'] == $b['cat_name']) {
return 0;
}
return ($a['cat_name'] < $b['cat_name']) ? -1 : 1;
}
function ad_engine_get_cat_deck($a, $b) {
$jads = ad_engine_get_counts();
$cat_deck = Array();
$iter = 0;
while($iter <= $jads['categories']) {
$tmp = get_option('ad_engine_cat_' . $iter);
if(isset($tmp['cat_id']))
$cat_deck[] = $tmp;
$iter++;
}
uasort($cat_deck, ad_engine_category_cmp);
return $cat_deck;
}
// Client Group Compare function (Used for Sort)
function ad_engine_client_cmp($a, $b) {
if ($a['co_name'] == $b['co_name']) {
return 0;
}
return ($a['co_name'] < $b['co_name']) ? -1 : 1;
}
function ad_engine_get_client_deck($a, $b) {
$jads = ad_engine_get_counts();
$client_deck = Array();
$iter = 0;
while($iter <= $jads['clients']) {
$tmp = get_option('ad_engine_client_' . $iter);
if(isset($tmp['co_id']))
$client_deck[] = $tmp;
$iter++;
}
uasort($client_deck, ad_engine_category_cmp);
return $client_deck;
}
// Compare items in an array used by the dropdown function
function ad_engine_dropdown_cmp($a, $b) {
if ($a['name'] == $b['name']) {
return 0;
}
return ($a['name'] < $b['name']) ? -1 : 1;
}
function ad_engine_form_dropdown($label, $id, $list, $value, $name = '') {
uasort($list, ad_engine_dropdown_cmp);
if($name == '') {
$name = $id;
}
$output = sprintf("
";
$output .= __("Clients","Clients");
$output .= "Add New";
$output .= "
";
//$output .= 'Create Client';
$output .= "\n
\n| Client | Contact Name | Contact Email | Contact Phone | Actions |
\n";
$client_deck = ad_engine_get_client_deck();
/*
$iter = 1;
while($iter <= $jads['clients']) {
$client_deck[] = get_option('ad_engine_client_' . $iter);
$iter++;
}
uasort($client_deck, ad_engine_client_cmp);
*/
while($client = array_shift($client_deck)) {
$output .= sprintf("\n| %s | %s | %s | %s | Delete |
",
admin_url("admin.php?page=ad-engine-client-edit&id=" . $client['co_id'])
, $client['co_name']
, $client['ct_name']
, $client['ct_email']
, $client['ct_phone']
, admin_url("admin.php?page=ad-engine-client-menu&action=client_delete&id=" . $client['co_id']));
}
$output .= '
';
echo $output;
}
function ad_engine_category_edit_form() {
global $_GET;
$jads = ad_engine_get_counts();
$ad_group = get_option('ad_engine_cat_' . $_GET['id']);
?>
";
$output .= __("Ad Groups","Ad Groups");
$output .= "Add New";
$output .= "
";
$output .= "\n
\n| Ad Group Name | Action |
\n";
$cat_deck = ad_engine_get_cat_deck();
$max = count($cat_deck);
$iter = 0;
for($iter; $iter < $max; $iter++) {
$category = $cat_deck[$iter];
$output .= sprintf("\n| %s | Delete |
"
, admin_url("admin.php?page=ad-engine-category-edit&id=" . $category['cat_id']), $category['cat_name']
, admin_url("admin.php?page=ad-engine-category-menu&action=cat_delete&id=" . $category['cat_id']));
}
$output .= '
';
echo $output;
}
function ad_engine_menu() {
add_menu_page( 'Advertisements' , 'Ad Engine' , 2 , 'ad-engine-menu' , 'ad_engine_form');
add_submenu_page( 'ad-engine-menu' ,'New Ad' ,'New Ad' , 2 , 'ad-engine-new' , 'ad_engine_new_form');
add_submenu_page( 'ad-engine-menu' ,'Edit Ad' ,'Edit Ad' , 2 , 'ad-engine-edit' , 'ad_engine_edit_form');
add_submenu_page( 'ad-engine-menu' ,'Clients' ,'Clients' , 2 , 'ad-engine-client-menu' , 'ad_engine_client_form');
add_submenu_page( 'ad-engine-client-menu' ,'New Client' ,'New Client' , 2 , 'ad-engine-client-new' , 'ad_engine_client_new_form');
add_submenu_page( 'ad-engine-client-menu' ,'Edit Client' ,'Edit Client' , 2 , 'ad-engine-client-edit' , 'ad_engine_client_edit_form');
add_submenu_page( 'ad-engine-menu' ,'Ad Groups' ,'Ad Groups' , 2 , 'ad-engine-category-menu' , 'ad_engine_category_form');
add_submenu_page( 'ad-engine-category-menu' ,'New Ad Group' ,'New Ad Group' , 2 , 'ad-engine-category-new' , 'ad_engine_category_new_form');
add_submenu_page( 'ad-engine-category-menu' ,'Edit Ad Group' ,'Edit Ad Group' , 2 , 'ad-engine-category-edit' , 'ad_engine_category_edit_form');
}
if (is_admin()) {
add_action('admin_menu', 'ad_engine_menu');
}
function ad_engine_init() {
$jads = ad_engine_get_counts();
if(isset($_GET['cancel']) || isset($_POST['cancel'])) {
return;
}
else if(isset($_GET['ae_img'])) {
$wud = wp_upload_dir();
$dir = $wud['basedir'] . "/ad_engine";
$fname = sprintf("%s/%d-ad.png", $dir, $_GET['ae_img']);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file($finfo, $fname);
finfo_close($finfo);
$r_ad = get_option('ad_engine_' . $_GET['ae_img']);
$r_ad['ad_shown']++;
update_option('ad_engine_' . $r_ad['ad_id'] , $r_ad);
header("Content-type: " . $type);
readfile($fname);
die();
}
else if(isset($_GET['ae_redirect'])) {
$tmp = get_option('ad_engine_' . intval($_GET['ae_redirect']));
$tmp['ad_id'] = intval($_GET['ae_redirect']);
if(isset($tmp['ad_clicks']))
$tmp['ad_clicks']++;
else
$tmp['ad_clicks'] = 1;
update_option('ad_engine_' . $tmp['ad_id'] , $tmp);
header('Location: ' . $tmp['ad_link']);
die();
}
// Client Processing
else if(isset($_POST['save_ad'])) {
$nClient = Array();
$nClient['ad_name'] = esc_html(stripslashes($_POST['ad_name']), ENT_QUOTES);
$nClient['ad_cat'] = esc_html(stripslashes($_POST['ad_cat']), ENT_QUOTES);
$nClient['ad_client'] = esc_html(stripslashes($_POST['ad_client']), ENT_QUOTES);
$nClient['ad_imp'] = esc_html(stripslashes($_POST['ad_imp']), ENT_QUOTES);
$nClient['ad_shown'] = esc_html(stripslashes($_POST['ad_shown']), ENT_QUOTES);
$nClient['ad_clicks'] = esc_html(stripslashes($_POST['ad_clicks']), ENT_QUOTES);
$nClient['ad_data'] = esc_html(stripslashes($_POST['ad_data']), ENT_QUOTES);
$nClient['ad_link'] = esc_html(stripslashes($_POST['ad_link']), ENT_QUOTES);
$nClient['ad_type'] = esc_html(stripslashes($_POST['ad_type']), ENT_QUOTES);
$nClient['ad_id'] = $_POST['ad_id'];
update_option('ad_engine_' . $nClient['ad_id'] , $nClient);
}
else if(isset($_POST['new_ad'])) {
$nClient = Array();
$nClient['ad_name'] = esc_html(stripslashes($_POST['ad_name']), ENT_QUOTES);
$nClient['ad_cat'] = esc_html(stripslashes($_POST['ad_cat']), ENT_QUOTES);
$nClient['ad_client'] = esc_html(stripslashes($_POST['ad_client']), ENT_QUOTES);
$nClient['ad_imp'] = esc_html(stripslashes($_POST['ad_imp']), ENT_QUOTES);
$nClient['ad_shown'] = esc_html(stripslashes($_POST['ad_shown']), ENT_QUOTES);
$nClient['ad_data'] = esc_html(stripslashes($_POST['ad_data']), ENT_QUOTES);
$nClient['ad_link'] = esc_html(stripslashes($_POST['ad_link']), ENT_QUOTES);
$nClient['ad_type'] = esc_html(stripslashes($_POST['ad_type']), ENT_QUOTES);
$jads['ads']++;
$nClient['ad_id'] = $jads['ads'];
update_option('ad_engine_' . $nClient['ad_id'] , $nClient);
}
else if(isset($_GET['action']) && ($_GET['action'] == "ad_delete")) {
delete_option('ad_engine_' . $_GET["id"]);
}
// Client Processing
else if(isset($_POST['update_client'])) {
$nClient = Array();
$nClient['co_name'] = esc_html(stripslashes($_POST['co_name']), ENT_QUOTES);
$nClient['ct_name'] = esc_html(stripslashes($_POST['ct_name']), ENT_QUOTES);
$nClient['ct_email'] = esc_html(stripslashes($_POST['ct_email']), ENT_QUOTES);
$nClient['ct_phone'] = esc_html(stripslashes($_POST['ct_phone']), ENT_QUOTES);
$nClient['co_id'] = $_POST['co_id'];
update_option('ad_engine_client_' . $nClient['co_id'] , $nClient, ENT_QUOTES);
}
else if(isset($_POST['new_client'])) {
$nClient = Array();
$nClient['co_name'] = esc_html(stripslashes($_POST['co_name']), ENT_QUOTES);
$nClient['ct_name'] = esc_html(stripslashes($_POST['ct_name']), ENT_QUOTES);
$nClient['ct_email'] = esc_html(stripslashes($_POST['ct_email']), ENT_QUOTES);
$nClient['ct_phone'] = esc_html(stripslashes($_POST['ct_phone']), ENT_QUOTES);
$jads['clients']++;
$nClient['co_id'] = $jads['clients'];
update_option('ad_engine_client_' . $nClient['co_id'] , $nClient);
}
else if(isset($_GET['action']) && ($_GET['action'] == "client_delete")) {
delete_option('ad_engine_client_' . $_GET['id']);
}
// Ad Group Processing
else if(isset($_POST['new_category'])) {
$nClient = Array();
$nClient['cat_name'] = esc_html(stripslashes($_POST['cat_name']), ENT_QUOTES);
$nClient['cat_id'] = $_POST['cat_id'];
$jads['categories']++;
$nClient['cat_id'] = $jads['categories'];
update_option('ad_engine_cat_' . $nClient['cat_id'] , $nClient);
}
else if(isset($_POST['save_category'])) {
$nClient = Array();
$nClient['cat_name'] = esc_html(stripslashes($_POST['cat_name']), ENT_QUOTES);
$nClient['cat_id'] = $_POST['cat_id'];
$nClient['cat_carousel'] = $_POST['cat_carousel'];
update_option('ad_engine_cat_' . $nClient['cat_id'] , $nClient);
}
else if(isset($_GET['action']) && ($_GET['action'] == "cat_delete")) {
delete_option('ad_engine_cat_' . $_GET['id'] );
}
if(isset($_FILES['ad_image'])) {
$wud = wp_upload_dir();
$dir = $wud['basedir'] . "/ad_engine";
if(! is_dir($dir))
mkdir($dir, 755, true);
$fname = sprintf("%s/%d-ad.png", $dir, $nClient['ad_id']);
move_uploaded_file($_FILES['ad_image']['tmp_name'], $fname);
}
update_option('ad_engine', $jads);
}
add_action('init', 'ad_engine_init', 1);
function ad_engine_get_ads($category) {
global $ad_engine_ad_deck;
$jads = ad_engine_get_counts();
$iter = 1;
if(count($ad_engine_ad_deck[$category]) == 0) {
while($iter <= $jads['ads']) {
$tmp = get_option('ad_engine_' . $iter);
if(($category == $tmp['ad_cat']) &&
(($tmp['ad_shown'] < $tmp['ad_imp']) || ($tmp['ad_imp'] == -1))) {
$ad_engine_ad_deck[$category][] = $tmp;
}
$iter++;
}
//uasort($ad_engine_ad_deck, ad_engine_ad_cmp);
shuffle($ad_engine_ad_deck[$category]);
}
return $ad_engine_ad_deck;
}
function ad_engine_show($atts) {
extract(shortcode_atts(array(
'ad_group' => 1,
), $atts));
global $ad_engine_ad_deck, $ad_slot;
$jads = ad_engine_get_counts();
$iter = 0;
//$ag = get_option('ad_engine_cat_' . $ad_group);
while($iter <= $jads['categories']) {
$tmp = get_option('ad_engine_cat_' . $iter);
if(isset($tmp['cat_id']) &&
(strtolower($tmp['cat_name']) == strtolower($ad_group))
) {
$ag = $tmp;
}
$iter++;
}
$ad_group = $ag['cat_id'];
$title = "Advertisement";
// This function sets global variable ad_engine_ad_deck
ad_engine_get_ads($ad_group);
if($ag['cat_carousel'] == "on") {
$r_ad = $ad_engine_ad_deck[$ad_group][0];
for($iter = 0 ; $iter < count($ad_engine_ad_deck[$ad_group]); $iter++) {
$ad_list[] = $ad_engine_ad_deck[$ad_group][$iter]['ad_id'];
}
$javascript = "
";
}
else {
$r_ad = array_shift($ad_engine_ad_deck[$ad_group]);
$javascript = '';
}
if($r_ad['ad_type'] == 1) {
$data = $r_ad['ad_data'];
}
else if($r_ad['ad_type'] == 0) {
$fname = "/?ae_img=" . $r_ad['ad_id'];
$data = "

";
}
// Setup is done, now build the output
$output = $before_widget;
$output .= "
";
$output .= "
". $title . "
";
$output .= $javascript;
// Undecided on whether to nofollow this link or not.
$output .= sprintf("
"
, site_url()
, $r_ad['ad_id']
, $data
);
$output .= $after_widget;
return $output;
}
add_shortcode('ad-engine', 'ad_engine_show');
class ad_engine extends WP_Widget {
/** constructor */
function ad_engine() {
parent::WP_Widget(false, $name = 'Ad Engine');
}
/** @see WP_Widget::widget */
function widget($args, $instance) {
extract($args);
global $ad_engine_ad_deck;
$title = "Advertisement";
echo $before_widget;
echo $before_title . $title . $after_title;
// This function sets global variable ad_engine_ad_deck
ad_engine_get_ads($instance['category']);
$r_ad = array_shift($ad_engine_ad_deck[$instance['category']]);
if($r_ad['ad_type'] == 1) {
$data = $r_ad['ad_data'];
}
else if($r_ad['ad_type'] == 0) {
$wud = wp_upload_dir();
$fname = "/?ae_img=" . $r_ad['ad_id'];
$data = "

";
}
// Undecided on whether to nofollow this link or not.
printf("
"
, site_url()
, $r_ad['ad_id']
, $data
);
echo $after_widget;
}
/** @see WP_Widget::update */
function update($new_instance, $old_instance) {
return $new_instance;
}
/** @see WP_Widget::form */
function form($instance) {
global $_GET;
$jads = ad_engine_get_counts();
$cat_list = Array();
$client_list = Array();
$iter = 1;
while($iter <= $jads['categories']) {
$tmp = get_option('ad_engine_cat_' . $iter);
$cat_list[] = Array('id' => $tmp['cat_id'], 'name' => $tmp['cat_name']);
$iter++;
}
$category = esc_attr($instance['category']);
echo "
" . ad_engine_form_dropdown('Ad Group' , $this->get_field_id('category'), $cat_list, $category, $this->get_field_name('category')) . "
";
}
} // class ad_engine
add_action('widgets_init', create_function('', 'return register_widget("ad_engine");'));
function ad_engine_carousel() {
?>