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;
$category = get_category( $category );
$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 ) . "' class='delete:the-list:cat-$category->term_id delete'>".__( 'Delete' )." ";
else
$edit .= "".__( "Default" );
} else
$edit = '';
$class = " 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 link_cat_row( $category ) {
global $class;
if ( !$category = get_term( $category, 'link_category' ) )
return false;
if ( is_wp_error( $category ) )
return $category;
if ( current_user_can( 'manage_categories' ) ) {
$edit = "".__( 'Edit' )." ";
$default_cat_id = (int) get_option( 'default_link_category' );
$delete_url = wp_nonce_url( "link-category.php?action=delete&cat_ID=$category->term_id", "delete-link-category_$category->term_id" );
if ( $category->term_id != $default_cat_id )
$edit .= "" . __( 'Delete' ) . " ";
else
$edit .= "" . __( "Default" );
} else {
$edit = '';
}
$class = " class='alternate'" == $class ? '' : " class='alternate'";
$category->count = number_format_i18n( $category->count );
$count = ( $category->count > 0 ) ? "$category->count " : $category->count;
$output = "
$category->term_id
" . ( $name_override ? $name_override : $category->name ) . "
$category->description
$count
$edit \n\t \n";
return apply_filters( 'link_cat_row', $output );
}
function checked( $checked, $current) {
if ( $checked == $current)
echo ' checked="checked"';
}
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 wp_set_checked_post_categories( $default = 0 ) {
global $post_ID, $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;
}
}
}
function get_nested_categories( $default = 0, $parent = 0 ) {
global $checked_categories;
wp_set_checked_post_categories( $default = 0 );
if ( is_object($parent) ) { // Hack: if passed a category object, will return nested cats with parent as root
$root = array(
'children' => get_nested_categories( $default, $parent->term_id ),
'cat_ID' => $parent->term_id,
'checked' => in_array( $parent->term_id, $checked_categories ),
'cat_name' => get_the_category_by_ID( $parent->term_id )
);
$result = array( $parent->term_id => $root );
} else {
$parent = (int) $parent;
$cats = get_categories("parent=$parent&hide_empty=0&fields=ids");
$result = array();
if ( is_array( $cats ) ) {
foreach ( $cats as $cat ) {
$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 "\n", ' ', wp_specialchars( apply_filters('the_category', $category['cat_name'] )), ' ';
if ( $category['children'] ) {
echo "\n";
write_nested_categories( $category['children'] );
echo "\n ";
}
echo ' ';
}
}
function dropdown_categories( $default = 0, $parent = 0 ) {
write_nested_categories( get_nested_categories( $default, $parent ) );
}
function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10 ) {
$categories = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number ) );
foreach ( (array) $categories as $category ) {
$id = "popular-category-$category->term_id";
?>
name ) ); ?>
term_id;
$name = wp_specialchars( apply_filters('the_category', $category->name));
$checked = in_array( $cat_id, $checked_categories );
echo ' ', $name, " ";
}
}
// Tag stuff
// Returns a single tag row (see tag_rows below)
// Note: this is also used in admin-ajax.php!
function _tag_row( $tag, $class = '' ) {
$count = number_format_i18n( $tag->count );
$count = ( $count > 0 ) ? "$count " : $count;
$out = '';
$out .= '';
$out .= '' . $tag->term_id . ' ';
$out .= '' . apply_filters( 'term_name', $tag->name ) . ' ';
$out .= "$count ";
$out .= '' .
__( 'Edit' ) . " " .
'term_id",
'delete-tag_' . $tag->term_id ) .
'" class="delete:the-list:tag-' . $tag->term_id . ' delete">' .
__( 'Delete' ) . " ";
$out .= ' ';
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
function tag_rows( $page = 0, $pagesize = 20, $searchterms = '' ) {
// Get a page worth of tags
$start = $page * $pagesize;
$args = array('offset' => $start, 'number' => $pagesize, 'hide_empty' => 0);
if ( !empty( $searchterms ) ) {
$args['name__like'] = '%' . like_escape( $searchterms );
}
$tags = get_terms( 'post_tag', $args );
// convert it to table rows
$out = '';
$class = '';
$i = 0;
$count = 0;
foreach( $tags as $tag ) {
if( $i ) {
$i = 0;
$class = ' class="alternate"';
} else {
$i = 1;
$class = '';
}
$out .= _tag_row( $tag, $class );
$count++;
}
// filter and send to screen
$out = apply_filters('tag_rows', $out);
echo $out;
return $count;
}
// define the columns to display, the syntax is 'internal name' => 'display name'
function wp_manage_posts_columns() {
$posts_columns = array();
$posts_columns['id'] = '' . __('ID') . '
';
if ( 'draft' === $_GET['post_status'] )
$posts_columns['modified'] = __('Modified');
elseif ( 'pending' === $_GET['post_status'] )
$posts_columns['modified'] = __('Submitted');
else
$posts_columns['date'] = __('When');
$posts_columns['title'] = __('Title');
$posts_columns['categories'] = __('Categories');
if ( !in_array($_GET['post_status'], array('pending', 'draft', 'future')) )
$posts_columns['comments'] = '' . __('Comments') . '
';
$posts_columns['author'] = __('Author');
$posts_columns = apply_filters('manage_posts_columns', $posts_columns);
// you can not edit these at the moment
$posts_columns['control_view'] = '';
$posts_columns['control_edit'] = '';
$posts_columns['control_delete'] = '';
return $posts_columns;
}
/*
* display one row if the page doesn't have any children
* otherwise, display the row and its children in subsequent rows
*/
function display_page_row( $page, &$children_pages, $level = 0 ) {
global $post;
static $class;
$post = $page;
setup_postdata($page);
$page->post_title = wp_specialchars( $page->post_title );
$pad = str_repeat( '— ', $level );
$id = (int) $page->ID;
$class = ('alternate' == $class ) ? '' : 'alternate';
?>
ID; ?>
post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $page->post_modified ); ?>
" . __( 'Edit' ) . ""; } ?>
" . __( 'Delete' ) . ""; } ?>
post_parent == $id ) {
array_splice($children_pages, $i, 1);
display_page_row($child, $children_pages, $level+1);
$i = -1; //as numeric keys in $children_pages are not preserved after splice
}
}
}
/*
* displays pages in hierarchical order
*/
function page_rows( $pages ) {
if ( ! $pages )
$pages = get_pages( 'sort_column=menu_order' );
if ( ! $pages )
return false;
// splice pages into two parts: those without parent and those with parent
$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->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_parent = '0' WHERE ID = %d", $page->ID) );
clean_page_cache( $page->ID );
}
if ( 0 == $page->post_parent )
$top_level_pages[] = $page;
else
$children_pages[] = $page;
}
foreach ( $top_level_pages as $page )
display_page_row($page, $children_pages, 0);
/*
* display the remaining children_pages which are orphans
* having orphan requires parental attention
*/
if ( count($children_pages) > 0 ) {
$empty_array = array();
foreach ( $children_pages as $orphan_page ) {
clean_page_cache( $orphan_page->ID);
display_page_row( $orphan_page, $empty_array, 0 );
}
}
}
function user_row( $user_object, $style = '', $role = '' ) {
if ( !( is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) )
$user_object = new WP_User( (int) $user_object );
$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 ).'...';
$numposts = get_usernumposts( $user_object->ID );
$r = "
{$user_object->ID}
$user_object->user_login
$user_object->first_name $user_object->last_name
$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 ( 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;
$comment =& get_comment( $id );
$id = (int) $comment->comment_ID;
$class = '';
$post = get_post($comment->comment_post_ID);
$authordata = get_userdata($post->post_author);
$comment_status = wp_get_comment_status($id);
if ( 'unapproved' == $comment_status )
$class .= ' unapproved';
if ( $alt % 2 )
$class .= ' alternate';
echo "
term_id && $parent == $category->parent) {
$pad = str_repeat( '– ', $level );
$category->name = wp_specialchars( $category->name );
echo "\n\tterm_id )
echo " selected='selected'";
echo ">$pad$category->name ";
wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories );
}
}
} else {
return false;
}
}
function list_meta( $meta ) {
// Exit if no meta
if (!$meta ) {
echo ' '; //TBODY needed for list-manipulation JS
return;
}
$count = 0;
?>
";
}
function _list_meta_row( $entry, &$count ) {
$r = '';
++ $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;
return;
}
}
$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 ";
return $r;
}
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 ' '.__( 'Edit timestamp' ).' ';
$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 "\n";
for ( $i = 1; $i < 13; $i = $i +1 ) {
echo "\t\t\t' . $wp_locale->get_month( $i ) . " \n";
}
?>
/>
/> @
/> :
/>
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$pad " . wp_specialchars($item->post_title) . " ";
parent_dropdown( $default, $item->ID, $level +1 );
}
} else {
return false;
}
}
function browse_happy() {
$getit = __( 'WordPress recommends a better browser' );
echo '
';
}
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)
add_action( 'in_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$name ";
else
$r .= "\n\t$name ";
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_max_upload_size() {
$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( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes );
return $bytes;
}
function wp_import_upload_form( $action ) {
$bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() );
$size = wp_convert_bytes_to_hr( $bytes );
?>
()
post_name); // just in case
if ( strlen($name) )
echo ' ';
}
?>