Index: plugins/maintenance/inc/tasks/class.dc.maintenance.cache.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.cache.php	(revision 1925)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.cache.php	(revision 2044)
@@ -21,4 +21,6 @@
 		$this->success 		= __('Templates cache directory emptied.');
 		$this->error 		= __('Failed to empty templates cache directory.');
+
+		$this->description = __("It may be useful to empty this cache when modifying a theme's .html or .css files (or when updating a theme or plugin). Notice : with some hosters, the templates cache cannot be emptied with this plugin. You may then have to delete the directory <strong>/cbtpl/</strong> directly on the server with your FTP software.");
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.countcomments.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.countcomments.php	(revision 1984)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.countcomments.php	(revision 2044)
@@ -21,4 +21,6 @@
 		$this->success 		= __('Comments and trackback counted.');
 		$this->error 		= __('Failed to count comments and trackbacks.');
+
+		$this->description = __('Count again comments and trackbacks allows to check their exact numbers. This operation can be useful when importing from another blog platform (or when migrating from dotclear 1 to dotclear 2).');
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.indexcomments.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.indexcomments.php	(revision 1989)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.indexcomments.php	(revision 2044)
@@ -27,4 +27,6 @@
 		$this->success 		= __('Comments index done.');
 		$this->error 		= __('Failed to index comments.');
+
+		$this->description = __('Index all comments and trackbacks in search engine index. This operation is necessary, after importing content in your blog, to use internal search engine, on public and private pages.');
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.indexposts.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.indexposts.php	(revision 1989)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.indexposts.php	(revision 2044)
@@ -27,4 +27,6 @@
 		$this->success 		= __('Entries index done.');
 		$this->error 		= __('Failed to index entries.');
+
+		$this->description = __('Index all entries in search engine index. This operation is necessary, after importing content in your blog, to use internal search engine, on public and private pages.');
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.logs.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.logs.php	(revision 1925)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.logs.php	(revision 2044)
@@ -21,4 +21,6 @@
 		$this->success 		= __('Logs deleted.');
 		$this->error 		= __('Failed to delete logs.');
+
+		$this->description = __('Logs record all activity and connection to your blog history. Unless you need to keep this history, consider deleting these logs from time to time.');
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.synchpostsmeta.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.synchpostsmeta.php	(revision 2044)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.synchpostsmeta.php	(revision 2044)
@@ -0,0 +1,83 @@
+<?php
+# -- BEGIN LICENSE BLOCK ---------------------------------------
+#
+# This file is part of Dotclear 2.
+#
+# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
+# Licensed under the GPL version 2.0 license.
+# See LICENSE file or
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+#
+# -- END LICENSE BLOCK -----------------------------------------
+if (!defined('DC_RC_PATH')) { return; }
+
+class dcMaintenanceSynchpostsmeta extends dcMaintenanceTask
+{
+	protected $ajax = true;
+	protected $group = 'index';
+	protected $limit = 100;
+	protected $step_task;
+
+	protected function init()
+	{
+		$this->name 		= __('Entries metadata');
+		$this->task 		= __('Synchronize entries metadata');
+		$this->step_task	= __('Next');
+		$this->step 		= __('Synchronize entry %d to %d.');
+		$this->success 		= __('Entries metadata synchronize done.');
+		$this->error 		= __('Failed to synchronize entries metadata.');
+
+		$this->description = __('Synchronize all entries metadata could be useful after importing content in your blog or do bad operation on database tables.');
+	}
+
+	public function execute()
+	{
+		$this->code = $this->synchronizeAllPostsmeta($this->code, $this->limit);
+
+		return $this->code ? $this->code : true;
+	}
+
+	public function task()
+	{
+		return $this->code ? $this->step_task : $this->task;
+	}
+
+	public function step()
+	{
+		return $this->code ? sprintf($this->step, $this->code - $this->limit, $this->code) : null;
+	}
+
+	public function success()
+	{
+		return $this->code ? sprintf($this->step, $this->code - $this->limit, $this->code) : $this->success;
+	}
+
+	protected function synchronizeAllPostsmeta($start=null,$limit=null)
+	{
+		// Get number of posts
+		$rs = $this->core->con->select('SELECT COUNT(post_id) FROM '.$this->core->prefix.'post');
+		$count = $rs->f(0);
+
+		// Get posts ids to update
+		$req_limit = $start !== null && $limit !== null ? $this->core->con->limit($start, $limit) : '';
+		$rs = $this->core->con->select('SELECT post_id FROM '.$this->core->prefix.'post '.$req_limit, true);
+
+		// Update posts meta
+		while ($rs->fetch()) {
+			$rs_meta = $this->core->con->select('SELECT meta_id, meta_type FROM '.$this->core->prefix.'meta WHERE post_id = '.$rs->post_id.' ');
+
+			$meta = array();
+			while ($rs_meta->fetch()) {
+				$meta[$rs_meta->meta_type][] = $rs_meta->meta_id;
+			}
+
+			$cur = $this->core->con->openCursor($this->core->prefix.'post');
+			$cur->post_meta = serialize($meta);
+			$cur->update('WHERE post_id = '.$rs->post_id);
+		}
+		$this->core->blog->triggerBlog();
+
+		// Return next step
+		return $start + $limit > $count ? null : $start + $limit;
+	}
+}
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.vacuum.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.vacuum.php	(revision 1984)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.vacuum.php	(revision 2044)
@@ -18,7 +18,10 @@
 	protected function init()
 	{
+		$this->name			= __('Optimise database');
 		$this->task 		= __('optimize tables');
 		$this->success 		= __('Optimization successful.');
 		$this->error 		= __('Failed to optimize tables.');
+
+		$this->description = __("After numerous delete or update operations on Dotclear's database, it gets fragmented. Optimizing will allow to defragment it. It has no incidence on your data's integrity. It is recommended to optimize before any blog export.");
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.zipmedia.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.zipmedia.php	(revision 1989)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.zipmedia.php	(revision 2044)
@@ -22,4 +22,6 @@
 	{
 		$this->task = __('Download media folder of current blog');
+
+		$this->description = __('It may be useful to backup your media folder. This compress all content of media folder into a single zip file. Notice : with some hosters, the media folder cannot be compressed with this plugin if it is too big.');
 	}
 
Index: plugins/maintenance/inc/tasks/class.dc.maintenance.ziptheme.php
===================================================================
--- plugins/maintenance/inc/tasks/class.dc.maintenance.ziptheme.php	(revision 1989)
+++ plugins/maintenance/inc/tasks/class.dc.maintenance.ziptheme.php	(revision 2044)
@@ -22,4 +22,6 @@
 	{
 		$this->task = __('Download active theme of current blog');
+
+		$this->description = __('It may be useful to backup the active theme before any change or update. This compress theme folder into a single zip file.');
 	}
 
