2004-01-27 10:33:19 +01:00
< ? php
2005-09-18 21:44:14 +02:00
2005-06-19 04:51:48 +02:00
// Creates a new post from the "Write Post" form using $_POST information.
2005-06-18 21:08:38 +02:00
function write_post () {
global $user_ID ;
2005-09-18 21:44:14 +02:00
if ( ! current_user_can ( 'edit_posts' ))
die ( __ ( 'You are not allowed to create posts or drafts on this blog.' ));
2005-06-18 21:08:38 +02:00
// Rename.
2005-09-18 21:44:14 +02:00
$_POST [ 'post_content' ] = $_POST [ 'content' ];
$_POST [ 'post_excerpt' ] = $_POST [ 'excerpt' ];
2005-06-18 21:08:38 +02:00
$_POST [ 'post_parent' ] = $_POST [ 'parent_id' ];
2005-06-19 03:33:38 +02:00
$_POST [ 'to_ping' ] = $_POST [ 'trackback_url' ];
2005-06-18 21:08:38 +02:00
2005-09-18 21:44:14 +02:00
if ( ! empty ( $_POST [ 'post_author_override' ])) {
2005-06-18 21:08:38 +02:00
$_POST [ '$post_author' ] = ( int ) $_POST [ 'post_author_override' ];
2005-09-18 21:44:14 +02:00
} else
if ( ! empty ( $_POST [ 'post_author' ])) {
$_POST [ 'post_author' ] = ( int ) $_POST [ 'post_author' ];
} else {
$_POST [ 'post_author' ] = ( int ) $_POST [ 'user_ID' ];
}
if (( $_POST [ 'post_author' ] != $_POST [ 'user_ID' ]) && ! current_user_can ( 'edit_others_posts' ))
die ( __ ( 'You cannot post as this user.' ));
2005-06-18 21:08:38 +02:00
// What to do based on which button they pressed
2005-09-18 21:44:14 +02:00
if ( '' != $_POST [ 'saveasdraft' ])
$_POST [ 'post_status' ] = 'draft' ;
if ( '' != $_POST [ 'saveasprivate' ])
$_POST [ 'post_status' ] = 'private' ;
if ( '' != $_POST [ 'publish' ])
$_POST [ 'post_status' ] = 'publish' ;
if ( '' != $_POST [ 'advanced' ])
$_POST [ 'post_status' ] = 'draft' ;
if ( '' != $_POST [ 'savepage' ])
$_POST [ 'post_status' ] = 'static' ;
2005-07-17 23:08:47 +02:00
2005-09-18 21:44:14 +02:00
if ( 'publish' == $_POST [ 'post_status' ] && ! current_user_can ( 'publish_posts' ))
2005-07-17 23:08:47 +02:00
$_POST [ 'post_status' ] = 'draft' ;
2005-09-18 21:44:14 +02:00
if ( ! empty ( $_POST [ 'edit_date' ])) {
2005-06-18 21:08:38 +02:00
$aa = $_POST [ 'aa' ];
$mm = $_POST [ 'mm' ];
$jj = $_POST [ 'jj' ];
$hh = $_POST [ 'hh' ];
$mn = $_POST [ 'mn' ];
$ss = $_POST [ 'ss' ];
$jj = ( $jj > 31 ) ? 31 : $jj ;
2005-09-18 21:44:14 +02:00
$hh = ( $hh > 23 ) ? $hh - 24 : $hh ;
$mn = ( $mn > 59 ) ? $mn - 60 : $mn ;
$ss = ( $ss > 59 ) ? $ss - 60 : $ss ;
2005-06-18 21:08:38 +02:00
$_POST [ 'post_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
$_POST [ 'post_date_gmt' ] = get_gmt_from_date ( " $aa - $mm - $jj $hh : $mn : $ss " );
2005-09-18 21:44:14 +02:00
}
2005-06-18 21:08:38 +02:00
// Create the post.
$post_ID = wp_insert_post ( $_POST );
add_meta ( $post_ID );
2005-06-20 01:44:22 +02:00
2005-09-27 01:55:36 +02:00
// Reunite any orphaned subposts with their parent
if ( $_POST [ 'temp_ID' ] )
relocate_children ( $_POST [ 'temp_ID' ], $post_ID );
2005-06-20 01:44:22 +02:00
return $post_ID ;
2005-06-18 21:08:38 +02:00
}
2005-09-27 01:55:36 +02:00
// Move child posts to a new parent
function relocate_children ( $old_ID , $new_ID ) {
global $wpdb ;
2005-09-27 05:42:17 +02:00
$old_ID = ( int ) $old_ID ;
$new_ID = ( int ) $new_ID ;
return $wpdb -> query ( " UPDATE $wpdb->posts SET post_parent = $new_ID WHERE post_parent = $old_ID " );
2005-09-27 01:55:36 +02:00
}
2005-06-19 04:51:48 +02:00
// Update an existing post with values provided in $_POST.
2005-06-19 03:33:38 +02:00
function edit_post () {
global $user_ID ;
2005-06-26 21:55:12 +02:00
$post_ID = ( int ) $_POST [ 'post_ID' ];
2005-06-19 03:33:38 +02:00
2005-09-18 21:44:14 +02:00
if ( ! current_user_can ( 'edit_post' , $post_ID ))
die ( __ ( 'You are not allowed to edit this post.' ));
2005-06-19 03:33:38 +02:00
// Rename.
2005-06-26 21:55:12 +02:00
$_POST [ 'ID' ] = ( int ) $_POST [ 'post_ID' ];
2005-09-18 21:44:14 +02:00
$_POST [ 'post_content' ] = $_POST [ 'content' ];
$_POST [ 'post_excerpt' ] = $_POST [ 'excerpt' ];
2005-06-19 03:33:38 +02:00
$_POST [ 'post_parent' ] = $_POST [ 'parent_id' ];
$_POST [ 'to_ping' ] = $_POST [ 'trackback_url' ];
2005-09-18 21:44:14 +02:00
if ( ! empty ( $_POST [ 'post_author_override' ])) {
2005-06-19 03:33:38 +02:00
$_POST [ '$post_author' ] = ( int ) $_POST [ 'post_author_override' ];
2005-09-18 21:44:14 +02:00
} else
if ( ! empty ( $_POST [ 'post_author' ])) {
$_POST [ 'post_author' ] = ( int ) $_POST [ 'post_author' ];
} else {
$_POST [ 'post_author' ] = ( int ) $_POST [ 'user_ID' ];
}
2005-06-19 03:33:38 +02:00
2005-09-18 21:44:14 +02:00
if (( $_POST [ 'post_author' ] != $_POST [ 'user_ID' ]) && ! current_user_can ( 'edit_others_posts' ))
die ( __ ( 'You cannot post as this user.' ));
2005-06-19 03:33:38 +02:00
2005-07-17 23:08:47 +02:00
// What to do based on which button they pressed
2005-09-18 21:44:14 +02:00
if ( '' != $_POST [ 'saveasdraft' ])
$_POST [ 'post_status' ] = 'draft' ;
if ( '' != $_POST [ 'saveasprivate' ])
$_POST [ 'post_status' ] = 'private' ;
if ( '' != $_POST [ 'publish' ])
$_POST [ 'post_status' ] = 'publish' ;
if ( '' != $_POST [ 'advanced' ])
$_POST [ 'post_status' ] = 'draft' ;
if ( '' != $_POST [ 'savepage' ])
$_POST [ 'post_status' ] = 'static' ;
2005-07-17 23:08:47 +02:00
2005-09-18 21:44:14 +02:00
if ( 'publish' == $_POST [ 'post_status' ] && ! current_user_can ( 'publish_posts' ))
2005-07-17 23:08:47 +02:00
$_POST [ 'post_status' ] = 'draft' ;
2005-09-18 21:44:14 +02:00
if ( ! isset ( $_POST [ 'comment_status' ]))
2005-08-05 22:44:18 +02:00
$_POST [ 'comment_status' ] = 'closed' ;
2005-09-18 21:44:14 +02:00
if ( ! isset ( $_POST [ 'ping_status' ]))
2005-08-05 22:44:18 +02:00
$_POST [ 'ping_status' ] = 'closed' ;
2005-09-18 21:44:14 +02:00
if ( ! empty ( $_POST [ 'edit_date' ])) {
2005-06-19 03:33:38 +02:00
$aa = $_POST [ 'aa' ];
$mm = $_POST [ 'mm' ];
$jj = $_POST [ 'jj' ];
$hh = $_POST [ 'hh' ];
$mn = $_POST [ 'mn' ];
$ss = $_POST [ 'ss' ];
$jj = ( $jj > 31 ) ? 31 : $jj ;
2005-09-18 21:44:14 +02:00
$hh = ( $hh > 23 ) ? $hh - 24 : $hh ;
$mn = ( $mn > 59 ) ? $mn - 60 : $mn ;
$ss = ( $ss > 59 ) ? $ss - 60 : $ss ;
2005-06-19 03:33:38 +02:00
$_POST [ 'post_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
$_POST [ 'post_date_gmt' ] = get_gmt_from_date ( " $aa - $mm - $jj $hh : $mn : $ss " );
2005-09-18 21:44:14 +02:00
}
2005-06-19 03:33:38 +02:00
wp_update_post ( $_POST );
// Meta Stuff
2005-09-18 21:44:14 +02:00
if ( $_POST [ 'meta' ])
: foreach ( $_POST [ 'meta' ] as $key => $value )
: update_meta ( $key , $value [ 'key' ], $value [ 'value' ]);
endforeach ;
2005-06-19 03:33:38 +02:00
endif ;
2005-09-18 21:44:14 +02:00
if ( $_POST [ 'deletemeta' ])
: foreach ( $_POST [ 'deletemeta' ] as $key => $value )
: delete_meta ( $key );
endforeach ;
2005-06-19 03:33:38 +02:00
endif ;
add_meta ( $post_ID );
2005-09-18 21:44:14 +02:00
2005-09-08 22:38:30 +02:00
return $post_ID ;
2005-06-19 03:33:38 +02:00
}
2005-06-26 21:55:12 +02:00
function edit_comment () {
global $user_ID ;
$comment_ID = ( int ) $_POST [ 'comment_ID' ];
$comment_post_ID = ( int ) $_POST [ 'comment_post_ID' ];
2005-09-18 21:44:14 +02:00
if ( ! current_user_can ( 'edit_post' , $comment_post_ID ))
die ( __ ( 'You are not allowed to edit comments on this post, so you cannot edit this comment.' ));
2005-06-26 21:55:12 +02:00
$_POST [ 'comment_author' ] = $_POST [ 'newcomment_author' ];
2005-09-18 21:44:14 +02:00
$_POST [ 'comment_author_email' ] = $_POST [ 'newcomment_author_email' ];
2005-06-26 21:55:12 +02:00
$_POST [ 'comment_author_url' ] = $_POST [ 'newcomment_author_url' ];
$_POST [ 'comment_approved' ] = $_POST [ 'comment_status' ];
$_POST [ 'comment_content' ] = $_POST [ 'content' ];
$_POST [ 'comment_ID' ] = ( int ) $_POST [ 'comment_ID' ];
2005-09-18 21:44:14 +02:00
if ( ! empty ( $_POST [ 'edit_date' ])) {
2005-06-26 21:55:12 +02:00
$aa = $_POST [ 'aa' ];
$mm = $_POST [ 'mm' ];
$jj = $_POST [ 'jj' ];
$hh = $_POST [ 'hh' ];
$mn = $_POST [ 'mn' ];
$ss = $_POST [ 'ss' ];
$jj = ( $jj > 31 ) ? 31 : $jj ;
2005-09-18 21:44:14 +02:00
$hh = ( $hh > 23 ) ? $hh - 24 : $hh ;
$mn = ( $mn > 59 ) ? $mn - 60 : $mn ;
$ss = ( $ss > 59 ) ? $ss - 60 : $ss ;
2005-06-26 21:55:12 +02:00
$_POST [ 'comment_date' ] = " $aa - $mm - $jj $hh : $mn : $ss " ;
}
wp_update_comment ( $_POST );
}
2005-06-19 04:51:48 +02:00
// Get an existing post and format it for editing.
function get_post_to_edit ( $id ) {
$post = get_post ( $id );
$post -> post_content = format_to_edit ( $post -> post_content );
$post -> post_content = apply_filters ( 'content_edit_pre' , $post -> post_content );
$post -> post_excerpt = format_to_edit ( $post -> post_excerpt );
$post -> post_excerpt = apply_filters ( 'excerpt_edit_pre' , $post -> post_excerpt );
$post -> post_title = format_to_edit ( $post -> post_title );
$post -> post_title = apply_filters ( 'title_edit_pre' , $post -> post_title );
if ( $post -> post_status == 'static' )
2005-09-18 21:44:14 +02:00
$post -> page_template = get_post_meta ( $id , '_wp_page_template' , true );
2005-06-19 04:51:48 +02:00
return $post ;
}
// Default post information to use when populating the "Write Post" form.
function get_default_post_to_edit () {
global $content , $excerpt , $edited_post_title ;
$post -> post_status = 'draft' ;
$post -> comment_status = get_settings ( 'default_comment_status' );
$post -> ping_status = get_settings ( 'default_ping_status' );
$post -> post_pingback = get_settings ( 'default_pingback_flag' );
$post -> post_category = get_settings ( 'default_category' );
$content = wp_specialchars ( $content );
$post -> post_content = apply_filters ( 'default_content' , $content );
$post -> post_title = apply_filters ( 'default_title' , $edited_post_title );
$post -> post_excerpt = apply_filters ( 'default_excerpt' , $excerpt );
2005-06-19 05:07:16 +02:00
$post -> page_template = 'default' ;
$post -> post_parent = 0 ;
$post -> menu_order = 0 ;
2005-06-19 04:51:48 +02:00
return $post ;
}
2005-06-26 21:55:12 +02:00
function get_comment_to_edit ( $id ) {
$comment = get_comment ( $id );
$comment -> comment_content = format_to_edit ( $comment -> comment_content );
$comment -> comment_content = apply_filters ( 'comment_edit_pre' , $comment -> comment_content );
$comment -> comment_author = format_to_edit ( $comment -> comment_author );
$comment -> comment_author_email = format_to_edit ( $comment -> comment_author_email );
$comment -> comment_author_url = format_to_edit ( $comment -> comment_author_url );
return $comment ;
}
2005-07-03 21:26:51 +02:00
function get_category_to_edit ( $id ) {
$category = get_category ( $id );
return $category ;
}
function wp_insert_category ( $catarr ) {
global $wpdb ;
extract ( $catarr );
$cat_ID = ( int ) $cat_ID ;
// Are we updating or creating?
2005-09-18 21:44:14 +02:00
if ( ! empty ( $cat_ID )) {
2005-07-03 21:26:51 +02:00
$update = true ;
} else {
$update = false ;
$id_result = $wpdb -> get_row ( " SHOW TABLE STATUS LIKE ' $wpdb->categories ' " );
$cat_ID = $id_result -> Auto_increment ;
}
$cat_name = wp_specialchars ( $cat_name );
2005-09-18 21:44:14 +02:00
if ( empty ( $category_nicename ))
2005-07-03 21:26:51 +02:00
$category_nicename = sanitize_title ( $cat_name , $cat_ID );
else
$category_nicename = sanitize_title ( $category_nicename , $cat_ID );
2005-09-18 21:44:14 +02:00
if ( empty ( $category_description ))
2005-07-03 21:26:51 +02:00
$category_description = '' ;
2005-09-18 21:44:14 +02:00
if ( empty ( $category_parent ))
2005-07-03 21:26:51 +02:00
$category_parent = 0 ;
2005-09-18 21:44:14 +02:00
if ( ! $update )
2005-07-03 21:26:51 +02:00
$query = " INSERT INTO $wpdb->categories (cat_ID, cat_name, category_nicename, category_description, category_parent) VALUES ('0', ' $cat_name ', ' $category_nicename ', ' $category_description ', ' $cat ') " ;
else
$query = " UPDATE $wpdb->categories SET cat_name = ' $cat_name ', category_nicename = ' $category_nicename ', category_description = ' $category_description ', category_parent = ' $category_parent ' WHERE cat_ID = ' $cat_ID ' " ;
$result = $wpdb -> query ( $query );
2005-09-18 21:44:14 +02:00
if ( $update ) {
2005-07-03 21:26:51 +02:00
do_action ( 'edit_category' , $cat_ID );
} else {
2005-08-31 01:24:12 +02:00
do_action ( 'create_category' , $rval );
do_action ( 'add_category' , $rval );
2005-07-03 21:26:51 +02:00
}
2005-09-10 20:44:05 +02:00
return $cat_ID ;
2005-07-03 21:26:51 +02:00
}
function wp_update_category ( $catarr ) {
global $wpdb ;
$cat_ID = ( int ) $catarr [ 'cat_ID' ];
2005-09-18 21:44:14 +02:00
2005-07-03 21:26:51 +02:00
// First, get all of the original fields
2005-09-18 21:44:14 +02:00
$category = get_category ( $cat_ID , ARRAY_A );
2005-07-03 21:26:51 +02:00
// Escape data pulled from DB.
$category = add_magic_quotes ( $category );
// Merge old and new fields with new fields overwriting old ones.
$catarr = array_merge ( $category , $catarr );
return wp_insert_category ( $catarr );
}
function wp_delete_category ( $cat_ID ) {
global $wpdb ;
$cat_ID = ( int ) $cat_ID ;
// Don't delete the default cat.
2005-09-18 21:44:14 +02:00
if ( 1 == $cat_ID )
2005-07-03 21:26:51 +02:00
return 0 ;
$category = get_category ( $cat_ID );
$parent = $category -> category_parent ;
// Delete the category.
$wpdb -> query ( " DELETE FROM $wpdb->categories WHERE cat_ID = ' $cat_ID ' " );
// Update children to point to new parent.
$wpdb -> query ( " UPDATE $wpdb->categories SET category_parent = ' $parent ' WHERE category_parent = ' $cat_ID ' " );
// TODO: Only set categories to general if they're not in another category already
$wpdb -> query ( " UPDATE $wpdb->post2cat SET category_id='1' WHERE category_id=' $cat_ID ' " );
do_action ( 'delete_category' , $cat_ID );
return 1 ;
}
2005-09-10 20:44:05 +02:00
function wp_create_category ( $cat_name ) {
$cat_array = compact ( 'cat_name' );
return wp_insert_category ( $cat_array );
}
2005-09-11 00:45:07 +02:00
function wp_create_categories ( $categories , $post_id = '' ) {
2005-09-18 21:44:14 +02:00
$cat_ids = array ();
2005-09-11 00:45:07 +02:00
foreach ( $categories as $category ) {
2005-09-18 21:44:14 +02:00
if ( $id = category_exists ( $category ))
2005-09-11 00:45:07 +02:00
$cat_ids [] = $id ;
2005-09-18 21:44:14 +02:00
else
if ( $id = wp_create_category ( $category ))
$cat_ids [] = $id ;
2005-09-11 00:45:07 +02:00
}
2005-09-18 21:44:14 +02:00
if ( $post_id )
2005-09-11 00:45:07 +02:00
wp_set_post_cats ( '' , $post_id , $cat_ids );
2005-09-18 21:44:14 +02:00
2005-09-11 00:45:07 +02:00
return $cat_ids ;
}
2005-09-10 20:44:05 +02:00
function category_exists ( $cat_name ) {
global $wpdb ;
2005-09-18 21:44:14 +02:00
if ( ! $category_nicename = sanitize_title ( $cat_name ))
2005-09-10 20:44:05 +02:00
return 0 ;
2005-09-18 21:44:14 +02:00
2005-09-10 20:44:05 +02:00
return $wpdb -> get_var ( " SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = ' $category_nicename ' " );
}
2005-09-14 02:03:02 +02:00
// Creates a new user from the "Users" form using $_POST information.
function add_user () {
2005-09-18 21:44:14 +02:00
return edit_user ();
2005-09-14 02:03:02 +02:00
}
2005-09-18 21:44:14 +02:00
function edit_user ( $user_id = 0 ) {
if ( $user_id != 0 ) {
2005-09-14 02:03:02 +02:00
$update = true ;
$user -> ID = $user_id ;
$userdata = get_userdata ( $user_id );
$user -> user_login = $userdata -> user_login ;
} else {
$update = false ;
$user = '' ;
}
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'user_login' ]))
2005-09-14 02:03:02 +02:00
$user -> user_login = wp_specialchars ( trim ( $_POST [ 'user_login' ]));
$pass1 = $pass2 = '' ;
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'pass1' ]))
2005-09-14 02:03:02 +02:00
$pass1 = $_POST [ 'pass1' ];
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'pass2' ]))
2005-09-14 02:03:02 +02:00
$pass2 = $_POST [ 'pass2' ];
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'email' ]))
2005-09-14 02:03:02 +02:00
$user -> user_email = wp_specialchars ( trim ( $_POST [ 'email' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'url' ])) {
2005-09-14 02:03:02 +02:00
$user -> user_url = wp_specialchars ( trim ( $_POST [ 'url' ]));
2005-09-18 21:44:14 +02:00
$user -> user_url = preg_match ( '/^(https?|ftps?|mailto|news|gopher):/is' , $user -> user_url ) ? $user -> user_url : 'http://' . $user -> user_url ;
2005-09-14 02:03:02 +02:00
}
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'first_name' ]))
2005-09-14 02:03:02 +02:00
$user -> first_name = wp_specialchars ( trim ( $_POST [ 'first_name' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'last_name' ]))
2005-09-14 02:03:02 +02:00
$user -> last_name = wp_specialchars ( trim ( $_POST [ 'last_name' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'nickname' ]))
2005-09-14 02:03:02 +02:00
$user -> nickname = wp_specialchars ( trim ( $_POST [ 'nickname' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'display_name' ]))
2005-09-14 02:03:02 +02:00
$user -> display_name = wp_specialchars ( trim ( $_POST [ 'display_name' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'description' ]))
2005-09-14 02:03:02 +02:00
$user -> description = wp_specialchars ( trim ( $_POST [ 'description' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'jabber' ]))
2005-09-14 02:03:02 +02:00
$user -> jabber = wp_specialchars ( trim ( $_POST [ 'jabber' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'aim' ]))
2005-09-14 02:03:02 +02:00
$user -> aim = wp_specialchars ( trim ( $_POST [ 'aim' ]));
2005-09-18 21:44:14 +02:00
if ( isset ( $_POST [ 'yim' ]))
2005-09-14 02:03:02 +02:00
$user -> yim = wp_specialchars ( trim ( $_POST [ 'yim' ]));
2005-09-18 21:44:14 +02:00
$errors = array ();
2005-09-14 02:03:02 +02:00
/* checking that username has been typed */
if ( $user -> user_login == '' )
$errors [ 'user_login' ] = __ ( '<strong>ERROR</strong>: Please enter a username.' );
/* checking the password has been typed twice */
2005-09-18 21:44:14 +02:00
do_action ( 'check_passwords' , array ( $user -> user_login , & $pass1 , & $pass2 ));
if ( ! $update ) {
if ( $pass1 == '' || $pass2 == '' )
2005-09-14 02:03:02 +02:00
$errors [ 'pass' ] = __ ( '<strong>ERROR</strong>: Please enter your password twice.' );
} else {
2005-09-18 21:44:14 +02:00
if (( empty ( $pass1 ) && ! empty ( $pass2 )) || ( empty ( $pass2 ) && ! empty ( $pass1 )))
2005-09-14 02:03:02 +02:00
$errors [ 'pass' ] = __ ( " <strong>ERROR</strong>: you typed your new password only once. " );
}
2005-09-18 21:44:14 +02:00
2005-09-14 02:03:02 +02:00
/* checking the password has been typed twice the same */
if ( $pass1 != $pass2 )
$errors [ 'pass' ] = __ ( '<strong>ERROR</strong>: Please type the same password in the two password fields.' );
2005-09-18 21:44:14 +02:00
if ( ! empty ( $pass1 ))
2005-09-14 02:03:02 +02:00
$user -> user_pass = $pass1 ;
2005-09-18 21:44:14 +02:00
if ( ! $update && username_exists ( $user_login ))
2005-09-14 02:03:02 +02:00
$errors [ 'user_login' ] = __ ( '<strong>ERROR</strong>: This username is already registered, please choose another one.' );
/* checking e-mail address */
2005-09-18 21:44:14 +02:00
if ( empty ( $user -> user_email )) {
2005-09-14 02:03:02 +02:00
$errors [ 'user_email' ] = __ ( " <strong>ERROR</strong>: please type an e-mail address " );
2005-09-18 21:44:14 +02:00
} else
if ( ! is_email ( $user -> user_email )) {
$errors [ 'user_email' ] = __ ( " <strong>ERROR</strong>: the email address isn't correct " );
}
2005-09-14 02:03:02 +02:00
2005-09-18 21:44:14 +02:00
if ( count ( $errors ) != 0 )
2005-09-14 02:03:02 +02:00
return $errors ;
2005-09-18 21:44:14 +02:00
if ( $update ) {
2005-09-14 02:03:02 +02:00
$user_id = wp_update_user ( get_object_vars ( $user ));
} else {
$user_id = wp_insert_user ( get_object_vars ( $user ));
wp_new_user_notification ( $user_id );
}
2005-09-18 21:44:14 +02:00
2005-09-14 02:03:02 +02:00
return $errors ;
}
2005-07-12 17:53:13 +02:00
function wp_delete_user ( $id , $reassign = 'novalue' ) {
2005-07-05 00:03:42 +02:00
global $wpdb ;
$id = ( int ) $id ;
2005-09-18 21:44:14 +02:00
if ( $reassign == 'novalue' ) {
2005-07-12 17:53:13 +02:00
$post_ids = $wpdb -> get_col ( " SELECT ID FROM $wpdb->posts WHERE post_author = $id " );
2005-09-18 21:44:14 +02:00
2005-07-12 17:53:13 +02:00
if ( $post_ids ) {
$post_ids = implode ( ',' , $post_ids );
2005-09-18 21:44:14 +02:00
2005-07-12 17:53:13 +02:00
// Delete comments, *backs
$wpdb -> query ( " DELETE FROM $wpdb->comments WHERE comment_post_ID IN ( $post_ids ) " );
// Clean cats
$wpdb -> query ( " DELETE FROM $wpdb->post2cat WHERE post_id IN ( $post_ids ) " );
// Clean post_meta
$wpdb -> query ( " DELETE FROM $wpdb->postmeta WHERE post_id IN ( $post_ids ) " );
// Delete posts
$wpdb -> query ( " DELETE FROM $wpdb->posts WHERE post_author = $id " );
}
2005-09-18 21:44:14 +02:00
2005-07-05 00:03:42 +02:00
// Clean links
$wpdb -> query ( " DELETE FROM $wpdb->links WHERE link_owner = $id " );
2005-07-12 17:53:13 +02:00
} else {
2005-09-18 21:44:14 +02:00
$reassign = ( int ) $reassign ;
2005-07-12 17:53:13 +02:00
$wpdb -> query ( " UPDATE $wpdb->posts SET post_author = { $reassign } WHERE post_author = { $id } " );
$wpdb -> query ( " UPDATE $wpdb->links SET link_owner = { $reassign } WHERE link_owner = { $id } " );
2005-07-05 00:03:42 +02:00
}
// FINALLY, delete user
$wpdb -> query ( " DELETE FROM $wpdb->users WHERE ID = $id " );
do_action ( 'delete_user' , $id );
return true ;
}
2005-09-18 21:44:14 +02:00
function get_link ( $link_id , $output = OBJECT ) {
global $wpdb ;
$link = $wpdb -> get_row ( " SELECT * FROM $wpdb->links WHERE link_id = ' $link_id ' " );
if ( $output == OBJECT ) {
return $link ;
} elseif ( $output == ARRAY_A ) {
return get_object_vars ( $link );
} elseif ( $output == ARRAY_N ) {
return array_values ( get_object_vars ( $link ));
} else {
return $link ;
}
}
function get_link_to_edit ( $link_id ) {
$link = get_link ( $link_id );
$link -> link_url = wp_specialchars ( $link -> link_url , 1 );
$link -> link_name = wp_specialchars ( $link -> link_name , 1 );
$link -> link_description = wp_specialchars ( $link -> link_description );
$link -> link_notes = wp_specialchars ( $link -> link_notes );
$link -> link_rss = wp_specialchars ( $link -> link_rss );
return $link ;
}
2005-09-19 02:47:58 +02:00
function get_default_link_to_edit () {
if ( isset ( $_GET [ 'linkurl' ]) )
$link -> link_url = wp_specialchars ( $_GET [ 'linkurl' ], 1 );
else
$link -> link_url = '' ;
if ( isset ( $_GET [ 'name' ]) )
$link -> link_name = wp_specialchars ( $_GET [ 'name' ], 1 );
else
$link -> link_name = '' ;
return $link ;
}
2005-09-18 21:44:14 +02:00
function add_link () {
return edit_link ();
}
function edit_link ( $link_id = '' ) {
if ( ! current_user_can ( 'manage_links' ))
die ( __ ( " Cheatin' uh ? " ));
$_POST [ 'link_url' ] = wp_specialchars ( $_POST [ 'link_url' ]);
//$link_url = preg_match('/^(https?|ftps?|mailto|news|gopher):/is', $link_url) ? $link_url : 'http://'.$link_url;
$_POST [ 'link_name' ] = wp_specialchars ( $_POST [ 'link_name' ]);
$_POST [ 'link_image' ] = wp_specialchars ( $_POST [ 'link_image' ]);
$_POST [ 'link_rss' ] = wp_specialchars ( $_POST [ 'link_rss' ]);
$auto_toggle = get_autotoggle ( $_POST [ 'link_category' ]);
// if we are in an auto toggle category and this one is visible then we
// need to make the others invisible before we add this new one.
// FIXME Add category toggle func.
//if (($auto_toggle == 'Y') && ($link_visible == 'Y')) {
// $wpdb->query("UPDATE $wpdb->links set link_visible = 'N' WHERE link_category = $link_category");
//}
if ( ! empty ( $link_id ) ) {
$_POST [ 'link_id' ] = $link_id ;
return wp_update_link ( $_POST );
} else {
return wp_insert_link ( $_POST );
}
}
function wp_insert_link ( $linkdata ) {
2005-09-21 18:32:05 +02:00
global $wpdb , $current_user ;
2005-09-18 21:44:14 +02:00
extract ( $linkdata );
$update = false ;
if ( ! empty ( $link_id ) )
$update = true ;
if ( empty ( $link_rating ) )
$link_rating = 0 ;
if ( empty ( $link_target ) )
$link_target = '' ;
if ( empty ( $link_visible ) )
2005-09-21 18:32:05 +02:00
$link_visible = 'Y' ;
if ( empty ( $link_owner ) )
$link_owner = $current_user -> id ;
2005-09-18 21:44:14 +02:00
if ( $update ) {
$wpdb -> query ( " UPDATE $wpdb->links SET link_url=' $link_url ',
link_name = '$link_name' , link_image = '$link_image' ,
link_target = '$link_target' , link_category = '$link_category' ,
link_visible = '$link_visible' , link_description = '$link_description' ,
link_rating = '$link_rating' , link_rel = '$link_rel' ,
link_notes = '$link_notes' , link_rss = '$link_rss'
WHERE link_id = '$link_id' " );
} else {
$wpdb -> query ( " INSERT INTO $wpdb->links (link_url, link_name, link_image, link_target, link_category, link_description, link_visible, link_owner, link_rating, link_rel, link_notes, link_rss) VALUES(' $link_url ',' $link_name ', ' $link_image ', ' $link_target ', ' $link_category ', ' $link_description ', ' $link_visible ', ' $link_owner ', ' $link_rating ', ' $link_rel ', ' $link_notes ', ' $link_rss ') " );
$link_id = $wpdb -> insert_id ;
}
if ( $update )
do_action ( 'edit_link' , $link_id );
else
do_action ( 'add_link' , $link_id );
return $link_id ;
}
function wp_update_link ( $linkdata ) {
2005-09-11 00:45:07 +02:00
global $wpdb ;
2005-09-18 21:44:14 +02:00
$link_id = ( int ) $linkdata [ 'link_id' ];
$link = get_link ( $link_id , ARRAY_A );
2005-09-11 00:45:07 +02:00
2005-09-18 21:44:14 +02:00
// Escape data pulled from DB.
$link = add_magic_quotes ( $link );
// Merge old and new fields with new fields overwriting old ones.
$linkdata = array_merge ( $link , $linkdata );
return wp_insert_link ( $linkdata );
}
function wp_delete_link ( $link_id ) {
global $wpdb ;
return $wpdb -> query ( " DELETE FROM $wpdb->links WHERE link_id = ' $link_id ' " );
}
function post_exists ( $title , $content = '' , $post_date = '' ) {
global $wpdb ;
if ( ! empty ( $post_date ))
2005-09-11 00:45:07 +02:00
$post_date = " AND post_date = ' $post_date ' " ;
2005-09-18 21:44:14 +02:00
if ( ! empty ( $title ))
2005-09-11 00:45:07 +02:00
return $wpdb -> get_var ( " SELECT ID FROM $wpdb->posts WHERE post_title = ' $title ' $post_date " );
2005-09-18 21:44:14 +02:00
else
if ( ! empty ( $content ))
return $wpdb -> get_var ( " SELECT ID FROM $wpdb->posts WHERE post_content = ' $content ' $post_date " );
2005-09-11 00:45:07 +02:00
return 0 ;
}
2005-09-16 01:36:48 +02:00
function comment_exists ( $comment_author , $comment_date ) {
global $wpdb ;
return $wpdb -> get_var ( " SELECT comment_post_ID FROM $wpdb->comments
2005-09-18 21:44:14 +02:00
WHERE comment_author = '$comment_author' AND comment_date = '$comment_date' " );
2005-09-16 01:36:48 +02:00
}
2005-09-18 21:44:14 +02:00
function url_shorten ( $url ) {
2004-02-17 09:35:04 +01:00
$short_url = str_replace ( 'http://' , '' , stripslashes ( $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 )
2005-09-18 21:44:14 +02:00
$short_url = substr ( $short_url , 0 , 32 ) . '...' ;
2004-02-17 09:35:04 +01:00
return $short_url ;
}
2004-02-13 10:59:47 +01:00
function selected ( $selected , $current ) {
2005-09-18 21:44:14 +02:00
if ( $selected == $current )
echo ' selected="selected"' ;
2004-02-13 10:59:47 +01:00
}
function checked ( $checked , $current ) {
2005-09-18 21:44:14 +02:00
if ( $checked == $current )
echo ' checked="checked"' ;
2004-02-13 10:59:47 +01:00
}
2005-09-18 21:44:14 +02:00
function return_categories_list ( $parent = 0 ) {
2005-07-23 08:22:48 +02:00
global $wpdb ;
return $wpdb -> get_col ( " SELECT cat_ID FROM $wpdb->categories WHERE category_parent = $parent ORDER BY category_count DESC " );
2004-06-16 18:40:40 +02:00
}
function get_nested_categories ( $default = 0 , $parent = 0 ) {
2005-09-18 21:44:14 +02:00
global $post_ID , $mode , $wpdb ;
if ( $post_ID ) {
$checked_categories = $wpdb -> get_col ( "
SELECT category_id
FROM $wpdb -> categories , $wpdb -> post2cat
WHERE $wpdb -> post2cat . category_id = cat_ID AND $wpdb -> post2cat . post_id = '$post_ID'
" );
if ( count ( $checked_categories ) == 0 ) {
// No selected categories, strange
$checked_categories [] = $default ;
}
} else {
$checked_categories [] = $default ;
}
$cats = return_categories_list ( $parent );
$result = array ();
if ( is_array ( $cats )) {
foreach ( $cats as $cat ) {
2005-08-03 02:21:53 +02:00
$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 );
}
}
2004-02-09 09:55:29 +01:00
2005-08-03 02:21:53 +02:00
return $result ;
2004-02-09 09:55:29 +01:00
}
function write_nested_categories ( $categories ) {
2005-09-18 21:44:14 +02:00
foreach ( $categories as $category ) {
echo '<label for="category-' , $category [ 'cat_ID' ], '" class="selectit"><input value="' , $category [ 'cat_ID' ], '" type="checkbox" name="post_category[]" id="category-' , $category [ 'cat_ID' ], '"' , ( $category [ 'checked' ] ? ' checked="checked"' : " " ), '/> ' , wp_specialchars ( $category [ 'cat_name' ]), " </label> \n " ;
2004-02-09 09:55:29 +01:00
2005-09-18 21:44:14 +02:00
if ( isset ( $category [ 'children' ])) {
echo " \n <span class='cat-nest'> \n " ;
write_nested_categories ( $category [ 'children' ]);
echo " </span> \n " ;
}
}
2004-02-09 09:55:29 +01:00
}
function dropdown_categories ( $default = 0 ) {
2005-09-18 21:44:14 +02:00
write_nested_categories ( get_nested_categories ( $default ));
}
2004-01-27 10:33:19 +01:00
// Dandy new recursive multiple category stuff.
2004-02-01 03:00:26 +01:00
function cat_rows ( $parent = 0 , $level = 0 , $categories = 0 ) {
2005-07-15 04:16:45 +02:00
global $wpdb , $class ;
2005-07-09 03:27:46 +02:00
2005-09-18 21:44:14 +02:00
if ( ! $categories )
2004-05-24 10:22:18 +02:00
$categories = $wpdb -> get_results ( " SELECT * FROM $wpdb->categories ORDER BY cat_name " );
2004-11-18 20:51:31 +01:00
2004-01-27 10:33:19 +01:00
if ( $categories ) {
foreach ( $categories as $category ) {
2004-02-01 03:00:26 +01:00
if ( $category -> category_parent == $parent ) {
2004-12-12 21:41:19 +01:00
$category -> cat_name = wp_specialchars ( $category -> cat_name );
2004-05-24 10:22:18 +02:00
$count = $wpdb -> get_var ( " SELECT COUNT(post_id) FROM $wpdb->post2cat WHERE category_id = $category->cat_ID " );
2004-02-01 03:00:26 +01:00
$pad = str_repeat ( '— ' , $level );
2005-09-18 21:44:14 +02:00
if ( current_user_can ( 'manage_categories' ))
$edit = " <a href='categories.php?action=edit&cat_ID= $category->cat_ID ' class='edit'> " . __ ( 'Edit' ) . " </a></td><td><a href='categories.php?action=delete&cat_ID= $category->cat_ID ' onclick= \" return deleteSomething( 'cat', $category->cat_ID , ' " . sprintf ( __ ( " You are about to delete the category "%s". All of its posts will go to the default category. \\ n"OK" to delete, "Cancel" to stop. " ), wp_specialchars ( $category -> cat_name , 1 )) . " ' ); \" class='delete'> " . __ ( 'Delete' ) . " </a> " ;
2004-11-18 20:51:31 +01:00
else
$edit = '' ;
2005-09-18 21:44:14 +02:00
2004-07-06 20:14:42 +02:00
$class = ( 'alternate' == $class ) ? '' : 'alternate' ;
2005-08-31 04:39:17 +02:00
echo " <tr id='cat- $category->cat_ID ' class=' $class '><th scope='row'> $category->cat_ID </th><td> $pad $category->cat_name </td>
2005-09-18 21:44:14 +02:00
< td > $category -> category_description </ td >
< td > $count </ td >
< td > $edit </ td >
</ tr > " ;
cat_rows ( $category -> cat_ID , $level + 1 , $categories );
2005-01-02 00:05:07 +01:00
}
}
} else {
return false ;
}
}
2005-09-18 21:44:14 +02:00
function page_rows ( $parent = 0 , $level = 0 , $pages = 0 ) {
2005-07-15 04:16:45 +02:00
global $wpdb , $class , $post ;
2005-01-02 00:05:07 +01:00
if ( ! $pages )
$pages = $wpdb -> get_results ( " SELECT * FROM $wpdb->posts WHERE post_status = 'static' ORDER BY menu_order " );
if ( $pages ) {
2005-09-18 21:44:14 +02:00
foreach ( $pages as $post ) {
start_wp ();
2005-01-02 00:05:07 +01:00
if ( $post -> post_parent == $parent ) {
$post -> post_title = wp_specialchars ( $post -> post_title );
$pad = str_repeat ( '— ' , $level );
$id = $post -> ID ;
$class = ( 'alternate' == $class ) ? '' : 'alternate' ;
?>
2005-08-31 04:39:17 +02:00
< tr id = 'page-<?php echo $id; ?>' class = '<?php echo $class; ?>' >
2005-01-02 00:05:07 +01:00
< th scope = " row " >< ? php echo $post -> ID ; ?> </th>
< td >
< ? php echo $pad ; ?> <?php the_title() ?>
</ td >
< td >< ? php the_author () ?> </td>
2005-02-12 10:32:00 +01:00
< td >< ? php echo mysql2date ( 'Y-m-d g:i a' , $post -> post_modified ); ?> </td>
2005-01-02 00:05:07 +01:00
< td >< a href = " <?php the_permalink(); ?> " rel = " permalink " class = " edit " >< ? php _e ( 'View' ); ?> </a></td>
2005-07-14 00:26:26 +02:00
< td >< ? php if ( current_user_can ( 'edit_pages' ) ) { echo " <a href='post.php?action=edit&post= $id ' class='edit'> " . __ ( 'Edit' ) . " </a> " ; } ?> </td>
2005-08-31 04:39:17 +02:00
< td >< ? php if ( current_user_can ( 'edit_pages' ) ) { echo " <a href='post.php?action=delete&post= $id ' class='delete' onclick= \" return deleteSomething( 'page', " . $id . " , ' " . sprintf ( __ ( " You are about to delete the "%s" page. \\ n"OK" to delete, "Cancel" to stop. " ), wp_specialchars ( get_the_title ( '' , '' , 0 ), 1 )) . " ' ); \" > " . __ ( 'Delete' ) . " </a> " ; } ?> </td>
2005-01-02 00:05:07 +01:00
</ tr >
< ? php
2005-09-18 21:44:14 +02:00
page_rows ( $id , $level + 1 , $pages );
2004-02-01 03:00:26 +01:00
}
2004-01-27 10:33:19 +01:00
}
} else {
return false ;
}
}
2004-12-09 01:44:05 +01:00
function wp_dropdown_cats ( $currentcat = 0 , $currentparent = 0 , $parent = 0 , $level = 0 , $categories = 0 ) {
2004-05-24 10:22:18 +02:00
global $wpdb , $bgcolor ;
2004-02-01 03:00:26 +01:00
if ( ! $categories ) {
2004-05-24 10:22:18 +02:00
$categories = $wpdb -> get_results ( " SELECT * FROM $wpdb->categories ORDER BY cat_name " );
2004-02-01 03:00:26 +01:00
}
2004-01-27 10:33:19 +01:00
if ( $categories ) {
2005-09-18 21:44:14 +02:00
foreach ( $categories as $category ) {
if ( $currentcat != $category -> cat_ID && $parent == $category -> category_parent ) {
$count = $wpdb -> get_var ( " SELECT COUNT(post_id) FROM $wpdb->post2cat WHERE category_id = $category->cat_ID " );
$pad = str_repeat ( '– ' , $level );
$category -> cat_name = wp_specialchars ( $category -> cat_name );
echo " \n \t <option value=' $category->cat_ID ' " ;
if ( $currentparent == $category -> cat_ID )
echo " selected='selected' " ;
echo " > $pad $category->cat_name </option> " ;
wp_dropdown_cats ( $currentcat , $currentparent , $category -> cat_ID , $level + 1 , $categories );
}
}
2004-01-27 10:33:19 +01:00
} else {
return false ;
}
}
2005-09-19 02:47:58 +02:00
function link_category_dropdown ( $fieldname , $selected = 0 ) {
global $wpdb ;
$results = $wpdb -> get_results ( " SELECT cat_id, cat_name, auto_toggle FROM $wpdb->linkcategories ORDER BY cat_id " );
echo " \n <select name=' $fieldname ' size='1'> \n " ;
foreach ( $results as $row ) {
echo " \n \t <option value=' $row->cat_id ' " ;
if ( $row -> cat_id == $selected )
echo " selected='selected' " ;
echo " > $row->cat_id : " . wp_specialchars ( $row -> cat_name );
if ( $row -> auto_toggle == 'Y' )
echo ' (auto toggle)' ;
echo " </option> " ;
}
echo " \n </select> \n " ;
}
2004-02-05 15:28:02 +01:00
function wp_create_thumbnail ( $file , $max_side , $effect = '' ) {
2005-09-18 21:44:14 +02:00
// 1 = GIF, 2 = JPEG, 3 = PNG
if ( file_exists ( $file )) {
$type = getimagesize ( $file );
// if the associated function doesn't exist - then it's not
// handle. duh. i hope.
if ( ! function_exists ( 'imagegif' ) && $type [ 2 ] == 1 ) {
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
}
elseif ( ! function_exists ( 'imagejpeg' ) && $type [ 2 ] == 2 ) {
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
}
elseif ( ! function_exists ( 'imagepng' ) && $type [ 2 ] == 3 ) {
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
} else {
// create the initial copy from the original file
if ( $type [ 2 ] == 1 ) {
$image = imagecreatefromgif ( $file );
}
elseif ( $type [ 2 ] == 2 ) {
$image = imagecreatefromjpeg ( $file );
}
elseif ( $type [ 2 ] == 3 ) {
$image = imagecreatefrompng ( $file );
}
2004-02-05 15:28:02 +01:00
if ( function_exists ( 'imageantialias' ))
2005-09-18 21:44:14 +02:00
imageantialias ( $image , TRUE );
$image_attr = getimagesize ( $file );
// figure out the longest side
if ( $image_attr [ 0 ] > $image_attr [ 1 ]) {
$image_width = $image_attr [ 0 ];
$image_height = $image_attr [ 1 ];
$image_new_width = $max_side ;
$image_ratio = $image_width / $image_new_width ;
$image_new_height = $image_height / $image_ratio ;
//width is > height
} else {
$image_width = $image_attr [ 0 ];
$image_height = $image_attr [ 1 ];
$image_new_height = $max_side ;
$image_ratio = $image_height / $image_new_height ;
$image_new_width = $image_width / $image_ratio ;
//height > width
}
$thumbnail = imagecreatetruecolor ( $image_new_width , $image_new_height );
@ imagecopyresampled ( $thumbnail , $image , 0 , 0 , 0 , 0 , $image_new_width , $image_new_height , $image_attr [ 0 ], $image_attr [ 1 ]);
// move the thumbnail to it's final destination
$path = explode ( '/' , $file );
$thumbpath = substr ( $file , 0 , strrpos ( $file , '/' )) . '/thumb-' . $path [ count ( $path ) - 1 ];
if ( $type [ 2 ] == 1 ) {
if ( ! imagegif ( $thumbnail , $thumbpath )) {
$error = __ ( " Thumbnail path invalid " );
}
}
elseif ( $type [ 2 ] == 2 ) {
if ( ! imagejpeg ( $thumbnail , $thumbpath )) {
$error = __ ( " Thumbnail path invalid " );
}
}
elseif ( $type [ 2 ] == 3 ) {
if ( ! imagepng ( $thumbnail , $thumbpath )) {
$error = __ ( " Thumbnail path invalid " );
}
}
}
}
if ( ! empty ( $error )) {
return $error ;
} else {
return 1 ;
}
2004-02-05 15:28:02 +01:00
}
2004-03-23 19:02:05 +01:00
// Some postmeta stuff
function has_meta ( $postid ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-03-23 19:02:05 +01:00
return $wpdb -> get_results ( "
2005-09-18 21:44:14 +02:00
SELECT meta_key , meta_value , meta_id , post_id
FROM $wpdb -> postmeta
WHERE post_id = '$postid'
ORDER BY meta_key , meta_id " , ARRAY_A);
2004-03-23 19:02:05 +01:00
}
function list_meta ( $meta ) {
2005-09-18 21:44:14 +02:00
global $post_ID ;
2004-03-23 19:02:05 +01:00
// Exit if no meta
2005-09-18 21:44:14 +02:00
if ( ! $meta )
return ;
2004-12-09 05:12:20 +01:00
$count = 0 ;
2004-04-28 04:23:46 +02:00
?>
2004-04-28 21:49:27 +02:00
< table id = 'meta-list' cellpadding = " 3 " >
2004-04-28 04:23:46 +02:00
< tr >
< th >< ? php _e ( 'Key' ) ?> </th>
< th >< ? php _e ( 'Value' ) ?> </th>
< th colspan = '2' >< ? php _e ( 'Action' ) ?> </th>
</ tr >
< ? php
2005-09-18 21:44:14 +02:00
2004-03-23 19:02:05 +01:00
foreach ( $meta as $entry ) {
2005-09-18 21:44:14 +02:00
++ $count ;
if ( $count % 2 )
$style = 'alternate' ;
else
$style = '' ;
if ( '_' == $entry [ 'meta_key' ] { 0 })
$style .= ' hidden' ;
2004-04-28 04:23:46 +02:00
echo "
2005-09-18 21:44:14 +02:00
< tr class = '$style' >
< td valign = 'top' >< input name = 'meta[{$entry[' meta_id ']}][key]' tabindex = '6' type = 'text' size = '20' value = '{$entry[' meta_key ']}' /></ td >
< td >< textarea name = 'meta[{$entry[' meta_id ']}][value]' tabindex = '6' rows = '2' cols = '30' > { $entry [ 'meta_value' ]} </ textarea ></ td >
< td align = 'center' width = '10%' >< input name = 'updatemeta' type = 'submit' class = 'updatemeta' tabindex = '6' value = '".__(' Update ')."' /></ td >
< td align = 'center' width = '10%' >< input name = 'deletemeta[{$entry[' meta_id ']}]' type = 'submit' class = 'deletemeta' tabindex = '6' value = '".__(' Delete ')."' /></ td >
</ tr >
" ;
2004-03-23 19:02:05 +01:00
}
2004-04-28 04:23:46 +02:00
echo "
2005-09-18 21:44:14 +02:00
</ table >
" ;
2004-03-23 19:02:05 +01:00
}
// Get a list of previously defined keys
function get_meta_keys () {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2005-09-18 21:44:14 +02:00
2004-03-23 19:02:05 +01:00
$keys = $wpdb -> get_col ( "
2005-09-18 21:44:14 +02:00
SELECT meta_key
FROM $wpdb -> postmeta
GROUP BY meta_key
ORDER BY meta_key " );
2004-03-23 19:02:05 +01:00
return $keys ;
}
function meta_form () {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-04-28 06:49:16 +02:00
$keys = $wpdb -> get_col ( "
2005-09-18 21:44:14 +02:00
SELECT meta_key
FROM $wpdb -> postmeta
GROUP BY meta_key
ORDER BY meta_id DESC
LIMIT 10 " );
2004-03-23 19:02:05 +01:00
?>
2005-08-27 20:42:41 +02:00
< h3 >< ? php _e ( 'Add a new custom field:' ) ?> </h3>
2004-04-28 21:49:27 +02:00
< table cellspacing = " 3 " cellpadding = " 3 " >
2004-04-28 04:23:46 +02:00
< tr >
< th colspan = " 2 " >< ? php _e ( 'Key' ) ?> </th>
< th >< ? php _e ( 'Value' ) ?> </th>
</ tr >
< tr valign = " top " >
2004-05-20 13:32:14 +02:00
< td align = " right " width = " 18% " >
< ? php if ( $keys ) : ?>
< select id = " metakeyselect " name = " metakeyselect " tabindex = " 7 " >
2004-12-04 07:53:10 +01:00
< option value = " #NONE# " >< ? php _e ( '- Select -' ); ?> </option>
2004-03-23 19:02:05 +01:00
< ? php
2005-09-18 21:44:14 +02:00
foreach ( $keys as $key ) {
2004-04-28 04:23:46 +02:00
echo " \n \t <option value=' $key '> $key </option> " ;
2004-03-23 19:02:05 +01:00
}
?>
2004-12-04 07:53:10 +01:00
</ select > < ? php _e ( 'or' ); ?>
2004-05-20 13:32:14 +02:00
< ? php endif ; ?>
</ td >
2004-04-28 21:49:27 +02:00
< td >< input type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " /></ td >
2004-12-09 05:12:20 +01:00
< td >< textarea id = " metavalue " name = " metavalue " rows = " 3 " cols = " 25 " tabindex = " 8 " ></ textarea ></ td >
2004-04-28 04:23:46 +02:00
</ tr >
2004-03-23 19:02:05 +01:00
2004-04-28 04:23:46 +02:00
</ table >
2004-12-09 05:12:20 +01:00
< p class = " submit " >< input type = " submit " name = " updatemeta " tabindex = " 9 " value = " <?php _e('Add Custom Field »') ?> " /></ p >
2004-03-23 19:02:05 +01:00
< ? php
2005-09-18 21:44:14 +02:00
2004-03-23 19:02:05 +01:00
}
function add_meta ( $post_ID ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-03-23 19:02:05 +01:00
2005-09-18 21:44:14 +02:00
$metakeyselect = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metakeyselect' ])));
$metakeyinput = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metakeyinput' ])));
$metavalue = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metavalue' ])));
if ( ! empty ( $metavalue ) && ((( '#NONE#' != $metakeyselect ) && ! empty ( $metakeyselect )) || ! empty ( $metakeyinput ))) {
2004-03-23 19:02:05 +01:00
// We have a key/value pair. If both the select and the
// input for the key have data, the input takes precedence:
if ( '#NONE#' != $metakeyselect )
$metakey = $metakeyselect ;
2005-09-18 21:44:14 +02:00
2004-03-23 19:02:05 +01:00
if ( $metakeyinput )
$metakey = $metakeyinput ; // default
$result = $wpdb -> query ( "
2005-09-18 21:44:14 +02:00
INSERT INTO $wpdb -> postmeta
( post_id , meta_key , meta_value )
VALUES ( '$post_ID' , '$metakey' , '$metavalue' )
" );
2004-03-23 19:02:05 +01:00
}
} // add_meta
2004-04-28 06:49:16 +02:00
function delete_meta ( $mid ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-04-28 04:23:46 +02:00
2004-05-24 10:22:18 +02:00
$result = $wpdb -> query ( " DELETE FROM $wpdb->postmeta WHERE meta_id = ' $mid ' " );
2004-03-23 19:02:05 +01:00
}
2004-04-28 06:49:16 +02:00
function update_meta ( $mid , $mkey , $mvalue ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-04-28 06:49:16 +02:00
2004-05-24 10:22:18 +02:00
return $wpdb -> query ( " UPDATE $wpdb->postmeta SET meta_key = ' $mkey ', meta_value = ' $mvalue ' WHERE meta_id = ' $mid ' " );
2004-04-28 06:49:16 +02:00
}
2005-03-10 10:50:26 +01:00
function touch_time ( $edit = 1 , $for_post = 1 ) {
2005-07-17 21:02:05 +02:00
global $month , $post , $comment ;
2005-09-18 21:44:14 +02:00
if ( $for_post && ( 'draft' == $post -> post_status )) {
2004-04-30 10:56:49 +02:00
$checked = 'checked="checked" ' ;
$edit = false ;
} else {
$checked = ' ' ;
}
2005-09-18 21:44:14 +02:00
echo '<fieldset><legend><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp" ' . $checked . '/> <label for="timestamp">' . __ ( 'Edit timestamp' ) . '</label></legend>' ;
2004-04-30 10:56:49 +02:00
$time_adj = time () + ( get_settings ( 'gmt_offset' ) * 3600 );
2005-07-17 21:02:05 +02:00
$post_date = ( $for_post ) ? $post -> post_date : $comment -> comment_date ;
2004-04-30 10:56:49 +02:00
$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 " <select name= \" mm \" > \n " ;
2005-09-18 21:44:14 +02:00
for ( $i = 1 ; $i < 13 ; $i = $i + 1 ) {
2004-04-30 10:56:49 +02:00
echo " \t \t \t <option value= \" $i\ " " ;
if ( $i == $mm )
2005-09-18 21:44:14 +02:00
echo " selected='selected' " ;
2004-04-30 10:56:49 +02:00
if ( $i < 10 ) {
$ii = " 0 " . $i ;
} else {
$ii = " $i " ;
}
echo " > " . $month [ " $ii " ] . " </option> \n " ;
2005-09-18 21:44:14 +02:00
}
2004-08-01 10:28:56 +02:00
?>
2004-04-30 10:56:49 +02:00
</ select >
2004-08-01 10:28:56 +02:00
< input type = " text " name = " jj " value = " <?php echo $jj ; ?> " size = " 2 " maxlength = " 2 " />
2004-04-30 10:56:49 +02:00
< input type = " text " name = " aa " value = " <?php echo $aa ?> " size = " 4 " maxlength = " 5 " /> @
< input type = " text " name = " hh " value = " <?php echo $hh ?> " size = " 2 " maxlength = " 2 " /> :
2004-08-01 10:28:56 +02:00
< input type = " text " name = " mn " value = " <?php echo $mn ?> " size = " 2 " maxlength = " 2 " />
2005-03-10 10:50:26 +01:00
< input type = " hidden " name = " ss " value = " <?php echo $ss ?> " size = " 2 " maxlength = " 2 " />
< ? php _e ( 'Existing timestamp' ); ?> :
< ? php
2005-09-18 21:44:14 +02:00
// We might need to readjust to display proper existing timestamp
if ( $for_post && ( 'draft' == $post -> post_status )) {
$jj = mysql2date ( 'd' , $post_date );
$mm = mysql2date ( 'm' , $post_date );
$aa = mysql2date ( 'Y' , $post_date );
$hh = mysql2date ( 'H' , $post_date );
$mn = mysql2date ( 'i' , $post_date );
$ss = mysql2date ( 's' , $post_date );
}
echo " { $month [ $mm ] } $jj , $aa @ $hh : $mn " ;
?>
2005-03-10 10:50:26 +01:00
</ fieldset >
2004-04-30 10:56:49 +02:00
< ? php
2005-09-18 21:44:14 +02:00
2004-04-30 10:56:49 +02:00
}
2004-05-17 21:40:56 +02:00
function check_admin_referer () {
2005-09-18 21:44:14 +02:00
$adminurl = strtolower ( get_settings ( 'siteurl' )) . '/wp-admin' ;
$referer = strtolower ( $_SERVER [ 'HTTP_REFERER' ]);
if ( ! strstr ( $referer , $adminurl ))
2005-05-09 20:26:53 +02:00
die ( __ ( 'Sorry, you need to <a href="http://codex.wordpress.org/Enable_Sending_Referrers">enable sending referrers</a> for this feature to work.' ));
do_action ( 'check_admin_referer' );
2004-05-17 21:40:56 +02:00
}
2005-08-20 03:56:27 +02:00
// insert_with_markers: Owen Winkler, fixed by Eric Anderson
2004-07-28 01:37:45 +02:00
// Inserts an array of strings into a file (.htaccess), placing it between
// BEGIN and END markers. Replaces existing marked info. Retains surrounding
// data. Creates file if none exists.
// Returns true on write success, false on failure.
function insert_with_markers ( $filename , $marker , $insertion ) {
2004-09-27 04:32:51 +02:00
if ( ! file_exists ( $filename ) || is_writeable ( $filename )) {
if ( ! file_exists ( $filename )) {
$markerdata = '' ;
} else {
$markerdata = explode ( " \n " , implode ( '' , file ( $filename )));
}
$f = fopen ( $filename , 'w' );
$foundit = false ;
if ( $markerdata ) {
$state = true ;
2005-09-18 21:44:14 +02:00
foreach ( $markerdata as $markerline ) {
if ( strstr ( $markerline , " # BEGIN { $marker } " ))
$state = false ;
if ( $state )
fwrite ( $f , " { $markerline } \n " );
2005-09-16 05:25:22 +02:00
if ( strstr ( $markerline , " # END { $marker } " )) {
2005-08-20 03:56:27 +02:00
fwrite ( $f , " # BEGIN { $marker } \n " );
2005-09-18 21:44:14 +02:00
if ( is_array ( $insertion ))
foreach ( $insertion as $insertline )
fwrite ( $f , " { $insertline } \n " );
2005-08-20 03:56:27 +02:00
fwrite ( $f , " # END { $marker } \n " );
2004-09-27 04:32:51 +02:00
$state = true ;
$foundit = true ;
}
}
}
if ( ! $foundit ) {
fwrite ( $f , " # BEGIN { $marker } \n " );
2005-09-18 21:44:14 +02:00
foreach ( $insertion as $insertline )
fwrite ( $f , " { $insertline } \n " );
2005-08-20 03:56:27 +02:00
fwrite ( $f , " # END { $marker } \n " );
2004-09-27 04:32:51 +02:00
}
fclose ( $f );
return true ;
} else {
return false ;
}
2004-07-28 01:37:45 +02:00
}
2005-08-20 03:56:27 +02:00
// extract_from_markers: Owen Winkler
2004-07-28 01:37:45 +02:00
// Returns an array of strings from a file (.htaccess) from between BEGIN
// and END markers.
function extract_from_markers ( $filename , $marker ) {
2005-09-18 21:44:14 +02:00
$result = array ();
2004-07-28 01:37:45 +02:00
2004-09-27 04:32:51 +02:00
if ( ! file_exists ( $filename )) {
return $result ;
}
2005-09-18 21:44:14 +02:00
if ( $markerdata = explode ( " \n " , implode ( '' , file ( $filename ))));
2004-09-27 04:32:51 +02:00
{
$state = false ;
2005-09-18 21:44:14 +02:00
foreach ( $markerdata as $markerline ) {
if ( strstr ( $markerline , " # END { $marker } " ))
$state = false ;
if ( $state )
$result [] = $markerline ;
if ( strstr ( $markerline , " # BEGIN { $marker } " ))
$state = true ;
2004-09-27 04:32:51 +02:00
}
}
return $result ;
2004-07-28 01:37:45 +02:00
}
2004-10-06 04:18:37 +02:00
function save_mod_rewrite_rules () {
2004-12-03 03:38:11 +01:00
global $is_apache , $wp_rewrite ;
2004-12-23 01:53:56 +01:00
$home_path = get_home_path ();
2004-10-06 04:18:37 +02:00
2005-09-18 21:44:14 +02:00
if ( ! $wp_rewrite -> using_mod_rewrite_permalinks ())
2004-12-27 23:30:52 +01:00
return ;
2005-09-18 21:44:14 +02:00
if ( ! (( ! file_exists ( $home_path . '.htaccess' ) && is_writable ( $home_path )) || is_writable ( $home_path . '.htaccess' )))
2004-12-27 23:30:52 +01:00
return ;
2005-09-18 21:44:14 +02:00
if ( ! $is_apache )
2004-12-27 23:30:52 +01:00
return ;
$rules = explode ( " \n " , $wp_rewrite -> mod_rewrite_rules ());
insert_with_markers ( $home_path . '.htaccess' , 'WordPress' , $rules );
2004-10-06 04:18:37 +02:00
}
2005-09-18 21:44:14 +02:00
function the_quicktags () {
// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP
if ( ! strstr ( $_SERVER [ 'HTTP_USER_AGENT' ], 'Safari' ))
: echo '
< div id = " quicktags " >
< script src = " ../wp-includes/js/quicktags.js " type = " text/javascript " ></ script >
< script type = " text/javascript " > edToolbar (); </ script >
' ;
2004-09-09 19:51:33 +02:00
echo '</div>' ;
2005-09-18 21:44:14 +02:00
endif ;
2004-09-09 19:51:33 +02:00
}
2004-09-16 20:09:32 +02:00
function validate_current_theme () {
$theme_loc = 'wp-content/themes' ;
2005-09-18 21:44:14 +02:00
$theme_root = ABSPATH . $theme_loc ;
2004-09-16 20:09:32 +02:00
$template = get_settings ( 'template' );
$stylesheet = get_settings ( 'stylesheet' );
2005-09-18 21:44:14 +02:00
if (( $template != 'default' ) && ( ! file_exists ( " $theme_root / $template /index.php " ))) {
2004-09-16 20:09:32 +02:00
update_option ( 'template' , 'default' );
update_option ( 'stylesheet' , 'default' );
2004-10-06 08:20:52 +02:00
do_action ( 'switch_theme' , 'Default' );
2004-09-16 20:09:32 +02:00
return false ;
}
2005-09-18 21:44:14 +02:00
if (( $stylesheet != 'default' ) && ( ! file_exists ( " $theme_root / $stylesheet /style.css " ))) {
2004-09-16 20:09:32 +02:00
update_option ( 'template' , 'default' );
update_option ( 'stylesheet' , 'default' );
2004-10-06 08:20:52 +02:00
do_action ( 'switch_theme' , 'Default' );
2004-09-16 20:09:32 +02:00
return false ;
}
return true ;
}
2004-10-25 01:48:51 +02:00
function get_broken_themes () {
global $wp_broken_themes ;
get_themes ();
return $wp_broken_themes ;
}
2004-10-06 07:11:11 +02:00
function get_page_templates () {
$themes = get_themes ();
$theme = get_current_theme ();
$templates = $themes [ $theme ][ 'Template Files' ];
2005-09-18 21:44:14 +02:00
$page_templates = array ();
2004-10-06 07:11:11 +02:00
2005-09-18 21:44:14 +02:00
if ( is_array ( $templates )) {
2005-03-23 02:14:05 +01:00
foreach ( $templates as $template ) {
2005-09-18 21:44:14 +02:00
$template_data = implode ( '' , file ( ABSPATH . $template ));
2005-03-23 02:14:05 +01:00
preg_match ( " |Template Name:(.*)|i " , $template_data , $name );
preg_match ( " |Description:(.*)|i " , $template_data , $description );
2004-10-06 07:11:11 +02:00
2005-03-23 02:14:05 +01:00
$name = $name [ 1 ];
$description = $description [ 1 ];
2004-10-06 07:11:11 +02:00
2005-09-18 21:44:14 +02:00
if ( ! empty ( $name )) {
2005-03-23 02:14:05 +01:00
$page_templates [ trim ( $name )] = basename ( $template );
}
2004-10-06 07:11:11 +02:00
}
}
return $page_templates ;
}
function page_template_dropdown ( $default = '' ) {
$templates = get_page_templates ();
2005-09-18 21:44:14 +02:00
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 ;
2004-10-06 07:11:11 +02:00
}
2004-10-06 04:18:37 +02:00
function parent_dropdown ( $default = 0 , $parent = 0 , $level = 0 ) {
2004-11-24 01:12:46 +01:00
global $wpdb , $post_ID ;
2004-10-05 10:27:13 +02:00
$items = $wpdb -> get_results ( " SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order " );
2004-11-24 01:12:46 +01:00
2004-10-05 10:27:13 +02:00
if ( $items ) {
foreach ( $items as $item ) {
2004-11-24 01:12:46 +01:00
// A page cannot be it's own parent.
2005-09-18 21:44:14 +02:00
if ( ! empty ( $post_ID )) {
2004-11-24 01:12:46 +01:00
if ( $item -> ID == $post_ID ) {
continue ;
}
}
2004-10-05 10:27:13 +02:00
$pad = str_repeat ( ' ' , $level * 3 );
2004-10-06 04:18:37 +02:00
if ( $item -> ID == $default )
2004-10-05 10:27:13 +02:00
$current = ' selected="selected"' ;
else
$current = '' ;
2004-12-12 07:31:01 +01:00
echo " \n \t <option value=' $item->ID ' $current > $pad $item->post_title </option> " ;
2005-09-18 21:44:14 +02:00
parent_dropdown ( $default , $item -> ID , $level + 1 );
2004-10-05 10:27:13 +02:00
}
} else {
return false ;
}
}
2004-10-18 06:50:08 +02:00
function user_can_access_admin_page () {
global $pagenow ;
global $menu ;
global $submenu ;
2004-12-08 23:32:49 +01:00
$parent = get_admin_page_parent ();
2004-10-18 06:50:08 +02:00
foreach ( $menu as $menu_array ) {
//echo "parent array: " . $menu_array[2];
if ( $menu_array [ 2 ] == $parent ) {
2005-09-18 21:44:14 +02:00
if ( ! current_user_can ( $menu_array [ 1 ])) {
2004-10-18 06:50:08 +02:00
return false ;
} else {
break ;
}
}
}
2005-09-18 21:44:14 +02:00
if ( isset ( $submenu [ $parent ])) {
2004-10-18 06:50:08 +02:00
foreach ( $submenu [ $parent ] as $submenu_array ) {
if ( $submenu_array [ 2 ] == $pagenow ) {
2005-09-18 21:44:14 +02:00
if ( ! current_user_can ( $submenu_array [ 1 ])) {
2004-10-18 06:50:08 +02:00
return false ;
} else {
return true ;
}
}
}
}
2005-09-18 21:44:14 +02:00
2004-10-18 06:50:08 +02:00
return true ;
}
2004-10-19 05:03:06 +02:00
function get_admin_page_title () {
global $title ;
2005-01-30 08:34:03 +01:00
global $menu ;
2004-10-18 06:50:08 +02:00
global $submenu ;
2004-10-19 05:03:06 +02:00
global $pagenow ;
global $plugin_page ;
2005-09-18 21:44:14 +02:00
if ( isset ( $title ) && ! empty ( $title )) {
2004-10-19 05:03:06 +02:00
return $title ;
}
2005-01-30 08:34:03 +01:00
$parent = get_admin_page_parent ();
2005-09-18 21:44:14 +02:00
if ( empty ( $parent )) {
2005-01-30 08:34:03 +01:00
foreach ( $menu as $menu_array ) {
2005-09-18 21:44:14 +02:00
if ( isset ( $menu_array [ 3 ])) {
2005-01-30 08:34:03 +01:00
if ( $menu_array [ 2 ] == $pagenow ) {
$title = $menu_array [ 3 ];
return $menu_array [ 3 ];
2005-09-18 21:44:14 +02:00
} else
if ( isset ( $plugin_page ) && ( $plugin_page == $menu_array [ 2 ])) {
$title = $menu_array [ 3 ];
return $menu_array [ 3 ];
}
2005-01-30 08:34:03 +01:00
}
}
} else {
foreach ( array_keys ( $submenu ) as $parent ) {
foreach ( $submenu [ $parent ] as $submenu_array ) {
2005-09-18 21:44:14 +02:00
if ( isset ( $submenu_array [ 3 ])) {
2005-01-30 08:34:03 +01:00
if ( $submenu_array [ 2 ] == $pagenow ) {
$title = $submenu_array [ 3 ];
return $submenu_array [ 3 ];
2005-09-18 21:44:14 +02:00
} else
if ( isset ( $plugin_page ) && ( $plugin_page == $submenu_array [ 2 ])) {
$title = $submenu_array [ 3 ];
return $submenu_array [ 3 ];
}
2004-10-19 05:03:06 +02:00
}
}
}
}
return '' ;
}
function get_admin_page_parent () {
global $parent_file ;
2005-02-25 17:11:27 +01:00
global $menu ;
2004-10-19 05:03:06 +02:00
global $submenu ;
global $pagenow ;
global $plugin_page ;
2005-09-18 21:44:14 +02:00
if ( isset ( $parent_file ) && ! empty ( $parent_file )) {
2004-10-19 05:03:06 +02:00
return $parent_file ;
}
2005-09-18 21:44:14 +02:00
if ( $pagenow == 'admin.php' && isset ( $plugin_page )) {
2005-02-25 17:11:27 +01:00
foreach ( $menu as $parent_menu ) {
if ( $parent_menu [ 2 ] == $plugin_page ) {
$parent_file = $plugin_page ;
return $plugin_page ;
}
}
}
2005-09-18 21:44:14 +02:00
2004-10-19 05:03:06 +02:00
foreach ( array_keys ( $submenu ) as $parent ) {
foreach ( $submenu [ $parent ] as $submenu_array ) {
if ( $submenu_array [ 2 ] == $pagenow ) {
$parent_file = $parent ;
return $parent ;
2005-09-18 21:44:14 +02:00
} else
if ( isset ( $plugin_page ) && ( $plugin_page == $submenu_array [ 2 ])) {
$parent_file = $parent ;
return $parent ;
}
2004-10-19 05:03:06 +02:00
}
}
$parent_file = '' ;
return '' ;
}
2005-02-25 17:11:27 +01:00
function add_menu_page ( $page_title , $menu_title , $access_level , $file , $function = '' ) {
2005-02-07 02:15:06 +01:00
global $menu , $admin_page_hooks ;
2004-11-26 02:50:37 +01:00
2004-11-28 01:33:04 +01:00
$file = plugin_basename ( $file );
2004-11-26 02:50:37 +01:00
2005-09-18 21:44:14 +02:00
$menu [] = array ( $menu_title , $access_level , $file , $page_title );
2005-02-07 02:15:06 +01:00
$admin_page_hooks [ $file ] = sanitize_title ( $menu_title );
2005-02-25 17:11:27 +01:00
$hookname = get_plugin_page_hookname ( $file , '' );
2005-09-18 21:44:14 +02:00
if ( ! empty ( $function ) && ! empty ( $hookname ))
2005-02-25 17:11:27 +01:00
add_action ( $hookname , $function );
return $hookname ;
2004-11-26 02:50:37 +01:00
}
2005-02-07 02:15:06 +01:00
function add_submenu_page ( $parent , $page_title , $menu_title , $access_level , $file , $function = '' ) {
2004-10-19 05:03:06 +02:00
global $submenu ;
2004-12-04 06:02:07 +01:00
global $menu ;
2004-10-19 05:03:06 +02:00
2004-12-04 06:02:07 +01:00
$parent = plugin_basename ( $parent );
2004-11-28 01:33:04 +01:00
$file = plugin_basename ( $file );
2004-10-19 05:03:06 +02:00
2004-12-04 06:02:07 +01:00
// If the parent doesn't already have a submenu, add a link to the parent
// as the first item in the submenu. If the submenu file is the same as the
// parent file someone is trying to link back to the parent manually. In
// this case, don't automatically add a link back to avoid duplication.
2005-09-18 21:44:14 +02:00
if ( ! isset ( $submenu [ $parent ]) && $file != $parent ) {
2004-12-04 06:02:07 +01:00
foreach ( $menu as $parent_menu ) {
if ( $parent_menu [ 2 ] == $parent ) {
$submenu [ $parent ][] = $parent_menu ;
}
}
}
2005-09-18 21:44:14 +02:00
$submenu [ $parent ][] = array ( $menu_title , $access_level , $file , $page_title );
2005-02-07 02:15:06 +01:00
$hookname = get_plugin_page_hookname ( $file , $parent );
2005-09-18 21:44:14 +02:00
if ( ! empty ( $function ) && ! empty ( $hookname ))
2005-02-07 02:15:06 +01:00
add_action ( $hookname , $function );
return $hookname ;
2004-10-18 06:50:08 +02:00
}
2005-02-07 02:15:06 +01:00
function add_options_page ( $page_title , $menu_title , $access_level , $file , $function = '' ) {
2005-08-20 03:33:09 +02:00
return add_submenu_page ( 'options-personal.php' , $page_title , $menu_title , $access_level , $file , $function );
2004-11-26 02:50:37 +01:00
}
2005-02-07 02:15:06 +01:00
function add_management_page ( $page_title , $menu_title , $access_level , $file , $function = '' ) {
return add_submenu_page ( 'edit.php' , $page_title , $menu_title , $access_level , $file , $function );
2004-11-26 02:50:37 +01:00
}
2004-11-17 04:15:44 +01:00
2005-08-30 01:40:32 +02:00
function add_theme_page ( $page_title , $menu_title , $access_level , $file , $function = '' ) {
2005-09-18 21:44:14 +02:00
return add_submenu_page ( 'themes.php' , $page_title , $menu_title , $access_level , $file , $function );
2005-08-30 01:40:32 +02:00
}
2004-12-30 19:05:46 +01:00
function validate_file ( $file , $allowed_files = '' ) {
2005-09-18 21:44:14 +02:00
if ( false !== strpos ( $file , './' ))
2004-12-30 19:05:46 +01:00
return 1 ;
2005-09-18 21:44:14 +02:00
if ( ':' == substr ( $file , 1 , 1 ))
2004-12-30 19:05:46 +01:00
return 2 ;
2005-09-18 21:44:14 +02:00
if ( ! empty ( $allowed_files ) && ( ! in_array ( $file , $allowed_files )))
2004-12-30 19:05:46 +01:00
return 3 ;
return 0 ;
}
2004-11-17 04:15:44 +01:00
function validate_file_to_edit ( $file , $allowed_files = '' ) {
2004-12-30 19:05:46 +01:00
$file = stripslashes ( $file );
$code = validate_file ( $file , $allowed_files );
2005-09-18 21:44:14 +02:00
if ( ! $code )
2004-12-30 19:05:46 +01:00
return $file ;
switch ( $code ) {
2005-09-18 21:44:14 +02:00
case 1 :
die ( __ ( 'Sorry, can’t edit files with ".." in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' ));
case 2 :
die ( __ ( 'Sorry, can’t call files with their real path.' ));
2004-11-17 04:15:44 +01:00
2005-09-18 21:44:14 +02:00
case 3 :
die ( __ ( 'Sorry, that file cannot be edited.' ));
2004-11-17 04:15:44 +01:00
}
}
2004-12-23 01:53:56 +01:00
function get_home_path () {
2004-11-17 04:15:44 +01:00
$home = get_settings ( 'home' );
2005-09-18 21:44:14 +02:00
if ( $home != '' && $home != get_settings ( 'siteurl' )) {
2004-12-23 01:53:56 +01:00
$home_path = parse_url ( $home );
2005-02-01 07:59:44 +01:00
$home_path = $home_path [ 'path' ];
2004-12-23 01:53:56 +01:00
$root = str_replace ( $_SERVER [ " PHP_SELF " ], '' , $_SERVER [ " SCRIPT_FILENAME " ]);
2005-09-18 21:44:14 +02:00
$home_path = trailingslashit ( $root . $home_path );
2004-12-23 01:53:56 +01:00
} else {
$home_path = ABSPATH ;
}
return $home_path ;
}
function get_real_file_to_edit ( $file ) {
2005-09-18 21:44:14 +02:00
if ( 'index.php' == $file || '.htaccess' == $file ) {
$real_file = get_home_path () . $file ;
2004-11-17 04:15:44 +01:00
} else {
2005-09-18 21:44:14 +02:00
$real_file = ABSPATH . $file ;
2004-11-17 04:15:44 +01:00
}
return $real_file ;
}
2005-09-18 21:44:14 +02:00
$wp_file_descriptions = array ( 'index.php' => __ ( 'Main Index Template' ), 'style.css' => __ ( 'Stylesheet' ), 'comments.php' => __ ( 'Comments' ), 'comments-popup.php' => __ ( 'Popup Comments' ), 'footer.php' => __ ( 'Footer' ), 'header.php' => __ ( 'Header' ), 'sidebar.php' => __ ( 'Sidebar' ), 'archive.php' => __ ( 'Archives' ), 'category.php' => __ ( 'Category Template' ), 'page.php' => __ ( 'Page Template' ), 'search.php' => __ ( 'Search Results' ), 'single.php' => __ ( 'Single Post' ), '404.php' => __ ( '404 Template' ), 'my-hacks.php' => __ ( 'my-hacks.php (legacy hacks support)' ), '.htaccess' => __ ( '.htaccess (for rewrite rules)' ),
2005-01-19 16:23:38 +01:00
// Deprecated files
2005-09-18 21:44:14 +02:00
'wp-layout.css' => __ ( 'Stylesheet' ), 'wp-comments.php' => __ ( 'Comments Template' ), 'wp-comments-popup.php' => __ ( 'Popup Comments Template' ));
2004-11-17 04:15:44 +01:00
function get_file_description ( $file ) {
global $wp_file_descriptions ;
2005-09-18 21:44:14 +02:00
if ( isset ( $wp_file_descriptions [ basename ( $file )])) {
2005-02-14 05:24:25 +01:00
return $wp_file_descriptions [ basename ( $file )];
2005-09-18 21:44:14 +02:00
}
elseif ( file_exists ( ABSPATH . $file )) {
$template_data = implode ( '' , file ( ABSPATH . $file ));
if ( preg_match ( " |Template Name:(.*)|i " , $template_data , $name ))
2005-02-14 05:24:25 +01:00
return $name [ 1 ];
2004-11-17 04:15:44 +01:00
}
2005-09-18 21:44:14 +02:00
return basename ( $file );
2004-11-17 04:15:44 +01:00
}
function update_recently_edited ( $file ) {
$oldfiles = ( array ) get_option ( 'recently_edited' );
if ( $oldfiles ) {
$oldfiles = array_reverse ( $oldfiles );
$oldfiles [] = $file ;
$oldfiles = array_reverse ( $oldfiles );
$oldfiles = array_unique ( $oldfiles );
2005-09-18 21:44:14 +02:00
if ( 5 < count ( $oldfiles ))
2004-11-17 04:15:44 +01:00
array_pop ( $oldfiles );
} else {
$oldfiles [] = $file ;
}
update_option ( 'recently_edited' , $oldfiles );
}
2004-11-26 03:29:45 +01:00
function get_plugin_data ( $plugin_file ) {
$plugin_data = implode ( '' , file ( $plugin_file ));
preg_match ( " |Plugin Name:(.*)|i " , $plugin_data , $plugin_name );
preg_match ( " |Plugin URI:(.*)|i " , $plugin_data , $plugin_uri );
preg_match ( " |Description:(.*)|i " , $plugin_data , $description );
preg_match ( " |Author:(.*)|i " , $plugin_data , $author_name );
preg_match ( " |Author URI:(.*)|i " , $plugin_data , $author_uri );
2005-09-18 21:44:14 +02:00
if ( preg_match ( " |Version:(.*)|i " , $plugin_data , $version ))
2004-11-26 03:29:45 +01:00
$version = $version [ 1 ];
else
2005-09-18 21:44:14 +02:00
$version = '' ;
2004-11-26 03:29:45 +01:00
$description = wptexturize ( $description [ 1 ]);
$name = $plugin_name [ 1 ];
$name = trim ( $name );
$plugin = $name ;
if ( '' != $plugin_uri [ 1 ] && '' != $name ) {
2005-09-18 21:44:14 +02:00
$plugin = '<a href="' . $plugin_uri [ 1 ] . '" title="' . __ ( 'Visit plugin homepage' ) . '">' . $plugin . '</a>' ;
2004-11-26 03:29:45 +01:00
}
if ( '' == $author_uri [ 1 ]) {
$author = $author_name [ 1 ];
} else {
2005-09-18 21:44:14 +02:00
$author = '<a href="' . $author_uri [ 1 ] . '" title="' . __ ( 'Visit author homepage' ) . '">' . $author_name [ 1 ] . '</a>' ;
2004-11-26 03:29:45 +01:00
}
2005-09-18 21:44:14 +02:00
return array ( 'Name' => $name , 'Title' => $plugin , 'Description' => $description , 'Author' => $author , 'Version' => $version , 'Template' => $template [ 1 ]);
2004-11-26 03:29:45 +01:00
}
function get_plugins () {
global $wp_plugins ;
2005-09-18 21:44:14 +02:00
if ( isset ( $wp_plugins )) {
2004-11-26 03:29:45 +01:00
return $wp_plugins ;
}
2005-09-18 21:44:14 +02:00
$wp_plugins = array ();
2004-11-26 03:29:45 +01:00
$plugin_loc = 'wp-content/plugins' ;
2005-09-18 21:44:14 +02:00
$plugin_root = ABSPATH . $plugin_loc ;
2004-11-26 03:29:45 +01:00
// Files in wp-content/plugins directory
$plugins_dir = @ dir ( $plugin_root );
if ( $plugins_dir ) {
2005-09-18 21:44:14 +02:00
while (( $file = $plugins_dir -> read ()) !== false ) {
if ( preg_match ( '|^\.+$|' , $file ))
2004-11-28 01:33:04 +01:00
continue ;
2005-09-18 21:44:14 +02:00
if ( is_dir ( $plugin_root . '/' . $file )) {
$plugins_subdir = @ dir ( $plugin_root . '/' . $file );
2004-11-28 01:33:04 +01:00
if ( $plugins_subdir ) {
2005-09-18 21:44:14 +02:00
while (( $subfile = $plugins_subdir -> read ()) !== false ) {
if ( preg_match ( '|^\.+$|' , $subfile ))
2004-11-28 01:33:04 +01:00
continue ;
2005-09-18 21:44:14 +02:00
if ( preg_match ( '|\.php$|' , $subfile ))
2004-11-28 01:33:04 +01:00
$plugin_files [] = " $file / $subfile " ;
}
}
} else {
2005-09-18 21:44:14 +02:00
if ( preg_match ( '|\.php$|' , $file ))
2004-11-28 01:33:04 +01:00
$plugin_files [] = $file ;
}
2004-11-26 03:29:45 +01:00
}
}
if ( ! $plugins_dir || ! $plugin_files ) {
return $wp_plugins ;
}
sort ( $plugin_files );
2005-09-18 21:44:14 +02:00
foreach ( $plugin_files as $plugin_file ) {
2004-11-26 03:29:45 +01:00
$plugin_data = get_plugin_data ( " $plugin_root / $plugin_file " );
2005-09-18 21:44:14 +02:00
if ( empty ( $plugin_data [ 'Name' ])) {
2004-11-26 03:29:45 +01:00
continue ;
}
2004-11-28 01:33:04 +01:00
$wp_plugins [ plugin_basename ( $plugin_file )] = $plugin_data ;
2004-11-26 03:29:45 +01:00
}
return $wp_plugins ;
}
2005-02-07 02:15:06 +01:00
function get_plugin_page_hookname ( $plugin_page , $parent_page ) {
global $admin_page_hooks ;
2005-02-25 17:11:27 +01:00
$parent = get_admin_page_parent ();
2005-09-18 21:44:14 +02:00
if ( empty ( $parent_page ) || 'admin.php' == $parent_page ) {
if ( isset ( $admin_page_hooks [ $plugin_page ]))
2005-02-25 17:11:27 +01:00
$page_type = 'toplevel' ;
2005-09-18 21:44:14 +02:00
else
if ( isset ( $admin_page_hooks [ $parent ]))
$page_type = $admin_page_hooks [ $parent ];
} else
if ( isset ( $admin_page_hooks [ $parent_page ])) {
$page_type = $admin_page_hooks [ $parent_page ];
} else {
$page_type = 'admin' ;
}
2005-02-07 02:15:06 +01:00
$plugin_name = preg_replace ( '!\.php!' , '' , $plugin_page );
2005-09-18 21:44:14 +02:00
return $page_type . '_page_' . $plugin_name ;
2005-02-07 02:15:06 +01:00
}
function get_plugin_page_hook ( $plugin_page , $parent_page ) {
global $wp_filter ;
2005-09-18 21:44:14 +02:00
2005-02-07 02:15:06 +01:00
$hook = get_plugin_page_hookname ( $plugin_page , $parent_page );
2005-09-18 21:44:14 +02:00
if ( isset ( $wp_filter [ $hook ]))
2005-02-07 02:15:06 +01:00
return $hook ;
else
return '' ;
}
2005-08-27 21:18:26 +02:00
function browse_happy () {
$getit = __ ( 'WordPress recommends a better browser' );
2005-04-19 04:16:57 +02:00
echo '
2005-09-18 21:44:14 +02:00
< p id = " bh " style = " text-align: center; " >< a href = " http://browsehappy.com/ " title = " '. $getit .' " >< img src = " images/browse-happy.gif " alt = " Browse Happy " /></ a ></ p >
' ;
2005-04-19 04:16:57 +02:00
}
2005-09-18 21:44:14 +02:00
if ( strstr ( $_SERVER [ 'HTTP_USER_AGENT' ], 'MSIE' ))
2005-08-27 21:18:26 +02:00
add_action ( 'admin_footer' , 'browse_happy' );
2005-04-19 04:16:57 +02:00
2005-09-18 21:44:14 +02:00
function documentation_link ( $for ) {
2005-07-09 00:59:15 +02:00
return ;
}
2005-08-21 09:03:23 +02:00
function register_importer ( $id , $name , $description , $callback ) {
global $wp_importers ;
2005-09-18 21:44:14 +02:00
$wp_importers [ $id ] = array ( $name , $description , $callback );
2005-08-21 09:03:23 +02:00
}
function get_importers () {
global $wp_importers ;
return $wp_importers ;
}
2005-09-06 01:33:10 +02:00
function current_theme_info () {
$themes = get_themes ();
$current_theme = get_current_theme ();
$ct -> title = $themes [ $current_theme ][ 'Title' ];
$ct -> version = $themes [ $current_theme ][ 'Version' ];
$ct -> parent_theme = $themes [ $current_theme ][ 'Parent Theme' ];
$ct -> template_dir = $themes [ $current_theme ][ 'Template Dir' ];
$ct -> stylesheet_dir = $themes [ $current_theme ][ 'Stylesheet Dir' ];
$ct -> template = $themes [ $current_theme ][ 'Template' ];
$ct -> stylesheet = $themes [ $current_theme ][ 'Stylesheet' ];
$ct -> screenshot = $themes [ $current_theme ][ 'Screenshot' ];
$ct -> description = $themes [ $current_theme ][ 'Description' ];
$ct -> author = $themes [ $current_theme ][ 'Author' ];
return $ct ;
}
2005-09-27 01:55:36 +02:00
// Returns an array containing the current upload directory's path and url, or an error message.
function wp_upload_dir () {
if ( defined ( 'UPLOADS' ) )
$dir = UPLOADS ;
else
$dir = 'wp-content/uploads' ;
$path = ABSPATH . $dir ;
// Make sure we have an uploads dir
if ( ! file_exists ( $path ) ) {
if ( ! mkdir ( $path ) )
return array ( 'error' => " Unable to create directory $path . Is its parent directory writable by the server? " );
@ chmod ( ABSPATH . $path , 0774 );
}
// Generate the yearly and monthly dirs
$time = current_time ( 'mysql' );
$y = substr ( $time , 0 , 4 );
$m = substr ( $time , 5 , 2 );
$pathy = " $path / $y " ;
$pathym = " $path / $y / $m " ;
// Make sure we have a yearly dir
if ( ! file_exists ( $pathy ) ) {
if ( ! mkdir ( $pathy ) )
return array ( 'error' => " Unable to create directory $pathy . Is $path writable? " );
@ chmod ( $pathy , 0774 );
}
// Make sure we have a monthly dir
if ( ! file_exists ( $pathym ) ) {
if ( ! mkdir ( $pathym ) )
return array ( 'error' => " Unable to create directory $pathym . Is $pathy writable? " );
@ chmod ( $pathym , 0774 );
}
$uploads = array ( 'path' => $pathym , 'url' => get_bloginfo ( 'home' ) . " / $dir / $y / $m " , 'error' => false );
return apply_filters ( 'upload_dir' , $uploads );
}
?>