Esempio n. 1
0
 /**
  * {@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'])));
     }
 }
Esempio n. 2
0
 /**
  * {@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);
         }
     }
 }
Esempio n. 3
0
 /**
  * {@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'])));
     }
 }