generateLanguageMask() public method

Generates a language mask from the keys of $languages.
public generateLanguageMask ( array $languages ) : integer
$languages array
return integer
コード例 #1
0
 /**
  * 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
  * @param array $fieldFilters
  *
  * @return \eZ\Publish\Core\Persistence\Database\Expression
  */
 public function handle(CriteriaConverter $converter, SelectQuery $query, Criterion $criterion, array $fieldFilters)
 {
     $languages = array_flip($criterion->value);
     /** @var $criterion \eZ\Publish\API\Repository\Values\Content\Query\Criterion\LanguageCode */
     $languages['always-available'] = $criterion->matchAlwaysAvailable;
     return $query->expr->gt($query->expr->bitAnd($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $this->maskGenerator->generateLanguageMask($languages)), 0);
 }
コード例 #2
0
 /**
  * Generates language mask from provided language codes
  * Also sets always available bit
  *
  * @param array $languageCodes
  *
  * @return int
  */
 protected function generateLanguageMask(array $languageCodes)
 {
     $maskLanguageCodes = array();
     foreach ($languageCodes as $languageCode) {
         $maskLanguageCodes[$languageCode] = 1;
     }
     $maskLanguageCodes['always-available'] = 1;
     return $this->maskGenerator->generateLanguageMask($maskLanguageCodes);
 }
コード例 #3
0
 /**
  * Generates a language mask for provided keywords.
  *
  * @param string[] $keywords
  * @param bool $alwaysAvailable
  *
  * @return int
  */
 protected function generateLanguageMask(array $keywords, $alwaysAvailable = true)
 {
     $languages = array();
     foreach ($keywords as $languageCode => $keyword) {
         $languages[$languageCode] = true;
     }
     if ($alwaysAvailable) {
         $languages['always-available'] = true;
     }
     return $this->languageMaskGenerator->generateLanguageMask($languages);
 }
コード例 #4
0
 /**
  * Generates a language mask for $version.
  *
  * @param \eZ\Publish\SPI\Persistence\Content\Field[] $fields
  * @param string $initialLanguageCode
  * @param bool $alwaysAvailable
  *
  * @return int
  */
 protected function generateLanguageMask(array $fields, $initialLanguageCode, $alwaysAvailable)
 {
     $languages = array($initialLanguageCode => true);
     foreach ($fields as $field) {
         if (isset($languages[$field->languageCode])) {
             continue;
         }
         $languages[$field->languageCode] = true;
     }
     if ($alwaysAvailable) {
         $languages['always-available'] = true;
     }
     return $this->languageMaskGenerator->generateLanguageMask($languages);
 }
コード例 #5
0
 /**
  * Set common columns for insert/update of a Type.
  *
  * @param \eZ\Publish\Core\Persistence\Database\InsertQuery|\eZ\Publish\Core\Persistence\Database\UpdateQuery $q
  * @param \eZ\Publish\SPI\Persistence\ValueObject|\eZ\Publish\SPI\Persistence\Content\Type|\eZ\Publish\SPI\Persistence\Content\Type\UpdateStruct $type
  *
  * @return void
  */
 protected function setCommonTypeColumns(Query $q, ValueObject $type)
 {
     $q->set($this->dbHandler->quoteColumn('serialized_name_list'), $q->bindValue(serialize($type->name)))->set($this->dbHandler->quoteColumn('serialized_description_list'), $q->bindValue(serialize($type->description)))->set($this->dbHandler->quoteColumn('identifier'), $q->bindValue($type->identifier))->set($this->dbHandler->quoteColumn('modified'), $q->bindValue($type->modified, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('modifier_id'), $q->bindValue($type->modifierId, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('remote_id'), $q->bindValue($type->remoteId))->set($this->dbHandler->quoteColumn('url_alias_name'), $q->bindValue($type->urlAliasSchema))->set($this->dbHandler->quoteColumn('contentobject_name'), $q->bindValue($type->nameSchema))->set($this->dbHandler->quoteColumn('is_container'), $q->bindValue($type->isContainer ? 1 : 0, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('language_mask'), $q->bindValue($this->languageMaskGenerator->generateLanguageMask($type->name), null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('initial_language_id'), $q->bindValue($type->initialLanguageId, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('sort_field'), $q->bindValue($type->sortField, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('sort_order'), $q->bindValue($type->sortOrder, null, \PDO::PARAM_INT))->set($this->dbHandler->quoteColumn('always_available'), $q->bindValue((int) $type->defaultAlwaysAvailable, null, \PDO::PARAM_INT));
 }
コード例 #6
0
 /**
  * Generate query expression for a Criterion this handler accepts
  *
  * accept() must be called before calling this method.
  *
  * @param \eZ\Publish\Core\Persistence\Legacy\Content\Search\Gateway\CriteriaConverter $converter
  * @param \ezcQuerySelect $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\Criterion $criterion
  *
  * @return \ezcQueryExpression
  */
 public function handle(CriteriaConverter $converter, ezcQuerySelect $query, Criterion $criterion)
 {
     $languages = array_flip($criterion->value);
     $languages['always-available'] = 0;
     return $query->expr->gt($query->expr->bitAnd($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $this->maskGenerator->generateLanguageMask($languages)), 0);
 }