Archive for August, 2012

Advanced Permalinks Plugin RSS Feed Fix

I use the Advanced Permalinks plugin on my site because I changed my permalink structure and didn’t want incoming links to return 404 errors. However, at some point the plugin has broken the RSS feed functionality of WordPress. When I visit the feed url on my site, a blank page is returned with no errors.

It appears that this is due to the Advanced Permalinks plugin ending the php script if the redirect parameter is present, even if the plugin didn’t preform any redirect.

Here is a patch file to fix the problem (For Advanced Permalinks 0.1.21)

--- advanced-permalinks-0.1.21/advanced-permalinks.php	2012-05-05 09:06:10.000000000 -0600
+++ advanced-permalinks/advanced-permalinks.php	2012-08-31 14:13:06.006393800 -0600
@@ -451,13 +451,18 @@
 		// Have we triggered a redirect?
 		if (isset ($vars->query_vars['redirect']))
 		{
-			if (isset ($vars->query_vars['author_name']))
+            $didRedirect = false;
+			if (isset ($vars->query_vars['author_name'])){
 				wp_redirect (get_author_posts_url (0, $vars->query_vars['author_name']));
-			else if (isset ($vars->query_vars['category_name']))
+                $didRedirect = true;
+            }
+			else if (isset ($vars->query_vars['category_name'])){
 				wp_redirect (get_category_link (get_category_by_path ($vars->query_vars['category_name'])));
+                $didRedirect = true;
+            }
 
-			// Stop anything else
-			die ();
+            if($didRedirect)
+                die();
 		}
 
 		// Workaround for WP 2.3

Save the text to a file and run patch against your Advanced Permalinks directory.

Or, if you want to manually modify the plugin, open up the advanced-permalinks.php file in the editor, and change the contents of the parse_request function to be:

/**
 * Hook into the 'parse_request' action and check if our rewrite rules require a redirection
 *
 * @param array $vars Variables
 * @return array Variables
 **/
 
function parse_request ($vars)
{
	// Have we triggered a redirect?
	if (isset ($vars->query_vars['redirect']))
	{
		$didRedirect = false;
		if (isset ($vars->query_vars['author_name'])){
			wp_redirect (get_author_posts_url (0, $vars->query_vars['author_name']));
			$didRedirect = true;
		}
		else if (isset ($vars->query_vars['category_name'])){
			wp_redirect (get_category_link (get_category_by_path ($vars->query_vars['category_name'])));
			$didRedirect = true;
		}
 
		if($didRedirect)
			die();
	}
 
	// Workaround for WP 2.3
	global $wp_db_version;
	if ($wp_db_version > 6000 && isset ($vars->query_vars['category_name']))
	{
		$vars->query_vars['category_name'] = str_replace ('.html', '', $vars->query_vars['category_name']);
		$vars->matched_query               = str_replace ('.html', '', $vars->matched_query);
	}
 
	return $vars;
}

7 Comments

Thinkpad R500 Ubuntu Fan Control

Ubuntu has a rather nasty bug when it comes to temperature control on the Thinkpad line of laptops. The fans run at a lower RPM than necessary, which results in overheating and random shutdowns. The overheating has also caused perminant damage to some of the cells in my battery, significantly decreasing battery life.

Thinkfan is a utility that manually adjusts the speed of the fan based off of the system temperature, rather than leaving it up to acpi.

Setup steps:

  1. Install thinkfan:
    apt-get install thinkfan
  2. Set thinkpad_acpi to allow manual fan control:
    echo "options thinkpad_acpi fan_control=1" >> /etc/modprobe.d/thinkfan.conf
  3. Set thinkfan to start automatically by setting
    START=yes

    in /etc/default/thinkfan

  4. Either reboot or reload the thinkpad_acpi module, and start thinkfan
    rmmod thinkpad_acpi && modprobe thinkpad_acpi fan_control=1 && /etc/init.d/thinkfan start

You can watch the fan information by issuing:

watch -n 0.5 'cat /proc/acpi/ibm/thermal ; cat /proc/acpi/ibm/fan | egrep "(speed|level):" ; cat /proc/cpuinfo | grep MHz'

If “level” has a value between 0 and 7, and changes by times, your thinkfan daemon is working.

Thanks to Jamie Strandboge and mejo

No Comments

VMware Workstation 8.0.4 on Ubuntu 12.04 (Precise Pangolin)

After doing a fresh install of Ubuntu 12.04 I had problems installing running VMware Workstation 8; when building the kernel modules it failed to build the network module (vmnet).

The fix is to patch the kernel modules (as VMWare hasn’t responded to changes in the 3.2 Kernel).

  1. Download the patch from here: vmware-8.0.4_patch_linux-3.2.tar
  2. Download and extract the patch:
    tar xf vmware-8.0.4_patch_linux-3.2.tar
  3. Enable the execute flag on the extracted script (if necessary):
    chmod +x patch-modules_3.2.0.sh
  4. Install the ubuntu “patch” utility (If necessary):
    sudo apt-get install patch
  5. Run the script to patch the modules:
    sudo ./patch-modules_3.2.0.sh

    When I ran the script it tried to build the modules and reported errors, however, the next time I ran workstation it built and loaded modules without problems

Special thanks to Martin1000 in the VMWare Forums for the tips.

, , , ,

No Comments