I'm mystified that blogging tools seem to put all the pictures in one directory.  I've had my b2evolution blog for a week or so and they're already... let's see... 35 pictures in the media directory.  So, I just hacked ./b2/blogs/admin/b2upload.php to put files in ./b2/blogs/media/2005/03/29/pic.jpg as an example.
Here's the new file:
<?php
/**
 * b2 File Upload
 *
 * b2evolution - {@link http://b2evolution.net/}
 * Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
 * @copyright (c)2003-2004 by Francois PLANQUE - {@link http://fplanque.net/}
 *
 * @package admin
 * @author original hack by shockingbird.com
 */
/**
 * Includes:
 */
require_once (dirname(__FILE__).'/_header.php');
// Check permissions:
$current_User->check_perm( 'upload', 'any', true );
?><html xml:lang="<?php locale_lang() ?>" lang="<?php locale_lang() ?>">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=<?php locale_charset() ?>" />
	<title><?php echo T_('b2evo') ?> > <?php echo T_('upload images/files') ?></title>
	<link href="variation.css" rel="stylesheet" type="text/css" title="Variation" />
	<link href="desert.css" rel="alternate stylesheet" type="text/css" title="Desert" />
	<link href="legacy.css" rel="alternate stylesheet" type="text/css" title="Legacy" />
	<?php if( is_file( dirname(__FILE__).'/custom.css' ) ) { ?>
	<link href="custom.css" rel="alternate stylesheet" type="text/css" title="Custom" />
	<?php } ?>
	<script type="text/javascript" src="styleswitcher.js"></script>
	<script type="text/javascript">
	<!-- // idocs.com's popup tutorial rules !
	function targetopener(blah, closeme, closeonly) {
		if (! (window.focus && window.opener))return true;
		window.opener.focus();
		if (! closeonly)window.opener.document.post.content.value += blah;
		if (closeme)window.close();
		return false;
	}
	//-->
	</script>
</head>
<body>
<div class="panelblock">
<?php
if (!isset($_POST['submit']))
{
	$i = explode(" ",$fileupload_allowedtypes);
	$i = implode(", ",array_slice($i, 1, count($i)-2));
	?>
	<p><strong><?php echo T_('File upload') ?></strong></p>
	<p><?php echo T_('Allowed file types:'), $i ?></p>
	<p><?php printf( T_('Maximum allowed file size: %d KB'), $fileupload_maxk ); ?></p>
	<form action="b2upload.php" method="post" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $fileupload_maxk*1024 ?>" />
	<input type="file" name="img1" size="30" class="uploadform" />
	<p><?php echo T_('Description') ?>:<br />
	<input type="text" name="imgdesc" size="30" class="uploadform" /></p>
	
	<input type="submit" name="submit" value="<?php echo T_('Upload !') ?>" class="search" />
	</form>
</div>
</body>
</html>
<?php exit();
}
 //Makes sure they choose a file
//print_r($HTTP_POST_FILES);
//die();
if (!empty($HTTP_POST_VARS)) { //$img1_name != "") {
	$imgalt = (isset($HTTP_POST_VARS['imgalt'])) ? $HTTP_POST_VARS['imgalt'] : '';
	$img1_name = (strlen($imgalt)) ? $HTTP_POST_VARS['imgalt'] : $HTTP_POST_FILES['img1']['name'];
	$img1_type = (strlen($imgalt)) ? $HTTP_POST_VARS['img1_type'] : $HTTP_POST_FILES['img1']['type'];
	$img1_size = (strlen($imgalt)) ? $HTTP_POST_VARS['img1_size'] : $HTTP_POST_FILES['img1']['size'];
	$imgdesc = str_replace('"', '&quot;', $HTTP_POST_VARS['imgdesc']);
	$imgtype = explode(".",$img1_name);
	$imgtype = " ".$imgtype[count($imgtype)-1]." ";
	if (!ereg(strtolower($imgtype), strtolower($fileupload_allowedtypes))) {
	    die(sprintf( T_('File %s: type %s is not allowed.'), $img1_name, $imgtype ));
	}
	// we're going to append login_ to the image name
	// for some reason image alt is used for naming sometimes... stupid
	// this sometimes adds the name twice... fix later... trident now.
	// $img1_name=$current_User->get('login')."_".$img1_name;
	// and now we create a reasonable directory structure for uploaded files
	// they go in /media/yyyy/mm/dd/
	// it is possible that you could end up with the wrong date this way.
	// if date got called on two different days...
	$day=date("d");
	$month=date("m");
	$year=date("Y");
	if(!file_exists($fileupload_realpath."/".$year)){
		mkdir ($fileupload_realpath."/".$year, 0755);
	}
	if(!file_exists($fileupload_realpath."/".$year."/".$month)){
		mkdir ($fileupload_realpath."/".$year."/".$month, 0755);
	}
	if(!file_exists($fileupload_realpath."/".$year."/".$month."/".$day)){
		mkdir ($fileupload_realpath."/".$year."/".$month."/".$day, 0755);
	}
	$fileupload_realpath=$fileupload_realpath."/".$year."/".$month."/".$day;
	if (strlen($imgalt)) {
		$pathtofile = $fileupload_realpath."/".$imgalt;
		$img1 = $HTTP_POST_VARS['img1'];
	} else {
		$pathtofile = $fileupload_realpath."/".$img1_name;
		$img1 = $HTTP_POST_FILES['img1']['tmp_name'];
	}
	// makes sure not to upload duplicates, rename duplicates
	$i = 1;
	$pathtofile2 = $pathtofile;
	$tmppathtofile = $pathtofile2;
	$img2_name = $img1_name;
	while (file_exists($pathtofile2)) {
	    $pos = strpos($tmppathtofile, '.'.trim($imgtype));
	    $pathtofile_start = substr($tmppathtofile, 0, $pos);
	    $pathtofile2 = $pathtofile_start.'_'.zeroise($i++, 2).'.'.trim($imgtype);
	    $img2_name = explode('/', $pathtofile2);
	    $img2_name = $img2_name[count($img2_name)-1];
	}
	if (file_exists($pathtofile) && !strlen($imgalt)) {
		$i = explode(" ",$fileupload_allowedtypes);
		$i = implode(", ",array_slice($i, 1, count($i)-2));
		move_uploaded_file($img1, $pathtofile2) 
		 or die( T_('Couldn\'t upload your file to:').' '.$pathtofile2);
	
	// duplicate-renaming function contributed by Gary Lawrence Murphy
	?>
	<p><strong><?php echo T_('Duplicate File?') ?></strong></p>
	<p><strong><em><?php printf( T_('The filename "%s" already exists!'), $img1_name ); ?></em></strong></p>
	<p><?php printf( T_('Filename "%s" moved to "%s"'), $img1, $pathtofile2 ); ?></p>
	<p><?php echo T_('Confirm or rename:') ?></p>
	<form action="b2upload.php" method="post" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $fileupload_maxk*1024 ?>" />
	<input type="hidden" name="img1_type" value="<?php echo $img1_type;?>" />
	<input type="hidden" name="img1_size" value="<?php echo $img1_size;?>" />
	<input type="hidden" name="img1_name" value="<?php echo $img2_name;?>" />
	<input type="hidden" name="img1" value="<?php echo $pathtofile2;?>" />
	<?php echo T_('Alternate name') ?>:<br /><input type="text" name="imgalt" size="30" class="uploadform" value="<?php echo $img2_name;?>" /><br />
	<br />
	<?php echo T_('Description') ?>:<br /><input type="text" name="imgdesc" size="30" class="uploadform" value="<?php echo $imgdesc;?>" />
	<br />
	<p><input type="submit" name="submit" value="<?php echo T_('Confirm !') ?>" class="search" /></p>
	</form>
</div>
</body>
</html><?php die();
	}
	if (!strlen($imgalt)) {
		move_uploaded_file($img1, $pathtofile) //Path to your images directory, chmod the dir to 777
		 or die( T_('Couldn\'t upload your file to:').' '.$pathtofile);
	} else {
		rename($img1, $pathtofile)
		or die( T_('Couldn\'t upload your file to:').' '.$pathtofile);
	}
}
$fileupload_url=$fileupload_url."/".$year."/".$month."/".$day;
if ( ereg('image/',$img1_type)) {
	$piece_of_code = "<img src="$fileupload_url/$img1_name" border="0" alt="$imgdesc" />"; 
} else {
	$piece_of_code = "<a href="$fileupload_url/$img1_name" title="$imgdesc">$imgdesc</a>"; 
}
?>
<p><strong><?php echo T_('File uploaded !') ?></strong></p>
<p><?php printf( T_('Your file <strong>"%s"</strong> was uploaded successfully !'), $img1_name ); ?></p>
<p><?php echo T_('Here\'s the code to display it:') ?></p>
<p><form action="b2upload.php">
<!--<textarea cols="25" rows="3" wrap="virtual"><?php echo "<img src="$fileupload_url/$img1_name" border="0" alt="" />"; ?></textarea>-->
<input type="text" name="imgpath" value="<?php echo $piece_of_code; ?>" size="40" class="large" /><br />
<input type="button" name="close" value="<?php echo T_('Add the code to your post !') ?>" class="search" onclick="targetopener('<?php echo $piece_of_code; ?>')" />
</form>
</p>
<p><strong><?php echo T_('Image Details') ?></strong>: <br />
<?php echo T_('Name') ?>: 
<?php echo "$img1_name"; ?>
<br />
<?php echo T_('Size') ?>: 
<?php echo round($img1_size/1024,2); ?> KB
<br />
<?php echo T_('Type') ?>: 
<?php echo "$img1_type"; ?>
</p>
<p align="right">
<form action="b2upload.php">
<input type="button" name="close" value="<?php echo T_('Close this window') ?>" class="search" onclick="window.close()" />
</form>
</p>
</div>
</body>
</html>
Thanks, this looks very useful.
What immediate benefits does this give apart from being far more organised.