From 3a4570b0fc8b3d6339bef71d17d7701554e0bbf7 Mon Sep 17 00:00:00 2001 From: donncha Date: Fri, 12 Oct 2007 16:21:15 +0000 Subject: Merge with WP 2.3 - testing use only! Move pluggable functions out of wpmu-functions and into pluggable.php, fixes #439 git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@1069 7be80a69-a1ef-0310-a953-fb0f7c49ff36 --- wp-admin/includes/template.php | 626 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 626 insertions(+) create mode 100644 wp-admin/includes/template.php (limited to 'wp-admin/includes/template.php') diff --git a/wp-admin/includes/template.php b/wp-admin/includes/template.php new file mode 100644 index 0000000..1cf9284 --- /dev/null +++ b/wp-admin/includes/template.php @@ -0,0 +1,626 @@ +term_id == 0 ) { + $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); + continue; + } + if ( $category->parent == $parent) { + echo "\t" . _cat_row( $category, $level ); + if ( isset($children[$category->term_id]) ) + cat_rows( $category->term_id, $level +1, $categories ); + } + } + $output = ob_get_contents(); + ob_end_clean(); + + $output = apply_filters('cat_rows', $output); + + echo $output; + } else { + return false; + } +} + +function _cat_row( $category, $level, $name_override = false ) { + global $class; + + $pad = str_repeat( '— ', $level ); + if ( current_user_can( 'manage_categories' ) ) { + $edit = "".__( 'Edit' ).""; + $default_cat_id = (int) get_option( 'default_category' ); + + if ( $category->term_id != $default_cat_id ) + $edit .= "term_id ) . "' onclick=\"return deleteSomething( 'cat', $category->term_id, '" . js_escape(sprintf( __("You are about to delete the category '%s'.\nAll posts that were only assigned to this category will be assigned to the '%s' category.\nAll links that were only assigned to this category will be assigned to the '%s' category.\n'OK' to delete, 'Cancel' to stop." ), $category->name, get_catname( $default_cat_id ), get_catname( $default_link_cat_id ) )) . "' );\" class='delete'>".__( 'Delete' ).""; + else + $edit .= "".__( "Default" ); + } else + $edit = ''; + + $class = ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || " class='alternate'" == $class ) ? '' : " class='alternate'"; + + $category->count = number_format_i18n( $category->count ); + $posts_count = ( $category->count > 0 ) ? "$category->count" : $category->count; + $output = " + $category->term_id + " . ( $name_override ? $name_override : $pad . ' ' . $category->name ) . " + $category->description + $posts_count + $edit\n\t\n"; + + return apply_filters('cat_row', $output); +} + +function checked( $checked, $current) { + if ( $checked == $current) + echo ' checked="checked"'; +} + +// TODO: Remove? +function documentation_link( $for ) { + return; +} + +function selected( $selected, $current) { + if ( $selected == $current) + echo ' selected="selected"'; +} + +// +// Nasty Category Stuff +// + +function sort_cats( $cat1, $cat2 ) { + if ( $cat1['checked'] || $cat2['checked'] ) + return ( $cat1['checked'] && !$cat2['checked'] ) ? -1 : 1; + else + return strcasecmp( $cat1['cat_name'], $cat2['cat_name'] ); +} + +function get_nested_categories( $default = 0, $parent = 0 ) { + global $post_ID, $mode, $wpdb, $checked_categories; + + if ( empty($checked_categories) ) { + if ( $post_ID ) { + $checked_categories = wp_get_post_categories($post_ID); + + if ( count( $checked_categories ) == 0 ) { + // No selected categories, strange + $checked_categories[] = $default; + } + } else { + $checked_categories[] = $default; + } + } + + $cats = get_categories("parent=$parent&hide_empty=0&fields=ids"); + + $result = array (); + if ( is_array( $cats ) ) { + foreach ( $cats as $cat) { + if ( $cat == 0 ) { + $wpdb->query("DELETE FROM $wpdb->terms WHERE term_id = 0"); + continue; + } + $result[$cat]['children'] = get_nested_categories( $default, $cat); + $result[$cat]['cat_ID'] = $cat; + $result[$cat]['checked'] = in_array( $cat, $checked_categories ); + $result[$cat]['cat_name'] = get_the_category_by_ID( $cat); + } + } + + $result = apply_filters('get_nested_categories', $result); + usort( $result, 'sort_cats' ); + + return $result; +} + +function write_nested_categories( $categories ) { + foreach ( $categories as $category ) { + echo '
  • "; + + if ( $category['children'] ) { + echo "\n"; + } + } +} + +function dropdown_categories( $default = 0 ) { + write_nested_categories( get_nested_categories( $default) ); +} + +function dropdown_link_categories( $default = 0 ) { + global $link_id; + + if ( $link_id ) { + $checked_categories = wp_get_link_cats($link_id); + + if ( count( $checked_categories ) == 0 ) { + // No selected categories, strange + $checked_categories[] = $default; + } + } else { + $checked_categories[] = $default; + } + + $categories = get_terms('link_category', 'orderby=count&hide_empty=0'); + + if ( empty($categories) ) + return; + + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + $name = wp_specialchars( apply_filters('the_category', $category->name)); + $checked = in_array( $cat_id, $checked_categories ); + echo '"; + } +} + +function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) { + global $wpdb, $class, $post; + + if (!$pages ) + $pages = get_pages( 'sort_column=menu_order' ); + + if (! $pages ) + return false; + + foreach ( $pages as $post) { + setup_postdata( $post); + if ( $hierarchy && ($post->post_parent != $parent) ) + continue; + + $post->post_title = wp_specialchars( $post->post_title ); + $pad = str_repeat( '— ', $level ); + $id = (int) $post->ID; + $class = ('alternate' == $class ) ? '' : 'alternate'; +?> + + ID; ?> + + + + + post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $post->post_modified ); ?> + + " . __( 'Edit' ) . ""; } ?> + " . __( 'Delete' ) . ""; } ?> + + +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 ).'...'; + $numposts = get_usernumposts( $user_object->ID ); + $r = " + + + + $email + $short_url"; + $r .= "\n\t\t"; + if ( $numposts > 0 ) { + $r .= ""; + $r .= sprintf(__ngettext( 'View %s post', 'View %s posts', $numposts ), $numposts); + $r .= ''; + } + $r .= "\n\t\t"; + if ( ( is_site_admin() || $current_user->ID == $user_object->ID ) && current_user_can( 'edit_user', $user_object->ID ) ) { + $edit_link = add_query_arg( 'wp_http_referer', urlencode( clean_url( stripslashes( $_SERVER['REQUEST_URI'] ) ) ), "user-edit.php?user_id=$user_object->ID" ); + $r .= "".__( 'Edit' ).""; + } + $r .= "\n\t"; + return $r; +} + +function _wp_get_comment_list( $s = false, $start, $num ) { + global $wpdb; + + $start = abs( (int) $start ); + $num = (int) $num; + + if ( $s ) { + $s = $wpdb->escape($s); + $comments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE + (comment_author LIKE '%$s%' OR + comment_author_email LIKE '%$s%' OR + comment_author_url LIKE ('%$s%') OR + comment_author_IP LIKE ('%$s%') OR + comment_content LIKE ('%$s%') ) AND + comment_approved != 'spam' + ORDER BY comment_date DESC LIMIT $start, $num"); + } else { + $comments = $wpdb->get_results( "SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments WHERE comment_approved = '0' OR comment_approved = '1' ORDER BY comment_date DESC LIMIT $start, $num" ); + } + + update_comment_cache($comments); + + $total = $wpdb->get_var( "SELECT FOUND_ROWS()" ); + + return array($comments, $total); +} + +function _wp_comment_list_item( $id, $alt = 0 ) { + global $authordata, $comment, $wpdb; + $id = (int) $id; + $comment =& get_comment( $id ); + $class = ''; + $post = get_post($comment->comment_post_ID); + $authordata = get_userdata($post->post_author); + $comment_status = wp_get_comment_status($comment->comment_ID); + if ( 'unapproved' == $comment_status ) + $class .= ' unapproved'; + if ( $alt % 2 ) + $class .= ' alternate'; + echo "
  • "; +?> +

    comment_author_email) { ?>| comment_author_url && 'http://' != $comment->comment_author_url) { ?> | |

    + + + +

    — [ +comment_post_ID) ) { + echo " " . __('Edit') . ''; + echo ' | comment_author)) . "', theCommentList );\">" . __('Delete') . ' '; + if ( ('none' != $comment_status) && ( current_user_can('moderate_comments') ) ) { + echo ' | ' . __('Unapprove') . ' '; + echo ' | ' . __('Approve') . ' '; + } + echo " | comment_post_ID . "&c=" . $comment->comment_ID, 'delete-comment_' . $comment->comment_ID) . "\" onclick=\"return deleteSomething( 'comment-as-spam', $comment->comment_ID, '" . js_escape(sprintf(__("You are about to mark as spam this comment by '%s'.\n'Cancel' to stop, 'OK' to mark as spam."), $comment->comment_author)) . "', theCommentList );\">" . __('Spam') . " "; +} +$post = get_post($comment->comment_post_ID, OBJECT, 'display'); +$post_title = wp_specialchars( $post->post_title, 'double' ); +$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title; +?> + ] —

    +
  • +term_id && $parent == $category->parent) { + $pad = str_repeat( '– ', $level ); + $category->name = wp_specialchars( $category->name ); + echo "\n\t"; + wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); + } + } + } else { + return false; + } +} + +function list_meta( $meta ) { + global $post_ID; + // Exit if no meta + if (!$meta ) { + echo ' '; //TBODY needed for list-manipulation JS + return; + } + $count = 0; +?> + + + + + + + +"; + foreach ( $meta as $entry ) { + ++ $count; + if ( $count % 2 ) + $style = 'alternate'; + else + $style = ''; + if ('_' == $entry['meta_key'] { 0 } ) + $style .= ' hidden'; + + if ( is_serialized( $entry['meta_value'] ) ) { + if ( is_serialized_string( $entry['meta_value'] ) ) { + // this is a serialized string, so we should display it + $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] ); + } else { + // this is a serialized array/object so we should NOT display it + --$count; + continue; + } + } + + $key_js = js_escape( $entry['meta_key'] ); + $entry['meta_key'] = attribute_escape($entry['meta_key']); + $entry['meta_value'] = attribute_escape($entry['meta_value']); + $entry['meta_id'] = (int) $entry['meta_id']; + $r .= "\n\t"; + $r .= "\n\t\t"; + $r .= "\n\t\t"; + $r .= "\n\t\t
    "; + $r .= "\n\t\t"; + $r .= "\n\t"; + } + echo $r; + echo "\n\t"; +} + +function meta_form() { + global $wpdb; + $limit = (int) apply_filters( 'postmeta_form_limit', 30 ); + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + WHERE meta_key NOT LIKE '\_%' + GROUP BY meta_key + ORDER BY meta_id DESC + LIMIT $limit" ); + if ( $keys ) + natcasesort($keys); +?> +

    + + + + + + + + + + + +
    + + + +
    +

    +post_status, array('draft', 'pending') ) && (!$post->post_date || '0000-00-00 00:00:00' == $post->post_date ) ) ? false : true; + + $tab_index_attribute = ''; + if ( (int) $tab_index > 0 ) + $tab_index_attribute = " tabindex=\"$tab_index\""; + + echo '
    '; + + $time_adj = time() + (get_option( 'gmt_offset' ) * 3600 ); + $post_date = ($for_post) ? $post->post_date : $comment->comment_date; + $jj = ($edit) ? mysql2date( 'd', $post_date ) : gmdate( 'd', $time_adj ); + $mm = ($edit) ? mysql2date( 'm', $post_date ) : gmdate( 'm', $time_adj ); + $aa = ($edit) ? mysql2date( 'Y', $post_date ) : gmdate( 'Y', $time_adj ); + $hh = ($edit) ? mysql2date( 'H', $post_date ) : gmdate( 'H', $time_adj ); + $mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj ); + $ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj ); + + echo " + /> + /> @ + /> : + /> + +get_month( $mm ), $jj, $aa, $hh, $mn ); + } +?> +
    + $template"; + endforeach; +} + +function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) { + global $wpdb, $post_ID; + $items = $wpdb->get_results( "SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_type = 'page' ORDER BY menu_order" ); + + if ( $items ) { + foreach ( $items as $item ) { + // A page cannot be its own parent. + if (!empty ( $post_ID ) ) { + if ( $item->ID == $post_ID ) { + continue; + } + } + $pad = str_repeat( ' ', $level * 3 ); + if ( $item->ID == $default) + $current = ' selected="selected"'; + else + $current = ''; + + echo "\n\t"; + parent_dropdown( $default, $item->ID, $level +1 ); + } + } else { + return false; + } +} + +function browse_happy() { + $getit = __( 'WordPress recommends a better browser' ); + echo ' +

    Browse Happy

    + '; +} + +if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) + add_action( 'admin_footer', 'browse_happy' ); + +function the_attachment_links( $id = false ) { + $id = (int) $id; + $post = & get_post( $id ); + + if ( $post->post_type != 'attachment' ) + return false; + + $icon = get_attachment_icon( $post->ID ); + $attachment_data = wp_get_attachment_metadata( $id ); + $thumb = isset( $attachment_data['thumb'] ); +?> + +role_names) as $role => $name ) + if ( $default == $role ) // Make default first in list + $p = "\n\t"; + else + $r .= "\n\t"; + echo $p . $r; +} + +function wp_convert_hr_to_bytes( $size ) { + $size = strtolower($size); + $bytes = (int) $size; + if ( strpos($size, 'k') !== false ) + $bytes = intval($size) * 1024; + elseif ( strpos($size, 'm') !== false ) + $bytes = intval($size) * 1024 * 1024; + elseif ( strpos($size, 'g') !== false ) + $bytes = intval($size) * 1024 * 1024 * 1024; + return $bytes; +} + +function wp_convert_bytes_to_hr( $bytes ) { + $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' ); + $log = log( $bytes, 1024 ); + $power = (int) $log; + $size = pow(1024, $log - $power); + return $size . $units[$power]; +} + +function wp_import_upload_form( $action ) { + $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) ); + $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ); + $bytes = apply_filters( 'import_upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes ); + $size = wp_convert_bytes_to_hr( $bytes ); +?> +
    +

    + + () + + + +

    +

    + +

    +
    +post_name); // just in case + if ( strlen($name) ) + echo ''; +} + +?> -- cgit