diff --git a/wp-content/plugins/wordpress-popular-post/admin.php b/wp-content/plugins/wordpress-popular-post/admin.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c253dc9e4c958c23030bc21bbdc9cf944bf4060
--- /dev/null
+++ b/wp-content/plugins/wordpress-popular-post/admin.php
@@ -0,0 +1,717 @@
+<?php
+	if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) exit('Please do not load this page directly');
+	
+	$wpp_settings_def = array(
+		'stats' => array(
+			'order_by' => 'comments',
+			'limit' => 10
+		),
+		'tools' => array(
+			'ajax' => false,
+			'css' => true,
+			'stylesheet' => true,
+			'thumbnail' => array(
+				'source' => 'featured',
+				'field' => ''
+			)
+		)
+	);
+	
+	$ops = get_option('wpp_settings_config');
+	
+	if (!$ops) {
+		add_option('wpp_settings_config', $wpp_settings_def);
+		$ops = $wpp_settings_def;
+	}
+	
+	if ( isset($_POST['section']) ) {
+		if ($_POST['section'] == "stats") {
+			$ops['stats']['order_by'] = $_POST['stats_order'];
+			$ops['stats']['limit'] = (is_numeric($_POST['stats_limit']) && $_POST['stats_limit'] > 0) ? $_POST['stats_limit'] : 10;
+			
+			update_option('wpp_settings_config', $ops);			
+			echo "<div class=\"updated\"><p><strong>" . __('Settings saved.', 'wordpress-popular-posts' ) . "</strong></p></div>";
+			
+		} else if ($_POST['section'] == "tools") {
+			
+			if ($_POST['thumb_source'] == "custom_field" && (!isset($_POST['thumb_field']) || empty($_POST['thumb_field']))) {
+				echo '<div id="wpp-message" class="error fade"><p>'.__('Please provide the name of your custom field.', 'wordpress-popular-posts').'</p></div>';
+			} else {				
+				$ops['tools']['thumbnail']['source'] = $_POST['thumb_source'];
+				$ops['tools']['thumbnail']['field'] = $_POST['thumb_field'];
+				
+				update_option('wpp_settings_config', $ops);				
+				echo "<div class=\"updated\"><p><strong>" . __('Settings saved.', 'wordpress-popular-posts' ) . "</strong></p></div>";
+			}
+		} else if  ($_POST['section'] == "ajax") {
+			$ops['tools']['ajax'] = $_POST['ajax'];
+			
+			update_option('wpp_settings_config', $ops);				
+			echo "<div class=\"updated\"><p><strong>" . __('Settings saved.', 'wordpress-popular-posts' ) . "</strong></p></div>";
+		} else if  ($_POST['section'] == "css") {									
+			$ops['tools']['css'] = $_POST['css'];
+			
+			//print_r($ops);
+			
+			update_option('wpp_settings_config', $ops);				
+			echo "<div class=\"updated\"><p><strong>" . __('Settings saved.', 'wordpress-popular-posts' ) . "</strong></p></div>";
+		}
+	}
+	
+	$rand = md5(uniqid(rand(), true));	
+	$wpp_rand = get_option("wpp_rand");	
+	if (empty($wpp_rand)) {
+		add_option("wpp_rand", $rand);
+	} else {
+		update_option("wpp_rand", $rand);
+	}
+	
+?>
+
+
+<style>
+	#wmpp-title {
+		color:#666;
+		font-family:Georgia, "Times New Roman", Times, serif;
+		font-weight:100;		
+		font-size:24px;
+		font-style:italic;
+	}
+	
+	.wmpp-subtitle {
+		margin:8px 0 15px 0;
+		color:#666;
+		font-family:Georgia, "Times New Roman", Times, serif;
+		font-size:16px;
+		font-weight:100;
+	}
+	
+	.wpp_boxes {
+		display:none;
+		overflow:hidden;
+		width:100%;
+	}
+	
+	#wpp-options {
+		width:100%;
+	}
+	
+		#wpp-options fieldset {
+			margin:0 0 15px 0;
+			width:99%;				
+		}
+		
+			#wpp-options fieldset legend { font-weight:bold; }
+	
+			#wpp-options fieldset .lbl_wpp_stats {
+				display:block;
+				margin:0 0 8px 0;
+			}
+	
+	#wpp-stats-tabs {
+		padding:2px 0;
+	}
+		
+	#wpp-stats-canvas {
+		overflow:hidden;
+		padding:2px 0;
+		width:100%;
+	}
+	
+		.wpp-stats {
+			display:none;
+			width:96%px;
+			padding:1% 0;
+			font-size:8px;
+			background:#fff;
+			border:#999 3px solid;
+		}
+		
+		.wpp-stats-active {
+			display:block;
+		}
+		
+			.wpp-stats ol {
+				margin:0;
+				padding:0;
+			}
+			
+				.wpp-stats ol li {
+					overflow:hidden;
+					margin:0 8px 10px 8px!important;
+					padding:0 0 2px 0!important;
+					font-size:12px;
+					line-height:12px;
+					color:#999;
+					border-bottom:#eee 1px solid;
+				}
+				
+					.wpp-post-title {
+						/*display:block;*/
+						display:inline;
+						float:left;
+						font-weight:bold;
+					}
+					
+					.post-stats {
+						display:inline;
+						float:right;
+						font-size:0.9em!important;
+						text-align:right;
+						color:#999;
+					}
+				
+			.wpp-stats-unique-item, .wpp-stats-last-item {
+				margin:0!important;
+				padding:0!important;
+				border:none!important;
+			}
+			/**/
+			.wpp-stats p {
+				margin:0;
+				padding:0 8px;
+				font-size:12px;
+			}
+			
+	.wp-list-table h4 {
+		margin:0 0 0 0;
+	}
+	
+	.wpp-ans {
+		display:none;
+		width:100%;
+	}
+	
+		.wpp-ans p {
+			margin:0 0 0 0;
+			padding:0;
+		}
+	
+</style>
+
+<script type="text/javascript">
+	jQuery(document).ready(function(){
+		
+		// TABS
+		jQuery(".subsubsub li a").click(function(e){
+			var tab = jQuery(this);
+			tab.addClass("current").parent().siblings().children("a").removeClass("current");
+			
+			jQuery(".wpp_boxes:visible").hide();
+			jQuery("#" + tab.attr("rel")).fadeIn();
+			
+			e.preventDefault();
+		});
+		
+		// STATISTICS TABS		
+		jQuery("#wpp-stats-tabs a").click(function(){
+			var activeTab = jQuery(this).attr("rel");
+			jQuery(this).removeClass("button-secondary").addClass("button-primary").siblings().removeClass("button-primary").addClass("button-secondary");
+			jQuery(".wpp-stats:visible").fadeOut("fast", function(){
+				jQuery("#"+activeTab).slideDown("fast");
+			});
+			
+			return false;
+		});
+			
+		jQuery(".wpp-stats").each(function(){
+			if (jQuery("li", this).length == 1) {
+				jQuery("li", this).addClass("wpp-stats-last-item");
+			} else {
+				jQuery("li:last", this).addClass("wpp-stats-last-item");
+			}
+		});
+		
+		// FAQ
+		jQuery(".wp-list-table a").click(function(e){
+			var ans = jQuery(this).attr("rel");
+			
+			jQuery(".wpp-ans:visible").hide();			
+			jQuery("#"+ans).slideToggle();
+			
+			e.preventDefault();
+		});
+		
+		// TOOLS
+		jQuery("#thumb_source").change(function() {
+			if (jQuery(this).val() == "custom_field") {
+				jQuery("#lbl_field, #thumb_field").show();
+			} else {
+				jQuery("#lbl_field, #thumb_field").hide();
+			}
+		});
+	});
+	
+	// TOOLS
+	function confirm_reset_cache() {
+		if (confirm("<?php _e("This operation will delete all entries from Wordpress Popular Posts' cache table and cannot be undone.", "wordpress-popular-posts"); ?> \n" + "<?php _e("Do you want to continue?", "wordpress-popular-posts"); ?>")) {
+			jQuery.post(ajaxurl, {action: 'wpp_clear_cache', token: '<?php echo get_option("wpp_rand"); ?>', clear: 'cache'}, function(data){
+				alert(data);
+			});
+		}
+	}
+	
+	function confirm_reset_all() {
+		if (confirm("<?php _e("This operation will delete all stored info from Wordpress Popular Posts' data tables and cannot be undone.", "wordpress-popular-posts"); ?> \n" + "<?php _e("Do you want to continue?", "wordpress-popular-posts"); ?>")) {
+			jQuery.post(ajaxurl, {action: 'wpp_clear_all', token: '<?php echo get_option("wpp_rand"); ?>', clear: 'all'}, function(data){
+				alert(data);
+			});
+		}
+	}
+	
+</script>
+
+<div class="wrap">
+    <div id="icon-options-general" class="icon32"><br /></div>
+    <h2 id="wmpp-title">Wordpress Popular Posts</h2>
+    
+    <ul class="subsubsub">
+    	<li id="btn_stats"><a href="#" <?php if (!isset($_POST['section']) || (isset($_POST['section']) && $_POST['section'] == "stats") ) {?>class="current"<?php } ?> rel="wpp_stats"><?php _e("Stats", "wordpress-popular-posts"); ?></a> |</li>
+        <li id="btn_faq"><a href="#" rel="wpp_faq"><?php _e("FAQ", "wordpress-popular-posts"); ?></a> |</li>
+        <li id="btn_tools"><a href="#" rel="wpp_tools"<?php if (isset($_POST['section']) && ($_POST['section'] == "tools" || $_POST['section'] == "ajax" || $_POST['section'] == "css") ) {?> class="current"<?php } ?>><?php _e("Tools", "wordpress-popular-posts"); ?></a></li>
+    </ul>
+    <!-- Start stats -->
+    <div id="wpp_stats" class="wpp_boxes"<?php if (!isset($_POST['section']) || (isset($_POST['section']) && $_POST['section'] == "stats") ) {?> style="display:block;"<?php } ?>>
+    	<p><?php _e("Click on each tab to see what are the most popular entries on your blog today, this week, last 30 days or all time since Wordpress Popular Posts was installed.", "wordpress-popular-posts"); ?></p>
+        
+        <div class="tablenav top">
+            <div class="alignleft actions">
+                <form action="" method="post" id="wpp_stats_options" name="wpp_stats_options">
+                    <select name="stats_order">
+                        <option <?php if ($ops['stats']['order_by'] == "comments") {?>selected="selected"<?php } ?> value="comments"><?php _e("Order by comments", "wordpress-popular-posts"); ?></option>
+                        <option <?php if ($ops['stats']['order_by'] == "views") {?>selected="selected"<?php } ?> value="views"><?php _e("Order by views", "wordpress-popular-posts"); ?></option>
+                        <option <?php if ($ops['stats']['order_by'] == "avg") {?>selected="selected"<?php } ?> value="avg"><?php _e("Order by avg. daily views", "wordpress-popular-posts"); ?></option>
+                    </select>
+                    <label for="stats_limits"><?php _e("Limit", "wordpress-popular-posts"); ?>:</label> <input type="text" name="stats_limit" value="<?php echo $ops['stats']['limit']; ?>" size="5" />
+                    <input type="hidden" name="section" value="stats" />
+                    <input type="submit" class="button-secondary action" value="<?php _e("Apply", "wordpress-popular-posts"); ?>" name="" />
+                </form>
+            </div>
+        </div>
+        <br />
+        <div id="wpp-stats-tabs">            
+            <a href="#" class="button-primary" rel="wpp-daily"><?php _e("Last 24 hours", "wordpress-popular-posts"); ?></a>
+            <a href="#" class="button-secondary" rel="wpp-weekly"><?php _e("Last 7 days", "wordpress-popular-posts"); ?></a>
+            <a href="#" class="button-secondary" rel="wpp-monthly"><?php _e("Last 30 days", "wordpress-popular-posts"); ?></a>
+            <a href="#" class="button-secondary" rel="wpp-all"><?php _e("All-time", "wordpress-popular-posts"); ?></a>
+        </div>
+        <div id="wpp-stats-canvas">            
+            <div class="wpp-stats wpp-stats-active" id="wpp-daily">            	
+                <?php echo do_shortcode("[wpp range='daily' stats_comments=1 stats_views=1 order_by='".$ops['stats']['order_by']."' wpp_start='<ol>' wpp_end='</ol>' do_pattern=1 pattern_form='{title} <span class=\"post-stats\">{stats}</span>' limit=".$ops['stats']['limit']."]"); ?>
+            </div>
+            <div class="wpp-stats" id="wpp-weekly">
+                <?php echo do_shortcode("[wpp range='weekly' stats_comments=1 stats_views=1 order_by='".$ops['stats']['order_by']."' wpp_start='<ol>' wpp_end='</ol>' do_pattern=1 pattern_form='{title} <span class=\"post-stats\">{stats}</span>' limit=".$ops['stats']['limit']."]"); ?>
+            </div>
+            <div class="wpp-stats" id="wpp-monthly">
+                <?php echo do_shortcode("[wpp range='monthly' stats_comments=1 stats_views=1 order_by='".$ops['stats']['order_by']."' wpp_start='<ol>' wpp_end='</ol>' do_pattern=1 pattern_form='{title} <span class=\"post-stats\">{stats}</span>' limit=".$ops['stats']['limit']."]"); ?>
+            </div>
+            <div class="wpp-stats" id="wpp-all">
+                <?php echo do_shortcode("[wpp range='all' stats_views=1 order_by='".$ops['stats']['order_by']."' wpp_start='<ol>' wpp_end='</ol>' do_pattern=1 pattern_form='{title} <span class=\"post-stats\">{stats}</span>' limit=".$ops['stats']['limit']."]"); ?>
+            </div>
+        </div>
+    </div>
+    <!-- End stats -->
+    
+    <!-- Start faq -->
+    <div id="wpp_faq" class="wpp_boxes">
+    	<h3 class="wmpp-subtitle"><?php _e("Frequently Asked Questions", "wordpress-popular-posts"); ?></h3>
+    	<table cellspacing="0" class="wp-list-table widefat fixed posts">
+            <tr>
+                <td valign="top"><!-- help area -->
+                	<h4>&raquo; <a href="#" rel="q-1"><?php _e('What does "Title" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-1">
+                        <p><?php _e('It allows you to show a heading for your most popular posts listing. If left empty, no heading will be displayed at all.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                	<h4>&raquo; <a href="#" rel="q-2"><?php _e('What is Time Range for?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-2">
+                        <p><?php _e('It will tell Wordpress Popular Posts to retrieve all posts with most views / comments within the selected time range.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-3"><?php _e('What is "Sort post by" for?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-3">
+                        <p><?php _e('It allows you to decide whether to order your popular posts listing by total views, comments, or average views per day.', 'wordpress-popular-posts'); ?></p>
+                    </div>                    
+                    
+                    <h4>&raquo; <a href="#" rel="q-4"><?php _e('What does "Display post rating" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-4">
+                        <p><?php _e('If checked, Wordpress Popular Posts will show how your readers are rating your most popular posts. This feature requires having WP-PostRatings plugin installed and enabled on your blog for it to work.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-5"><?php _e('What does "Shorten title" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-5">
+                        <p><?php _e('If checked, all posts titles will be shortened to "n" characters. A new "Shorten title to" option will appear so you can set it to whatever you like.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-6"><?php _e('What does "Display post excerpt" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-6">
+                        <p><?php _e('If checked, Wordpress Popular Posts will also include a small extract of your posts in the list. Similarly to the previous option, you will be able to decide how long the post excerpt should be.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-7"><?php _e('What does "Keep text format and links" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-7">
+                        <p><?php _e('If checked, and if the Post Excerpt feature is enabled, Wordpress Popular Posts will keep the styling tags (eg. bold, italic, etc) that were found in the excerpt. Hyperlinks will remain intact, too.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-7"><?php _e('What is "Post type" for?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-7">
+                        <p><?php _e('This filter allows you to decide which post types to show on the listing. By default, it will retrieve only posts and pages (which should be fine for most cases).', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-8"><?php _e('What is "Category(ies) ID(s)" for?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-8">
+                        <p><?php _e('This filter allows you to select which categories should be included or excluded from the listing. A negative sign in front of the category ID number will exclude posts belonging to it from the list, for example. You can specify more than one ID with a comma separated list.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-9"><?php _e('What is "Author(s) ID(s)" for?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-9">
+                        <p><?php _e('Just like the Category filter, this one lets you filter posts by author ID. You can specify more than one ID with a comma separated list.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-10"><?php _e('What does "Display post thumbnail" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-10">
+                        <p><?php _e('If checked, Wordpress Popular Posts will attempt to retrieve the thumbnail of each post. You can set up the source of the thumbnail via Settings - Wordpress Popular Posts - Tools.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-11"><?php _e('What does "Display comment count" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-11">
+                        <p><?php _e('If checked, Wordpress Popular Posts will display how many comments each popular post has got in the selected Time Range.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-12"><?php _e('What does "Display views" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-12">
+                        <p><?php _e('If checked, Wordpress Popular Posts will show how many pageviews a single post has gotten in the selected Time Range.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-13"><?php _e('What does "Display author" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-13">
+                        <p><?php _e('If checked, Wordpress Popular Posts will display the name of the author of each entry listed.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-14"><?php _e('What does "Display date" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-14">
+                        <p><?php _e('If checked, Wordpress Popular Posts will display the date when each popular posts was published.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-15"><?php _e('What does "Use custom HTML Markup" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-15">
+                        <p><?php _e('If checked, you will be able to customize the HTML markup of your popular posts listing. For example, you can decide whether to wrap your posts in an unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is for you!', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-16"><?php _e('What does "Use content formatting tags" do?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-16">
+                        <p><?php _e('If checked, you can decide the order of the items displayed on each entry. For example, setting it to "{title}: {summary}" (without the quotes) would display "Post title: excerpt of the post here". Available tags: {image}, {title}, {summary}, {stats} and {rating}.', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-17"><?php _e('What are "Template Tags"?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-17">
+                        <p><?php _e('Template Tags are simply php functions that allow you to perform certain actions. For example, Wordpress Popular Posts currently supports two different template tags: wpp_get_mostpopular() and wpp_get_views().', 'wordpress-popular-posts'); ?></p>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-18"><?php _e('What are the template tags that Wordpress Popular Posts supports?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-18">
+                        <p><?php _e('The following are the template tags supported by Wordpress Popular Posts', 'wordpress-popular-posts'); ?>:</p>
+                        <table cellspacing="0" class="wp-list-table widefat fixed posts">
+                        	<thead>
+                                <tr>
+                                    <th class="manage-column column-title"><?php _e('Template tag', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('What it does ', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('Parameters', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('Example', 'wordpress-popular-posts'); ?></th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr>
+                                    <td class="post type-post status-draft format-standard hentry category-js alternate iedit"><strong>wpp_get_mostpopular()</strong></td>
+                                    <td class="post type-post status-draft format-standard hentry category-js iedit"><?php _e('Similar to the widget functionality, this tag retrieves the most popular posts on your blog. This function also accepts parameters so you can customize your popular listing, but these are not required.', 'wordpress-popular-posts'); ?></td>
+                                    <td class="post type-post status-draft format-standard hentry category-js alternate iedit"><?php _e('Please refer to "List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode".', 'wordpress-popular-posts'); ?></td>
+                                    <td class="post type-post status-draft format-standard hentry category-js iedit">&lt;?php wpp_get_mostpopular(); ?&gt;<br />&lt;?php wpp_get_mostpopular("range=weekly&amp;limit=7"); ?&gt;</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>wpp_get_views()</strong></td>
+                                    <td><?php _e('Displays the number of views of a single post. Post ID is required or it will return false.', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Post ID', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;?php echo wpp_get_views($post->ID); ?&gt;<br />&lt;?php echo wpp_get_views(15); ?&gt;</td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                    
+                    <h4>&raquo; <a href="#" rel="q-19"><?php _e('What are "shortcodes"?', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-19">
+                        <p><?php _e('Shortcodes are similar to BB Codes, these allow us to call a php function by simply typing something like [shortcode]. With Wordpress Popular Posts, the shortcode [wpp] will let you insert a list of the most popular posts in posts content and pages too! For more information about shortcodes, please visit', 'wordpress-popular-posts', 'wordpress-popular-posts'); ?> <a href="http://codex.wordpress.org/Shortcode_API" target="_blank">Wordpress Shortcode API</a>.</p>
+                    </div>
+                    <h4>&raquo; <a href="#" rel="q-20"><?php _e('List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode', 'wordpress-popular-posts'); ?></a></h4>
+                    <div class="wpp-ans" id="q-20" style="display:block;">
+                        <p><?php _e('These parameters can be used by both the template tag wpp_get_most_popular() and the shortcode [wpp].', 'wordpress-popular-posts'); ?>:</p>
+                        <table cellspacing="0" class="wp-list-table widefat fixed posts">
+                        	<thead>
+                                <tr>
+                                    <th class="manage-column column-title"><?php _e('Parameter', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('What it does ', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('Possible values', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('Defaults to', 'wordpress-popular-posts'); ?></th>
+                                    <th class="manage-column column-title"><?php _e('Example', 'wordpress-popular-posts'); ?></th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr>
+                                    <td><strong>header</strong></td>
+                                    <td><?php _e('Sets a heading for the list', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Popular Posts', 'wordpress-popular-posts'); ?></td>
+                                    <td>header="Popular Posts"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>header_start</strong></td>
+                                    <td><?php _e('Set the opening tag for the heading of the list', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;h2&gt;</td>
+                                    <td>header_start="&lt;h2&gt;"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>header_end</strong></td>
+                                    <td><?php _e('Set the closing tag for the heading of the list', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;/h2&gt;</td>
+                                    <td>header_end="&lt;/h2&gt;"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>limit</strong></td>
+                                    <td><?php _e('Sets the maximum number of popular posts to be shown on the listing', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Positive integer', 'wordpress-popular-posts'); ?></td>
+                                    <td>10</td>
+                                    <td>limit=10</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>range</strong></td>
+                                    <td><?php _e('Tells Wordpress Popular Posts to retrieve the most popular entries within the time range specified by you', 'wordpress-popular-posts'); ?></td>
+                                    <td>"daily", "weekly", "monthly", "all"</td>
+                                    <td>daily</td>
+                                    <td>range="daily"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>order_by</strong></td>
+                                    <td><?php _e('Sets the sorting option of the popular posts', 'wordpress-popular-posts'); ?></td>
+                                    <td>"comments", "views", "avg" <?php _e('(for average views per day)', 'wordpress-popular-posts'); ?></td>
+                                    <td>comments</td>
+                                    <td>order_by="comments"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>post_type</strong></td>
+                                    <td><?php _e('Defines the type of posts to show on the listing', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>post,page</td>
+                                    <td>post_type=post,page,your-custom-post-type</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>cat</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will retrieve all entries that belong to the specified category(ies) ID(s). If a minus sign is used, the category(ies) will be excluded instead.', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('None', 'wordpress-popular-posts'); ?></td>
+                                    <td>cat="1,55,-74"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>author</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will retrieve all entries created by specified author(s) ID(s).', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('None', 'wordpress-popular-posts'); ?></td>
+                                    <td>author="75,8,120"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>title_length</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will shorten each post title to "n" characters whenever possible', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Positive integer', 'wordpress-popular-posts'); ?></td>
+                                    <td>25</td>
+                                    <td>title_length=25</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>excerpt_length</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will build and include an excerpt of "n" characters long from the content of each post listed as popular', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Positive integer', 'wordpress-popular-posts'); ?></td>
+                                    <td>55</td>
+                                    <td>excerpt_length=55</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>excerpt_format</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will maintaing all styling tags (strong, italic, etc) and hyperlinks found in the excerpt', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>excerpt_format=1</td>
+                                </tr>                                
+                                <tr>
+                                    <td><strong>thumbnail_width</strong></td>
+                                    <td><?php _e('If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the width for thumbnails', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Positive integer', 'wordpress-popular-posts'); ?></td>
+                                    <td>15</td>
+                                    <td>thumbnail_width=30</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>thumbnail_height</strong></td>
+                                    <td><?php _e('If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the height for thumbnails', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Positive integer', 'wordpress-popular-posts'); ?></td>
+                                    <td>15</td>
+                                    <td>thumbnail_height=30</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>rating</strong></td>
+                                    <td><?php _e('If set, and if the WP-PostRatings plugin is installed and enabled on your blog, Wordpress Popular Posts will show how your visitors are rating your entries', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>rating=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>stats_comments</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will show how many comments each popular post has got until now', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), 0 (false)</td>
+                                    <td>1</td>
+                                    <td>stats_comments=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>stats_views</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will show how many views each popular post has got since it was installed', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>stats_views=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>stats_author</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will show who published each popular post on the list', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>stats_author=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>stats_date</strong></td>
+                                    <td><?php _e('If set, Wordpress Popular Posts will display the date when each popular post on the list was published', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>stats_date=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>stats_date_format</strong></td>
+                                    <td><?php _e('Sets the date format', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>0</td>
+                                    <td>stats_date_format='F j, Y'</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>wpp_start</strong></td>
+                                    <td><?php _e('Sets the opening tag for the listing', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;ul&gt;</td>
+                                    <td>wpp_start="&lt;ul&gt;"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>wpp_end</strong></td>
+                                    <td><?php _e('Sets the closing tag for the listing', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;/ul&gt;</td>
+                                    <td>wpp_end="&lt;/ul&gt;"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>post_start</strong></td>
+                                    <td><?php _e('Sets the opening tag for each item on the list', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;li&gt;</td>
+                                    <td>post_start="&lt;li&gt;"</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>post_end</strong></td>
+                                    <td><?php _e('Sets the closing tag for each item on the list', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Text string', 'wordpress-popular-posts'); ?></td>
+                                    <td>&lt;/li&gt;</td>
+                                    <td>post_end="&lt;/li&gt;"</td>
+                                </tr>                        
+                                <tr>
+                                    <td><strong>do_pattern</strong></td>
+                                    <td><?php _e('If set, this option will allow you to decide the order of the contents within each item on the list.', 'wordpress-popular-posts'); ?></td>
+                                    <td>1 (true), (0) false</td>
+                                    <td>0</td>
+                                    <td>do_pattern=1</td>
+                                </tr>
+                                <tr>
+                                    <td><strong>pattern_form</strong></td>
+                                    <td><?php _e('If set, you can decide the order of each content inside a single item on the list. For example, setting it to "{title}: {summary}" would output something like "Your Post Title: summary here". This attribute requires do_pattern to be true.', 'wordpress-popular-posts'); ?></td>
+                                    <td><?php _e('Available tags', 'wordpress-popular-posts'); ?>: {image}, {title}, {summary}, {stats}, {rating}</td>
+                                    <td>{image} {title}: {summary} {stats}</td>
+                                    <td>pattern_form="{image} {title}: {summary} {stats}"</td>
+                                </tr>
+							</tbody>
+                        </table>
+                    </div>
+                </td>
+            </tr>
+        </table>
+    </div>
+    <!-- End faq -->
+    
+    <!-- Start tools -->
+    <div id="wpp_tools" class="wpp_boxes"<?php if (isset($_POST['section']) && ($_POST['section'] == "tools" || $_POST['section'] == "ajax" || $_POST['section'] == "css") ) {?> style="display:block;"<?php } ?>>
+    	<p><?php _e("Here you will find a handy group of options to tweak Wordpress Popular Posts.", "wordpress-popular-posts"); ?></p><br />
+                       
+        <h3 class="wmpp-subtitle"><?php _e("Thumbnail source", "wordpress-popular-posts"); ?></h3>
+        <p><?php _e("Tell Wordpress Popular Posts where it should get thumbnails from", "wordpress-popular-posts"); ?>:</p>
+        <div class="tablenav top">
+        	<div class="alignleft actions">
+                <form action="" method="post" id="wpp_thumbnail_options" name="wpp_thumbnail_options">
+                    <select name="thumb_source" id="thumb_source">
+                        <option <?php if ($ops['tools']['thumbnail']['source'] == "featured") {?>selected="selected"<?php } ?> value="featured"><?php _e("Featured image", "wordpress-popular-posts"); ?></option>
+                        <option <?php if ($ops['tools']['thumbnail']['source'] == "first_image") {?>selected="selected"<?php } ?> value="first_image"><?php _e("First image on post", "wordpress-popular-posts"); ?></option>
+                        <option <?php if ($ops['tools']['thumbnail']['source'] == "custom_field") {?>selected="selected"<?php } ?> value="custom_field"><?php _e("Custom field", "wordpress-popular-posts"); ?></option>
+                    </select>
+
+                    <label for="thumb_field" id="lbl_field" <?php if ($ops['tools']['thumbnail']['source'] != "custom_field") {?>style="display:none;"<?php } ?>><?php _e("Custom field name", "wordpress-popular-posts"); ?>:</label>
+                    <input type="text" id="thumb_field" name="thumb_field" value="<?php echo $ops['tools']['thumbnail']['field']; ?>" size="10" <?php if ($ops['tools']['thumbnail']['source'] != "custom_field") {?>style="display:none;"<?php } ?> />
+                    <input type="hidden" name="section" value="tools" />
+                    <input type="submit" class="button-secondary action" id="btn_th_ops" value="<?php _e("Apply", "wordpress-popular-posts"); ?>" name="" />
+                </form>                
+            </div>
+        </div>
+        <br />
+        
+        <h3 class="wmpp-subtitle"><?php _e("Wordpress Popular Posts Stylesheet", "wordpress-popular-posts"); ?></h3>
+        <p><?php _e("By default, the plugin includes a stylesheet called wpp.css which you can use to style your popular posts listing. If you wish to use your own stylesheet or do not want it to have it included in the header section of your site, use this.", "wordpress-popular-posts"); ?></p>
+        <div class="tablenav top">
+        	<div class="alignleft actions">
+                <form action="" method="post" id="wpp_css_options" name="wpp_css_options">
+                    <select name="css" id="css">
+                        <option <?php if ($ops['tools']['css']) {?>selected="selected"<?php } ?> value="1"><?php _e("Enabled", "wordpress-popular-posts"); ?></option>
+                        <option <?php if (!$ops['tools']['css']) {?>selected="selected"<?php } ?> value="0"><?php _e("Disabled", "wordpress-popular-posts"); ?></option>
+                    </select>
+                    <input type="hidden" name="section" value="css" />
+                    <input type="submit" class="button-secondary action" id="btn_css_ops" value="<?php _e("Apply", "wordpress-popular-posts"); ?>" name="" />
+                </form>                
+            </div>
+        </div>
+        <br />
+        
+        <h3 class="wmpp-subtitle"><?php _e("Data tools", "wordpress-popular-posts"); ?></h3>
+                
+        <p><?php _e("AJAX update. If you are using a caching plugin such as WP Super Cache, enabling this feature will keep the popular list from being cached.", "wordpress-popular-posts"); ?> (NOT AVAILABLE)</p>
+        <div class="tablenav top">
+        	<div class="alignleft actions">
+                <form action="" method="post" id="wpp_ajax_options" name="wpp_ajax_options">
+                    <select name="ajax" id="ajax" disabled="disabled">
+                        <option <?php if ($ops['tools']['ajax']) {?>selected="selected"<?php } ?> value="1"><?php _e("Enabled", "wordpress-popular-posts"); ?></option>
+                        <option <?php if (!$ops['tools']['ajax']) {?>selected="selected"<?php } ?> value="0"><?php _e("Disabled", "wordpress-popular-posts"); ?></option>
+                    </select>
+                    <input type="hidden" name="section" value="ajax" />
+                    <input type="submit" class="button-secondary action" id="btn_ajax_ops" value="<?php _e("Apply", "wordpress-popular-posts"); ?>" name="" />
+                </form>                
+            </div>
+        </div>
+        <br />
+        
+        <p><?php _e('Wordpress Popular Posts keeps historical data of your most popular entries for up to 30 days. If for some reason you need to clear the cache table, or even both historical and cache tables, please use the buttons below to do so.', 'wordpress-popular-posts') ?></p>
+        <p><input type="button" name="wpp-reset-cache" id="wpp-reset-cache" class="button-secondary" value="<?php _e("Empty cache", "wordpress-popular-posts"); ?>" onclick="confirm_reset_cache()" /> <label for="wpp-reset-cache"><small><?php _e('Use this button to manually clear entries from WPP cache only', 'wordpress-popular-posts'); ?></small></label></p>
+        <p><input type="button" name="wpp-reset-all" id="wpp-reset-all" class="button-secondary" value="<?php _e("Clear all data", "wordpress-popular-posts"); ?>" onclick="confirm_reset_all()" /> <label for="wpp-reset-all"><small><?php _e('Use this button to manually clear entries from all WPP data tables', 'wordpress-popular-posts'); ?></small></label></p>
+    </div>
+    <!-- End tools -->
+    
+    <br />
+    <hr />
+    <p><?php _e('Do you like this plugin?', 'wordpress-popular-posts'); ?> <a title="<?php _e('Rate Wordpress Popular Posts!', 'wordpress-popular-posts'); ?>" href="http://wordpress.org/extend/plugins/wordpress-popular-posts/#rate-response" target="_blank"><strong><?php _e('Rate it', 'wordpress-popular-posts'); ?></strong></a> <?php _e('on the official Plugin Directory!', 'wordpress-popular-posts'); ?></p>
+    <p><?php _e('Do you love this plugin?', 'wordpress-popular-posts'); ?> <a title="<?php _e('Buy me a beer!', 'wordpress-popular-posts'); ?>" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dadslayer%40gmail%2ecom&lc=GB&item_name=Wordpress%20Popular%20Posts%20Plugin&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG_global%2egif%3aNonHosted" target="_blank"><strong><?php _e('Buy me a beer!', 'wordpress-popular-posts'); ?></strong></a>. <?php _e('Each donation motivates me to keep releasing free stuff for the Wordpress community!', 'wordpress-popular-posts'); ?></p>
+    <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dadslayer%40gmail%2ecom&lc=GB&item_name=Wordpress%20Popular%20Posts%20Plugin&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG_global%2egif%3aNonHosted" target="_blank" rel="external nofollow"><img src="<?php echo get_bloginfo('url') . "/" . PLUGINDIR; ?>/wordpress-popular-posts/btn_donateCC_LG_global.gif" width="122" height="47" alt="<?php _e('Buy me a beer!', 'wordpress-popular-posts'); ?>" border="0" /></a>
+</div>
\ No newline at end of file
diff --git a/wp-content/plugins/wordpress-popular-post/cache/index.html b/wp-content/plugins/wordpress-popular-post/cache/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/wp-content/plugins/wordpress-popular-post/readme.txt b/wp-content/plugins/wordpress-popular-post/readme.txt
index bbf8cd41985cbdbbf886a041090178616c1bf939..5d458b4f9d314f7e35e713d34335c37c17cda1bd 100644
--- a/wp-content/plugins/wordpress-popular-post/readme.txt
+++ b/wp-content/plugins/wordpress-popular-post/readme.txt
@@ -1,44 +1,39 @@
 === Wordpress Popular Posts ===
 Contributors: hcabrera
 Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=dadslayer%40gmail%2ecom&lc=GB&item_name=Wordpress%20Popular%20Posts%20Plugin&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG_global%2egif%3aNonHosted
-Tags: popular, posts, widget, seo, wordpress
+Tags: popular, posts, popular posts, widget, seo, wordpress, custom post type
 Requires at least: 2.8
-Tested up to: 3.2.1
-Stable tag: 2.2.1
+Tested up to: 3.4.1
+Stable tag: 2.3.2
+License: GPLv2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
 
 With Wordpress Popular Posts, you can show your visitors what are the most popular entries on your blog.
 
 == Description ==
 
-Wordpress Popular Posts is a highly customizable sidebar widget that displays the most popular posts on your blog. You can use it as a template tag, too!
+Wordpress Popular Posts is a highly customizable widget that displays the most popular posts on your blog.
 
-**IMPORTANT NOTICES:**
-
-Due to critical security issues, from Wordpress Popular Posts v.2.1.5 and on **TimThumb support has been dropped**. Please upgrade as soon as possible since your site may be under risk of being exploited.
-
-From **version 2.0** and on, **Wordpress Popular Posts** requires at least **Wordpress 2.8** in order to function correctly. If you are not running Wordpress 2.8 or can't update your blog right now, please don't upgrade to/install version 2.x!
-
-Also, if you are upgrading from any version prior to 1.4.6, please [update to 1.4.6](http://downloads.wordpress.org/plugin/wordpress-popular-posts.1.4.6.zip) before moving to 2.x!
+= Main Features =
+* **Multi-widget capable**. That is, you can have several widgets of Wordpress Popular Posts on your blog - each with its own settings!
+* **Time Range** - list those posts of your blog that have been the most popular ones within a specific time range (eg. last 24 hours, last 7 days, last 30 days, etc.)!
+* **Custom Post-type support**. Wanna show other stuff than just posts and pages?
+* Display a **thumbnail** of your posts! (*see the [FAQ section](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/) for technical requirements*).
+* Use **your own layout**! Control how your most popular posts are shown on your theme.
+* Check the **statistics** on your most popular posts from wp-admin.
 
-**What's new**
+= Other Features =
+* **Shortcode support** - use the [wpp] shortcode to showcase your most popular posts on pages, too! For usage and instructions, please refer to the [installation section](http://wordpress.org/extend/plugins/wordpress-popular-posts/installation/).
+* **Template tags** - Don't feel like using widgets? No problem! You can still embed your most popular entries on your theme using the *wpp_get_mostpopular()* template tag. Additionally, the *wpp_gets_views()* template tag allows you to retrieve the views count for a particular post. For usage and instructions, please refer to the [installation section](http://wordpress.org/extend/plugins/wordpress-popular-posts/installation/).
+* **Localizable** to your own language (*See the [FAQ section](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/) for more info*).
+* **[WP-PostRatings](http://wordpress.org/extend/plugins/wp-postratings/) support**. Show your visitors how your readers are rating your posts!
+* **Automatic maintenance** - Wordpress Popular Posts will wipe out from its cache automatically all those posts that have not been viewed more than 30 days from the current date, keeping just the popular ones on the list! This ensures that your cache table will remain as compact as possible! (You can also clear it manually if you like, [look here for instructions](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/)!).
 
-* Include a **thumbnail** of your posts! (*see the [FAQ section](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/) for technical requirements*)
-* From version 2.0.3 and on, Wordpress Popular Posts includes a **Dashboard panel** where you can monitor what are the most popular posts on your site directly from your wp-admin area!
-* Wordpress Popular Posts is **multi-widget** capable! Install multiple instances of Wordpress Popular Posts on your sidebars, each with its own unique settings!
-* **Shortcode support!** - from version 2.0, you can showcase your most popular posts on pages, too!
-* **Category exclusion** - Want to exclude certain categories from the listing? Use the *Exclude Category* option!
-* **Automatic maintenance** - Wordpress Popular Posts will wipe out from its cache automatically all those posts that have not been viewed more than 30 days from the current date, keeping the popular ones on the list! This ensures that your cache table will remain as compact as possible! (You can also clear it manually if you like, [look here for instructions](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/)!).
-* **Template tags** - Don't feel like using widgets? No problem! You can still embed your most popular entries on your theme using the **wpp_get_mostpopular()** template tag. Additionally, the **wpp_gets_views()** template tag allows you to retrieve the views count for a particular post. For usage and instructions, please refer to the [instalation section](http://wordpress.org/extend/plugins/wordpress-popular-posts/installation/).
+= Notice =
 
-**Other features**
+From version 2.0 and on, Wordpress Popular Posts requires Wordpress 2.8 at least in order to function correctly. If you're not running Wordpress 2.8 (or newer) please use [Wordpress Popular Posts v.1.5.1](http://downloads.wordpress.org/plugin/wordpress-popular-posts.1.5.1.zip) instead.
 
-* Use **your own layout**! Control how your most popular posts are shown on your theme.
-* *Wordpress Popular Posts can be localized*! Languages included on this release: *English* (default), *Italian* and *Spanish*. Wanna know how to translate Wordpress Popular Posts into your language? See the [FAQ section](http://wordpress.org/extend/plugins/wordpress-popular-posts/faq/) for more!
-* *Time Range* - list your most popular posts within a specific time range (eg. popular posts of the last 24 hours, this week's popular posts, etc.)!
-* [WP-PostRatings](http://wordpress.org/extend/plugins/wp-postratings/) support added!  Show your visitors how your readers are rating your posts!
-* Wanna show your readers a sneak peak of your most popular entries? Wordpress Popular Posts can include excerpts, too!
-* List your posts either by **comment count**, **views** or **average daily views**. Sorted by **comment count** by default.
-* You can also list those pages of your blog (About, Services, Archives, etc.) that are getting a lot of attention from your readers. Enabled by default.
+Also, if you are upgrading from any version prior to Wordpress Popular Posts 1.4.6, please [update to 1.4.6](http://downloads.wordpress.org/plugin/wordpress-popular-posts.1.4.6.zip) first!
 
 == Installation ==
 
@@ -50,9 +45,9 @@ Also, if you are upgrading from any version prior to 1.4.6, please [update to 1.
 
 That's it!
 
-= Using Wordpress Popular Posts on Pages =
+= Shortcode =
 
-If you want to use Wordpress Popular Posts on your pages (a "Hall of Fame" page, for example) please use the shortcode `[wpp]`. Attributes are **optional**, however you can use them if needed. You can find a complete list of the attributes Wordpress Popular Posts currently supports at your *wp-admin > Settings > Wordpress Popular Posts* page.
+If you want to use Wordpress Popular Posts on your pages (a "Hall of Fame" page, for example) please use the shortcode `[wpp]`. Parameters are **optional**, however you can use them if needed. You can find the complete list of the parameters via *wp-admin > Settings > Wordpress Popular Posts > FAQ*.
 
 **Usage:**
 
@@ -62,7 +57,7 @@ If you want to use Wordpress Popular Posts on your pages (a "Hall of Fame" page,
 
 Example:
 
-`[wpp range=today stats_views=1 order_by=views wpp_start=<ol> wpp_end=</ol>]`
+`[wpp range=daily stats_views=1 order_by=views wpp_start=<ol> wpp_end=</ol>]`
 
 
 
@@ -87,12 +82,12 @@ Using parameters:
 `<?php if (function_exists('wpp_get_mostpopular')) wpp_get_mostpopular("range=weekly&order_by=comments"); ?>`
 
 
-For a complete list of parameters (also known as "attributes"), please check your *wp-admin > Settings > Wordpress Popular Posts* page.
+For a complete list of parameters, please go to *wp-admin > Settings > Wordpress Popular Posts > FAQ*.
 
 
 ***wpp_get_views()***
 
-The **wpp_get_views** template tag retrieves the views count of a single post since the plugin was installed. It only accepts one parameter: the post ID (eg. echo wpp_get_views(15)). If the function doesn't get passed a post ID when called, it'll return false instead.
+The **wpp_get_views** template tag retrieves the total views count of a single post. It only accepts one parameter: the post ID (eg. echo wpp_get_views(15)). If the function doesn't get passed a post ID when called, it'll return false instead.
 
 **Usage:**
 
@@ -100,54 +95,113 @@ The **wpp_get_views** template tag retrieves the views count of a single post si
 
 == Frequently Asked Questions ==
 
-* *I'm getting "Sorry. No data so far". What's up with that?*
-There are a number of reasons that might explain why you are seeing this message: Wordpress Popular Posts won't count views generated by logged in users (if your blog requires readers to be logged in to access its contents, [this tutorial](http://wordpress.org/support/topic/398760) is for you); your current theme does not have the [wp_header()](http://codex.wordpress.org/Theme_Development#Plugin_API_Hooks) tag in its &lt;head&gt; section, required by my plugin to keep track of what your visitors are viewing on your site; no one has seen your posts/pages since Wordpress Popular Posts activation, you should give it some time. Wordpress Popular Posts works based on views, mainly. Whenever a post gets a view, WPP will register it on its cache table. Only those posts registered by my plugin will be listed. It doesn't really make much difference if a post has got a lot of comments or not if it hasn't been cached by my plugin - it still needs to be viewed by someone/people in order to rank as popular.
+= I need help with your plugin! What should I do? =
+First thing to do is read both FAQ and Installation sections, they should address most of the questions you might have about this plugin (and even more info can be found via *wp-admin > Settings > Wordpress Popular Posts > FAQ*). If you're having problems with WPP, my suggestion would be try disabling all other plugins first and then re-enable each one to make sure there are no conflicts. Checking the [Support Forum](http://wordpress.org/support/plugin/wordpress-popular-posts) is also a good idea as chances are that someone else has already posted something about it (and if not, you are always welcome to create a new thread). **Remember:** *read first*. It'll save you (and me) time.
+
+= -FUNCTIONALITY- =
+
+= I'm getting "Sorry. No data so far". What's up with that? =
+There are a number of reasons that might explain why you are seeing this message: no one has seen or commented on your posts/pages since Wordpress Popular Posts activation, you should give it some time; your current theme does not have the [wp_head()](http://codex.wordpress.org/Theme_Development#Plugin_API_Hooks) tag in its &lt;head&gt; section, required by my plugin to keep track of what your visitors are viewing on your site; Wordpress Popular Posts was unable to create the necessary DB tables to work, make sure your hosting has granted you permission to create / update / modify tables in the database.
+
+= Wordpress Popular Posts is not counting my own visits, why? =
+Wordpress Popular Posts won't count views generated by logged in users. If your blog requires readers to be logged in to access its contents, [this tutorial](http://wordpress.org/support/topic/398760) is for you.
+
+= I'm unable to activate the "Display post thumbnail" option. Why? =
+Make sure that: your host is running **PHP 4.3 or higher**; the **GD library** is installed and [enabled by your host](http://wordpress.org/support/topic/289778#post-1366038).
+
+= How does Wordpress Popular Posts select my posts' thumbnails? =
+By default, Wordpress Popular Posts will try and use the [Featured Image](http://codex.wordpress.org/Post_Thumbnails) you have selected for each of your posts and use it to create a thumbnail. If none is set, a "No thumbnail" image will be used instead. You can also tell Wordpress Popular Posts to get the thumbnails from the first image found on each post, or specify the path of your thumbnails using a [custom field](http://codex.wordpress.org/Custom_Fields). To do so, simply go to *wp-admin > Settings > Wordpress Popular Posts > Tools* and pick the choice of your preference.
 
-* *I'm unable to activate the "Display post thumbnail" option. Why?*
-Make sure that: your host is running **PHP 4.3 or higher**; the **GD library** is installed and [enabled by your host](http://wordpress.org/support/topic/289778#post-1366038); your theme has been enabled to use the [Featured Images functionality](http://codex.wordpress.org/Post_Thumbnails#Enabling_Support_for_Post_Thumbnails).
+= I'm seeing a "No thumbnail" image, where's my post thumbnail? =
+Make sure you have assigned one to your posts (either by [attaching an image to your post](http://codex.wordpress.org/Using_Image_and_File_Attachments#Attachment_to_a_Post), selected one using the [Featured Images functionality](http://codex.wordpress.org/Post_Thumbnails#Enabling_Support_for_Post_Thumbnails)), or assigned one using a custom field and told Wordpress Popular Posts what the custom field name is in *wp-admin > Settings > Wordpress Popular Posts > Tools*. Otherwise, my plugin will show this image by default.
 
-* *I'm seeing a "No thumbnail" image, where's my post thumbnail?*
-Make sure you have assigned one to your posts (either by [attaching an image to your post](http://codex.wordpress.org/Using_Image_and_File_Attachments#Attachment_to_a_Post) or selected one using the [Featured Images functionality](http://codex.wordpress.org/Post_Thumbnails#Enabling_Support_for_Post_Thumbnails)), otherwise my plugin will show this image by default.
+= The thumbnail images are broken. What happened? =
+Check that the cache subfolder exists (wordpress-popular-posts/cache/) and it's *writable* (chmodd it to 777 if you're unsure about this). Also, Timthumb uses the [PHP GD library](http://php.net/manual/en/book.image.php) to generate images. If it's not installed/enabled, [Timthumb will fail and thumbnails won't be generated](http://wordpress.org/support/topic/289778#post-1366038).
 
-* *Can I embed my most popular posts in any other ways than via sidebar widgets?*
-Yes. You have two other ways to achieve this: via **shortcode** [wpp] (so you can embed it directly on your posts / pages), or via **template tag**.
+= Can I embed my most popular posts in any other ways than via sidebar widgets? =
+Yes. You have two other ways to achieve this: via **shortcode**: [wpp] (so you can embed it directly on your posts / pages), or via **template tag**: wpp_get_mostpopular().
 
-* *What are the parameters that the wpp_get_mostpopular() template tag and the [wpp] shortcode accept?*
-You can find a complete list of parameters via wp-admin > Settings > Wordpress Popular Posts under the section "What attributes does Wordpress Popular Posts shortcode [wpp] have?".
+= Where can I find the list of parameters accepted by the wpp_get_mostpopular() template tag / [wpp] shortcode? =
+You can find it via *wp-admin > Settings > Wordpress Popular Posts > FAQ*, under the section **"List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode"**.
 
-* *I would like to clear Wordpress Popular Posts cache and start over. How can I do that?*
-If you go to *wp-admin > Settings > Wordpress Popular Posts*, you'll find two buttons that should do what you need: **Clear cache** and **Clear all data**. The first one just wipes out what's in cache, keeping the historical data intact (All-time). The latter, wipes out everything from Wordpress Popular Posts data tables - even the historical data. Note that this **cannot be undone**.
+= I want to have a popular list of my custom post type. How can I do that? =
+Simply add your custom post type to the Post Type field in the widget (or, if yo're using the template tag / shortcode, use the post_type parameter).
 
-* *Does your plugin include any css stylesheets?*
-Yes, *but* there are no predefined styles (well, almost). Wordpress Popular Posts will first look into your theme's folder for the wpp.css file and use it if found so that any custom CSS styles are not overwritten, otherwise will use the one bundled with the plugin. It's up to you to style your most popular posts list as you like. You might need a hand with that if you don't know HTML/CSS, though.
+= How can I use my own HTML markup with your plugin? =
+Wordpress Popular Posts is flexible enough to let you use your own HTML markup. To do so, simply activate the *Use custom HTML markup* option and set your desired configuration; or if you're using the template tag / shortcode, you can find the equivalent parameters in the section mentioned above.
 
-* *Each time Wordpress Popular Posts gets updated, the stylesheet gets reset.*
-You need to copy your custom wpp.css to your theme's folder, otherwise my plugin will use the one 
+= I would like to clear all data gathered by Wordpress Popular Posts and start over. How can I do that? =
+If you go to *wp-admin > Settings > Wordpress Popular Posts > Tools*, you'll find two buttons that should do what you need: **Clear cache** and **Clear all data**. The first one just wipes out what's in cache (Last 24 hours, Last 7 Days, Last 30 Days), keeping the historical data (All-time) intact. The latter wipes out everything from Wordpress Popular Posts data tables - even the historical data. Note that this **cannot be undone** so proceed with caution.
 
-* *Would you help me style my list, please?*
-For a small donation, sure why not?
+= Can Wordpress Popular Posts run on Wordpress Multisite? =
+While **it's not officially supported**, other users have reported that my plugin runs fine on Wordpress Multisite. According to what they have said, you need to install this plugin using the Network Activation feature.
 
-* *I want to remove WPP's stylesheet. How can I do that?*
-Simply add the following code to yout theme's functions.php file:
-`add_action('wp_head', 'remove_wpp_stylesheet', 1); function remove_wpp_stylesheet() { global $wp_widget_factory; remove_action( 'wp_head', array($wp_widget_factory->widgets['WordpressPopularPosts'], 'wpp_print_stylesheet') ); }`
+= -CSS AND STYLESHEETS- =
 
-* *I want your plugin to have x or y functionality. Would you do it for me?*
-I usually accept suggestions, yes. However, if it doesn't fit the nature of my plugin (to list popular posts) or requires something that might affect other users' experiences, chances are that I won't implement it. However, I could cook up a customized version of Wordpress Popular Posts just for you if you really, really need that special feature/capability ... but it won't be for free.
+= Does your plugin include any CSS stylesheets? =
+Yes, *but* there are no predefined styles (well, almost). Wordpress Popular Posts will first look into your current theme's folder for the wpp.css file and use it if found so that any custom CSS styles made by you are not overwritten, otherwise will use the one bundled with the plugin.
 
-* *I want to translate your plugin into my language / help you update a PO file. What do I need to do?*
-There's a PO file included with Wordpress Popular Posts. If your language is not already supported by my plugin, you can use a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) to translate all definitions into your language. If you want to, you can send me your resulting PO and MO files to *me at cabrerahector dot com* so I can include them on the next release of my plugin.
+= How can I style my list to look like that other site / this way? =
+Since this plugin does not include any predefined designs, it's up to you to style your most popular posts list as you like. You might need to hire someone for this if you don't know HTML/CSS. Asking questions about styling / CSS at the [Support Forum](http://wordpress.org/support/plugin/wordpress-popular-posts) might not get an answer from me, either.
 
-* *Help! I'm having some issues with your plugin! What should I do?*
-Please don't, and read my words carefully, don't use my email address to contact me for support (unless I authorize you to do so). It'll surely be of more help for other people running into similar issues if you posted your doubts/questions/suggestions on the [Wordpress Popular Posts Support forums](http://wordpress.org/tags/wordpress-popular-posts?forum_id=10) (please be as descriptive as possible)!
+= Each time Wordpress Popular Posts gets updated, the stylesheet gets reset. =
+You need to copy your custom wpp.css file to your theme's folder, otherwise my plugin will use the one bundled with it by default.
+
+= I want to remove WPP's stylesheet. How can I do that? =
+Simply add the following code to your theme's functions.php file: `<?php wp_dequeue_style('wordpress-popular-posts') ?>` (or disable the stylesheet via *wp-admin > Settings > Wordpress Popular Posts > Tools*).
+
+= -OTHER STUFF THAT YOU SHOULD KNOW- =
+
+= I want your plugin to have X or Y functionality. Can it be done? =
+If it fits the nature of my plugin and it sounds like something other users would like to have, there's a pretty good chance that I will implement it (specially if you actually provide some sample code with useful comments). 
+
+= ETA for your next release? =
+Updates will come depending on my work projects (I'm a full-time web developer) and the amount of time I have on my hands. So please, don't ask for ETAs.
+
+= I want to translate your plugin into my language / help you update a translation. What do I need to do? =
+There's a PO file included with Wordpress Popular Posts. If your language is not already supported by my plugin, you can use a [gettext](http://www.gnu.org/software/gettext/) editor like [Poedit](http://www.poedit.net/) to translate all texts into your language. If you want to, you can send me your resulting PO and MO files to *hcabrerab at gmail dot com* so I can include them on the next release of my plugin.
+
+= I posted a question on the Support Forum and got no answer from the developer. Why is that? =
+Chances are that your question has been already answered either in the [Support Forum](http://wordpress.org/support/plugin/wordpress-popular-posts) or here in the FAQ section, so I will simply ignore your thread. It could also happen that maybe I just haven't read your post so please be patient (in the meanwhile, search the [Support Forum](http://wordpress.org/support/plugin/wordpress-popular-posts) for an answer).
+
+= Is there any other way to contact you? =
+For the time being, the [Support Forum](http://wordpress.org/support/plugin/wordpress-popular-posts) is the only way to contact me. Do not, please, do not use my email to get in touch with me *unless I authorize you to do so*.
 
 == Screenshots ==
 
 1. Widgets Control Panel.
 2. Wordpress Popular Posts Widget.
-3. Wordpress Popular Posts Widget on Kubrik Theme's sidebar.
+3. Wordpress Popular Posts Widget on theme's sidebar.
 4. Wordpress Popular Posts Stats panel.
 
 == Changelog ==
+= 2.3.2 =
+* The ability to enable / disable the Ajax Update has been removed. It introduced a random bug that doubled the views count of some posts / pages. Will be added back when a fix is ready.
+* Fixed a bug preventing the cat parameter from excluding categories (widget was not affected by this).
+* FAQ section (Settings / Wordpress Popular Posts / FAQ) updated.
+* Added french translation. (Thanks, Le Raconteur!)
+
+= 2.3.1 =
+* Fixed bug caused by the sorter function when there are multiple instances of the widget.
+* Added check for new options in the get_popular_posts function.
+* Added plugin version check to handle upgrades.
+* Fixed bug preventing some site from fetching images from subdomains or external sites.
+* Fixed bug that prevented excluding more than one category using the Category filter.
+
+= 2.3.0 =
+* Merged all pages into Settings/Wordpress Popular Posts.
+* Added new options to the Wordpress Popular Posts Stats dashboard.
+* Added check for static homepages to avoid printing ajax script there.
+* Database queries re-built from scratch for optimization.
+* Added the ability to remove / enable plugin's stylesheet from the admin.
+* Added the ability to enable / disable ajax update from the admin.
+* Added the ability to set thumbnail's source from the admin.
+* Timthumb support re-added.
+* Added support for custom post type (Thanks, Brad Williams!).
+* Improved the category filtering feature.
+* Added the ability to get popular posts from given author IDs.
+
+
 = 2.2.1 =
 * Quick update to fix error with All-time combined with views breaking the plugin.
 
@@ -205,7 +259,7 @@ Please don't, and read my words carefully, don't use my email address to contact
 * Several shortcode bugs fixed (range, order_by, do_pattern, pattern_form were not working as expected).
 
 = 2.0.1 =
-* Post title excerpt now includes html entities. Characters like &Aring;&Auml;&Ouml; should display properly now.
+* Post title excerpt now includes html entities. Characters like ��� should display properly now.
 * Post excerpt has been improved. Now it supports the following HTML tags: a, b, i, strong, em.
 * Template tag wpp_get_views() added. Retrieves the views count of a single post.
 * Template tag get_mostpopular() re-added. Parameter support included.
@@ -275,5 +329,4 @@ Please don't, and read my words carefully, don't use my email address to contact
 * Public release
 
 == Upgrade Notice ==
-
-Due to critical security issues, from Wordpress Popular Posts v.2.1.5 TimThumb support has been dropped. Please upgrade as soon as possible since your site may be under risk of being exploited.
\ No newline at end of file
+From version 2.0 and on, Wordpress Popular Posts requires Wordpress 2.8 at least in order to function correctly. If you're not running Wordpress 2.8 (or newer) please use Wordpress Popular Posts v.1.5.1 instead. Also, if you are upgrading from any version prior to Wordpress Popular Posts 1.4.6, please update to 1.4.6 first!
\ No newline at end of file
diff --git a/wp-content/plugins/wordpress-popular-post/screenshot-1.gif b/wp-content/plugins/wordpress-popular-post/screenshot-1.gif
index 1b171b63cdf6e7b59d370b181648ed27d8c121cb..04a88dfbcb79a3bde5e00ba240adcaa48fcf8c01 100644
Binary files a/wp-content/plugins/wordpress-popular-post/screenshot-1.gif and b/wp-content/plugins/wordpress-popular-post/screenshot-1.gif differ
diff --git a/wp-content/plugins/wordpress-popular-post/screenshot-2.gif b/wp-content/plugins/wordpress-popular-post/screenshot-2.gif
index b3ee91018ddea30b58d2f9ffc51f1d3a303af5d2..5940bc48e81e878b3c936cca433cc5d1c925c7e9 100644
Binary files a/wp-content/plugins/wordpress-popular-post/screenshot-2.gif and b/wp-content/plugins/wordpress-popular-post/screenshot-2.gif differ
diff --git a/wp-content/plugins/wordpress-popular-post/screenshot-3.gif b/wp-content/plugins/wordpress-popular-post/screenshot-3.gif
index ee1bdb7f2ec5abf06356d7fc0b002ecf08eeceba..77ae2200b0894317a473c951792de992dbcf0cfd 100644
Binary files a/wp-content/plugins/wordpress-popular-post/screenshot-3.gif and b/wp-content/plugins/wordpress-popular-post/screenshot-3.gif differ
diff --git a/wp-content/plugins/wordpress-popular-post/screenshot-4.gif b/wp-content/plugins/wordpress-popular-post/screenshot-4.gif
index 07cfb46f7b72e79cff7fd48fb8b46b070332a518..3cc0ac6467bc31fe71f25463a2e613686b4a8d09 100644
Binary files a/wp-content/plugins/wordpress-popular-post/screenshot-4.gif and b/wp-content/plugins/wordpress-popular-post/screenshot-4.gif differ
diff --git a/wp-content/plugins/wordpress-popular-post/timthumb.php b/wp-content/plugins/wordpress-popular-post/timthumb.php
new file mode 100644
index 0000000000000000000000000000000000000000..3613f38e86d82e589f42946901dfcad029c1d95c
--- /dev/null
+++ b/wp-content/plugins/wordpress-popular-post/timthumb.php
@@ -0,0 +1,1245 @@
+<?php
+/**
+ * TimThumb by Ben Gillbanks and Mark Maunder
+ * Based on work done by Tim McDaniels and Darren Hoyt
+ * http://code.google.com/p/timthumb/
+ * 
+ * GNU General Public License, version 2
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ *
+ * Examples and documentation available on the project homepage
+ * http://www.binarymoon.co.uk/projects/timthumb/
+ * 
+ * $Rev$
+ */
+
+/*
+ * --- TimThumb CONFIGURATION ---
+ * To edit the configs it is best to create a file called timthumb-config.php
+ * and define variables you want to customize in there. It will automatically be
+ * loaded by timthumb. This will save you having to re-edit these variables
+ * everytime you download a new version
+*/
+define ('VERSION', '2.8.10');																		// Version of this script 
+//Load a config file if it exists. Otherwise, use the values below
+if( file_exists(dirname(__FILE__) . '/timthumb-config.php'))	require_once('timthumb-config.php');
+if(! defined('DEBUG_ON') )					define ('DEBUG_ON', false);								// Enable debug logging to web server error log (STDERR)
+if(! defined('DEBUG_LEVEL') )				define ('DEBUG_LEVEL', 1);								// Debug level 1 is less noisy and 3 is the most noisy
+if(! defined('MEMORY_LIMIT') )				define ('MEMORY_LIMIT', '30M');							// Set PHP memory limit
+if(! defined('BLOCK_EXTERNAL_LEECHERS') ) 	define ('BLOCK_EXTERNAL_LEECHERS', false);				// If the image or webshot is being loaded on an external site, display a red "No Hotlinking" gif.
+
+//Image fetching and caching
+if(! defined('ALLOW_EXTERNAL') )			define ('ALLOW_EXTERNAL', TRUE);						// Allow image fetching from external websites. Will check against ALLOWED_SITES if ALLOW_ALL_EXTERNAL_SITES is false
+if(! defined('ALLOW_ALL_EXTERNAL_SITES') ) 	define ('ALLOW_ALL_EXTERNAL_SITES', TRUE);				// Less secure. 
+if(! defined('FILE_CACHE_ENABLED') ) 		define ('FILE_CACHE_ENABLED', TRUE);					// Should we store resized/modified images on disk to speed things up?
+if(! defined('FILE_CACHE_TIME_BETWEEN_CLEANS'))	define ('FILE_CACHE_TIME_BETWEEN_CLEANS', 86400);	// How often the cache is cleaned 
+
+if(! defined('FILE_CACHE_MAX_FILE_AGE') ) 	define ('FILE_CACHE_MAX_FILE_AGE', 86400);				// How old does a file have to be to be deleted from the cache
+if(! defined('FILE_CACHE_SUFFIX') ) 		define ('FILE_CACHE_SUFFIX', '.timthumb.txt');			// What to put at the end of all files in the cache directory so we can identify them
+if(! defined('FILE_CACHE_PREFIX') ) 		define ('FILE_CACHE_PREFIX', 'timthumb');				// What to put at the beg of all files in the cache directory so we can identify them
+if(! defined('FILE_CACHE_DIRECTORY') ) 		define ('FILE_CACHE_DIRECTORY', './cache');				// Directory where images are cached. Left blank it will use the system temporary directory (which is better for security)
+if(! defined('MAX_FILE_SIZE') )				define ('MAX_FILE_SIZE', 10485760);						// 10 Megs is 10485760. This is the max internal or external file size that we'll process.  
+if(! defined('CURL_TIMEOUT') )				define ('CURL_TIMEOUT', 20);							// Timeout duration for Curl. This only applies if you have Curl installed and aren't using PHP's default URL fetching mechanism.
+if(! defined('WAIT_BETWEEN_FETCH_ERRORS') )	define ('WAIT_BETWEEN_FETCH_ERRORS', 3600);				//Time to wait between errors fetching remote file
+
+//Browser caching
+if(! defined('BROWSER_CACHE_MAX_AGE') ) 	define ('BROWSER_CACHE_MAX_AGE', 864000);				// Time to cache in the browser
+if(! defined('BROWSER_CACHE_DISABLE') ) 	define ('BROWSER_CACHE_DISABLE', false);				// Use for testing if you want to disable all browser caching
+
+//Image size and defaults
+if(! defined('MAX_WIDTH') ) 			define ('MAX_WIDTH', 1500);									// Maximum image width
+if(! defined('MAX_HEIGHT') ) 			define ('MAX_HEIGHT', 1500);								// Maximum image height
+if(! defined('NOT_FOUND_IMAGE') )		define ('NOT_FOUND_IMAGE', '');								// Image to serve if any 404 occurs 
+if(! defined('ERROR_IMAGE') )			define ('ERROR_IMAGE', '');									// Image to serve if an error occurs instead of showing error message 
+if(! defined('PNG_IS_TRANSPARENT') ) 	define ('PNG_IS_TRANSPARENT', FALSE);  //42 Define if a png image should have a transparent background color. Use False value if you want to display a custom coloured canvas_colour 
+if(! defined('DEFAULT_Q') )				define ('DEFAULT_Q', 90);									// Default image quality. Allows overrid in timthumb-config.php
+if(! defined('DEFAULT_ZC') )			define ('DEFAULT_ZC', 1);									// Default zoom/crop setting. Allows overrid in timthumb-config.php
+if(! defined('DEFAULT_F') )				define ('DEFAULT_F', '');									// Default image filters. Allows overrid in timthumb-config.php
+if(! defined('DEFAULT_S') )				define ('DEFAULT_S', 0);									// Default sharpen value. Allows overrid in timthumb-config.php
+if(! defined('DEFAULT_CC') )			define ('DEFAULT_CC', 'ffffff');							// Default canvas colour. Allows overrid in timthumb-config.php
+
+
+//Image compression is enabled if either of these point to valid paths
+
+//These are now disabled by default because the file sizes of PNGs (and GIFs) are much smaller than we used to generate. 
+//They only work for PNGs. GIFs and JPEGs are not affected.
+if(! defined('OPTIPNG_ENABLED') ) 		define ('OPTIPNG_ENABLED', false);  
+if(! defined('OPTIPNG_PATH') ) 			define ('OPTIPNG_PATH', '/usr/bin/optipng'); //This will run first because it gives better compression than pngcrush. 
+if(! defined('PNGCRUSH_ENABLED') ) 		define ('PNGCRUSH_ENABLED', false); 
+if(! defined('PNGCRUSH_PATH') ) 		define ('PNGCRUSH_PATH', '/usr/bin/pngcrush'); //This will only run if OPTIPNG_PATH is not set or is not valid
+
+/*
+	-------====Website Screenshots configuration - BETA====-------
+	
+	If you just want image thumbnails and don't want website screenshots, you can safely leave this as is.	
+	
+	If you would like to get website screenshots set up, you will need root access to your own server.
+
+	Enable ALLOW_ALL_EXTERNAL_SITES so you can fetch any external web page. This is more secure now that we're using a non-web folder for cache.
+	Enable BLOCK_EXTERNAL_LEECHERS so that your site doesn't generate thumbnails for the whole Internet.
+
+	Instructions to get website screenshots enabled on Ubuntu Linux:
+
+	1. Install Xvfb with the following command: sudo apt-get install subversion libqt4-webkit libqt4-dev g++ xvfb
+	2. Go to a directory where you can download some code
+	3. Check-out the latest version of CutyCapt with the following command: svn co https://cutycapt.svn.sourceforge.net/svnroot/cutycapt
+	4. Compile CutyCapt by doing: cd cutycapt/CutyCapt
+	5. qmake
+	6. make
+	7. cp CutyCapt /usr/local/bin/
+	8. Test it by running: xvfb-run --server-args="-screen 0, 1024x768x24" CutyCapt --url="http://markmaunder.com/" --out=test.png
+	9. If you get a file called test.png with something in it, it probably worked. Now test the script by accessing it as follows:
+	10. http://yoursite.com/path/to/timthumb.php?src=http://markmaunder.com/&amp;webshot=1
+
+	Notes on performance: 
+	The first time a webshot loads, it will take a few seconds.
+	From then on it uses the regular timthumb caching mechanism with the configurable options above
+	and loading will be very fast.
+
+	--ADVANCED USERS ONLY--
+	If you'd like a slight speedup (about 25%) and you know Linux, you can run the following command which will keep Xvfb running in the background.
+	nohup Xvfb :100 -ac -nolisten tcp -screen 0, 1024x768x24 > /dev/null 2>&amp;1 &amp;
+	Then set WEBSHOT_XVFB_RUNNING = true below. This will save your server having to fire off a new Xvfb server and shut it down every time a new shot is generated. 
+	You will need to take responsibility for keeping Xvfb running in case it crashes. (It seems pretty stable)
+	You will also need to take responsibility for server security if you're running Xvfb as root. 
+
+
+*/
+if(! defined('WEBSHOT_ENABLED') ) 	define ('WEBSHOT_ENABLED', false);			//Beta feature. Adding webshot=1 to your query string will cause the script to return a browser screenshot rather than try to fetch an image.
+if(! defined('WEBSHOT_CUTYCAPT') ) 	define ('WEBSHOT_CUTYCAPT', '/usr/local/bin/CutyCapt'); //The path to CutyCapt. 
+if(! defined('WEBSHOT_XVFB') ) 		define ('WEBSHOT_XVFB', '/usr/bin/xvfb-run');		//The path to the Xvfb server
+if(! defined('WEBSHOT_SCREEN_X') ) 	define ('WEBSHOT_SCREEN_X', '1024');			//1024 works ok
+if(! defined('WEBSHOT_SCREEN_Y') ) 	define ('WEBSHOT_SCREEN_Y', '768');			//768 works ok
+if(! defined('WEBSHOT_COLOR_DEPTH') ) 	define ('WEBSHOT_COLOR_DEPTH', '24');			//I haven't tested anything besides 24
+if(! defined('WEBSHOT_IMAGE_FORMAT') ) 	define ('WEBSHOT_IMAGE_FORMAT', 'png');			//png is about 2.5 times the size of jpg but is a LOT better quality
+if(! defined('WEBSHOT_TIMEOUT') ) 	define ('WEBSHOT_TIMEOUT', '20');			//Seconds to wait for a webshot
+if(! defined('WEBSHOT_USER_AGENT') ) 	define ('WEBSHOT_USER_AGENT', "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18"); //I hate to do this, but a non-browser robot user agent might not show what humans see. So we pretend to be Firefox
+if(! defined('WEBSHOT_JAVASCRIPT_ON') ) define ('WEBSHOT_JAVASCRIPT_ON', true);			//Setting to false might give you a slight speedup and block ads. But it could cause other issues.
+if(! defined('WEBSHOT_JAVA_ON') ) 	define ('WEBSHOT_JAVA_ON', false);			//Have only tested this as fase
+if(! defined('WEBSHOT_PLUGINS_ON') ) 	define ('WEBSHOT_PLUGINS_ON', true);			//Enable flash and other plugins
+if(! defined('WEBSHOT_PROXY') ) 	define ('WEBSHOT_PROXY', '');				//In case you're behind a proxy server. 
+if(! defined('WEBSHOT_XVFB_RUNNING') )	define ('WEBSHOT_XVFB_RUNNING', false);			//ADVANCED: Enable this if you've got Xvfb running in the background.
+
+
+// If ALLOW_EXTERNAL is true and ALLOW_ALL_EXTERNAL_SITES is false, then external images will only be fetched from these domains and their subdomains. 
+if(! isset($ALLOWED_SITES)){
+	$ALLOWED_SITES = array (
+		'flickr.com',
+		'staticflickr.com',
+		'picasa.com',
+		'img.youtube.com',
+		'upload.wikimedia.org',
+		'photobucket.com',
+		'imgur.com',
+		'imageshack.us',
+		'tinypic.com',
+	);
+}
+// -------------------------------------------------------------
+// -------------- STOP EDITING CONFIGURATION HERE --------------
+// -------------------------------------------------------------
+
+timthumb::start();
+
+class timthumb {
+	protected $src = "";
+	protected $is404 = false;
+	protected $docRoot = "";
+	protected $lastURLError = false;
+	protected $localImage = "";
+	protected $localImageMTime = 0;
+	protected $url = false;
+	protected $myHost = "";
+	protected $isURL = false;
+	protected $cachefile = '';
+	protected $errors = array();
+	protected $toDeletes = array();
+	protected $cacheDirectory = '';
+	protected $startTime = 0;
+	protected $lastBenchTime = 0;
+	protected $cropTop = false;
+	protected $salt = "";
+	protected $fileCacheVersion = 1; //Generally if timthumb.php is modifed (upgraded) then the salt changes and all cache files are recreated. This is a backup mechanism to force regen.
+	protected $filePrependSecurityBlock = "<?php die('Execution denied!'); //"; //Designed to have three letter mime type, space, question mark and greater than symbol appended. 6 bytes total.
+	protected static $curlDataWritten = 0;
+	protected static $curlFH = false;
+	public static function start(){
+		$tim = new timthumb();
+		$tim->handleErrors();
+		$tim->securityChecks();
+		if($tim->tryBrowserCache()){
+			exit(0);
+		}
+		$tim->handleErrors();
+		if(FILE_CACHE_ENABLED && $tim->tryServerCache()){
+			exit(0);
+		}
+		$tim->handleErrors();
+		$tim->run();
+		$tim->handleErrors();
+		exit(0);
+	}
+	public function __construct(){
+		global $ALLOWED_SITES;
+		$this->startTime = microtime(true);
+		date_default_timezone_set('UTC');
+		$this->debug(1, "Starting new request from " . $this->getIP() . " to " . $_SERVER['REQUEST_URI']);
+		$this->calcDocRoot();
+		//On windows systems I'm assuming fileinode returns an empty string or a number that doesn't change. Check this.
+		$this->salt = @filemtime(__FILE__) . '-' . @fileinode(__FILE__);
+		$this->debug(3, "Salt is: " . $this->salt);
+		if(FILE_CACHE_DIRECTORY){
+			if(! is_dir(FILE_CACHE_DIRECTORY)){
+				@mkdir(FILE_CACHE_DIRECTORY);
+				if(! is_dir(FILE_CACHE_DIRECTORY)){
+					$this->error("Could not create the file cache directory.");
+					return false;
+				}
+			}
+			$this->cacheDirectory = FILE_CACHE_DIRECTORY;
+			if (!touch($this->cacheDirectory . '/index.html')) {
+				$this->error("Could not create the index.html file - to fix this create an empty file named index.html file in the cache directory.");
+			}
+		} else {
+			$this->cacheDirectory = sys_get_temp_dir();
+		}
+		//Clean the cache before we do anything because we don't want the first visitor after FILE_CACHE_TIME_BETWEEN_CLEANS expires to get a stale image. 
+		$this->cleanCache();
+		
+		$this->myHost = preg_replace('/^www\./i', '', $_SERVER['HTTP_HOST']);
+		$this->src = $this->param('src');
+		$this->url = parse_url($this->src);
+		$this->src = preg_replace('/https?:\/\/(?:www\.)?' . $this->myHost . '/i', '', $this->src);
+		
+		if(strlen($this->src) <= 3){
+			$this->error("No image specified");
+			return false;
+		}
+		if(BLOCK_EXTERNAL_LEECHERS && array_key_exists('HTTP_REFERER', $_SERVER) && (! preg_match('/^https?:\/\/(?:www\.)?' . $this->myHost . '(?:$|\/)/i', $_SERVER['HTTP_REFERER']))){
+			// base64 encoded red image that says 'no hotlinkers'
+			// nothing to worry about! :)
+			$imgData = base64_decode("R0lGODlhUAAMAIAAAP8AAP///yH5BAAHAP8ALAAAAABQAAwAAAJpjI+py+0Po5y0OgAMjjv01YUZ\nOGplhWXfNa6JCLnWkXplrcBmW+spbwvaVr/cDyg7IoFC2KbYVC2NQ5MQ4ZNao9Ynzjl9ScNYpneb\nDULB3RP6JuPuaGfuuV4fumf8PuvqFyhYtjdoeFgAADs=");
+			header('Content-Type: image/gif');
+			header('Content-Length: ' . sizeof($imgData));
+			header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
+			header("Pragma: no-cache");
+			header('Expires: ' . gmdate ('D, d M Y H:i:s', time()));
+			echo $imgData;
+			return false;
+			exit(0);
+		}
+		if(preg_match('/^https?:\/\/[^\/]+/i', $this->src)){
+			$this->debug(2, "Is a request for an external URL: " . $this->src);
+			$this->isURL = true;
+		} else {
+			$this->debug(2, "Is a request for an internal file: " . $this->src);
+		}
+		if($this->isURL && (! ALLOW_EXTERNAL)){
+			$this->error("You are not allowed to fetch images from an external website.");
+			return false;
+		}
+		if($this->isURL){
+			if(ALLOW_ALL_EXTERNAL_SITES){
+				$this->debug(2, "Fetching from all external sites is enabled.");
+			} else {
+				$this->debug(2, "Fetching only from selected external sites is enabled.");
+				$allowed = false;
+				foreach($ALLOWED_SITES as $site){
+					if ((strtolower(substr($this->url['host'],-strlen($site)-1)) === strtolower(".$site")) || (strtolower($this->url['host'])===strtolower($site))) {
+						$this->debug(3, "URL hostname {$this->url['host']} matches $site so allowing.");
+						$allowed = true;
+					}
+				}
+				if(! $allowed){
+					return $this->error("You may not fetch images from that site. To enable this site in timthumb, you can either add it to \$ALLOWED_SITES and set ALLOW_EXTERNAL=true. Or you can set ALLOW_ALL_EXTERNAL_SITES=true, depending on your security needs.");
+				}
+			}
+		}
+
+		$cachePrefix = ($this->isURL ? '_ext_' : '_int_');
+		if($this->isURL){
+			$arr = explode('&amp;', $_SERVER ['QUERY_STRING']);
+			asort($arr);
+			$this->cachefile = $this->cacheDirectory . '/' . FILE_CACHE_PREFIX . $cachePrefix . md5($this->salt . implode('', $arr) . $this->fileCacheVersion) . FILE_CACHE_SUFFIX;
+		} else {
+			$this->localImage = $this->getLocalImagePath($this->src);
+			if(! $this->localImage){
+				$this->debug(1, "Could not find the local image: {$this->localImage}");
+				$this->error("Could not find the internal image you specified.");
+				$this->set404();
+				return false;
+			}
+			$this->debug(1, "Local image path is {$this->localImage}");
+			$this->localImageMTime = @filemtime($this->localImage);
+			//We include the mtime of the local file in case in changes on disk.
+			$this->cachefile = $this->cacheDirectory . '/' . FILE_CACHE_PREFIX . $cachePrefix . md5($this->salt . $this->localImageMTime . $_SERVER ['QUERY_STRING'] . $this->fileCacheVersion) . FILE_CACHE_SUFFIX;
+		}
+		$this->debug(2, "Cache file is: " . $this->cachefile);
+
+		return true;
+	}
+	public function __destruct(){
+		foreach($this->toDeletes as $del){
+			$this->debug(2, "Deleting temp file $del");
+			@unlink($del);
+		}
+	}
+	public function run(){
+		if($this->isURL){
+			if(! ALLOW_EXTERNAL){
+				$this->debug(1, "Got a request for an external image but ALLOW_EXTERNAL is disabled so returning error msg.");
+				$this->error("You are not allowed to fetch images from an external website.");
+				return false;
+			}
+			$this->debug(3, "Got request for external image. Starting serveExternalImage.");
+			if($this->param('webshot')){
+				if(WEBSHOT_ENABLED){
+					$this->debug(3, "webshot param is set, so we're going to take a webshot.");
+					$this->serveWebshot();
+				} else {
+					$this->error("You added the webshot parameter but webshots are disabled on this server. You need to set WEBSHOT_ENABLED == true to enable webshots.");
+				}
+			} else {
+				$this->debug(3, "webshot is NOT set so we're going to try to fetch a regular image.");
+				$this->serveExternalImage();
+
+			}
+		} else {
+			$this->debug(3, "Got request for internal image. Starting serveInternalImage()");
+			$this->serveInternalImage();
+		}
+		return true;
+	}
+	protected function handleErrors(){
+		if($this->haveErrors()){ 
+			if(NOT_FOUND_IMAGE && $this->is404()){
+				if($this->serveImg(NOT_FOUND_IMAGE)){
+					exit(0);
+				} else {
+					$this->error("Additionally, the 404 image that is configured could not be found or there was an error serving it.");
+				}
+			}
+			if(ERROR_IMAGE){
+				if($this->serveImg(ERROR_IMAGE)){
+					exit(0);
+				} else {
+					$this->error("Additionally, the error image that is configured could not be found or there was an error serving it.");
+				}
+			}
+			$this->serveErrors(); 
+			exit(0); 
+		}
+		return false;
+	}
+	protected function tryBrowserCache(){
+		if(BROWSER_CACHE_DISABLE){ $this->debug(3, "Browser caching is disabled"); return false; }
+		if(!empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ){
+			$this->debug(3, "Got a conditional get");
+			$mtime = false;
+			//We've already checked if the real file exists in the constructor
+			if(! is_file($this->cachefile)){
+				//If we don't have something cached, regenerate the cached image.
+				return false;
+			}
+			if($this->localImageMTime){
+				$mtime = $this->localImageMTime;
+				$this->debug(3, "Local real file's modification time is $mtime");
+			} else if(is_file($this->cachefile)){ //If it's not a local request then use the mtime of the cached file to determine the 304
+				$mtime = @filemtime($this->cachefile);
+				$this->debug(3, "Cached file's modification time is $mtime");
+			}
+			if(! $mtime){ return false; }
+
+			$iftime = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
+			$this->debug(3, "The conditional get's if-modified-since unixtime is $iftime");
+			if($iftime < 1){
+				$this->debug(3, "Got an invalid conditional get modified since time. Returning false.");
+				return false;
+			}
+			if($iftime < $mtime){ //Real file or cache file has been modified since last request, so force refetch.
+				$this->debug(3, "File has been modified since last fetch.");
+				return false;
+			} else { //Otherwise serve a 304
+				$this->debug(3, "File has not been modified since last get, so serving a 304.");
+				header ($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
+				$this->debug(1, "Returning 304 not modified");
+				return true;
+			}
+		}
+		return false;
+	}
+	protected function tryServerCache(){
+		$this->debug(3, "Trying server cache");
+		if(file_exists($this->cachefile)){
+			$this->debug(3, "Cachefile {$this->cachefile} exists");
+			if($this->isURL){
+				$this->debug(3, "This is an external request, so checking if the cachefile is empty which means the request failed previously.");
+				if(filesize($this->cachefile) < 1){
+					$this->debug(3, "Found an empty cachefile indicating a failed earlier request. Checking how old it is.");
+					//Fetching error occured previously
+					if(time() - @filemtime($this->cachefile) > WAIT_BETWEEN_FETCH_ERRORS){
+						$this->debug(3, "File is older than " . WAIT_BETWEEN_FETCH_ERRORS . " seconds. Deleting and returning false so app can try and load file.");
+						@unlink($this->cachefile);
+						return false; //to indicate we didn't serve from cache and app should try and load
+					} else {
+						$this->debug(3, "Empty cachefile is still fresh so returning message saying we had an error fetching this image from remote host.");
+						$this->set404();
+						$this->error("An error occured fetching image.");
+						return false; 
+					}
+				}
+			} else {
+				$this->debug(3, "Trying to serve cachefile {$this->cachefile}");
+			}
+			if($this->serveCacheFile()){
+				$this->debug(3, "Succesfully served cachefile {$this->cachefile}");
+				return true;
+			} else {
+				$this->debug(3, "Failed to serve cachefile {$this->cachefile} - Deleting it from cache.");
+				//Image serving failed. We can't retry at this point, but lets remove it from cache so the next request recreates it
+				@unlink($this->cachefile);
+				return true;
+			}
+		}
+	}
+	protected function error($err){
+		$this->debug(3, "Adding error message: $err");
+		$this->errors[] = $err;
+		return false;
+
+	}
+	protected function haveErrors(){
+		if(sizeof($this->errors) > 0){
+			return true;
+		}
+		return false;
+	}
+	protected function serveErrors(){
+		header ($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Request');
+		$html = '<ul>';
+		foreach($this->errors as $err){
+			$html .= '<li>' . htmlentities($err) . '</li>';
+		}
+		$html .= '</ul>';
+		echo '<h1>A TimThumb error has occured</h1>The following error(s) occured:<br />' . $html . '<br />';
+		echo '<br />Query String : ' . htmlentities ($_SERVER['QUERY_STRING']);
+		echo '<br />TimThumb version : ' . VERSION . '</pre>';
+	}
+	protected function serveInternalImage(){
+		$this->debug(3, "Local image path is $this->localImage");
+		if(! $this->localImage){
+			$this->sanityFail("localImage not set after verifying it earlier in the code.");
+			return false;
+		}
+		$fileSize = filesize($this->localImage);
+		if($fileSize > MAX_FILE_SIZE){
+			$this->error("The file you specified is greater than the maximum allowed file size.");
+			return false;
+		}
+		if($fileSize <= 0){
+			$this->error("The file you specified is <= 0 bytes.");
+			return false;
+		}
+		$this->debug(3, "Calling processImageAndWriteToCache() for local image.");
+		if($this->processImageAndWriteToCache($this->localImage)){
+			$this->serveCacheFile();
+			return true;
+		} else { 
+			return false;
+		}
+	}
+	protected function cleanCache(){
+		if (FILE_CACHE_TIME_BETWEEN_CLEANS < 0) {
+			return;
+		}
+		$this->debug(3, "cleanCache() called");
+		$lastCleanFile = $this->cacheDirectory . '/timthumb_cacheLastCleanTime.touch';
+		
+		//If this is a new timthumb installation we need to create the file
+		if(! is_file($lastCleanFile)){
+			$this->debug(1, "File tracking last clean doesn't exist. Creating $lastCleanFile");
+			if (!touch($lastCleanFile)) {
+				$this->error("Could not create cache clean timestamp file.");
+			}
+			return;
+		}
+		if(@filemtime($lastCleanFile) < (time() - FILE_CACHE_TIME_BETWEEN_CLEANS) ){ //Cache was last cleaned more than 1 day ago
+			$this->debug(1, "Cache was last cleaned more than " . FILE_CACHE_TIME_BETWEEN_CLEANS . " seconds ago. Cleaning now.");
+			// Very slight race condition here, but worst case we'll have 2 or 3 servers cleaning the cache simultaneously once a day.
+			if (!touch($lastCleanFile)) {
+				$this->error("Could not create cache clean timestamp file.");
+			}
+			$files = glob($this->cacheDirectory . '/*' . FILE_CACHE_SUFFIX);
+			if ($files) {
+				$timeAgo = time() - FILE_CACHE_MAX_FILE_AGE;
+				foreach($files as $file){
+					if(@filemtime($file) < $timeAgo){
+						$this->debug(3, "Deleting cache file $file older than max age: " . FILE_CACHE_MAX_FILE_AGE . " seconds");
+						@unlink($file);
+					}
+				}
+			}
+			return true;
+		} else {
+			$this->debug(3, "Cache was cleaned less than " . FILE_CACHE_TIME_BETWEEN_CLEANS . " seconds ago so no cleaning needed.");
+		}
+		return false;
+	}
+	protected function processImageAndWriteToCache($localImage){
+		$sData = getimagesize($localImage);
+		$origType = $sData[2];
+		$mimeType = $sData['mime'];
+
+		$this->debug(3, "Mime type of image is $mimeType");
+		if(! preg_match('/^image\/(?:gif|jpg|jpeg|png)$/i', $mimeType)){
+			return $this->error("The image being resized is not a valid gif, jpg or png.");
+		}
+
+		if (!function_exists ('imagecreatetruecolor')) {
+		    return $this->error('GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library');
+		}
+
+		if (function_exists ('imagefilter') && defined ('IMG_FILTER_NEGATE')) {
+			$imageFilters = array (
+				1 => array (IMG_FILTER_NEGATE, 0),
+				2 => array (IMG_FILTER_GRAYSCALE, 0),
+				3 => array (IMG_FILTER_BRIGHTNESS, 1),
+				4 => array (IMG_FILTER_CONTRAST, 1),
+				5 => array (IMG_FILTER_COLORIZE, 4),
+				6 => array (IMG_FILTER_EDGEDETECT, 0),
+				7 => array (IMG_FILTER_EMBOSS, 0),
+				8 => array (IMG_FILTER_GAUSSIAN_BLUR, 0),
+				9 => array (IMG_FILTER_SELECTIVE_BLUR, 0),
+				10 => array (IMG_FILTER_MEAN_REMOVAL, 0),
+				11 => array (IMG_FILTER_SMOOTH, 0),
+			);
+		}
+
+		// get standard input properties		
+		$new_width =  (int) abs ($this->param('w', 0));
+		$new_height = (int) abs ($this->param('h', 0));
+		$zoom_crop = (int) $this->param('zc', DEFAULT_ZC);
+		$quality = (int) abs ($this->param('q', DEFAULT_Q));
+		$align = $this->cropTop ? 't' : $this->param('a', 'c');
+		$filters = $this->param('f', DEFAULT_F);
+		$sharpen = (bool) $this->param('s', DEFAULT_S);
+		$canvas_color = $this->param('cc', DEFAULT_CC);
+		$canvas_trans = (bool) $this->param('ct', '1');
+
+		// set default width and height if neither are set already
+		if ($new_width == 0 && $new_height == 0) {
+		    $new_width = 100;
+		    $new_height = 100;
+		}
+
+		// ensure size limits can not be abused
+		$new_width = min ($new_width, MAX_WIDTH);
+		$new_height = min ($new_height, MAX_HEIGHT);
+
+		// set memory limit to be able to have enough space to resize larger images
+		$this->setMemoryLimit();
+
+		// open the existing image
+		$image = $this->openImage ($mimeType, $localImage);
+		if ($image === false) {
+			return $this->error('Unable to open image.');
+		}
+
+		// Get original width and height
+		$width = imagesx ($image);
+		$height = imagesy ($image);
+		$origin_x = 0;
+		$origin_y = 0;
+
+		// generate new w/h if not provided
+		if ($new_width && !$new_height) {
+			$new_height = floor ($height * ($new_width / $width));
+		} else if ($new_height && !$new_width) {
+			$new_width = floor ($width * ($new_height / $height));
+		}
+
+		// scale down and add borders
+		if ($zoom_crop == 3) {
+
+			$final_height = $height * ($new_width / $width);
+
+			if ($final_height > $new_height) {
+				$new_width = $width * ($new_height / $height);
+			} else {
+				$new_height = $final_height;
+			}
+
+		}
+
+		// create a new true color image
+		$canvas = imagecreatetruecolor ($new_width, $new_height);
+		imagealphablending ($canvas, false);
+
+		if (strlen($canvas_color) == 3) { //if is 3-char notation, edit string into 6-char notation
+			$canvas_color =  str_repeat(substr($canvas_color, 0, 1), 2) . str_repeat(substr($canvas_color, 1, 1), 2) . str_repeat(substr($canvas_color, 2, 1), 2); 
+		} else if (strlen($canvas_color) != 6) {
+			$canvas_color = DEFAULT_CC; // on error return default canvas color
+ 		}
+
+		$canvas_color_R = hexdec (substr ($canvas_color, 0, 2));
+		$canvas_color_G = hexdec (substr ($canvas_color, 2, 2));
+		$canvas_color_B = hexdec (substr ($canvas_color, 4, 2));
+
+		// Create a new transparent color for image
+	    // If is a png and PNG_IS_TRANSPARENT is false then remove the alpha transparency 
+		// (and if is set a canvas color show it in the background)
+		if(preg_match('/^image\/png$/i', $mimeType) && !PNG_IS_TRANSPARENT && $canvas_trans){ 
+			$color = imagecolorallocatealpha ($canvas, $canvas_color_R, $canvas_color_G, $canvas_color_B, 127);		
+		}else{
+			$color = imagecolorallocatealpha ($canvas, $canvas_color_R, $canvas_color_G, $canvas_color_B, 0);
+		}
+
+
+		// Completely fill the background of the new image with allocated color.
+		imagefill ($canvas, 0, 0, $color);
+
+		// scale down and add borders
+		if ($zoom_crop == 2) {
+
+			$final_height = $height * ($new_width / $width);
+
+			if ($final_height > $new_height) {
+
+				$origin_x = $new_width / 2;
+				$new_width = $width * ($new_height / $height);
+				$origin_x = round ($origin_x - ($new_width / 2));
+
+			} else {
+
+				$origin_y = $new_height / 2;
+				$new_height = $final_height;
+				$origin_y = round ($origin_y - ($new_height / 2));
+
+			}
+
+		}
+
+		// Restore transparency blending
+		imagesavealpha ($canvas, true);
+
+		if ($zoom_crop > 0) {
+
+			$src_x = $src_y = 0;
+			$src_w = $width;
+			$src_h = $height;
+
+			$cmp_x = $width / $new_width;
+			$cmp_y = $height / $new_height;
+
+			// calculate x or y coordinate and width or height of source
+			if ($cmp_x > $cmp_y) {
+
+				$src_w = round ($width / $cmp_x * $cmp_y);
+				$src_x = round (($width - ($width / $cmp_x * $cmp_y)) / 2);
+
+			} else if ($cmp_y > $cmp_x) {
+
+				$src_h = round ($height / $cmp_y * $cmp_x);
+				$src_y = round (($height - ($height / $cmp_y * $cmp_x)) / 2);
+
+			}
+
+			// positional cropping!
+			if ($align) {
+				if (strpos ($align, 't') !== false) {
+					$src_y = 0;
+				}
+				if (strpos ($align, 'b') !== false) {
+					$src_y = $height - $src_h;
+				}
+				if (strpos ($align, 'l') !== false) {
+					$src_x = 0;
+				}
+				if (strpos ($align, 'r') !== false) {
+					$src_x = $width - $src_w;
+				}
+			}
+
+			imagecopyresampled ($canvas, $image, $origin_x, $origin_y, $src_x, $src_y, $new_width, $new_height, $src_w, $src_h);
+
+		} else {
+
+			// copy and resize part of an image with resampling
+			imagecopyresampled ($canvas, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+
+		}
+
+		if ($filters != '' && function_exists ('imagefilter') && defined ('IMG_FILTER_NEGATE')) {
+			// apply filters to image
+			$filterList = explode ('|', $filters);
+			foreach ($filterList as $fl) {
+
+				$filterSettings = explode (',', $fl);
+				if (isset ($imageFilters[$filterSettings[0]])) {
+
+					for ($i = 0; $i < 4; $i ++) {
+						if (!isset ($filterSettings[$i])) {
+							$filterSettings[$i] = null;
+						} else {
+							$filterSettings[$i] = (int) $filterSettings[$i];
+						}
+					}
+
+					switch ($imageFilters[$filterSettings[0]][1]) {
+
+						case 1:
+
+							imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1]);
+							break;
+
+						case 2:
+
+							imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2]);
+							break;
+
+						case 3:
+
+							imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3]);
+							break;
+
+						case 4:
+
+							imagefilter ($canvas, $imageFilters[$filterSettings[0]][0], $filterSettings[1], $filterSettings[2], $filterSettings[3], $filterSettings[4]);
+							break;
+
+						default:
+
+							imagefilter ($canvas, $imageFilters[$filterSettings[0]][0]);
+							break;
+
+					}
+				}
+			}
+		}
+
+		// sharpen image
+		if ($sharpen && function_exists ('imageconvolution')) {
+
+			$sharpenMatrix = array (
+					array (-1,-1,-1),
+					array (-1,16,-1),
+					array (-1,-1,-1),
+					);
+
+			$divisor = 8;
+			$offset = 0;
+
+			imageconvolution ($canvas, $sharpenMatrix, $divisor, $offset);
+
+		}
+		//Straight from Wordpress core code. Reduces filesize by up to 70% for PNG's
+		if ( (IMAGETYPE_PNG == $origType || IMAGETYPE_GIF == $origType) && function_exists('imageistruecolor') && !imageistruecolor( $image ) && imagecolortransparent( $image ) > 0 ){
+			imagetruecolortopalette( $canvas, false, imagecolorstotal( $image ) );
+		}
+
+		$imgType = "";
+		$tempfile = tempnam($this->cacheDirectory, 'timthumb_tmpimg_');
+		if(preg_match('/^image\/(?:jpg|jpeg)$/i', $mimeType)){ 
+			$imgType = 'jpg';
+			imagejpeg($canvas, $tempfile, $quality); 
+		} else if(preg_match('/^image\/png$/i', $mimeType)){ 
+			$imgType = 'png';
+			imagepng($canvas, $tempfile, floor($quality * 0.09));
+		} else if(preg_match('/^image\/gif$/i', $mimeType)){
+			$imgType = 'gif';
+			imagegif($canvas, $tempfile);
+		} else {
+			return $this->sanityFail("Could not match mime type after verifying it previously.");
+		}
+
+		if($imgType == 'png' && OPTIPNG_ENABLED && OPTIPNG_PATH && @is_file(OPTIPNG_PATH)){
+			$exec = OPTIPNG_PATH;
+			$this->debug(3, "optipng'ing $tempfile");
+			$presize = filesize($tempfile);
+			$out = `$exec -o1 $tempfile`; //you can use up to -o7 but it really slows things down
+			clearstatcache();
+			$aftersize = filesize($tempfile);
+			$sizeDrop = $presize - $aftersize;
+			if($sizeDrop > 0){
+				$this->debug(1, "optipng reduced size by $sizeDrop");
+			} else if($sizeDrop < 0){
+				$this->debug(1, "optipng increased size! Difference was: $sizeDrop");
+			} else {
+				$this->debug(1, "optipng did not change image size.");
+			}
+		} else if($imgType == 'png' && PNGCRUSH_ENABLED && PNGCRUSH_PATH && @is_file(PNGCRUSH_PATH)){
+			$exec = PNGCRUSH_PATH;
+			$tempfile2 = tempnam($this->cacheDirectory, 'timthumb_tmpimg_');
+			$this->debug(3, "pngcrush'ing $tempfile to $tempfile2");
+			$out = `$exec $tempfile $tempfile2`;
+			$todel = "";
+			if(is_file($tempfile2)){
+				$sizeDrop = filesize($tempfile) - filesize($tempfile2);
+				if($sizeDrop > 0){
+					$this->debug(1, "pngcrush was succesful and gave a $sizeDrop byte size reduction");
+					$todel = $tempfile;
+					$tempfile = $tempfile2;
+				} else {
+					$this->debug(1, "pngcrush did not reduce file size. Difference was $sizeDrop bytes.");
+					$todel = $tempfile2;
+				}
+			} else {
+				$this->debug(3, "pngcrush failed with output: $out");
+				$todel = $tempfile2;
+			}
+			@unlink($todel);
+		}
+
+		$this->debug(3, "Rewriting image with security header.");
+		$tempfile4 = tempnam($this->cacheDirectory, 'timthumb_tmpimg_');
+		$context = stream_context_create ();
+		$fp = fopen($tempfile,'r',0,$context);
+		file_put_contents($tempfile4, $this->filePrependSecurityBlock . $imgType . ' ?' . '>'); //6 extra bytes, first 3 being image type 
+		file_put_contents($tempfile4, $fp, FILE_APPEND);
+		fclose($fp);
+		@unlink($tempfile);
+		$this->debug(3, "Locking and replacing cache file.");
+		$lockFile = $this->cachefile . '.lock';
+		$fh = fopen($lockFile, 'w');
+		if(! $fh){
+			return $this->error("Could not open the lockfile for writing an image.");
+		}
+		if(flock($fh, LOCK_EX)){
+			@unlink($this->cachefile); //rename generally overwrites, but doing this in case of platform specific quirks. File might not exist yet.
+			rename($tempfile4, $this->cachefile);
+			flock($fh, LOCK_UN);
+			fclose($fh);
+			@unlink($lockFile);
+		} else {
+			fclose($fh);
+			@unlink($lockFile);
+			@unlink($tempfile4);
+			return $this->error("Could not get a lock for writing.");
+		}
+		$this->debug(3, "Done image replace with security header. Cleaning up and running cleanCache()");
+		imagedestroy($canvas);
+		imagedestroy($image);
+		return true;
+	}
+	protected function calcDocRoot(){
+		$docRoot = @$_SERVER['DOCUMENT_ROOT'];
+		if (defined('LOCAL_FILE_BASE_DIRECTORY')) {
+			$docRoot = LOCAL_FILE_BASE_DIRECTORY;   
+		}
+		if(!isset($docRoot)){ 
+			$this->debug(3, "DOCUMENT_ROOT is not set. This is probably windows. Starting search 1.");
+			if(isset($_SERVER['SCRIPT_FILENAME'])){
+				$docRoot = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF'])));
+				$this->debug(3, "Generated docRoot using SCRIPT_FILENAME and PHP_SELF as: $docRoot");
+			} 
+		}
+		if(!isset($docRoot)){ 
+			$this->debug(3, "DOCUMENT_ROOT still is not set. Starting search 2.");
+			if(isset($_SERVER['PATH_TRANSLATED'])){
+				$docRoot = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF'])));
+				$this->debug(3, "Generated docRoot using PATH_TRANSLATED and PHP_SELF as: $docRoot");
+			} 
+		}
+		if($docRoot && $_SERVER['DOCUMENT_ROOT'] != '/'){ $docRoot = preg_replace('/\/$/', '', $docRoot); }
+		$this->debug(3, "Doc root is: " . $docRoot);
+		$this->docRoot = $docRoot;
+
+	}
+	protected function getLocalImagePath($src){
+		$src = ltrim($src, '/'); //strip off the leading '/'
+		if(! $this->docRoot){
+			$this->debug(3, "We have no document root set, so as a last resort, lets check if the image is in the current dir and serve that.");
+			//We don't support serving images outside the current dir if we don't have a doc root for security reasons.
+			$file = preg_replace('/^.*?([^\/\\\\]+)$/', '$1', $src); //strip off any path info and just leave the filename.
+			if(is_file($file)){
+				return $this->realpath($file);
+			}
+			return $this->error("Could not find your website document root and the file specified doesn't exist in timthumbs directory. We don't support serving files outside timthumb's directory without a document root for security reasons.");
+		} //Do not go past this point without docRoot set
+
+		//Try src under docRoot
+		if(file_exists ($this->docRoot . '/' . $src)) {
+			$this->debug(3, "Found file as " . $this->docRoot . '/' . $src);
+			$real = $this->realpath($this->docRoot . '/' . $src);
+			if(stripos($real, $this->docRoot) === 0){
+				return $real;
+			} else {
+				$this->debug(1, "Security block: The file specified occurs outside the document root.");
+				//allow search to continue
+			}
+		}
+		//Check absolute paths and then verify the real path is under doc root
+		$absolute = $this->realpath('/' . $src);
+		if($absolute && file_exists($absolute)){ //realpath does file_exists check, so can probably skip the exists check here
+			$this->debug(3, "Found absolute path: $absolute");
+			if(! $this->docRoot){ $this->sanityFail("docRoot not set when checking absolute path."); }
+			if(stripos($absolute, $this->docRoot) === 0){
+				return $absolute;
+			} else {
+				$this->debug(1, "Security block: The file specified occurs outside the document root.");
+				//and continue search
+			}
+		}
+		
+		$base = $this->docRoot;
+		
+		// account for Windows directory structure
+		if (strstr($_SERVER['SCRIPT_FILENAME'],':')) {
+			$sub_directories = explode('\\', str_replace($this->docRoot, '', $_SERVER['SCRIPT_FILENAME']));
+		} else {
+			$sub_directories = explode('/', str_replace($this->docRoot, '', $_SERVER['SCRIPT_FILENAME']));
+		}
+
+		foreach ($sub_directories as $sub){
+			$base .= $sub . '/';
+			$this->debug(3, "Trying file as: " . $base . $src);
+			if(file_exists($base . $src)){
+				$this->debug(3, "Found file as: " . $base . $src);
+				$real = $this->realpath($base . $src);
+				if(stripos($real, $this->realpath($this->docRoot)) === 0){
+					return $real;
+				} else {
+					$this->debug(1, "Security block: The file specified occurs outside the document root.");
+					//And continue search
+				}
+			}
+		}
+		return false;
+	}
+	protected function realpath($path){
+		//try to remove any relative paths
+		$remove_relatives = '/\w+\/\.\.\//';
+		while(preg_match($remove_relatives,$path)){
+		    $path = preg_replace($remove_relatives, '', $path);
+		}
+		//if any remain use PHP realpath to strip them out, otherwise return $path
+		//if using realpath, any symlinks will also be resolved
+		return preg_match('#^\.\./|/\.\./#', $path) ? realpath($path) : $path;
+	}
+	protected function toDelete($name){
+		$this->debug(3, "Scheduling file $name to delete on destruct.");
+		$this->toDeletes[] = $name;
+	}
+	protected function serveWebshot(){
+		$this->debug(3, "Starting serveWebshot");
+		$instr = "Please follow the instructions at http://code.google.com/p/timthumb/ to set your server up for taking website screenshots.";
+		if(! is_file(WEBSHOT_CUTYCAPT)){
+			return $this->error("CutyCapt is not installed. $instr");
+		}
+		if(! is_file(WEBSHOT_XVFB)){
+			return $this->Error("Xvfb is not installed. $instr");
+		}
+		$cuty = WEBSHOT_CUTYCAPT;
+		$xv = WEBSHOT_XVFB;
+		$screenX = WEBSHOT_SCREEN_X;
+		$screenY = WEBSHOT_SCREEN_Y;
+		$colDepth = WEBSHOT_COLOR_DEPTH;
+		$format = WEBSHOT_IMAGE_FORMAT;
+		$timeout = WEBSHOT_TIMEOUT * 1000;
+		$ua = WEBSHOT_USER_AGENT;
+		$jsOn = WEBSHOT_JAVASCRIPT_ON ? 'on' : 'off';
+		$javaOn = WEBSHOT_JAVA_ON ? 'on' : 'off';
+		$pluginsOn = WEBSHOT_PLUGINS_ON ? 'on' : 'off';
+		$proxy = WEBSHOT_PROXY ? ' --http-proxy=' . WEBSHOT_PROXY : '';
+		$tempfile = tempnam($this->cacheDirectory, 'timthumb_webshot');
+		$url = $this->src;
+		if(! preg_match('/^https?:\/\/[a-zA-Z0-9\.\-]+/i', $url)){
+			return $this->error("Invalid URL supplied.");
+		}
+		$url = preg_replace('/[^A-Za-z0-9\-\.\_\~:\/\?\#\[\]\@\!\$\&amp;\'\(\)\*\+\,\;\=]+/', '', $url); //RFC 3986
+		//Very important we don't allow injection of shell commands here. URL is between quotes and we are only allowing through chars allowed by a the RFC 
+		// which AFAIKT can't be used for shell injection. 
+		if(WEBSHOT_XVFB_RUNNING){
+			putenv('DISPLAY=:100.0');
+			$command = "$cuty $proxy --max-wait=$timeout --user-agent=\"$ua\" --javascript=$jsOn --java=$javaOn --plugins=$pluginsOn --js-can-open-windows=off --url=\"$url\" --out-format=$format --out=$tempfile";
+		} else {
+			$command = "$xv --server-args=\"-screen 0, {$screenX}x{$screenY}x{$colDepth}\" $cuty $proxy --max-wait=$timeout --user-agent=\"$ua\" --javascript=$jsOn --java=$javaOn --plugins=$pluginsOn --js-can-open-windows=off --url=\"$url\" --out-format=$format --out=$tempfile";
+		}
+		$this->debug(3, "Executing command: $command");
+		$out = `$command`;
+		$this->debug(3, "Received output: $out");
+		if(! is_file($tempfile)){
+			$this->set404();
+			return $this->error("The command to create a thumbnail failed.");
+		}
+		$this->cropTop = true;
+		if($this->processImageAndWriteToCache($tempfile)){
+			$this->debug(3, "Image processed succesfully. Serving from cache");
+			return $this->serveCacheFile();
+		} else {
+			return false;
+		}
+	}
+	protected function serveExternalImage(){
+		if(! preg_match('/^https?:\/\/[a-zA-Z0-9\-\.]+/i', $this->src)){
+			$this->error("Invalid URL supplied.");
+			return false;
+		}
+		$tempfile = tempnam($this->cacheDirectory, 'timthumb');
+		$this->debug(3, "Fetching external image into temporary file $tempfile");
+		$this->toDelete($tempfile);
+		#fetch file here
+		if(! $this->getURL($this->src, $tempfile)){
+			@unlink($this->cachefile);
+			touch($this->cachefile);
+			$this->debug(3, "Error fetching URL: " . $this->lastURLError);
+			$this->error("Error reading the URL you specified from remote host." . $this->lastURLError);
+			return false;
+		}
+
+		$mimeType = $this->getMimeType($tempfile);
+		if(! preg_match("/^image\/(?:jpg|jpeg|gif|png)$/i", $mimeType)){
+			$this->debug(3, "Remote file has invalid mime type: $mimeType");
+			@unlink($this->cachefile);
+			touch($this->cachefile);
+			$this->error("The remote file is not a valid image.");
+			return false;
+		}
+		if($this->processImageAndWriteToCache($tempfile)){
+			$this->debug(3, "Image processed succesfully. Serving from cache");
+			return $this->serveCacheFile();
+		} else {
+			return false;
+		}
+	}
+	public static function curlWrite($h, $d){
+		fwrite(self::$curlFH, $d);
+		self::$curlDataWritten += strlen($d);
+		if(self::$curlDataWritten > MAX_FILE_SIZE){
+			return 0;
+		} else {
+			return strlen($d);
+		}
+	}
+	protected function serveCacheFile(){
+		$this->debug(3, "Serving {$this->cachefile}");
+		if(! is_file($this->cachefile)){
+			$this->error("serveCacheFile called in timthumb but we couldn't find the cached file.");
+			return false;
+		}
+		$fp = fopen($this->cachefile, 'rb');
+		if(! $fp){ return $this->error("Could not open cachefile."); }
+		fseek($fp, strlen($this->filePrependSecurityBlock), SEEK_SET);
+		$imgType = fread($fp, 3);
+		fseek($fp, 3, SEEK_CUR);
+		if(ftell($fp) != strlen($this->filePrependSecurityBlock) + 6){
+			@unlink($this->cachefile);
+			return $this->error("The cached image file seems to be corrupt.");
+		}
+		$imageDataSize = filesize($this->cachefile) - (strlen($this->filePrependSecurityBlock) + 6);
+		$this->sendImageHeaders($imgType, $imageDataSize);
+		$bytesSent = @fpassthru($fp);
+		fclose($fp);
+		if($bytesSent > 0){
+			return true;
+		}
+		$content = file_get_contents ($this->cachefile);
+		if ($content != FALSE) {
+			$content = substr($content, strlen($this->filePrependSecurityBlock) + 6);
+			echo $content;
+			$this->debug(3, "Served using file_get_contents and echo");
+			return true;
+		} else {
+			$this->error("Cache file could not be loaded.");
+			return false;
+		}
+	}
+	protected function sendImageHeaders($mimeType, $dataSize){
+		if(! preg_match('/^image\//i', $mimeType)){
+			$mimeType = 'image/' . $mimeType;
+		}
+		if(strtolower($mimeType) == 'image/jpg'){
+			$mimeType = 'image/jpeg';
+		}
+		$gmdate_expires = gmdate ('D, d M Y H:i:s', strtotime ('now +10 days')) . ' GMT';
+		$gmdate_modified = gmdate ('D, d M Y H:i:s') . ' GMT';
+		// send content headers then display image
+		header ('Content-Type: ' . $mimeType);
+		header ('Accept-Ranges: none'); //Changed this because we don't accept range requests
+		header ('Last-Modified: ' . $gmdate_modified);
+		header ('Content-Length: ' . $dataSize);
+		if(BROWSER_CACHE_DISABLE){
+			$this->debug(3, "Browser cache is disabled so setting non-caching headers.");
+			header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
+			header("Pragma: no-cache");
+			header('Expires: ' . gmdate ('D, d M Y H:i:s', time()));
+		} else {
+			$this->debug(3, "Browser caching is enabled");
+			header('Cache-Control: max-age=' . BROWSER_CACHE_MAX_AGE . ', must-revalidate');
+			header('Expires: ' . $gmdate_expires);
+		}
+		return true;
+	}
+	protected function securityChecks(){
+	}
+	protected function param($property, $default = ''){
+		if (isset ($_GET[$property])) {
+			return $_GET[$property];
+		} else {
+			return $default;
+		}
+	}
+	protected function openImage($mimeType, $src){
+		switch ($mimeType) {
+			case 'image/jpeg':
+				$image = imagecreatefromjpeg ($src);
+				break;
+
+			case 'image/png':
+				$image = imagecreatefrompng ($src);
+				break;
+
+			case 'image/gif':
+				$image = imagecreatefromgif ($src);
+				break;
+			
+			default:
+				$this->error("Unrecognised mimeType");
+		}
+
+		return $image;
+	}
+	protected function getIP(){
+		$rem = @$_SERVER["REMOTE_ADDR"];
+		$ff = @$_SERVER["HTTP_X_FORWARDED_FOR"];
+		$ci = @$_SERVER["HTTP_CLIENT_IP"];
+		if(preg_match('/^(?:192\.168|172\.16|10\.|127\.)/', $rem)){ 
+			if($ff){ return $ff; }
+			if($ci){ return $ci; }
+			return $rem;
+		} else {
+			if($rem){ return $rem; }
+			if($ff){ return $ff; }
+			if($ci){ return $ci; }
+			return "UNKNOWN";
+		}
+	}
+	protected function debug($level, $msg){
+		if(DEBUG_ON && $level <= DEBUG_LEVEL){
+			$execTime = sprintf('%.6f', microtime(true) - $this->startTime);
+			$tick = sprintf('%.6f', 0);
+			if($this->lastBenchTime > 0){
+				$tick = sprintf('%.6f', microtime(true) - $this->lastBenchTime);
+			}
+			$this->lastBenchTime = microtime(true);
+			error_log("TimThumb Debug line " . __LINE__ . " [$execTime : $tick]: $msg");
+		}
+	}
+	protected function sanityFail($msg){
+		return $this->error("There is a problem in the timthumb code. Message: Please report this error at <a href='http://code.google.com/p/timthumb/issues/list'>timthumb's bug tracking page</a>: $msg");
+	}
+	protected function getMimeType($file){
+		$info = getimagesize($file);
+		if(is_array($info) && $info['mime']){
+			return $info['mime'];
+		}
+		return '';
+	}
+	protected function setMemoryLimit(){
+		$inimem = ini_get('memory_limit');
+		$inibytes = timthumb::returnBytes($inimem);
+		$ourbytes = timthumb::returnBytes(MEMORY_LIMIT);
+		if($inibytes < $ourbytes){
+			ini_set ('memory_limit', MEMORY_LIMIT);
+			$this->debug(3, "Increased memory from $inimem to " . MEMORY_LIMIT);
+		} else {
+			$this->debug(3, "Not adjusting memory size because the current setting is " . $inimem . " and our size of " . MEMORY_LIMIT . " is smaller.");
+		}
+	}
+	protected static function returnBytes($size_str){
+		switch (substr ($size_str, -1))
+		{
+			case 'M': case 'm': return (int)$size_str * 1048576;
+			case 'K': case 'k': return (int)$size_str * 1024;
+			case 'G': case 'g': return (int)$size_str * 1073741824;
+			default: return $size_str;
+		}
+	}
+	protected function getURL($url, $tempfile){
+		$this->lastURLError = false;
+		$url = preg_replace('/ /', '%20', $url);
+		if(function_exists('curl_init')){
+			$this->debug(3, "Curl is installed so using it to fetch URL.");
+			self::$curlFH = fopen($tempfile, 'w');
+			if(! self::$curlFH){
+				$this->error("Could not open $tempfile for writing.");
+				return false;
+			}
+			self::$curlDataWritten = 0;
+			$this->debug(3, "Fetching url with curl: $url");
+			$curl = curl_init($url);
+			curl_setopt ($curl, CURLOPT_TIMEOUT, CURL_TIMEOUT);
+			curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30");
+			curl_setopt ($curl, CURLOPT_RETURNTRANSFER, TRUE);
+			curl_setopt ($curl, CURLOPT_HEADER, 0);
+			curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
+			curl_setopt ($curl, CURLOPT_WRITEFUNCTION, 'timthumb::curlWrite');
+			@curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, true);
+			@curl_setopt ($curl, CURLOPT_MAXREDIRS, 10);
+			
+			$curlResult = curl_exec($curl);
+			fclose(self::$curlFH);
+			$httpStatus = curl_getinfo($curl, CURLINFO_HTTP_CODE);
+			if($httpStatus == 404){
+				$this->set404();
+			}
+			if($curlResult){
+				curl_close($curl);
+				return true;
+			} else {
+				$this->lastURLError = curl_error($curl);
+				curl_close($curl);
+				return false;
+			}
+		} else {
+			$img = @file_get_contents ($url);
+			if($img === false){
+				$err = error_get_last();
+				if(is_array($err) && $err['message']){
+					$this->lastURLError = $err['message'];
+				} else {
+					$this->lastURLError = $err;
+				}
+				if(preg_match('/404/', $this->lastURLError)){
+					$this->set404();
+				}
+
+				return false;
+			}
+			if(! file_put_contents($tempfile, $img)){
+				$this->error("Could not write to $tempfile.");
+				return false;
+			}
+			return true;
+		}
+
+	}
+	protected function serveImg($file){
+		$s = getimagesize($file);
+		if(! ($s && $s['mime'])){
+			return false;
+		}
+		header ('Content-Type: ' . $s['mime']);
+		header ('Content-Length: ' . filesize($file) );
+		header ('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
+		header ("Pragma: no-cache");
+		$bytes = @readfile($file);
+		if($bytes > 0){
+			return true;
+		}
+		$content = @file_get_contents ($file);
+		if ($content != FALSE){
+			echo $content;
+			return true;
+		}
+		return false;
+
+	}
+	protected function set404(){
+		$this->is404 = true;
+	}
+	protected function is404(){
+		return $this->is404;
+	}
+}
+?>
\ No newline at end of file
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.mo b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.mo
index be73598f219e192d3b3f2b2e97628d89cadf2274..c2e63a7d96183eedafe8c4555230411cf35db006 100644
Binary files a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.mo and b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.mo differ
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.po b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.po
index 3c3a4ca3e6354ded8e4ce93131742e57400d9f6c..b7bc18f6d33b995528ade5d07e628c11c51fe77a 100644
--- a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.po
+++ b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-es_ES.po
@@ -2,706 +2,803 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Wordpress Popular Posts\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-02 11:05-0430\n"
+"POT-Creation-Date: 2012-08-31 11:32-0430\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Hector Cabrera <me@cabrerahector.com>\n"
 "Language-Team: Héctor Cabrera <admin@rauru.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: English\n"
-"X-Poedit-Country: VENEZUELA\n"
+"Language: en_VE\n"
 "X-Poedit-SourceCharset: iso-8859-1\n"
 "X-Poedit-KeywordsList: __;_e\n"
 "X-Poedit-Basepath: .\n"
 "X-Poedit-SearchPath-0: .\n"
 
-#: maintenance.php:58
+#: admin.php:33
+#: admin.php:44
+#: admin.php:50
+#: admin.php:57
+msgid "Settings saved."
+msgstr "Configuraci&oacute;n guardada."
+
+#: admin.php:38
+msgid "Please provide the name of your custom field."
+msgstr "Por favor indica el nombre de tu custom field."
+
+#: admin.php:247
 msgid "This operation will delete all entries from Wordpress Popular Posts' cache table and cannot be undone."
-msgstr "Esta operaci&oacute;n eliminar&aacute; todas las entradas del cache de Wordpress Popular Posts y no puede revertirse."
+msgstr "Esta operaci&oacute;n borrar&aacute; todas las entradas en el cach&eacute; de Wordpress Popular Posts y no puede ser reversado."
 
-#: maintenance.php:58
-#: maintenance.php:66
+#: admin.php:247
+#: admin.php:255
 msgid "Do you want to continue?"
-msgstr "&iquest;Quieres continuar?"
+msgstr "&iquest;Deseas continuar?"
 
-#: maintenance.php:66
+#: admin.php:255
 msgid "This operation will delete all stored info from Wordpress Popular Posts' data tables and cannot be undone."
-msgstr "Esta operaci&oacute;n eliminar&aacute; toda la informaci&oacute;n almacenada de las tablas de data de Wordpress Popular Posts y no puede revertirse."
+msgstr "Esta operaci&oacute;n borrar&aacute; toda la informaci&oacute;n guardada en las tablas de Wordpress Popular Posts y no puede ser reversado."
+
+#: admin.php:269
+msgid "Stats"
+msgstr "Estad&iacute;sticas"
+
+#: admin.php:270
+msgid "FAQ"
+msgstr "FAQ"
+
+#: admin.php:271
+msgid "Tools"
+msgstr "Herramientas"
+
+#: admin.php:275
+msgid "Click on each tab to see what are the most popular entries on your blog today, this week, last 30 days or all time since Wordpress Popular Posts was installed."
+msgstr "Haz clic en cada pesta&ntilde;a para ver las entradas m&aacute;s populares de tu blog hoy, esta semana, los &uacute;ltimos 30 d&iacute;s o de todos los tiempos."
+
+#: admin.php:281
+msgid "Order by comments"
+msgstr "Ordenar por comentarios"
+
+#: admin.php:282
+msgid "Order by views"
+msgstr "Ordenar por vistas"
 
-#: maintenance.php:78
-msgid "Whoa! What just happened in here?!"
-msgstr "&iexcl;Whoa! &iquest;Qu&eacute; pas&oacute; aqu&iacute;?"
+#: admin.php:283
+msgid "Order by avg. daily views"
+msgstr "Ordenar por average de vistas diarias"
 
-#: maintenance.php:79
-msgid "Previous users of Wordpress Popular Posts will remember that earlier versions of my plugin used to display a Settings page over here. However, from version 2.0 and on things will be slightly different."
-msgstr "Los usuarios previos de Wordpress Popular Posts recordar&aacute;n que versiones anteriores de mi plugin mostraba una p&aacute;gina de Configuraci&oacute;n aqu&iacute;. Sin embargo, desde la versi&oacute;n 2.0 en adelante las cosas ser&aacute;n algo diferentes."
+#: admin.php:285
+msgid "Limit"
+msgstr "L&iacute;mite"
+
+#: admin.php:287
+#: admin.php:667
+#: admin.php:683
+#: admin.php:700
+msgid "Apply"
+msgstr "Aplicar"
+
+#: admin.php:293
+#: wordpress-popular-posts.php:307
+msgid "Last 24 hours"
+msgstr "&Uacute;ltimas 24 horas"
+
+#: admin.php:294
+#: wordpress-popular-posts.php:308
+msgid "Last 7 days"
+msgstr "&Uacute;ltimos 7 d&iacute;as"
+
+#: admin.php:295
+#: wordpress-popular-posts.php:309
+msgid "Last 30 days"
+msgstr "&Uacute;ltimos 30 d&iacute;as"
+
+#: admin.php:296
+#: wordpress-popular-posts.php:310
+msgid "All-time"
+msgstr "Todos los tiempos"
 
-#: maintenance.php:80
-msgid "Wordpress Popular Posts has gone multi-widget so now you'll be able to install multiple instances of my plugin on your sidebars, each with its own unique settings! Because of that, having a General Settings page to handle all instances is simply not a good idea. Fear not, my friend, since you still can set each instance's configuration via"
-msgstr "Wordpress Popular Posts ahora es multi-widget, podr&aacute;s instalar m&uacute;ltiples instancias de mi plugin en tus barras laterales, &iexcl;cada una con su configuraci&oacute;n propia! Por ello, tener una p&aacute;gina de Configuraci&oacute;n General para manejar todas las instancias no es una buena idea. No temas, amigo m&iacute;o, ya que puedes manejar la configuraci&oacute;n de cada instancia a trav&eacute;s de la secci&oacute;n"
+#: admin.php:317
+msgid "Frequently Asked Questions"
+msgstr "Preguntas Frecuentes (FAQ)"
 
-#: maintenance.php:80
-msgid "Widgets page"
-msgstr "Widgets"
+#: admin.php:321
+msgid "What does \"Title\" do?"
+msgstr "&iquest;Para qu&eacute; es \"T&iacute;tulo\"?"
 
-#: maintenance.php:84
-msgid "Help"
-msgstr "Ayuda"
+#: admin.php:323
+msgid "It allows you to show a heading for your most popular posts listing. If left empty, no heading will be displayed at all."
+msgstr "Te permite mostrar un encabezado para tu lista de entradas populares. Si se deja vac&iacute;o, no se mostrar&aacute; el encabezado."
 
-#: maintenance.php:85
-msgid "What does \"Include pages\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Incluir p&aacute;ginas\"?"
+#: admin.php:326
+msgid "What is Time Range for?"
+msgstr "&iquest;Para qu&eacute; es \"Rango de Tiempo\"?"
 
-#: maintenance.php:87
-msgid "If checked, Wordpress Popular Posts will also list the most viewed pages on your blog. Enabled by default."
-msgstr "Si de tilda, Wordpress Popular Posts tambi&eacute;n listar&aacute; las p&aacute;ginas m&aacute;s populares en tu blog. Habilitado por defecto."
+#: admin.php:328
+msgid "It will tell Wordpress Popular Posts to retrieve all posts with most views / comments within the selected time range."
+msgstr "Le indica a Wordpress Popular Posts que muestre las entradas m&aacute;s vistas / comentadas en el rango de tiempo seleccionado."
 
-#: maintenance.php:89
+#: admin.php:331
+msgid "What is \"Sort post by\" for?"
+msgstr "&iquest;Para qu&eacute; es \"Ordenar entradas por\"?"
+
+#: admin.php:333
+msgid "It allows you to decide whether to order your popular posts listing by total views, comments, or average views per day."
+msgstr "Te permite decidir si ordenar tus entradas populares por la cantidad total de vistas, comentarios, o por el porcentaje diario de vistas."
+
+#: admin.php:336
 msgid "What does \"Display post rating\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Mostrar rating del post\"?"
+msgstr "&iquest;Qu&eacute; hace \"Mostrar rating de la entrada\"?"
 
-#: maintenance.php:91
-msgid "If checked, Wordpress Popular Posts will show how your readers are rating your most popular posts. This feature requires having WP-PostRatings plugin installed and enabled on your blog for it to work. Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; como tus lectores est&aacute;n calificando tus posts m&aacute;s populares. Esta funcionalidad requiere que el plugin WP-PostRatings est&eacute; instalado y activado en tu blog para que funcione. Deshabilitado por defecto."
+#: admin.php:338
+msgid "If checked, Wordpress Popular Posts will show how your readers are rating your most popular posts. This feature requires having WP-PostRatings plugin installed and enabled on your blog for it to work."
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; c&oacute;mo tus lectores est&aacute;n calificando tus entradas populares. Esta caracter&iacute;stica requiere que el plugin WP-PostRatings est&eacute; instalado y habilitado en tu blog para que funcione."
 
-#: maintenance.php:93
-msgid "What does \"Shorten title output\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Acortar t&iacute;tulos\"?"
+#: admin.php:341
+#, fuzzy
+msgid "What does \"Shorten title\" do?"
+msgstr "&iquest;Qu&eacute; hace \"Acortar t&iacute;tulo\"?"
 
-#: maintenance.php:95
-msgid "If checked, all posts titles will be shortened to \"n\" characters. A new \"Shorten title to\" option will appear so you can set it to whatever you like. Disabled by default."
-msgstr "Si se tilda, todos los t&iacute;tulos de posts se acortar&aacute; \"n\" caracteres. Una nueva opci&oacute;n, \"Acortar t&iacute;tulo a\" aparecer&aacute; para que puedas configurarlo como gustes. Desactivado por defecto."
+#: admin.php:343
+msgid "If checked, all posts titles will be shortened to \"n\" characters. A new \"Shorten title to\" option will appear so you can set it to whatever you like."
+msgstr "Si se tilda, todos los t&iacute;tulos de las entradas se acortar&aacute;n \"n\" caracteres. Una nueva opci&oacute;n \"Acortar t&iacute;tulo en\" se mostrar&aacute; para que puedas configurarlo como quieras."
 
-#: maintenance.php:97
+#: admin.php:346
 msgid "What does \"Display post excerpt\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Mostrar extracto del post\"?"
+msgstr "&iquest;Qu&eacute; hace \"Mostrar resumen de la entrada\"?"
 
-#: maintenance.php:99
-msgid "If checked, Wordpress Popular Posts will also include a small extract of your posts in the list. Similarly to the previous option, you will be able to decide how long the post excerpt should be. Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts tambi&eacute;n incluir&aacute; un peque&ntilde;o extracto de tus posts en la lista. Similarmente a la opci&oacute;n anterior, podr&aacute;s decidir qu&eacute; tan largo debe ser el extracto. Desactivado por defecto."
+#: admin.php:348
+msgid "If checked, Wordpress Popular Posts will also include a small extract of your posts in the list. Similarly to the previous option, you will be able to decide how long the post excerpt should be."
+msgstr "Si se tilda, Wordpress Popular Posts incluir&aacute; un peque&ntilde;o extracto de tus entradas en la lista. Similar a la opci&oacute;n anterior, podr&aacute;s decidir qu&eacute; tan largo debe ser el extracto."
 
-#: maintenance.php:101
+#: admin.php:351
 msgid "What does \"Keep text format and links\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Mantener formato de texto y links\"?"
+msgstr "&iquest;Qu&eacute; hace \"Mantener el formato de texto y links\"?"
 
-#: maintenance.php:103
+#: admin.php:353
 msgid "If checked, and if the Post Excerpt feature is enabled, Wordpress Popular Posts will keep the styling tags (eg. bold, italic, etc) that were found in the excerpt. Hyperlinks will remain intact, too."
-msgstr "Si se tilda, y si Mostrar Extracto del Post est&aacute; habilitado, Wordpress Popular Posts mantendr&aacute; las etiquetas de estilo (ejem. bold, italic, etc) que se encontraron en el extracto. Los hiperv&iacute;nculos se mantendr&aacute;n intactos tambi&eacute;n."
+msgstr "Si se tilda, y si la opci&oacute;n Mostrar Resumen est&aacute; habilitada, Wordpress Popular Posts mantendr&aacute; las etiquetas de estilos que se encontraron en el extracto. Los hiperv&iacute;nculos tambi&eacute;n se mantendr&aacute;n."
+
+#: admin.php:356
+msgid "What is \"Post type\" for?"
+msgstr "&iquest;Para qu&eacute; es el \"Post type\"?"
+
+#: admin.php:358
+msgid "This filter allows you to decide which post types to show on the listing. By default, it will retrieve only posts and pages (which should be fine for most cases)."
+msgstr "Este filtro te permite decidir que tipo de entradas deseas mostrar en el listado. Por defecto, trater&aacute; s&oacute;lo entradas y p&aacute;ginas (que es lo que se quiere, en la mayor&iacute;a de los casos)."
+
+#: admin.php:361
+msgid "What is \"Category(ies) ID(s)\" for?"
+msgstr "&iquest;Para qu&eacute; es el \"ID(s) de Categor&iacute;a(s)\"?"
+
+#: admin.php:363
+msgid "This filter allows you to select which categories should be included or excluded from the listing. A negative sign in front of the category ID number will exclude posts belonging to it from the list, for example. You can specify more than one ID with a comma separated list."
+msgstr "Este filtro te permite seleccionar qu&eacute; categor&iacute;as deber&iacute;an ser inclu&iacute;das o exclu&iacute;das del listado. Un signo negativo enfrente del ID de la categor&iacute;a la excluir&aacute; de la lista, por ejemplo. Puedes especificar m&aacute;s de un ID separ&aacute;ndolos con comas."
 
-#: maintenance.php:105
-msgid "What does \"Exclude Categories\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Excluir Categor&iacute;as\"?"
+#: admin.php:366
+msgid "What is \"Author(s) ID(s)\" for?"
+msgstr "&iquest;Para qu&eacute; es el \"ID de Autor(es)\"?"
 
-#: maintenance.php:107
-msgid "If checked, Wordpress Popular Posts will exclude from the listing all those entries that belong to specific categories. When entering more than one Category ID, you need to use commas to separate them (eg. 1,5,12 - no spaces!). Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts excluir&aacute; del listado todas aquellas entradas pertenecientes a categor&iacute;as espec&iacute;ficas. Cuando se ingresa m&aacute;s de un ID de Categor&iacute;a, necesitas utilizar comas para separarlas (ejem. 1,5,12 - &excl;sin espacios!). Deshabilitado por defecto."
+#: admin.php:368
+msgid "Just like the Category filter, this one lets you filter posts by author ID. You can specify more than one ID with a comma separated list."
+msgstr "Justo como el filtro de Categor&iacute;a, &eacute;ste te permite filtrar entradas por ID del autor. Puedes especificar m&aacute;s de un ID separ&aacute;ndolos con comas."
 
-#: maintenance.php:109
+#: admin.php:371
 msgid "What does \"Display post thumbnail\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Mostrar miniatura\"?"
+msgstr "&iquest;Qu&eacute; hace \"Mostrar miniatura de  la entrada\"?"
 
-#: maintenance.php:111
-msgid "If checked, Wordpress Popular Posts will attempt to use the thumbnail you have selected for each post on the Post Edit Screen under Featured Image (this also requires including add_theme_support(\"post-thumbnails\") to your theme's functions.php file). Disabled by default."
-msgstr "Wordpress Popular Posts utilizar&aacute; la miniatura que seleccionaste como Imagen Destacada para cada entrada (esto tambi&eacute;n requiere incluir add_theme_support(\"post-thumbnails\") al archivo functions.php de tu tema actual)."
+#: admin.php:373
+msgid "If checked, Wordpress Popular Posts will attempt to retrieve the thumbnail of each post. You can set up the source of the thumbnail via Settings - Wordpress Popular Posts - Tools."
+msgstr "Si se tilda, Wordpress Popular Posts intentar&aacute; obtener la imagen miniatura de cada entrada. Puedes configurar la fuente de la miniatura via Configuraci&oacute;n - Wordpress Popular Posts - Herramientas."
 
-#: maintenance.php:113
+#: admin.php:376
 msgid "What does \"Display comment count\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Mostrar comentarios\"?"
+msgstr "&iquest;Qu&eacute; hace \"Mostrar cantidad de comentarios\"?"
 
-#: maintenance.php:115
-msgid "If checked, Wordpress Popular Posts will display how many comments each popular post has got until now. Enabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntos comentarios ha obtenido cada post popular hasta ahora. Habilitado por defecto."
+#: admin.php:378
+msgid "If checked, Wordpress Popular Posts will display how many comments each popular post has got in the selected Time Range."
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntos comentarios ha obtenido cada entrada popular dentro del Rango de Tiempo seleccionado."
 
-#: maintenance.php:117
+#: admin.php:381
 msgid "What does \"Display views\" do?"
 msgstr "&iquest;Qu&eacute; hace \"Mostrar vistas\"?"
 
-#: maintenance.php:119
-msgid "If checked, Wordpress Popular Posts will show how many pageviews a single post has gotten so far since this plugin was installed. Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntas vistas ha obtenido un post desde la instalaci&oacute;n de este plugin. Deshabilitado por defecto."
+#: admin.php:383
+msgid "If checked, Wordpress Popular Posts will show how many pageviews a single post has gotten in the selected Time Range."
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntas vistas ha obtenido cada entrada en el Rango de Tiempo seleccionado."
 
-#: maintenance.php:121
+#: admin.php:386
 msgid "What does \"Display author\" do?"
 msgstr "&iquest;Qu&eacute; hace \"Mostrar autor\"?"
 
-#: maintenance.php:123
-msgid "If checked, Wordpress Popular Posts will display the name of the author of each entry listed. Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; el nombre del autor de cada entrada listada. Deshabilitado por defecto."
+#: admin.php:388
+msgid "If checked, Wordpress Popular Posts will display the name of the author of each entry listed."
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; el nombre del autor de cada entrada listada."
 
-#: maintenance.php:125
+#: admin.php:391
 msgid "What does \"Display date\" do?"
 msgstr "&iquest;Qu&eacute; hace \"Mostrar fecha\"?"
 
-#: maintenance.php:127
-msgid "If checked, Wordpress Popular Posts will display the date when each popular posts was published. Disabled by default."
-msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; la fecha en que cada post popular fue publicado. Deshabilitado por defecto."
+#: admin.php:393
+msgid "If checked, Wordpress Popular Posts will display the date when each popular posts was published."
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; la fecha en la que fue publicada cada entrada popular."
 
-#: maintenance.php:129
+#: admin.php:396
 msgid "What does \"Use custom HTML Markup\" do?"
 msgstr "&iquest;Qu&eacute; hace \"Utilizar Markup HTML personalizado\"?"
 
-#: maintenance.php:131
-msgid "If checked, you will be able to customize the HTML markup of your popular posts listing. For example, you can decide whether to wrap your posts in an unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is for you! Disabled by default."
-msgstr "Si se tilda, podr&aacute;s personalizar el markup HTML (la estructura HTML) del listado de tus posts. Por ejemplo, puedes decidir si tus posts estar&aacute;n dentro de una lista desordenada (ul), una lista ordenada (ol), un div, etc. Si sabes xHTML/CSS, &iexcl;esto es para t&iacute;!"
+#: admin.php:398
+msgid "If checked, you will be able to customize the HTML markup of your popular posts listing. For example, you can decide whether to wrap your posts in an unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is for you!"
+msgstr "Si se tilda, podr&aacute;s personalizad el markup HTML de tu listado de entradas populares. Por ejemplo, podr&aacute;s decidir si colocar tu listado en una lista desordenada, una ordenada, dentro de un div, etc. Si sabes xHTML/CSS, &iexcl;esto es para ti!"
 
-#: maintenance.php:133
+#: admin.php:401
 msgid "What does \"Use content formatting tags\" do?"
-msgstr "&iquest;Qu&eacute; hace \"Utilizar etiquetas de contenido\"?"
+msgstr "&iquest;Qu&eacute; hace \"Utilizar etiquetas de formato de contenido\"?"
 
-#: maintenance.php:135
-msgid "If checked, you can decide the order of the items displayed on each entry. For example, setting it to \"{title}: {summary}\" (without the quotes) would display \"Post title: excerpt of the post here\". Available tags: {image}, {title}, {summary}, {stats} and {rating}. Disabled by default."
-msgstr "Si se tilda, puedes decidir el orden de los items mostrados en cada entrada. Por ejemplo, configurarlo como \"{title}: {summary}\" (sin las comillas) mostrar&iacute;a \"T&iacute;tulo del post: extracto del post aqu&iacute;\". Etiquetas disponibles: {image}, {title}, {summary}, {stats} y {rating}. Deshabilitado por defecto."
+#: admin.php:403
+msgid "If checked, you can decide the order of the items displayed on each entry. For example, setting it to \"{title}: {summary}\" (without the quotes) would display \"Post title: excerpt of the post here\". Available tags: {image}, {title}, {summary}, {stats} and {rating}."
+msgstr "Si se tilda, puedes decidir el orden de los elementos mostrados en cada entrada. Por ejemplo, configurarlo como \"{title}: {summary}\" (sin las comillas) mostrar&iacute;a \"T&iacute;tulo de la entrada: extracto de la entrada aqu&iacute;\". Etiquetas disponibles: {image}, {title}, {summary}, {stats} y {rating}."
 
-#: maintenance.php:137
+#: admin.php:406
 msgid "What are \"Template Tags\"?"
 msgstr "&iquest;Qu&eacute; son los \"Template Tags\"?"
 
-#: maintenance.php:139
-msgid "Template Tags are simply php functions that allow you to perform certain actions. For example, Wordpress Popular Posts currently supports two different template tags: get_mostpopular() and wpp_get_views()."
-msgstr "Los Template Tags son simplemente funciones php que te permiten realizar ciertas acciones. Por ejemplo, Wordpress Popular Posts actualmante soporte dos template tags diferentes: get_mostpopular y wpp_get_views()."
+#: admin.php:408
+msgid "Template Tags are simply php functions that allow you to perform certain actions. For example, Wordpress Popular Posts currently supports two different template tags: wpp_get_mostpopular() and wpp_get_views()."
+msgstr "Los Template Tags son simplemente funciones php que nos permiten realizar ciertas acciones. Por ejemplo, Wordpress Popular Posts actualmente soporta dos template tags diferentes: wpp_get_mostpopular() y wpp_get_views()."
 
-#: maintenance.php:141
+#: admin.php:411
 msgid "What are the template tags that Wordpress Popular Posts supports?"
-msgstr "&iquest;Cu&aacute;les template tags soporta Wordpress Popular Posts?"
+msgstr "&iquest;Cu&aacute;les son los Template Tags soportados por Wordpress Popular Posts?"
 
-#: maintenance.php:143
-msgid "The following are the template tags supported by Wordpress Popular Posts:"
-msgstr "Los siguientes son los template tags soportados por Wordpress Popular Posts:"
+#: admin.php:413
+msgid "The following are the template tags supported by Wordpress Popular Posts"
+msgstr "Los siguientes son los template tags soportados por Wordpress Popular Posts"
 
-#: maintenance.php:146
+#: admin.php:417
 msgid "Template tag"
 msgstr "Template tag"
 
-#: maintenance.php:147
-#: maintenance.php:175
+#: admin.php:418
+#: admin.php:451
 msgid "What it does "
 msgstr "Qu&eacute; hace"
 
-#: maintenance.php:148
+#: admin.php:419
 msgid "Parameters"
 msgstr "Par&aacute;metros"
 
-#: maintenance.php:149
-#: maintenance.php:178
+#: admin.php:420
+#: admin.php:454
 msgid "Example"
 msgstr "Ejemplo"
 
-#: maintenance.php:153
-msgid "Similar to the widget functionality, this tag retrieves the most popular posts on your blog. While it can be customized via parameters, these are not needed for it to work."
-msgstr "Al igual que la funcionalidad tipo widget, este tag obtiene los posts m&aacute;s populares de tu blog. Puede ser personalizado via par&aacute;metros, pero no son necesarios para que funcione."
+#: admin.php:426
+msgid "Similar to the widget functionality, this tag retrieves the most popular posts on your blog. This function also accepts parameters so you can customize your popular listing, but these are not required."
+msgstr "Parecido a la funcionalidad del widget, esta etiqueta obtiene las entradas m&aacute;s populares de tu blog. Esta funci&oacute;n tambi&eacute;n acepta par&aacute;metros para que puedas personalizar el listado, pero no es requerido."
 
-#: maintenance.php:154
-msgid "Please refer to \"What attributes does Wordpress Popular Posts shortcode [wpp] have?\""
-msgstr "Favor leer \"&iquest;Cu&aacute;les template tags soporta Wordpress Popular Posts?\""
+#: admin.php:427
+msgid "Please refer to \"List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode\"."
+msgstr "Por favor revisa \"Listado de par&aacute;metros aceptados por wpp_get_mostpopular() y el shortcode [wpp]\"."
 
-#: maintenance.php:159
-msgid "Displays the number of views of a single post. Post ID required, or it will return false."
-msgstr "Muestra el n&uacute;mero de vistas de un post. Se requiere el ID del post, o la funci&oacute;n retornar&aacute; falso."
+#: admin.php:432
+msgid "Displays the number of views of a single post. Post ID is required or it will return false."
+msgstr "Muestra la cantidad de vistas de una entrada. El ID de la entrada es requerido, o la funci&oacute;n devolver&aacute; false."
 
-#: maintenance.php:160
+#: admin.php:433
 msgid "Post ID"
-msgstr "ID del Post"
+msgstr "ID de la entrada"
 
-#: maintenance.php:165
+#: admin.php:440
 msgid "What are \"shortcodes\"?"
 msgstr "&iquest;Qu&eacute; son los \"shortcodes\"?"
 
-#: maintenance.php:167
-msgid "Shortcodes are hooks that allow us to call a php function by simply typing something like [shortcode]. With Wordpress Popular Posts, the shortcode [wpp] will let you insert a list of the most popular posts in posts content and pages too! For more information about shortcodes, please visit"
-msgstr "Los shortcodes son hooks que nos permiten llamar a una funci&oacute;n php simplemente escribiendo algo como [shortcode]. Con Wordpress Popular Posts, el shortcode [wpp] te permitir&aacute; insertar una lista de los posts m&aacute;s populares en p&aacute;ginas y en los contenidos de los posts. Para m&aacute;s informaci&oacute; visita"
+#: admin.php:442
+msgid "Shortcodes are similar to BB Codes, these allow us to call a php function by simply typing something like [shortcode]. With Wordpress Popular Posts, the shortcode [wpp] will let you insert a list of the most popular posts in posts content and pages too! For more information about shortcodes, please visit"
+msgstr "Los Shortcodes son similares a los BB Codes, &eacute;stos nos permiten llamar a una funci&oacute;n php simplemente escribiendo algo como [shortcode]. Con Wordpress Popular Posts, el shortcode [wpp] te permitir&aacute; insertar una lista de las entradas m&aacute;s populares en el contenido de tus entradas y en p&aacute;ginas tambi&eacute;n. Para mayor informaci&oacute;n sobre los shortcodes, por favor visita"
 
-#: maintenance.php:169
-msgid "What attributes does Wordpress Popular Posts shortcode [wpp] have?"
-msgstr "&iquest;Qu&eacute; atributos tiene el shortcode [wpp] de Wordpress Popular Posts?"
+#: admin.php:444
+msgid "List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode"
+msgstr "Lista de par&aacute;metros aceptados por wpp_get_mostpopular() y el shortcode [wpp]"
 
-#: maintenance.php:171
-msgid "There are a number of attributes Wordpress Popular Posts currently supports:"
-msgstr "Hay un n&uacute;mero de atributos que Wordpress Popular Posts actualmente soporta:"
+#: admin.php:446
+msgid "These parameters can be used by both the template tag wpp_get_most_popular() and the shortcode [wpp]."
+msgstr "Estos par&aacute;metros pueden ser utilizados tanto por el template tag wpp_get_mostpopular() como por el shortcode [wpp]."
 
-#: maintenance.php:174
-msgid "Attributes"
-msgstr "Atributos"
+#: admin.php:450
+msgid "Parameter"
+msgstr "Par&aacute;metro"
 
-#: maintenance.php:176
+#: admin.php:452
 msgid "Possible values"
-msgstr "Valores Posibles"
+msgstr "Valores posibles"
 
-#: maintenance.php:177
+#: admin.php:453
 msgid "Defaults to"
 msgstr "Por defecto"
 
-#: maintenance.php:182
+#: admin.php:460
 msgid "Sets a heading for the list"
-msgstr "Setea el encabezado de la lista"
-
-#: maintenance.php:183
-#: maintenance.php:190
-#: maintenance.php:197
-#: maintenance.php:253
-#: maintenance.php:316
-#: maintenance.php:323
-#: maintenance.php:330
-#: maintenance.php:337
-#: maintenance.php:344
+msgstr "Configura el encabezado de la lista"
+
+#: admin.php:461
+#: admin.php:468
+#: admin.php:475
+#: admin.php:503
+#: admin.php:510
+#: admin.php:517
+#: admin.php:594
+#: admin.php:601
+#: admin.php:608
+#: admin.php:615
+#: admin.php:622
 msgid "Text string"
-msgstr "Cadena de texto"
+msgstr "Texto"
 
-#: maintenance.php:184
-#: wordpress-popular-posts.php:198
+#: admin.php:462
+#: wordpress-popular-posts.php:250
 msgid "Popular Posts"
 msgstr "Entradas Populares"
 
-#: maintenance.php:189
+#: admin.php:467
 msgid "Set the opening tag for the heading of the list"
-msgstr "Setea la etiqueta html de apertura del encabezado de la lista"
+msgstr "Configura la etiqueta de apertura para el encabezado de la lista"
 
-#: maintenance.php:196
+#: admin.php:474
 msgid "Set the closing tag for the heading of the list"
-msgstr "Setea la etiqueta de cierre del encabezado de la lista"
+msgstr "Configura la etiqueta de cierre para el encabezado de la lista"
 
-#: maintenance.php:203
+#: admin.php:481
 msgid "Sets the maximum number of popular posts to be shown on the listing"
-msgstr "Setea el n&uacute;mero m&aacute;ximo de posts populares a mostrarse en la lista"
+msgstr "Configura el m&aacute;ximo de entradas populares a ser mostradas en la lista"
 
-#: maintenance.php:204
-#: maintenance.php:232
-#: maintenance.php:239
-#: maintenance.php:260
-#: maintenance.php:267
+#: admin.php:482
+#: admin.php:524
+#: admin.php:531
+#: admin.php:545
+#: admin.php:552
 msgid "Positive integer"
 msgstr "Entero positivo"
 
-#: maintenance.php:210
+#: admin.php:488
 msgid "Tells Wordpress Popular Posts to retrieve the most popular entries within the time range specified by you"
-msgstr "Le dice a Wordpress Popular Posts que debe traer los posts m&aacute;s populares que est&eacute;n dentro del tiempo especificado por t&iacute;."
+msgstr "Le indica a Wordpress Popular Posts que debe listar aquellas entradas que hayan sido populares dentro del rango de tiempo especificado por ti"
 
-#: maintenance.php:217
+#: admin.php:495
 msgid "Sets the sorting option of the popular posts"
-msgstr "Setea el valor por el cual deben ordenarse los posts populares"
+msgstr "Configura el ordenado de las entradas populares"
 
-#: maintenance.php:218
+#: admin.php:496
 msgid "(for average views per day)"
-msgstr "(vistas promedio por d&iacute;a)"
+msgstr "(para el porcentaje de vistas por d&iacute;a)"
+
+#: admin.php:502
+msgid "Defines the type of posts to show on the listing"
+msgstr "Define el tipo de entrada a mostrar en el listado"
+
+#: admin.php:509
+msgid "If set, Wordpress Popular Posts will retrieve all entries that belong to the specified category(ies) ID(s). If a minus sign is used, the category(ies) will be excluded instead."
+msgstr "Si se configura, Wordpress Popular Posts mostrar&aacute; todas las entradas que pertenecen a la(s) categor&iacute;a(s) especificada(s). Si se usa un signo negativo, la(s) categor&iacute;a(s) ser&aacute;(n) exclu&iacute;da(s)."
+
+#: admin.php:511
+#: admin.php:518
+msgid "None"
+msgstr "Ninguno"
 
-#: maintenance.php:224
-msgid "Tells Wordpress Popular Posts whether to consider or not pages while building the popular list"
-msgstr "Le dice a Wordpress Popular Posts si debe considerar o no las p&aacute;ginas mientras construye la lista popular"
+#: admin.php:516
+msgid "If set, Wordpress Popular Posts will retrieve all entries created by specified author(s) ID(s)."
+msgstr "Si se configura, Wordpress Popular Posts traer&aacute; todas las entradas creadas por el (los) ID(s) de autor(es) especificado(s)."
 
-#: maintenance.php:231
+#: admin.php:523
 msgid "If set, Wordpress Popular Posts will shorten each post title to \"n\" characters whenever possible"
-msgstr "Si se setea, Wordpress Popular Posts acortar&aacute; cada t&iacute;tulo a \"n\" caracteres cuando sea posible"
+msgstr "Si se configura, Wordpress Popular Posts acortar&aacute; cada titulo en \"n\" caracteres cuando sea posible"
 
-#: maintenance.php:238
+#: admin.php:530
 msgid "If set, Wordpress Popular Posts will build and include an excerpt of \"n\" characters long from the content of each post listed as popular"
-msgstr "Si se setea, Wordpress Popular Posts construir&aacute; e insertar&aacute; un extracto de \"n\" caracteres de largo del contenido de cada post listado como popular"
+msgstr "Si se configura, Wordpress Popular Posts construir&aacute; e incluir&aacute; un extracto de \"n\" caracteres del contenido de cada entrada listada como popular"
 
-#: maintenance.php:245
+#: admin.php:537
 msgid "If set, Wordpress Popular Posts will maintaing all styling tags (strong, italic, etc) and hyperlinks found in the excerpt"
-msgstr "Si se setea, Wordpress Popular Posts mantendr&aacute; las etiquetas de formato (strong, italic, etc) y los hiperv&iacute;nculos encontrados en el extracto"
+msgstr "Si se configura, Wordpress Popular Posts mantendr&aacute; todas las etiquetas de estilo (strong, italic, etc) y los hiperv&iacute;nculos encontrados en el extracto"
 
-#: maintenance.php:252
-msgid "If set, Wordpress Popular Posts will exclude all entries that belong to the specified category(ies)."
-msgstr "Si se setea, Wordpress Popular Posts excluir&aacute; todas las entradas que pertenezcan a las categor&iacute;as especificadas."
-
-#: maintenance.php:254
-msgid "None"
-msgstr "Ninguno"
-
-#: maintenance.php:259
+#: admin.php:544
 msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the width for thumbnails"
-msgstr "Si se setea, y si la configuraci&oacute;n actual de tu servidor lo permite, podr&aacute;s mostrar miniaturas (thumbnails) de tus posts. Este atributo setea el ancho de las miniaturas"
+msgstr "Si se configura, y si la configuraci&oacute;n actual de tu servidor lo permite, podr&aacute;s mostrar miniaturas de tus entradas. Este atributo configura el ancho de tus miniaturas"
 
-#: maintenance.php:266
+#: admin.php:551
 msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the height for thumbnails"
-msgstr "Si se setea, y si la configuraci&oacute;n actual de tu servidor lo permite, podr&aacute;s mostrar miniaturas (thumbnails) de tus posts. Este atributo setea el alto de las miniaturas"
-
-#: maintenance.php:273
-msgid "Wordpress Popular Posts will use the thumbnails selected by you. *Requires enabling The Post Thumbnail feature on your theme*"
-msgstr "Wordpress Popular Posts utilizar&aacute; las miniaturas que has seleccionado. *Requiere habilitar la funcionalidad de The Post Thumbnail en tu tema*"
+msgstr "Si se configura, y si la configuraci&oacute;n actual de tu servidor lo permite, podr&aacute;s mostrar miniaturas de tus entradas. Este atributo configura el alto de tus miniaturas"
 
-#: maintenance.php:280
+#: admin.php:558
 msgid "If set, and if the WP-PostRatings plugin is installed and enabled on your blog, Wordpress Popular Posts will show how your visitors are rating your entries"
-msgstr "Si se setea, y si el plugin WP-PostRatings est&aacute; instalado y activo en tu blog, Wordpress Popular Posts mostrar&aacute; c&oacute;mo tus visitantes califican tus entradas"
+msgstr "Si se configura, y si el plugin WP-PostRatings est&aacute; instalado y habilitado en tu blog, Wordpress Popular Posts mostrar&aacute; como tus visitantes han calificado a tus entradas"
 
-#: maintenance.php:287
+#: admin.php:565
 msgid "If set, Wordpress Popular Posts will show how many comments each popular post has got until now"
-msgstr "Si se setea, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntos comentarios ha obtenido cada post popular hasta ahora"
+msgstr "Si se configura, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntos comentarios ha obtenido cada entrada popular hasta ahora"
 
-#: maintenance.php:294
+#: admin.php:572
 msgid "If set, Wordpress Popular Posts will show how many views each popular post has got since it was installed"
-msgstr "Si se setea, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntas vistas ha obtenido cada post popular desde que se instal&oacute; el plugin"
+msgstr "Si se configura, Wordpress Popular Posts mostrar&aacute; cu&aacute;ntas vistas ha obtenido cada entrada popular hasta ahora"
 
-#: maintenance.php:301
+#: admin.php:579
 msgid "If set, Wordpress Popular Posts will show who published each popular post on the list"
-msgstr "Si se setea, Wordpress Popular Posts mostrar&aacute; qui&eacute;n public&oacute; cada uno de los posts populares de la lista"
+msgstr "Si se configura, Wordpress Popular Posts mostrar&aacute; qui&eacute;n public&oacute; cada entrada popular de la lista"
 
-#: maintenance.php:308
-msgid "If set, Wordpress Popular Posts will when each popular post on the list was published"
-msgstr "Si se setea, Wordpress Popular Posts mostrar&aacute; cuando fue publicado cada post en la lista"
+#: admin.php:586
+msgid "If set, Wordpress Popular Posts will display the date when each popular post on the list was published"
+msgstr "Si se tilda, Wordpress Popular Posts mostrar&aacute; la fecha en la que fue publicada cada entrada popular"
 
-#: maintenance.php:315
+#: admin.php:593
 msgid "Sets the date format"
-msgstr "Setea el formato de la fecha"
+msgstr "Configura el formato de la fecha"
 
-#: maintenance.php:322
+#: admin.php:600
 msgid "Sets the opening tag for the listing"
-msgstr "Setea la etiqueta de apertura de la lista"
+msgstr "Configura la etiqueta de apertura del listado"
 
-#: maintenance.php:329
+#: admin.php:607
 msgid "Sets the closing tag for the listing"
-msgstr "Setea la etiqueta de cierre de la lista"
+msgstr "Configura la etiqueta de cierre del listado"
 
-#: maintenance.php:336
+#: admin.php:614
 msgid "Sets the opening tag for each item on the list"
-msgstr "Setea la etiqueta de apertura de cada item en la lista"
+msgstr "Configura la etiqueta de apertura de cada &iacute;tem del listado"
 
-#: maintenance.php:343
+#: admin.php:621
 msgid "Sets the closing tag for each item on the list"
-msgstr "Setea la etiqueta de cierre de cada item en la lista"
+msgstr "Configura la etiqueta de cierre de cada &iacute;tem del listado"
 
-#: maintenance.php:350
+#: admin.php:628
 msgid "If set, this option will allow you to decide the order of the contents within each item on the list."
-msgstr "Si se setea, esta opci&oacute;n te permitir&aacute; decidir el orden de los contenidos de cada item en la lista"
+msgstr "Si se configura, esta opci&oacute;n te permitir&aacute; decidir el orden de los contenidos dentro de cada item en la lista."
 
-#: maintenance.php:357
+#: admin.php:635
 msgid "If set, you can decide the order of each content inside a single item on the list. For example, setting it to \"{title}: {summary}\" would output something like \"Your Post Title: summary here\". This attribute requires do_pattern to be true."
-msgstr "Si se setea, puedes decidir el orden de los contenidos de cada item en la lista. Por ejemplo, configurarlo como \"{title}: {summary}\" mostrar&iacute;a algo como \"Tu t&iacute;tulo: extracto del post aqu&iacute;\". Este atributo requiere que do_pattern sea true."
+msgstr "Si se configura, puedes decidir el orden de cada contenido dentro de cada item en la lista. Por ejemplo, configurarlo como \"{title}: {summary}\" mostrar&iacute;a \"El t&iacute;tulo de tu entrada: resumen aqu&iacute;\". Este atributo requiere que do_pattern sea true."
 
-#: maintenance.php:358
+#: admin.php:636
 msgid "Available tags"
 msgstr "Etiquetas disponibles"
 
-#: maintenance.php:367
-msgid "Maintenance Settings"
-msgstr "Opciones de Mantenimiento"
+#: admin.php:651
+msgid "Here you will find a handy group of options to tweak Wordpress Popular Posts."
+msgstr "Aqu&iacute; encontrar&aacute;s un &uacute;til grupo de opciones para ajustar a Wordpress Popular Posts."
+
+#: admin.php:653
+msgid "Thumbnail source"
+msgstr "Fuente de la miniatura"
+
+#: admin.php:654
+msgid "Tell Wordpress Popular Posts where it should get thumbnails from"
+msgstr "Dile a Wordpress Popular Posts de d&oacute;nde debe obtener las miniaturas"
+
+#: admin.php:659
+msgid "Featured image"
+msgstr "Imagen destacada"
+
+#: admin.php:660
+msgid "First image on post"
+msgstr "Primera imagen de la entrada"
+
+#: admin.php:661
+msgid "Custom field"
+msgstr "Custom field"
+
+#: admin.php:664
+msgid "Custom field name"
+msgstr "Nombre del custom field"
 
-#: maintenance.php:368
+#: admin.php:673
+msgid "Wordpress Popular Posts Stylesheet"
+msgstr "Hoja de estilos de Wordpress Popular Posts"
+
+#: admin.php:674
+msgid "By default, the plugin includes a stylesheet called wpp.css which you can use to style your popular posts listing. If you wish to use your own stylesheet or do not want it to have it included in the header section of your site, use this."
+msgstr "Por defecto, el plugin incluye una hoja de estilos llamada wpp.css que puedes utilizar para darle estilos a tu listado de entradas populares. Si deseas utilizar tu propia hoja de estilos, o no quieres que wpp.css se incluya en el header de tu sitio web, utiliza esto."
+
+#: admin.php:679
+#: admin.php:696
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: admin.php:680
+#: admin.php:697
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: admin.php:689
+msgid "Data tools"
+msgstr "Herramientas de datos"
+
+#: admin.php:691
+#, fuzzy
+msgid "AJAX update. If you are using a caching plugin such as WP Super Cache, enabling this feature will keep the popular list from being cached."
+msgstr "Actualizaci&oacute;n AJAX. Si est&aacute;s utilizando un plugin de cacheado como WP Super Cache, habilitar esta caracter&iacute;stica evitar&aacute; que la lista de entradas populares sea guardada en cach&eacute;."
+
+#: admin.php:706
 msgid "Wordpress Popular Posts keeps historical data of your most popular entries for up to 30 days. If for some reason you need to clear the cache table, or even both historical and cache tables, please use the buttons below to do so."
-msgstr "Wordpress Popular Posts guarda data hist&oacute;rica de tus posts m&aacute;s populares por hasta 30 d&iacute;as. Si por alguna raz&oacute;n necesitas limpiar el cache, o inclusive tanto el cache como la tabla hist&oacute;rica, por favor utiliza los botones de abajo."
+msgstr "Wordpress Popular Posts mantiene una data hist&oacute;rica de tus entradas m&aacute;s populares hasta por 30 d&iacute;as. Si por alguna raz&oacute;n necesitas vaciar la tabla cach&eacute;, o inclusive las dos tablas hist&oacoute;ricas y de cach&eacute;, por favor utiliza los botones de abajo."
 
-#: maintenance.php:371
+#: admin.php:707
 msgid "Empty cache"
-msgstr "Vaciar cache"
+msgstr "Vaciar el cach&eacute;"
 
-#: maintenance.php:372
+#: admin.php:707
 msgid "Use this button to manually clear entries from WPP cache only"
-msgstr "Utiliza este bot&oacute;n para limpiar manualmente todas las entradas del cache de Wordpress Popular Posts"
+msgstr "Utiliza este bot&oacoue;n para vaciar manualmente s&oacute;lo las entradas del cach&eacute; de WPP."
 
-#: maintenance.php:378
+#: admin.php:708
 msgid "Clear all data"
 msgstr "Eliminar toda la data"
 
-#: maintenance.php:379
+#: admin.php:708
 msgid "Use this button to manually clear entries from all WPP data tables"
-msgstr "Utiliza este bot&oacute;n para limpiar toda la data de Wordpress Popular Posts"
+msgstr "Utiliza este bot&oacute;n para limpiar manualmente las tablas de datos de WPP"
 
-#: maintenance.php:387
+#: admin.php:714
 msgid "Do you like this plugin?"
-msgstr "&iquest;Te gusta este plugin?"
+msgstr "&iquest;te gusta este plugin?"
 
-#: maintenance.php:387
+#: admin.php:714
 msgid "Rate Wordpress Popular Posts!"
-msgstr "&iexcl;Califica Wordpress Popular Posts!"
+msgstr "&iexcl;Califica a Wordpress Popular Posts!"
 
-#: maintenance.php:387
-msgid "Rate it 5"
-msgstr "&iexcl;Dale un 5"
+#: admin.php:714
+msgid "Rate it"
+msgstr "Calif&iacute;calo"
 
-#: maintenance.php:387
+#: admin.php:714
 msgid "on the official Plugin Directory!"
-msgstr "en el directorio oficial de plugins!"
+msgstr "en el Directorio Oficial de Plugins!"
 
-#: maintenance.php:388
+#: admin.php:715
 msgid "Do you love this plugin?"
-msgstr "&iquest;Te encanta este plugin?"
+msgstr "&iquest;Adoras este plugin?"
 
-#: maintenance.php:388
-#: maintenance.php:389
+#: admin.php:715
+#: admin.php:716
 msgid "Buy me a beer!"
 msgstr "&iexcl;C&oacute;mprame una cerveza!"
 
-#: maintenance.php:388
+#: admin.php:715
 msgid "Each donation motivates me to keep releasing free stuff for the Wordpress community!"
-msgstr "&iexcl;Cada donativo me motiva a seguir contribuyendo con la comunidad Wordpress!"
+msgstr "&iexcl;Cada donaci&oacute;n me motiva a seguir publicando cosas gratuitas para la comunidad de Wordpress!"
 
-#: stats.php:90
-msgid "Click on each tab to see what are the most popular entries on your blog today, this week, last 30 days or all time since Wordpress Popular Posts was installed."
-msgstr "Haga clic en cada pesta&ntilde;a para ver cu&aacute;les son las entradas m&aacute;s populares en su blog hoy, esta semana, en los &uacute;ltimos 30 d&iacute;s o desde que se instal&oacute; Wordpress Popular Posts."
-
-#: stats.php:92
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: stats.php:93
-msgid "Today"
-msgstr "Hoy"
+#: wordpress-popular-posts.php:47
+msgid "The most Popular Posts on your blog."
+msgstr "Las entradas m&aacute;s populares en tu blog."
 
-#: stats.php:94
-msgid "Weekly"
-msgstr "Semanalmente"
-
-#: stats.php:95
-msgid "Monthly"
-msgstr "Mensualmente"
-
-#: stats.php:96
-#: wordpress-popular-posts.php:260
-msgid "All-time"
-msgstr "Todos"
-
-#: wordpress-popular-posts.php:251
+#: wordpress-popular-posts.php:301
 msgid "Title:"
 msgstr "T&iacute;tulo:"
 
-#: wordpress-popular-posts.php:253
+#: wordpress-popular-posts.php:301
+#: wordpress-popular-posts.php:303
+#: wordpress-popular-posts.php:305
+#: wordpress-popular-posts.php:313
+#: wordpress-popular-posts.php:324
+#: wordpress-popular-posts.php:326
+#: wordpress-popular-posts.php:330
+#: wordpress-popular-posts.php:334
+#: wordpress-popular-posts.php:343
+#: wordpress-popular-posts.php:355
+#: wordpress-popular-posts.php:367
+#: wordpress-popular-posts.php:368
+#: wordpress-popular-posts.php:369
+#: wordpress-popular-posts.php:370
+#: wordpress-popular-posts.php:385
+#: wordpress-popular-posts.php:396
+msgid "What is this?"
+msgstr "&iquest;Qu&eacute; es esto?"
+
+#: wordpress-popular-posts.php:303
 msgid "Show up to:"
 msgstr "Mostrar hasta:"
 
-#: wordpress-popular-posts.php:254
+#: wordpress-popular-posts.php:304
 msgid "posts"
-msgstr "posts"
+msgstr "entradas"
 
-#: wordpress-popular-posts.php:255
+#: wordpress-popular-posts.php:305
 msgid "Time Range:"
-msgstr "Rango de tiempo:"
+msgstr "Rango de Tiempo"
 
-#: wordpress-popular-posts.php:257
-msgid "Last 24 hours"
-msgstr "&Uacute;ltimas 24 horas"
-
-#: wordpress-popular-posts.php:258
-msgid "Last 7 days"
-msgstr "&Uacute;ltimos 7 d&iacute;as"
-
-#: wordpress-popular-posts.php:259
-msgid "Last 30 days"
-msgstr "&Uacute;ltimos 30 d&iacute;as"
-
-#: wordpress-popular-posts.php:263
+#: wordpress-popular-posts.php:313
 msgid "Sort posts by:"
-msgstr "Ordernar posts por:"
+msgstr "Ordenar entradas por:"
 
-#: wordpress-popular-posts.php:265
+#: wordpress-popular-posts.php:315
 msgid "Comments"
 msgstr "Comentarios"
 
-#: wordpress-popular-posts.php:266
+#: wordpress-popular-posts.php:316
 msgid "Total views"
-msgstr "Vistas"
+msgstr "Total de vistas"
 
-#: wordpress-popular-posts.php:267
+#: wordpress-popular-posts.php:317
 msgid "Avg. daily views"
-msgstr "Vistas por d&iacute;a"
+msgstr "Porcentaje de vistas diarias"
 
-#: wordpress-popular-posts.php:270
-msgid "Include pages"
-msgstr "Incluir p&aacute;ginas"
+#: wordpress-popular-posts.php:322
+msgid "Posts settings"
+msgstr "Configuraci&oacute;n de las entradas"
 
-#: wordpress-popular-posts.php:272
+#: wordpress-popular-posts.php:324
 msgid "Display post rating"
-msgstr "Mostrar calificaci&oacute;n del post"
+msgstr "Mostrar rating de la entrada"
 
-#: wordpress-popular-posts.php:274
-msgid "Shorten title output"
+#: wordpress-popular-posts.php:326
+msgid "Shorten title"
 msgstr "Acortar t&iacute;tulo"
 
-#: wordpress-popular-posts.php:276
+#: wordpress-popular-posts.php:328
 msgid "Shorten title to"
-msgstr "acortar t&iacute;tulo a"
+msgstr "Acortar t&iacute;tulo en"
 
-#: wordpress-popular-posts.php:276
-#: wordpress-popular-posts.php:283
+#: wordpress-popular-posts.php:328
+#: wordpress-popular-posts.php:335
 msgid "characters"
 msgstr "caracteres"
 
-#: wordpress-popular-posts.php:278
+#: wordpress-popular-posts.php:330
 msgid "Display post excerpt"
-msgstr "Mostrar extracto del post"
+msgstr "Mostrar resumen de la entrada"
 
-#: wordpress-popular-posts.php:281
+#: wordpress-popular-posts.php:333
 msgid "Excerpt Properties"
-msgstr "Propiedades del extracto"
+msgstr "Propiedades del resumen"
 
-#: wordpress-popular-posts.php:282
+#: wordpress-popular-posts.php:334
 msgid "Keep text format and links"
 msgstr "Mantener formato de texto y links"
 
-#: wordpress-popular-posts.php:283
+#: wordpress-popular-posts.php:335
 msgid "Excerpt length:"
-msgstr "Longitud del extracto:"
+msgstr "Largo del resumen:"
+
+#: wordpress-popular-posts.php:343
+msgid "Filters:"
+msgstr "Filtros:"
 
-#: wordpress-popular-posts.php:287
-msgid "Exclude categories"
-msgstr "Excluir categor&iacute;as"
+#: wordpress-popular-posts.php:344
+msgid "Post type(s):"
+msgstr "Post type(s):"
 
-#: wordpress-popular-posts.php:290
-msgid "Categories to exclude"
-msgstr "Categor&iacute;as a excluir"
+#: wordpress-popular-posts.php:346
+msgid "Category(ies) ID(s):"
+msgstr "ID(s) de Categor&iacute;a(s):"
 
-#: wordpress-popular-posts.php:291
-msgid "ID(s) (comma separated, no spaces):"
-msgstr "ID(s) (separado por comas, sin espacios):"
+#: wordpress-popular-posts.php:348
+msgid "Author(s) ID(s):"
+msgstr "ID(s) de Autor(es):"
 
-#: wordpress-popular-posts.php:297
+#: wordpress-popular-posts.php:354
 msgid "Thumbnail settings"
-msgstr "Configuraci&oacute;n de la miniatura"
+msgstr "Configuraci&oacute;n de miniatura"
 
-#: wordpress-popular-posts.php:298
+#: wordpress-popular-posts.php:355
 msgid "Display post thumbnail"
 msgstr "Mostrar miniatura"
 
-#: wordpress-popular-posts.php:300
+#: wordpress-popular-posts.php:357
 msgid "Width:"
 msgstr "Ancho:"
 
-#: wordpress-popular-posts.php:301
-#: wordpress-popular-posts.php:303
+#: wordpress-popular-posts.php:358
+#: wordpress-popular-posts.php:360
 msgid "px"
 msgstr "px"
 
-#: wordpress-popular-posts.php:302
+#: wordpress-popular-posts.php:359
 msgid "Height:"
 msgstr "Alto:"
 
-#: wordpress-popular-posts.php:309
+#: wordpress-popular-posts.php:366
 msgid "Stats Tag settings"
 msgstr "Configuraci&oacute;n del Stats Tag"
 
-#: wordpress-popular-posts.php:310
+#: wordpress-popular-posts.php:367
 msgid "Display comment count"
-msgstr "Mostrar comentarios"
+msgstr "Mostrar cantidad de comentarios"
 
-#: wordpress-popular-posts.php:311
+#: wordpress-popular-posts.php:368
 msgid "Display views"
 msgstr "Mostrar vistas"
 
-#: wordpress-popular-posts.php:312
+#: wordpress-popular-posts.php:369
 msgid "Display author"
 msgstr "Mostrar autor"
 
-#: wordpress-popular-posts.php:313
+#: wordpress-popular-posts.php:370
 msgid "Display date"
 msgstr "Mostrar fecha"
 
-#: wordpress-popular-posts.php:316
+#: wordpress-popular-posts.php:373
 msgid "Date Format"
 msgstr "Formato de la fecha"
 
-#: wordpress-popular-posts.php:327
+#: wordpress-popular-posts.php:384
 msgid "HTML Markup settings"
 msgstr "Configuraci&oacute;n del Markup HTML"
 
-#: wordpress-popular-posts.php:328
+#: wordpress-popular-posts.php:385
 msgid "Use custom HTML Markup"
 msgstr "Utilizar Markup HTML personalizado"
 
-#: wordpress-popular-posts.php:331
+#: wordpress-popular-posts.php:388
 msgid "Before / after title:"
 msgstr "Antes / despu&eacute;s del t&iacute;tulo:"
 
-#: wordpress-popular-posts.php:333
+#: wordpress-popular-posts.php:390
 msgid "Before / after Popular Posts:"
-msgstr "Antes / despu&eacute;s de los Post Populares:"
+msgstr "Antes / despu&eacute;s de las entradas populares"
 
-#: wordpress-popular-posts.php:335
+#: wordpress-popular-posts.php:392
 msgid "Before / after each post:"
-msgstr "Antes / despu&eacute;s de cada post:"
+msgstr "Antes / despu&eacute;s de cada entrada"
 
-#: wordpress-popular-posts.php:339
+#: wordpress-popular-posts.php:396
 msgid "Use content formatting tags"
-msgstr "Utilizar etiquetas de contenido"
+msgstr "Utilizar etiquetas de formato de contenido"
 
-#: wordpress-popular-posts.php:342
+#: wordpress-popular-posts.php:399
 msgid "Content format:"
-msgstr "Formato del contenido:"
+msgstr "Formato de contenido:"
 
-#: wordpress-popular-posts.php:424
+#: wordpress-popular-posts.php:505
 msgid "Success! The cache table has been cleared!"
-msgstr "&excl;Eacute;xito! &excl;El cache ha sido vaciado!"
+msgstr "&iexcl;&Eacute;xito! &iexcl;La tabla cach&eacute; ha sido borrada!"
 
-#: wordpress-popular-posts.php:426
+#: wordpress-popular-posts.php:507
 msgid "Error: cache table does not exist."
-msgstr "Error: la tabla cache no existe."
+msgstr "Error: la tabla cach&eacute; no existe."
 
-#: wordpress-popular-posts.php:432
+#: wordpress-popular-posts.php:513
 msgid "Success! All data have been cleared!"
-msgstr "&excl;Eacute;xito! &excl;Toda la data ha sido eliminada!"
+msgstr "&iexcl;&Eacute;xito! &iexcl;Toda la data ha sido borrada!"
 
-#: wordpress-popular-posts.php:434
+#: wordpress-popular-posts.php:515
 msgid "Error: one or both data tables are missing."
 msgstr "Error: una o ambas tablas de datos no existen."
 
-#: wordpress-popular-posts.php:437
+#: wordpress-popular-posts.php:518
 msgid "Invalid action."
 msgstr "Acci&oacute;n inv&aacute;lida."
 
-#: wordpress-popular-posts.php:440
+#: wordpress-popular-posts.php:521
 msgid "Sorry, you do not have enough permissions to do this. Please contact the site administrator for support."
-msgstr "Lo lamento, no tienes suficientes permisos para hacer esto. Por favor contacta al administrador del sitio."
+msgstr "Lo lamento, no tienes permisos suficientes para hacer esto. Por favor contacta al administrador del sitio."
 
-#: wordpress-popular-posts.php:643
+#: wordpress-popular-posts.php:852
 msgid "Sorry. No data so far."
-msgstr "Lo lamento, no hay informaci&oacute;n a&uacute;n."
+msgstr "Lo lamentamos. No hay nada que mostrar a&aacute;n."
 
-#: wordpress-popular-posts.php:690
-msgid " comment(s)"
+#: wordpress-popular-posts.php:928
+msgid "comment(s)"
 msgstr "comentario(s)"
 
-#: wordpress-popular-posts.php:693
-msgid " view(s)"
+#: wordpress-popular-posts.php:932
+msgid "view(s)"
 msgstr "vista(s)"
 
-#: wordpress-popular-posts.php:699
-msgid " view(s) per day"
+#: wordpress-popular-posts.php:935
+msgid "view(s) per day"
 msgstr "vista(s) por d&iacute;a"
 
-#: wordpress-popular-posts.php:712
-#: wordpress-popular-posts.php:714
+#: wordpress-popular-posts.php:943
 msgid "by"
 msgstr "por"
 
-#: wordpress-popular-posts.php:719
-#: wordpress-popular-posts.php:721
+#: wordpress-popular-posts.php:947
 msgid "posted on"
-msgstr "publicado en"
+msgstr "publicado el"
 
-#: wordpress-popular-posts.php:1030
+#: wordpress-popular-posts.php:1292
 msgid "Your Wordpress version is too old. Wordpress Popular Posts Plugin requires at least version 2.8 to function correctly. Please update your blog via Tools &gt; Upgrade."
-msgstr "Tu versi&oacute;n de Wordpress es muy antigua. El plugin Wordpress Popular Posts requiere al menos la versi&oacute;n 2.8 para funcionar correctamente. Por favor actualiza tu blog via Herramientas &gt; Actualizar."
+msgstr "Tu versi&oacute;n de Wordpress es muy antigua. El plugin Wordpress Popular Posts requiere al menos la versi&oacute;n 2.8 para funcionar correctamente. Por favor actualiza tu blog via Herramientas &gt; Actualizaciones."
 
-#: wordpress-popular-posts.php:1157
+#: wordpress-popular-posts.php:1416
 msgid "Wordpress Popular Posts Stats"
 msgstr "Estad&iacute;sticas de Wordpress Popular Posts"
 
-#~ msgid "Generate all thumbnails for me"
-#~ msgstr "Genera las miniaturas por mi"
-
-#~ msgid "Use thumbnails selected by me"
-#~ msgstr "Usa las ministuras que seleccion&eacute;"
-
-#~ msgid ""
-#~ "If checked, Wordpress Popular Posts will attempt to find the very first "
-#~ "image of each post in the listing and turn it into a thumbnail. Note that "
-#~ "for this option to work you must check that: your current web host is "
-#~ "running PHP 4.3+ or higher and the GD Library is installed and enabled; "
-#~ "also that your \"wordpress-popular-posts/scripts/cache\" directory exists "
-#~ "and is writable. Disabled by default."
-#~ msgstr ""
-#~ "Si se tilda, Wordpress Popular Posts intentar&aacute; encontrar la "
-#~ "primera imagen de cada post para convertirla en una miniatura "
-#~ "(thumbnail). Nota que para que esta opci&oacute;n funcione debes "
-#~ "verificar que: tu host est&aacute; corre bajo PHP 4.3+ o mejor y que la "
-#~ "librer&iacute;a GD est&aacute; instalada y habilitada; tambi&eacute; que "
-#~ "tu carpeta \"wordpress-popular-posts/scripts/cache\" existe is es "
-#~ "escribible. Desactivada por defecto."
-
-#~ msgid ""
-#~ "What does \"Generate all thumbnails for me\" and \"Use thumbnails "
-#~ "selected by me\" do?"
-#~ msgstr ""
-#~ "&iquest;Qu&eacute; hacen \"Genera las miniaturas por mi\" y \"Usa las "
-#~ "miniaturas que seleccion&eacute;\"?"
-
-#~ msgid "See statistics also in"
-#~ msgstr "Ver estad&iacute;sticas en"
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.mo b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.mo
new file mode 100644
index 0000000000000000000000000000000000000000..00447bfbe22c183ab1c8c3bb10afa3945eaf5def
Binary files /dev/null and b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.mo differ
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.po b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.po
new file mode 100644
index 0000000000000000000000000000000000000000..9fbaa1cb24930af82fbb56f0a8ec59bb486bba5c
--- /dev/null
+++ b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts-fr_FR.po
@@ -0,0 +1,1043 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Wordpress Popular Posts\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2012-08-31 11:31-0430\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Le raconteur <leraconteur@maintenantunehistoire.fr>\n"
+"Language-Team: Héctor Cabrera <admin@rauru.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en_VE\n"
+"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Poedit-KeywordsList: __;_e\n"
+"X-Poedit-Basepath: .\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: admin.php:33 admin.php:44 admin.php:50 admin.php:57
+msgid "Settings saved."
+msgstr "Param&egrave;tres sauvegard&eacute;s."
+
+#: admin.php:38
+msgid "Please provide the name of your custom field."
+msgstr "Veuillez indiquer le nom de votre champ personnalis&eacute;."
+
+#: admin.php:247
+msgid ""
+"This operation will delete all entries from Wordpress Popular Posts' cache "
+"table and cannot be undone."
+msgstr ""
+"Cette op&eacute;ration va supprimer d&eacute;finitivement toutes les "
+"donn&eacute;es de la table de cache de Wordpress Popular Posts."
+
+#: admin.php:247 admin.php:255
+msgid "Do you want to continue?"
+msgstr "Voulez-vous continuer ?"
+
+#: admin.php:255
+msgid ""
+"This operation will delete all stored info from Wordpress Popular Posts' "
+"data tables and cannot be undone."
+msgstr ""
+"Cette op&eacute;ration va supprimer d&eacute;finitivement toutes les "
+"donn&eacute;es des tables de Wordpress Popular Posts."
+
+#: admin.php:269
+msgid "Stats"
+msgstr "Statistiques"
+
+#: admin.php:270
+msgid "FAQ"
+msgstr "FAQ"
+
+#: admin.php:271
+msgid "Tools"
+msgstr "Outils"
+
+#: admin.php:275
+msgid ""
+"Click on each tab to see what are the most popular entries on your blog "
+"today, this week, last 30 days or all time since Wordpress Popular Posts was "
+"installed."
+msgstr ""
+"Cliquer sur chaque onglet pour voir quelles sont les entr&eacute;es les plus "
+"populaires sur votre blog aujourd'hui, cette semaine, les 30 derniers jours "
+"ou depuis que Wordpress Popular Posts a &eacute;t&eacute; install&eacute;."
+
+#: admin.php:281
+msgid "Order by comments"
+msgstr "Trier par commentaires"
+
+#: admin.php:282
+msgid "Order by views"
+msgstr "Trier par vues"
+
+#: admin.php:283
+msgid "Order by avg. daily views"
+msgstr "Trier par vues moyenne par jour"
+
+#: admin.php:285
+msgid "Limit"
+msgstr "Limite"
+
+#: admin.php:287 admin.php:667 admin.php:683 admin.php:700
+msgid "Apply"
+msgstr "Appliquer"
+
+#: admin.php:293 wordpress-popular-posts.php:307
+msgid "Last 24 hours"
+msgstr "Derni&egrave;res 24 heures"
+
+#: admin.php:294 wordpress-popular-posts.php:308
+msgid "Last 7 days"
+msgstr "7 derniers jours "
+
+#: admin.php:295 wordpress-popular-posts.php:309
+msgid "Last 30 days"
+msgstr "30 derniers jours "
+
+#: admin.php:296 wordpress-popular-posts.php:310
+msgid "All-time"
+msgstr "Depuis le d&eacute;but"
+
+#: admin.php:317
+msgid "Frequently Asked Questions"
+msgstr "Questions fr&eacute;quentes"
+
+#: admin.php:321
+msgid "What does \"Title\" do?"
+msgstr "Que fait \"Titre\" ?"
+
+#: admin.php:323
+msgid ""
+"It allows you to show a heading for your most popular posts listing. If left "
+"empty, no heading will be displayed at all."
+msgstr ""
+"Il vous permet d'afficher un titre au-dessus de la liste des messages les "
+"plus populaires. Si le champ est laiss&eacute; vide, aucun titre ne sera "
+"affich&eacute;. "
+
+#: admin.php:326
+msgid "What is Time Range for?"
+msgstr "Qu'est-ce que la Plage de temps ?"
+
+#: admin.php:328
+msgid ""
+"It will tell Wordpress Popular Posts to retrieve all posts with most views / "
+"comments within the selected time range."
+msgstr ""
+"Wordpress Popular Posts r&eacute;cup&egrave;re les posts les plus vus/"
+"comment&eacute;s durant l'intervelle de temps s&eacute;lectionn&eacute;."
+
+#: admin.php:331
+msgid "What is \"Sort post by\" for?"
+msgstr "Que fait \"Trier les posts par\" ?"
+
+#: admin.php:333
+msgid ""
+"It allows you to decide whether to order your popular posts listing by total "
+"views, comments, or average views per day."
+msgstr ""
+"Cela vous permet de d&eacute;cider si vous voulez ordonner votre liste de "
+"posts populaires par nombre de vues total, par nombre de commentaires, ou "
+"par nombre de vues moyennes par jour."
+
+#: admin.php:336
+msgid "What does \"Display post rating\" do?"
+msgstr "Que fait \"Afficher la note du post\" ?"
+
+#: admin.php:338
+msgid ""
+"If checked, Wordpress Popular Posts will show how your readers are rating "
+"your most popular posts. This feature requires having WP-PostRatings plugin "
+"installed and enabled on your blog for it to work."
+msgstr ""
+"Si c'est coch&eacute;e,Wordpress Popular Posts affichera la liste des posts "
+"les mieux not&eacute;s par vos lecteurs. Cette fonction n&eacute;cessite "
+"d'avoir le plugin WP-PostRatings install&eacute; et activ&eacute; sur votre "
+"blog pour que cela fonctionne."
+
+#: admin.php:341
+msgid "What does \"Shorten title\" do?"
+msgstr "Que fait \"Raccourcir le titre\" ?"
+
+#: admin.php:343
+msgid ""
+"If checked, all posts titles will be shortened to \"n\" characters. A new "
+"\"Shorten title to\" option will appear so you can set it to whatever you "
+"like."
+msgstr ""
+"Si c'est coch&eacute;, les titres des posts sont raccourci &agrave; \"n\" "
+"caract&egrave;res. Une option \"Raccourcir le titre de\"  appara&icirc;tra "
+"afin que vous puissiez le r&eacute;gler le nombre \"n\" de caract&egrave;res "
+"que vous voulez garder."
+
+#: admin.php:346
+msgid "What does \"Display post excerpt\" do?"
+msgstr "Que fait \"Afficher un extrait du post\" ?"
+
+#: admin.php:348
+msgid ""
+"If checked, Wordpress Popular Posts will also include a small extract of "
+"your posts in the list. Similarly to the previous option, you will be able "
+"to decide how long the post excerpt should be."
+msgstr ""
+"Si c'est coch&eacute;, Wordpress Popular Post permet d'inclure un petit "
+"extrait de vos posts dans la liste. Comme la pr&eacute;c&eacute;dente "
+"option, une option appara&icirc;tra pour que vous choisissiez la longueur de "
+"l'extrait &agrave; afficher."
+
+#: admin.php:351
+msgid "What does \"Keep text format and links\" do?"
+msgstr "Que fait \"Garder le formatage du texte et les liens\" ?"
+
+#: admin.php:353
+msgid ""
+"If checked, and if the Post Excerpt feature is enabled, Wordpress Popular "
+"Posts will keep the styling tags (eg. bold, italic, etc) that were found in "
+"the excerpt. Hyperlinks will remain intact, too."
+msgstr ""
+"Si c'est coch&eacute; et que la fonction \"extrait du post\" est "
+"activ&eacute;, Wordpress Popular Posts garde les balises de formatage (ex : "
+"gras, italique, etc.) qui se trouvent dans l'extrait. Les liens hypertexte "
+"sont aussi affich&eacute;s &agrave; l'identique."
+
+#: admin.php:356
+msgid "What is \"Post type\" for?"
+msgstr "Que fait \"Type de posts\" ?"
+
+#: admin.php:358
+msgid ""
+"This filter allows you to decide which post types to show on the listing. By "
+"default, it will retrieve only posts and pages (which should be fine for "
+"most cases)."
+msgstr ""
+"Ce filtre vous permet de choisir quels types de posts doivent &ecirc;tre "
+"afficher ; par d&eacute;faut, il permet de r&eacute;cup&eacute;rer les "
+"articles et les pages (ce qui est suffisant dans la plupart des cas)"
+
+#: admin.php:361
+msgid "What is \"Category(ies) ID(s)\" for?"
+msgstr "Que fait \"Cat&eacute;gories ID\" ?"
+
+#: admin.php:363
+msgid ""
+"This filter allows you to select which categories should be included or "
+"excluded from the listing. A negative sign in front of the category ID "
+"number will exclude posts belonging to it from the list, for example. You "
+"can specify more than one ID with a comma separated list."
+msgstr ""
+"Ce filtre vous permet de s&eacute;lectionner quelles cat&eacute;gories "
+"doivent &ecirc;tre inclus ou exclus de la liste. Un signe n&eacute;gatif "
+"devant le num&eacute;ro de cat&eacute;gories ID permet exclure les posts de "
+"cette cat&eacute;gorie de la liste. Vous pouvez sp&eacute;cifier plusieurs "
+"ID d'une liste s&eacute;par&eacute;e par des virgules."
+
+#: admin.php:366
+msgid "What is \"Author(s) ID(s)\" for?"
+msgstr "Que fait \"Auteur ID\" ?"
+
+#: admin.php:368
+msgid ""
+"Just like the Category filter, this one lets you filter posts by author ID. "
+"You can specify more than one ID with a comma separated list."
+msgstr ""
+"Fait exactement comme le filtre Cat&eacute;gorie, celui-ci vous permet de "
+"filtrer les messages par  auteur ID. Vous pouvez sp&eacute;cifier plusieurs "
+"ID s&eacute;par&eacute; par des virgules."
+
+#: admin.php:371
+msgid "What does \"Display post thumbnail\" do?"
+msgstr "Que fait \"Afficher les vignettes des posts\" ?"
+
+#: admin.php:373
+msgid ""
+"If checked, Wordpress Popular Posts will attempt to retrieve the thumbnail "
+"of each post. You can set up the source of the thumbnail via Settings - "
+"Wordpress Popular Posts - Tools."
+msgstr ""
+"Si c'est coch&eacute;, Wordpress Popular Posts tentera de r&eacute;"
+"cup&eacute;rer la vignette de chaque post. Vous pouvez configurer la source "
+"de la vignette via Param&egrave;tres - Wordpress Popular Posts - Outils."
+
+#: admin.php:376
+msgid "What does \"Display comment count\" do?"
+msgstr "Que fait \"Affichage du nombre de commentaires\" ?"
+
+#: admin.php:378
+msgid ""
+"If checked, Wordpress Popular Posts will display how many comments each "
+"popular post has got in the selected Time Range."
+msgstr ""
+"Si c'est coch&eacute;, Wordpress Popular Posts affiche le nombre de "
+"commentaires que chaque post a eu durant la plage de temps s&eacute;"
+"lectionn&eacute;e."
+
+#: admin.php:381
+msgid "What does \"Display views\" do?"
+msgstr "Que fait \"Affichage des vues\" ?"
+
+#: admin.php:383
+msgid ""
+"If checked, Wordpress Popular Posts will show how many pageviews a single "
+"post has gotten in the selected Time Range."
+msgstr ""
+"Si c'est coch&eacute;, Wordpress Popular Posts affichera le nombre de fois "
+"o&ugrave; le post a &eacute;t&eacute; vu durant la plage de temps s&eacute;"
+"lectionn&eacute;e."
+
+#: admin.php:386
+msgid "What does \"Display author\" do?"
+msgstr "Que fait \"Affichage de l'auteur\" ?"
+
+#: admin.php:388
+msgid ""
+"If checked, Wordpress Popular Posts will display the name of the author of "
+"each entry listed."
+msgstr ""
+"Si c'est coch&eacute;, Wordpress Popular Posts affichera le nom de l'auteur "
+"des posts."
+
+#: admin.php:391
+msgid "What does \"Display date\" do?"
+msgstr "Que fait \"Affichage de la date\" ?"
+
+#: admin.php:393
+msgid ""
+"If checked, Wordpress Popular Posts will display the date when each popular "
+"posts was published."
+msgstr ""
+"Si c'est s&eacute;lectionn&eacute;, Wordpress Popular Posts affichera la "
+"date de publication des posts."
+
+#: admin.php:396
+msgid "What does \"Use custom HTML Markup\" do?"
+msgstr "Que fait \"Formatage HTML de l'affichage\" ?"
+
+#: admin.php:398
+msgid ""
+"If checked, you will be able to customize the HTML markup of your popular "
+"posts listing. For example, you can decide whether to wrap your posts in an "
+"unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is "
+"for you!"
+msgstr ""
+"Si c'est s&eacute;lectionn&eacute;, cela vous permet  de personnaliser le "
+"formatage HTML de l'affichage de la liste des posts. Par exemple vous pouvez "
+"d&eacute;cider d'afficher les posts en utilisant une liste, un div, etc. Si "
+"vous connaissez xHTML/CSS, ceci est pour vous !"
+
+#: admin.php:401
+msgid "What does \"Use content formatting tags\" do?"
+msgstr "Que fait \"Utiliser les balises de formatage de contenu\" ?"
+
+#: admin.php:403
+msgid ""
+"If checked, you can decide the order of the items displayed on each entry. "
+"For example, setting it to \"{title}: {summary}\" (without the quotes) would "
+"display \"Post title: excerpt of the post here\". Available tags: {image}, "
+"{title}, {summary}, {stats} and {rating}."
+msgstr ""
+"Si c'est s&eacute;lectionn&eacute;, vous pouvez d&eacute;cider la façon dont "
+"les &eacute;l&eacute;ments sont affich&eacute;s pour chaque post. Par "
+"exemple,  si vous mettez \"{title} : {summary} \" (sans les guillemets), "
+"cela va afficher \"Titre du post : extrait du post \". Les balises "
+"disponibles sont : {image}, {title}, {summary}, {stats} et {rating}."
+
+#: admin.php:406
+msgid "What are \"Template Tags\"?"
+msgstr "Qu'est-ce que les \"Marqueurs de Modele\" ?"
+
+#: admin.php:408
+msgid ""
+"Template Tags are simply php functions that allow you to perform certain "
+"actions. For example, Wordpress Popular Posts currently supports two "
+"different template tags: wpp_get_mostpopular() and wpp_get_views()."
+msgstr ""
+"Les marqueurs de mod&egrave;le sont simplement des fonctions php qui "
+"permettent de r&eacute;aliser certaines actions. Par exemple, Wordpress "
+"Popular Posts g&egrave;re deux marqueurs de mod&egrave;le diff&eacute;"
+"rents : wpp_get_mostpopular() et wpp_get_views()."
+
+#: admin.php:411
+msgid "What are the template tags that Wordpress Popular Posts supports?"
+msgstr ""
+"Quels sont les marqueurs de mod&egrave;le que Wordpresse Popular Posts "
+"supporte ?"
+
+#: admin.php:413
+msgid ""
+"The following are the template tags supported by Wordpress Popular Posts"
+msgstr ""
+"Ci-dessous les param&egrave;tres que le marqueur de mod&egrave;le Wordpress "
+"Popular Posts accepte"
+
+#: admin.php:417
+msgid "Template tag"
+msgstr "Marqueur de mod&egrave;le"
+
+#: admin.php:418 admin.php:451
+msgid "What it does "
+msgstr "Qu'est-ce que ça fait ?"
+
+#: admin.php:419
+msgid "Parameters"
+msgstr "Param&egrave;tres"
+
+#: admin.php:420 admin.php:454
+msgid "Example"
+msgstr "Exemple"
+
+#: admin.php:426
+msgid ""
+"Similar to the widget functionality, this tag retrieves the most popular "
+"posts on your blog. This function also accepts parameters so you can "
+"customize your popular listing, but these are not required."
+msgstr ""
+"Fonctionnalit&eacute;s similaire au widget Wordpress Popular Posts, cette "
+"balise r&eacute;cup&egrave;re les posts les plus populaires sur votre blog. "
+"Cette fonction accepte &eacute;galement les param&egrave;tres pour "
+"personnaliser la liste des posts les plus populaires, mais ceux-ci ne sont "
+"pas indispensables."
+
+#: admin.php:427
+msgid ""
+"Please refer to \"List of parameters accepted by wpp_get_mostpopular() and "
+"the [wpp] shortcode\"."
+msgstr ""
+"Veuillez consulter la \"Liste des param&egrave;tres accept&eacute;s par  "
+"wpp_get_mostpopular() et le shortcode [wpp]\""
+
+#: admin.php:432
+msgid ""
+"Displays the number of views of a single post. Post ID is required or it "
+"will return false."
+msgstr ""
+"Affiche le nombre de vues d'un seul poste.  Le post ID est n&eacute;cessaire "
+"sinon la fonction retourne false."
+
+#: admin.php:433
+msgid "Post ID"
+msgstr "Post ID"
+
+#: admin.php:440
+msgid "What are \"shortcodes\"?"
+msgstr "Qu'est-ce que \"shortcodes\" ?"
+
+#: admin.php:442
+msgid ""
+"Shortcodes are similar to BB Codes, these allow us to call a php function by "
+"simply typing something like [shortcode]. With Wordpress Popular Posts, the "
+"shortcode [wpp] will let you insert a list of the most popular posts in "
+"posts content and pages too! For more information about shortcodes, please "
+"visit"
+msgstr ""
+"Les shortcodes sont similaires aux BB Codes, cela permet d'appeler une "
+"fonction php en tapant simplement quelque chose comme [shortcode]. Avec "
+"Wordpress Popular Posts, le shortcode [wpp] permet d'ins&eacute;rer une "
+"liste des posts les plus populaires dans les messages et les pages de "
+"contenu aussi ! Pour plus d'informations sur les shortcodes, veuillez visiter"
+
+#: admin.php:444
+msgid ""
+"List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode"
+msgstr ""
+"Liste des param&egrave;tres accept&eacute;s par  wpp_get_mostpopular() et le "
+"shortcode [wpp]"
+
+#: admin.php:446
+msgid ""
+"These parameters can be used by both the template tag wpp_get_most_popular() "
+"and the shortcode [wpp]."
+msgstr ""
+"Ces param&egrave;tres peuvent &ecirc;tre utilis&eacute;s aussi bien par le "
+"marqueur de mod&egrave;le wpp_get_most_popular() que par le shortcode [wpp]."
+
+#: admin.php:450
+msgid "Parameter"
+msgstr "Param&egrave;tres"
+
+#: admin.php:452
+msgid "Possible values"
+msgstr "Valeurs possibles"
+
+#: admin.php:453
+msgid "Defaults to"
+msgstr "Par d&eacute;faut"
+
+#: admin.php:460
+msgid "Sets a heading for the list"
+msgstr "Met un ent&ecirc;te &agrave; la liste"
+
+#: admin.php:461 admin.php:468 admin.php:475 admin.php:503 admin.php:510
+#: admin.php:517 admin.php:594 admin.php:601 admin.php:608 admin.php:615
+#: admin.php:622
+msgid "Text string"
+msgstr "Texte"
+
+#: admin.php:462 wordpress-popular-posts.php:250
+msgid "Popular Posts"
+msgstr "Popular Posts"
+
+#: admin.php:467
+msgid "Set the opening tag for the heading of the list"
+msgstr "D&eacute;finit la balise d'ouverture de l'en-t&ecirc;te de la liste"
+
+#: admin.php:474
+msgid "Set the closing tag for the heading of the list"
+msgstr "D&eacute;finit la balise de fermeture de l'en-t&ecirc;te de la liste"
+
+#: admin.php:481
+msgid "Sets the maximum number of popular posts to be shown on the listing"
+msgstr ""
+"D&eacute;finit le nombre maximum de posts populaires que doit afficher la "
+"liste"
+
+#: admin.php:482 admin.php:524 admin.php:531 admin.php:545 admin.php:552
+msgid "Positive integer"
+msgstr "Entier positif"
+
+#: admin.php:488
+msgid ""
+"Tells Wordpress Popular Posts to retrieve the most popular entries within "
+"the time range specified by you"
+msgstr ""
+"Permet &agrave; Wordpress Popular Posts de r&eacute;cup&eacute;rer les posts "
+"les plus populaires dans l'intervalle de temps que vous avez sp&eacute;"
+"cifi&eacute;"
+
+#: admin.php:495
+msgid "Sets the sorting option of the popular posts"
+msgstr "D&eacute;finit les options de tri des posts les plus populaires"
+
+#: admin.php:496
+msgid "(for average views per day)"
+msgstr "(Pour le nb de vues moyenne par jour)"
+
+#: admin.php:502
+msgid "Defines the type of posts to show on the listing"
+msgstr "D&eacute;finit le type de messages &agrave; afficher sur la liste"
+
+#: admin.php:509
+msgid ""
+"If set, Wordpress Popular Posts will retrieve all entries that belong to the "
+"specified category(ies) ID(s). If a minus sign is used, the category(ies) "
+"will be excluded instead."
+msgstr ""
+"Ce param&egrave;tre vous permet de r&eacute;cuperer les posts les plus "
+"populaires appartenant aux cat&eacute;gories sp&eacute;cifi&eacute;e "
+"(&agrave; l'aide des Categories ID). En utilisant le signe - devant l'ID, "
+"les cat&eacute;gories seront exclus."
+
+#: admin.php:511 admin.php:518
+msgid "None"
+msgstr "Non"
+
+#: admin.php:516
+msgid ""
+"If set, Wordpress Popular Posts will retrieve all entries created by "
+"specified author(s) ID(s)."
+msgstr ""
+"Cet attribut vous permet de s&eacute;lectionner les posts les plus "
+"populaires ayant ce num&eacute;ro d'auteur ID."
+
+#: admin.php:523
+msgid ""
+"If set, Wordpress Popular Posts will shorten each post title to \"n\" "
+"characters whenever possible"
+msgstr ""
+"Vous pouvez raccourcir les titres des posts &agrave; \"n\" caract&egrave;"
+"res, si c'est n&eacute;cessaire"
+
+#: admin.php:530
+msgid ""
+"If set, Wordpress Popular Posts will build and include an excerpt of \"n\" "
+"characters long from the content of each post listed as popular"
+msgstr ""
+"Cet attribut permet de définir la longueur de \"n\" caract&egrave;res de "
+"l'extrait des posts les plus populaires"
+
+#: admin.php:537
+msgid ""
+"If set, Wordpress Popular Posts will maintaing all styling tags (strong, "
+"italic, etc) and hyperlinks found in the excerpt"
+msgstr ""
+"Cet attribut permet l'affichage des balises de style (gras, italique, etc.) "
+"ainsi que des liens trouv&eacute;s dans l'extrait"
+
+#: admin.php:544
+msgid ""
+"If set, and if your current server configuration allows it, you will be able "
+"to display thumbnails of your posts. This attribute sets the width for "
+"thumbnails"
+msgstr ""
+"Si la configuration de votre serveur le permet, cet attribut d&eacute;finit "
+"la largeur des vignettes"
+
+#: admin.php:551
+msgid ""
+"If set, and if your current server configuration allows it, you will be able "
+"to display thumbnails of your posts. This attribute sets the height for "
+"thumbnails"
+msgstr ""
+"Si la configuration de votre serveur le permet, cet attribut d&eacute;finit "
+"la hauteur des vignettes"
+
+#: admin.php:558
+msgid ""
+"If set, and if the WP-PostRatings plugin is installed and enabled on your "
+"blog, Wordpress Popular Posts will show how your visitors are rating your "
+"entries"
+msgstr ""
+"Si le plugin WP-PostRatings est install&eacute; et activ&eacute; sur votre "
+"blog, cette option vous permet d'afficher les notes que vos visiteurs ont "
+"donn&eacute;es &agrave; vos posts"
+
+#: admin.php:565
+msgid ""
+"If set, Wordpress Popular Posts will show how many comments each popular "
+"post has got until now"
+msgstr "Affiche le nombre de commentaires pour chaque post de la liste"
+
+#: admin.php:572
+msgid ""
+"If set, Wordpress Popular Posts will show how many views each popular post "
+"has got since it was installed"
+msgstr ""
+"Affiche le nombre de vues pour chaque post de la liste depuis que le plugin "
+"est install&eacute;"
+
+#: admin.php:579
+msgid ""
+"If set, Wordpress Popular Posts will show who published each popular post on "
+"the list"
+msgstr "Permet l'affichage de l'auteur de chaque post de la liste"
+
+#: admin.php:586
+msgid ""
+"If set, Wordpress Popular Posts will display the date when each popular post "
+"on the list was published"
+msgstr ""
+"Permet l'affichage de la date de publication pour chaque post de la liste"
+
+#: admin.php:593
+msgid "Sets the date format"
+msgstr "D&eacute;finit le format de la date"
+
+#: admin.php:600
+msgid "Sets the opening tag for the listing"
+msgstr "D&eacute;finit la balise de d&eacute;but de liste"
+
+#: admin.php:607
+msgid "Sets the closing tag for the listing"
+msgstr "D&eacute;finit la balise de fin de liste"
+
+#: admin.php:614
+msgid "Sets the opening tag for each item on the list"
+msgstr ""
+"D&eacute;finit la balise d'ouverture pour chaque &eacute;l&eacute;ment de la "
+"liste"
+
+#: admin.php:621
+msgid "Sets the closing tag for each item on the list"
+msgstr ""
+"D&eacute;finit la balise de fermeture pour chaque &eacute;l&eacute;ment de "
+"la liste"
+
+#: admin.php:628
+msgid ""
+"If set, this option will allow you to decide the order of the contents "
+"within each item on the list."
+msgstr ""
+"Cette option vous permet de d'activer le choix de l'ordre du contenu dans "
+"chaque &eacute;l&eacute;ment de la liste."
+
+#: admin.php:635
+msgid ""
+"If set, you can decide the order of each content inside a single item on the "
+"list. For example, setting it to \"{title}: {summary}\" would output "
+"something like \"Your Post Title: summary here\". This attribute requires "
+"do_pattern to be true."
+msgstr ""
+"Permet de choisir l'ordre des &eacute;l&eacute;ments &agrave; afficher pour "
+"chaque post de la liste. Par exemple, mettre  \"{title} : {summary} \" "
+"affichera quelque chose comme \"Titre de votre message : r&eacute;"
+"sum&eacute; \". Cette fonctionnalit&eacute; est active si le param&egrave;"
+"tre pr&eacute;c&eacute;dent do_pattern=1."
+
+#: admin.php:636
+msgid "Available tags"
+msgstr "Balises disponibles"
+
+#: admin.php:651
+msgid ""
+"Here you will find a handy group of options to tweak Wordpress Popular Posts."
+msgstr ""
+"Vous trouverez ici des options pour personnaliser Wordpress Popular Posts."
+
+#: admin.php:653
+msgid "Thumbnail source"
+msgstr "Source des vignettes"
+
+#: admin.php:654
+msgid "Tell Wordpress Popular Posts where it should get thumbnails from"
+msgstr ""
+"Indiquer o&ugrave; Wordpress Popular Posts doit aller prendre les vignettes "
+"de"
+
+#: admin.php:659
+msgid "Featured image"
+msgstr "Choix de l'image"
+
+#: admin.php:660
+msgid "First image on post"
+msgstr "Premi&egrave;re image du post"
+
+#: admin.php:661
+msgid "Custom field"
+msgstr "Champ personalis&eacute;"
+
+#: admin.php:664
+msgid "Custom field name"
+msgstr "Nom du champ personalis&eacute;"
+
+#: admin.php:673
+msgid "Wordpress Popular Posts Stylesheet"
+msgstr "Feuille de style pour Wordpress Popular Posts"
+
+#: admin.php:674
+msgid ""
+"By default, the plugin includes a stylesheet called wpp.css which you can "
+"use to style your popular posts listing. If you wish to use your own "
+"stylesheet or do not want it to have it included in the header section of "
+"your site, use this."
+msgstr ""
+"Par d&eacute;faut, le plugin comprend une feuille de style appel&eacute;e "
+"wpp.css que vous pouvez utiliser pour mettre en forme la liste des messages "
+"populaires. Si vous souhaitez utiliser votre propre feuille de style ou ne "
+"voulez pas de l'inclure dans la section d'en-t&ecirc;te de votre site, "
+"utilisez ceci."
+
+#: admin.php:679 admin.php:696
+msgid "Enabled"
+msgstr "Activ&eacute;"
+
+#: admin.php:680 admin.php:697
+msgid "Disabled"
+msgstr "D&eacute;sactiv&eacute;"
+
+#: admin.php:689
+msgid "Data tools"
+msgstr "Gestion des donn&eacute;es"
+
+#: admin.php:691
+msgid ""
+"AJAX update. If you are using a caching plugin such as WP Super Cache, "
+"enabling this feature will keep the popular list from being cached."
+msgstr ""
+"Mise &agrave; jour AJAX. Si vous utilisez un plugin de mise en cache comme "
+"WP Super Cache, l'activation de cette fonction permet d'avoir la liste des "
+"posts les plus populaire malgr&eacute; la mise en cache."
+
+#: admin.php:706
+msgid ""
+"Wordpress Popular Posts keeps historical data of your most popular entries "
+"for up to 30 days. If for some reason you need to clear the cache table, or "
+"even both historical and cache tables, please use the buttons below to do so."
+msgstr ""
+"Wordpress Popular Posts conserve les donn&eacute;es historiques de vos posts "
+"les plus populaires pour un maximum de 30 jours. Si, pour une raison "
+"quelconque, vous devez effacer la table du cache, ou m&ecirc;me les deux "
+"tables d'historiques et de cache, veuillez utiliser les boutons ci-dessous "
+"pour le faire."
+
+#: admin.php:707
+msgid "Empty cache"
+msgstr "Vider le cache"
+
+#: admin.php:707
+msgid "Use this button to manually clear entries from WPP cache only"
+msgstr ""
+"Utiliser ce bouton pour effacer manuellement les donn&eacute;es en caches de "
+"WPP"
+
+#: admin.php:708
+msgid "Clear all data"
+msgstr "Effacer toutes les donn&eacute;es"
+
+#: admin.php:708
+msgid "Use this button to manually clear entries from all WPP data tables"
+msgstr ""
+"Utiliser ce bouton pour effacer manuellement les donn&eacute;es de toutes "
+"les tables de donn&eacute;es WPP"
+
+#: admin.php:714
+msgid "Do you like this plugin?"
+msgstr "Aimez-vous ce plugin ?"
+
+#: admin.php:714
+msgid "Rate Wordpress Popular Posts!"
+msgstr "Noter Wordpress Popular Posts !"
+
+#: admin.php:714
+msgid "Rate it"
+msgstr "Notez le"
+
+#: admin.php:714
+msgid "on the official Plugin Directory!"
+msgstr "sur le site officiel des plugins !"
+
+#: admin.php:715
+msgid "Do you love this plugin?"
+msgstr "Si vous appreciez-vous ce plugin, "
+
+#: admin.php:715 admin.php:716
+msgid "Buy me a beer!"
+msgstr "payez moi une bi&egrave;re !"
+
+#: admin.php:715
+msgid ""
+"Each donation motivates me to keep releasing free stuff for the Wordpress "
+"community!"
+msgstr ""
+"Chaque don me motive pour maintenir la gratuit&eacute; des d&eacute;"
+"veloppements pour la communaut&eacute; Wordpress"
+
+#: wordpress-popular-posts.php:47
+msgid "The most Popular Posts on your blog."
+msgstr "Les posts les plus populaires sur votre blog."
+
+#: wordpress-popular-posts.php:301
+msgid "Title:"
+msgstr "Titre :"
+
+#: wordpress-popular-posts.php:301 wordpress-popular-posts.php:303
+#: wordpress-popular-posts.php:305 wordpress-popular-posts.php:313
+#: wordpress-popular-posts.php:324 wordpress-popular-posts.php:326
+#: wordpress-popular-posts.php:330 wordpress-popular-posts.php:334
+#: wordpress-popular-posts.php:343 wordpress-popular-posts.php:355
+#: wordpress-popular-posts.php:367 wordpress-popular-posts.php:368
+#: wordpress-popular-posts.php:369 wordpress-popular-posts.php:370
+#: wordpress-popular-posts.php:385 wordpress-popular-posts.php:396
+msgid "What is this?"
+msgstr "Qu'est-ce que c'est ?"
+
+#: wordpress-popular-posts.php:303
+msgid "Show up to:"
+msgstr "Pr&eacute;sentez-vous :"
+
+#: wordpress-popular-posts.php:304
+msgid "posts"
+msgstr "posts"
+
+#: wordpress-popular-posts.php:305
+msgid "Time Range:"
+msgstr "Plage de temps :"
+
+#: wordpress-popular-posts.php:313
+msgid "Sort posts by:"
+msgstr "Trier les posts par :"
+
+#: wordpress-popular-posts.php:315
+msgid "Comments"
+msgstr "Commentaires"
+
+#: wordpress-popular-posts.php:316
+msgid "Total views"
+msgstr "Nombre de vues"
+
+#: wordpress-popular-posts.php:317
+msgid "Avg. daily views"
+msgstr "Moy. vues par jour"
+
+#: wordpress-popular-posts.php:322
+msgid "Posts settings"
+msgstr "R&eacute;glage des posts"
+
+#: wordpress-popular-posts.php:324
+msgid "Display post rating"
+msgstr "Afficher la note du post"
+
+#: wordpress-popular-posts.php:326
+msgid "Shorten title"
+msgstr "Raccourcir le titre"
+
+#: wordpress-popular-posts.php:328
+msgid "Shorten title to"
+msgstr "Raccourcir le titre de"
+
+#: wordpress-popular-posts.php:328 wordpress-popular-posts.php:335
+msgid "characters"
+msgstr "caract."
+
+#: wordpress-popular-posts.php:330
+msgid "Display post excerpt"
+msgstr "Afficher un extrait du post"
+
+#: wordpress-popular-posts.php:333
+msgid "Excerpt Properties"
+msgstr "Propri&eacute;t&eacute; de l'extrait"
+
+#: wordpress-popular-posts.php:334
+msgid "Keep text format and links"
+msgstr "Garder le formatage du texte et les liens"
+
+#: wordpress-popular-posts.php:335
+msgid "Excerpt length:"
+msgstr "Longueur de l'extrait :"
+
+#: wordpress-popular-posts.php:343
+msgid "Filters:"
+msgstr "Filtres :"
+
+#: wordpress-popular-posts.php:344
+msgid "Post type(s):"
+msgstr "Type de posts"
+
+#: wordpress-popular-posts.php:346
+msgid "Category(ies) ID(s):"
+msgstr "Cat&eacute;gories ID :"
+
+#: wordpress-popular-posts.php:348
+msgid "Author(s) ID(s):"
+msgstr "Auteurs ID :"
+
+#: wordpress-popular-posts.php:354
+msgid "Thumbnail settings"
+msgstr "R&eacute;glages des vignettes"
+
+#: wordpress-popular-posts.php:355
+msgid "Display post thumbnail"
+msgstr "Afficher les vignettes des posts"
+
+#: wordpress-popular-posts.php:357
+msgid "Width:"
+msgstr "Largeur :"
+
+#: wordpress-popular-posts.php:358 wordpress-popular-posts.php:360
+msgid "px"
+msgstr "px"
+
+#: wordpress-popular-posts.php:359
+msgid "Height:"
+msgstr "Hauteur :"
+
+#: wordpress-popular-posts.php:366
+msgid "Stats Tag settings"
+msgstr "Options d'affichage"
+
+#: wordpress-popular-posts.php:367
+msgid "Display comment count"
+msgstr "Affichage du nombre de commentaires"
+
+#: wordpress-popular-posts.php:368
+msgid "Display views"
+msgstr "Affichage le nb de vues"
+
+#: wordpress-popular-posts.php:369
+msgid "Display author"
+msgstr "Affichage de l'auteur"
+
+#: wordpress-popular-posts.php:370
+msgid "Display date"
+msgstr "Affichage de la date"
+
+#: wordpress-popular-posts.php:373
+msgid "Date Format"
+msgstr "Format de la date"
+
+#: wordpress-popular-posts.php:384
+msgid "HTML Markup settings"
+msgstr "Formatage HTML de l'affichage"
+
+#: wordpress-popular-posts.php:385
+msgid "Use custom HTML Markup"
+msgstr "Utiliser du code HTML"
+
+#: wordpress-popular-posts.php:388
+msgid "Before / after title:"
+msgstr "Avant/Apr&egrave;s le titre :"
+
+#: wordpress-popular-posts.php:390
+msgid "Before / after Popular Posts:"
+msgstr "Avant/Apr&egrave;s Popular Posts :"
+
+#: wordpress-popular-posts.php:392
+msgid "Before / after each post:"
+msgstr "Avant/Apr&egrave;s chaque post :"
+
+#: wordpress-popular-posts.php:396
+msgid "Use content formatting tags"
+msgstr "Utiliser les balises de formatage de contenu."
+
+#: wordpress-popular-posts.php:399
+msgid "Content format:"
+msgstr "Format de contenu :"
+
+#: wordpress-popular-posts.php:505
+msgid "Success! The cache table has been cleared!"
+msgstr "Ok ! La table de cache est bien effac&eacute;e !"
+
+#: wordpress-popular-posts.php:507
+msgid "Error: cache table does not exist."
+msgstr "Erreur : la table de cache n'existe pas."
+
+#: wordpress-popular-posts.php:513
+msgid "Success! All data have been cleared!"
+msgstr "Ok ! Toutes les donn&eacute;es ont &eacute;t&eacute; effac&eacute;es !"
+
+#: wordpress-popular-posts.php:515
+msgid "Error: one or both data tables are missing."
+msgstr "Erreur : une ou deux tables de donn&eacute;es sont manquantes. "
+
+#: wordpress-popular-posts.php:518
+msgid "Invalid action."
+msgstr "Action invalide"
+
+#: wordpress-popular-posts.php:521
+msgid ""
+"Sorry, you do not have enough permissions to do this. Please contact the "
+"site administrator for support."
+msgstr ""
+"D&eacute;sol&eacute;, vous n'avez pas les autorisations suffisantes pour "
+"faire cela. Contactez, s'il vous pla&icirc;t, l'administrateur du site pour "
+"avoir de l'aide."
+
+#: wordpress-popular-posts.php:852
+msgid "Sorry. No data so far."
+msgstr "D&eacute;sol&eacute;. Aucune donn&eacute;e &agrave; ce jour."
+
+#: wordpress-popular-posts.php:928
+msgid "comment(s)"
+msgstr "commentaire(s)"
+
+#: wordpress-popular-posts.php:932
+msgid "view(s)"
+msgstr "vue(s)"
+
+#: wordpress-popular-posts.php:935
+msgid "view(s) per day"
+msgstr "vue(s) par jour"
+
+#: wordpress-popular-posts.php:943
+msgid "by"
+msgstr "par"
+
+#: wordpress-popular-posts.php:947
+msgid "posted on"
+msgstr "post&eacute; le"
+
+#: wordpress-popular-posts.php:1292
+msgid ""
+"Your Wordpress version is too old. Wordpress Popular Posts Plugin requires "
+"at least version 2.8 to function correctly. Please update your blog via "
+"Tools &gt; Upgrade."
+msgstr ""
+"Votre version de Wordpress est trop vielle. Le plugin Wordpress Popular "
+"Posts requiert une version > 2.8 pour fonctionner correctement. Veuillez "
+"mettre &agrave; jour votre blog &agrave; l'aide de l'outil \"Mise &agrave; "
+"jour\"."
+
+#: wordpress-popular-posts.php:1416
+msgid "Wordpress Popular Posts Stats"
+msgstr "Statistiques Wordpress Popular Posts"
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.mo b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.mo
index 84eca1167216df79d19feb224322d23ce089d9cc..8415a07087b5cde8895cf21c5b72b5df2b393895 100644
Binary files a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.mo and b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.mo differ
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.php b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.php
index 69aa8c92ad8b8342bf60d38ca7778aaea0c4ccc3..fe3dfc85a0aec3767489649873eb69be02cafe68 100644
--- a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.php
+++ b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.php
@@ -2,10 +2,10 @@
 /*
 Plugin Name: Wordpress Popular Posts
 Plugin URI: http://wordpress.org/extend/plugins/wordpress-popular-posts
-Description: Showcases your most popular posts to your visitors on your blog's sidebar. Use Wordpress Popular Posts as a widget or place it anywhere on your theme using  <strong>&lt;?php wpp_get_mostpopular(); ?&gt;</strong>
-Version: 2.2.1
+Description: Showcases your most popular posts to your visitors on your blog's sidebar. Use Wordpress Popular Posts as a widget or place it anywhere on your theme using <strong>&lt;?php wpp_get_mostpopular(); ?&gt;</strong>
+Version: 2.3.2
 Author: H&eacute;ctor Cabrera
-Author URI: http://wordpress.org/extend/plugins/wordpress-popular-posts
+Author URI: http://cabrerahector.com
 License: GPL2
 */
 
@@ -26,9 +26,10 @@ function load_wpp() {
  */
 
 if ( !class_exists('WordpressPopularPosts') ) {
+	
 	class WordpressPopularPosts extends WP_Widget {
 		// plugin global variables
-		var $version = "2.2.1";
+		var $version = "2.3.2";
 		var $qTrans = false;
 		var $postRating = false;
 		var $thumb = false;		
@@ -36,13 +37,14 @@ if ( !class_exists('WordpressPopularPosts') ) {
 		var $charset = "UTF-8";
 		var $magicquotes = false;
 		var $default_thumbnail = "";
+		var $user_ops = array();		
 		
 		// constructor
 		function WordpressPopularPosts() {
 			global $wp_version;
 				
 			// widget settings
-			$widget_ops = array( 'classname' => 'popular-posts', 'description' => 'The most Popular Posts on your blog.' );
+			$widget_ops = array( 'classname' => 'popular-posts', 'description' => __('The most Popular Posts on your blog.', 'wordpress-popular-posts') );
 	
 			// widget control settings
 			$control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'wpp' );
@@ -62,10 +64,46 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			// detect PHP magic quotes
 			$this->magicquotes = get_magic_quotes_gpc();
 			
+			// get user options
+			$wpp_settings_def = array(
+				'stats' => array(
+					'order_by' => 'comments',
+					'limit' => 10
+				),
+				'tools' => array(
+					'ajax' => false,
+					'css' => true,
+					'stylesheet' => true,
+					'thumbnail' => array(
+						'source' => 'featured',
+						'field' => ''
+					)
+				)
+			);
+			
+			$this->user_ops = get_option('wpp_settings_config');
+			
+			if (!$this->user_ops) {
+				add_option('wpp_settings_config', $wpp_settings_def);
+				$this->user_ops = $wpp_settings_def;
+			}
+			
 			// print stylesheet
-			add_action('wp_head', array(&$this, 'wpp_print_stylesheet'));
+			if ($this->user_ops['tools']['css']) {
+				add_action('get_header', array(&$this, 'wpp_print_stylesheet'));
+			}
+			
+			/*
+			if ($this->user_ops['tools']['ajax']) {
+				// add ajax update to wp_ajax_ hook
+				add_action('wp_ajax_nopriv_wpp_update', array(&$this, 'wpp_ajax_update'));
+				add_action('wp_head', array(&$this, 'wpp_print_ajax'));
+			} else {
+				// add update action, no ajax
+				add_action('the_content', array(&$this,'wpp_update') );
+			}
+			*/
 			
-			// add ajax update to wp_ajax_ hook
 			add_action('wp_ajax_nopriv_wpp_update', array(&$this, 'wpp_ajax_update'));
 			add_action('wp_head', array(&$this, 'wpp_print_ajax'));
 			
@@ -76,8 +114,8 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			// activate textdomain for translations
 			add_action('init', array(&$this, 'wpp_textdomain'));
 			
-			// activate maintenance page
-			add_action('admin_menu', array(&$this, 'add_wpp_maintenance_page'));
+			// activate admin page		
+			add_action('admin_menu', array(&$this, 'add_wpp_admin'));
 			
 			// cache maintenance schedule
 			register_deactivation_hook(__FILE__, array(&$this, 'wpp_deactivation'));			
@@ -110,34 +148,36 @@ if ( !class_exists('WordpressPopularPosts') ) {
 				add_shortcode('WPP', array(&$this, 'wpp_shortcode'));
 			}
 			
-			// set version
+			// set version and check for upgrades
 			$wpp_ver = get_option('wpp_ver');
 			if (!$wpp_ver) {
 				add_option('wpp_ver', $this->version);
 			} else if (version_compare($wpp_ver, $this->version, '<')) {
+				$this->wpp_upgrade();
 				update_option('wpp_ver', $this->version);
 			}
-			
-			// add stats page
-			add_action('admin_menu', array(&$this, 'wpp_stats'));
 		}
 
 		// builds Wordpress Popular Posts' widgets
 		function widget($args, $instance) {
+			//$args['widget_id'];
 			extract($args);
 			echo "<!-- Wordpress Popular Posts Plugin v". $this->version ." [W] [".$instance['range']."]". (($instance['markup']['custom_html']) ? ' [custom]' : ' [regular]') ." -->"."\n";
 			echo $before_widget . "\n";
 			
 			// has user set a title?
 			if ($instance['title'] != '') {
+				
+				$title = apply_filters( 'widget_title', $instance['title'] );
+				
 				if ($instance['markup']['custom_html'] && $instance['markup']['title-start'] != "" && $instance['markup']['title-end'] != "" ) {
-					echo htmlspecialchars_decode($instance['markup']['title-start'], ENT_QUOTES) . htmlspecialchars_decode($instance['title'], ENT_QUOTES) . htmlspecialchars_decode($instance['markup']['title-end'], ENT_QUOTES);
+					echo htmlspecialchars_decode($instance['markup']['title-start'], ENT_QUOTES) . $title . htmlspecialchars_decode($instance['markup']['title-end'], ENT_QUOTES);
 				} else {
-					echo $before_title . htmlspecialchars_decode($instance['title'], ENT_QUOTES) . $after_title;
+					echo $before_title . $title . $after_title;
 				}
 			}
 			
-			echo $this->get_popular_posts($instance, false);			
+			echo $this->get_popular_posts($instance);			
 			echo $after_widget . "\n";
 			echo "<!-- End Wordpress Popular Posts Plugin v". $this->version ." -->"."\n";
 		}
@@ -147,25 +187,41 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			
 			$instance = $old_instance;
 			
-			//$instance['title'] = htmlspecialchars( stripslashes(strip_tags( $new_instance['title'] )), ENT_QUOTES, 'UTF-8', FALSE );
 			$instance['title'] = ($this->magicquotes) ? htmlspecialchars( stripslashes(strip_tags( $new_instance['title'] )), ENT_QUOTES ) : htmlspecialchars( strip_tags( $new_instance['title'] ), ENT_QUOTES );
 			$instance['limit'] = is_numeric($new_instance['limit']) ? $new_instance['limit'] : 10;
 			$instance['range'] = $new_instance['range'];
 			$instance['order_by'] = $new_instance['order_by'];
-			$instance['pages'] = $new_instance['pages'];
+			
+			// FILTERS
+			if ($new_instance['post_type'] == "") { // user did not define the custom post type name, so we fall back to default
+				$instance['post_type'] = 'post,page';
+			} else {
+				$instance['post_type'] = $new_instance['post_type'];
+			}
+			
+			$instance['cat'] = implode(",", array_filter(explode(",", preg_replace( '|[^0-9,-]|', '', $new_instance['cat'] ))));
+			$instance['author'] = implode(",", array_filter(explode(",", preg_replace( '|[^0-9,]|', '', $new_instance['uid'] ))));			
+
 			$instance['shorten_title']['active'] = $new_instance['shorten_title-active'];
 			$instance['shorten_title']['length'] = is_numeric($new_instance['shorten_title-length']) ? $new_instance['shorten_title-length'] : 25;
 			$instance['post-excerpt']['active'] = $new_instance['post-excerpt-active'];
 			$instance['post-excerpt']['length'] = is_numeric($new_instance['post-excerpt-length']) ? $new_instance['post-excerpt-length'] : 55;
-			$instance['post-excerpt']['keep_format'] = $new_instance['post-excerpt-format'];
-			$instance['exclude-cats']['active'] = $new_instance['exclude-cats'];
-			$instance['exclude-cats']['cats'] = empty($new_instance['excluded']) ? '' : (ctype_digit(str_replace(",", "", $new_instance['excluded']))) ? $new_instance['excluded'] : '';
+			$instance['post-excerpt']['keep_format'] = $new_instance['post-excerpt-format'];			
 			$instance['thumbnail']['thumb_selection'] = "usergenerated";
 			
 			if ($this->thumb) { // can create thumbnails
-				$instance['thumbnail']['active'] = $new_instance['thumbnail-active'];				
-				$instance['thumbnail']['width'] = is_numeric($new_instance['thumbnail-width']) ? $new_instance['thumbnail-width'] : 15;
-				$instance['thumbnail']['height'] = is_numeric($new_instance['thumbnail-height']) ? $new_instance['thumbnail-height'] : 15;
+				$instance['thumbnail']['active'] = $new_instance['thumbnail-active'];
+				
+				if (is_numeric($new_instance['thumbnail-width']) && is_numeric($new_instance['thumbnail-height'])) {
+					if (($instance['thumbnail']['width'] != $new_instance['thumbnail-width']) || ($instance['thumbnail']['height'] != $new_instance['thumbnail-height'])) {
+						$instance['thumbnail']['width'] = $new_instance['thumbnail-width'];
+						$instance['thumbnail']['height'] = $new_instance['thumbnail-height'];						
+					}
+				} else {
+					$instance['thumbnail']['width'] = 15;
+					$instance['thumbnail']['height'] = 15;
+				}
+				
 			} else { // cannot create thumbnails
 				$instance['thumbnail']['active'] = false;
 				$instance['thumbnail']['width'] = 15;
@@ -186,20 +242,24 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			$instance['markup']['title-start'] = empty($new_instance['title-start']) ? '' : htmlspecialchars( $new_instance['title-start'], ENT_QUOTES );
 			$instance['markup']['title-end'] = empty($new_instance['title-end']) ? '' : htmlspecialchars( $new_instance['title-end'], ENT_QUOTES );
 			$instance['markup']['pattern']['active'] = $new_instance['pattern_active'];
-			$instance['markup']['pattern']['form'] = empty($new_instance['pattern_form']) ? '{image} {title}: {summary} {stats}' : strip_tags( $new_instance['pattern_form'] );
+			//$instance['markup']['pattern']['form'] = empty($new_instance['pattern_form']) ? '{image} {title}: {summary} {stats}' : strip_tags( $new_instance['pattern_form'] );
+			$instance['markup']['pattern']['form'] = empty($new_instance['pattern_form']) ? '{image} {title}: {summary} {stats}' : $new_instance['pattern_form'];
 	
 			return $instance;
 		}
 
 		// widget's form
 		function form($instance) {
+			
 			// set default values			
 			$defaults = array(
 				'title' => __('Popular Posts', 'wordpress-popular-posts'),
 				'limit' => 10,
 				'range' => 'daily',
 				'order_by' => 'comments',
-				'pages' => true,
+				'post_type' => 'post,page',
+				'author' => '',
+				'cat' => '',
 				'shorten_title' => array(
 					'active' => false,
 					'length' => 25,
@@ -208,11 +268,7 @@ if ( !class_exists('WordpressPopularPosts') ) {
 				'post-excerpt' => array(
 					'active' => false,
 					'length' => 55
-				),
-				'exclude-cats' => array(
-					'active' => false,
-					'cats' => ''
-				),
+				),				
 				'thumbnail' => array(
 					'active' => false,
 					'width' => 15,
@@ -248,11 +304,11 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			
 			// form
 			?>
-                        <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'wordpress-popular-posts'); ?></label>
+            <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'wordpress-popular-posts'); ?></label>  <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small> <br />
             <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" class="widefat" /></p>
-            <p><label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e('Show up to:', 'wordpress-popular-posts'); ?></label><br />
+            <p><label for="<?php echo $this->get_field_id( 'limit' ); ?>"><?php _e('Show up to:', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
             <input id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" value="<?php echo $instance['limit']; ?>"  class="widefat" style="width:50px!important" /> <?php _e('posts', 'wordpress-popular-posts'); ?></p>
-            <p><label for="<?php echo $this->get_field_id( 'range' ); ?>"><?php _e('Time Range:', 'wordpress-popular-posts'); ?></label>
+            <p><label for="<?php echo $this->get_field_id( 'range' ); ?>"><?php _e('Time Range:', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
             <select id="<?php echo $this->get_field_id( 'range' ); ?>" name="<?php echo $this->get_field_name( 'range' ); ?>" class="widefat">
             	<option value="daily" <?php if ( 'daily' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('Last 24 hours', 'wordpress-popular-posts'); ?></option>
                 <option value="weekly" <?php if ( 'weekly' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('Last 7 days', 'wordpress-popular-posts'); ?></option>
@@ -260,42 +316,49 @@ if ( !class_exists('WordpressPopularPosts') ) {
                 <option value="all" <?php if ( 'all' == $instance['range'] ) echo 'selected="selected"'; ?>><?php _e('All-time', 'wordpress-popular-posts'); ?></option>
             </select>
             </p>
-            <p><label for="<?php echo $this->get_field_id( 'order_by' ); ?>"><?php _e('Sort posts by:', 'wordpress-popular-posts'); ?></label>
+            <p><label for="<?php echo $this->get_field_id( 'order_by' ); ?>"><?php _e('Sort posts by:', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small> <br />
             <select id="<?php echo $this->get_field_id( 'order_by' ); ?>" name="<?php echo $this->get_field_name( 'order_by' ); ?>" class="widefat">
             	<option value="comments" <?php if ( 'comments' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Comments', 'wordpress-popular-posts'); ?></option>
                 <option value="views" <?php if ( 'views' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Total views', 'wordpress-popular-posts'); ?></option>
                 <option value="avg" <?php if ( 'avg' == $instance['order_by'] ) echo 'selected="selected"'; ?>><?php _e('Avg. daily views', 'wordpress-popular-posts'); ?></option>
             </select>
             </p>
-            <input type="checkbox" class="checkbox" <?php echo ($instance['pages']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'pages' ); ?>" name="<?php echo $this->get_field_name( 'pages' ); ?>" /> <label for="<?php echo $this->get_field_id( 'pages' ); ?>"><?php _e('Include pages', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            <?php if ($this->postRating) : ?>
-            <input type="checkbox" class="checkbox" <?php echo ($instance['rating']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'rating' ); ?>" name="<?php echo $this->get_field_name( 'rating' ); ?>" /> <label for="<?php echo $this->get_field_id( 'rating' ); ?>"><?php _e('Display post rating', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            <?php endif; ?>
-            <input type="checkbox" class="checkbox" <?php echo ($instance['shorten_title']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>"><?php _e('Shorten title output', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            <?php if ($instance['shorten_title']['active']) : ?>
-            <label for="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>"><?php _e('Shorten title to', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-length' ); ?>" value="<?php echo $instance['shorten_title']['length']; ?>" class="widefat" style="width:50px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label><br /><br />
-			<?php endif; ?>
-            <input type="checkbox" class="checkbox" <?php echo ($instance['post-excerpt']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>"><?php _e('Display post excerpt', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            <?php if ($instance['post-excerpt']['active']) : ?>
-            <fieldset class="widefat">
-                <legend><?php _e('Excerpt Properties', 'wordpress-popular-posts'); ?></legend>
-            	&nbsp;&nbsp;<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-format' ); ?>" <?php echo ($instance['post-excerpt']['keep_format']) ? 'checked="checked"' : ''; ?> /> <label for="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>"><?php _e('Keep text format and links', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            	&nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>"><?php _e('Excerpt length:', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-length' ); ?>" value="<?php echo $instance['post-excerpt']['length']; ?>" class="widefat" style="width:30px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label>
-			</fieldset>
-			<br />
-            <?php endif; ?>
-            <input type="checkbox" class="checkbox" <?php echo ($instance['exclude-cats']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'exclude-cats' ); ?>" name="<?php echo $this->get_field_name( 'exclude-cats' ); ?>" /> <label for="<?php echo $this->get_field_id( 'exclude-cats' ); ?>"><?php _e('Exclude categories', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
-            <?php if ($instance['exclude-cats']['active']) : ?>
+            
+            <fieldset style="width:214px; padding:5px;"  class="widefat">
+                <legend><?php _e('Posts settings', 'wordpress-popular-posts'); ?></legend>
+				<?php if ($this->postRating) : ?>
+                <input type="checkbox" class="checkbox" <?php echo ($instance['rating']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'rating' ); ?>" name="<?php echo $this->get_field_name( 'rating' ); ?>" /> <label for="<?php echo $this->get_field_id( 'rating' ); ?>"><?php _e('Display post rating', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
+                <?php endif; ?>
+                <input type="checkbox" class="checkbox" <?php echo ($instance['shorten_title']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'shorten_title-active' ); ?>"><?php _e('Shorten title', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
+                <?php if ($instance['shorten_title']['active']) : ?>
+                <label for="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>"><?php _e('Shorten title to', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'shorten_title-length' ); ?>" name="<?php echo $this->get_field_name( 'shorten_title-length' ); ?>" value="<?php echo $instance['shorten_title']['length']; ?>" class="widefat" style="width:50px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label><br /><br />
+                <?php endif; ?>
+                <input type="checkbox" class="checkbox" <?php echo ($instance['post-excerpt']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'post-excerpt-active' ); ?>"><?php _e('Display post excerpt', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
+                <?php if ($instance['post-excerpt']['active']) : ?>
+                <fieldset class="widefat">
+                    <legend><?php _e('Excerpt Properties', 'wordpress-popular-posts'); ?></legend>
+                    &nbsp;&nbsp;<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-format' ); ?>" <?php echo ($instance['post-excerpt']['keep_format']) ? 'checked="checked"' : ''; ?> /> <label for="<?php echo $this->get_field_id( 'post-excerpt-format' ); ?>"><?php _e('Keep text format and links', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
+                    &nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>"><?php _e('Excerpt length:', 'wordpress-popular-posts'); ?> <input id="<?php echo $this->get_field_id( 'post-excerpt-length' ); ?>" name="<?php echo $this->get_field_name( 'post-excerpt-length' ); ?>" value="<?php echo $instance['post-excerpt']['length']; ?>" class="widefat" style="width:30px!important" /> <?php _e('characters', 'wordpress-popular-posts'); ?></label>
+                </fieldset>
+                <br />
+                <?php endif; ?>                
+            </fieldset>
+            <br />
+            
             <fieldset class="widefat">
-                <legend><?php _e('Categories to exclude', 'wordpress-popular-posts'); ?></legend>
-                &nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'excluded' ); ?>"><?php _e('ID(s) (comma separated, no spaces):', 'wordpress-popular-posts'); ?></label><br />&nbsp;&nbsp;<input id="<?php echo $this->get_field_id( 'excluded' ); ?>" name="<?php echo $this->get_field_name( 'excluded' ); ?>" value="<?php echo $instance['exclude-cats']['cats']; ?>" class="widefat" style="width:150px" /><br /><br />
-            </fieldset>            
-            <?php endif; ?>
+                <legend><?php _e('Filters:', 'wordpress-popular-posts'); ?> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small></legend><br />
+                &nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'post_type' ); ?>"><?php _e('Post type(s):', 'wordpress-popular-posts'); ?></label><br />
+                &nbsp;&nbsp;<input id="<?php echo $this->get_field_id( 'post_type' ); ?>" name="<?php echo $this->get_field_name( 'post_type' ); ?>" value="<?php echo $instance['post_type']; ?>" class="widefat" style="width:150px" /><br /><br />
+                &nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'cat' ); ?>"><?php _e('Category(ies) ID(s):', 'wordpress-popular-posts'); ?></label><br />
+                &nbsp;&nbsp;<input id="<?php echo $this->get_field_id( 'cat' ); ?>" name="<?php echo $this->get_field_name( 'cat' ); ?>" value="<?php echo $instance['cat']; ?>" class="widefat" style="width:150px" /><br /><br />
+                &nbsp;&nbsp;<label for="<?php echo $this->get_field_id( 'uid' ); ?>"><?php _e('Author(s) ID(s):', 'wordpress-popular-posts'); ?></label><br />
+                &nbsp;&nbsp;<input id="<?php echo $this->get_field_id( 'uid' ); ?>" name="<?php echo $this->get_field_name( 'uid' ); ?>" value="<?php echo $instance['author']; ?>" class="widefat" style="width:150px" /><br /><br />
+            </fieldset>
             <br />
-			
+            
 			<fieldset style="width:214px; padding:5px;"  class="widefat">
                 <legend><?php _e('Thumbnail settings', 'wordpress-popular-posts'); ?></legend>
-				<input type="checkbox" class="checkbox" <?php echo ($instance['thumbnail']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>"><?php _e('Display post thumbnail', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
+				<input type="checkbox" class="checkbox" <?php echo ($instance['thumbnail']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'thumbnail-active' ); ?>"><?php _e('Display post thumbnail', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
 				<?php if($instance['thumbnail']['active']) : ?>
 				<label for="<?php echo $this->get_field_id( 'thumbnail-width' ); ?>"><?php _e('Width:', 'wordpress-popular-posts'); ?></label> 
 				<input id="<?php echo $this->get_field_id( 'thumbnail-width' ); ?>" name="<?php echo $this->get_field_name( 'thumbnail-width' ); ?>" value="<?php echo $instance['thumbnail']['width']; ?>"  class="widefat" style="width:30px!important" <?php echo ($this->thumb) ? '' : 'disabled="disabled"' ?> /> <?php _e('px', 'wordpress-popular-posts'); ?> <br />
@@ -307,10 +370,10 @@ if ( !class_exists('WordpressPopularPosts') ) {
             <br />
             <fieldset style="width:214px; padding:5px;"  class="widefat">
                 <legend><?php _e('Stats Tag settings', 'wordpress-popular-posts'); ?></legend>
-                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['comment_count']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'comment_count' ); ?>" name="<?php echo $this->get_field_name( 'comment_count' ); ?>" /> <label for="<?php echo $this->get_field_id( 'comment_count' ); ?>"><?php _e('Display comment count', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />                
-                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['views']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'views' ); ?>" name="<?php echo $this->get_field_name( 'views' ); ?>" /> <label for="<?php echo $this->get_field_id( 'views' ); ?>"><?php _e('Display views', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />            
-                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['author']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" /> <label for="<?php echo $this->get_field_id( 'author' ); ?>"><?php _e('Display author', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />            
-                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['date']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'date' ); ?>" name="<?php echo $this->get_field_name( 'date' ); ?>" /> <label for="<?php echo $this->get_field_id( 'date' ); ?>"><?php _e('Display date', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small>
+                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['comment_count']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'comment_count' ); ?>" name="<?php echo $this->get_field_name( 'comment_count' ); ?>" /> <label for="<?php echo $this->get_field_id( 'comment_count' ); ?>"><?php _e('Display comment count', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />                
+                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['views']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'views' ); ?>" name="<?php echo $this->get_field_name( 'views' ); ?>" /> <label for="<?php echo $this->get_field_id( 'views' ); ?>"><?php _e('Display views', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />            
+                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['author']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" /> <label for="<?php echo $this->get_field_id( 'author' ); ?>"><?php _e('Display author', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />            
+                <input type="checkbox" class="checkbox" <?php echo ($instance['stats_tag']['date']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'date' ); ?>" name="<?php echo $this->get_field_name( 'date' ); ?>" /> <label for="<?php echo $this->get_field_id( 'date' ); ?>"><?php _e('Display date', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small>
 				<?php if ($instance['stats_tag']['date']['active']) : ?>                	
                 	<fieldset class="widefat">
                     	<legend><?php _e('Date Format', 'wordpress-popular-posts'); ?></legend>
@@ -325,7 +388,7 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			
             <fieldset style="width:214px; padding:5px;"  class="widefat">
                 <legend><?php _e('HTML Markup settings', 'wordpress-popular-posts'); ?></legend>
-                <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['custom_html']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'custom_html' ); ?>" name="<?php echo $this->get_field_name( 'custom_html' ); ?>" /> <label for="<?php echo $this->get_field_id( 'custom_html' ); ?>"><?php _e('Use custom HTML Markup', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
+                <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['custom_html']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'custom_html' ); ?>" name="<?php echo $this->get_field_name( 'custom_html' ); ?>" /> <label for="<?php echo $this->get_field_id( 'custom_html' ); ?>"><?php _e('Use custom HTML Markup', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
                 <?php if ($instance['markup']['custom_html']) : ?>
                 <br />
                 <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'title-start' ); ?>"><?php _e('Before / after title:', 'wordpress-popular-posts'); ?></label> <br />
@@ -336,33 +399,38 @@ if ( !class_exists('WordpressPopularPosts') ) {
                 <input type="text" id="<?php echo $this->get_field_id( 'post-start' ); ?>" name="<?php echo $this->get_field_name( 'post-start' ); ?>" value="<?php echo $instance['markup']['post-start']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /> <input type="text" id="<?php echo $this->get_field_id( 'post-end' ); ?>" name="<?php echo $this->get_field_name( 'post-end' ); ?>" value="<?php echo $instance['markup']['post-end']; ?>" class="widefat" style="width:80px!important" <?php echo ($instance['markup']['custom_html']) ? '' : 'disabled="disabled"' ?> /></p>
                 <hr />
                 <?php endif; ?>
-                <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['pattern']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'pattern_active' ); ?>" name="<?php echo $this->get_field_name( 'pattern_active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'pattern_active' ); ?>"><?php _e('Use content formatting tags', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('url'); ?>/wp-admin/options-general.php?page=wordpress-popular-posts/wordpress-popular-posts.php">?</a>]</small><br />
+                <input type="checkbox" class="checkbox" <?php echo ($instance['markup']['pattern']['active']) ? 'checked="checked"' : ''; ?> id="<?php echo $this->get_field_id( 'pattern_active' ); ?>" name="<?php echo $this->get_field_name( 'pattern_active' ); ?>" /> <label for="<?php echo $this->get_field_id( 'pattern_active' ); ?>"><?php _e('Use content formatting tags', 'wordpress-popular-posts'); ?></label> <small>[<a href="<?php echo bloginfo('wpurl'); ?>/wp-admin/options-general.php?page=wpp_admin" title="<?php _e('What is this?', 'wordpress-popular-posts'); ?>">?</a>]</small><br />
                 <?php if ($instance['markup']['pattern']['active']) : ?>
                 <br />
                 <p style="font-size:11px"><label for="<?php echo $this->get_field_id( 'pattern_form' ); ?>"><?php _e('Content format:', 'wordpress-popular-posts'); ?></label>
-                <input type="text" id="<?php echo $this->get_field_id( 'pattern_form' ); ?>" name="<?php echo $this->get_field_name( 'pattern_form' ); ?>" value="<?php echo $instance['markup']['pattern']['form']; ?>" style="width:204px" <?php echo ($instance['markup']['pattern']['active']) ? '' : 'disabled="disabled"' ?> /></p>
+                <input type="text" id="<?php echo $this->get_field_id( 'pattern_form' ); ?>" name="<?php echo $this->get_field_name( 'pattern_form' ); ?>" value="<?php echo htmlspecialchars($instance['markup']['pattern']['form'], ENT_QUOTES); ?>" style="width:204px" <?php echo ($instance['markup']['pattern']['active']) ? '' : 'disabled="disabled"' ?> /></p>
                 <?php endif; ?>
             </fieldset>
             <?php
 		}
 		
 		// RRR Added to get local time as per WP settings		
-		function curdate() {
-			//return "'".gmdate( 'Y-m-d', ( time() + ( get_option( 'gmt_offset' ) * 3600 ) ))."'";
+		function curdate() {			
 			return gmdate( 'Y-m-d', ( time() + ( get_option( 'gmt_offset' ) * 3600 ) ));
 		}
 		
-		function now() {		
-			//return "'".current_time('mysql')."'";
+		function now() {
 			return current_time('mysql');
 		}
 		
-		// updates popular posts data table
+		// Function to calculate script execution time.
+		function microtime_float() {
+			list( $msec, $sec ) = explode( ' ', microtime() );
+			$microtime = (float) $msec + (float) $sec;
+			return $microtime;
+		}
+		
+		// updates popular posts data table via ajax
 		function wpp_ajax_update() {		
 			$nonce = $_POST['token'];
 			
 			// is this a valid request?
-			if (! wp_verify_nonce($nonce, 'wpp-token') ) die("Oops!");
+			if (! wp_verify_nonce($nonce, 'wpp-token') ) die("Invalid token");
 			
 			if (is_numeric($_POST['id']) && (intval($_POST['id']) == floatval($_POST['id'])) && ($_POST['id'] != '')) {
 				$id = $_POST['id'];
@@ -370,36 +438,67 @@ if ( !class_exists('WordpressPopularPosts') ) {
 				die("Invalid ID");
 			}
 			
-			// if we got an ID, let's update the data table
-						
+			// if we got an ID, let's update the data table						
 			global $wpdb;
 			
 			$wpdb->show_errors();
 			
-			$table = $wpdb->prefix . 'popularpostsdata';
+			$table = $wpdb->prefix . 'popularpostsdata';			
+			$exec_time = 0;
+			
 			
 			// update popularpostsdata table
-			$exists = $wpdb->get_results("SELECT postid FROM $table WHERE postid = '$id'");							
-			if ($exists) {
-				$result = $wpdb->query("UPDATE $table SET last_viewed = '".$this->now()."', pageviews = pageviews + 1 WHERE postid = '$id'");
-			} else {
-				$result = $wpdb->query("INSERT INTO $table (postid, day, last_viewed) VALUES ('".$id."', '".$this->now()."', '".$this->now()."')" );
-			}
+			$start = $this->microtime_float();
+			$result = $wpdb->query("INSERT INTO {$table} (postid, day, last_viewed) VALUES ({$id}, '{$this->now()}', '{$this->now()}') ON DUPLICATE KEY UPDATE last_viewed = '{$this->now()}', pageviews = pageviews + 1;");
+			$end = $this->microtime_float();
 			
+			$exec_time += round($end - $start, 6);			
+						
 			// update popularpostsdatacache table
-			$isincache = $wpdb->get_results("SELECT id FROM ".$table."cache WHERE id = '" . $id ."' AND day BETWEEN '".$this->curdate()." 00:00:00' AND '".$this->curdate()." 23:59:59';");
-			if ($isincache) {
-				$result2 = $wpdb->query("UPDATE ".$table."cache SET pageviews = pageviews + 1, day = '".$this->now()."' WHERE id = '". $id . "' AND day BETWEEN '".$this->curdate()." 00:00:00' AND '".$this->curdate()." 23:59:59';");
-			} else {
-				$result2 = $wpdb->query("INSERT INTO ".$table."cache (id, day) VALUES ('".$id."', '".$this->now()."')");
-			}
+			$start = $this->microtime_float();
+			
+			$result2 = $wpdb->query("INSERT INTO {$table}cache (id, day, day_no_time) VALUES ({$id}, '{$this->now()}', '{$this->curdate()}') ON DUPLICATE KEY UPDATE pageviews = pageviews + 1, day = '{$this->now()}', day_no_time = '{$this->curdate()}';");
 			
-			if (($result == 1) && ($result2 == 1)) {
-				die("OK");
+			$exec_time += round($end - $start, 6);
+			
+			if ($result && $result2) {
+				die("OK. Execution time: " . $exec_time . " seconds");
 			} else {
 				die($wpdb->print_error);
-			}		
+			}
+		}
+		
+		// Updates popular posts data table on post/page view
+		// Since 2.3.0
+		function wpp_update($content) {
+			if ( (is_single() || is_page()) && !is_user_logged_in() && !is_front_page() ) {
+				
+				global $wpdb, $wp_query;
+				
+				$wpdb->show_errors();
+				
+				$id = $wp_query->post->ID; // get post ID
+				$table = $wpdb->prefix . 'popularpostsdata';
+				
+				// update popularpostsdata table
+				
+				
+				$result = $wpdb->query("INSERT INTO {$table} (postid, day, last_viewed) VALUES ({$id}, '{$this->now()}', '{$this->now()}') ON DUPLICATE KEY UPDATE last_viewed = '{$this->now()}', pageviews = pageviews + 1;");
+				
+				$result2 = $wpdb->query("INSERT INTO {$table}cache (id, day, day_no_time) VALUES ({$id}, '{$this->now()}', '{$this->curdate()}') ON DUPLICATE KEY UPDATE pageviews = pageviews + 1, day = '{$this->now()}', day_no_time = '{$this->curdate()}';");
+				
+				
+				echo "INSERT INTO {$table} (postid, day, last_viewed) VALUES ({$id}, '{$this->now()}', '{$this->now()}') ON DUPLICATE KEY UPDATE last_viewed = '{$this->now()}', pageviews = pageviews + 1;" . "<br />";
+				
+				echo "INSERT INTO {$table}cache (id, day, day_no_time) VALUES ({$id}, '{$this->now()}', '{$this->curdate()}') ON DUPLICATE KEY UPDATE pageviews = pageviews + 1, day = '{$this->now()}', day_no_time = '{$this->curdate()}';" . "<br />";
+				
+				if (!$result || !$result2) {
+					die($wpdb->print_error);
+				}
+				
+			}
 			
+			return $content;
 		}
 		
 		// clears Wordpress Popular Posts' data
@@ -442,6 +541,9 @@ if ( !class_exists('WordpressPopularPosts') ) {
 		// database install
 		function wpp_install() {
 			global $wpdb;
+			
+			$wpdb->show_errors();
+			
 			$sql = "";
 			$charset_collate = "";
 			
@@ -455,42 +557,144 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			
 			// does popularpostsdata table exists?
 			if ( $wpdb->get_var("SHOW TABLES LIKE '$table'") != $table ) { // fresh setup
-				// create tables popularpostsdata and popularpostsdatacache
-				$sql = "CREATE TABLE " . $table . " ( UNIQUE KEY id (postid), postid int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', last_viewed datetime NOT NULL default '0000-00-00 00:00:00', pageviews int(10) default 1 ) $charset_collate; CREATE TABLE " . $table ."cache ( UNIQUE KEY id (id, day), id int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', pageviews int(10) default 1 ) $charset_collate;";
+				$sql = "CREATE TABLE " . $table . " ( UNIQUE KEY id (postid), postid int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', last_viewed datetime NOT NULL default '0000-00-00 00:00:00', pageviews int(10) default 1 ) $charset_collate; CREATE TABLE " . $table ."cache ( UNIQUE KEY compositeID (id, day_no_time), id int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', day_no_time date NOT NULL default '0000-00-00', pageviews int(10) default 1 ) $charset_collate;";
 			} else {
+				
+				// check if cahe table is missing
 				$cache = $table . "cache";
-				if ( $wpdb->get_var("SHOW TABLES LIKE '$cache'") != $cache ) {
-					// someone is upgrading from version 1.5.x
-					$sql = "CREATE TABLE " . $table ."cache ( UNIQUE KEY id (id, day), id int(10) NOT NULL, day datetime NOT NULL, pageviews int(10) default 1 ) $charset_collate;";
-				}
 				
-				$dateField = $wpdb->get_results("SHOW FIELDS FROM " . $table ."cache", ARRAY_A);
-				if ($dateField[1]['Type'] != 'datetime') $wpdb->query("ALTER TABLE ". $table ."cache CHANGE day day datetime NOT NULL default '0000-00-00 00:00:00';");
+				if ( $wpdb->get_var("SHOW TABLES LIKE '$cache'") != $cache ) {									
+					$sql = "CREATE TABLE $cache ( UNIQUE KEY compositeID (id, day_no_time), id int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', day_no_time date NOT NULL default '0000-00-00', pageviews int(10) default 1 ) $charset_collate;";
+				} else { // check if any column is missing					
+					
+					// get table columns
+					$cacheFields = $wpdb->get_results("SHOW FIELDS FROM $cache", ARRAY_A);
+					
+					$alter_day = true;
+					$add_daynotime = true;
+					
+					foreach ($cacheFields as $column) {
+						// check if day column is type datetime
+						if ($column['Field'] == 'day') {
+							if ($column['Type'] == 'datetime') {
+								$alter_day = false;
+							}
+						}
+						
+						// check if day_no_time field exists
+						if ($column['Field'] == 'day_no_time') {
+							$add_daynotime = false;
+						}
+					}
+					
+					if ($alter_day) { // day column is not datimetime, so change it
+						$wpdb->query("ALTER TABLE $cache CHANGE day day datetime NOT NULL default '0000-00-00 00:00:00';");
+					}
+					
+					if ($add_daynotime) { // day_no_time column is missing, add it
+						$wpdb->query("ALTER TABLE $cache ADD day_no_time date NOT NULL default '0000-00-00';");
+						$wpdb->query("UPDATE $cache SET day_no_time = day;");
+					}
+					
+					$cacheIndex = $wpdb->get_results("SHOW INDEX FROM $cache", ARRAY_A);					
+					if ($cacheIndex[0]['Key_name'] == "id") { // if index is id-day change to id-day_no_time
+						$wpdb->query("ALTER TABLE $cache DROP INDEX id, ADD UNIQUE KEY compositeID (id, day_no_time);");
+					}
+					
+					/*
+					ALTER TABLE wp_popularpostsdatacache DROP INDEX id, ADD UNIQUE KEY compositeID (id, day_no_time);
+					*/
+
+				}
 			}
 			
 			dbDelta($sql);
 		}
 		
-		// prints ajax script to theme's header
-		function wpp_print_ajax() {		
-			// let's add jQuery
-			wp_print_scripts('jquery');
+		// Checks for stuff that needs updating on plugin reactivation
+		// Since 2.3.1
+		function wpp_upgrade() {
+			
+			global $wpdb;
+			
+			$wpdb->show_errors();
+			
+			$sql = "";
+			$charset_collate = "";
+			
+			require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
+			
+			if ( ! empty($wpdb->charset) ) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
+			if ( ! empty($wpdb->collate) ) $charset_collate .= " COLLATE $wpdb->collate";
+			
+			// set table name
+			$data = $wpdb->prefix . "popularpostsdata";
+			$cache = $data . "cache";
+			
+			// if the cache table is missing, create it
+			if ( $wpdb->get_var("SHOW TABLES LIKE '$cache'") != $cache ) {									
+				$sql = "CREATE TABLE $cache ( UNIQUE KEY compositeID (id, day_no_time), id int(10) NOT NULL, day datetime NOT NULL default '0000-00-00 00:00:00', day_no_time date NOT NULL default '0000-00-00', pageviews int(10) default 1 ) $charset_collate;";
+			} else { // check if any column is missing					
+				
+				// get table columns
+				$cacheFields = $wpdb->get_results("SHOW FIELDS FROM $cache", ARRAY_A);
+				
+				$alter_day = true;
+				$add_daynotime = true;
+				
+				foreach ($cacheFields as $column) {
+					// check if day column is type datetime
+					if ($column['Field'] == 'day') {
+						if ($column['Type'] == 'datetime') {
+							$alter_day = false;
+						}
+					}
+					
+					// check if day_no_time field exists
+					if ($column['Field'] == 'day_no_time') {
+						$add_daynotime = false;
+					}
+				}
+				
+				if ($alter_day) { // day column is not datimetime, so change it
+					$wpdb->query("ALTER TABLE $cache CHANGE day day datetime NOT NULL default '0000-00-00 00:00:00';");
+				}
+				
+				if ($add_daynotime) { // day_no_time column is missing, add it
+					$wpdb->query("ALTER TABLE $cache ADD day_no_time date NOT NULL default '0000-00-00';");
+					$wpdb->query("UPDATE $cache SET day_no_time = day;");
+				}
 				
-			// create security token
-			$nonce = wp_create_nonce('wpp-token');
+				$cacheIndex = $wpdb->get_results("SHOW INDEX FROM $cache", ARRAY_A);					
+				if ($cacheIndex[0]['Key_name'] == "id") { // if index is id-day change to id-day_no_time
+					$wpdb->query("ALTER TABLE $cache DROP INDEX id, ADD UNIQUE KEY compositeID (id, day_no_time);");
+				}
+			}
 			
-			// get current post's ID
-			global $wp_query;
-			wp_reset_query();
+			dbDelta($sql);
 			
+		}
+		
+		// prints ajax script to theme's header
+		function wpp_print_ajax() {			
 			// if we're on a page or post, load the script
-			if ( (is_single() || is_page()) && !is_user_logged_in() ) {
+			if ( (is_single() || is_page()) && !is_user_logged_in() && !is_front_page() ) {			
+				// let's add jQuery
+				wp_print_scripts('jquery');
+					
+				// create security token
+				$nonce = wp_create_nonce('wpp-token');
+				
+				// get current post's ID
+				global $wp_query;
+				wp_reset_query();
+			
 				$id = $wp_query->post->ID;
 			?>
 <!-- Wordpress Popular Posts v<?php echo $this->version; ?> -->
-<script type="text/javascript" charset="utf-8">
+<script type="text/javascript">
     /* <![CDATA[ */				
-	jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', {action: 'wpp_update', token: '<?php echo $nonce; ?>', id: <?php echo $id; ?>});
+	jQuery.post('<?php echo admin_url('admin-ajax.php'); ?>', {action: 'wpp_update', token: '<?php echo $nonce; ?>', id: <?php echo $id; ?>}, function(data){/*alert(data);*/});
     /* ]]> */
 </script>
 <!-- End Wordpress Popular Posts v<?php echo $this->version; ?> -->
@@ -499,269 +703,441 @@ if ( !class_exists('WordpressPopularPosts') ) {
 		}		
 		
 		// prints popular posts
-		function get_popular_posts($instance, $echo = true) {		
+		function get_popular_posts($instance, $return = false) {
+			
+			// set default values			
+			$defaults = array(
+				'title' => __('Popular Posts', 'wordpress-popular-posts'),
+				'limit' => 10,
+				'range' => 'daily',
+				'order_by' => 'comments',
+				'post_type' => 'post,page',
+				'author' => '',
+				'cat' => '',
+				'shorten_title' => array(
+					'active' => false,
+					'length' => 25,
+					'keep_format' => false
+				),
+				'post-excerpt' => array(
+					'active' => false,
+					'length' => 55
+				),				
+				'thumbnail' => array(
+					'active' => false,
+					'width' => 15,
+					'height' => 15
+				),
+				'rating' => false,
+				'stats_tag' => array(
+					'comment_count' => true,
+					'views' => false,
+					'author' => false,
+					'date' => array(
+						'active' => false,
+						'format' => 'F j, Y'
+					)
+				),
+				'markup' => array(
+					'custom_html' => false,
+					'wpp-start' => '&lt;ul&gt;',
+					'wpp-end' => '&lt;/ul&gt;',
+					'post-start' => '&lt;li&gt;',
+					'post-end' => '&lt;/li&gt;',
+					'title-start' => '&lt;h2&gt;',
+					'title-end' => '&lt;/h2&gt;',
+					'pattern' => array(
+						'active' => false,
+						'form' => '{image} {title}: {summary} {stats}'
+					)
+				)
+			);
+			
+			// update instance's default options
+			$instance = wp_parse_args( (array) $instance, $defaults );
 			
 			global $wpdb;
 			$table = $wpdb->prefix . "popularpostsdata";
-						
-			if ( $instance['pages'] ) {
-				$nopages = '';
-			} else {
-				$nopages = "AND $wpdb->posts.post_type = 'post'";
-			}
 			
-			switch( $instance['range'] ) {
-				case 'all':
-					$range = "post_date_gmt < '".gmdate("Y-m-d H:i:s")."'";
-					break;
-				case 'yesterday':
-					$range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 1 DAY";
-					break;
-				case 'daily':
-					//$range = $table."cache.day = ".$this->curdate();
-					$range = $table."cache.day >= '".$this->now()."' - INTERVAL 1 DAY";
-					break;
-				case 'weekly':
-					$range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 7 DAY";
-					break;
-				case 'monthly':
-					$range = $table."cache.day >= '".gmdate("Y-m-d")."' - INTERVAL 30 DAY";
-					break;
-				default:
-					$range = "post_date_gmt < '".gmdate("Y-m-d H:i:s")."'";
-					break;
+			$fields = "";
+			$join = "";
+			$where = "";
+			$having = "";
+			$orderby = "";
+			$cat = (is_category()) ? get_query_var('cat') : '';
+			$content = "";
+			
+			if ($instance['range'] == "all") { // data - all
+			
+				// views
+				if ($instance['order_by'] == "views" || $instance['order_by'] == "avg" || $instance['stats_tag']['views']) {
+					$join .= " LEFT JOIN {$table} v ON p.ID = v.postid ";
+					
+					if ( $instance['order_by'] == "avg" ) {
+						$fields .= ", ( IFNULL(v.pageviews, 0)/(IF ( DATEDIFF('".$this->now()."', MIN(v.day)) > 0, DATEDIFF('".$this->now()."', MIN(v.day)), 1) )) AS 'avg_views' ";
+					} else {						
+						$fields .= ", IFNULL(v.pageviews, 0) AS 'pageviews' ";							
+					}
+				}
+				
+				// comments
+				if ($instance['order_by'] == "comments" || $instance['stats_tag']['comment_count']) {
+					$fields .= ", p.comment_count AS 'comment_count' ";
+				}
+				
+			} else if ($instance['range'] == "yesterday" || $instance['range'] == "daily") { // data - last 24 hours
+				
+				// views				
+				if ($instance['order_by'] == "views" || $instance['order_by'] == "avg" || $instance['stats_tag']['views']) {
+					$join .= " LEFT JOIN (SELECT id, SUM(pageviews) AS 'pageviews', day FROM (SELECT id, pageviews, day FROM {$table}cache WHERE day > DATE_SUB('".$this->now()."', INTERVAL 1 DAY) ORDER BY day) sv GROUP BY id) v ON p.ID = v.id ";
+					
+					$fields .= ", IFNULL(v.pageviews, 0) AS 'pageviews' ";
+				}
+				
+				// comments
+				if ($instance['order_by'] == "comments" || $instance['stats_tag']['comment_count']) {
+					$fields .= ", IFNULL(c.comment_count, 0) AS 'comment_count' ";
+					$join .= " LEFT JOIN (SELECT comment_post_ID, COUNT(comment_post_ID) AS 'comment_count' FROM $wpdb->comments WHERE comment_approved = 1 AND comment_date > DATE_SUB('".$this->now()."', INTERVAL 1 DAY) GROUP BY comment_post_ID ORDER BY comment_date DESC) c ON p.ID = c.comment_post_ID ";
+				}
+				
+			} else if ($instance['range'] == "weekly") { // data - last 7 days
+				
+				// views				
+				if ($instance['order_by'] == "views" || $instance['order_by'] == "avg" || $instance['stats_tag']['views']) {
+					$join .= " LEFT JOIN (SELECT id, SUM(pageviews) AS 'pageviews', day FROM (SELECT id, pageviews, day FROM {$table}cache WHERE day > DATE_SUB('".$this->now()."', INTERVAL 1 WEEK) ORDER BY day) sv GROUP BY id) v ON p.ID = v.id ";
+										
+					if ( $instance['order_by'] == "avg" ) {
+						$fields .= ", ( IFNULL(v.pageviews, 0)/(IF ( DATEDIFF('".$this->now()."', MIN(v.day)) > 0, DATEDIFF('".$this->now()."', MIN(v.day)), 1) )) AS 'avg_views' ";
+					} else {						
+						$fields .= ", IFNULL(v.pageviews, 0) AS 'pageviews' ";							
+					}					
+				}
+				
+				// comments
+				if ($instance['order_by'] == "comments" || $instance['stats_tag']['comment_count']) {
+					$fields .= ", IFNULL(c.comment_count, 0) AS 'comment_count' ";
+					$join .= " LEFT JOIN (SELECT comment_post_ID, COUNT(comment_post_ID) AS 'comment_count' FROM $wpdb->comments WHERE comment_approved = 1 AND comment_date > DATE_SUB('".$this->now()."', INTERVAL 1 WEEK) GROUP BY comment_post_ID ORDER BY comment_date DESC) c ON p.ID = c.comment_post_ID ";
+				}
+				
+			} else if ($instance['range'] == "monthly") { // data - last 30 days
+				
+				// views				
+				if ($instance['order_by'] == "views" || $instance['order_by'] == "avg" || $instance['stats_tag']['views']) {
+					$join .= " LEFT JOIN (SELECT id, SUM(pageviews) AS 'pageviews', day FROM (SELECT id, pageviews, day FROM {$table}cache WHERE day > DATE_SUB('".$this->now()."', INTERVAL 1 MONTH) ORDER BY day) sv GROUP BY id) v ON p.ID = v.id ";
+										
+					if ( $instance['order_by'] == "avg" ) {
+						$fields .= ", ( IFNULL(v.pageviews, 0)/(IF ( DATEDIFF('".$this->now()."', MIN(v.day)) > 0, DATEDIFF('".$this->now()."', MIN(v.day)), 1) )) AS 'avg_views' ";
+					} else {						
+						$fields .= ", IFNULL(v.pageviews, 0) AS 'pageviews' ";							
+					}					
+				}
+				
+				// comments
+				if ($instance['order_by'] == "comments" || $instance['stats_tag']['comment_count']) {
+					$fields .= ", IFNULL(c.comment_count, 0) AS 'comment_count' ";
+					$join .= " LEFT JOIN (SELECT comment_post_ID, COUNT(comment_post_ID) AS 'comment_count' FROM $wpdb->comments WHERE comment_approved = 1 AND comment_date > DATE_SUB('".$this->now()."', INTERVAL 1 MONTH) GROUP BY comment_post_ID ORDER BY comment_date DESC) c ON p.ID = c.comment_post_ID ";
+				}
+				
 			}
 			
 			// sorting options
 			switch( $instance['order_by'] ) {
 				case 'comments':
-					$sortby = 'comment_count';
+					if ($instance['range'] == "all") {
+						$where .= " AND p.comment_count > 0 ";
+						$orderby = 'p.comment_count';
+					} else {
+						$where .= " AND c.comment_count > 0 ";
+						$orderby = 'c.comment_count';
+					}
 					break;
+					
 				case 'views':
-					$sortby = 'pageviews';
+					$where .= " AND v.pageviews > 0 ";
+					$orderby = 'v.pageviews';
 					break;
+					
 				case 'avg':
-					$sortby = 'avg_views';
+					if ($instance['range'] == "yesterday" || $instance['range'] == "daily") {
+						$where .= " AND v.pageviews > 0 ";
+						$orderby = 'v.pageviews';
+					} else {
+						$having = " HAVING avg_views > 0.0000 ";
+						$orderby = 'avg_views';
+					}
+					
 					break;
+					
 				default:
-					$sortby = 'comment_count';
+					$orderby = 'comment_count';					
 					break;
 			}
 			
-			// dynamic query fields
-			$fields = ', ';			
-			if ( $instance['stats_tag']['views'] || ($sortby != 'comment_count') ) {
-				
-				if ( $sortby == 'avg_views' ) {
-					if ( $instance['range'] == 'all') {
-						$fields .= "(".$table.".pageviews / (IF ( DATEDIFF('".$this->now()."', $wpdb->posts.post_date_gmt) > 0, DATEDIFF('".$this->now()."', $wpdb->posts.post_date_gmt), 1) )) AS 'avg_views' ";
-					} else {
-						$fields .= "(SUM(".$table."cache.pageviews)/(IF ( DATEDIFF('".$this->now()."', MIN(".$table."cache.day)) > 0, DATEDIFF('".$this->now()."', MIN(".$table."cache.day)), 1) )) AS 'avg_views' ";
-					}
-				} else {
-					//$fields .= "(SUM(".$table."cache.pageviews)) AS 'pageviews' ";
-					if ( $instance['range'] == 'all') {
-						$fields .= "$table.pageviews AS 'pageviews' ";
-					} else {
-						$fields .= "(SUM(".$table."cache.pageviews)) AS 'pageviews' ";
-					}
+			// post filters			
+			// * post types - based on code seen at https://github.com/williamsba/WordPress-Popular-Posts-with-Custom-Post-Type-Support
+			$post_types = explode(",", $instance['post_type']);
+			$i = 0;
+			$len = count($post_types);
+			$sql_post_types = "";
+					
+			if ($len > 1) { // we are getting posts from more that one ctp				
+				foreach ( $post_types as $post_type ) {
+					$sql_post_types .= "'" .$post_type. "'";
+					
+					if ($i != $len - 1) $sql_post_types .= ",";
+					
+					$i++;
 				}
+
+				$where .= " AND p.post_type IN({$sql_post_types}) ";
+			} else if ($len == 1) { // post from one ctp only
+				$where .= " AND p.post_type = '".$instance['post_type']."' ";
 			}
 			
-			if ( $instance['stats_tag']['comment_count'] ) {
-				if ( $fields != ', ' ) {
-					$fields .= ", $wpdb->posts.comment_count AS 'comment_count' ";
-				} else {
-					$fields .= "$wpdb->posts.comment_count AS 'comment_count' ";
+			// * categories
+			if ( !empty($instance['cat']) ) {
+				$cat_ids = explode(",", $instance['cat']);
+				$in = array();
+				$out = array();
+				$not_in = "";
+				
+				usort($cat_ids, array(&$this, 'sorter'));					
+				
+				for ($i=0; $i < count($cat_ids); $i++) {
+					if ($cat_ids[$i] >= 0) $in[] = $cat_ids[$i];
+					if ($cat_ids[$i] < 0) $out[] = $cat_ids[$i];
 				}
-			}
-			
-			if ( $instance['stats_tag']['author'] ) {
-				if ( $fields != ', ' ) {
-					$fields .= ", (SELECT $wpdb->users.display_name FROM $wpdb->users WHERE $wpdb->users.ID = $wpdb->posts.post_author ) AS 'display_name'";
-				} else {
-					$fields .= "(SELECT $wpdb->users.display_name FROM $wpdb->users WHERE $wpdb->users.ID = $wpdb->posts.post_author ) AS 'display_name'";
+				
+				$in_cats = implode(",", $in);
+				$out_cats = implode(",", $out);
+				$out_cats = preg_replace( '|[^0-9,]|', '', $out_cats );
+				
+				if ($in_cats != "" && $out_cats == "") { // get posts from from given cats only
+					$where .= " AND p.ID IN (
+						SELECT object_id
+						FROM $wpdb->term_relationships AS r
+							 JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id
+							 JOIN $wpdb->terms AS t ON t.term_id = x.term_id
+						WHERE x.taxonomy = 'category' AND t.term_id IN($in_cats)
+						) ";
+				} else if ($in_cats == "" && $out_cats != "") { // exclude posts from given cats only
+					$where .= " AND p.ID NOT IN (
+						SELECT object_id
+						FROM $wpdb->term_relationships AS r
+							 JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id
+							 JOIN $wpdb->terms AS t ON t.term_id = x.term_id
+						WHERE x.taxonomy = 'category' AND t.term_id IN($out_cats)
+						) ";
+				} else { // mixed, and possibly a heavy load on the DB
+					$where .= " AND p.ID IN (
+						SELECT object_id
+						FROM $wpdb->term_relationships AS r
+							 JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id
+							 JOIN $wpdb->terms AS t ON t.term_id = x.term_id
+						WHERE x.taxonomy = 'category' AND t.term_id IN($in_cats) 
+						) AND p.ID NOT IN (
+						SELECT object_id
+						FROM $wpdb->term_relationships AS r
+							 JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id
+							 JOIN $wpdb->terms AS t ON t.term_id = x.term_id
+						WHERE x.taxonomy = 'category' AND t.term_id IN($out_cats)
+						) ";
 				}
 			}
-			if ( $instance['stats_tag']['date']['active'] ) {
-				if ( $fields != ', ' ) {
-					$fields .= ", $wpdb->posts.post_date_gmt AS 'date_gmt'";
-				} else {
-					$fields .= "$wpdb->posts.post_date_gmt AS 'date_gmt'";
-				}
-			}			
-			
-			if (strlen($fields) == 2) $fields = '';
 			
-			$force_pv = "";
-
-			if ( $instance['range'] == 'all') {
-				$join = "LEFT JOIN $table ON $wpdb->posts.ID = $table.postid";
-				$force_pv = "AND ".$table.".pageviews > 0 ";
-			} else {
-				$join = "RIGHT JOIN ".$table."cache ON $wpdb->posts.ID = ".$table."cache.id";				
-			}
-			
-			// Category excluding snippet suggested by user almergabor at http://wordpress.org/support/topic/plugin-wordpress-popular-posts-exclude-and-include-categories?replies=2#post-2464701
-			// Thanks, almergabor!
-			if ( $instance['exclude-cats']['active'] && !empty($instance['exclude-cats']['cats']) ) {				
-				$exclude = " AND $wpdb->posts.ID NOT IN (
-							SELECT object_id
-							FROM $wpdb->term_relationships AS r
-								 JOIN $wpdb->term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id
-								 JOIN $wpdb->terms AS t ON t.term_id = x.term_id
-							WHERE x.taxonomy = 'category' AND t.term_id IN(".$instance['exclude-cats']['cats'].")
-							) ";
-
-			} else {
-				$exclude = "";
+			// * authors
+			if ( !empty($instance['author']) ) {			
+				$authors = explode(",", $instance['author']);			
+				$len = count($authors);
+				
+				if ($len > 1) { // we are getting posts from more that one author
+					$where .= " AND p.post_author IN(".$instance['author'].") ";
+				} else if ($len == 1) { // post from one author only
+					$where .= " AND p.post_author = '".$instance['author']."' ";
+				}
 			}
 			
-			$mostpopular = $wpdb->get_results("SELECT $wpdb->posts.ID, $wpdb->posts.post_title $fields FROM $wpdb->posts $join WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_password = '' AND $range $force_pv $nopages $exclude GROUP BY $wpdb->posts.ID ORDER BY $sortby DESC LIMIT " . $instance['limit'] . "");
+			$query = "SELECT p.ID AS 'id', p.post_title AS 'title', p.post_date AS 'date', p.post_author AS 'uid' {$fields} FROM {$wpdb->posts} p {$join} WHERE p.post_status = 'publish' AND p.post_password = '' {$where} GROUP BY p.ID {$having} ORDER BY {$orderby} DESC LIMIT " . $instance['limit'] . ";";
 			
-			$content = '';
-			
-			//echo "SELECT $wpdb->posts.ID, $wpdb->posts.post_title $fields FROM $wpdb->posts $join WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_password = '' AND $range $force_pv $nopages $exclude GROUP BY $wpdb->posts.ID ORDER BY $sortby DESC LIMIT " . $instance['limit'];
+			//echo $query;
+			//return $content;
+						
+			$mostpopular = $wpdb->get_results($query);
 			
-			if ( !is_array($mostpopular) || empty($mostpopular) ) {
+			if ( !is_array($mostpopular) || empty($mostpopular) ) { // no posts to show
 				$content .= "<p>".__('Sorry. No data so far.', 'wordpress-popular-posts')."</p>"."\n";
-			} else {
+			} else { // list posts
+				
+				// THUMBNAIL SOURCE
+				$user_def_settings = array(
+					'stats' => array(
+						'order_by' => 'comments',
+						'limit' => 10
+					),
+					'tools' => array(
+						'ajax' => false,
+						'css' => true,
+						'stylesheet' => true,
+						'thumbnail' => array(
+							'source' => 'featured',
+							'field' => ''
+						)
+					)
+				);
 				
+				$this->user_ops = get_option('wpp_settings_config');
+				
+				if (!$this->user_ops || empty($this->user_ops)) {
+					add_option('wpp_settings_config', $user_def_settings);
+					$this->user_ops = $user_def_settings;
+				}
+				
+				// HTML wrapper
 				if ($instance['markup']['custom_html']) {
 					$content .= htmlspecialchars_decode($instance['markup']['wpp-start'], ENT_QUOTES) ."\n";
 				} else {
+					$content .= "<!-- Wordpress Popular Posts Plugin v". $this->version ." [Widget] [".$instance['range']."]". (($instance['markup']['custom_html']) ? ' [custom]' : ' [regular]') ." -->"."\n";
 					$content .= "<ul>" . "\n";
 				}
 				
-				foreach ($mostpopular as $wppost) {					
-				
-					$post_stats = "";
+				// posts array
+				$posts_data = array();
+			
+				foreach($mostpopular as $p) {
 					$stats = "";
 					$thumb = "";
-					$the_ID = $wppost->ID;
+					$title = "";
+					$title_sub = "";
+					$permalink = get_permalink( $p->id );
+					$author = ($instance['stats_tag']['author']) ? get_the_author_meta('display_name', $p->uid) : "";
+					$date = date_i18n( $instance['stats_tag']['date']['format'], strtotime($p->date) );					
+					$pageviews = ($instance['order_by'] == "views" || $instance['order_by'] == "avg" || $instance['stats_tag']['views']) ? (($instance['order_by'] == "views" || $instance['order_by'] == "comments") ? number_format($p->pageviews) : ( ($instance['range'] == "yesterday" || $instance['range'] == "daily") ? number_format($p->pageviews) : number_format($p->avg_views, 2)) ) : 0;
+					$comments = ($instance['order_by'] == "comments" || $instance['stats_tag']['comment_count']) ? $p->comment_count : 0;
+					$excerpt = "";
+					$rating = "";
 					$data = array();
 					
-					// get post title
-					/* qTranslate integration check */
-					($this->qTrans) ? $tit = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($wppost->post_title) : $tit = $wppost->post_title;
+					// TITLE
+					$title = ($this->qTrans) ? qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($p->title) : $p->title;
+					$title = strip_tags($title);
+					$title_sub = strip_tags($title);
 					
-					$tit = ($this->magicquotes) ? stripslashes($tit) : $tit;
-					//$title_attr = htmlentities($tit, ENT_QUOTES, $this->charset);
-					
-					$title_attr = apply_filters('the_title', $tit);
-					
-					if ( $instance['shorten_title']['active'] && (strlen($tit) > $instance['shorten_title']['length'])) {
-						$tit = mb_substr($tit, 0, $instance['shorten_title']['length'], $this->charset) . "...";
+					if ( $instance['shorten_title']['active'] && (strlen($title) > $instance['shorten_title']['length'])) {
+						$title_sub = mb_substr($title, 0, $instance['shorten_title']['length'], $this->charset) . "...";
 					}
 					
-					//$tit = htmlentities($tit, ENT_QUOTES, $this->charset);					
-					$tit = apply_filters('the_title', $tit);
+					$title = apply_filters('the_title', $title);
+					$title_sub = apply_filters('the_title', $title_sub);
 					
-					// get post excerpt
+					// EXCERPT					
 					if ( $instance['post-excerpt']['active'] ) {
 						if ($instance['markup']['pattern']['active']) {
-							$post_content = "<span class=\"wpp-excerpt\">" . $this->get_summary($the_ID, $instance) . "</span>";
+							$excerpt = $this->get_summary($p->id, $instance);
 						} else {
-							$post_content = ": <span class=\"wpp-excerpt\">" . $this->get_summary($the_ID, $instance) . "...</span>";
+							$excerpt = ": <span class=\"wpp-excerpt\">" . $this->get_summary($p->id, $instance) . "...</span>";
 						}
-					} else {
-						$post_content = "";
 					}
 					
-					// build stats tag
-					if ( $instance['stats_tag']['comment_count'] ) {
-						$comment_count = (int) $wppost->comment_count;
-						$post_stats .= "<span class=\"wpp-comments\">" . $comment_count . " " . __(' comment(s)', 'wordpress-popular-posts') . "</span>";
+					// STATS
+					// comments
+					if ( $instance['stats_tag']['comment_count'] ) {						
+						$stats .= "<span class=\"wpp-comments\">{$comments} " . __('comment(s)', 'wordpress-popular-posts') . "</span>";
 					}
+					// views
 					if ( $instance['stats_tag']['views'] ) {
-						$views_text = __(' view(s)', 'wordpress-popular-posts');
-						if ($instance['order_by'] == 'views') {
-							$pageviews = (int) $wppost->pageviews;
-						} else if ($instance['order_by'] == 'avg') {
-							//$pageviews = ceil($wppost->avg_views);
-							$pageviews = round($wppost->avg_views, 2);
-							if ($instance['range'] != 'daily') $views_text = __(' view(s) per day', 'wordpress-popular-posts');
-						} else {
-							$pageviews = (int) $wppost->pageviews;
-						}			
+						$views_text = ' ' . __('view(s)', 'wordpress-popular-posts');							
 						
-						if ($post_stats != "") {
-							$post_stats .= " | <span class=\"wpp-views\">$pageviews $views_text</span>";
-						} else {							
-							$post_stats .= "<span class=\"wpp-views\">$pageviews $views_text</span>";
-						}										
-					}
-					if ( $instance['stats_tag']['author'] ) {
-						if ($post_stats != "") {
-							$post_stats .= " | ".__('by', 'wordpress-popular-posts')." <span class=\"wpp-author\">".$wppost->display_name."</span>";
-						} else {					
-							$post_stats .= __('by', 'wordpress-popular-posts')." <span class=\"wpp-author\">".$wppost->display_name."</span>";
+						if ($instance['order_by'] == 'avg') {
+							if ($instance['range'] != 'daily') $views_text = ' ' . __('view(s) per day', 'wordpress-popular-posts');
 						}
+						
+						$stats .= ($stats == "") ? "<span class=\"wpp-views\">{$pageviews} {$views_text}</span>" : " | <span class=\"wpp-views\">{$pageviews} {$views_text}</span>";
 					}
-					if ( $instance['stats_tag']['date']['active'] ) {
-						if ($post_stats != "") {
-							$post_stats .= " | <span class=\"wpp-date\">".__('posted on', 'wordpress-popular-posts')." ".date_i18n($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."</span>";
-						} else {					
-							$post_stats .= "<span class=\"wpp-date\">".__('posted on', 'wordpress-popular-posts')." ".date_i18n($instance['stats_tag']['date']['format'], strtotime($wppost->date_gmt))."</span>";
-						}
+					//author
+					if ( $instance['stats_tag']['author'] ) {
+						$display_name = get_the_author_meta('display_name', $p->uid);
+						$stats .= ($stats == "") ? "<span class=\"wpp-author\">" . __('by', 'wordpress-popular-posts')." {$display_name}</span>" : " | <span class=\"wpp-author\">" . __('by', 'wordpress-popular-posts') ." {$display_name}</span>";
 					}
-					
-					if (!empty($post_stats)) {
-						$stats = ' <span class="post-stats">' . $post_stats . '</span> ';
+					// date
+					if ( $instance['stats_tag']['date']['active'] ) {						
+						$stats .= ($stats == "") ? "<span class=\"wpp-date\">" . __('posted on', 'wordpress-popular-posts')." {$date}</span>" : " | <span class=\"wpp-date\">" . __('posted on', 'wordpress-popular-posts') ." {$date}</span>";
 					}
 					
-					// get thumbnail
+					// POST THUMBNAIL
 					if ($instance['thumbnail']['active'] && $this->thumb) {
 						$tbWidth = $instance['thumbnail']['width'];
 						$tbHeight = $instance['thumbnail']['height'];
 						
-						if (!function_exists('get_the_post_thumbnail')) { // if the Featured Image is not active, show default thumbnail
-							$thumb = "<a href=\"".get_permalink($the_ID)."\" class=\"wppnothumb\" title=\"". $title_attr ."\"><img src=\"". $this->default_thumbnail . "\" alt=\"".$title_attr."\" border=\"0\" class=\"wpp-thumbnail\" width=\"".$tbWidth."\" height=\"".$tbHeight."\" "."/></a>";
-						} else {
-							if (has_post_thumbnail( $the_ID )) { // if the post has a thumbnail, get it
-								$thumb = "<a href=\"".get_permalink($the_ID)."\" title=\"". $title_attr ."\">" . get_the_post_thumbnail($the_ID, array($tbWidth, $tbHeight), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) . "</a>";
-							} else { // try to generate a post thumbnail from first image attached to post. If it fails, use default thumbnail
-								$thumb = "<a href=\"".get_permalink($the_ID)."\" title=\"". $title_attr ."\">" . $this->generate_post_thumbnail($the_ID, array($tbWidth, $tbHeight), array('class' => 'wpp-thumbnail', 'alt' => $title_attr, 'title' => $title_attr) ) ."</a>";
+						$thumb = "<a href=\"". $permalink ."\" class=\"wpp-thumbnail\" title=\"{$title}\">";
+												
+						if ($this->user_ops['tools']['thumbnail']['source'] == "featured") { // get Featured Image
+							if (function_exists('has_post_thumbnail') && has_post_thumbnail( $p->id )) {
+								$path = $this->get_img($p->id, "featured");
+								
+								if ($path) {
+									$thumb .= "<img src=\"". $this->pluginDir ."/timthumb.php?src={$path}&amp;h={$tbHeight}&amp;w={$tbWidth}\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" alt=\"{$title}\" border=\"0\" class=\"wpp-thumbnail wpp_fi\" />";
+								} else {
+									$thumb .= "<img src=\"". $this->default_thumbnail ."\" alt=\"{$title}\" border=\"0\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" class=\"wpp-thumbnail wpp_fi_def\" />";
+								}								
+							} else {
+								$thumb .= "<img src=\"". $this->default_thumbnail ."\" alt=\"{$title}\" border=\"0\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" class=\"wpp-thumbnail wpp_fi_def\" />";
+							}
+						} else if ($this->user_ops['tools']['thumbnail']['source'] == "first_image") { // get first image on post
+							$path = $this->get_img($p->id, "first_image");
+								
+							if ($path) {
+								$thumb .= "<img src=\"". $this->pluginDir ."/timthumb.php?src={$path}&amp;h={$tbHeight}&amp;w={$tbWidth}\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" alt=\"{$title}\" border=\"0\" class=\"wpp-thumbnail wpp_fp\" />";
+							} else {
+								$thumb .= "<img src=\"". $this->default_thumbnail ."\" alt=\"{$title}\" border=\"0\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" class=\"wpp-thumbnail wpp_fp_def\" />";
+							}
+						} else if ($this->user_ops['tools']['thumbnail']['source'] == "custom_field") { // get image from custom field
+							$path = get_post_meta($p->id, $this->user_ops['tools']['thumbnail']['field'], true);
+							
+							if ($path != "") {
+								$thumb .= "<img src=\"{$path}\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" alt=\"{$title}\" border=\"0\" class=\"wpp-thumbnail wpp_cf\" />";
+							} else {
+								$thumb .= "<img src=\"". $this->default_thumbnail ."\" alt=\"{$title}\" border=\"0\" width=\"{$tbWidth}\" height=\"{$tbHeight}\" class=\"wpp-thumbnail wpp_cf_def\" />";
 							}
 						}
-					}
-					
-					// get rating
-					if ($instance['rating'] && $this->postRating) {
-						$rating = '<span class="wpp-rating">'.the_ratings_results($the_ID).'</span>';
-					} else {
-						$rating = '';
+						
+						$thumb .= "</a>";
 					}
 					
 					$data = array(
-						'title' => '<a href="'.get_permalink($the_ID).'" title="'. $title_attr . '"><span class="wpp-post-title">'. $tit .'</span></a>',
-						'summary' => $post_content,
+						'title' => '<a href="'.$permalink.'" title="'.$title.'">'.$title_sub.'</a>',
+						'summary' => $excerpt,
 						'stats' => $stats,
 						'img' => $thumb,
-						'id' => $the_ID
+						'id' => $p->id
 					);
 					
-					// build custom layout
-					if ($instance['markup']['custom_html']) {
+					array_push($posts_data, $data);
+					
+					// PUTTING IT ALL TOGETHER					
+					if ($instance['markup']['custom_html']) { // build custom layout
 						if ($instance['markup']['pattern']['active']) {
-							$content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . $this->format_content($instance['markup']['pattern']['form'], $data, $instance['rating']) . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n";
+							$content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . htmlspecialchars_decode($this->format_content($instance['markup']['pattern']['form'], $data, $instance['rating'])) . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n";
 						} else {
-							$content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . $thumb . '<a href="'.get_permalink($the_ID).'" title="'. $title_attr .'"><span class="wpp-post-title">'. $tit .'</span></a>'.$post_content.' '. $stats . $rating . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n";
+							$content .= htmlspecialchars_decode($instance['markup']['post-start'], ENT_QUOTES) . "{$thumb}<a href=\"{$permalink}\" title=\"{$title}\" class=\"wpp-post-title\">{$title_sub}</a> {$excerpt}{$stats}{$rating}" . htmlspecialchars_decode($instance['markup']['post-end'], ENT_QUOTES) . "\n";
 						}
-					} else {
-						$content .= '<li>'. $thumb .'<a href="'. get_permalink($the_ID) .'" title="'. $title_attr .'"><span class="wpp-post-title">'. $tit .'</span></a>'. $post_content .' '. $stats . $rating .'</li>' . "\n";
+					} else { // build regular layout
+						$content .= "<li>{$thumb}<a href=\"{$permalink}\" title=\"{$title}\" class=\"wpp-post-title\">{$title_sub}</a> {$excerpt}<span class=\"post-stats\">{$stats}</span>{$rating}</li>" . "\n";
 					}
-				}			
+				}
+				
+				//print_r($posts_data);
 				
+				// END HTML wrapper
 				if ($instance['markup']['custom_html']) {
 					$content .= htmlspecialchars_decode($instance['markup']['wpp-end'], ENT_QUOTES) ."\n";
 				} else {
 					$content .= "\n"."</ul>"."\n";
 				}
-				
 			}
 			
-			if ($echo) { echo "<noscript>" . $content . "</noscript>"; } else { return $content; }
+			//if ($echo) { echo "<noscript>" . $content . "</noscript>"; } else { return $content; }
+			if ($return) { return $posts_data; } else { return $content; }
+			
 		}		
 		
 		// builds posts' excerpt
@@ -804,28 +1180,53 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			return $excerpt;
 		}
 		
-		// Generates a featured image from the first image attached to a post if found.
-		// Otherwise, returns default thumbnail
-		// Since 2.2.0
-		function generate_post_thumbnail($id, $dimensions, $atts) {
-			// get post attachments
-			$attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
+		// gets the first image of post / page
+		function get_img($id = "", $source = "featured") {
 			
-			// no images have been attached to the post, return default thumbnail
-			if ( !$attachments ) return "<img src=\"". $this->default_thumbnail . "\" alt=\"". $atts['alt'] ."\" border=\"0\" class=\"". $atts['class'] ."\" width=\"". $dimensions[0] ."\" height=\"". $dimensions[1] ."\" "."/>";
+			if ( empty($id) || !is_numeric($id)) return false;
 			
-			$count = count($attachments);
-			$first_attachment = array_shift($attachments);			
-			$img = wp_get_attachment_image($first_attachment->ID);
-						
-			if (!empty($img)) { // found an image, use it as Featured Image
-				update_post_meta( $id, '_thumbnail_id', $first_attachment->ID );
-				return get_the_post_thumbnail($id, $dimensions, $atts);
-			} else { // no images have been found, return default thumbnail
-				return "<img src=\"". $this->default_thumbnail . "\" alt=\"". $atts['alt'] ."\" border=\"0\" class=\"". $atts['class'] ."\" width=\"". $dimensions[0] ."\" height=\"". $dimensions[1] ."\" "."/>";
+			if ($source == "featured") {
+				$thumbnail_id = get_post_thumbnail_id($id);
+				
+				if ($thumbnail_id) {
+					$thumbnail = wp_get_attachment_image_src($thumbnail_id, 'full');
+					
+					if ($thumbnail) {
+						return $thumbnail[0];
+					}
+				}			
+				
+				return false;
+			} else if ($source == "first_image") {
+				// get post attachments
+				$attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
+				
+				// no image has been found
+				if ( !$attachments ) return false;
+				
+				$image = array_shift($attachments);
+				
+				return $image->guid;				
 			}
 			
+			
+		}
+		
+		/*
+		// gets the first image of post / page
+		function get_img($id = "", $print = false) {
+			if ( empty($id) || !is_numeric($id) ) return false;
+			
+			// get post attachments
+			$attachments = get_children(array('post_parent' => $id, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order'));
+			
+			// no image has been found
+			if ( !$attachments ) return false;
+			
+			$image = array_shift($attachments);			
+			return $image->guid;
 		}
+		*/
 		
 		// parses content structure defined by user
 		function format_content ($string, $data = array(), $rating) {
@@ -848,7 +1249,7 @@ if ( !class_exists('WordpressPopularPosts') ) {
 					$params[$matches[0][$i]] = $data['summary'];
 					continue;
 				}
-				if (strtolower($matches[0][$i]) == "{image}") {
+				if (strtolower($matches[0][$i]) == "{image}" || strtolower($matches[0][$i]) == "{thumb}") {
 					$params[$matches[0][$i]] = $data['img'];
 					continue;
 				}
@@ -936,7 +1337,7 @@ if ( !class_exists('WordpressPopularPosts') ) {
 						}
 						//$truncate .= substr($line_matchings[2], 0, $left+$entities_length);
 						$truncate .= mb_substr($line_matchings[2], 0, $left+$entities_length);
-						// maximum lenght is reached, so get off the loop
+						// maximum length is reached, so get off the loop
 						break;
 					} else {
 						$truncate .= $line_matchings[2];
@@ -981,18 +1382,25 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			load_plugin_textdomain('wordpress-popular-posts', false, dirname(plugin_basename( __FILE__ )));
 		}
 		
-		// insert Wordpress Popular Posts' stylesheet in theme's head section, just in case someone needs it
+		// insert Wordpress Popular Posts' stylesheet in theme's head section, just in case someone needs it		
 		function wpp_print_stylesheet() {
-			$css_path = (@file_exists(TEMPLATEPATH.'/wpp.css')) ? get_stylesheet_directory_uri().'/wpp.css' : plugin_dir_url( __FILE__ ).'style/wpp.css';
-			echo "\n"."<!-- Wordpress Popular Posts v".$this->version." -->"."\n".'<link rel="stylesheet" href="'. $css_path .'" type="text/css" media="screen" />'."\n"."<!-- End Wordpress Popular Posts v".$this->version." -->"."\n";	
+			if (!is_admin()) {
+				if ( @file_exists(TEMPLATEPATH.'/wpp.css') ) { // user stored a custom wpp.css on theme's directory, so use it
+					$css_path = get_template_directory_uri() . "/wpp.css";
+				} else { // no custom wpp.css, use plugin's instead
+					$css_path = plugins_url('style/wpp.css', __FILE__);
+				}
+				
+				wp_enqueue_style('wordpress-popular-posts', $css_path, false);
+			}
 		}
 		
-		// create Wordpress Popular Posts' maintenance page
-		function wpp_maintenance_page() {
-			require (dirname(__FILE__) . '/maintenance.php');
+		// create Wordpress Popular Posts' admin page		
+		function wpp_admin() {
+			require (dirname(__FILE__) . '/admin.php');
 		}	
-		function add_wpp_maintenance_page() {			
-			add_submenu_page( 'options-general.php', 'Wordpress Popular Posts', 'Wordpress Popular Posts', 'manage_options', 'wpp_maintenance_page', array(&$this, 'wpp_maintenance_page') );
+		function add_wpp_admin() {			
+			add_options_page('Wordpress Popular Posts', 'Wordpress Popular Posts', 'manage_options', 'wpp_admin', array(&$this, 'wpp_admin'));
 		}
 		
 		// version update warning
@@ -1015,21 +1423,23 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			remove_shortcode('wpp');
 			remove_shortcode('WPP');
 			
-			delete_option('wpp_ver');
+			//delete_option('wpp_ver');
 		}
 		
 		// shortcode handler
 		function wpp_shortcode($atts = NULL, $content = NULL) {
+			
 			extract( shortcode_atts( array(
 				'header' => '',
 				'limit' => 10,
 				'range' => 'daily',
 				'order_by' => 'comments',
-				'pages' => true,
+				'post_type' => 'post,page',
+				'cat' => '',
+				'author' => '',
 				'title_length' => 0,
 				'excerpt_length' => 0,
-				'excerpt_format' => 0,
-				'cats_to_exclude' => '',
+				'excerpt_format' => 0,				
 				'thumbnail_width' => 0,
 				'thumbnail_height' => 0,
 				'thumbnail_selection' => 'wppgenerated',
@@ -1052,14 +1462,16 @@ if ( !class_exists('WordpressPopularPosts') ) {
 			// possible values for "Time Range" and "Order by"
 			$range_values = array("yesterday", "daily", "weekly", "monthly", "all");
 			$order_by_values = array("comments", "views", "avg");
-			$thumbnail_selector = array("wppgenerated", "usergenerated");
+			$thumbnail_selector = array("wppgenerated", "usergenerated");			
 			
 			$shortcode_ops = array(
 				'title' => strip_tags($header),
 				'limit' => empty($limit) ? 10 : (is_numeric($limit)) ? (($limit > 0) ? $limit : 10) : 10,
 				'range' => (in_array($range, $range_values)) ? $range : 'daily',
 				'order_by' => (in_array($order_by, $order_by_values)) ? $order_by : 'comments',
-				'pages' => empty($pages) || $pages == "false" ? false : true,
+				'post_type' => empty($post_type) ? 'post,page' : $post_type,
+				'cat' => preg_replace( '|[^0-9,-]|', '', $cat ),
+				'author' => preg_replace( '|[^0-9,]|', '', $author ),
 				'shorten_title' => array(
 					'active' => empty($title_length) ? false : (is_numeric($title_length)) ? (($title_length > 0) ? true : false) : false,
 					'length' => empty($title_length) ? 0 : (is_numeric($title_length)) ? $title_length : 0 
@@ -1068,11 +1480,7 @@ if ( !class_exists('WordpressPopularPosts') ) {
 					'active' => empty($excerpt_length) ? false : (is_numeric($excerpt_length)) ? (($excerpt_length > 0) ? true : false) : false,
 					'length' => empty($excerpt_length) ? 0 : (is_numeric($excerpt_length)) ? $excerpt_length : 0,
 					'keep_format' => empty($excerpt_format) ? false : (is_numeric($excerpt_format)) ? (($excerpt_format > 0) ? true : false) : false,
-				),
-				'exclude-cats' => array(
-					'active' => empty($cats_to_exclude) ? false : (ctype_digit(str_replace(",", "", $cats_to_exclude))) ? true : false,
-					'cats' => empty($cats_to_exclude) ? '' : (ctype_digit(str_replace(",", "", $cats_to_exclude))) ? $cats_to_exclude : ''
-				),		
+				),				
 				'thumbnail' => array(
 					'active' => empty($thumbnail_width) ? false : (is_numeric($thumbnail_width)) ? (($thumbnail_width > 0) ? true : false) : false,
 					'thumb_selection' => 'usergenerated',
@@ -1104,18 +1512,15 @@ if ( !class_exists('WordpressPopularPosts') ) {
 				)
 			);
 			
-			$shortcode_content = "";
-			
-			$shortcode_content .= "<!-- Wordpress Popular Posts Plugin v". $this->version ." [SC] [".$shortcode_ops['range']."]". (($shortcode_ops['markup']['custom_html']) ? ' [custom]' : ' [regular]') ." -->"."\n";
-			
+			$shortcode_content = "<!-- Wordpress Popular Posts Plugin v". $this->version ." [SC] [".$shortcode_ops['range']."]". (($shortcode_ops['markup']['custom_html']) ? ' [custom]' : ' [regular]') ." -->"."\n";
+				
 			// is there a title defined by user?
 			if (!empty($header) && !empty($header_start) && !empty($header_end)) {
-				$shortcode_content .= $header_start . $header . $header_end;
+				$shortcode_content .= $header_start . apply_filters('widget_title', $header) . $header_end;
 			}
 			
 			// print popular posts list
-			$shortcode_content .= $this->get_popular_posts($shortcode_ops, false);
-			
+			$shortcode_content .= $this->get_popular_posts($shortcode_ops);				
 			$shortcode_content .= "<!-- End Wordpress Popular Posts Plugin v". $this->version ." -->"."\n";
 			
 			return $shortcode_content;
@@ -1130,6 +1535,16 @@ if ( !class_exists('WordpressPopularPosts') ) {
 		function wpp_stats_display() {
 			require (dirname(__FILE__) . '/stats.php');
         }
+		
+		// stats page
+		// Since 2.3.0
+		function sorter($a, $b) {
+			if ($a > 0 && $b > 0) {
+				return $a - $b;
+			} else {
+				return $b - $a;
+			}
+		}
 	}
 	
 	// create tables
@@ -1164,13 +1579,25 @@ function wpp_get_views($id = NULL) {
 // gets popular posts
 // Since 2.0.3
 function wpp_get_mostpopular($args = NULL) {
+	
+	$shortcode = '[wpp';
 
-	if (is_null($args)) {
-		echo do_shortcode('[wpp]');
+	if ( is_null( $args ) ) {
+		$shortcode .= ']';
 	} else {
-		$atts = trim(str_replace("&", " ", $args));
-		echo do_shortcode('[wpp '.$atts.']');
+		if( is_array( $args ) ){
+			$atts = '';
+			foreach( $args as $key => $arg ){
+				$atts .= ' ' . $key . '="' . $arg . '"';
+			}
+		} else {
+			$atts = trim( str_replace( "&", " ", $args  ) );
+		}
+		
+		$shortcode .= ' ' . $atts . ']';
 	}
+	
+	echo do_shortcode( $shortcode );
 }
 
 // gets popular posts
@@ -1184,10 +1611,13 @@ function get_mostpopular($args = NULL) {
 
 
 /**
- * Wordpress Popular Posts 2.2.1 Changelog.
+ * Wordpress Popular Posts 2.3.2 Changelog.
  */
 
 /*
-	= 2.2.1 =
-	* Quick update to fix error with All-time combined with views breaking the plugin.
+= 2.3.2 =
+* The ability is enabling / disabling the Ajax Update has been removed. It introduced a random bug that doubled the views count of some posts / pages. Will be added back when a fix is ready.
+* Fixed a bug preventing the cat parameter from excluding categories (widget was not affected by this).
+* FAQ section (Settings / Wordpress Popular Posts / FAQ) updated.
+* Added french translation. (Thanks, Le Raconteur!)
 */
\ No newline at end of file
diff --git a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.po b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.po
index 2fe91e46345feaa5fe9f90bf70669956c3ee4a15..76549e759b39b0c92b48ccf403e13f0d9a8ab088 100644
--- a/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.po
+++ b/wp-content/plugins/wordpress-popular-post/wordpress-popular-posts.po
@@ -2,675 +2,801 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Wordpress Popular Posts\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-02 11:05-0430\n"
+"POT-Creation-Date: 2012-08-31 11:31-0430\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Hector Cabrera <me@cabrerahector.com>\n"
 "Language-Team: Héctor Cabrera <admin@rauru.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: English\n"
-"X-Poedit-Country: VENEZUELA\n"
+"Language: en_VE\n"
 "X-Poedit-SourceCharset: iso-8859-1\n"
 "X-Poedit-KeywordsList: __;_e\n"
 "X-Poedit-Basepath: .\n"
 "X-Poedit-SearchPath-0: .\n"
 
-#: maintenance.php:58
+#: admin.php:33
+#: admin.php:44
+#: admin.php:50
+#: admin.php:57
+msgid "Settings saved."
+msgstr ""
+
+#: admin.php:38
+msgid "Please provide the name of your custom field."
+msgstr ""
+
+#: admin.php:247
 msgid "This operation will delete all entries from Wordpress Popular Posts' cache table and cannot be undone."
 msgstr ""
 
-#: maintenance.php:58
-#: maintenance.php:66
+#: admin.php:247
+#: admin.php:255
 msgid "Do you want to continue?"
 msgstr ""
 
-#: maintenance.php:66
+#: admin.php:255
 msgid "This operation will delete all stored info from Wordpress Popular Posts' data tables and cannot be undone."
 msgstr ""
 
-#: maintenance.php:78
-msgid "Whoa! What just happened in here?!"
+#: admin.php:269
+msgid "Stats"
+msgstr ""
+
+#: admin.php:270
+msgid "FAQ"
+msgstr ""
+
+#: admin.php:271
+msgid "Tools"
+msgstr ""
+
+#: admin.php:275
+msgid "Click on each tab to see what are the most popular entries on your blog today, this week, last 30 days or all time since Wordpress Popular Posts was installed."
+msgstr ""
+
+#: admin.php:281
+msgid "Order by comments"
+msgstr ""
+
+#: admin.php:282
+msgid "Order by views"
+msgstr ""
+
+#: admin.php:283
+msgid "Order by avg. daily views"
+msgstr ""
+
+#: admin.php:285
+msgid "Limit"
+msgstr ""
+
+#: admin.php:287
+#: admin.php:667
+#: admin.php:683
+#: admin.php:700
+msgid "Apply"
+msgstr ""
+
+#: admin.php:293
+#: wordpress-popular-posts.php:307
+msgid "Last 24 hours"
+msgstr ""
+
+#: admin.php:294
+#: wordpress-popular-posts.php:308
+msgid "Last 7 days"
 msgstr ""
 
-#: maintenance.php:79
-msgid "Previous users of Wordpress Popular Posts will remember that earlier versions of my plugin used to display a Settings page over here. However, from version 2.0 and on things will be slightly different."
+#: admin.php:295
+#: wordpress-popular-posts.php:309
+msgid "Last 30 days"
 msgstr ""
 
-#: maintenance.php:80
-msgid "Wordpress Popular Posts has gone multi-widget so now you'll be able to install multiple instances of my plugin on your sidebars, each with its own unique settings! Because of that, having a General Settings page to handle all instances is simply not a good idea. Fear not, my friend, since you still can set each instance's configuration via"
+#: admin.php:296
+#: wordpress-popular-posts.php:310
+msgid "All-time"
 msgstr ""
 
-#: maintenance.php:80
-msgid "Widgets page"
+#: admin.php:317
+msgid "Frequently Asked Questions"
 msgstr ""
 
-#: maintenance.php:84
-msgid "Help"
+#: admin.php:321
+msgid "What does \"Title\" do?"
 msgstr ""
 
-#: maintenance.php:85
-msgid "What does \"Include pages\" do?"
+#: admin.php:323
+msgid "It allows you to show a heading for your most popular posts listing. If left empty, no heading will be displayed at all."
 msgstr ""
 
-#: maintenance.php:87
-msgid "If checked, Wordpress Popular Posts will also list the most viewed pages on your blog. Enabled by default."
+#: admin.php:326
+msgid "What is Time Range for?"
 msgstr ""
 
-#: maintenance.php:89
+#: admin.php:328
+msgid "It will tell Wordpress Popular Posts to retrieve all posts with most views / comments within the selected time range."
+msgstr ""
+
+#: admin.php:331
+msgid "What is \"Sort post by\" for?"
+msgstr ""
+
+#: admin.php:333
+msgid "It allows you to decide whether to order your popular posts listing by total views, comments, or average views per day."
+msgstr ""
+
+#: admin.php:336
 msgid "What does \"Display post rating\" do?"
 msgstr ""
 
-#: maintenance.php:91
-msgid "If checked, Wordpress Popular Posts will show how your readers are rating your most popular posts. This feature requires having WP-PostRatings plugin installed and enabled on your blog for it to work. Disabled by default."
+#: admin.php:338
+msgid "If checked, Wordpress Popular Posts will show how your readers are rating your most popular posts. This feature requires having WP-PostRatings plugin installed and enabled on your blog for it to work."
 msgstr ""
 
-#: maintenance.php:93
-msgid "What does \"Shorten title output\" do?"
+#: admin.php:341
+msgid "What does \"Shorten title\" do?"
 msgstr ""
 
-#: maintenance.php:95
-msgid "If checked, all posts titles will be shortened to \"n\" characters. A new \"Shorten title to\" option will appear so you can set it to whatever you like. Disabled by default."
+#: admin.php:343
+msgid "If checked, all posts titles will be shortened to \"n\" characters. A new \"Shorten title to\" option will appear so you can set it to whatever you like."
 msgstr ""
 
-#: maintenance.php:97
+#: admin.php:346
 msgid "What does \"Display post excerpt\" do?"
 msgstr ""
 
-#: maintenance.php:99
-msgid "If checked, Wordpress Popular Posts will also include a small extract of your posts in the list. Similarly to the previous option, you will be able to decide how long the post excerpt should be. Disabled by default."
+#: admin.php:348
+msgid "If checked, Wordpress Popular Posts will also include a small extract of your posts in the list. Similarly to the previous option, you will be able to decide how long the post excerpt should be."
 msgstr ""
 
-#: maintenance.php:101
+#: admin.php:351
 msgid "What does \"Keep text format and links\" do?"
 msgstr ""
 
-#: maintenance.php:103
+#: admin.php:353
 msgid "If checked, and if the Post Excerpt feature is enabled, Wordpress Popular Posts will keep the styling tags (eg. bold, italic, etc) that were found in the excerpt. Hyperlinks will remain intact, too."
 msgstr ""
 
-#: maintenance.php:105
-msgid "What does \"Exclude Categories\" do?"
+#: admin.php:356
+msgid "What is \"Post type\" for?"
+msgstr ""
+
+#: admin.php:358
+msgid "This filter allows you to decide which post types to show on the listing. By default, it will retrieve only posts and pages (which should be fine for most cases)."
+msgstr ""
+
+#: admin.php:361
+msgid "What is \"Category(ies) ID(s)\" for?"
+msgstr ""
+
+#: admin.php:363
+msgid "This filter allows you to select which categories should be included or excluded from the listing. A negative sign in front of the category ID number will exclude posts belonging to it from the list, for example. You can specify more than one ID with a comma separated list."
+msgstr ""
+
+#: admin.php:366
+msgid "What is \"Author(s) ID(s)\" for?"
 msgstr ""
 
-#: maintenance.php:107
-msgid "If checked, Wordpress Popular Posts will exclude from the listing all those entries that belong to specific categories. When entering more than one Category ID, you need to use commas to separate them (eg. 1,5,12 - no spaces!). Disabled by default."
+#: admin.php:368
+msgid "Just like the Category filter, this one lets you filter posts by author ID. You can specify more than one ID with a comma separated list."
 msgstr ""
 
-#: maintenance.php:109
+#: admin.php:371
 msgid "What does \"Display post thumbnail\" do?"
 msgstr ""
 
-#: maintenance.php:111
-msgid "If checked, Wordpress Popular Posts will attempt to use the thumbnail you have selected for each post on the Post Edit Screen under Featured Image (this also requires including add_theme_support(\"post-thumbnails\") to your theme's functions.php file). Disabled by default."
+#: admin.php:373
+msgid "If checked, Wordpress Popular Posts will attempt to retrieve the thumbnail of each post. You can set up the source of the thumbnail via Settings - Wordpress Popular Posts - Tools."
 msgstr ""
 
-#: maintenance.php:113
+#: admin.php:376
 msgid "What does \"Display comment count\" do?"
 msgstr ""
 
-#: maintenance.php:115
-msgid "If checked, Wordpress Popular Posts will display how many comments each popular post has got until now. Enabled by default."
+#: admin.php:378
+msgid "If checked, Wordpress Popular Posts will display how many comments each popular post has got in the selected Time Range."
 msgstr ""
 
-#: maintenance.php:117
+#: admin.php:381
 msgid "What does \"Display views\" do?"
 msgstr ""
 
-#: maintenance.php:119
-msgid "If checked, Wordpress Popular Posts will show how many pageviews a single post has gotten so far since this plugin was installed. Disabled by default."
+#: admin.php:383
+msgid "If checked, Wordpress Popular Posts will show how many pageviews a single post has gotten in the selected Time Range."
 msgstr ""
 
-#: maintenance.php:121
+#: admin.php:386
 msgid "What does \"Display author\" do?"
 msgstr ""
 
-#: maintenance.php:123
-msgid "If checked, Wordpress Popular Posts will display the name of the author of each entry listed. Disabled by default."
+#: admin.php:388
+msgid "If checked, Wordpress Popular Posts will display the name of the author of each entry listed."
 msgstr ""
 
-#: maintenance.php:125
+#: admin.php:391
 msgid "What does \"Display date\" do?"
 msgstr ""
 
-#: maintenance.php:127
-msgid "If checked, Wordpress Popular Posts will display the date when each popular posts was published. Disabled by default."
+#: admin.php:393
+msgid "If checked, Wordpress Popular Posts will display the date when each popular posts was published."
 msgstr ""
 
-#: maintenance.php:129
+#: admin.php:396
 msgid "What does \"Use custom HTML Markup\" do?"
 msgstr ""
 
-#: maintenance.php:131
-msgid "If checked, you will be able to customize the HTML markup of your popular posts listing. For example, you can decide whether to wrap your posts in an unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is for you! Disabled by default."
+#: admin.php:398
+msgid "If checked, you will be able to customize the HTML markup of your popular posts listing. For example, you can decide whether to wrap your posts in an unordered list, an ordered list, a div, etc. If you know xHTML/CSS, this is for you!"
 msgstr ""
 
-#: maintenance.php:133
+#: admin.php:401
 msgid "What does \"Use content formatting tags\" do?"
 msgstr ""
 
-#: maintenance.php:135
-msgid "If checked, you can decide the order of the items displayed on each entry. For example, setting it to \"{title}: {summary}\" (without the quotes) would display \"Post title: excerpt of the post here\". Available tags: {image}, {title}, {summary}, {stats} and {rating}. Disabled by default."
+#: admin.php:403
+msgid "If checked, you can decide the order of the items displayed on each entry. For example, setting it to \"{title}: {summary}\" (without the quotes) would display \"Post title: excerpt of the post here\". Available tags: {image}, {title}, {summary}, {stats} and {rating}."
 msgstr ""
 
-#: maintenance.php:137
+#: admin.php:406
 msgid "What are \"Template Tags\"?"
 msgstr ""
 
-#: maintenance.php:139
-msgid "Template Tags are simply php functions that allow you to perform certain actions. For example, Wordpress Popular Posts currently supports two different template tags: get_mostpopular() and wpp_get_views()."
+#: admin.php:408
+msgid "Template Tags are simply php functions that allow you to perform certain actions. For example, Wordpress Popular Posts currently supports two different template tags: wpp_get_mostpopular() and wpp_get_views()."
 msgstr ""
 
-#: maintenance.php:141
+#: admin.php:411
 msgid "What are the template tags that Wordpress Popular Posts supports?"
 msgstr ""
 
-#: maintenance.php:143
-msgid "The following are the template tags supported by Wordpress Popular Posts:"
+#: admin.php:413
+msgid "The following are the template tags supported by Wordpress Popular Posts"
 msgstr ""
 
-#: maintenance.php:146
+#: admin.php:417
 msgid "Template tag"
 msgstr ""
 
-#: maintenance.php:147
-#: maintenance.php:175
+#: admin.php:418
+#: admin.php:451
 msgid "What it does "
 msgstr ""
 
-#: maintenance.php:148
+#: admin.php:419
 msgid "Parameters"
 msgstr ""
 
-#: maintenance.php:149
-#: maintenance.php:178
+#: admin.php:420
+#: admin.php:454
 msgid "Example"
 msgstr ""
 
-#: maintenance.php:153
-msgid "Similar to the widget functionality, this tag retrieves the most popular posts on your blog. While it can be customized via parameters, these are not needed for it to work."
+#: admin.php:426
+msgid "Similar to the widget functionality, this tag retrieves the most popular posts on your blog. This function also accepts parameters so you can customize your popular listing, but these are not required."
 msgstr ""
 
-#: maintenance.php:154
-msgid "Please refer to \"What attributes does Wordpress Popular Posts shortcode [wpp] have?\""
+#: admin.php:427
+msgid "Please refer to \"List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode\"."
 msgstr ""
 
-#: maintenance.php:159
-msgid "Displays the number of views of a single post. Post ID required, or it will return false."
+#: admin.php:432
+msgid "Displays the number of views of a single post. Post ID is required or it will return false."
 msgstr ""
 
-#: maintenance.php:160
+#: admin.php:433
 msgid "Post ID"
 msgstr ""
 
-#: maintenance.php:165
+#: admin.php:440
 msgid "What are \"shortcodes\"?"
 msgstr ""
 
-#: maintenance.php:167
-msgid "Shortcodes are hooks that allow us to call a php function by simply typing something like [shortcode]. With Wordpress Popular Posts, the shortcode [wpp] will let you insert a list of the most popular posts in posts content and pages too! For more information about shortcodes, please visit"
+#: admin.php:442
+msgid "Shortcodes are similar to BB Codes, these allow us to call a php function by simply typing something like [shortcode]. With Wordpress Popular Posts, the shortcode [wpp] will let you insert a list of the most popular posts in posts content and pages too! For more information about shortcodes, please visit"
 msgstr ""
 
-#: maintenance.php:169
-msgid "What attributes does Wordpress Popular Posts shortcode [wpp] have?"
+#: admin.php:444
+msgid "List of parameters accepted by wpp_get_mostpopular() and the [wpp] shortcode"
 msgstr ""
 
-#: maintenance.php:171
-msgid "There are a number of attributes Wordpress Popular Posts currently supports:"
+#: admin.php:446
+msgid "These parameters can be used by both the template tag wpp_get_most_popular() and the shortcode [wpp]."
 msgstr ""
 
-#: maintenance.php:174
-msgid "Attributes"
+#: admin.php:450
+msgid "Parameter"
 msgstr ""
 
-#: maintenance.php:176
+#: admin.php:452
 msgid "Possible values"
 msgstr ""
 
-#: maintenance.php:177
+#: admin.php:453
 msgid "Defaults to"
 msgstr ""
 
-#: maintenance.php:182
+#: admin.php:460
 msgid "Sets a heading for the list"
 msgstr ""
 
-#: maintenance.php:183
-#: maintenance.php:190
-#: maintenance.php:197
-#: maintenance.php:253
-#: maintenance.php:316
-#: maintenance.php:323
-#: maintenance.php:330
-#: maintenance.php:337
-#: maintenance.php:344
+#: admin.php:461
+#: admin.php:468
+#: admin.php:475
+#: admin.php:503
+#: admin.php:510
+#: admin.php:517
+#: admin.php:594
+#: admin.php:601
+#: admin.php:608
+#: admin.php:615
+#: admin.php:622
 msgid "Text string"
 msgstr ""
 
-#: maintenance.php:184
-#: wordpress-popular-posts.php:198
+#: admin.php:462
+#: wordpress-popular-posts.php:250
 msgid "Popular Posts"
 msgstr ""
 
-#: maintenance.php:189
+#: admin.php:467
 msgid "Set the opening tag for the heading of the list"
 msgstr ""
 
-#: maintenance.php:196
+#: admin.php:474
 msgid "Set the closing tag for the heading of the list"
 msgstr ""
 
-#: maintenance.php:203
+#: admin.php:481
 msgid "Sets the maximum number of popular posts to be shown on the listing"
 msgstr ""
 
-#: maintenance.php:204
-#: maintenance.php:232
-#: maintenance.php:239
-#: maintenance.php:260
-#: maintenance.php:267
+#: admin.php:482
+#: admin.php:524
+#: admin.php:531
+#: admin.php:545
+#: admin.php:552
 msgid "Positive integer"
 msgstr ""
 
-#: maintenance.php:210
+#: admin.php:488
 msgid "Tells Wordpress Popular Posts to retrieve the most popular entries within the time range specified by you"
 msgstr ""
 
-#: maintenance.php:217
+#: admin.php:495
 msgid "Sets the sorting option of the popular posts"
 msgstr ""
 
-#: maintenance.php:218
+#: admin.php:496
 msgid "(for average views per day)"
 msgstr ""
 
-#: maintenance.php:224
-msgid "Tells Wordpress Popular Posts whether to consider or not pages while building the popular list"
+#: admin.php:502
+msgid "Defines the type of posts to show on the listing"
 msgstr ""
 
-#: maintenance.php:231
-msgid "If set, Wordpress Popular Posts will shorten each post title to \"n\" characters whenever possible"
+#: admin.php:509
+msgid "If set, Wordpress Popular Posts will retrieve all entries that belong to the specified category(ies) ID(s). If a minus sign is used, the category(ies) will be excluded instead."
 msgstr ""
 
-#: maintenance.php:238
-msgid "If set, Wordpress Popular Posts will build and include an excerpt of \"n\" characters long from the content of each post listed as popular"
+#: admin.php:511
+#: admin.php:518
+msgid "None"
 msgstr ""
 
-#: maintenance.php:245
-msgid "If set, Wordpress Popular Posts will maintaing all styling tags (strong, italic, etc) and hyperlinks found in the excerpt"
+#: admin.php:516
+msgid "If set, Wordpress Popular Posts will retrieve all entries created by specified author(s) ID(s)."
 msgstr ""
 
-#: maintenance.php:252
-msgid "If set, Wordpress Popular Posts will exclude all entries that belong to the specified category(ies)."
+#: admin.php:523
+msgid "If set, Wordpress Popular Posts will shorten each post title to \"n\" characters whenever possible"
 msgstr ""
 
-#: maintenance.php:254
-msgid "None"
+#: admin.php:530
+msgid "If set, Wordpress Popular Posts will build and include an excerpt of \"n\" characters long from the content of each post listed as popular"
 msgstr ""
 
-#: maintenance.php:259
-msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the width for thumbnails"
+#: admin.php:537
+msgid "If set, Wordpress Popular Posts will maintaing all styling tags (strong, italic, etc) and hyperlinks found in the excerpt"
 msgstr ""
 
-#: maintenance.php:266
-msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the height for thumbnails"
+#: admin.php:544
+msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the width for thumbnails"
 msgstr ""
 
-#: maintenance.php:273
-msgid "Wordpress Popular Posts will use the thumbnails selected by you. *Requires enabling The Post Thumbnail feature on your theme*"
+#: admin.php:551
+msgid "If set, and if your current server configuration allows it, you will be able to display thumbnails of your posts. This attribute sets the height for thumbnails"
 msgstr ""
 
-#: maintenance.php:280
+#: admin.php:558
 msgid "If set, and if the WP-PostRatings plugin is installed and enabled on your blog, Wordpress Popular Posts will show how your visitors are rating your entries"
 msgstr ""
 
-#: maintenance.php:287
+#: admin.php:565
 msgid "If set, Wordpress Popular Posts will show how many comments each popular post has got until now"
 msgstr ""
 
-#: maintenance.php:294
+#: admin.php:572
 msgid "If set, Wordpress Popular Posts will show how many views each popular post has got since it was installed"
 msgstr ""
 
-#: maintenance.php:301
+#: admin.php:579
 msgid "If set, Wordpress Popular Posts will show who published each popular post on the list"
 msgstr ""
 
-#: maintenance.php:308
-msgid "If set, Wordpress Popular Posts will when each popular post on the list was published"
+#: admin.php:586
+msgid "If set, Wordpress Popular Posts will display the date when each popular post on the list was published"
 msgstr ""
 
-#: maintenance.php:315
+#: admin.php:593
 msgid "Sets the date format"
 msgstr ""
 
-#: maintenance.php:322
+#: admin.php:600
 msgid "Sets the opening tag for the listing"
 msgstr ""
 
-#: maintenance.php:329
+#: admin.php:607
 msgid "Sets the closing tag for the listing"
 msgstr ""
 
-#: maintenance.php:336
+#: admin.php:614
 msgid "Sets the opening tag for each item on the list"
 msgstr ""
 
-#: maintenance.php:343
+#: admin.php:621
 msgid "Sets the closing tag for each item on the list"
 msgstr ""
 
-#: maintenance.php:350
+#: admin.php:628
 msgid "If set, this option will allow you to decide the order of the contents within each item on the list."
 msgstr ""
 
-#: maintenance.php:357
+#: admin.php:635
 msgid "If set, you can decide the order of each content inside a single item on the list. For example, setting it to \"{title}: {summary}\" would output something like \"Your Post Title: summary here\". This attribute requires do_pattern to be true."
 msgstr ""
 
-#: maintenance.php:358
+#: admin.php:636
 msgid "Available tags"
 msgstr ""
 
-#: maintenance.php:367
-msgid "Maintenance Settings"
+#: admin.php:651
+msgid "Here you will find a handy group of options to tweak Wordpress Popular Posts."
 msgstr ""
 
-#: maintenance.php:368
-msgid "Wordpress Popular Posts keeps historical data of your most popular entries for up to 30 days. If for some reason you need to clear the cache table, or even both historical and cache tables, please use the buttons below to do so."
+#: admin.php:653
+msgid "Thumbnail source"
 msgstr ""
 
-#: maintenance.php:371
-msgid "Empty cache"
+#: admin.php:654
+msgid "Tell Wordpress Popular Posts where it should get thumbnails from"
 msgstr ""
 
-#: maintenance.php:372
-msgid "Use this button to manually clear entries from WPP cache only"
+#: admin.php:659
+msgid "Featured image"
 msgstr ""
 
-#: maintenance.php:378
-msgid "Clear all data"
+#: admin.php:660
+msgid "First image on post"
 msgstr ""
 
-#: maintenance.php:379
-msgid "Use this button to manually clear entries from all WPP data tables"
+#: admin.php:661
+msgid "Custom field"
 msgstr ""
 
-#: maintenance.php:387
-msgid "Do you like this plugin?"
+#: admin.php:664
+msgid "Custom field name"
 msgstr ""
 
-#: maintenance.php:387
-msgid "Rate Wordpress Popular Posts!"
+#: admin.php:673
+msgid "Wordpress Popular Posts Stylesheet"
 msgstr ""
 
-#: maintenance.php:387
-msgid "Rate it 5"
+#: admin.php:674
+msgid "By default, the plugin includes a stylesheet called wpp.css which you can use to style your popular posts listing. If you wish to use your own stylesheet or do not want it to have it included in the header section of your site, use this."
 msgstr ""
 
-#: maintenance.php:387
-msgid "on the official Plugin Directory!"
+#: admin.php:679
+#: admin.php:696
+msgid "Enabled"
 msgstr ""
 
-#: maintenance.php:388
-msgid "Do you love this plugin?"
+#: admin.php:680
+#: admin.php:697
+msgid "Disabled"
 msgstr ""
 
-#: maintenance.php:388
-#: maintenance.php:389
-msgid "Buy me a beer!"
+#: admin.php:689
+msgid "Data tools"
 msgstr ""
 
-#: maintenance.php:388
-msgid "Each donation motivates me to keep releasing free stuff for the Wordpress community!"
+#: admin.php:691
+msgid "AJAX update. If you are using a caching plugin such as WP Super Cache, enabling this feature will keep the popular list from being cached."
 msgstr ""
 
-#: stats.php:90
-msgid "Click on each tab to see what are the most popular entries on your blog today, this week, last 30 days or all time since Wordpress Popular Posts was installed."
+#: admin.php:706
+msgid "Wordpress Popular Posts keeps historical data of your most popular entries for up to 30 days. If for some reason you need to clear the cache table, or even both historical and cache tables, please use the buttons below to do so."
 msgstr ""
 
-#: stats.php:92
-msgid "Yesterday"
+#: admin.php:707
+msgid "Empty cache"
 msgstr ""
 
-#: stats.php:93
-msgid "Today"
+#: admin.php:707
+msgid "Use this button to manually clear entries from WPP cache only"
 msgstr ""
 
-#: stats.php:94
-msgid "Weekly"
+#: admin.php:708
+msgid "Clear all data"
 msgstr ""
 
-#: stats.php:95
-msgid "Monthly"
+#: admin.php:708
+msgid "Use this button to manually clear entries from all WPP data tables"
 msgstr ""
 
-#: stats.php:96
-#: wordpress-popular-posts.php:260
-msgid "All-time"
+#: admin.php:714
+msgid "Do you like this plugin?"
 msgstr ""
 
-#: wordpress-popular-posts.php:251
-msgid "Title:"
+#: admin.php:714
+msgid "Rate Wordpress Popular Posts!"
 msgstr ""
 
-#: wordpress-popular-posts.php:253
-msgid "Show up to:"
+#: admin.php:714
+msgid "Rate it"
 msgstr ""
 
-#: wordpress-popular-posts.php:254
-msgid "posts"
+#: admin.php:714
+msgid "on the official Plugin Directory!"
 msgstr ""
 
-#: wordpress-popular-posts.php:255
-msgid "Time Range:"
+#: admin.php:715
+msgid "Do you love this plugin?"
 msgstr ""
 
-#: wordpress-popular-posts.php:257
-msgid "Last 24 hours"
+#: admin.php:715
+#: admin.php:716
+msgid "Buy me a beer!"
 msgstr ""
 
-#: wordpress-popular-posts.php:258
-msgid "Last 7 days"
+#: admin.php:715
+msgid "Each donation motivates me to keep releasing free stuff for the Wordpress community!"
 msgstr ""
 
-#: wordpress-popular-posts.php:259
-msgid "Last 30 days"
+#: wordpress-popular-posts.php:47
+msgid "The most Popular Posts on your blog."
+msgstr ""
+
+#: wordpress-popular-posts.php:301
+msgid "Title:"
+msgstr ""
+
+#: wordpress-popular-posts.php:301
+#: wordpress-popular-posts.php:303
+#: wordpress-popular-posts.php:305
+#: wordpress-popular-posts.php:313
+#: wordpress-popular-posts.php:324
+#: wordpress-popular-posts.php:326
+#: wordpress-popular-posts.php:330
+#: wordpress-popular-posts.php:334
+#: wordpress-popular-posts.php:343
+#: wordpress-popular-posts.php:355
+#: wordpress-popular-posts.php:367
+#: wordpress-popular-posts.php:368
+#: wordpress-popular-posts.php:369
+#: wordpress-popular-posts.php:370
+#: wordpress-popular-posts.php:385
+#: wordpress-popular-posts.php:396
+msgid "What is this?"
+msgstr ""
+
+#: wordpress-popular-posts.php:303
+msgid "Show up to:"
+msgstr ""
+
+#: wordpress-popular-posts.php:304
+msgid "posts"
+msgstr ""
+
+#: wordpress-popular-posts.php:305
+msgid "Time Range:"
 msgstr ""
 
-#: wordpress-popular-posts.php:263
+#: wordpress-popular-posts.php:313
 msgid "Sort posts by:"
 msgstr ""
 
-#: wordpress-popular-posts.php:265
+#: wordpress-popular-posts.php:315
 msgid "Comments"
 msgstr ""
 
-#: wordpress-popular-posts.php:266
+#: wordpress-popular-posts.php:316
 msgid "Total views"
 msgstr ""
 
-#: wordpress-popular-posts.php:267
+#: wordpress-popular-posts.php:317
 msgid "Avg. daily views"
 msgstr ""
 
-#: wordpress-popular-posts.php:270
-msgid "Include pages"
+#: wordpress-popular-posts.php:322
+msgid "Posts settings"
 msgstr ""
 
-#: wordpress-popular-posts.php:272
+#: wordpress-popular-posts.php:324
 msgid "Display post rating"
 msgstr ""
 
-#: wordpress-popular-posts.php:274
-msgid "Shorten title output"
+#: wordpress-popular-posts.php:326
+msgid "Shorten title"
 msgstr ""
 
-#: wordpress-popular-posts.php:276
+#: wordpress-popular-posts.php:328
 msgid "Shorten title to"
 msgstr ""
 
-#: wordpress-popular-posts.php:276
-#: wordpress-popular-posts.php:283
+#: wordpress-popular-posts.php:328
+#: wordpress-popular-posts.php:335
 msgid "characters"
 msgstr ""
 
-#: wordpress-popular-posts.php:278
+#: wordpress-popular-posts.php:330
 msgid "Display post excerpt"
 msgstr ""
 
-#: wordpress-popular-posts.php:281
+#: wordpress-popular-posts.php:333
 msgid "Excerpt Properties"
 msgstr ""
 
-#: wordpress-popular-posts.php:282
+#: wordpress-popular-posts.php:334
 msgid "Keep text format and links"
 msgstr ""
 
-#: wordpress-popular-posts.php:283
+#: wordpress-popular-posts.php:335
 msgid "Excerpt length:"
 msgstr ""
 
-#: wordpress-popular-posts.php:287
-msgid "Exclude categories"
+#: wordpress-popular-posts.php:343
+msgid "Filters:"
 msgstr ""
 
-#: wordpress-popular-posts.php:290
-msgid "Categories to exclude"
+#: wordpress-popular-posts.php:344
+msgid "Post type(s):"
 msgstr ""
 
-#: wordpress-popular-posts.php:291
-msgid "ID(s) (comma separated, no spaces):"
+#: wordpress-popular-posts.php:346
+msgid "Category(ies) ID(s):"
 msgstr ""
 
-#: wordpress-popular-posts.php:297
+#: wordpress-popular-posts.php:348
+msgid "Author(s) ID(s):"
+msgstr ""
+
+#: wordpress-popular-posts.php:354
 msgid "Thumbnail settings"
 msgstr ""
 
-#: wordpress-popular-posts.php:298
+#: wordpress-popular-posts.php:355
 msgid "Display post thumbnail"
 msgstr ""
 
-#: wordpress-popular-posts.php:300
+#: wordpress-popular-posts.php:357
 msgid "Width:"
 msgstr ""
 
-#: wordpress-popular-posts.php:301
-#: wordpress-popular-posts.php:303
+#: wordpress-popular-posts.php:358
+#: wordpress-popular-posts.php:360
 msgid "px"
 msgstr ""
 
-#: wordpress-popular-posts.php:302
+#: wordpress-popular-posts.php:359
 msgid "Height:"
 msgstr ""
 
-#: wordpress-popular-posts.php:309
+#: wordpress-popular-posts.php:366
 msgid "Stats Tag settings"
 msgstr ""
 
-#: wordpress-popular-posts.php:310
+#: wordpress-popular-posts.php:367
 msgid "Display comment count"
 msgstr ""
 
-#: wordpress-popular-posts.php:311
+#: wordpress-popular-posts.php:368
 msgid "Display views"
 msgstr ""
 
-#: wordpress-popular-posts.php:312
+#: wordpress-popular-posts.php:369
 msgid "Display author"
 msgstr ""
 
-#: wordpress-popular-posts.php:313
+#: wordpress-popular-posts.php:370
 msgid "Display date"
 msgstr ""
 
-#: wordpress-popular-posts.php:316
+#: wordpress-popular-posts.php:373
 msgid "Date Format"
 msgstr ""
 
-#: wordpress-popular-posts.php:327
+#: wordpress-popular-posts.php:384
 msgid "HTML Markup settings"
 msgstr ""
 
-#: wordpress-popular-posts.php:328
+#: wordpress-popular-posts.php:385
 msgid "Use custom HTML Markup"
 msgstr ""
 
-#: wordpress-popular-posts.php:331
+#: wordpress-popular-posts.php:388
 msgid "Before / after title:"
 msgstr ""
 
-#: wordpress-popular-posts.php:333
+#: wordpress-popular-posts.php:390
 msgid "Before / after Popular Posts:"
 msgstr ""
 
-#: wordpress-popular-posts.php:335
+#: wordpress-popular-posts.php:392
 msgid "Before / after each post:"
 msgstr ""
 
-#: wordpress-popular-posts.php:339
+#: wordpress-popular-posts.php:396
 msgid "Use content formatting tags"
 msgstr ""
 
-#: wordpress-popular-posts.php:342
+#: wordpress-popular-posts.php:399
 msgid "Content format:"
 msgstr ""
 
-#: wordpress-popular-posts.php:424
+#: wordpress-popular-posts.php:505
 msgid "Success! The cache table has been cleared!"
 msgstr ""
 
-#: wordpress-popular-posts.php:426
+#: wordpress-popular-posts.php:507
 msgid "Error: cache table does not exist."
 msgstr ""
 
-#: wordpress-popular-posts.php:432
+#: wordpress-popular-posts.php:513
 msgid "Success! All data have been cleared!"
 msgstr ""
 
-#: wordpress-popular-posts.php:434
+#: wordpress-popular-posts.php:515
 msgid "Error: one or both data tables are missing."
 msgstr ""
 
-#: wordpress-popular-posts.php:437
+#: wordpress-popular-posts.php:518
 msgid "Invalid action."
 msgstr ""
 
-#: wordpress-popular-posts.php:440
+#: wordpress-popular-posts.php:521
 msgid "Sorry, you do not have enough permissions to do this. Please contact the site administrator for support."
 msgstr ""
 
-#: wordpress-popular-posts.php:643
+#: wordpress-popular-posts.php:852
 msgid "Sorry. No data so far."
 msgstr ""
 
-#: wordpress-popular-posts.php:690
-msgid " comment(s)"
+#: wordpress-popular-posts.php:928
+msgid "comment(s)"
 msgstr ""
 
-#: wordpress-popular-posts.php:693
-msgid " view(s)"
+#: wordpress-popular-posts.php:932
+msgid "view(s)"
 msgstr ""
 
-#: wordpress-popular-posts.php:699
-msgid " view(s) per day"
+#: wordpress-popular-posts.php:935
+msgid "view(s) per day"
 msgstr ""
 
-#: wordpress-popular-posts.php:712
-#: wordpress-popular-posts.php:714
+#: wordpress-popular-posts.php:943
 msgid "by"
 msgstr ""
 
-#: wordpress-popular-posts.php:719
-#: wordpress-popular-posts.php:721
+#: wordpress-popular-posts.php:947
 msgid "posted on"
 msgstr ""
 
-#: wordpress-popular-posts.php:1030
+#: wordpress-popular-posts.php:1292
 msgid "Your Wordpress version is too old. Wordpress Popular Posts Plugin requires at least version 2.8 to function correctly. Please update your blog via Tools &gt; Upgrade."
 msgstr ""
 
-#: wordpress-popular-posts.php:1157
+#: wordpress-popular-posts.php:1416
 msgid "Wordpress Popular Posts Stats"
 msgstr ""