2004-01-27 10:33:19 +01:00
< ? php
2004-02-17 09:35:04 +01:00
function url_shorten ( $url ) {
$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 )
$short_url = substr ( $short_url , 0 , 32 ) . '...' ;
return $short_url ;
}
2004-02-13 10:59:47 +01:00
function selected ( $selected , $current ) {
if ( $selected == $current ) echo ' selected="selected"' ;
}
function checked ( $checked , $current ) {
if ( $checked == $current ) echo ' checked="checked"' ;
}
2004-02-09 09:55:29 +01:00
function get_nested_categories ( $default = 0 ) {
2004-05-24 10:22:18 +02:00
global $post_ID , $mode , $wpdb ;
2004-02-09 09:55:29 +01:00
2004-04-30 10:56:49 +02:00
if ( $post_ID ) {
2004-02-09 09:55:29 +01:00
$checked_categories = $wpdb -> get_col ( "
SELECT category_id
2004-05-24 10:22:18 +02:00
FROM $wpdb -> categories , $wpdb -> post2cat
WHERE $wpdb -> post2cat . category_id = cat_ID AND $wpdb -> post2cat . post_id = '$post_ID'
2004-02-09 09:55:29 +01:00
" );
} else {
$checked_categories [] = $default ;
}
2004-05-24 10:22:18 +02:00
$categories = $wpdb -> get_results ( " SELECT * FROM $wpdb->categories ORDER BY category_parent DESC, cat_name ASC " );
2004-02-09 09:55:29 +01:00
$result = array ();
foreach ( $categories as $category ) {
$array_category = get_object_vars ( $category );
$me = 0 + $category -> cat_ID ;
$parent = 0 + $category -> category_parent ;
2004-05-07 23:05:02 +02:00
if ( isset ( $result [ $me ])) $array_category [ 'children' ] = $result [ $me ];
2004-02-09 09:55:29 +01:00
$array_category [ 'checked' ] = in_array ( $category -> cat_ID , $checked_categories );
$array_category [ 'cat_name' ] = stripslashes ( $category -> cat_name );
$result [ $parent ][] = $array_category ;
}
return $result [ 0 ];
}
function write_nested_categories ( $categories ) {
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' ], '"' ,
2004-02-09 10:55:17 +01:00
( $category [ 'checked' ] ? ' checked="checked"' : " " ), '/> ' , $category [ 'cat_name' ], " </label> \n " ;
2004-02-09 09:55:29 +01:00
if ( isset ( $category [ 'children' ])) {
echo " \n <span class='cat-nest'> \n " ;
2004-05-07 23:05:02 +02:00
write_nested_categories ( $category [ 'children' ]);
2004-02-09 09:55:29 +01:00
echo " </span> \n " ;
}
}
}
function dropdown_categories ( $default = 0 ) {
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 ) {
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 ) {
foreach ( $categories as $category ) {
2004-02-01 03:00:26 +01:00
if ( $category -> category_parent == $parent ) {
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 );
2004-01-27 10:33:19 +01:00
2004-02-01 03:00:26 +01:00
$bgcolor = ( '#eee' == $bgcolor ) ? 'none' : '#eee' ;
2004-04-24 21:32:31 +02:00
echo " <tr style='background-color: $bgcolor '><th scope='row'> $category->cat_ID </th><td> $pad $category->cat_name </td>
2004-02-01 03:00:26 +01:00
< td > $category -> category_description </ td >
< td > $count </ td >
2004-04-23 08:46:53 +02:00
< td >< 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 confirm(' " . 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. " ), addslashes ( $category -> cat_name )) . " ') \" class='delete'> " . __ ( 'Delete' ) . " </a></td>
2004-02-01 03:00:26 +01:00
</ tr > " ;
2004-01-27 10:33:19 +01:00
cat_rows ( $category -> cat_ID , $level + 1 );
2004-02-01 03:00:26 +01:00
}
2004-01-27 10:33:19 +01:00
}
} else {
return false ;
}
}
2004-02-01 03:00:26 +01:00
function wp_dropdown_cats ( $currentcat , $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 ) {
2004-02-01 03:00:26 +01:00
foreach ( $categories as $category ) { if ( $currentcat != $category -> cat_ID && $parent == $category -> category_parent ) {
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-01-27 10:33:19 +01:00
$pad = str_repeat ( '– ' , $level );
echo " \n \t <option value=' $category->cat_ID ' " ;
if ( $currentparent == $category -> cat_ID )
echo " selected='selected' " ;
echo " > $pad $category->cat_name </option> " ;
2004-02-01 03:00:26 +01:00
wp_dropdown_cats ( $currentcat , $currentparent , $category -> cat_ID , $level + 1 , $categories );
2004-01-27 10:33:19 +01:00
} }
} else {
return false ;
}
}
2004-02-05 15:28:02 +01:00
function wp_create_thumbnail ( $file , $max_side , $effect = '' ) {
// 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 ) {
2004-04-23 08:46:53 +02:00
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
2004-02-05 15:28:02 +01:00
} elseif ( ! function_exists ( 'imagejpeg' ) && $type [ 2 ] == 2 ) {
2004-04-23 08:46:53 +02:00
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
2004-02-05 15:28:02 +01:00
} elseif ( ! function_exists ( 'imagepng' ) && $type [ 2 ] == 3 ) {
2004-04-23 08:46:53 +02:00
$error = __ ( 'Filetype not supported. Thumbnail not created.' );
2004-02-05 15:28:02 +01:00
} 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 );
}
if ( function_exists ( 'imageantialias' ))
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 );
@ imagecopyresized ( $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 )) {
2004-04-23 08:46:53 +02:00
$error = __ ( " Thumbnail path invalid " );
2004-02-05 15:28:02 +01:00
}
} elseif ( $type [ 2 ] == 2 ) {
if ( ! imagejpeg ( $thumbnail , $thumbpath )) {
2004-04-23 08:46:53 +02:00
$error = __ ( " Thumbnail path invalid " );
2004-02-05 15:28:02 +01:00
}
} elseif ( $type [ 2 ] == 3 ) {
if ( ! imagepng ( $thumbnail , $thumbpath )) {
2004-04-23 08:46:53 +02:00
$error = __ ( " Thumbnail path invalid " );
2004-02-05 15:28:02 +01:00
}
}
}
}
if ( ! empty ( $error ))
{
return $error ;
}
else
{
return 1 ;
}
}
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 ( "
SELECT meta_key , meta_value , meta_id , post_id
2004-05-24 10:22:18 +02:00
FROM $wpdb -> postmeta
2004-05-05 10:18:30 +02:00
WHERE post_id = '$postid'
2004-03-23 19:02:05 +01:00
ORDER BY meta_key , meta_id " ,ARRAY_A);
}
function list_meta ( $meta ) {
global $post_ID ;
// Exit if no meta
2004-04-28 04:23:46 +02:00
if ( ! $meta ) return ;
?>
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
2004-03-23 19:02:05 +01:00
foreach ( $meta as $entry ) {
2004-04-28 04:23:46 +02:00
$style = ( 'class="alternate"' == $style ) ? '' : 'class="alternate"' ;
echo "
< tr $style >
2004-04-28 21:49:27 +02:00
< 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 >
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
echo "
</ 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 ;
2004-03-23 19:02:05 +01:00
$keys = $wpdb -> get_col ( "
SELECT meta_key
2004-05-24 10:22:18 +02:00
FROM $wpdb -> postmeta
2004-03-23 19:02:05 +01:00
GROUP BY meta_key
ORDER BY meta_key " );
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 ( "
SELECT meta_key
2004-05-24 10:22:18 +02:00
FROM $wpdb -> postmeta
2004-04-28 06:49:16 +02:00
GROUP BY meta_key
ORDER BY meta_id DESC
LIMIT 10 " );
2004-03-23 19:02:05 +01:00
?>
2004-04-28 06:49:16 +02:00
< h3 >< ? php _e ( 'Add a new custom field to this post:' ) ?> </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-03-23 19:02:05 +01:00
< option value = " #NONE# " >- Select -</ option >
< ? php
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-05-20 13:32:14 +02:00
</ select > or
< ? php endif ; ?>
</ td >
2004-04-28 21:49:27 +02:00
< td >< input type = " text " id = " metakeyinput " name = " metakeyinput " tabindex = " 7 " /></ td >
2004-04-28 07:37:11 +02:00
< td >< textarea id = " metavalue " name = " metavalue " rows = " 3 " cols = " 25 " tabindex = " 7 " ></ 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-05-26 17:00:42 +02:00
< p class = " submit " >< input type = " submit " name = " updatemeta " tabindex = " 7 " value = " <?php _e('Add Custom Field »') ?> " /></ p >
2004-03-23 19:02:05 +01:00
< ? php
}
function add_meta ( $post_ID ) {
2004-05-24 10:22:18 +02:00
global $wpdb ;
2004-03-23 19:02:05 +01:00
2004-04-28 04:23:46 +02:00
$metakeyselect = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metakeyselect' ]) ) );
$metakeyinput = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metakeyinput' ]) ) );
$metavalue = $wpdb -> escape ( stripslashes ( trim ( $_POST [ 'metavalue' ]) ) );
2004-03-23 19:02:05 +01:00
2004-04-12 19:31:37 +02:00
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 ;
if ( $metakeyinput )
$metakey = $metakeyinput ; // default
$result = $wpdb -> query ( "
2004-05-24 10:22:18 +02:00
INSERT INTO $wpdb -> postmeta
2004-03-23 19:02:05 +01:00
( post_id , meta_key , meta_value )
VALUES ( '$post_ID' , '$metakey' , '$metavalue' )
" );
}
} // 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
}
2004-04-30 10:56:49 +02:00
function touch_time ( $edit = 1 ) {
global $month , $postdata ;
// echo $postdata['Date'];
if ( 'draft' == $postdata -> post_status ) {
$checked = 'checked="checked" ' ;
$edit = false ;
} else {
$checked = ' ' ;
}
echo '<p><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp" ' . $checked . '/> <label for="timestamp">' . __ ( 'Edit timestamp' ) . '</label> <a href="http://wordpress.org/docs/reference/post/#edit_timestamp" title="' . __ ( 'Help on changing the timestamp' ) . '">?</a><br />' ;
$time_adj = time () + ( get_settings ( 'gmt_offset' ) * 3600 );
$post_date = $postdata -> post_date ;
$jj = ( $edit ) ? mysql2date ( 'd' , $post_date ) : gmdate ( 'd' , $time_adj );
$mm = ( $edit ) ? mysql2date ( 'm' , $post_date ) : gmdate ( 'm' , $time_adj );
$aa = ( $edit ) ? mysql2date ( 'Y' , $post_date ) : gmdate ( 'Y' , $time_adj );
$hh = ( $edit ) ? mysql2date ( 'H' , $post_date ) : gmdate ( 'H' , $time_adj );
$mn = ( $edit ) ? mysql2date ( 'i' , $post_date ) : gmdate ( 'i' , $time_adj );
$ss = ( $edit ) ? mysql2date ( 's' , $post_date ) : gmdate ( 's' , $time_adj );
echo '<input type="text" name="jj" value="' . $jj . '" size="2" maxlength="2" />' . " \n " ;
echo " <select name= \" mm \" > \n " ;
for ( $i = 1 ; $i < 13 ; $i = $i + 1 ) {
echo " \t \t \t <option value= \" $i\ " " ;
if ( $i == $mm )
echo " selected='selected' " ;
if ( $i < 10 ) {
$ii = " 0 " . $i ;
} else {
$ii = " $i " ;
}
echo " > " . $month [ " $ii " ] . " </option> \n " ;
} ?>
</ select >
< 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 " /> :
< input type = " text " name = " mn " value = " <?php echo $mn ?> " size = " 2 " maxlength = " 2 " /> :
< input type = " text " name = " ss " value = " <?php echo $ss ?> " size = " 2 " maxlength = " 2 " /> </ p >
< ? php
}
2004-05-17 21:40:56 +02:00
function check_admin_referer () {
2004-05-19 08:44:55 +02:00
$adminurl = strtolower ( get_settings ( 'siteurl' )) . '/wp-admin' ;
$referer = strtolower ( $_SERVER [ 'HTTP_REFERER' ]);
if ( ! strstr ( $referer , $adminurl ) ) {
2004-05-17 21:40:56 +02:00
die ( 'Sorry, you need to enable sending referrers, for this feature to work.' );
}
}
2004-01-27 10:33:19 +01:00
?>