<?php
/*
Plugin Name: Restrict Page Editing
Description: Restricts users from editing Pages unless they have edit_others_pages capability 
Version: 1.0
Author: Owen Winkler
Author URI: http://www.asymptomatic.net
Plugin URI: http://redalt.com/wiki/Restrict+Page+Editing
*/

class Restrict_Pages
{
	function Restrict_Pages()
	{
		add_filter('user_has_cap', array(&$this, 'user_has_cap'), 10, 3);
		add_filter('capabilities_list', array(&$this, 'capabilities_list'));
	}
	
	function user_has_cap()
	{
		global $post, $current_user;
		$vargs = func_get_args();
		list($allcaps, $reqcaps, $args) = $vargs;

		if($allcaps['edit_others_pages'] == 1) return $allcaps;		
		
		if(($reqcaps[0] == 'edit_pages') && (is_numeric($args[2]))){
			$post = get_post($args[2]);
			if($post->post_author != $current_user->id) {
				$allcaps = array();				
			}
		}
		return $allcaps;
	}
	
	function capabilities_list($caplist)
	{
		$caplist[] = 'edit_others_pages';
		return $caplist;
	}
}

$restrict_pages = new Restrict_Pages();

?>