/**
  * Generate query expression for a Criterion this handler accepts.
  *
  * accept() must be called before calling this method.
  *
  * @param \eZ\Publish\Core\Search\Legacy\Content\Common\Gateway\CriteriaConverter $converter
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function handle(CriteriaConverter $converter, SelectQuery $query, Criterion $criterion)
 {
     $idList = array();
     foreach ($criterion->value as $identifier) {
         $idList[] = $this->contentTypeHandler->loadByIdentifier($identifier)->id;
     }
     return $query->expr->in($this->dbHandler->quoteColumn('contentclass_id', 'ezcontentobject'), $idList);
 }
 /**
  * Map field value to a proper Elasticsearch filter representation.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  * @param \eZ\Publish\Core\Search\Elasticsearch\Content\CriterionVisitorDispatcher $dispatcher
  * @param array $languageFilter
  *
  * @return mixed
  */
 public function visitFilter(Criterion $criterion, Dispatcher $dispatcher, array $languageFilter)
 {
     if (count($criterion->value) > 1) {
         $idList = array();
         foreach ($criterion->value as $identifier) {
             $idList[] = $this->contentTypeHandler->loadByIdentifier($identifier)->id;
         }
         $filter = array('terms' => array('type_id' => $idList));
     } else {
         $filter = array('term' => array('type_id' => $this->contentTypeHandler->loadByIdentifier($criterion->value[0])->id));
     }
     return $filter;
 }
 /**
  * Load a (defined) content type by identifier
  *
  * @param string $identifier
  * @return \eZ\Publish\SPI\Persistence\Content\Type
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If defined type is not found
  */
 public function loadByIdentifier($identifier)
 {
     if (isset($this->contentTypes['identifier'][$identifier])) {
         return $this->contentTypes['identifier'][$identifier];
     }
     return $this->contentTypes['identifier'][$identifier] = $this->innerHandler->loadByIdentifier($identifier);
 }
 /**
  * Get a Content Type object by identifier
  *
  * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException If content type with the given identifier and status DEFINED can not be found
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentValue If given identifier is not a string
  *
  * @param string $identifier
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType
  */
 public function loadContentTypeByIdentifier($identifier)
 {
     if (!is_string($identifier)) {
         throw new InvalidArgumentValue('$identifier', $identifier);
     }
     $spiContentType = $this->contentTypeHandler->loadByIdentifier($identifier);
     return $this->buildContentTypeDomainObject($spiContentType);
 }
 /**
  * Get a Content Type object by identifier.
  *
  * @throws \eZ\Publish\Core\Base\Exceptions\NotFoundException If content type with the given identifier and status DEFINED can not be found
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentValue If given identifier is not a string
  *
  * @param string $identifier
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType
  */
 public function loadContentTypeByIdentifier($identifier)
 {
     if (!is_string($identifier)) {
         throw new InvalidArgumentValue('$identifier', $identifier);
     }
     $spiContentType = $this->contentTypeHandler->loadByIdentifier($identifier);
     return $this->contentTypeDomainMapper->buildContentTypeDomainObject($spiContentType, array_map(function ($id) {
         return $this->contentTypeHandler->loadGroup($id);
     }, $spiContentType->groupIds));
 }
 /**
  * Get a Content Type object by identifier
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If content type with the given identifier and status DEFINED can not be found
  *
  * @param string $identifier
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType
  */
 public function loadContentTypeByIdentifier($identifier)
 {
     if (!is_string($identifier)) {
         throw new InvalidArgumentValue('$identifier', $identifier);
     }
     #$solrserverconfig = Globals::getSolrServerConfig();
     $solrclasses = Globals::getSolrClassesConfig();
     if (array_key_exists($identifier, $solrclasses)) {
         $fieldDefinitions = array();
         foreach ($solrclasses[$identifier]["fields"] as $solrclassatt) {
             $fieldDefinitions[] = new \eZ\Publish\Core\Repository\Values\ContentType\FieldDefinition(array("id" => $solrclassatt["id"], "identifier" => $solrclassatt["identifier"], "fieldTypeIdentifier" => $solrclassatt["fieldTypeIdentifier"], "names" => $solrclassatt["names"], "descriptions" => $solrclassatt["descriptions"], "fieldGroup" => $solrclassatt["fieldGroup"], "position" => (int) $solrclassatt["position"], "isTranslatable" => $solrclassatt["isTranslatable"], "isRequired" => $solrclassatt["isRequired"], "isInfoCollector" => $solrclassatt["isInfoCollector"], "isSearchable" => $solrclassatt["isSearchable"]));
         }
         $selfCreatedContentType = new ContentType(array("names" => $solrclasses[$identifier]["names"], "descriptions" => $solrclasses[$identifier]["descriptions"], "contentTypeGroups" => $solrclasses[$identifier]["contentTypeGroups"], "fieldDefinitions" => $fieldDefinitions, "id" => $solrclasses[$identifier]["id"], "status" => $solrclasses[$identifier]["status"], "identifier" => $solrclasses[$identifier]["identifier"], "creationDate" => $solrclasses[$identifier]["creationDate"], "modificationDate" => $solrclasses[$identifier]["modificationDate"], "creatorId" => $solrclasses[$identifier]["creatorId"], "modifierId" => $solrclasses[$identifier]["modifierId"], "remoteId" => $solrclasses[$identifier]["remoteId"], "urlAliasSchema" => $solrclasses[$identifier]["urlAliasSchema"], "nameSchema" => $solrclasses[$identifier]["nameSchema"], "isContainer" => $solrclasses[$identifier]["isContainer"], "mainLanguageCode" => $solrclasses[$identifier]["mainLanguageCode"], "defaultAlwaysAvailable" => $solrclasses[$identifier]["defaultAlwaysAvailable"], "defaultSortField" => $solrclasses[$identifier]["defaultSortField"], "defaultSortOrder" => $solrclasses[$identifier]["defaultSortOrder"]));
         return $selfCreatedContentType;
     }
     $spiContentType = $this->contentTypeHandler->loadByIdentifier($identifier);
     return $this->buildContentTypeDomainObject($spiContentType);
 }