static function template_redirect()
 {
     if (is_singular() && ($restricted_post = get_post())) {
         if (!wpaa_user_can($restricted_post->post_view_cap)) {
             do_action('wpaa_view_restricted_post', $restricted_post->ID, $restricted_post);
             $redirect = false;
             $behavior = get_post_meta($restricted_post->ID, '_wpaa_post_behavior', true);
             $fallback_page_id = get_post_meta($restricted_post->ID, '_wpaa_fallback_page', true);
             // no behavior? take default value
             if (!$behavior) {
                 $behavior = get_option('wpaa_default_behavior');
             }
             if ($behavior == 'page' || is_user_logged_in()) {
                 // no fallback? take default value
                 if (!$fallback_page_id) {
                     $fallback_page_id = get_option('wpaa_fallback_page');
                 }
                 if ($fallback_page_id && wpaa_is_post_public($fallback_page_id)) {
                     // if accessable take user to the fallback page
                     $redirect = get_permalink($fallback_page_id);
                 } else {
                     // last resort: send him home
                     $redirect = home_url();
                 }
             } else {
                 if ($behavior == 'login') {
                     // get user to login and return him to the requested page.
                     $redirect = wp_login_url(get_permalink());
                 } else {
                     if ($behavior == '404') {
                         // 404
                         global $wp_query;
                         $wp_query->set_404();
                         status_header(404);
                     }
                 }
             }
             $redirect = apply_filters('wpaa_restricted_post_redirect', $redirect, $restricted_post->ID, $restricted_post);
             if ($redirect) {
                 wp_redirect($redirect);
                 exit;
             }
         }
     }
 }
 static function fallback_page_dropdown($post_fallback_page = false, $fieldname = '_wpaa_fallback_page')
 {
     global $wpdb;
     if (!wpaa_is_post_public($post_fallback_page)) {
         $post_fallback_page = 0;
     }
     // if not fallback page, use global fallback page
     $restricted_pages = $wpdb->get_col($wpdb->prepare("SELECT id \n\t\t\tFROM {$wpdb->posts} \n\t\t\tWHERE \n\t\t\t\tpost_type=%s AND \n\t\t\t\tpost_status=%s AND\n\t\t\t\tpost_view_cap!=%s", 'page', 'publish', 'exist'));
     wp_dropdown_pages(array('selected' => $post_fallback_page, 'name' => $fieldname, 'exclude' => $restricted_pages, 'show_option_none' => __('Front page'), 'option_none_value' => 0));
 }