Skip to:
Content

bbPress.org

Changeset 3236


Ignore:
Timestamp:
05/26/2011 10:40:54 AM (15 years ago)
Author:
johnjamesjacoby
Message:

Consolidate topic form access checks.

Location:
branches/plugin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-user-template.php

    r3221 r3236  
    11631163    if ( bbp_is_forum() ) {
    11641164
    1165         // What is the visibility of this forum
    1166         switch ( bbp_get_forum_visibility() ) {
    1167 
    1168             // Public
    1169             case 'publish' :
    1170 
    1171                 // User cannot publish topics
    1172                 if ( current_user_can( 'publish_topics' ) )
    1173                     $retval = true;
    1174 
    1175                 // Anonymous posting is allowed
    1176                 if ( bbp_allow_anonymous() && !is_user_logged_in() )
    1177                     $retval = true;
    1178 
    1179                 break;
    1180 
    1181             // Private forums
    1182             case 'private' :
    1183                 if ( current_user_can( 'read_private_forums' ) )
    1184                     $retval = true;
    1185 
    1186                 break;
    1187 
    1188             // Hidden forums
    1189             case 'hidden'  :
    1190                 if ( current_user_can( 'read_hidden_forums' ) )
    1191                     $retval = true;
    1192 
    1193                 break;
     1165        // Forum is open
     1166        if ( bbp_is_forum_open() ) {
     1167
     1168            // What is the visibility of this forum
     1169            switch ( bbp_get_forum_visibility() ) {
     1170
     1171                // Public
     1172                case 'publish' :
     1173
     1174                    // User cannot publish topics
     1175                    if ( current_user_can( 'publish_topics' ) )
     1176                        $retval = true;
     1177
     1178                    // Anonymous posting is allowed
     1179                    if ( bbp_allow_anonymous() && !is_user_logged_in() )
     1180                        $retval = true;
     1181
     1182                    break;
     1183
     1184                // Private forums
     1185                case 'private' :
     1186                    if ( current_user_can( 'read_private_forums' ) )
     1187                        $retval = true;
     1188
     1189                    break;
     1190
     1191                // Hidden forums
     1192                case 'hidden'  :
     1193                    if ( current_user_can( 'read_hidden_forums' ) )
     1194                        $retval = true;
     1195
     1196                    break;
     1197            }
    11941198        }
    11951199
     
    12151219}
    12161220
    1217 /**
    1218  * Performs a series of checks to ensure the current user can create topics in
    1219  * this specific forum or scope.
    1220  *
    1221  * @since bbPress (r3127)
    1222  *
    1223  * @uses bbp_is_forum_category()
    1224  * @uses bbp_is_forum_closed()
    1225  * @uses current_user_can()
    1226  * @uses bbp_get_topic_forum_id()
    1227  * @uses bbp_is_topic_edit()
    1228  *
    1229  * @return bool
    1230  */
    1231 function bbp_current_user_can_create_topic_in_forum() {
    1232 
    1233     // Always allow super admins
    1234     if ( is_super_admin() )
    1235         return true;
    1236 
    1237     // Users need to earn access
    1238     $retval = false;
    1239 
    1240     // Looking at a single forum
    1241     if ( bbp_is_forum() ) {
    1242 
    1243         // Forum is not a category
    1244         if ( !bbp_is_forum_category() ) {
    1245 
    1246             // Forum is open
    1247             $retval = (bool) bbp_is_forum_open();
    1248         }
    1249 
    1250     // Editing a single topic
    1251     } elseif ( bbp_is_topic_edit() ) {
    1252 
    1253         // If you can edit this forum, you can edit topics in this forum
    1254         if ( current_user_can( 'edit_forum', bbp_get_topic_forum_id() ) )
    1255             $retval = true;
    1256 
    1257     // Fallback for shortcodes
    1258     } elseif ( is_page() || is_single() ) {
    1259 
    1260         // Page or single post, and user can publish topics or anonymous
    1261         // posting is allowed.
    1262         if ( current_user_can( 'publish_topics' ) || ( !is_user_logged_in() && bbp_allow_anonymous() ) )
    1263             $retval = true;
    1264 
    1265     }
    1266 
    1267     // Allow access to be filtered
    1268     return apply_filters( 'bbp_current_user_can_create_topic_in_forum', $retval );
    1269 }
    1270 
    1271 
    12721221?>
  • branches/plugin/bbp-themes/bbp-twentyten/bbpress/form-topic.php

    r3210 r3236  
    1313?>
    1414
    15 <?php if ( bbp_current_user_can_access_create_topic_form() ) : ?>
    16 
    17     <?php if ( bbp_current_user_can_create_topic_in_forum() ) : ?>
     15    <?php if ( bbp_current_user_can_access_create_topic_form() ) : ?>
    1816
    1917        <div id="new-topic-<?php bbp_topic_id(); ?>" class="bbp-topic-form">
     
    158156        </div>
    159157
     158    <?php else : ?>
     159
     160        <div id="no-topic-<?php bbp_topic_id(); ?>" class="bbp-no-topic">
     161            <div class="bbp-template-notice">
     162                <p><?php is_user_logged_in() ? _e( 'You cannot create new topics at this time.', 'bbpress' ) : _e( 'You must be logged in to create new topics.', 'bbpress' ); ?></p>
     163            </div>
     164        </div>
     165
    160166    <?php endif; ?>
    161 
    162 <?php else : ?>
    163 
    164     <div id="no-topic-<?php bbp_topic_id(); ?>" class="bbp-no-topic">
    165         <div class="bbp-template-notice">
    166             <p><?php is_user_logged_in() ? _e( 'You cannot create new topics at this time.', 'bbpress' ) : _e( 'You must be logged in to create new topics.', 'bbpress' ); ?></p>
    167         </div>
    168     </div>
    169 
    170 <?php endif; ?>
Note: See TracChangeset for help on using the changeset viewer.