X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/699231ae09f7057a4d0000cdf32e50a3df6a04ca..9c2096d803812dacbdf6cf8efe90053e39f00b96:/wp-admin/includes/template.php diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php index e3981f22..3d0c1162 100644 --- a/wp-admin/includes/template.php +++ b/wp-admin/includes/template.php @@ -8,169 +8,6 @@ * @subpackage Administration */ -/** - * {@internal Missing Short Description}} - * - * @since 2.7 - * - * Outputs the HTML for the hidden table rows used in Categories, Link Categories and Tags quick edit. - * - * @param string $type "edit-tags", "categoried" or "edit-link-categories" - * @param string $taxonomy The taxonomy of the row. - * @return - */ -function inline_edit_term_row($type, $taxonomy) { - - $tax = get_taxonomy($taxonomy); - if ( ! current_user_can( $tax->cap->edit_terms ) ) - return; - - $columns = get_column_headers($type); - $hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns($type) ) ); - $col_count = count($columns) - count($hidden); - ?> - -
- -
-name ); - $edit_link = "link-category.php?action=edit&cat_ID=$category->term_id"; - if ( current_user_can( 'manage_categories' ) ) { - $edit = "name)) . "'>$name
"; - $actions = array(); - $actions['edit'] = '' . __('Edit') . ''; - $actions['inline hide-if-no-js'] = '' . __('Quick Edit') . ''; - if ( $default_cat_id != $category->term_id ) - $actions['delete'] = "term_id) . "'>" . __('Delete') . ""; - $actions = apply_filters('link_cat_row_actions', $actions, $category); - $action_count = count($actions); - $i = 0; - $edit .= '
'; - foreach ( $actions as $action => $link ) { - ++$i; - ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - $edit .= "$link$sep"; - } - $edit .= '
'; - } else { - $edit = $name; - } - - $row_class = 'alternate' == $row_class ? '' : 'alternate'; - $qe_data = get_term_to_edit($category->term_id, 'link_category'); - - $category->count = number_format_i18n( $category->count ); - $count = ( $category->count > 0 ) ? "$category->count" : $category->count; - $output = ""; - $columns = get_column_headers('edit-link-categories'); - $hidden = get_hidden_columns('edit-link-categories'); - foreach ( $columns as $column_name => $column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; - - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - case 'cb': - $output .= ""; - if ( absint( get_option( 'default_link_category' ) ) != $category->term_id ) { - $output .= ""; - } else { - $output .= " "; - } - $output .= ""; - break; - case 'name': - $output .= "$edit"; - $output .= ''; - break; - case 'description': - $output .= "$category->description"; - break; - case 'slug': - $output .= "" . apply_filters('editable_slug', $category->slug) . ""; - break; - case 'links': - $attributes = 'class="links column-links num"' . $style; - $output .= "$count"; - break; - default: - $output .= ""; - $output .= apply_filters('manage_link_categories_custom_column', '', $column_name, $category->term_id); - $output .= ""; - } - } - $output .= ''; - - return $output; -} // // Category Checklists @@ -179,7 +16,7 @@ function link_cat_row( $category, $name_override = false ) { /** * {@internal Missing Short Description}} * - * @since unknown + * @since 2.5.1 */ class Walker_Category_Checklist extends Walker { var $tree_type = 'category'; @@ -198,2035 +35,261 @@ class Walker_Category_Checklist extends Walker { function start_el(&$output, $category, $depth, $args) { extract($args); if ( empty($taxonomy) ) - $taxonomy = 'category'; - - if ( $taxonomy == 'category' ) - $name = 'post_category'; - else - $name = 'tax_input['.$taxonomy.']'; - - $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; - $output .= "\n
  • " . ''; - } - - function end_el(&$output, $category, $depth, $args) { - $output .= "
  • \n"; - } -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $post_id - * @param unknown_type $descendants_and_self - * @param unknown_type $selected_cats - * @param unknown_type $popular_cats - */ -function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) { - wp_terms_checklist($post_id, - array( - 'taxonomy' => 'category', - 'descendants_and_self' => $descendants_and_self, - 'selected_cats' => $selected_cats, - 'popular_cats' => $popular_cats, - 'walker' => $walker, - 'checked_ontop' => $checked_ontop - )); -} - -/** - * Taxonomy independent version of wp_category_checklist - * - * @param int $post_id - * @param array $args - */ -function wp_terms_checklist($post_id = 0, $args = array()) { - $defaults = array( - 'descendants_and_self' => 0, - 'selected_cats' => false, - 'popular_cats' => false, - 'walker' => null, - 'taxonomy' => 'category', - 'checked_ontop' => true - ); - extract( wp_parse_args($args, $defaults), EXTR_SKIP ); - - if ( empty($walker) || !is_a($walker, 'Walker') ) - $walker = new Walker_Category_Checklist; - - $descendants_and_self = (int) $descendants_and_self; - - $args = array('taxonomy' => $taxonomy); - - $tax = get_taxonomy($taxonomy); - $args['disabled'] = !current_user_can($tax->cap->assign_terms); - - if ( is_array( $selected_cats ) ) - $args['selected_cats'] = $selected_cats; - elseif ( $post_id ) - $args['selected_cats'] = wp_get_object_terms($post_id, $taxonomy, array_merge($args, array('fields' => 'ids'))); - else - $args['selected_cats'] = array(); - - if ( is_array( $popular_cats ) ) - $args['popular_cats'] = $popular_cats; - else - $args['popular_cats'] = get_terms( $taxonomy, array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); - - if ( $descendants_and_self ) { - $categories = (array) get_terms($taxonomy, array( 'child_of' => $descendants_and_self, 'hierarchical' => 0, 'hide_empty' => 0 ) ); - $self = get_term( $descendants_and_self, $taxonomy ); - array_unshift( $categories, $self ); - } else { - $categories = (array) get_terms($taxonomy, array('get' => 'all')); - } - - if ( $checked_ontop ) { - // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) - $checked_categories = array(); - $keys = array_keys( $categories ); - - foreach( $keys as $k ) { - if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { - $checked_categories[] = $categories[$k]; - unset( $categories[$k] ); - } - } - - // Put checked cats on top - echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args)); - } - // Then the rest of them - echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args)); -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $taxonomy - * @param unknown_type $default - * @param unknown_type $number - * @param unknown_type $echo - * @return unknown - */ -function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) { - global $post_ID; - - if ( $post_ID ) - $checked_terms = wp_get_object_terms($post_ID, $taxonomy, array('fields'=>'ids')); - else - $checked_terms = array(); - - $terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) ); - - $tax = get_taxonomy($taxonomy); - if ( ! current_user_can($tax->cap->assign_terms) ) - $disabled = 'disabled="disabled"'; - else - $disabled = ''; - - $popular_ids = array(); - foreach ( (array) $terms as $term ) { - $popular_ids[] = $term->term_id; - if ( !$echo ) // hack for AJAX use - continue; - $id = "popular-$taxonomy-$term->term_id"; - $checked = in_array( $term->term_id, $checked_terms ) ? 'checked="checked"' : ''; - ?> - - - - 'name', 'hide_empty' => 0 ) ); - - if ( empty( $categories ) ) - return; - - foreach ( $categories as $category ) { - $cat_id = $category->term_id; - $name = esc_html( apply_filters( 'the_category', $category->name ) ); - $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; - echo '"; - } -} - -// Tag stuff - -// Returns a single tag row (see tag_rows below) -// Note: this is also used in admin-ajax.php! -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $tag - * @param unknown_type $class - * @return unknown - */ -function _tag_row( $tag, $level, $taxonomy = 'post_tag' ) { - global $post_type, $current_screen; - static $row_class = ''; - $row_class = ($row_class == '' ? ' class="alternate"' : ''); - - $count = number_format_i18n( $tag->count ); - $tax = get_taxonomy($taxonomy); - - if ( 'post_tag' == $taxonomy ) { - $tagsel = 'tag'; - } elseif ( 'category' == $taxonomy ) { - $tagsel = 'category_name'; - } elseif ( ! empty($tax->query_var) ) { - $tagsel = $tax->query_var; - } else { - $tagsel = $taxonomy; - } - - $pad = str_repeat( '— ', max(0, $level) ); - $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); - $qe_data = get_term($tag->term_id, $taxonomy, object, 'edit'); - $edit_link = "edit-tags.php?action=edit&taxonomy=$taxonomy&post_type=$post_type&tag_ID=$tag->term_id"; - - $out = ''; - $out .= ''; - - - $columns = get_column_headers($current_screen); - $hidden = get_hidden_columns($current_screen); - $default_term = get_option('default_' . $taxonomy); - foreach ( $columns as $column_name => $column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; - - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - case 'cb': - if ( current_user_can($tax->cap->delete_terms) && $tag->term_id != $default_term ) - $out .= ' '; - else - $out .= ' '; - break; - case 'name': - $out .= '' . $name . '
    '; - $actions = array(); - if ( current_user_can($tax->cap->edit_terms) ) { - $actions['edit'] = '' . __('Edit') . ''; - $actions['inline hide-if-no-js'] = '' . __('Quick Edit') . ''; - } - if ( current_user_can($tax->cap->delete_terms) && $tag->term_id != $default_term ) - $actions['delete'] = "term_id) . "'>" . __('Delete') . ""; - - $actions = apply_filters('tag_row_actions', $actions, $tag); - $actions = apply_filters("${taxonomy}_row_actions", $actions, $tag); - - $action_count = count($actions); - $i = 0; - $out .= '
    '; - foreach ( $actions as $action => $link ) { - ++$i; - ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - $out .= "$link$sep"; - } - $out .= '
    '; - $out .= ''; - break; - case 'description': - $out .= "$tag->description"; - break; - case 'slug': - $out .= "" . apply_filters('editable_slug', $tag->slug) . ""; - break; - case 'posts': - $attributes = 'class="posts column-posts num"' . $style; - $out .= "$count"; - break; - default: - $out .= ""; - $out .= apply_filters("manage_${taxonomy}_custom_column", '', $column_name, $tag->term_id); - $out .= ""; - } - } - - $out .= "\n"; - - return $out; -} - -// Outputs appropriate rows for the Nth page of the Tag Management screen, -// assuming M tags displayed at a time on the page -// Returns the number of tags displayed -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $page - * @param unknown_type $pagesize - * @param unknown_type $searchterms - * @return unknown - */ -function tag_rows( $page = 1, $pagesize = 20, $searchterms = '', $taxonomy = 'post_tag' ) { - - // Get a page worth of tags - $start = ($page - 1) * $pagesize; - - $args = array('offset' => $start, 'number' => $pagesize, 'hide_empty' => 0); - - if ( !empty( $searchterms ) ) - $args['search'] = $searchterms; - - // convert it to table rows - $out = ''; - $count = 0; - if ( is_taxonomy_hierarchical($taxonomy) ) { - // We'll need the full set of terms then. - $args['number'] = $args['offset'] = 0; - - $terms = get_terms( $taxonomy, $args ); - if ( !empty( $searchterms ) ) // Ignore children on searches. - $children = array(); - else - $children = _get_term_hierarchy($taxonomy); - - // Some funky recursion to get the job done(Paging & parents mainly) is contained within, Skip it for non-hierarchical taxonomies for performance sake - $out .= _term_rows($taxonomy, $terms, $children, $page, $pagesize, $count); - } else { - $terms = get_terms( $taxonomy, $args ); - foreach( $terms as $term ) - $out .= _tag_row( $term, 0, $taxonomy ); - $count = $pagesize; // Only displaying a single page. - } - - echo $out; - return $count; -} - -function _term_rows( $taxonomy, $terms, &$children, $page = 1, $per_page = 20, &$count, $parent = 0, $level = 0 ) { - - $start = ($page - 1) * $per_page; - $end = $start + $per_page; - - $output = ''; - foreach ( $terms as $key => $term ) { - - if ( $count >= $end ) - break; - - if ( $term->parent != $parent && empty($_GET['s']) ) - continue; - - // If the page starts in a subtree, print the parents. - if ( $count == $start && $term->parent > 0 && empty($_GET['s']) ) { - $my_parents = $parent_ids = array(); - $p = $term->parent; - while ( $p ) { - $my_parent = get_term( $p, $taxonomy ); - $my_parents[] = $my_parent; - $p = $my_parent->parent; - if ( in_array($p, $parent_ids) ) // Prevent parent loops. - break; - $parent_ids[] = $p; - } - unset($parent_ids); - - $num_parents = count($my_parents); - while ( $my_parent = array_pop($my_parents) ) { - $output .= "\t" . _tag_row( $my_parent, $level - $num_parents, $taxonomy ); - $num_parents--; - } - } - - if ( $count >= $start ) - $output .= "\t" . _tag_row( $term, $level, $taxonomy ); - - ++$count; - - unset($terms[$key]); - - if ( isset($children[$term->term_id]) && empty($_GET['s']) ) - $output .= _term_rows( $taxonomy, $terms, $children, $page, $per_page, $count, $term->term_id, $level + 1 ); - } - - return $output; -} - -// define the columns to display, the syntax is 'internal name' => 'display name' -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @return unknown - */ -function wp_manage_posts_columns( $screen = '') { - if ( empty($screen) ) - $post_type = 'post'; - else - $post_type = $screen->post_type; - - $posts_columns = array(); - $posts_columns['cb'] = ''; - /* translators: manage posts column name */ - $posts_columns['title'] = _x('Title', 'column name'); - $posts_columns['author'] = __('Author'); - if ( empty($post_type) || is_object_in_taxonomy($post_type, 'category') ) - $posts_columns['categories'] = __('Categories'); - if ( empty($post_type) || is_object_in_taxonomy($post_type, 'post_tag') ) - $posts_columns['tags'] = __('Tags'); - $post_status = !empty($_REQUEST['post_status']) ? $_REQUEST['post_status'] : 'all'; - if ( !in_array( $post_status, array('pending', 'draft', 'future') ) && ( empty($post_type) || post_type_supports($post_type, 'comments') ) ) - $posts_columns['comments'] = '
    Comments
    '; - $posts_columns['date'] = __('Date'); - - if ( 'page' == $post_type ) - $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); - else - $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); - $posts_columns = apply_filters( "manage_{$post_type}_posts_columns", $posts_columns ); - - return $posts_columns; -} - -// define the columns to display, the syntax is 'internal name' => 'display name' -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @return unknown - */ -function wp_manage_media_columns() { - $posts_columns = array(); - $posts_columns['cb'] = ''; - $posts_columns['icon'] = ''; - /* translators: column name */ - $posts_columns['media'] = _x('File', 'column name'); - $posts_columns['author'] = __('Author'); - //$posts_columns['tags'] = _x('Tags', 'column name'); - /* translators: column name */ - $posts_columns['parent'] = _x('Attached to', 'column name'); - $posts_columns['comments'] = '
    Comments
    '; - //$posts_columns['comments'] = __('Comments'); - /* translators: column name */ - $posts_columns['date'] = _x('Date', 'column name'); - $posts_columns = apply_filters('manage_media_columns', $posts_columns); - - return $posts_columns; -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @return unknown - */ -function wp_manage_pages_columns() { - return wp_manage_posts_columns(); -} - -/** - * Get the column headers for a screen - * - * @since unknown - * - * @param string|object $screen The screen you want the headers for - * @return array Containing the headers in the format id => UI String - */ -function get_column_headers($screen) { - global $_wp_column_headers; - - if ( !isset($_wp_column_headers) ) - $_wp_column_headers = array(); - - if ( is_string($screen) ) - $screen = convert_to_screen($screen); - - // Store in static to avoid running filters on each call - if ( isset($_wp_column_headers[$screen->id]) ) - return $_wp_column_headers[$screen->id]; - - switch ($screen->base) { - case 'edit': - $_wp_column_headers[$screen->id] = wp_manage_posts_columns( $screen ); - break; - case 'edit-comments': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'author' => __('Author'), - /* translators: column name */ - 'comment' => _x('Comment', 'column name'), - //'date' => __('Submitted'), - 'response' => __('In Response To') - ); - - break; - case 'link-manager': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'name' => __('Name'), - 'url' => __('URL'), - 'categories' => __('Categories'), - 'rel' => __('Relationship'), - 'visible' => __('Visible'), - 'rating' => __('Rating') - ); - - break; - case 'upload': - $_wp_column_headers[$screen->id] = wp_manage_media_columns(); - break; - case 'categories': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'name' => __('Name'), - 'description' => __('Description'), - 'slug' => __('Slug'), - 'posts' => __('Posts') - ); - - break; - case 'edit-link-categories': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'name' => __('Name'), - 'description' => __('Description'), - 'slug' => __('Slug'), - 'links' => __('Links') - ); - - break; - case 'edit-tags': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'name' => __('Name'), - 'description' => __('Description'), - 'slug' => __('Slug'), - 'posts' => __('Posts') - ); - - break; - case 'users': - $_wp_column_headers[$screen->id] = array( - 'cb' => '', - 'username' => __('Username'), - 'name' => __('Name'), - 'email' => __('E-mail'), - 'role' => __('Role'), - 'posts' => __('Posts') - ); - break; - default : - $_wp_column_headers[$screen->id] = array(); - } - - $_wp_column_headers[$screen->id] = apply_filters('manage_' . $screen->id . '_columns', $_wp_column_headers[$screen->id]); - return $_wp_column_headers[$screen->id]; -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $screen - * @param unknown_type $id - */ -function print_column_headers( $screen, $id = true ) { - if ( is_string($screen) ) - $screen = convert_to_screen($screen); - - $columns = get_column_headers( $screen ); - $hidden = get_hidden_columns($screen); - $styles = array(); - - foreach ( $columns as $column_key => $column_display_name ) { - $class = ' class="manage-column'; - - $class .= " column-$column_key"; - - if ( 'cb' == $column_key ) - $class .= ' check-column'; - elseif ( in_array($column_key, array('posts', 'comments', 'links')) ) - $class .= ' num'; - - $class .= '"'; - - $style = ''; - if ( in_array($column_key, $hidden) ) - $style = 'display:none;'; - - if ( isset($styles[$screen->id]) && isset($styles[$screen->id][$column_key]) ) - $style .= ' ' . $styles[$screen>id][$column_key]; - $style = ' style="' . $style . '"'; -?> - > -id] = $columns; -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $screen - */ -function get_hidden_columns($screen) { - if ( is_string($screen) ) - $screen = convert_to_screen($screen); - - return (array) get_user_option( 'manage' . $screen->id. 'columnshidden' ); -} - -/** - * {@internal Missing Short Description}} - * - * Outputs the quick edit and bulk edit table rows for posts and pages - * - * @since 2.7 - * - * @param string $screen - */ -function inline_edit_row( $screen ) { - global $current_user, $mode; - - if ( is_string($screen) ) { - $screen = array('id' => 'edit-' . $screen, 'base' => 'edit', 'post_type' => $screen ); - $screen = (object) $screen; - } - - $post = get_default_post_to_edit( $screen->post_type ); - $post_type_object = get_post_type_object( $screen->post_type ); - - $taxonomy_names = get_object_taxonomies( $screen->post_type ); - $hierarchical_taxonomies = array(); - $flat_taxonomies = array(); - foreach ( $taxonomy_names as $taxonomy_name ) { - $taxonomy = get_taxonomy( $taxonomy_name); - - if ( !$taxonomy->show_ui ) - continue; - - if ( $taxonomy->hierarchical ) - $hierarchical_taxonomies[] = $taxonomy; - else - $flat_taxonomies[] = $taxonomy; - } - - $columns = wp_manage_posts_columns($screen); - $hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns($screen) ) ); - $col_count = count($columns) - count($hidden); - $m = ( isset($mode) && 'excerpt' == $mode ) ? 'excerpt' : 'list'; - $can_publish = current_user_can($post_type_object->cap->publish_posts); - $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true ); - -?> - -
    - - - post_type "; - echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type"; - ?>" style="display: none"> - -
    - -
    -

    - - -post_type, 'title' ) ) : - if ( $bulk ) : ?> -
    -
    -
    - - - - - - - - - - - -
    - -
    -
    - -post_type, 'author' ) ) : - $authors = get_editable_user_ids( $current_user->id, true, $screen->post_type ); // TODO: ROLE SYSTEM - $authors_dropdown = ''; - if ( $authors && count( $authors ) > 1 ) : - $users_opt = array('include' => $authors, 'name' => 'post_author', 'class'=> 'authors', 'multi' => 1, 'echo' => 0); - if ( $bulk ) - $users_opt['show_option_none'] = __('— No Change —'); - $authors_dropdown = ''; - - endif; // authors -?> - - - -
    - - - - - - -
    - - - -
    - - - -
    - - - - labels->name) ?> - - - - -
      - $taxonomy->name)) ?> -
    - - - -
    - - - -
    - -post_type, 'author' ) && $bulk ) - echo $authors_dropdown; -?> - -hierarchical ) : ?> - - - -post_type, 'page-attributes' ) ) : - if ( !$bulk ) : ?> - - - - - - - -hierarchical ?> - - - - - - - - - - - -post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) : - if ( $bulk ) : ?> - -
    - post_type, 'comments' ) ) : ?> - - post_type, 'trackbacks' ) ) : ?> - - -
    - - - -
    - post_type, 'comments' ) ) : ?> - - post_type, 'trackbacks' ) ) : ?> - - -
    - - - -
    - - -post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?> - - - - - - - - - - - - - -
    - -
    - - $column_display_name ) { - if ( isset( $core_columns[$column_name] ) ) - continue; - do_action( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box', $column_name, $screen->post_type ); - } -?> -

    - - - - - - - - - -
    -

    -
    -post_type); - if ( ! current_user_can($post_type_object->cap->edit_post, $post->ID) ) - return; - - $title = esc_attr( get_the_title( $post->ID ) ); - - echo ' -'; -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $posts - */ -function post_rows( $posts = array() ) { - global $wp_query, $post, $mode; - - add_filter('the_title','esc_html'); - - // Create array of post IDs. - $post_ids = array(); - - if ( empty($posts) ) - $posts = &$wp_query->posts; - - foreach ( $posts as $a_post ) - $post_ids[] = $a_post->ID; - - $comment_pending_count = get_pending_comments_num($post_ids); - - foreach ( $posts as $post ) { - if ( empty($comment_pending_count[$post->ID]) ) - $comment_pending_count[$post->ID] = 0; - - _post_row($post, $comment_pending_count[$post->ID], $mode); - } -} - -/** - * {@internal Missing Short Description}} - * - * @since unknown - * - * @param unknown_type $a_post - * @param unknown_type $pending_comments - * @param unknown_type $mode - */ -function _post_row($a_post, $pending_comments, $mode) { - global $post, $current_user, $current_screen; - static $rowclass; - - $global_post = $post; - $post = $a_post; - setup_postdata($post); - - $rowclass = 'alternate' == $rowclass ? '' : 'alternate'; - $post_owner = ( $current_user->ID == $post->post_author ? 'self' : 'other' ); - $edit_link = get_edit_post_link( $post->ID ); - $title = _draft_or_post_title(); - $post_type_object = get_post_type_object($post->post_type); -?> - post_status ); ?> iedit' valign="top"> -$column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; - - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - - case 'cb': - ?> - cap->edit_post, $post->ID ) ) { ?> - post_date && 'date' == $column_name ) { - $t_time = $h_time = __('Unpublished'); - $time_diff = 0; - } else { - $t_time = get_the_time(__('Y/m/d g:i:s A')); - $m_time = $post->post_date; - $time = get_post_time('G', true, $post); - - $time_diff = time() - $time; - - if ( $time_diff > 0 && $time_diff < 24*60*60 ) - $h_time = sprintf( __('%s ago'), human_time_diff( $time ) ); - else - $h_time = mysql2date(__('Y/m/d'), $m_time); - } - - echo ''; - if ( 'excerpt' == $mode ) - echo apply_filters('post_date_column_time', $t_time, $post, $column_name, $mode); - else - echo '' . apply_filters('post_date_column_time', $h_time, $post, $column_name, $mode) . ''; - echo '
    '; - if ( 'publish' == $post->post_status ) { - _e('Published'); - } elseif ( 'future' == $post->post_status ) { - if ( $time_diff > 0 ) - echo '' . __('Missed schedule') . ''; - else - _e('Scheduled'); - } else { - _e('Last Modified'); - } - echo ''; - break; - - case 'title': - $attributes = 'class="post-title column-title"' . $style; - ?> - >cap->edit_post, $post->ID) && $post->post_status != 'trash' ) { ?> - cap->edit_post, $post->ID) && 'trash' != $post->post_status ) { - $actions['edit'] = '' . __('Edit') . ''; - $actions['inline hide-if-no-js'] = '' . __('Quick Edit') . ''; - } - if ( current_user_can($post_type_object->cap->delete_post, $post->ID) ) { - if ( 'trash' == $post->post_status ) - $actions['untrash'] = "ID) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __('Restore') . ""; - elseif ( EMPTY_TRASH_DAYS ) - $actions['trash'] = "" . __('Trash') . ""; - if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS ) - $actions['delete'] = "" . __('Delete Permanently') . ""; - } - if ( in_array($post->post_status, array('pending', 'draft')) ) { - if ( current_user_can($post_type_object->cap->edit_post, $post->ID) ) - $actions['view'] = '' . __('Preview') . ''; - } elseif ( 'trash' != $post->post_status ) { - $actions['view'] = '' . __('View') . ''; - } - $actions = apply_filters('post_row_actions', $actions, $post); - $action_count = count($actions); - $i = 0; - echo '
    '; - foreach ( $actions as $action => $link ) { - ++$i; - ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - echo "$link$sep"; - } - echo '
    '; - - get_inline_data($post); - ?> - - - >slug'> " . esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'category', 'display')) . ""; - echo join( ', ', $out ); - } else { - _e('Uncategorized'); - } - ?> - - >ID); - if ( !empty( $tags ) ) { - $out = array(); - foreach ( $tags as $c ) - $out[] = " " . esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'post_tag', 'display')) . ""; - echo join( ', ', $out ); - } else { - _e('No Tags'); - } - ?> - - >
    - '; - comments_number("" . /* translators: comment count link */ _x('0', 'comment count') . '', "" . /* translators: comment count link */ _x('1', 'comment count') . '', "" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . ''); - if ( $pending_comments ) - echo ''; - ?> -
    - - > - - - - cap->edit_post, $post->ID) ) { echo "" . __('Edit') . ""; } ?> - - cap->delete_post, $post->ID) ) { echo "ID) . "' class='delete'>" . __('Delete') . ""; } ?> - - >ID); ?> - - -post_parent > 0 ) { - //sent level 0 by accident, by default, or because we don't know the actual level - $find_main_page = (int)$page->post_parent; - while ( $find_main_page > 0 ) { - $parent = get_page($find_main_page); - - if ( is_null($parent) ) - break; - - $level++; - $find_main_page = (int)$parent->post_parent; - - if ( !isset($parent_name) ) - $parent_name = $parent->post_title; - } - } - - $page->post_title = esc_html( $page->post_title ); - $pad = str_repeat( '— ', $level ); - $id = (int) $page->ID; - $rowclass = 'alternate' == $rowclass ? '' : 'alternate'; - $posts_columns = get_column_headers( $current_screen ); - $hidden = get_hidden_columns( $current_screen ); - $title = _draft_or_post_title(); - $post_type = $page->post_type; - $post_type_object = get_post_type_object($post_type); -?> - - $column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; - - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - - case 'cb': - ?> - cap->edit_post, $page->ID ) ) { ?> - post_date && 'date' == $column_name ) { - $t_time = $h_time = __('Unpublished'); - $time_diff = 0; - } else { - $t_time = get_the_time(__('Y/m/d g:i:s A')); - $m_time = $page->post_date; - $time = get_post_time('G', true); - - $time_diff = time() - $time; - - if ( $time_diff > 0 && $time_diff < 24*60*60 ) - $h_time = sprintf( __('%s ago'), human_time_diff( $time ) ); - else - $h_time = mysql2date(__('Y/m/d'), $m_time); - } - echo ''; - echo '' . apply_filters('post_date_column_time', $h_time, $page, $column_name, '') . ''; - echo '
    '; - if ( 'publish' == $page->post_status ) { - _e('Published'); - } elseif ( 'future' == $page->post_status ) { - if ( $time_diff > 0 ) - echo '' . __('Missed schedule') . ''; - else - _e('Scheduled'); - } else { - _e('Last Modified'); - } - echo ''; - break; - case 'title': - $attributes = 'class="post-title page-title column-title"' . $style; - $edit_link = get_edit_post_link( $page->ID ); - ?> - >cap->edit_post, $page->ID) && $post->post_status != 'trash' ) { ?>labels->parent_item_colon . ' ' . esc_html($parent_name) : ''; ?> - cap->edit_post, $page->ID) && $post->post_status != 'trash' ) { - $actions['edit'] = '' . __('Edit') . ''; - $actions['inline'] = '' . __('Quick Edit') . ''; - } - if ( current_user_can($post_type_object->cap->delete_post, $page->ID) ) { - if ( $post->post_status == 'trash' ) - $actions['untrash'] = "post_type . '_' . $page->ID) . "'>" . __('Restore') . ""; - elseif ( EMPTY_TRASH_DAYS ) - $actions['trash'] = "" . __('Trash') . ""; - if ( $post->post_status == 'trash' || !EMPTY_TRASH_DAYS ) - $actions['delete'] = "post_type . '_' . $page->ID) . "'>" . __('Delete Permanently') . ""; - } - if ( in_array($post->post_status, array('pending', 'draft')) ) { - if ( current_user_can($post_type_object->cap->edit_post, $page->ID) ) - $actions['view'] = '' . __('Preview') . ''; - } elseif ( $post->post_status != 'trash' ) { - $actions['view'] = '' . __('View') . ''; - } - $actions = apply_filters('page_row_actions', $actions, $page); - $action_count = count($actions); - - $i = 0; - echo '
    '; - foreach ( $actions as $action => $link ) { - ++$i; - ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - echo "$link$sep"; - } - echo '
    '; - - get_inline_data($post); - echo ''; - break; - - case 'comments': - ?> - >
    - ID ); - $pending_phrase = sprintf( __('%s pending'), number_format( $left ) ); - if ( $left ) - echo ''; - comments_number("" . /* translators: comment count link */ _x('0', 'comment count') . '', "" . /* translators: comment count link */ _x('1', 'comment count') . '', "" . /* translators: comment count link: % will be substituted by comment count */ _x('%', 'comment count') . ''); - if ( $left ) - echo ''; - ?> -
    - - > - - > - - - - - 'menu_order') ); - - if ( ! $pages ) - return false; - } - - /* - * arrange pages into two parts: top level pages and children_pages - * children_pages is two dimensional array, eg. - * children_pages[10][] contains all sub-pages whose parent is 10. - * It only takes O(N) to arrange this and it takes O(1) for subsequent lookup operations - * If searching, ignore hierarchy and treat everything as top level - */ - if ( empty($_GET['s']) ) { - - $top_level_pages = array(); - $children_pages = array(); - - foreach ( $pages as $page ) { - - // catch and repair bad pages - if ( $page->post_parent == $page->ID ) { - $page->post_parent = 0; - $wpdb->update($wpdb->posts, array('post_parent' => 0), array('ID' => $page->ID)); - clean_page_cache( $page->ID ); - } - - if ( 0 == $page->post_parent ) - $top_level_pages[] = $page; - else - $children_pages[ $page->post_parent ][] = $page; - } - - $pages = &$top_level_pages; - } - - $count = 0; - $start = ($pagenum - 1) * $per_page; - $end = $start + $per_page; - - foreach ( $pages as $page ) { - if ( $count >= $end ) - break; - - if ( $count >= $start ) - echo "\t" . display_page_row( $page, $level ); + $taxonomy = 'category'; - $count++; + if ( $taxonomy == 'category' ) + $name = 'post_category'; + else + $name = 'tax_input['.$taxonomy.']'; - if ( isset($children_pages) ) - _page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; + $output .= "\n
  • " . ''; } - // if it is the last pagenum and there are orphaned pages, display them with paging as well - if ( isset($children_pages) && $count < $end ){ - foreach( $children_pages as $orphans ){ - foreach ( $orphans as $op ) { - if ( $count >= $end ) - break; - if ( $count >= $start ) - echo "\t" . display_page_row( $op, 0 ); - $count++; - } - } + function end_el(&$output, $category, $depth, $args) { + $output .= "
  • \n"; } } /** - * Given a top level page ID, display the nested hierarchy of sub-pages - * together with paging support + * {@internal Missing Short Description}} * - * @since unknown + * @since 2.5.1 * - * @param unknown_type $children_pages - * @param unknown_type $count - * @param unknown_type $parent - * @param unknown_type $level - * @param unknown_type $pagenum - * @param unknown_type $per_page + * @param unknown_type $post_id + * @param unknown_type $descendants_and_self + * @param unknown_type $selected_cats + * @param unknown_type $popular_cats */ -function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) { +function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) { + wp_terms_checklist($post_id, + array( + 'taxonomy' => 'category', + 'descendants_and_self' => $descendants_and_self, + 'selected_cats' => $selected_cats, + 'popular_cats' => $popular_cats, + 'walker' => $walker, + 'checked_ontop' => $checked_ontop + )); +} - if ( ! isset( $children_pages[$parent] ) ) - return; +/** + * Taxonomy independent version of wp_category_checklist + * + * @since 3.0.0 + * + * @param int $post_id + * @param array $args + */ +function wp_terms_checklist($post_id = 0, $args = array()) { + $defaults = array( + 'descendants_and_self' => 0, + 'selected_cats' => false, + 'popular_cats' => false, + 'walker' => null, + 'taxonomy' => 'category', + 'checked_ontop' => true + ); + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); - $start = ($pagenum - 1) * $per_page; - $end = $start + $per_page; + if ( empty($walker) || !is_a($walker, 'Walker') ) + $walker = new Walker_Category_Checklist; - foreach ( $children_pages[$parent] as $page ) { + $descendants_and_self = (int) $descendants_and_self; - if ( $count >= $end ) - break; + $args = array('taxonomy' => $taxonomy); - // If the page starts in a subtree, print the parents. - if ( $count == $start && $page->post_parent > 0 ) { - $my_parents = array(); - $my_parent = $page->post_parent; - while ( $my_parent) { - $my_parent = get_post($my_parent); - $my_parents[] = $my_parent; - if ( !$my_parent->post_parent ) - break; - $my_parent = $my_parent->post_parent; - } - $num_parents = count($my_parents); - while( $my_parent = array_pop($my_parents) ) { - echo "\t" . display_page_row( $my_parent, $level - $num_parents ); - $num_parents--; - } - } + $tax = get_taxonomy($taxonomy); + $args['disabled'] = !current_user_can($tax->cap->assign_terms); - if ( $count >= $start ) - echo "\t" . display_page_row( $page, $level ); + if ( is_array( $selected_cats ) ) + $args['selected_cats'] = $selected_cats; + elseif ( $post_id ) + $args['selected_cats'] = wp_get_object_terms($post_id, $taxonomy, array_merge($args, array('fields' => 'ids'))); + else + $args['selected_cats'] = array(); - $count++; + if ( is_array( $popular_cats ) ) + $args['popular_cats'] = $popular_cats; + else + $args['popular_cats'] = get_terms( $taxonomy, array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); - _page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + if ( $descendants_and_self ) { + $categories = (array) get_terms($taxonomy, array( 'child_of' => $descendants_and_self, 'hierarchical' => 0, 'hide_empty' => 0 ) ); + $self = get_term( $descendants_and_self, $taxonomy ); + array_unshift( $categories, $self ); + } else { + $categories = (array) get_terms($taxonomy, array('get' => 'all')); } - unset( $children_pages[$parent] ); //required in order to keep track of orphans + if ( $checked_ontop ) { + // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) + $checked_categories = array(); + $keys = array_keys( $categories ); + + foreach( $keys as $k ) { + if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { + $checked_categories[] = $categories[$k]; + unset( $categories[$k] ); + } + } + + // Put checked cats on top + echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args)); + } + // Then the rest of them + echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args)); } /** - * Generate HTML for a single row on the users.php admin panel. + * {@internal Missing Short Description}} * - * @since 2.1.0 + * @since 2.5.0 * - * @param object $user_object - * @param string $style Optional. Attributes added to the TR element. Must be sanitized. - * @param string $role Key for the $wp_roles array. - * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts. - * @return string + * @param unknown_type $taxonomy + * @param unknown_type $default + * @param unknown_type $number + * @param unknown_type $echo + * @return unknown */ -function user_row( $user_object, $style = '', $role = '', $numposts = 0 ) { - global $wp_roles; - - $current_user = wp_get_current_user(); - - if ( !( is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) ) - $user_object = new WP_User( (int) $user_object ); - $user_object = sanitize_user_object($user_object, 'display'); - $email = $user_object->user_email; - $url = $user_object->user_url; - $short_url = str_replace( 'http://', '', $url ); - $short_url = str_replace( 'www.', '', $short_url ); - if ('/' == substr( $short_url, -1 )) - $short_url = substr( $short_url, 0, -1 ); - if ( strlen( $short_url ) > 35 ) - $short_url = substr( $short_url, 0, 32 ).'...'; - $checkbox = ''; - // Check if the user for this row is editable - if ( current_user_can( 'list_users' ) ) { - // Set up the user editing link - // TODO: make profile/user-edit determination a separate function - if ($current_user->ID == $user_object->ID) { - $edit_link = 'profile.php'; - } else { - $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( esc_url( stripslashes( $_SERVER['REQUEST_URI'] ) ) ), "user-edit.php?user_id=$user_object->ID" ) ); - } - $edit = "$user_object->user_login
    "; +function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) { + global $post_ID; - // Set up the hover actions for this user - $actions = array(); + if ( $post_ID ) + $checked_terms = wp_get_object_terms($post_ID, $taxonomy, array('fields'=>'ids')); + else + $checked_terms = array(); - if ( current_user_can('edit_user', $user_object->ID) ) { - $edit = "$user_object->user_login
    "; - $actions['edit'] = '' . __('Edit') . ''; - } else { - $edit = "$user_object->user_login
    "; - } + $terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) ); - if ( !is_multisite() && $current_user->ID != $user_object->ID && current_user_can('delete_user', $user_object->ID) ) - $actions['delete'] = "" . __('Delete') . ""; - if ( is_multisite() && $current_user->ID != $user_object->ID && current_user_can('remove_user', $user_object->ID) ) - $actions['remove'] = "" . __('Remove') . ""; - $actions = apply_filters('user_row_actions', $actions, $user_object); - $action_count = count($actions); - $i = 0; - $edit .= '
    '; - foreach ( $actions as $action => $link ) { - ++$i; - ( $i == $action_count ) ? $sep = '' : $sep = ' | '; - $edit .= "$link$sep"; - } - $edit .= '
    '; + $tax = get_taxonomy($taxonomy); + if ( ! current_user_can($tax->cap->assign_terms) ) + $disabled = 'disabled="disabled"'; + else + $disabled = ''; - // Set up the checkbox (because the user is editable, otherwise its empty) - $checkbox = ""; + $popular_ids = array(); + foreach ( (array) $terms as $term ) { + $popular_ids[] = $term->term_id; + if ( !$echo ) // hack for AJAX use + continue; + $id = "popular-$taxonomy-$term->term_id"; + $checked = in_array( $term->term_id, $checked_terms ) ? 'checked="checked"' : ''; + ?> - } else { - $edit = '' . $user_object->user_login . ''; - } - $role_name = isset($wp_roles->role_names[$role]) ? translate_user_role($wp_roles->role_names[$role] ) : __('None'); - $r = ""; - $columns = get_column_headers('users'); - $hidden = get_hidden_columns('users'); - $avatar = get_avatar( $user_object->ID, 32 ); - foreach ( $columns as $column_name => $column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; + - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - case 'cb': - $r .= "$checkbox"; - break; - case 'username': - $r .= "$avatar $edit"; - break; - case 'name': - $r .= "$user_object->first_name $user_object->last_name"; - break; - case 'email': - $r .= "$email"; - break; - case 'role': - $r .= "$role_name"; - break; - case 'posts': - $attributes = 'class="posts column-posts num"' . $style; - $r .= ""; - if ( $numposts > 0 ) { - $r .= ""; - $r .= $numposts; - $r .= ''; - } else { - $r .= 0; - } - $r .= ""; - break; - default: - $r .= ""; - $r .= apply_filters('manage_users_custom_column', '', $column_name, $user_object->ID); - $r .= ""; - } + '; - - return $r; + return $popular_ids; } /** * {@internal Missing Short Description}} * - * @since unknown + * @since 2.5.1 * - * @param string $status Comment status (approved, spam, trash, etc) - * @param string $s Term to search for - * @param int $start Offset to start at for pagination - * @param int $num Maximum number of comments to return - * @param int $post Post ID or 0 to return all comments - * @param string $type Comment type (comment, trackback, pingback, etc) - * @return array [0] contains the comments and [1] contains the total number of comments that match (ignoring $start and $num) + * @param unknown_type $link_id */ -function _wp_get_comment_list( $status = '', $s = false, $start, $num, $post = 0, $type = '' ) { - global $wpdb; +function wp_link_category_checklist( $link_id = 0 ) { + $default = 1; - $start = abs( (int) $start ); - $num = (int) $num; - $post = (int) $post; - $count = wp_count_comments(); - $index = ''; - - if ( 'moderated' == $status ) { - $approved = "c.comment_approved = '0'"; - $total = $count->moderated; - } elseif ( 'approved' == $status ) { - $approved = "c.comment_approved = '1'"; - $total = $count->approved; - } elseif ( 'spam' == $status ) { - $approved = "c.comment_approved = 'spam'"; - $total = $count->spam; - } elseif ( 'trash' == $status ) { - $approved = "c.comment_approved = 'trash'"; - $total = $count->trash; + if ( $link_id ) { + $checked_categories = wp_get_link_cats( $link_id ); + // No selected categories, strange + if ( ! count( $checked_categories ) ) + $checked_categories[] = $default; } else { - $approved = "( c.comment_approved = '0' OR c.comment_approved = '1' )"; - $total = $count->moderated + $count->approved; - $index = 'USE INDEX (c.comment_date_gmt)'; + $checked_categories[] = $default; } - if ( $post ) { - $total = ''; - $post = " AND c.comment_post_ID = '$post'"; - } else { - $post = ''; - } + $categories = get_terms( 'link_category', array( 'orderby' => 'name', 'hide_empty' => 0 ) ); - $orderby = "ORDER BY c.comment_date_gmt DESC LIMIT $start, $num"; + if ( empty( $categories ) ) + return; - if ( 'comment' == $type ) - $typesql = "AND c.comment_type = ''"; - elseif ( 'pings' == $type ) - $typesql = "AND ( c.comment_type = 'pingback' OR c.comment_type = 'trackback' )"; - elseif ( 'all' == $type ) - $typesql = ''; - elseif ( !empty($type) ) - $typesql = $wpdb->prepare("AND c.comment_type = %s", $type); - else - $typesql = ''; - - if ( !empty($type) ) - $total = ''; - - $query = "FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' "; - if ( $s ) { - $total = ''; - $s = $wpdb->escape($s); - $query .= "AND - (c.comment_author LIKE '%$s%' OR - c.comment_author_email LIKE '%$s%' OR - c.comment_author_url LIKE ('%$s%') OR - c.comment_author_IP LIKE ('%$s%') OR - c.comment_content LIKE ('%$s%') ) AND - $approved - $typesql"; - } else { - $query .= "AND $approved $post $typesql"; + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + $name = esc_html( apply_filters( 'the_category', $category->name ) ); + $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; + echo '"; } - - $comments = $wpdb->get_results("SELECT * $query $orderby"); - if ( '' === $total ) - $total = $wpdb->get_var("SELECT COUNT(c.comment_ID) $query"); - - update_comment_cache($comments); - - return array($comments, $total); } +// adds hidden fields with the data for use in the inline editor for posts and pages /** * {@internal Missing Short Description}} * - * @since unknown + * @since 2.7.0 * - * @param unknown_type $comment_id - * @param unknown_type $mode - * @param unknown_type $comment_status - * @param unknown_type $checkbox + * @param unknown_type $post */ -function _wp_comment_row( $comment_id, $mode, $comment_status, $checkbox = true, $from_ajax = false ) { - global $comment, $post, $_comment_pending_count; - $comment = get_comment( $comment_id ); - $post = get_post($comment->comment_post_ID); - $the_comment_status = wp_get_comment_status($comment->comment_ID); +function get_inline_data($post) { $post_type_object = get_post_type_object($post->post_type); - $user_can = current_user_can($post_type_object->cap->edit_post, $post->ID); - - $comment_url = esc_url(get_comment_link($comment->comment_ID)); - $author_url = get_comment_author_url(); - if ( 'http://' == $author_url ) - $author_url = ''; - $author_url_display = preg_replace('|http://(www\.)?|i', '', $author_url); - if ( strlen($author_url_display) > 50 ) - $author_url_display = substr($author_url_display, 0, 49) . '...'; - - $ptime = date('G', strtotime( $comment->comment_date ) ); - if ( ( abs(time() - $ptime) ) < 86400 ) - $ptime = sprintf( __('%s ago'), human_time_diff( $ptime ) ); - else - $ptime = mysql2date(__('Y/m/d \a\t g:i A'), $comment->comment_date ); - - if ( $user_can ) { - $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); - $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); - - $approve_url = esc_url( "comment.php?action=approvecomment&p=$post->ID&c=$comment->comment_ID&$approve_nonce" ); - $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$post->ID&c=$comment->comment_ID&$approve_nonce" ); - $spam_url = esc_url( "comment.php?action=spamcomment&p=$post->ID&c=$comment->comment_ID&$del_nonce" ); - $unspam_url = esc_url( "comment.php?action=unspamcomment&p=$post->ID&c=$comment->comment_ID&$del_nonce" ); - $trash_url = esc_url( "comment.php?action=trashcomment&p=$post->ID&c=$comment->comment_ID&$del_nonce" ); - $untrash_url = esc_url( "comment.php?action=untrashcomment&p=$post->ID&c=$comment->comment_ID&$del_nonce" ); - $delete_url = esc_url( "comment.php?action=deletecomment&p=$post->ID&c=$comment->comment_ID&$del_nonce" ); - } + if ( ! current_user_can($post_type_object->cap->edit_post, $post->ID) ) + return; - echo ""; - $columns = get_column_headers('edit-comments'); - $hidden = get_hidden_columns('edit-comments'); - foreach ( $columns as $column_name => $column_display_name ) { - $class = "class=\"$column_name column-$column_name\""; + $title = esc_textarea( trim( $post->post_title ) ); - $style = ''; - if ( in_array($column_name, $hidden) ) - $style = ' style="display:none;"'; - - $attributes = "$class$style"; - - switch ($column_name) { - case 'cb': - if ( !$checkbox ) break; - echo ''; - if ( $user_can ) echo ""; - echo ''; - break; - case 'comment': - echo ""; - echo '
    '; - /* translators: 2: comment date, 3: comment time */ - printf( __( '%2$s at %3$s' ), $comment_url, - /* translators: comment date format. See http://php.net/date */ get_comment_date( __('Y/m/d') ), - /* translators: comment time format. See http://php.net/date */ get_comment_date( get_option( 'time_format' ) ) ); - - if ( $comment->comment_parent ) { - $parent = get_comment( $comment->comment_parent ); - $parent_link = esc_url( get_comment_link( $comment->comment_parent ) ); - $name = apply_filters( 'get_comment_author', $parent->comment_author ); // there's no API function for this - printf( ' | '.__( 'In reply to %2$s.' ), $parent_link, $name ); - } + echo ' +'; - comment_text(); - if ( $user_can ) { ?> - - hierarchical ) + echo '
    ' . $post->post_parent . '
    '; - if ( $user_can ) { - // preorder it: Approve | Reply | Quick Edit | Edit | Spam | Trash - $actions = array( - 'approve' => '', 'unapprove' => '', - 'reply' => '', - 'quickedit' => '', - 'edit' => '', - 'spam' => '', 'unspam' => '', - 'trash' => '', 'untrash' => '', 'delete' => '' - ); - - if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments - if ( 'approved' == $the_comment_status ) - $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; - else if ( 'unapproved' == $the_comment_status ) - $actions['approve'] = "" . __( 'Approve' ) . ''; - } else { - $actions['approve'] = "" . __( 'Approve' ) . ''; - $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; - } + if ( $post->post_type == 'page' ) + echo '
    ' . esc_html( get_post_meta( $post->ID, '_wp_page_template', true ) ) . '
    '; - if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { - $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; - } elseif ( 'spam' == $the_comment_status ) { - $actions['unspam'] = "" . _x( 'Not Spam', 'comment' ) . ''; - } elseif ( 'trash' == $the_comment_status ) { - $actions['untrash'] = "" . __( 'Restore' ) . ''; - } + if ( $post_type_object->hierarchical ) + echo ''; - if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) { - $actions['delete'] = "" . __('Delete Permanently') . ''; - } else { - $actions['trash'] = "" . _x('Trash', 'verb') . ''; - } + $taxonomy_names = get_object_taxonomies( $post->post_type ); + foreach ( $taxonomy_names as $taxonomy_name) { + $taxonomy = get_taxonomy( $taxonomy_name ); - if ( 'trash' != $the_comment_status ) { - $actions['edit'] = "". __('Edit') . ''; - $actions['quickedit'] = '' . __('Quick Edit') . ''; - if ( 'spam' != $the_comment_status ) - $actions['reply'] = '' . __('Reply') . ''; - } + if ( $taxonomy->hierarchical && $taxonomy->show_ui ) + echo '
    ' . implode( ',', wp_get_object_terms( $post->ID, $taxonomy_name, array('fields'=>'ids')) ) . '
    '; + elseif ( $taxonomy->show_ui ) + echo '
    ' . esc_html( str_replace( ',', ', ', get_terms_to_edit($post->ID, $taxonomy_name) ) ) . '
    '; + } - $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment ); - - $i = 0; - echo '
    '; - foreach ( $actions as $action => $link ) { - ++$i; - ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; - - // Reply and quickedit need a hide-if-no-js span when not added with ajax - if ( ('reply' == $action || 'quickedit' == $action) && ! $from_ajax ) - $action .= ' hide-if-no-js'; - elseif ( ($action == 'untrash' && $the_comment_status == 'trash') || ($action == 'unspam' && $the_comment_status == 'spam') ) { - if ('1' == get_comment_meta($comment_id, '_wp_trash_meta_status', true)) - $action .= ' approve'; - else - $action .= ' unapprove'; - } - - echo "$sep$link"; - } - echo '
    '; - } + if ( !$post_type_object->hierarchical ) + echo '
    ' . (is_sticky($post->ID) ? 'sticky' : '') . '
    '; - echo ''; - break; - case 'author': - echo ""; comment_author(); echo '
    '; - if ( !empty($author_url) ) - echo "$author_url_display
    "; - if ( $user_can ) { - if ( !empty($comment->comment_author_email) ) { - comment_author_email_link(); - echo '
    '; - } - echo ''; - comment_author_IP(); - echo ''; - } //current_user_can - echo ''; - break; - case 'date': - echo "" . get_comment_date(__('Y/m/d \a\t g:ia')) . ''; - break; - case 'response': - if ( 'single' !== $mode ) { - if ( isset( $_comment_pending_count[$post->ID] ) ) { - $pending_comments = $_comment_pending_count[$post->ID]; - } else { - $_comment_pending_count_temp = get_pending_comments_num( array( $post->ID ) ); - $pending_comments = $_comment_pending_count[$post->ID] = $_comment_pending_count_temp[$post->ID]; - } - if ( $user_can ) { - $post_link = ""; - $post_link .= get_the_title($post->ID) . ''; - } else { - $post_link = get_the_title($post->ID); - } - echo "\n"; - echo ''; - if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array(80, 60), true ) ) ) - echo $thumb; - echo ''; - } - break; - default: - echo "\n"; - do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID ); - echo "\n"; - break; - } - } - echo "\n"; + if ( post_type_supports( $post->post_type, 'post-formats' ) ) + echo '
    ' . esc_html( get_post_format( $post->ID ) ) . '
    '; + + echo '
    '; } /** * {@internal Missing Short Description}} * - * @since unknown + * @since 2.7.0 * * @param unknown_type $position * @param unknown_type $checkbox * @param unknown_type $mode */ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', $table_row = true) { - global $current_user; - // allow plugin to replace the popup content $content = apply_filters( 'wp_comment_reply', '', array('position' => $position, 'checkbox' => $checkbox, 'mode' => $mode) ); @@ -2235,18 +298,20 @@ function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', return; } - $columns = get_column_headers('edit-comments'); - $hidden = array_intersect( array_keys( $columns ), array_filter( get_hidden_columns('edit-comments') ) ); - $col_count = count($columns) - count($hidden); + if ( $mode == 'single' ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } ?>
    -