特定のタイプのノードを15分後に「ロック」できるようにしたいので、そのタイプのノードが作成されてから最初の15分間、作成者はそのノードを編集できますが、15分後には特定の権限を持つユーザーのみが渡され、そのノードを編集できます。
この結果を達成するための最良の方法は何ですか?
あなたはこのようなことをすることができます:
/**
* Implements hook_menu_alter
*/
function MY_MODULE_menu_alter(&$items){
$items['node/%node/edit']['access callback'] = 'MY_MODULE_check_node_access';
}
/**
* Custom menu access callback for node/%node/edit
*/
function MY_MODULE_check_node_access($op, $node){
global $user;
// Note $op and $node are passed in default node_menu access arguments
// Allow bypass by users with administer nodes permission
if (($op == 'update') && (!user_access('administer nodes'))) {
// Allow edit access to node author if within time limit
if ($user->uid == $node->uid) {
$limit = variable_get('node_edit_limit', (15 * 60));
if ((REQUEST_TIME - $node->created) > $limit) {
drupal_set_message(t('Edit time limit exceeded'));
return FALSE;
} else {
return TRUE;
}
}
}
// Fallback to regular node_access checks
return node_access($op, $node);
}
モジュール edit_limit で利用可能drupal 2013年5月28日以降の7バージョン、Davidの回答のわずか数日前。
OPの要件に固有のモジュールページからのほんの数行。
ノード編集時間制限
ノードは特定の時間枠に制限できます。これを使用すると、ノードは、最初にノードが保存されたときから、サイト管理者が設定した制限時間内でのみ編集できます。これは、コンテンツタイプのサブセットに制限できます。