2007-05-25 09:16:21 +02:00
< ? php
//
// Big Mess
//
// Dandy new recursive multiple category stuff.
function cat_rows ( $parent = 0 , $level = 0 , $categories = 0 ) {
2008-02-12 10:02:02 +01:00
if ( ! $categories ) {
$args = array ( 'hide_empty' => 0 );
if ( ! empty ( $_GET [ 's' ]) )
$args [ 'search' ] = $_GET [ 's' ];
$categories = get_categories ( $args );
}
2007-05-25 09:16:21 +02:00
$children = _get_term_hierarchy ( 'category' );
if ( $categories ) {
ob_start ();
foreach ( $categories as $category ) {
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 ;
2007-10-31 04:53:32 +01:00
$category = get_category ( $category );
2007-05-25 09:16:21 +02:00
$pad = str_repeat ( '— ' , $level );
if ( current_user_can ( 'manage_categories' ) ) {
2008-02-24 03:07:51 +01:00
$edit = " <a class='row-title' href='categories.php?action=edit&cat_ID= $category->term_id '> " . ( $name_override ? $name_override : $pad . ' ' . $category -> name ) . " </a> " ;
2007-05-25 09:16:21 +02:00
$default_cat_id = ( int ) get_option ( 'default_category' );
2008-02-12 10:02:02 +01:00
} else {
$edit = ( $name_override ? $name_override : $pad . ' ' . $category -> name );
}
2007-05-25 09:16:21 +02:00
2007-10-31 04:53:32 +01:00
$class = " class='alternate' " == $class ? '' : " class='alternate' " ;
2007-05-25 09:16:21 +02:00
$category -> count = number_format_i18n ( $category -> count );
$posts_count = ( $category -> count > 0 ) ? " <a href='edit.php?cat= $category->term_id '> $category->count </a> " : $category -> count ;
2007-09-12 03:08:19 +02:00
$output = " <tr id='cat- $category->term_id ' $class >
2008-02-20 10:29:27 +01:00
< th scope = 'row' class = 'check-column' >< input type = 'checkbox' name = 'delete[]' value = '$category->term_id' /></ th >
2008-02-12 10:02:02 +01:00
< td > $edit </ td >
2007-05-25 09:16:21 +02:00
< td > $category -> description </ td >
2008-02-29 18:09:44 +01:00
< td style = 'text-align: center;' > $posts_count </ td > \n\t </ tr > \n " ;
2007-09-12 03:08:19 +02:00
return apply_filters ( 'cat_row' , $output );
2007-05-25 09:16:21 +02:00
}
2007-10-31 04:53:32 +01:00
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' ) ) {
2008-02-24 03:07:51 +01:00
$edit = " <a class='row-title' href='link-category.php?action=edit&cat_ID= $category->term_id ' class='edit'> " . ( $name_override ? $name_override : $category -> name ) . " </a> " ;
2007-10-31 04:53:32 +01:00
$default_cat_id = ( int ) get_option ( 'default_link_category' );
} else {
2008-02-13 08:32:50 +01:00
$edit = ( $name_override ? $name_override : $category -> name );
2007-10-31 04:53:32 +01:00
}
$class = " class='alternate' " == $class ? '' : " class='alternate' " ;
$category -> count = number_format_i18n ( $category -> count );
$count = ( $category -> count > 0 ) ? " <a href='link-manager.php?cat_id= $category->term_id '> $category->count </a> " : $category -> count ;
2008-02-13 08:32:50 +01:00
$output = " <tr id='link-cat- $category->term_id ' $class > " .
2008-02-20 10:29:27 +01:00
'<th scope="row" class="check-column"> <input type="checkbox" name="delete[]" value="' . $category -> term_id . '" /></th>' .
2008-02-13 08:32:50 +01:00
" <td> $edit </td>
2007-10-31 04:53:32 +01:00
< td > $category -> description </ td >
2008-02-29 18:09:44 +01:00
< td style = 'text-align: center;' > $count </ td ></ tr > " ;
2007-10-31 04:53:32 +01:00
return apply_filters ( 'link_cat_row' , $output );
}
2007-05-25 09:16:21 +02:00
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' ] );
}
2008-01-10 10:39:35 +01:00
function wp_set_checked_post_categories ( $default = 0 ) {
2007-12-06 07:37:30 +01:00
global $post_ID , $checked_categories ;
2007-05-25 09:16:21 +02:00
2007-05-31 05:44:18 +02:00
if ( empty ( $checked_categories ) ) {
if ( $post_ID ) {
$checked_categories = wp_get_post_categories ( $post_ID );
2007-05-25 09:16:21 +02:00
2007-05-31 05:44:18 +02:00
if ( count ( $checked_categories ) == 0 ) {
// No selected categories, strange
$checked_categories [] = $default ;
}
} else {
2007-05-25 09:16:21 +02:00
$checked_categories [] = $default ;
}
}
2008-01-10 10:39:35 +01:00
}
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 ,
2008-01-10 21:19:58 +01:00
'checked' => in_array ( $parent -> term_id , $checked_categories ),
2008-01-10 10:39:35 +01:00
'cat_name' => get_the_category_by_ID ( $parent -> term_id )
);
$result = array ( $parent -> term_id => $root );
} else {
$parent = ( int ) $parent ;
2007-05-25 09:16:21 +02:00
2008-01-10 10:39:35 +01:00
$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 );
}
2007-05-25 09:16:21 +02:00
}
}
$result = apply_filters ( 'get_nested_categories' , $result );
usort ( $result , 'sort_cats' );
return $result ;
}
function write_nested_categories ( $categories ) {
foreach ( $categories as $category ) {
2007-12-16 22:40:36 +01:00
echo " \n " , '<li id="category-' , $category [ 'cat_ID' ], '"><label for="in-category-' , $category [ 'cat_ID' ], '" class="selectit"><input value="' , $category [ 'cat_ID' ], '" type="checkbox" name="post_category[]" id="in-category-' , $category [ 'cat_ID' ], '"' , ( $category [ 'checked' ] ? ' checked="checked"' : " " ), '/> ' , wp_specialchars ( apply_filters ( 'the_category' , $category [ 'cat_name' ] )), '</label>' ;
2007-05-25 09:16:21 +02:00
if ( $category [ 'children' ] ) {
2007-12-16 22:40:36 +01:00
echo " \n <ul> " ;
2007-05-25 09:16:21 +02:00
write_nested_categories ( $category [ 'children' ] );
2007-12-16 22:40:36 +01:00
echo " \n </ul> " ;
2007-05-25 09:16:21 +02:00
}
2007-12-16 22:40:36 +01:00
echo '</li>' ;
2007-05-25 09:16:21 +02:00
}
}
2008-01-10 10:39:35 +01:00
function dropdown_categories ( $default = 0 , $parent = 0 ) {
write_nested_categories ( get_nested_categories ( $default , $parent ) );
}
2008-02-02 21:31:56 +01:00
function wp_popular_terms_checklist ( $taxonomy , $default = 0 , $number = 10 ) {
$categories = get_terms ( $taxonomy , array ( 'orderby' => 'count' , 'order' => 'DESC' , 'number' => $number ) );
2008-01-10 10:39:35 +01:00
foreach ( ( array ) $categories as $category ) {
$id = " popular-category- $category->term_id " ;
?>
< li id = " <?php echo $id ; ?> " >
< label class = " selectit " for = " in-<?php echo $id ; ?> " >
2008-01-10 23:42:49 +01:00
< input id = " in-<?php echo $id ; ?> " type = " checkbox " value = " <?php echo (int) $category->term_id ; ?> " />
2008-01-10 10:39:35 +01:00
< ? php echo wp_specialchars ( apply_filters ( 'the_category' , $category -> name ) ); ?>
</ label >
</ li >
< ? php
}
2007-05-25 09:16:21 +02:00
}
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' );
2007-06-14 04:25:30 +02:00
2007-05-25 09:16:21 +02:00
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 );
2007-06-02 04:53:09 +02:00
echo '<li id="link-category-' , $cat_id , '"><label for="in-link-category-' , $cat_id , '" class="selectit"><input value="' , $cat_id , '" type="checkbox" name="link_category[]" id="in-link-category-' , $cat_id , '"' , ( $checked ? ' checked="checked"' : " " ), '/> ' , $name , " </label></li> " ;
2007-05-25 09:16:21 +02:00
}
}
2008-01-25 20:29:01 +01:00
// 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 ) ? " <a href='edit.php?tag= $tag->slug '> $count </a> " : $count ;
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
$out = '' ;
$out .= '<tr id="tag-' . $tag -> term_id . '"' . $class . '>' ;
2008-02-20 10:29:27 +01:00
$out .= '<th scope="row" class="check-column"> <input type="checkbox" name="delete_tags[]" value="' . $tag -> term_id . '" /></th>' ;
2008-02-24 03:07:51 +01:00
$out .= '<td><strong><a class="row-title" href="edit-tags.php?action=edit&tag_ID=' . $tag -> term_id . '">' .
2008-02-22 18:30:43 +01:00
apply_filters ( 'term_name' , $tag -> name ) . '</a></td>' ;
2008-01-25 20:29:01 +01:00
2008-02-05 07:47:27 +01:00
$out .= " <td> $count </td> " ;
2008-01-25 20:29:01 +01:00
$out .= '</tr>' ;
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
return $out ;
}
// Outputs appropriate rows for the Nth page of the Tag Management screen,
2008-02-05 07:47:27 +01:00
// assuming M tags displayed at a time on the page
2008-01-25 20:29:01 +01:00
// Returns the number of tags displayed
2008-02-12 10:25:19 +01:00
function tag_rows ( $page = 1 , $pagesize = 20 , $searchterms = '' ) {
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
// Get a page worth of tags
2008-02-12 10:25:19 +01:00
$start = ( $page - 1 ) * $pagesize ;
2008-01-28 18:21:14 +01:00
$args = array ( 'offset' => $start , 'number' => $pagesize , 'hide_empty' => 0 );
2008-02-05 07:47:27 +01:00
2008-01-29 18:20:27 +01:00
if ( ! empty ( $searchterms ) ) {
2008-02-12 10:25:19 +01:00
$args [ 'search' ] = $searchterms ;
2008-01-29 18:20:27 +01:00
}
2008-01-28 18:21:14 +01:00
$tags = get_terms ( 'post_tag' , $args );
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
// convert it to table rows
$out = '' ;
$class = '' ;
$count = 0 ;
2008-02-27 01:46:27 +01:00
foreach ( $tags as $tag )
$out .= _tag_row ( $tag , ++ $count % 2 ? ' class="alternate"' : '' );
2008-02-05 07:47:27 +01:00
2008-01-25 20:29:01 +01:00
// filter and send to screen
$out = apply_filters ( 'tag_rows' , $out );
echo $out ;
return $count ;
}
2007-10-10 00:49:42 +02:00
// define the columns to display, the syntax is 'internal name' => 'display name'
function wp_manage_posts_columns () {
$posts_columns = array ();
2008-02-13 21:53:18 +01:00
$posts_columns [ 'cb' ] = '<div style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" /></div>' ;
2007-10-10 00:49:42 +02:00
if ( 'draft' === $_GET [ 'post_status' ] )
$posts_columns [ 'modified' ] = __ ( 'Modified' );
elseif ( 'pending' === $_GET [ 'post_status' ] )
$posts_columns [ 'modified' ] = __ ( 'Submitted' );
else
2008-02-10 09:10:11 +01:00
$posts_columns [ 'date' ] = __ ( 'Date' );
2007-10-10 00:49:42 +02:00
$posts_columns [ 'title' ] = __ ( 'Title' );
2008-02-10 09:10:11 +01:00
$posts_columns [ 'author' ] = __ ( 'Author' );
2007-10-10 00:49:42 +02:00
$posts_columns [ 'categories' ] = __ ( 'Categories' );
2008-02-10 09:10:11 +01:00
$posts_columns [ 'tags' ] = __ ( 'Tags' );
2007-10-10 00:49:42 +02:00
if ( ! in_array ( $_GET [ 'post_status' ], array ( 'pending' , 'draft' , 'future' )) )
2008-02-24 03:07:51 +01:00
$posts_columns [ 'comments' ] = '<img class="comment-column" alt="Comments" src="images/comment-grey-bubble.png" /></div>' ;
2008-02-10 09:10:11 +01:00
$posts_columns [ 'status' ] = __ ( 'Status' );
2007-10-10 00:49:42 +02:00
$posts_columns = apply_filters ( 'manage_posts_columns' , $posts_columns );
2008-02-12 06:51:53 +01:00
return $posts_columns ;
}
2008-02-19 07:13:20 +01:00
// define the columns to display, the syntax is 'internal name' => 'display name'
function wp_manage_media_columns () {
$posts_columns = array ();
$posts_columns [ 'cb' ] = '<div style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" /></div>' ;
$posts_columns [ 'icon' ] = '' ;
$posts_columns [ 'media' ] = _c ( 'Media|media column header' );
$posts_columns [ 'desc' ] = _c ( 'Description|media column header' );
$posts_columns [ 'date' ] = _c ( 'Date Added|media column header' );
$posts_columns [ 'parent' ] = _c ( 'Appears with|media column header' );
$posts_columns [ 'location' ] = _c ( 'Location|media column header' );
$posts_columns = apply_filters ( 'manage_media_columns' , $posts_columns );
return $posts_columns ;
}
2008-02-12 06:51:53 +01:00
function wp_manage_pages_columns () {
$posts_columns = array ();
2008-02-13 21:53:18 +01:00
$posts_columns [ 'cb' ] = '<div style="text-align: center"><input type="checkbox" onclick="checkAll(document.getElementById(\'posts-filter\'));" /></div>' ;
2008-02-12 06:51:53 +01:00
if ( 'draft' === $_GET [ 'post_status' ] )
$posts_columns [ 'modified' ] = __ ( 'Modified' );
elseif ( 'pending' === $_GET [ 'post_status' ] )
$posts_columns [ 'modified' ] = __ ( 'Submitted' );
else
$posts_columns [ 'date' ] = __ ( 'Date' );
$posts_columns [ 'title' ] = __ ( 'Title' );
$posts_columns [ 'author' ] = __ ( 'Author' );
if ( ! in_array ( $_GET [ 'post_status' ], array ( 'pending' , 'draft' , 'future' )) )
$posts_columns [ 'comments' ] = '<div style="text-align: center"><img alt="" src="images/comment-grey-bubble.png" /></div>' ;
$posts_columns [ 'status' ] = __ ( 'Status' );
$posts_columns = apply_filters ( 'manage_pages_columns' , $posts_columns );
2007-10-10 00:49:42 +02:00
return $posts_columns ;
}
2007-12-14 07:20:42 +01:00
/*
* 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 ;
2008-02-05 07:47:27 +01:00
2007-12-14 07:20:42 +01:00
$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' ;
2008-02-12 06:51:53 +01:00
$posts_columns = wp_manage_pages_columns ();
2007-05-25 09:16:21 +02:00
?>
2007-09-04 01:32:58 +02:00
< tr id = 'page-<?php echo $id; ?>' class = '<?php echo $class; ?>' >
2008-03-02 21:17:30 +01:00
2008-02-12 06:51:53 +01:00
< ? php
foreach ( $posts_columns as $column_name => $column_display_name ) {
switch ( $column_name ) {
case 'cb' :
?>
2008-02-20 10:29:27 +01:00
< th scope = " row " class = " check-column " >< input type = " checkbox " name = " delete[] " value = " <?php the_ID(); ?> " /></ th >
2008-02-12 06:51:53 +01:00
< ? php
break ;
case 'modified' :
case 'date' :
2008-02-20 08:01:36 +01:00
if ( '0000-00-00 00:00:00' == $page -> post_date && 'date' == $column_name ) {
$t_time = $h_time = __ ( 'Unpublished' );
2008-02-12 06:51:53 +01:00
} else {
2008-02-20 08:01:36 +01:00
if ( 'modified' == $column_name ) {
$t_time = get_the_modified_time ( __ ( 'Y/m/d g:i:s A' ));
$m_time = $page -> post_modified ;
2008-02-23 23:11:47 +01:00
$time = get_post_modified_time ( 'G' , true );
2008-02-20 08:01:36 +01:00
} else {
$t_time = get_the_time ( __ ( 'Y/m/d g:i:s A' ));
$m_time = $page -> post_date ;
2008-02-23 23:11:47 +01:00
$time = get_post_time ( 'G' , true );
2008-02-20 08:01:36 +01:00
}
if ( ( abs ( time () - $time ) ) < 86400 ) {
2008-02-12 06:51:53 +01:00
if ( ( 'future' == $page -> post_status ) )
2008-02-20 08:01:36 +01:00
$h_time = sprintf ( __ ( '%s from now' ), human_time_diff ( $time ) );
2008-02-12 06:51:53 +01:00
else
2008-02-20 08:01:36 +01:00
$h_time = sprintf ( __ ( '%s ago' ), human_time_diff ( $time ) );
2008-02-12 06:51:53 +01:00
} else {
2008-02-20 08:01:36 +01:00
$h_time = mysql2date ( __ ( 'Y/m/d' ), $m_time );
2008-02-12 06:51:53 +01:00
}
}
2008-02-20 08:01:36 +01:00
?>
< td >< a href = " <?php the_permalink(); ?> " rel = " permalink " title = " <?php echo $t_time ?> " >< ? php echo $h_time ?> </a></td>
2008-02-12 06:51:53 +01:00
< ? php
break ;
case 'title' :
2008-02-15 23:42:44 +01:00
$title = get_the_title ();
if ( empty ( $title ) )
$title = __ ( '(no title)' );
2008-02-12 06:51:53 +01:00
?>
2008-02-24 03:07:51 +01:00
< td >< strong >< a class = " row-title " href = " page.php?action=edit&post=<?php the_ID(); ?> " >< ? php echo $pad ; echo $title ?> </a></strong>
2008-02-12 06:51:53 +01:00
< ? php if ( 'private' == $page -> post_status ) _e ( ' — <strong>Private</strong>' ); ?> </td>
< ? php
break ;
case 'comments' :
?>
< td style = " text-align: center " >
< ? php
$left = get_pending_comments_num ( $page -> ID );
$pending_phrase = sprintf ( __ ( '%s pending' ), number_format ( $left ) );
if ( $left )
echo '<strong>' ;
2008-03-06 11:09:14 +01:00
comments_number ( " <a href='edit-pages.php?page_id= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . __ ( '0' ) . '</span></a>' , " <a href='edit-pages.php?page_id= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . __ ( '1' ) . '</span></a>' , " <a href='edit-pages.php?page_id= $id ' title=' $pending_phrase ' class='post-com-count'><span class='comment-count'> " . __ ( '%' ) . '</span></a>' );
2008-02-12 06:51:53 +01:00
if ( $left )
echo '</strong>' ;
?>
</ td >
< ? php
break ;
case 'author' :
?>
< td >< a href = " edit-pages.php?author=<?php the_author_ID(); ?> " >< ? php the_author () ?> </a></td>
< ? php
break ;
case 'status' :
?>
< td >
< ? php
switch ( $page -> post_status ) {
case 'publish' :
case 'private' :
_e ( 'Published' );
break ;
case 'future' :
_e ( 'Scheduled' );
break ;
case 'pending' :
_e ( 'Pending Review' );
break ;
case 'draft' :
_e ( 'Unpublished' );
break ;
}
?>
</ td >
< ? php
break ;
default :
?>
< td >< ? php do_action ( 'manage_pages_custom_column' , $column_name , $id ); ?> </td>
< ? php
break ;
}
}
?>
2008-03-02 21:17:30 +01:00
2008-02-12 06:51:53 +01:00
</ tr >
2007-05-25 09:16:21 +02:00
< ? php
2007-12-14 07:20:42 +01:00
if ( ! $children_pages )
2008-02-05 07:47:27 +01:00
return true ;
2007-12-14 07:20:42 +01:00
2007-12-20 06:29:52 +01:00
for ( $i = 0 ; $i < count ( $children_pages ); $i ++ ) {
2007-12-14 07:20:42 +01:00
$child = $children_pages [ $i ];
2008-02-05 07:47:27 +01:00
2007-12-14 07:20:42 +01:00
if ( $child -> post_parent == $id ) {
2008-02-05 07:47:27 +01:00
array_splice ( $children_pages , $i , 1 );
2007-12-14 07:20:42 +01:00
display_page_row ( $child , $children_pages , $level + 1 );
2007-12-20 06:29:52 +01:00
$i = - 1 ; //as numeric keys in $children_pages are not preserved after splice
2007-12-14 07:20:42 +01:00
}
2007-05-25 09:16:21 +02:00
}
}
2007-12-14 07:20:42 +01:00
/*
2008-02-05 07:47:27 +01:00
* displays pages in hierarchical order
2007-12-14 07:20:42 +01:00
*/
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 ) {
2008-02-05 07:47:27 +01:00
// catch and repair bad pages
2008-01-04 20:55:17 +01:00
if ( $page -> post_parent == $page -> ID ) {
2008-02-05 07:47:27 +01:00
$page -> post_parent = 0 ;
2008-01-04 20:55:17 +01:00
$wpdb -> query ( $wpdb -> prepare ( " UPDATE $wpdb->posts SET post_parent = '0' WHERE ID = %d " , $page -> ID ) );
clean_page_cache ( $page -> ID );
}
2008-02-05 07:47:27 +01:00
2007-12-14 07:20:42 +01:00
if ( 0 == $page -> post_parent )
2008-02-05 07:47:27 +01:00
$top_level_pages [] = $page ;
2007-12-14 07:20:42 +01:00
else
2008-02-05 07:47:27 +01:00
$children_pages [] = $page ;
2007-12-14 07:20:42 +01:00
}
foreach ( $top_level_pages as $page )
display_page_row ( $page , $children_pages , 0 );
2008-02-05 07:47:27 +01:00
/*
2007-12-14 07:20:42 +01:00
* display the remaining children_pages which are orphans
* having orphan requires parental attention
*/
if ( count ( $children_pages ) > 0 ) {
2008-02-05 07:47:27 +01:00
$empty_array = array ();
foreach ( $children_pages as $orphan_page ) {
2007-12-18 20:38:17 +01:00
clean_page_cache ( $orphan_page -> ID );
display_page_row ( $orphan_page , $empty_array , 0 );
2008-02-05 07:47:27 +01:00
}
2007-12-14 07:20:42 +01:00
}
}
2008-01-07 21:38:49 +01:00
function user_row ( $user_object , $style = '' , $role = '' ) {
2008-02-16 22:44:50 +01:00
global $wp_roles ;
2007-12-14 07:20:42 +01:00
if ( ! ( is_object ( $user_object ) && is_a ( $user_object , 'WP_User' ) ) )
2007-05-25 09:16:21 +02:00
$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 );
2008-02-14 21:15:36 +01:00
if ( current_user_can ( 'edit_user' , $user_object -> ID ) ) {
2008-02-22 18:30:43 +01:00
$edit = clean_url ( add_query_arg ( 'wp_http_referer' , urlencode ( clean_url ( stripslashes ( $_SERVER [ 'REQUEST_URI' ] ) ) ), " user-edit.php?user_id= $user_object->ID " ) );
2008-02-14 21:15:36 +01:00
$edit = " <a href= \" $edit\ " > $user_object -> user_login </ a > " ;
} else {
$edit = $user_object -> user_login ;
}
2008-02-19 21:28:54 +01:00
$role_name = translate_with_context ( $wp_roles -> role_names [ $role ]);
2007-05-25 09:16:21 +02:00
$r = " <tr id='user- $user_object->ID ' $style >
2008-02-20 10:29:27 +01:00
< th scope = 'row' class = 'check-column' >< input type = 'checkbox' name = 'users[]' id = 'user_{$user_object->ID}' class = '$role' value = '{$user_object->ID}' /></ th >
2008-02-14 21:15:36 +01:00
< td >< strong > $edit </ strong ></ td >
< td > $user_object -> first_name $user_object -> last_name </ td >
2007-05-25 09:16:21 +02:00
< td >< a href = 'mailto:$email' title = '" . sprintf( __(' e - mail : % s ' ), $email ) . "' > $email </ a ></ td >
2008-02-19 21:28:54 +01:00
< td > $role_name </ td > " ;
2008-02-14 21:15:36 +01:00
$r .= " \n \t \t <td> " ;
2007-05-25 09:16:21 +02:00
if ( $numposts > 0 ) {
$r .= " <a href='edit.php?author= $user_object->ID ' title=' " . __ ( 'View posts by this author' ) . " ' class='edit'> " ;
2008-02-14 21:15:36 +01:00
$r .= $numposts ;
2007-05-25 09:16:21 +02:00
$r .= '</a>' ;
2008-02-14 21:15:36 +01:00
} else {
$r .= 0 ;
2007-05-25 09:16:21 +02:00
}
$r .= " </td> \n \t </tr> " ;
return $r ;
}
2008-02-23 09:01:51 +01:00
function _wp_get_comment_list ( $status = '' , $s = false , $start , $num ) {
2007-05-25 09:16:21 +02:00
global $wpdb ;
2007-08-01 21:41:44 +02:00
$start = abs ( ( int ) $start );
2007-05-25 09:16:21 +02:00
$num = ( int ) $num ;
2008-02-23 09:01:51 +01:00
if ( 'moderated' == $status )
$approved = " comment_approved = '0' " ;
elseif ( 'approved' == $status )
$approved = " comment_approved = '1' " ;
elseif ( 'spam' == $status )
$approved = " comment_approved = 'spam' " ;
else
$approved = " comment_approved != 'spam' " ;
2008-03-02 21:17:30 +01:00
2007-05-25 09:16:21 +02:00
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
2008-02-23 09:01:51 +01:00
$approved
2008-02-13 20:15:30 +01:00
ORDER BY comment_date_gmt DESC LIMIT $start , $num " );
2007-05-25 09:16:21 +02:00
} else {
2008-02-23 09:01:51 +01:00
$comments = $wpdb -> get_results ( " SELECT SQL_CALC_FOUND_ROWS * FROM $wpdb->comments USE INDEX (comment_date_gmt) WHERE $approved ORDER BY comment_date_gmt DESC LIMIT $start , $num " );
2007-05-25 09:16:21 +02:00
}
2007-06-08 02:20:22 +02:00
update_comment_cache ( $comments );
2007-05-25 09:16:21 +02:00
$total = $wpdb -> get_var ( " SELECT FOUND_ROWS() " );
return array ( $comments , $total );
}
2008-02-28 23:12:04 +01:00
function _wp_comment_row ( $comment_id , $mode , $comment_status , $checkbox = true ) {
2008-02-28 07:50:25 +01:00
global $comment , $post ;
$comment = get_comment ( $comment_id );
2007-06-08 02:20:22 +02:00
$post = get_post ( $comment -> comment_post_ID );
$authordata = get_userdata ( $post -> post_author );
2008-02-28 07:50:25 +01:00
$the_comment_status = wp_get_comment_status ( $comment -> comment_ID );
$class = ( 'unapproved' == $the_comment_status ) ? 'unapproved' : '' ;
2008-03-06 11:09:14 +01:00
$post_link = '<a href="edit.php?p=' . $comment -> comment_post_ID . '">' . get_the_title ( $comment -> comment_post_ID ) . '</a>' ;
2008-02-28 07:50:25 +01:00
$author_url = get_comment_author_url ();
if ( 'http://' == $author_url )
$author_url = '' ;
$author_url_display = $author_url ;
if ( strlen ( $author_url_display ) > 50 )
$author_url_display = substr ( $author_url_display , 0 , 49 ) . '...' ;
$ptime = get_post_time ( 'G' , true );
if ( ( abs ( time () - $ptime ) ) < 86400 )
$ptime = sprintf ( __ ( '%s ago' ), human_time_diff ( $ptime ) );
else
$ptime = mysql2date ( __ ( 'Y/m/d \a\t g:i A' ), $post -> post_date );
2007-05-25 09:16:21 +02:00
2008-03-06 22:48:20 +01:00
$delete_url = clean_url ( wp_nonce_url ( " comment.php?action=deletecomment&p= $comment->comment_post_ID &c= $comment->comment_ID " , " delete-comment_ $comment->comment_ID " ) );
$approve_url = clean_url ( wp_nonce_url ( " comment.php?action=approvecomment&p= $comment->comment_post_ID &c= $comment->comment_ID " , " approve-comment_ $comment->comment_ID " ) );
$unapprove_url = clean_url ( wp_nonce_url ( " comment.php?action=unapprovecomment&p= $comment->comment_post_ID &c= $comment->comment_ID " , " unapprove-comment_ $comment->comment_ID " ) );
$spam_url = clean_url ( wp_nonce_url ( " comment.php?action=deletecomment&dt=spam&p= $comment->comment_post_ID &c= $comment->comment_ID " , " delete-comment_ $comment->comment_ID " ) );
2008-03-02 21:17:30 +01:00
2007-05-25 09:16:21 +02:00
?>
2008-02-28 07:50:25 +01:00
< tr id = " comment-<?php echo $comment->comment_ID ; ?> " class = '<?php echo $class; ?>' >
< ? php if ( $checkbox ) : ?>
< td style = " text-align: center; " >< ? php if ( current_user_can ( 'edit_post' , $comment -> comment_post_ID ) ) { ?> <input type="checkbox" name="delete_comments[]" value="<?php echo $comment->comment_ID; ?>" /><?php } ?></td>
< ? php endif ; ?>
< td class = " comment " >
< p class = " comment-author " >< strong >< a class = " row-title " href = " comment.php?action=editcomment&c=<?php echo $comment->comment_ID ?> " >< ? php comment_author (); ?> </a></strong><br />
< ? php if ( ! empty ( $author_url ) ) : ?>
< a href = " <?php echo $author_url ?> " >< ? php echo $author_url_display ; ?> </a> |
< ? php endif ; ?>
< ? php if ( ! empty ( $comment -> comment_author_email ) ) : ?>
< ? php comment_author_email_link () ?> |
< ? php endif ; ?>
< a href = " edit-comments.php?s=<?php comment_author_IP() ?>&mode=detail " >< ? php comment_author_IP () ?> </a>
</ p >
2008-03-07 08:53:15 +01:00
< ? php if ( 'detail' == $mode ) comment_text (); ?>
2008-02-28 07:50:25 +01:00
< p >< ? php printf ( __ ( 'From %1$s, %2$s' ), $post_link , $ptime ) ?> </p>
</ td >
< td >< ? php comment_date ( __ ( 'Y/m/d' )); ?> </td>
< td >
2008-03-06 22:48:20 +01:00
< ? php
$actions = array ();
if ( current_user_can ( 'edit_post' , $comment -> comment_post_ID ) ) {
$actions [ 'approve' ] = " <a href=' $approve_url ' class='dim:the-comment-list:comment- $comment->comment_ID :unapproved:e7e7d3:e7e7d3' title=' " . __ ( 'Approve this comment' ) . " '> " . __ ( 'Approve' ) . '</a> | ' ;
$actions [ 'unapprove' ] = " <a href=' $unapprove_url ' class='dim:the-comment-list:comment- $comment->comment_ID :unapproved:e7e7d3:e7e7d3' title=' " . __ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a> | ' ;
$actions [ 'spam' ] = " <a href=' $spam_url ' class='delete:the-comment-list:comment- $comment->comment_ID ::spam=1' title=' " . __ ( 'Mark this comment as spam' ) . " '> " . __ ( 'Spam' ) . '</a> | ' ;
$actions [ 'delete' ] = " <a href=' $delete_url ' class='delete:the-comment-list:comment- $comment->comment_ID delete'> " . __ ( 'Delete' ) . '</a>' ;
// we're looking at list of only approved or only unapproved comments
if ( 'moderated' == $comment_status ) {
$actions [ 'approve' ] = " <a href=' $approve_url ' class='delete:the-comment-list:comment- $comment->comment_ID :e7e7d3:action=dim-comment' title=' " . __ ( 'Approve this comment' ) . " '> " . __ ( 'Approve' ) . '</a> | ' ;
unset ( $actions [ 'unapprove' ]);
} elseif ( 'approved' == $comment_status ) {
$actions [ 'unapprove' ] = " <a href=' $unapprove_url ' class='delete:the-comment-list:comment- $comment->comment_ID :e7e7d3:action=dim-comment' title=' " . __ ( 'Unapprove this comment' ) . " '> " . __ ( 'Unapprove' ) . '</a> | ' ;
unset ( $actions [ 'approve' ]);
}
foreach ( $actions as $action => $link )
echo " <span class=' $action '> $link </span> " ;
2008-02-28 07:50:25 +01:00
}
?>
</ td >
</ tr >
< ? php
2007-05-25 09:16:21 +02:00
}
function wp_dropdown_cats ( $currentcat = 0 , $currentparent = 0 , $parent = 0 , $level = 0 , $categories = 0 ) {
if ( ! $categories )
$categories = get_categories ( 'hide_empty=0' );
if ( $categories ) {
foreach ( $categories as $category ) {
if ( $currentcat != $category -> term_id && $parent == $category -> parent ) {
$pad = str_repeat ( '– ' , $level );
$category -> name = wp_specialchars ( $category -> name );
echo " \n \t <option value=' $category->term_id ' " ;
if ( $currentparent == $category -> term_id )
echo " selected='selected' " ;
echo " > $pad $category->name </option> " ;
wp_dropdown_cats ( $currentcat , $currentparent , $category -> term_id , $level + 1 , $categories );
}
}
} else {
return false ;
}
}
function list_meta ( $meta ) {
// Exit if no meta
if ( ! $meta ) {
2007-10-10 00:49:42 +02:00
echo '<tbody id="the-list" class="list:meta"><tr style="display: none;"><td> </td></tr></tbody>' ; //TBODY needed for list-manipulation JS
2007-05-25 09:16:21 +02:00
return ;
}
$count = 0 ;
?>
< thead >
< tr >
< th >< ? php _e ( 'Key' ) ?> </th>
< th >< ? php _e ( 'Value' ) ?> </th>
< th colspan = '2' >< ? php _e ( 'Action' ) ?> </th>
</ tr >
</ thead >
2007-10-10 00:49:42 +02:00
< tbody id = 'the-list' class = 'list:meta' >
2007-05-25 09:16:21 +02:00
< ? php
2007-10-10 00:49:42 +02:00
foreach ( $meta as $entry )
echo _list_meta_row ( $entry , $count );
echo " \n \t </tbody> " ;
}
2007-05-25 09:16:21 +02:00
2007-10-10 00:49:42 +02:00
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 ;
}
2007-05-25 09:16:21 +02:00
}
2007-10-10 00:49:42 +02:00
$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 <tr id='meta- { $entry [ 'meta_id' ] } ' class=' $style '> " ;
$r .= " \n \t \t <td valign='top'><input name='meta[ { $entry [ 'meta_id' ] } ][key]' tabindex='6' type='text' size='20' value=' { $entry [ 'meta_key' ] } ' /></td> " ;
$r .= " \n \t \t <td><textarea name='meta[ { $entry [ 'meta_id' ] } ][value]' tabindex='6' rows='2' cols='30'> { $entry [ 'meta_value' ] } </textarea></td> " ;
2008-02-29 18:09:44 +01:00
$r .= " \n \t \t <td style='text-align: center;'><input name='updatemeta' type='submit' tabindex='6' value=' " . attribute_escape ( __ ( 'Update' )) . " ' class='add:the-list:meta- { $entry [ 'meta_id' ] } updatemeta' /><br /> " ;
2007-10-10 00:49:42 +02:00
$r .= " \n \t \t <input name='deletemeta[ { $entry [ 'meta_id' ] } ]' type='submit' " ;
$r .= " class='delete:the-list:meta- { $entry [ 'meta_id' ] } deletemeta' tabindex='6' value=' " . attribute_escape ( __ ( 'Delete' )) . " ' /> " ;
$r .= " </td> \n \t </tr> " ;
return $r ;
2007-05-25 09:16:21 +02:00
}
function meta_form () {
global $wpdb ;
$limit = ( int ) apply_filters ( 'postmeta_form_limit' , 30 );
$keys = $wpdb -> get_col ( "
SELECT meta_key
FROM $wpdb -> postmeta
2007-06-13 01:44:45 +02:00
WHERE meta_key NOT LIKE '\_%'
2007-05-25 09:16:21 +02:00
GROUP BY meta_key
ORDER BY meta_id DESC
LIMIT $limit " );
if ( $keys )
natcasesort ( $keys );
?>
2008-01-03 09:03:29 +01:00
< p >< strong >< ? php _e ( 'Add a new custom field:' ) ?> </strong></p>
2007-05-25 09:16:21 +02:00
< table id = " newmeta " cellspacing = " 3 " cellpadding = " 3 " >
< tr >
< th colspan = " 2 " >< ? php _e ( 'Key' ) ?> </th>
< th >< ? php _e ( 'Value' ) ?> </th>
</ tr >
< tr valign = " top " >
2008-02-29 18:09:44 +01:00
< td style = " text-align: right; " style = " width: 18%; " >
2007-05-25 09:16:21 +02:00
< ? php if ( $keys ) : ?>
< select id = " metakeyselect " name = " metakeyselect " tabindex = " 7 " >
< option value = " #NONE# " >< ? php _e ( '- Select -' ); ?> </option>
< ? php
foreach ( $keys as $key ) {
2007-05-25 11:41:04 +02:00
$key = attribute_escape ( $key );
2007-05-25 09:16:21 +02:00
echo " \n \t <option value=' $key '> $key </option> " ;
}
?>
</ select > < ? php _e ( 'or' ); ?>
< ? php endif ; ?>
</ td >
< td >< input type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " /></ td >
< td >< textarea id = " metavalue " name = " metavalue " rows = " 3 " cols = " 25 " tabindex = " 8 " ></ textarea ></ td >
</ tr >
2007-10-10 00:49:42 +02:00
< tr class = " submit " >< td colspan = " 3 " >
< ? php wp_nonce_field ( 'change_meta' , '_ajax_nonce' , false ); ?>
2008-02-20 20:30:55 +01:00
< input type = " submit " id = " addmetasub " name = " addmeta " class = " add:the-list:newmeta " tabindex = " 9 " value = " <?php _e( 'Add Custom Field' ) ?> " />
2007-10-10 00:49:42 +02:00
</ td ></ tr >
2007-05-25 09:16:21 +02:00
</ table >
< ? php
}
2007-09-11 21:08:26 +02:00
function touch_time ( $edit = 1 , $for_post = 1 , $tab_index = 0 ) {
2007-05-25 09:16:21 +02:00
global $wp_locale , $post , $comment ;
if ( $for_post )
2007-06-14 18:24:28 +02:00
$edit = ( in_array ( $post -> post_status , array ( 'draft' , 'pending' ) ) && ( ! $post -> post_date || '0000-00-00 00:00:00' == $post -> post_date ) ) ? false : true ;
2008-02-05 07:47:27 +01:00
2007-09-11 21:08:26 +02:00
$tab_index_attribute = '' ;
if ( ( int ) $tab_index > 0 )
$tab_index_attribute = " tabindex= \" $tab_index\ " " ;
2007-06-14 04:25:30 +02:00
2008-02-21 23:20:19 +01:00
echo '<input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"' . $tab_index_attribute . ' /> <label for="timestamp">' . __ ( 'Edit timestamp' ) . '</label>' ;
2007-05-25 09:16:21 +02:00
$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 );
2008-02-23 00:13:02 +01:00
$month = " <select name= \" mm \" onchange= \" edit_date.checked=true \" $tab_index_attribute > \n " ;
2007-07-17 21:26:03 +02:00
for ( $i = 1 ; $i < 13 ; $i = $i + 1 ) {
2008-02-23 00:13:02 +01:00
$month .= " \t \t \t <option value= \" $i\ " " ;
2007-07-17 21:26:03 +02:00
if ( $i == $mm )
2008-02-23 00:13:02 +01:00
$month .= ' selected="selected"' ;
$month .= '>' . $wp_locale -> get_month ( $i ) . " </option> \n " ;
2007-07-17 21:26:03 +02:00
}
2008-02-23 00:13:02 +01:00
$month .= '</select>' ;
$day = '<input type="text" id="jj" name="jj" value="' . $jj . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' />' ;
$year = '<input type="text" id="aa" name="aa" value="' . $aa . '" size="4" maxlength="5" onchange="edit_date.checked=true"' . $tab_index_attribute . ' />' ;
$hour = '<input type="text" id="hh" name="hh" value="' . $hh . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' />' ;
$minute = '<input type="text" id="mn" name="mn" value="' . $mn . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' />' ;
printf ( __ ( '%1$s%2$s%3$s @ %4$s : %5$s' ), $month , $day , $year , $hour , $minute );
2007-05-25 09:16:21 +02:00
?>
< input type = " hidden " id = " ss " name = " ss " value = " <?php echo $ss ?> " size = " 2 " maxlength = " 2 " onchange = " edit_date.checked=true " />
< ? php
}
function page_template_dropdown ( $default = '' ) {
$templates = get_page_templates ();
ksort ( $templates );
foreach ( array_keys ( $templates ) as $template )
: if ( $default == $templates [ $template ] )
$selected = " selected='selected' " ;
else
$selected = '' ;
echo " \n \t <option value=' " . $templates [ $template ] . " ' $selected > $template </option> " ;
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 = '' ;
2007-10-03 18:27:07 +02:00
echo " \n \t <option value=' $item->ID ' $current > $pad " . wp_specialchars ( $item -> post_title ) . " </option> " ;
2007-05-25 09:16:21 +02:00
parent_dropdown ( $default , $item -> ID , $level + 1 );
}
} else {
return false ;
}
}
2007-06-22 03:29:57 +02:00
function browse_happy () {
$getit = __ ( 'WordPress recommends a better browser' );
echo '
2008-01-14 04:16:56 +01:00
< p id = " bh " style = " float: right " >< a href = " http://browsehappy.com/ " title = " '. $getit .' " >< img src = " images/browse-happy.gif " alt = " Browse Happy " /></ a ></ p >
2007-06-22 03:29:57 +02:00
' ;
}
if ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'MSIE' ) !== false )
2008-01-14 04:16:56 +01:00
add_action ( 'in_admin_footer' , 'browse_happy' );
2007-06-22 03:29:57 +02:00
2007-05-25 09:16:21 +02:00
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' ] );
?>
< form id = " the-attachment-links " >
< table >
< col />
< col class = " widefat " />
< tr >
< th scope = " row " >< ? php _e ( 'URL' ) ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< ? php echo wp_get_attachment_url (); ?> </textarea></td>
</ tr >
< ? php if ( $icon ) : ?>
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to file' ) : _e ( 'Image linked to file' ); ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo wp_get_attachment_url(); ?> " >< ? php echo $icon ?> </a></textarea></td>
</ tr >
< tr >
< th scope = " row " >< ? php $thumb ? _e ( 'Thumbnail linked to page' ) : _e ( 'Image linked to page' ); ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo get_attachment_link( $post->ID ) ?> " rel = " attachment wp-att-<?php echo $post->ID ; ?> " >< ? php echo $icon ?> </a></textarea></td>
</ tr >
< ? php else : ?>
< tr >
< th scope = " row " >< ? php _e ( 'Link to file' ) ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo wp_get_attachment_url(); ?> " class = " attachmentlink " >< ? php echo basename ( wp_get_attachment_url () ); ?> </a></textarea></td>
</ tr >
< tr >
< th scope = " row " >< ? php _e ( 'Link to page' ) ?> </th>
< td >< textarea rows = " 1 " cols = " 40 " type = " text " class = " attachmentlinks " readonly = " readonly " >< a href = " <?php echo get_attachment_link( $post->ID ) ?> " rel = " attachment wp-att-<?php echo $post->ID ?> " >< ? php the_title (); ?> </a></textarea></td>
</ tr >
< ? php endif ; ?>
</ table >
</ form >
< ? php
}
function wp_dropdown_roles ( $default = false ) {
global $wp_roles ;
$r = '' ;
2008-02-19 21:28:54 +01:00
foreach ( $wp_roles -> role_names as $role => $name ) {
$name = translate_with_context ( $name );
2007-05-25 09:16:21 +02:00
if ( $default == $role ) // Make default first in list
$p = " \n \t <option selected='selected' value=' $role '> $name </option> " ;
else
$r .= " \n \t <option value=' $role '> $name </option> " ;
2008-02-19 21:28:54 +01:00
}
2007-05-25 09:16:21 +02:00
echo $p . $r ;
}
2007-08-29 01:13:16 +02:00
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 ];
}
2008-01-25 20:21:11 +01:00
function wp_max_upload_size () {
2007-08-29 01:13:16 +02:00
$u_bytes = wp_convert_hr_to_bytes ( ini_get ( 'upload_max_filesize' ) );
$p_bytes = wp_convert_hr_to_bytes ( ini_get ( 'post_max_size' ) );
2008-01-25 20:21:11 +01:00
$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 () );
2007-08-29 01:13:16 +02:00
$size = wp_convert_bytes_to_hr ( $bytes );
2007-05-25 09:16:21 +02:00
?>
< form enctype = " multipart/form-data " id = " import-upload-form " method = " post " action = " <?php echo attribute_escape( $action ) ?> " >
< p >
< ? php wp_nonce_field ( 'import-upload' ); ?>
2007-08-29 01:13:16 +02:00
< label for = " upload " >< ? php _e ( 'Choose a file from your computer:' ); ?> </label> (<?php printf( __('Maximum size: %s' ), $size ); ?>)
2007-05-25 09:16:21 +02:00
< input type = " file " id = " upload " name = " import " size = " 25 " />
< input type = " hidden " name = " action " value = " save " />
< input type = " hidden " name = " max_file_size " value = " <?php echo $bytes ; ?> " />
</ p >
< p class = " submit " >
2008-02-21 01:27:23 +01:00
< input type = " submit " class = " button " value = " <?php _e( 'Upload file and import' ); ?> " />
2007-05-25 09:16:21 +02:00
</ p >
</ form >
< ? php
}
function wp_remember_old_slug () {
global $post ;
$name = attribute_escape ( $post -> post_name ); // just in case
if ( strlen ( $name ) )
echo '<input type="hidden" id="wp-old-slug" name="wp-old-slug" value="' . $name . '" />' ;
}
2008-02-08 19:51:37 +01:00
/**
* add_meta_box () - Add a meta box to an edit form
*
* @ since 2.5
*
* @ param string $id String for use in the 'id' attribute of tags .
* @ param string $title Title of the meta box
* @ param string $callback Function that fills the box with the desired content . The function should echo its output .
2008-02-08 22:06:15 +01:00
* @ param string $page The type of edit page on which to show the box ( post , page , link )
* @ param string $context The context within the page where the boxes should show ( 'normal' , 'advanced' )
2008-02-08 19:51:37 +01:00
*/
2008-02-08 22:06:15 +01:00
function add_meta_box ( $id , $title , $callback , $page , $context = 'advanced' ) {
2008-02-08 19:51:37 +01:00
global $wp_meta_boxes ;
2008-02-08 22:06:15 +01:00
if ( ! isset ( $wp_meta_boxes ) )
$wp_meta_boxes = array ();
if ( ! isset ( $wp_meta_boxes [ $page ]) )
$wp_meta_boxes [ $page ] = array ();
if ( ! isset ( $wp_meta_boxes [ $page ][ $context ]) )
$wp_meta_boxes [ $page ][ $context ] = array ();
$wp_meta_boxes [ $page ][ $context ][] = array ( 'id' => $id , 'title' => $title , 'callback' => $callback );
2008-02-08 19:51:37 +01:00
}
2008-02-08 22:06:15 +01:00
function do_meta_boxes ( $page , $context , $object ) {
2008-02-08 19:51:37 +01:00
global $wp_meta_boxes ;
2008-02-08 22:06:15 +01:00
if ( ! isset ( $wp_meta_boxes ) || ! isset ( $wp_meta_boxes [ $page ]) || ! isset ( $wp_meta_boxes [ $page ][ $context ]) )
2008-02-08 19:51:37 +01:00
return ;
2008-02-08 22:06:15 +01:00
foreach ( ( array ) $wp_meta_boxes [ $page ][ $context ] as $box ) {
echo '<div id="' . $box [ 'id' ] . '" class="postbox ' . postbox_classes ( $box [ 'id' ], $page ) . '">' . " \n " ;
2008-02-08 19:51:37 +01:00
echo " <h3> { $box [ 'title' ] } </h3> \n " ;
echo '<div class="inside">' . " \n " ;
call_user_func ( $box [ 'callback' ], $object );
echo " </div> \n " ;
echo " </div> \n " ;
}
}
2007-08-23 20:04:15 +02:00
?>