/** * {@inheritDoc} */ public function buildQuery(QueryBuilder $qb, array $query) { parent::buildQuery($qb, $query); if (isset($query['id'])) { $qb->andWhere($qb->expr()->eq('Omeka\\Entity\\Item.id', $query['id'])); } if (isset($query['item_set_id'])) { $itemSets = $query['item_set_id']; if (!is_array($itemSets)) { $itemSets = [$itemSets]; } $itemSets = array_filter($itemSets, 'is_numeric'); $itemSetAlias = $this->createAlias(); $qb->innerJoin($this->getEntityClass() . '.itemSets', $itemSetAlias, 'WITH', $qb->expr()->in("{$itemSetAlias}.id", $this->createNamedParameter($qb, $itemSets))); } if (isset($query['site_id'])) { $siteBlockAttachmentsAlias = $this->createAlias(); $qb->innerJoin('Omeka\\Entity\\Item.siteBlockAttachments', $siteBlockAttachmentsAlias); $sitePageBlockAlias = $this->createAlias(); $qb->innerJoin("{$siteBlockAttachmentsAlias}.block", $sitePageBlockAlias); $sitePageAlias = $this->createAlias(); $qb->innerJoin("{$sitePageBlockAlias}.page", $sitePageAlias); $siteAlias = $this->createAlias(); $qb->innerJoin("{$sitePageAlias}.site", $siteAlias); $qb->andWhere($qb->expr()->eq("{$siteAlias}.id", $this->createNamedParameter($qb, $query['site_id']))); } }
/** * {@inheritDoc} */ public function buildQuery(QueryBuilder $qb, array $query) { parent::buildQuery($qb, $query); // Select item sets to which the current user can assign an item. if (isset($query['is_open'])) { $acl = $this->getServiceLocator()->get('Omeka\\Acl'); if (!$acl->userIsAllowed('Omeka\\Entity\\ItemSet', 'view-all')) { $expr = $qb->expr()->eq('Omeka\\Entity\\ItemSet.isOpen', $qb->expr()->literal(true)); $identity = $this->getServiceLocator()->get('Omeka\\AuthenticationService')->getIdentity(); if ($identity) { $expr = $qb->expr()->orX($expr, $qb->expr()->eq('Omeka\\Entity\\ItemSet.owner', $this->createNamedParameter($qb, $identity->getId()))); } $qb->andWhere($expr); } } }
/** * {@inheritDoc} */ public function buildQuery(QueryBuilder $qb, array $query) { parent::buildQuery($qb, $query); if (isset($query['id'])) { $qb->andWhere($qb->expr()->eq('Omeka\\Entity\\Media.id', $query['id'])); } if (isset($query['site_id'])) { $itemAlias = $this->createAlias(); $qb->innerJoin('Omeka\\Entity\\Media.item', $itemAlias); $siteBlockAttachmentsAlias = $this->createAlias(); $qb->innerJoin("{$itemAlias}.siteBlockAttachments", $siteBlockAttachmentsAlias); $sitePageBlockAlias = $this->createAlias(); $qb->innerJoin("{$siteBlockAttachmentsAlias}.block", $sitePageBlockAlias); $sitePageAlias = $this->createAlias(); $qb->innerJoin("{$sitePageBlockAlias}.page", $sitePageAlias); $siteAlias = $this->createAlias(); $qb->innerJoin("{$sitePageAlias}.site", $siteAlias); $qb->andWhere($qb->expr()->eq("{$siteAlias}.id", $this->createNamedParameter($qb, $query['site_id']))); } }