Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

OctoberCMS

EntityFieldQuery, node access и count

Допустим, есть вот такой код. Мы хотим получить количество нод заданного типа с заданными тегами, но считать только ноды, к которым есть доступ у текущего юзера (см. addTag).

$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->entityCondition('bundle', 'my_node_type');
$query->propertyCondition('status', 1);
$query->fieldCondition('field_taxonomy_term', 'tid', array(1, 2, 3));
$query->addTag('node_access');
$query->count();
$result = $query->execute();

Удивительное дело, но если текущий юзер не админ и не пропускает node access, в $result количество доступных материалов не попадет. Вместо этого случится PDOException.

Причем вредит одновременное присутствие фильтра по fieldCondition() и тега node_access. Если убрать либо одно, либо другое — запрос работает.

Комментарии