WordPress.org

Plugin Directory

Changeset 665506


Ignore:
Timestamp:
02/09/13 04:09:10 (14 months ago)
Author:
markjaquith
Message:

deploy from git

Location:
wp-help/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wp-help/trunk/templates/list-documents.php

    r580471 r665506  
    3232<div id="cws-wp-help-document"> 
    3333<?php if ( $document_id ) : ?> 
    34     <?php $document = new WP_Query( array( 'post_type' => self::POST_TYPE, 'p' => $document_id ) ); ?> 
     34    <?php $document = new WP_Query( array( 'post_type' => self::POST_TYPE, 'p' => $document_id, 'post_status' => array( 'publish', 'private' ) ) ); ?> 
    3535    <?php if ( $document->have_posts() ) : $document->the_post(); ?> 
    36         <h2><?php the_title(); ?><?php edit_post_link( __( 'edit', 'wp-help' ), ' <small>', '</small>' ); ?><?php $this->explain_slurp( $document_id ); ?></h2> 
    37         <?php the_content(); ?> 
     36        <?php if ( current_user_can( 'read_post', $document_id ) ) : ?> 
     37            <h2><?php the_title(); ?><?php edit_post_link( __( 'edit', 'wp-help' ), ' <small>', '</small>' ); ?><?php $this->explain_slurp( $document_id ); ?></h2> 
     38            <?php the_content(); ?> 
     39        <?php else: ?> 
     40            <p><?php _e( 'You are not allowed to view this document.', 'wp-help' ); ?></p> 
     41        <?php endif; ?> 
    3842    <?php else : ?> 
    3943        <p><?php _e( 'The requested help document could not be found.', 'wp-help' ); ?></p> 
  • wp-help/trunk/wp-help.php

    r660429 r665506  
    3535    private $help_topics_html; 
    3636    private $filter_wp_list_pages = false; 
     37    private $filter_wp_list_pages_sql = false; 
    3738    const default_doc = 'cws_wp_help_default_doc'; 
    3839    const OPTION      = 'cws_wp_help'; 
     
    8687        add_filter( 'page_css_class',               array( $this, 'page_css_class'        ), 10, 5 ); 
    8788        add_filter( 'wp_list_pages',                array( $this, 'wp_list_pages'         )        ); 
     89        add_filter( 'query',                        array( $this, 'query'                 )        ); 
    8890 
    8991        if ( 'dashboard-submenu' != $this->get_option( 'menu_location' ) ) { 
     
    112114                'hierarchical' => true, 
    113115                'supports'     => array( 'title', 'editor', 'revisions', 'page-attributes' ), 
     116                'map_meta_cap' => true, 
     117                'capability_type' => 'page', 
    114118                'capabilities' => array( 
    115                     'publish_posts'      => 'publish_pages', 
    116                     'edit_posts'         => 'publish_pages', 
    117                     'edit_others_posts'  => 'publish_pages', 
    118                     'delete_posts'       => 'publish_pages', 
    119                     'read_private_posts' => 'publish_pages', 
    120                     'edit_post'          => 'wp_help_meta_cap', 
    121                     'delete_post'        => 'wp_help_meta_cap', 
    122                     'read_post'          => apply_filters( 'cws_wp_help_view_documents_cap', 'edit_posts' ), 
     119                    'read_posts'         => apply_filters( 'cws_wp_help_view_documents_cap', 'edit_posts' ), 
    123120                ), 
    124121                'labels' => array ( 
     
    173170 
    174171    public function wp_dashboard_setup() { 
    175         if ( current_user_can( $this->get_cap( 'read_post' ) ) ) { 
     172        if ( current_user_can( $this->get_cap( 'read_posts' ) ) ) { 
    176173            $this->help_topics_html = $this->get_help_topics_html(); 
    177174            if ( $this->help_topics_html ) 
     
    223220            return $html; 
    224221        return preg_replace( '#<li [^>]+>#', '$0<img class="sort-handle" src="' . plugins_url( "images/sort.png", __FILE__ ) . '" />', $html ); 
     222    } 
     223 
     224    public function query( $query ) { 
     225        global $wpdb; 
     226        if ( 
     227            $this->filter_wp_list_pages_sql && 
     228            preg_match( "#^SELECT\s+\*\s+FROM\s+" . preg_quote( $wpdb->posts, '#' ) . '#', $query ) 
     229        ) { 
     230            $query = str_replace( 
     231                "post_type = '" . self::POST_TYPE . "' AND post_status = 'private'", 
     232                "post_type = '" . self::POST_TYPE . "' AND post_status IN('private','publish')", 
     233                $query 
     234            ); 
     235            $this->filter_wp_list_pages_sql = false; 
     236        } 
     237        return $query; 
    225238    } 
    226239 
     
    277290 
    278291    public function map_meta_cap( $caps, $cap, $user_id, $args ) { 
    279         if ( $cap === 'wp_help_meta_cap' ) { 
     292        if ( preg_match( '#^(delete|edit)_(post|page)$#', $cap ) ) { 
     293            if ( self::POST_TYPE !== get_post_type( $args[0] ) ) 
     294                return $caps; 
    280295            // If this belongs to the currently connected slurp source, disallow editing 
    281296            if ( $this->is_slurped( $args[0] ) ) 
    282297                $caps = array( 'do_not_allow' ); 
    283             else 
    284                 $caps = array( $this->get_cap( 'publish_posts' ) ); 
    285298        } 
    286299        return $caps; 
     
    560573    public function admin_menu() { 
    561574        if ( 'dashboard-submenu' != $this->get_option( 'menu_location' ) ) 
    562             $hook = add_menu_page( $this->get_option( 'h2' ), $this->get_option( 'h2' ), $this->get_cap( 'read_post' ), self::MENU_SLUG, array( $this, 'render_listing_page' ), plugin_dir_url( __FILE__ ) . 'images/icon-16.png' ); 
     575            $hook = add_menu_page( $this->get_option( 'h2' ), $this->get_option( 'h2' ), $this->get_cap( 'read_posts' ), self::MENU_SLUG, array( $this, 'render_listing_page' ), plugin_dir_url( __FILE__ ) . 'images/icon-16.png' ); 
    563576        else 
    564             $hook = add_dashboard_page( $this->get_option( 'h2' ), $this->get_option( 'h2' ), $this->get_cap( 'read_post' ), self::MENU_SLUG, array( $this, 'render_listing_page' ) ); 
     577            $hook = add_dashboard_page( $this->get_option( 'h2' ), $this->get_option( 'h2' ), $this->get_cap( 'read_posts' ), self::MENU_SLUG, array( $this, 'render_listing_page' ) ); 
    565578        add_action( "load-{$hook}", array( $this, 'enqueue' ) ); 
    566579    } 
     
    633646        if ( $with_sort_handles ) 
    634647            $this->filter_wp_list_pages = true; 
    635         $defaults = array( 'post_type' => self::POST_TYPE, 'hierarchical' => true, 'echo' => false, 'title_li' => '' ); 
     648        $this->filter_wp_list_pages_sql = true; 
     649        $status = ( current_user_can( $this->get_cap( 'read_private_posts' ) ) ) ? 'private' : 'publish'; 
     650        $defaults = array( 'post_type' => self::POST_TYPE, 'post_status' => $status, 'hierarchical' => true, 'echo' => false, 'title_li' => '' ); 
    636651        $output = trim( wp_list_pages( apply_filters( 'cws_wp_help_list_pages', $defaults ) ) ); 
    637         $this->filter_wp_list_pages = false; 
     652        $this->filter_wp_list_pages = $this->filter_wp_list_pages_sql = false; 
    638653        return $output; 
    639654    } 
Note: See TracChangeset for help on using the changeset viewer.