This one wouldn't be that bad.

Just use something like the below in addition to an admin form that lets the user set the 'yourmodule_edit_expire' variable.

Brian

function yourmodule_perm() {
 return array('ignore edit time restriction');
}

function yourmodule_menu_alter(&$items) {
$items['node/%node/edit']['access callback'] = 'yourmodule_access_callback';
 $items['node/%node/edit']['access arguments'] = array('update', 1);
}

function yourmodule_access_callback($op, $nid) {
 if (is_int($nid)) {
$created = db_result(db_query('SELECT created FROM {node} WHERE nid = %d', $nid)); // Created will be FALSE if the node doesn't exist, or a positive integer if it does.
   if ($created) {

     // Deny edit access if we are past the edit expiry time.
     $expiry_time = $created + variable_get('yourmodule_edit_expire', 0);
if (time() < $expiry_time && !user_access('ignore edit time restriction') {
       return FALSE;
     }
   }
 }

 // Now send through the normal node_access check.
 return node_access($op, $nid);
}

Jeff Greenberg wrote:
The last interesting requirement is sort of like creating a new post in a forum, in that the node, once created, can be edited, based on permissions, like normal, but only for an amount of time selectable (globally) in the admin panel. So the user who creates the node can edit it for 12 hours, after which the ability to edit it goes away.


Reply via email to