web-dev-qa-db-ja.com

一定期間後のノードの「ロック」

特定のタイプのノードを15分後に「ロック」できるようにしたいので、そのタイプのノードが作成されてから最初の15分間、作成者はそのノードを編集できますが、15分後には特定の権限を持つユーザーのみが渡され、そのノードを編集できます。

この結果を達成するための最良の方法は何ですか?

3
Jim

あなたはこのようなことをすることができます:

/**
 * 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);
}
9
David Thomas

モジュール edit_limit で利用可能drupal 2013年5月28日以降の7バージョン、Davidの回答のわずか数日前。
OPの要件に固有のモジュールページからのほんの数行。

ノード編集時間制限

ノードは特定の時間枠に制限できます。これを使用すると、ノードは、最初にノードが保存されたときから、サイト管理者が設定した制限時間内でのみ編集できます。これは、コンテンツタイプのサブセットに制限できます。

1
kiranking