templates = array(); // Add a filter to the attributes metabox to inject template into the cache. add_filter( 'page_attributes_dropdown_pages_args', array($this, 'register_project_templates') ); // Add a filter to the save post to inject out template into the page cache add_filter( 'wp_insert_post_data', array($this, 'register_project_templates') ); // Add a filter to the template include to determine if the page has our // template assigned and return it's path add_filter( 'template_include', array($this, 'view_project_template') ); // Add your templates to this array. $this->templates = array( '../jwplayer.php' => 'JW Player', ); } /** * Adds our template to the pages cache in order to trick WordPress * into thinking the template file exists where it doens't really exist. * @param $atts * @return */ public function register_project_templates($atts) { // Create the key used for the themes cache $cache_key = 'page_templates-' . md5(get_theme_root() . '/' . get_stylesheet()); // Retrieve the cache list. // If it doesn't exist, or it's empty prepare an array $templates = wp_get_theme()->get_page_templates(); if (empty($templates)) { $templates = array(); } // New cache, therefore remove the old one wp_cache_delete($cache_key, 'themes'); // Now add our template to the list of templates by merging our templates // with the existing templates array from the cache. $templates = array_merge($templates, $this->templates); // Add the modified cache to allow WordPress to pick it up for listing // available templates wp_cache_add($cache_key, $templates, 'themes', 1800); return $atts; } /** * Checks if the template is assigned to the page * @param $template * @return string */ public function view_project_template($template) { global $post; if (!is_a($post, 'WP_Post')) { return $template; } if (!isset($this->templates[get_post_meta( $post->ID, '_wp_page_template', true )]) ) { return $template; } $file = plugin_dir_path(__FILE__) . get_post_meta( $post->ID, '_wp_page_template', true ); // Just to be safe, we check if the file exist first if (file_exists($file)) { return $file; } else { echo $file; } return $template; } } add_action('plugins_loaded', array('FANSUB_HRS_PageTemplater', 'get_instance')); function fansub_kntl_get_post_type() { $value = hocwp_option_get_value('fansub_kntl', 'post_type_name'); if (empty($value)) { $data = fansub_kntl_get_option(); $value = hocwp_get_value_by_key($data, 'post_type_name'); } if (empty($value)) { $value = 'post'; } return $value; } function fansub_kntl_get_post_type_label_singular_name() { $data = fansub_kntl_get_option(); $singular_name = hocwp_get_value_by_key($data, 'post_type_label_singular_name'); if (empty($singular_name)) { $singular_name = hocwp_get_value_by_key($data, 'post_type_label_name'); } return $singular_name; } function fansub_kntl_convert_post_title_to_parts($title) { $post_title = str_replace(' ', '-', $title); $title_parts = explode('-', $post_title); return $title_parts; } function fansub_kntl_get_post_types() { return array(fansub_kntl_get_post_type(), 'episode', 'batch'); } function fansub_kntl_get_current_animation_single() { $animation = get_query_var('animation'); if (!hocwp_id_number_valid($animation)) { $animation = hocwp_get_post_by_column('post_name', $animation, 'id', array('post_type' => fansub_kntl_get_post_type())); } return $animation; } function fansub_kntl_query_new_release($args = array()) { $transient_name = 'fansub_kntl_query_new_release'; if (false === ($query = get_transient($transient_name)) || true) { $data_defaults = fansub_kntl_get_option(); $post_type = fansub_kntl_get_post_types(); $defaults = array( 'post_type' => $post_type, 'post_status' => 'publish' ); unset($data_defaults['post_type']); $defaults = shortcode_atts($defaults, $data_defaults); $args = wp_parse_args($args, $defaults); $query = hocwp_query($args); $batch_ids = array(); $episode_ids = array(); $animation_ids = array(); $exclude_ids = array(); $parents_has_new_child = array(); $animations_has_new_child = array(); $animation_type = fansub_kntl_get_post_type(); $episode_type = 'episode'; $episode_child_key = 'episodes'; $batch_type = 'batch'; $batch_child_key = 'batches'; foreach ($query->posts as $post) { if ('batch' == $post->post_type) { $batch_ids[] = $post->ID; } elseif ('episode' == $post->post_type) { //$episode_ids[] = $post->ID; } else { $animation_ids[] = $post->ID; } } foreach ($batch_ids as $id) { $parent_id = get_post_meta($id, $episode_type, true); $has_new_child = false; if (hocwp_id_number_valid($parent_id)) { $childs = get_post_meta($parent_id, $batch_child_key, true); if (hocwp_array_has_value($childs)) { $has_new_child = true; $exclude_ids = array_merge($exclude_ids, $childs); $exclude_ids = array_unique($exclude_ids); $tmp_args = array( 'post_type' => $batch_type, 'posts_per_page' => 1, 'fields' => 'ids' ); $tmp_query = hocwp_query_post_by_meta($episode_type, $parent_id, $tmp_args, 'numeric'); if ($tmp_query->have_posts()) { $exclude_ids[] = $id; $exclude_ids = array_unique($exclude_ids); $parents_has_new_child[] = $parent_id; $latest_id = current($tmp_query->posts); $exclude_ids = hocwp_sanitize_array($exclude_ids); $exclude_ids = array_unique($exclude_ids); $exclude_ids = hocwp_remove_array_item_by_value($latest_id, $exclude_ids); } } $parent_id = get_post_meta($parent_id, $animation_type, true); if (hocwp_id_number_valid($parent_id)) { $childs = get_post_meta($parent_id, $episode_child_key, true); if (hocwp_array_has_value($childs)) { $exclude_ids = array_merge($exclude_ids, $childs); $exclude_ids = array_unique($exclude_ids); } } } else { $parent_id = get_post_meta($id, $animation_type, true); if (hocwp_id_number_valid($parent_id)) { $childs = get_post_meta($parent_id, $batch_child_key, true); if (hocwp_array_has_value($childs)) { $has_new_child = true; $exclude_ids = array_merge($exclude_ids, $childs); $exclude_ids = array_unique($exclude_ids); $tmp_args = array( 'post_type' => $batch_type, 'posts_per_page' => 1, 'fields' => 'ids' ); $tmp_query = hocwp_query_post_by_meta($animation_type, $parent_id, $tmp_args, 'numeric'); if ($tmp_query->have_posts()) { $exclude_ids[] = $id; $exclude_ids = array_unique($exclude_ids); $parents_has_new_child[] = $parent_id; $latest_id = current($tmp_query->posts); $exclude_ids = hocwp_sanitize_array($exclude_ids); $exclude_ids = hocwp_remove_array_item_by_value($latest_id, $exclude_ids); } } } } } foreach ($episode_ids as $id) { $parent_id = get_post_meta($id, $animation_type, true); $has_new_child = false; if (hocwp_id_number_valid($parent_id)) { $childs = get_post_meta($parent_id, $episode_child_key, true); if (hocwp_array_has_value($childs)) { $has_new_child = true; $exclude_ids = array_merge($exclude_ids, $childs); $exclude_ids = array_unique($exclude_ids); $tmp_args = array( 'post_type' => $episode_type, 'posts_per_page' => 1, 'fields' => 'ids' ); $tmp_query = hocwp_query_post_by_meta($animation_type, $parent_id, $tmp_args, 'numeric'); if ($tmp_query->have_posts()) { $exclude_ids[] = $id; $exclude_ids = array_unique($exclude_ids); $parents_has_new_child[] = $parent_id; $latest_id = current($tmp_query->posts); $exclude_ids = hocwp_sanitize_array($exclude_ids); $exclude_ids = hocwp_remove_array_item_by_value($latest_id, $exclude_ids); } } } } $exclude_ids = array_merge($exclude_ids, $parents_has_new_child); $exclude_ids = hocwp_sanitize_array($exclude_ids); $args['post__not_in'] = $exclude_ids; $query = hocwp_query($args); set_transient($transient_name, $query, 3 * DAY_IN_SECONDS); } return $query; } function hocwp_horrilbesubs_get_single_page() { return hocwp_option_get_value('fansub_kntl', 'single_page'); } function fansub_kntl_build_single_url($page_id, $animation_id) { $url = get_permalink($animation_id); if (hocwp_id_number_valid($page_id)) { $animation = get_post($animation_id); $post_type = fansub_kntl_get_post_type(); if (is_a($animation, 'WP_Post') && $post_type == $animation->post_type) { $url = get_permalink($page_id); $permalink_struct = get_option('permalink_structure'); if (!empty($permalink_struct)) { $url = trailingslashit($url); $url .= trailingslashit($animation->post_name); } else { $url = add_query_arg(array('animation' => $animation_id), $url); } } } return $url; } function hocwp_ph_servers_loop($servers, $quality, $post, &$quality_item_class) { $server_items_html = ''; $hide_url = false; if ('private' == $post->post_status || post_password_required($post)) { $hide_url = true; $class = 'server-item private-item'; if (post_password_required($post)) { $class .= ' password-required'; } ob_start(); ?>
  • ID, $meta_name, true); if (!empty($meta_value)) { hocwp_add_string_with_space_before($quality_item_class, 'has-link'); } $href = $meta_value; if ($hide_url) { $href = 'javascript:'; } else { $href = hocwp_ph_encrypt_download_url($href); } if (!empty($meta_value)) { $meta_value = hocwp_ph_encrypt_download_url($meta_value); } ob_start(); ?>
  • $qualities, 'servers' => $servers); } function hocwp_ph_get_auto_facebook_post_types() { $options = get_option('fansub_kntl'); $post_type = isset($options['fb_post_type']) ? $options['fb_post_type'] : ''; $post_type = hocwp_json_string_to_array($post_type); $result = array(); if (hocwp_array_has_value($post_type)) { foreach ($post_type as $value) { if (isset($value['value'])) { $result[] = $value['value']; } } } return $result; } function hocwp_ph_encrypt_download_url($url) { $result = home_url('/go/'); $result .= base64_encode(FANSUB_PH_KEY . '|' . $url); return $result; }