/**
  * Add Add Photo Gallery, Add Video Gallery etc as sub menu
  * 
  * @global type $menu
  * @global type $submenu
  */
 public function add_menu()
 {
     global $menu, $submenu;
     $active_types = mpp_get_active_types();
     $parent_slug = mpp_admin()->get_menu_slug();
     if (empty($submenu[$parent_slug])) {
         return;
     }
     //remove the default add menu
     array_pop($submenu[$parent_slug]);
     $sub_menu_slug = 'post-new.php?post_type=' . $this->post_type . '&mpp-gallery-type=';
     foreach ($active_types as $type => $type_object) {
         $menu_title = sprintf(__('Add %s Gallery', 'mediapress'), ucwords($type));
         $page_title = $menu_title;
         $sub_slug = admin_url($sub_menu_slug . $type);
         $submenu[$parent_slug][] = array($menu_title, 'manage_options', $sub_slug, $page_title);
         //add_submenu_page( $parent_slug , $page_label, $menu_label, 'manage_options', $sub_slug, array( $this, 'render' ) );
     }
 }
Exemple #2
0
function mpp_filter_archive_page_galleries($query)
{
    if (is_admin()) {
        return;
    }
    if (!$query->is_main_query() || !$query->is_post_type_archive(mpp_get_gallery_post_type())) {
        return;
    }
    //confirmed that we are on gallery archive page
    $active_components = mpp_get_active_components();
    $active_types = mpp_get_active_types();
    $status = 'public';
    $tax_query = $query->get('tax_query');
    if (empty($tax_query)) {
        $tax_query = array();
    }
    //it will be always true
    if ($status) {
        $status = mpp_string_to_array($status);
        //future proofing
        $status_keys = array_map('mpp_underscore_it', $status);
        $tax_query[] = array('taxonomy' => mpp_get_status_taxname(), 'field' => 'slug', 'terms' => $status_keys, 'operator' => 'IN');
    }
    //should we only show sitewide galleries here? will update based on feedback
    if (!empty($active_components)) {
        $component_keys = array_keys($active_components);
        $component_keys = array_map('mpp_underscore_it', $component_keys);
        $tax_query[] = array('taxonomy' => mpp_get_component_taxname(), 'field' => 'slug', 'terms' => $component_keys, 'operator' => 'IN');
    }
    if (!empty($active_types)) {
        $type_keys = array_keys($active_types);
        $type_keys = array_map('mpp_underscore_it', $type_keys);
        $tax_query[] = array('taxonomy' => mpp_get_type_taxname(), 'field' => 'slug', 'terms' => $type_keys, 'operator' => 'IN');
    }
    if (count($tax_query) > 1) {
        $tax_query['relation'] = 'AND';
    }
    $query->set('tax_query', $tax_query);
    $query->set('update_post_term_cache', true);
    $query->set('update_post_meta_cache', true);
    $query->set('cache_results', true);
}
function mpp_get_editable_types($type = null, $component = null)
{
    if (!$type || $type == 'active') {
        $types = mpp_get_active_types();
    } else {
        $types = mpp_get_registered_types();
    }
    //if a component is given, filter the status
    if ($component) {
        $all_types = (array) $types;
        $types = array();
        foreach ($all_types as $type_slug => $type_object) {
            if (mpp_component_supports_type($component, $type_slug)) {
                $types[$type_slug] = $type_object;
            }
        }
    }
    return apply_filters('mpp_get_editable_types', $types);
}
 /**
  * Map gallery parameters to wp_query native parameters
  * 
  * @param type $args
  * @return string
  */
 public function build_params($args)
 {
     $defaults = array('type' => array_keys(mpp_get_active_types()), 'id' => false, 'in' => false, 'exclude' => false, 'slug' => false, 'status' => array_keys(mpp_get_active_statuses()), 'component' => array_keys(mpp_get_active_components()), 'component_id' => false, 'per_page' => mpp_get_option('galleries_per_page'), 'offset' => false, 'page' => false, 'nopaging' => false, 'order' => 'DESC', 'orderby' => 'date', 'user_id' => false, 'include_users' => false, 'exclude_users' => false, 'user_name' => false, 'scope' => false, 'search_terms' => '', 'year' => false, 'month' => false, 'week' => '', 'day' => '', 'hour' => '', 'minute' => '', 'second' => '', 'yearmonth' => false, 'fields' => false);
     //build params for WP_Query
     $r = wp_parse_args($args, $defaults);
     extract($r, EXTR_SKIP);
     //build the wp_query args
     $wp_query_args = array('post_type' => mpp_get_gallery_post_type(), 'post_status' => 'any', 'p' => $id, 'post__in' => $in, 'post__not_in' => $exclude, 'name' => $slug, 'posts_per_page' => $per_page, 'paged' => $page, 'offset' => $offset, 'nopaging' => $nopaging, 'author' => $user_id, 'author_name' => $user_name, 'author__in' => $include_users, 'author__not_in' => $exclude_users, 'year' => $year, 'monthnum' => $month, 'w' => $week, 'day' => $day, 'hour' => $hour, 'minute' => $minute, 'second' => $second, 'm' => $yearmonth, 'order' => $order, 'orderby' => $orderby, 's' => $search_terms, 'fields' => $fields, '_mpp_mapped_query' => true);
     $tax_query = array();
     $gmeta_query = array();
     //meta
     if (isset($meta_key) && $meta_key) {
         $wp_query_args['meta_key'] = $meta_key;
     }
     if (isset($meta_value)) {
         $wp_query_args['meta_value'] = $meta_value;
     }
     if (isset($meta_query)) {
         $gmeta_query = $meta_query;
     }
     //TODO: SCOPE
     //
     //we will need to build tax query/meta query
     //type, audio video etc
     //if type is given and it is valid gallery type
     //Pass one or more types
     //should we restrict to active types only here? I guss no, Insteacd the calling scope should take care of that
     if (!empty($type) && mpp_are_registered_types($type)) {
         $type = mpp_string_to_array($type);
         $type = array_map('mpp_underscore_it', $type);
         $tax_query[] = array('taxonomy' => mpp_get_type_taxname(), 'field' => 'slug', 'terms' => $type, 'operator' => 'IN');
     }
     //privacy
     //pass ne or more privacy level
     if (!empty($status) && mpp_are_registered_statuses($status)) {
         $status = mpp_string_to_array($status);
         $status = array_map('mpp_underscore_it', $status);
         $tax_query[] = array('taxonomy' => mpp_get_status_taxname(), 'field' => 'slug', 'terms' => $status, 'operator' => 'IN');
     }
     if (!empty($component) && mpp_are_registered_components($component)) {
         $component = mpp_string_to_array($component);
         $component = array_map('mpp_underscore_it', $component);
         $tax_query[] = array('taxonomy' => mpp_get_component_taxname(), 'field' => 'slug', 'terms' => $component, 'operator' => 'IN');
     }
     //done with the tax query
     if (count($tax_query) > 1) {
         $tax_query['relation'] = 'AND';
     }
     $wp_query_args['tax_query'] = $tax_query;
     // print_nice($wp_query_args);
     //meta query
     //now, for component
     if (!empty($component_id)) {
         $meta_compare = '=';
         if (is_array($component_id)) {
             $meta_compare = 'IN';
         }
         $gmeta_query[] = array('key' => '_mpp_component_id', 'value' => $component_id, 'compare' => $meta_compare, 'type' => 'UNSIGNED');
     }
     //reset meta query
     if (!empty($gmeta_query)) {
         $wp_query_args['meta_query'] = $gmeta_query;
     }
     // print_r($wp_query_args);
     return $wp_query_args;
 }
Exemple #5
0
/**
 * Are these types valid
 * 
 * Used to validated agains a list of types
 * 
 * @param type $types
 * @return boolean
 */
function mpp_are_active_types($types)
{
    if (empty($types)) {
        return false;
    }
    $types = mpp_string_to_array($types);
    $valid_types = mpp_get_active_types();
    $valid_types = array_keys($valid_types);
    //get keys as array
    $diff = array_diff($types, $valid_types);
    if (!empty($diff)) {
        //there exists atleast one unregistered type
        return false;
    }
    return true;
}
 public function add_js_data()
 {
     $settings = array('enable_activity_lightbox' => mpp_get_option('enable_activity_lightbox'));
     $active_types = mpp_get_active_types();
     $extensions = $type_erros = array();
     foreach ($active_types as $type => $object) {
         $type_extensions = mpp_get_allowed_file_extensions_as_string($type, ',');
         $extensions[$type] = array('title' => sprintf('Select %s', ucwords($type)), 'extensions' => $type_extensions);
         $readable_extensions = mpp_get_allowed_file_extensions_as_string($type, ', ');
         $type_erros[$type] = sprintf(_x('This file type is not allowed. Allowed file types are: %s', 'type error message', 'mediapress'), $readable_extensions);
         $allowed_type_messages[$type] = sprintf(_x(' Please only select : %s', 'type error message', 'mediapress'), $readable_extensions);
     }
     $settings['types'] = $extensions;
     $settings['type_errors'] = $type_erros;
     $settings['allowed_type_messages'] = $allowed_type_messages;
     if (mpp_is_single_gallery()) {
         $settings['current_type'] = mpp_get_current_gallery()->type;
     }
     $settings['loader_src'] = mpp_get_asset_url('assets/images/loader.gif', 'mpp-loader');
     $settings = apply_filters('mpp_localizable_data', $settings);
     wp_localize_script('mpp_core', '_mppData', $settings);
     //_mppData
 }
Exemple #7
0
 /**
  * Initialize the admin settings panel and fields
  * 
  */
 public function init()
 {
     //'mpp-settings' is used as page slug as well as option to store in the database
     $page = new MPP_Admin_Settings_Page('mpp-settings');
     //MPP_Admin_Page( 'mpp-settings' );
     //Add a panel to to the admin
     //A panel is a Tab and what coms under that tab
     $panel = $page->add_panel('general', _x('General', 'Admin settings panel title', 'mediapress'));
     //A panel can contain one or more sections. each sections or
     $section = $panel->add_section('component-settings', _x('Component Settings', 'Admin settings section title', 'mediapress'));
     $components_details = array();
     $components = mpp_get_registered_components();
     foreach ($components as $key => $component) {
         $components_details[$key] = $component->label;
     }
     $component_keys = array_keys($components_details);
     $default_components = array_combine($component_keys, $component_keys);
     $active_components = array_keys(mpp_get_active_components());
     if (!empty($active_components)) {
         $default_components = array_combine($active_components, $active_components);
     }
     $section->add_field(array('name' => 'active_components', 'label' => _x('Enable Galleries for?', 'Admin settings', 'mediapress'), 'type' => 'multicheck', 'options' => $components_details, 'default' => $default_components));
     //second section
     //
     //enabled status
     //status
     $available_media_stati = mpp_get_registered_statuses();
     $options = array();
     foreach ($available_media_stati as $key => $available_media_status) {
         $options[$key] = $available_media_status->get_label();
     }
     $panel->add_section('status-settings', _x('Privacy Settings', 'Admin settings section title', 'mediapress'))->add_field(array('name' => 'default_status', 'label' => _x('Default status for Gallery/Media', 'Admin settings', 'mediapress'), 'description' => _x('It will be used when we are not allowed to get the status from user', 'Admin settings', 'mediapress'), 'default' => mpp_get_default_status(), 'options' => $options, 'type' => 'select'));
     $section = $panel->get_section('status-settings');
     $registered_statuses = mpp_get_registered_statuses();
     $status_info = array();
     foreach ($registered_statuses as $key => $status) {
         $status_info[$key] = $status->label;
     }
     $active_statuses = array_keys(mpp_get_active_statuses());
     $status_keys = array_keys($status_info);
     $default_statuses = array_combine($status_keys, $status_keys);
     if (!empty($active_statuses)) {
         $default_statuses = array_combine($active_statuses, $active_statuses);
     }
     $section->add_field(array('name' => 'active_statuses', 'label' => _x('Enabled Media/Gallery Statuses', 'Admin settings', 'mediapress'), 'type' => 'multicheck', 'options' => $status_info, 'default' => $default_statuses));
     //3rd section
     //enabled type?
     //types
     $section = $panel->add_section('types-settings', _x('Media Type settings', 'Admin settings section title', 'mediapress'));
     $valid_types = mpp_get_registered_types();
     $options = array();
     $types_info = array();
     $extension_fields = array();
     foreach ($valid_types as $type => $type_object) {
         $types_info[$type] = $type_object->label;
         $extension_fields[] = array('id' => 'extensions-' . $type, 'name' => 'extensions', 'label' => sprintf(_x('Allowed extensions for %s', 'Settings page', 'mediapress'), $type), 'description' => sprintf(_x('Use comma separated list of file extensions for %s ', 'Settings page', 'mediapress '), $type), 'default' => join(',', (array) $type_object->get_registered_extensions()), 'type' => 'extensions', 'extra' => array('key' => $type, 'name' => 'extensions'));
     }
     $type_keys = array_keys($types_info);
     $default_types = array_combine($type_keys, $type_keys);
     $active_types = array_keys(mpp_get_active_types());
     if (!empty($active_types)) {
         $default_types = array_combine($active_types, $active_types);
     }
     $section->add_field(array('name' => 'active_types', 'label' => _x('Enabled Media/Gallery Types', 'Settings page', 'mediapress'), 'type' => 'multicheck', 'options' => $types_info, 'default' => $default_types));
     /*
     		$section->add_field( array(
     						'name'			=> 'allow_mixed_gallery',
     						'label'			=> __( 'Allow mixed Galleries?', 'mediapress' ),
     						'type'			=> 'radio',
     						'default'		=> 0,//10 MB
     						'options'		=> array(
     											1 => 'Yes',
     											0 => 'No',
     											
     										),
     						'description'	=> __( 'Please keep it disabled. It is not truly enabled at the moment', 'mediapress' )				
     						
     		) );*/
     $section->add_fields($extension_fields);
     //4th section
     //enabled storage
     //Storage section
     $panel->add_section('storage-settings', _x('Storage Settings', 'Settings page section title', 'mediapress'))->add_field(array('name' => 'mpp_upload_space', 'label' => _x('maximum Upload space per user(MB)?', 'Admin storage settings', 'mediapress'), 'type' => 'text', 'default' => 10))->add_field(array('name' => 'mpp_upload_space_groups', 'label' => _x('maximum Upload space per group(MB)?', 'Admin storage settings', 'mediapress'), 'type' => 'text', 'default' => 10))->add_field(array('name' => 'show_upload_quota', 'label' => _x('Show upload Quota?', 'Admin storage settings', 'mediapress'), 'type' => 'radio', 'default' => 0, 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $storage_methods = mpp_get_registered_storage_managers();
     $storage_methods = array_keys($storage_methods);
     $storage_method_options = array();
     foreach ($storage_methods as $storage_method) {
         $storage_method_options[$storage_method] = ucfirst($storage_method);
     }
     //->add_field();
     $panel->get_section('storage-settings')->add_field(array('name' => 'default_storage', 'label' => _x('Which should be marked as default storage?', 'Admin storage settings', 'mediapress'), 'default' => mpp_get_default_storage_method(), 'options' => $storage_method_options, 'type' => 'radio'));
     //5th section
     //activity settings
     $activity_section = $panel->add_section('activity-settings', _x('Activity Settings', 'Admin settings section title', 'mediapress'));
     $activity_section->add_field(array('name' => 'activity_upload', 'label' => _x('Allow Activity Upload?', 'Admin settings', 'mediapress'), 'desc' => _x('Allow users to uploading from Activity screen?', 'Admin settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $activity_options = array('create_gallery' => _x('New Gallery is created.', 'Admin settings', 'mediapress'), 'add_media' => _x('New Media added/uploaded.', 'Admin settings', 'mediapress'));
     $default_activities = array_keys($activity_options);
     $default_activities = array_combine($default_activities, $default_activities);
     $activity_section->add_field(array('name' => 'autopublish_activities', 'label' => _x('Automatically Publish to activity When?', 'Admin settings', 'mediapress'), 'type' => 'multicheck', 'options' => $activity_options, 'default' => $default_activities));
     //6th section
     //directory settings
     $panel->add_section('directory-settings', _x('Directory Settings', 'Admin settings section title', 'mediapress'))->add_field(array('name' => 'has_gallery_directory', 'label' => _x('Enable Gallery Directory?', 'Admin settings', 'mediapress'), 'desc' => _x('Create a page to list all galleries?', 'Admin settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'has_media_directory', 'label' => _x('Enable Media directory?', 'Admin settings', 'mediapress'), 'desc' => _x('Create a page to list all photos, videos etc? Please keep it disabled for now )', 'Admin settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $panel->add_section('group-settings', _x('Group Settings', 'Admin settings section title', 'mediapress'))->add_field(array('name' => 'contributors_can_edit', 'label' => _x('Contributors can edit their own media?', 'Admin settings group section', 'mediapress'), 'type' => 'radio', 'default' => 1, 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'contributors_can_delete', 'label' => _x('Contributors can delete their own media?', 'Admin settings group section', 'mediapress'), 'type' => 'radio', 'default' => 1, 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $panel->add_section('misc-settings', _x('Miscellaneous Settings', 'Admin settings section title', 'mediapress'))->add_field(array('name' => 'show_orphaned_media', 'label' => _x('Show orphaned media to the user?', 'Admin settings option', 'mediapress'), 'desc' => _x('Do you want to list the media if it was uploaded from activity but the activity was not published?', 'Admin settings', 'mediapress'), 'type' => 'radio', 'default' => 0, 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'delete_orphaned_media', 'label' => _x('Delete orphaned media automatically?', 'Admin settings', 'mediapress'), 'desc' => _x('Do you want to delete the abandoned media uploade from activity?', 'Admin settings', 'mediapress'), 'type' => 'radio', 'default' => 1, 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $theme_panel = $page->add_panel('theming', _x('Theming', 'Admin settings theme panel tab title', 'mediapress'));
     $theme_panel->add_section('display-settings', _x('Display Settings ', 'Admin settings theme section title', 'mediapress'))->add_field(array('name' => 'galleries_per_page', 'label' => _x('How many galleries to list per page?', 'Admin theme settings', 'mediapress'), 'type' => 'text', 'default' => 12))->add_field(array('name' => 'media_per_page', 'label' => _x('How many Media per page?', 'Admin theme settings', 'mediapress'), 'type' => 'text', 'default' => 12))->add_field(array('name' => 'media_columns', 'label' => _x('How many media per row?', 'Admin theme settings', 'mediapress'), 'type' => 'text', 'default' => 4))->add_field(array('name' => 'gallery_columns', 'label' => _x('How many galleries per row?', 'Admin theme settings', 'mediapress'), 'type' => 'text', 'default' => 4));
     $theme_panel->add_section('audio-video', _x('Audio/Video specific settings', ' Admin theme section title', 'mediapress'))->add_field(array('name' => 'enable_audio_playlist', 'label' => _x('Enable Audio Playlist?', 'admin theme settings', 'mediapress'), 'description' => _x('Should an audio gallery be listed as a playlist?', 'admin theme settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'enable_video_playlist', 'label' => _x('Enable Video Playlist?', 'admin theme settings', 'mediapress'), 'description' => _x('Should a video gallery be listed as a playlist?', 'admin theme settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $theme_panel->add_section('comments', _x('Comment Settings', 'Admin theme section title', 'mediapress'))->add_field(array('name' => 'enable_media_comment', 'label' => _x('Enable Commenting on single media?', 'admin theme comment settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'enable_gallery_comment', 'label' => 'Enable Commenting on single Gallery?', 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     $theme_panel->add_section('lightbox', _x('Lightbox Settings', 'admin theme section title', 'mediapress'))->add_field(array('name' => 'load_lightbox', 'label' => _x('Load Lightbox javascript & css )?', 'Admin theme settings', 'mediapress'), 'description' => _x('Should we load the included lightbox script? Set no, if you are not using lightbox or want to use your own', 'Admin settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))))->add_field(array('name' => 'enable_activity_lightbox', 'label' => _x('Open Activity media in lightbox ?', 'Admin theme settings', 'mediapress'), 'description' => _x('If you set yes, the photos etc will be open in lightbox on activity screen.', 'Admin theme settings', 'mediapress'), 'default' => 1, 'type' => 'radio', 'options' => array(1 => _x('Yes', 'Admin settings option', 'mediapress'), 0 => _x('No', 'Admin settings option', 'mediapress'))));
     //add an empty addons panel to allow plugins to register any setting here
     //though a plugin can add a new panel, smaller plugins should use this panel instead
     $page->add_panel('addons', _x('Addons', 'Admin settings Addons panel tab title', 'mediapress'), _x('MediaPress Addon Settings', 'Addons panel description', 'mediapress'));
     //auto posting to activity on gallery upload?
     //should post after the whole gallery is uploaded or just after each media?
     $this->page = $page;
     mpp_admin()->set_page($this->page);
     do_action('mpp_admin_register_settings', $page);
     //allow enab
     $page->init();
 }
/**
 *  Get total galleries|media based on other parameters
 * 
 * @param type $args {
 *  @type component string|array comma separated sting or array of components eg 'groups,members' or array('groups', 'members' )
 *  @type component_id int numeric component id (user id or group id)
 *  @type status string|array comma separated list or array of statuses e.g. 'public,private,friends' or array ( 'public', 'private', 'friends' )
 *  @type type   string|array comma separated list or array of media types e.g 'audio,video,photo' or array ( 'audio', 'video', 'photo' )
 * @param string $post_type
 * 
 * @return int total no of posts
 */
function mpp_get_object_count($args, $post_type)
{
    global $wpdb;
    $post_type_sql = '';
    $sql = array();
    $default = array('component' => '', 'component_id' => false, 'status' => '', 'type' => '', 'post_status' => 'publish');
    //if component is set to user, we can simply avoid component query
    //may be next iteration someday
    $args = wp_parse_args($args, $default);
    extract($args);
    if (!$status) {
        if ($component && $component_id) {
            $status = mpp_get_accessible_statuses($component, $component_id, get_current_user_id());
        } else {
            $status = array_keys(mpp_get_active_statuses());
        }
    }
    if (!$component) {
        $component = array_keys(mpp_get_active_components());
    }
    if (!$type) {
        $type = array_keys(mpp_get_active_types());
    }
    //do we have a component set
    if ($component) {
        $sql[] = mpp_get_tax_sql($component, mpp_get_component_taxname());
    }
    //do we have a component set
    if ($status) {
        $sql[] = mpp_get_tax_sql($status, mpp_get_status_taxname());
    }
    //for type, repeat it
    if ($type) {
        $sql[] = mpp_get_tax_sql($type, mpp_get_type_taxname());
    }
    //we need to find all the object ids which are present in these terms
    //since mysql does not have intersect clause and inner join will be causing too large data set
    //let us use another apprioach for now
    //in our case
    //theere are 3 taxonomies
    //so we will be looking for the objects appearing thrice
    $tax_object_sql = " (SELECT DISTINCT t.object_id FROM (" . join(" UNION ALL ", $sql) . ") AS t GROUP BY object_id HAVING count(*) >=3 )";
    $post_type_sql = $wpdb->prepare("SELECT COUNT( DISTINCT ID ) FROM {$wpdb->posts} WHERE post_type = %s AND post_status =%s", $post_type, $post_status);
    //if a user or group id is given
    if ($component_id) {
        $post_type_sql = $wpdb->prepare("SELECT COUNT( DISTINCT p.ID ) AS total FROM {$wpdb->posts} AS p INNER JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id WHERE p.post_type= %s AND p.post_status = %s AND pm.meta_key=%s and pm.meta_value=%d", $post_type, $post_status, '_mpp_component_id', $component_id);
    }
    //$sql[] = $post_type_sql;
    $new_sql = $join_sql = '';
    //array();
    //let us generate inner sub queries
    /* if ( $sql )
    	  $join_sql	 = ' (' . join( ' AND object_id IN (', $sql );
    
    	  //we need to append the ) for closing the sub queries
    	  for ( $i = 0; $i < count( $sql ); $i++ )
    	  $join_sql .=')';
    
    	 */
    $join_sql = $tax_object_sql;
    $new_sql = $post_type_sql;
    //if the join sql is present, let us append it
    if ($join_sql) {
        $new_sql .= ' AND ID IN ' . $join_sql;
    }
    //echo $new_sql;
    return $wpdb->get_var($new_sql);
}
 public function build_params($args)
 {
     $defaults = array('type' => array_keys(mpp_get_active_types()), 'id' => false, 'in' => false, 'exclude' => false, 'slug' => false, 'status' => array_keys(mpp_get_active_statuses()), 'component' => array_keys(mpp_get_active_components()), 'component_id' => false, 'gallery_id' => false, 'galleries' => false, 'galleries_exclude' => false, 'storage' => '', 'per_page' => mpp_get_option('media_per_page'), 'offset' => false, 'page' => false, 'nopaging' => false, 'order' => 'DESC', 'orderby' => false, 'user_id' => false, 'user_name' => false, 'scope' => false, 'search_terms' => '', 'year' => false, 'month' => false, 'week' => '', 'day' => '', 'hour' => '', 'minute' => '', 'second' => '', 'yearmonth' => '', 'meta_query' => false, 'fields' => false);
     //build params for WP_Query
     /**
      * If are querying for a single gallery
      * and the gallery media were sorted by the user, show the media s in the sort order insted of the default date 
      */
     if (isset($args['gallery_id']) && mpp_is_gallery_sorted($args['gallery_id'])) {
         $defaults['orderby'] = 'menu_order';
     }
     $r = wp_parse_args($args, $defaults);
     extract($r, EXTR_SKIP);
     //build the wp_query args
     $wp_query_args = array('post_type' => mpp_get_media_post_type(), 'post_status' => 'any', 'p' => $id, 'post__in' => $in, 'post__not_in' => $exclude, 'name' => $slug, 'post_parent' => $gallery_id, 'post_parent__in' => !empty($galleries) ? (array) $galleries : 0, 'post_parent__not_in' => !empty($galleries_exclude) ? (array) $galleries_exclude : 0, 'posts_per_page' => $per_page, 'paged' => $page, 'offset' => $offset, 'nopaging' => $nopaging, 'author' => $user_id, 'author_name' => $user_name, 'year' => $year, 'monthnum' => $month, 'w' => $week, 'day' => $day, 'hour' => $hour, 'minute' => $minute, 'second' => $second, 'm' => $yearmonth, 'order' => $order, 'orderby' => $orderby, 's' => $search_terms, 'fields' => $fields, '_mpp_mapped_query' => true);
     //TODO: SCOPE
     //
     //we will need to build tax query/meta query
     //taxonomy query to filter by component|status|privacy
     $tax_query = array();
     //meta query
     $gmeta_query = array();
     if (isset($meta_key) && $meta_key) {
         $wp_query_args['meta_key'] = $meta_key;
     }
     if (isset($meta_key) && $meta_key && isset($meta_value)) {
         $wp_query_args['meta_value'] = $meta_value;
     }
     //if meta query was specified, let us keep it and we will add our conditions
     if (!empty($meta_query)) {
         $gmeta_query = $meta_query;
     }
     //we will need to build tax query/meta query
     //type, audio video etc
     //if type is given and it is valid gallery type
     //Pass one or more types
     if ($gallery_id) {
         //if gallery id is given, avoid worrying about type
         $type = '';
         $component = '';
     }
     if (!empty($type) && mpp_are_registered_types($type)) {
         $type = mpp_string_to_array($type);
         //we store the terms with _name such as private becomes _private, members become _members to avoid conflicting terms
         $type = array_map('mpp_underscore_it', $type);
         $tax_query[] = array('taxonomy' => mpp_get_type_taxname(), 'field' => 'slug', 'terms' => $type, 'operator' => 'IN');
     }
     //privacy
     //pass one or more privacy level
     if (!empty($status) && mpp_are_registered_statuses($status)) {
         $status = mpp_string_to_array($status);
         $status = array_map('mpp_underscore_it', $status);
         $tax_query[] = array('taxonomy' => mpp_get_status_taxname(), 'field' => 'slug', 'terms' => $status, 'operator' => 'IN');
     }
     if (!empty($component) && mpp_are_registered_components($component)) {
         $component = mpp_string_to_array($component);
         $component = array_map('mpp_underscore_it', $component);
         $tax_query[] = array('taxonomy' => mpp_get_component_taxname(), 'field' => 'slug', 'terms' => $component, 'operator' => 'IN');
     }
     //done with the tax query
     if (count($tax_query) > 1) {
         $tax_query['relation'] = 'AND';
     }
     if (!empty($tax_query)) {
         $wp_query_args['tax_query'] = $tax_query;
     }
     //now, for component
     if (!empty($component_id)) {
         $meta_compare = '=';
         if (is_array($component_id)) {
             $meta_compare = 'IN';
         }
         $gmeta_query[] = array('key' => '_mpp_component_id', 'value' => $component_id, 'compare' => $meta_compare, 'type' => 'UNSIGNED');
     }
     //also make sure that it only looks for gallery media
     $gmeta_query[] = array('key' => '_mpp_is_mpp_media', 'value' => 1, 'compare' => '=', 'type' => 'UNSIGNED');
     //should we avoid the orphaned media
     //Let us discuss with the community and get it here
     if (!mpp_get_option('show_orphaned_media')) {
         $gmeta_query[] = array('key' => '_mpp_is_orphan', 'compare' => 'NOT EXISTS');
     }
     //Let us filter the media by storage method
     if (!empty($storage)) {
         $gmeta_query[] = array('key' => '_mpp_storage_method', 'value' => $storage, 'compare' => '=');
     }
     //and what to do when a user searches by the media source(say youtube|vimeo|xyz.. how do we do that?)
     //reset meta query
     if (!empty($gmeta_query)) {
         $wp_query_args['meta_query'] = $gmeta_query;
     }
     return $wp_query_args;
     //http://wordpress.stackexchange.com/questions/53783/cant-sort-get-posts-by-post-mime-type
 }
Exemple #10
0
 private function build_options()
 {
     $this->active_types = mpp_get_active_types();
     foreach ($this->active_types as $type => $object) {
         $this->type_options[$type] = $object->label;
     }
 }
Exemple #11
0
                <?php 
do_action('mpp_directory_types');
?>

				<li id="mpp-order-select" class="last filter">

					<?php 
_e('Filter By:', 'mediapress');
?>
					<select>
						<option value=""><?php 
_e('All Galleries', 'mediapress');
?>
</option>
						<?php 
$active_types = mpp_get_active_types();
?>
						<?php 
foreach ($active_types as $type => $type_object) {
    ?>
							
							<option value="<?php 
    echo $type;
    ?>
"><?php 
    echo $type_object->get_label();
    ?>
 </option>
														
						<?php 
}