/** * load interface for single visitor condition * * @since 1.5.4 */ public function load_visitor_condition() { if (!current_user_can(Advanced_Ads_Plugin::user_cap('advanced_ads_edit_ads'))) { return; } // get visitor condition types $visitor_conditions = Advanced_Ads_Visitor_Conditions::get_instance()->conditions; $condition = array(); $condition['type'] = isset($_POST['type']) ? $_POST['type'] : ''; $condition['connector'] = isset($_POST['connector']) ? $_POST['connector'] : ''; $index = isset($_POST['index']) ? $_POST['index'] : 0; if (isset($visitor_conditions[$condition['type']])) { $metabox = $visitor_conditions[$condition['type']]['metabox']; } else { die; } if (method_exists($metabox[0], $metabox[1])) { call_user_func(array($metabox[0], $metabox[1]), $condition, $index); } die; }
<?php $visitor_conditions = Advanced_Ads_Visitor_Conditions::get_instance()->conditions; $options = $ad->options('visitors'); ?> <p class="description"><?php _e('Display conditions that are based on the user. Use with caution on cached websites.', 'advanced-ads'); ?> </p> <div id="advads-visitor-conditions"> <table><tbody><?php if (isset($options)) { $i = 0; foreach ($options as $_options) { if (isset($visitor_conditions[$_options['type']]['metabox'])) { $metabox = $visitor_conditions[$_options['type']]['metabox']; } else { continue; } if (method_exists($metabox[0], $metabox[1])) { $_connector = isset($_options['connector']) ? esc_attr($_options['connector']) : 'and'; ?> <tr><td colspan="4" class="advads-visitor-conditions-connector-<?php echo $_connector; ?> "><?php echo $_connector; ?> <hr/></td></tr><?php ?> <tr><td></td><td><?php
/** * controls frontend checks for conditions * * @param arr $options options of the condition * @param ob $ad Advanced_Ads_Ad * @return bool false, if ad can’t be delivered */ static function frontend_check($options = array(), $ad = false) { $visitor_conditions = Advanced_Ads_Visitor_Conditions::get_instance()->conditions; if (is_array($options) && isset($visitor_conditions[$options['type']]['check'])) { $check = $visitor_conditions[$options['type']]['check']; } else { return true; } // call frontend check callback if (method_exists($check[0], $check[1])) { return call_user_func(array($check[0], $check[1]), $options, $ad); } return true; }