Ограничение по количеству создаваемых нод пользователем

Главные вкладки

Аватар пользователя bsc-man bsc-man 20 апреля 2018 в 13:51

Добрый день.

Суть вопроса: пользователям с id роли равной '4' нужно разрешить создавать материал типа "once_per_year" один раз в течение календарного года.

Сам принцип хука понятен:

<?php
function limit_access_node_access($node$op$account) {
                if (
$op == 'create' and $node->type == 'once_per_year' and array_key_exists(4$account->roles) == 'TRUE' and ...) {
      
       return 
NODE_ACCESS_DENY;}
  }
 return 
NODE_ACCESS_IGNORE
}
?>

Подскажите, как в условии также проверить, создан ли уже материал в этом временном интервале пользователем или нет.

Думаю через $node->created, но не понимаю как правильно описать условие.

Спасибо.

Комментарии

Аватар пользователя bsc-man bsc-man 20 апреля 2018 в 20:49

Спасибо, то что нужно! Но еще небольшая деталь: нужно чтобы не общее количество материалов считалось, а только созданное юзером. Может подскажете?

Аватар пользователя bsc-man bsc-man 21 апреля 2018 в 20:28

Точно, затупил. Но возник еще вопрос. Добавляю условие по проверке uid текущего пользователя:

<?php
global $user;
$a$user->uid;

$d 1524331500;
$di 1524321200

$counter db_query("SELECT COUNT(*) FROM {node} WHERE node.type = :type AND node.created > :date_start AND node.created < :date_end AND node.uid = :uid"
, array(':type' => 'article'':date_start' => $di':date_end' => $d':uid' => $a))->fetchField();

....

?>

Ошибки не выдает, но при проверке, я понимаю что условие по uid не выполняется. Если его убрать - все условия работают правильно в запросе. Может я не верно использую $user->uid;?

Спасибо.