function impose_post_teaser(&$object, $post_type, $use_teaser_type = 'fixed') { global $current_user, $scoper, $wp_query; require_once dirname(__FILE__) . '/teaser_rs.php'; $teaser_replace = array(); $teaser_prepend = array(); $teaser_append = array(); $teaser_replace[$post_type]['post_content'] = ScoperTeaser::get_teaser_text('replace', 'content', 'post', $post_type, $current_user); $teaser_replace[$post_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('replace', 'excerpt', 'post', $post_type, $current_user); $teaser_prepend[$post_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('prepend', 'excerpt', 'post', $post_type, $current_user); $teaser_append[$post_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('append', 'excerpt', 'post', $post_type, $current_user); $teaser_prepend[$post_type]['post_name'] = ScoperTeaser::get_teaser_text('prepend', 'name', 'post', $post_type, $current_user); $teaser_append[$post_type]['post_name'] = ScoperTeaser::get_teaser_text('append', 'name', 'post', $post_type, $current_user); $force_excerpt = array(); $force_excerpt[$post_type] = 'excerpt' == $use_teaser_type; $args = array('teaser_prepend' => $teaser_prepend, 'teaser_append' => $teaser_append, 'teaser_replace' => $teaser_replace, 'force_excerpt' => $force_excerpt); ScoperTeaser::apply_post_teaser($object, $post_type, $args); $wp_query->is_404 = false; $wp_query->is_attachment = true; $wp_query->is_single = true; $wp_query->is_singular = true; $object->ancestors = array($object->post_parent); $wp_query->post_count = 1; $wp_query->is_attachment = true; $wp_query->posts[] = $object; if (isset($wp_query->query_vars['error'])) { unset($wp_query->query_vars['error']); } if (isset($wp_query->query['error'])) { $wp_query->query['error'] = ''; } }
function posts_teaser($results, $tease_otypes, $args = '') { $defaults = array('user' => '', 'use_object_roles' => -1, 'use_term_roles' => -1, 'request' => ''); $args = array_merge($defaults, (array) $args); extract($args); global $wpdb, $scoper, $wp_query; if (did_action('wp_meta') && !did_action('wp_head')) { return $results; } if (!is_object($user)) { global $current_user; $user = $current_user; } $teaser_replace = array(); $teaser_prepend = array(); $teaser_append = array(); foreach ($tease_otypes as $object_type) { $teaser_replace[$object_type]['post_content'] = ScoperTeaser::get_teaser_text('replace', 'content', 'post', $object_type, $user); $teaser_prepend[$object_type]['post_content'] = ScoperTeaser::get_teaser_text('prepend', 'content', 'post', $object_type, $user); $teaser_append[$object_type]['post_content'] = ScoperTeaser::get_teaser_text('append', 'content', 'post', $object_type, $user); $teaser_replace[$object_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('replace', 'excerpt', 'post', $object_type, $user); $teaser_prepend[$object_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('prepend', 'excerpt', 'post', $object_type, $user); $teaser_append[$object_type]['post_excerpt'] = ScoperTeaser::get_teaser_text('append', 'excerpt', 'post', $object_type, $user); $teaser_prepend[$object_type]['post_title'] = ScoperTeaser::get_teaser_text('prepend', 'name', 'post', $object_type, $user); $teaser_append[$object_type]['post_title'] = ScoperTeaser::get_teaser_text('append', 'name', 'post', $object_type, $user); } global $scoper_teaser_filtered_ids; if (!isset($scoper->teaser_ids)) { $scoper->teaser_ids = array(); } $excerpt_teaser = array(); $more_teaser = array(); $x_chars_teaser = array(); foreach ($tease_otypes as $object_type) { $teaser_type = scoper_get_otype_option('use_teaser', 'post', $object_type); if ('excerpt' == $teaser_type) { $excerpt_teaser[$object_type] = true; } elseif ('more' == $teaser_type) { $excerpt_teaser[$object_type] = true; $more_teaser[$object_type] = true; } elseif ('x_chars' == $teaser_type) { $excerpt_teaser[$object_type] = true; $more_teaser[$object_type] = true; $x_chars_teaser[$object_type] = true; } } // strip content from all $results rows not in $items $args = array('teaser_prepend' => $teaser_prepend, 'teaser_append' => $teaser_append, 'teaser_replace' => $teaser_replace, 'excerpt_teaser' => $excerpt_teaser, 'more_teaser' => $more_teaser, 'x_chars_teaser' => $x_chars_teaser); foreach (array_keys($results) as $key) { if (is_array($results[$key])) { $id = $results[$key]['ID']; } else { $id = $results[$key]->ID; } if (!$scoper_teaser_filtered_ids || !in_array($id, $scoper_teaser_filtered_ids)) { if (isset($results[$key]->post_type)) { $object_type = $results[$key]->post_type; } else { $object_type = $scoper->data_sources->get_from_db('type', 'post', $id); } if (!in_array($object_type, $tease_otypes)) { continue; } ScoperTeaser::apply_teaser($results[$key], 'post', $object_type, $args); } } return $results; }
function flt_objects_teaser($results, $src_name, $object_types = '', $args = array()) { $defaults = array('user' => '', 'use_object_roles' => -1, 'use_term_roles' => -1, 'request' => '', 'force_teaser' => false); $args = array_merge($defaults, (array) $args); extract($args); global $wpdb; if ('post' != $src_name) { return $results; } if (is_admin() || defined('XMLRPC_REQUEST')) { return $results; } $object_types = $this->_get_object_types($src_name, $object_types); $tease_otypes = $this->_get_teaser_object_types($src_name, $object_types, $args); if (empty($tease_otypes) || empty($force_teaser) && !array_intersect($object_types, $tease_otypes)) { return $results; } require_once dirname(__FILE__) . '/teaser_rs.php'; return ScoperTeaser::posts_teaser($results, $tease_otypes, $args); }
function flt_nav_menu_items($items, $menu_name, $args) { global $wpdb; $item_types = array(); foreach ($items as $key => $item) { if (!isset($item_types[$item->type])) { $item_types["{$item->type}"] = array(); } if (!isset($item_types[$item->type][$item->object])) { $item_types[$item->type][$item->object] = array($key => $item->object_id); } else { $item_types[$item->type][$item->object][$key] = $item->object_id; } } $teaser_enabled = scoper_get_otype_option('do_teaser', 'post'); // remove unreadable terms if (isset($item_types['taxonomy'])) { foreach ($item_types['taxonomy'] as $taxonomy => $item_ids) { if ($teaser_enabled) { if ($taxonomy_obj = get_taxonomy($taxonomy)) { foreach ($taxonomy_obj->object_type as $post_type) { // don't remove a term if it is associated with a post type that's being teased if (scoper_get_otype_option('use_teaser', 'post', $post_type)) { continue 2; } } } } /* $query_base = "SELECT t.term_id FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE 1=1 AND tt.taxonomy = '$taxonomy'"; $query = apply_filters( 'terms_request_rs', $query_base, $taxonomy ); //, array( 'skip_teaser' => true ) ); $okay_ids = scoper_get_col($query); */ $hide_empty = isset($args['hide_empty']) ? $args['hide_empty'] : 0; $okay_ids = get_terms($taxonomy, "fields=ids&hierarchical=0&hide_empty={$hide_empty}"); if ($remove_ids = array_diff($item_ids, $okay_ids)) { $items = array_diff_key($items, $remove_ids); } } } // remove unreadable posts if (isset($item_types['post_type'])) { foreach ($item_types['post_type'] as $post_type => $item_ids) { $where = apply_filters('objects_where_rs', '', 'post', $post_type, array('skip_teaser' => true)); $okay_ids = scoper_get_col("SELECT ID FROM {$wpdb->posts} WHERE post_type = '{$post_type}' {$where} AND ID IN ('" . implode("','", $item_ids) . "')"); if ($remove_ids = array_diff($item_ids, $okay_ids)) { if ($teaser_enabled && scoper_get_otype_option('use_teaser', 'post', $post_type)) { require_once dirname(__FILE__) . '/teaser_rs.php'; $teaser_prepend = ScoperTeaser::get_teaser_text('prepend', 'name', 'post', $post_type); $teaser_append = ScoperTeaser::get_teaser_text('append', 'name', 'post', $post_type); foreach (array_keys($remove_ids) as $key) { $items[$key]->title = $teaser_prepend . $items[$key]->title . $teaser_append; } } else { $items = array_diff_key($items, $remove_ids); } } } } return $items; }