本文整理汇总了PHP中EM_Object::context方法的典型用法代码示例。如果您正苦于以下问题:PHP EM_Object::context方法的具体用法?PHP EM_Object::context怎么用?PHP EM_Object::context使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EM_Object
的用法示例。
在下文中一共展示了EM_Object::context方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: array
//.........这里部分代码省略.........
}
//START TAXONOMY FILTERS - can be id, slug, name or comma seperated ids/slugs/names, if negative or prepended with a - then considered a negative filter
$taxonomies = self::get_taxonomies();
foreach ($taxonomies as $tax_name => $tax_data) {
if (!empty($args[$tax_name]) && is_array($args[$tax_name])) {
if (!empty($tax_data['ms'])) {
self::ms_global_switch();
}
//if in ms global mode, switch here rather than on each EM_Category instance
//build array of term ids and negative ids from supplied argument
$term_tax_ids = $term_ids = array();
$term_tax_not_ids = $term_not_ids = array();
foreach ($args[$tax_name] as $tax_id) {
$tax_id_clean = preg_replace('/^-/', '', $tax_id);
if (!is_numeric($tax_id_clean)) {
$term = get_term_by('slug', $tax_id_clean, $tax_data['name']);
if (empty($term)) {
$term = get_term_by('name', $tax_id_clean, $tax_data['name']);
}
} else {
$term = get_term_by('id', $tax_id_clean, $tax_data['name']);
}
if (!empty($term->term_taxonomy_id)) {
if (!preg_match('/^-/', $tax_id)) {
$term_tax_ids[] = $term->term_taxonomy_id;
if (EM_MS_GLOBAL && !empty($tax_data['ms'])) {
$term_ids[] = $term->term_id;
}
} else {
$term_tax_not_ids[] = $term->term_taxonomy_id;
if (EM_MS_GLOBAL && !empty($tax_data['ms'])) {
$term_not_ids[] = $term->term_id;
}
}
}
}
if (!empty($tax_data['ms'])) {
self::ms_global_switch_back();
}
//switch back if ms global mode
//create sql conditions
if (count($term_tax_ids) > 0 || count($term_tax_not_ids) > 0) {
//figure out context - what table/field to search
$post_context = EM_EVENTS_TABLE . ".post_id";
$ms_context = EM_EVENTS_TABLE . ".event_id";
if (!empty($tax_data['context']) && self::$context == EM_POST_TYPE_LOCATION && in_array(self::$context, $tax_data['context'])) {
//context can be either locations or events, since those are the only two CPTs we deal with
$post_context = EM_LOCATIONS_TABLE . ".post_id";
$ms_context = EM_LOCATIONS_TABLE . ".event_id";
}
//build conditions
$tax_conds = array();
if (EM_MS_GLOBAL && !empty($tax_data['ms'])) {
//by default only applies to categories
//we're directly looking for tax ids from within the em_meta table
if (count($term_ids) > 0) {
$tax_conds[] = "{$ms_context} IN ( SELECT object_id FROM " . EM_META_TABLE . " WHERE meta_value IN (" . implode(',', $term_ids) . ") AND meta_key='{$tax_data['ms']}' )";
}
if (count($term_not_ids) > 0) {
$tax_conds[] = "{$ms_context} NOT IN ( SELECT object_id FROM " . EM_META_TABLE . " WHERE meta_value IN (" . implode(',', $term_not_ids) . ") AND meta_key='{$tax_data['ms']}' )";
}
} else {
//normal taxonomy filtering
if (count($term_tax_ids) > 0) {
$tax_conds[] = "{$post_context} IN ( SELECT object_id FROM " . $wpdb->term_relationships . " WHERE term_taxonomy_id IN (" . implode(',', $term_tax_ids) . ") )";
}
if (count($term_tax_not_ids) > 0) {
$tax_conds[] = "{$post_context} NOT IN ( SELECT object_id FROM " . $wpdb->term_relationships . " WHERE term_taxonomy_id IN (" . implode(',', $term_tax_not_ids) . ") )";
}
}
if (count($tax_conds) > 0) {
$conditions[$tax_name] = '(' . implode(' AND ', $tax_conds) . ')';
}
} else {
$conditions = array('taxonomy' => '2=1');
//force a false, supplied taxonomies don't exist
break;
//no point continuing this loop
}
}
}
//END TAXONOMY FILTERS
//If we want rsvped items, we usually check the event
if ($bookings == 1) {
$conditions['bookings'] = 'event_rsvp=1';
}
//Default ownership belongs to an event, child objects can just overwrite this if needed.
if (is_numeric($owner)) {
$conditions['owner'] = 'event_owner=' . $owner;
} elseif ($owner == 'me' && is_user_logged_in()) {
$conditions['owner'] = 'event_owner=' . get_current_user_id();
} elseif ($owner == 'me' && !is_user_logged_in()) {
$conditions = array('owner' => '1=2');
//no events to be shown
}
//reset the context
self::$context = EM_POST_TYPE_EVENT;
//return values
return apply_filters('em_object_build_sql_conditions', $conditions);
}