コード例 #1
0
ファイル: Mapper.php プロジェクト: umanit/TagsBundle
 /**
  * Extracts a Tag object from $row.
  *
  * @param array $rows
  *
  * @return \Netgen\TagsBundle\SPI\Persistence\Tags\Tag[]
  */
 public function extractTagListFromRows(array $rows)
 {
     $tagList = array();
     foreach ($rows as $row) {
         $tagId = (int) $row['eztags_id'];
         if (!isset($tagList[$tagId])) {
             $tag = new Tag();
             $tag->id = (int) $row['eztags_id'];
             $tag->parentTagId = (int) $row['eztags_parent_id'];
             $tag->mainTagId = (int) $row['eztags_main_tag_id'];
             $tag->keywords = array();
             $tag->depth = (int) $row['eztags_depth'];
             $tag->pathString = $row['eztags_path_string'];
             $tag->modificationDate = (int) $row['eztags_modified'];
             $tag->remoteId = $row['eztags_remote_id'];
             $tag->alwaysAvailable = (int) $row['eztags_language_mask'] & 1 ? true : false;
             $tag->mainLanguageCode = $this->languageHandler->load($row['eztags_main_language_id'])->languageCode;
             $tag->languageIds = $this->languageMaskGenerator->extractLanguageIdsFromMask((int) $row['eztags_language_mask']);
             $tagList[$tagId] = $tag;
         }
         if (!isset($tagList[$tagId]->keywords[$row['eztags_keyword_locale']])) {
             $tagList[$tagId]->keywords[$row['eztags_keyword_locale']] = $row['eztags_keyword_keyword'];
         }
     }
     return array_values($tagList);
 }
コード例 #2
0
 /**
  * Returns a field language join condition for the given $languageSettings.
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param array $languageSettings
  *
  * @return string
  */
 protected function getFieldCondition(SelectQuery $query, array $languageSettings)
 {
     // 1. Use main language(s) by default
     if (empty($languageSettings['languages'])) {
         return $query->expr->gt($query->expr->bitAnd($this->dbHandler->quoteColumn('initial_language_id', 'ezcontentobject'), $this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute')), $query->bindValue(0, null, PDO::PARAM_INT));
     }
     // 2. Otherwise use prioritized languages
     $leftSide = $query->expr->bitAnd($query->expr->sub($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $query->expr->bitAnd($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute'))), $query->bindValue(1, null, PDO::PARAM_INT));
     $rightSide = $query->expr->bitAnd($this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute'), $query->bindValue(1, null, PDO::PARAM_INT));
     for ($index = count($languageSettings['languages']) - 1, $multiplier = 2; $index >= 0; $index--, $multiplier *= 2) {
         $languageId = $this->languageHandler->loadByLanguageCode($languageSettings['languages'][$index])->id;
         $addToLeftSide = $query->expr->bitAnd($query->expr->sub($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $query->expr->bitAnd($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute'))), $languageId);
         $addToRightSide = $query->expr->bitAnd($this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute'), $languageId);
         if ($multiplier > $languageId) {
             $factor = $multiplier / $languageId;
             for ($shift = 0; $factor > 1; $factor = $factor / 2, $shift++) {
             }
             $factorTerm = ' << ' . $shift;
             $addToLeftSide .= $factorTerm;
             $addToRightSide .= $factorTerm;
         } elseif ($multiplier < $languageId) {
             $factor = $languageId / $multiplier;
             for ($shift = 0; $factor > 1; $factor = $factor / 2, $shift++) {
             }
             $factorTerm = ' >> ' . $shift;
             $addToLeftSide .= $factorTerm;
             $addToRightSide .= $factorTerm;
         }
         $leftSide = $query->expr->add($leftSide, "({$addToLeftSide})");
         $rightSide = $query->expr->add($rightSide, "({$addToRightSide})");
     }
     return $query->expr->lAnd($query->expr->gt($query->expr->bitAnd($this->dbHandler->quoteColumn('language_mask', 'ezcontentobject'), $this->dbHandler->quoteColumn('language_id', 'ezcontentobject_attribute')), $query->bindValue(0, null, PDO::PARAM_INT)), $query->expr->lt($leftSide, $rightSide));
 }
コード例 #3
0
 /**
  * Rollback transaction.
  *
  * Rollback transaction, or throw exceptions if no transactions has been started.
  *
  * @throws \RuntimeException If no transaction has been started
  */
 public function rollback()
 {
     try {
         $this->dbHandler->rollback();
         // Clear all caches after rollback
         if ($this->contentTypeHandler instanceof CachingContentTypeHandler) {
             $this->contentTypeHandler->clearCache();
         }
         if ($this->languageHandler instanceof CachingLanguageHandler) {
             $this->languageHandler->clearCache();
         }
     } catch (Exception $e) {
         throw new RuntimeException($e->getMessage(), 0, $e);
     }
 }
コード例 #4
0
ファイル: LegacyStorage.php プロジェクト: umanit/TagsBundle
 /**
  * Returns the data for the given $fieldId and $versionNo.
  *
  * @param mixed $fieldId
  * @param mixed $versionNo
  *
  * @return array
  */
 protected function loadFieldData($fieldId, $versionNo)
 {
     $connection = $this->getConnection();
     $query = $connection->createSelectQuery();
     $query->selectDistinct($connection->aliasedColumn($query, 'id', 'eztags'), $connection->aliasedColumn($query, 'parent_id', 'eztags'), $connection->aliasedColumn($query, 'main_tag_id', 'eztags'), $connection->aliasedColumn($query, 'keyword', 'eztags'), $connection->aliasedColumn($query, 'depth', 'eztags'), $connection->aliasedColumn($query, 'path_string', 'eztags'), $connection->aliasedColumn($query, 'modified', 'eztags'), $connection->aliasedColumn($query, 'remote_id', 'eztags'), $connection->aliasedColumn($query, 'main_language_id', 'eztags'), $connection->aliasedColumn($query, 'language_mask', 'eztags'), $connection->aliasedColumn($query, 'keyword', 'eztags_keyword'), $connection->aliasedColumn($query, 'locale', 'eztags_keyword'), $connection->aliasedColumn($query, 'priority', 'eztags_attribute_link'))->from($connection->quoteTable('eztags'))->innerJoin($connection->quoteTable('eztags_attribute_link'), $query->expr->eq($connection->quoteColumn('id', 'eztags'), $connection->quoteColumn('keyword_id', 'eztags_attribute_link')))->innerJoin($connection->quoteTable('eztags_keyword'), $query->expr->eq($connection->quoteColumn('id', 'eztags'), $connection->quoteColumn('keyword_id', 'eztags_keyword')))->where($query->expr->lAnd($query->expr->eq($connection->quoteColumn('objectattribute_id', 'eztags_attribute_link'), $query->bindValue($fieldId, null, PDO::PARAM_INT)), $query->expr->eq($connection->quoteColumn('objectattribute_version', 'eztags_attribute_link'), $query->bindValue($versionNo, null, PDO::PARAM_INT))))->orderBy($connection->quoteColumn('priority', 'eztags_attribute_link'));
     $statement = $query->prepare();
     $statement->execute();
     $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
     $tagList = array();
     foreach ($rows as $row) {
         $tagId = (int) $row['eztags_id'];
         if (!isset($tagList[$tagId])) {
             $tagList[$tagId] = array();
             $tagList[$tagId]['id'] = (int) $row['eztags_id'];
             $tagList[$tagId]['parent_id'] = (int) $row['eztags_parent_id'];
             $tagList[$tagId]['main_tag_id'] = (int) $row['eztags_main_tag_id'];
             $tagList[$tagId]['keywords'] = array();
             $tagList[$tagId]['depth'] = (int) $row['eztags_depth'];
             $tagList[$tagId]['path_string'] = $row['eztags_path_string'];
             $tagList[$tagId]['modified'] = (int) $row['eztags_modified'];
             $tagList[$tagId]['remote_id'] = $row['eztags_remote_id'];
             $tagList[$tagId]['always_available'] = (int) $row['eztags_language_mask'] & 1 ? true : false;
             $tagList[$tagId]['main_language_code'] = $this->languageHandler->load($row['eztags_main_language_id'])->languageCode;
             $tagList[$tagId]['language_codes'] = array();
         }
         if (!isset($tagList[$tagId]['keywords'][$row['eztags_keyword_locale']])) {
             $tagList[$tagId]['keywords'][$row['eztags_keyword_locale']] = $row['eztags_keyword_keyword'];
         }
         if (!in_array([$row['eztags_keyword_locale']], $tagList[$tagId]['language_codes'])) {
             $tagList[$tagId]['language_codes'][] = $row['eztags_keyword_locale'];
         }
     }
     return array_values($tagList);
 }
コード例 #5
0
 /**
  * Inserts keywords for tag with provided tag ID.
  *
  * @param mixed $tagId
  * @param array $keywords
  * @param string $mainLanguageCode
  * @param bool $alwaysAvailable
  */
 protected function insertTagKeywords($tagId, array $keywords, $mainLanguageCode, $alwaysAvailable)
 {
     foreach ($keywords as $languageCode => $keyword) {
         $query = $this->handler->createInsertQuery();
         $query->insertInto($this->handler->quoteTable('eztags_keyword'))->set($this->handler->quoteColumn('keyword_id'), $query->bindValue($tagId, null, PDO::PARAM_INT))->set($this->handler->quoteColumn('language_id'), $query->bindValue($this->languageHandler->loadByLanguageCode($languageCode)->id + (int) ($languageCode === $mainLanguageCode && $alwaysAvailable), null, PDO::PARAM_INT))->set($this->handler->quoteColumn('keyword'), $query->bindValue($keyword, null, PDO::PARAM_STR))->set($this->handler->quoteColumn('locale'), $query->bindValue($languageCode, null, PDO::PARAM_STR))->set($this->handler->quoteColumn('status'), $query->bindValue(1, null, PDO::PARAM_INT));
         $query->prepare()->execute();
     }
 }
コード例 #6
0
ファイル: TagsService.php プロジェクト: umanit/TagsBundle
 protected function buildTagDomainObject(SPITag $spiTag)
 {
     $languageCodes = array();
     foreach ($spiTag->languageIds as $languageId) {
         $languageCodes[] = $this->languageHandler->load($languageId)->languageCode;
     }
     $modificationDate = new DateTime();
     $modificationDate->setTimestamp($spiTag->modificationDate);
     return new Tag(array('id' => $spiTag->id, 'parentTagId' => $spiTag->parentTagId, 'mainTagId' => $spiTag->mainTagId, 'keywords' => $spiTag->keywords, 'depth' => $spiTag->depth, 'pathString' => $spiTag->pathString, 'modificationDate' => $modificationDate, 'remoteId' => $spiTag->remoteId, 'alwaysAvailable' => $spiTag->alwaysAvailable, 'mainLanguageCode' => $spiTag->mainLanguageCode, 'languageCodes' => $languageCodes));
 }
コード例 #7
0
 /**
  * Generates a language mask from the given $languageSettings.
  *
  * @param array $languageSettings
  *
  * @return int
  */
 protected function getLanguageMask(array $languageSettings)
 {
     $mask = 0;
     if ($languageSettings['useAlwaysAvailable']) {
         $mask |= 1;
     }
     foreach ($languageSettings['languages'] as $languageCode) {
         $mask |= $this->languageHandler->loadByLanguageCode($languageCode)->id;
     }
     return $mask;
 }
コード例 #8
0
 /**
  * Validates given translated list $list, which should be an array of strings with language codes as keys.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
  *
  * @param mixed $list
  * @param string $argumentName
  */
 public function validateTranslatedList($list, $argumentName)
 {
     if (!is_array($list)) {
         throw new InvalidArgumentType($argumentName, 'array', $list);
     }
     foreach ($list as $languageCode => $translation) {
         $this->contentLanguageHandler->loadByLanguageCode($languageCode);
         if (!is_string($translation)) {
             throw new InvalidArgumentType($argumentName . "['{$languageCode}']", 'string', $translation);
         }
     }
 }
コード例 #9
0
ファイル: Handler.php プロジェクト: Pixy/ezpublish-kernel
 protected function extractMatchedLanguage($languageMask, $mainLanguageId, $languageSettings)
 {
     foreach ($languageSettings['languages'] as $languageCode) {
         if ($languageMask & $this->languageHandler->loadByLanguageCode($languageCode)->id) {
             return $languageCode;
         }
     }
     if ($languageMask & 1 || empty($languageSettings['languages'])) {
         return $this->languageHandler->load($mainLanguageId)->languageCode;
     }
     return null;
 }
コード例 #10
0
ファイル: Field.php プロジェクト: Jenkosama/ezpublish-kernel
 /**
  * Applies joins to the query, required to fetch sort data
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\SortClause $sortClause
  * @param int $number
  * @param array $fieldMap
  *
  * @return void
  */
 public function applyJoin(SelectQuery $query, SortClause $sortClause, $number, array $fieldMap)
 {
     /** @var \eZ\Publish\API\Repository\Values\Content\Query\SortClause\Target\FieldTarget $fieldTarget */
     $fieldTarget = $sortClause->targetData;
     $fieldDefinitionId = $fieldMap[$fieldTarget->typeIdentifier][$fieldTarget->fieldIdentifier];
     $table = $this->getSortTableName($number);
     if ($fieldTarget->languageCode === null) {
         $languageExpression = $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn("language_id", $table), ~1), $this->dbHandler->quoteColumn("initial_language_id", "ezcontentobject")), 0);
     } else {
         $languageExpression = $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn("language_id", $table), ~1), $query->bindValue($this->languageHandler->loadByLanguageCode($fieldTarget->languageCode)->id, null, \PDO::PARAM_INT)), 0);
     }
     $query->leftJoin($query->alias($this->dbHandler->quoteTable("ezcontentobject_attribute"), $this->dbHandler->quoteIdentifier($table)), $query->expr->lAnd($query->expr->eq($query->bindValue($fieldDefinitionId, null, PDO::PARAM_INT), $this->dbHandler->quoteColumn("contentclassattribute_id", $table)), $query->expr->eq($this->dbHandler->quoteColumn("contentobject_id", $table), $this->dbHandler->quoteColumn("id", "ezcontentobject")), $query->expr->eq($this->dbHandler->quoteColumn("version", $table), $this->dbHandler->quoteColumn("current_version", "ezcontentobject")), $languageExpression));
 }
コード例 #11
0
 /**
  * Applies joins to the query, required to fetch sort data
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\SortClause $sortClause
  * @param int $number
  *
  * @return void
  */
 public function applyJoin(SelectQuery $query, SortClause $sortClause, $number)
 {
     /** @var \eZ\Publish\API\Repository\Values\Content\Query\SortClause\Target\FieldTarget $fieldTarget */
     $fieldTarget = $sortClause->targetData;
     $table = $this->getSortTableName($number);
     $externalTable = $this->getSortTableName($number, "ezgmaplocation");
     if ($fieldTarget->languageCode === null) {
         $query->innerJoin($query->alias($this->dbHandler->quoteTable("ezcontentobject_attribute"), $this->dbHandler->quoteIdentifier($table)), $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn("contentobject_id", $table), $this->dbHandler->quoteColumn("id", "ezcontentobject")), $query->expr->eq($this->dbHandler->quoteColumn("version", $table), $this->dbHandler->quoteColumn("current_version", "ezcontentobject")), $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn("language_id", $table), ~1), $this->dbHandler->quoteColumn("initial_language_id", "ezcontentobject")), 0)));
     } else {
         $query->innerJoin($query->alias($this->dbHandler->quoteTable("ezcontentobject_attribute"), $this->dbHandler->quoteIdentifier($table)), $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn("contentobject_id", $table), $this->dbHandler->quoteColumn("id", "ezcontentobject")), $query->expr->eq($this->dbHandler->quoteColumn("version", $table), $this->dbHandler->quoteColumn("current_version", "ezcontentobject")), $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn("language_id", $table), ~1), $query->bindValue($this->languageHandler->loadByLanguageCode($fieldTarget->languageCode)->id, null, \PDO::PARAM_INT)), 0)));
     }
     $query->innerJoin($query->alias($this->dbHandler->quoteTable("ezgmaplocation"), $this->dbHandler->quoteIdentifier($externalTable)), $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn("contentobject_version", $externalTable), $this->dbHandler->quoteColumn("version", $table)), $query->expr->eq($this->dbHandler->quoteColumn("contentobject_attribute_id", $externalTable), $this->dbHandler->quoteColumn("id", $table))))->innerJoin($query->alias($this->dbHandler->quoteTable("ezcontentclass_attribute"), $this->dbHandler->quoteIdentifier("cc_attr_{$number}")), $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn("contentclassattribute_id", $table), $this->dbHandler->quoteColumn("id", "cc_attr_{$number}")), $query->expr->eq($this->dbHandler->quoteColumn("identifier", "cc_attr_{$number}"), $query->bindValue($fieldTarget->fieldIdentifier)), $query->expr->eq($this->dbHandler->quoteColumn("version", "cc_attr_{$number}"), $query->bindValue(Type::STATUS_DEFINED, null, \PDO::PARAM_INT))))->innerJoin($query->alias($this->dbHandler->quoteTable("ezcontentclass"), $this->dbHandler->quoteIdentifier("cc_{$number}")), $query->expr->lAnd($query->expr->eq($this->dbHandler->quoteColumn("contentclass_id", "cc_attr_{$number}"), $this->dbHandler->quoteColumn("id", "cc_{$number}")), $query->expr->eq($this->dbHandler->quoteColumn("identifier", "cc_{$number}"), $query->bindValue($fieldTarget->typeIdentifier)), $query->expr->eq($this->dbHandler->quoteColumn("version", "cc_{$number}"), $query->bindValue(Type::STATUS_DEFINED, null, \PDO::PARAM_INT))));
 }
コード例 #12
0
ファイル: Field.php プロジェクト: xcorp1986/ezpublish-kernel
 /**
  * Applies joins to the query, required to fetch sort data.
  *
  * @param \eZ\Publish\Core\Persistence\Database\SelectQuery $query
  * @param \eZ\Publish\API\Repository\Values\Content\Query\SortClause $sortClause
  * @param int $number
  */
 public function applyJoin(SelectQuery $query, SortClause $sortClause, $number)
 {
     /** @var \eZ\Publish\API\Repository\Values\Content\Query\SortClause\Target\FieldTarget $fieldTarget */
     $fieldTarget = $sortClause->targetData;
     $fieldMap = $this->contentTypeHandler->getSearchableFieldMap();
     if (!isset($fieldMap[$fieldTarget->typeIdentifier][$fieldTarget->fieldIdentifier]['field_definition_id'])) {
         throw new InvalidArgumentException('$sortClause->targetData', 'No searchable fields found for the given sort clause target ' . "'{$fieldTarget->fieldIdentifier}' on '{$fieldTarget->typeIdentifier}'.");
     }
     $fieldDefinitionId = $fieldMap[$fieldTarget->typeIdentifier][$fieldTarget->fieldIdentifier]['field_definition_id'];
     $table = $this->getSortTableName($number);
     if ($fieldTarget->languageCode === null) {
         $languageExpression = $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn('language_id', $table), ~1), $this->dbHandler->quoteColumn('initial_language_id', 'ezcontentobject')), 0);
     } else {
         $languageExpression = $query->expr->gt($query->expr->bitAnd($query->expr->bitAnd($this->dbHandler->quoteColumn('language_id', $table), ~1), $query->bindValue($this->languageHandler->loadByLanguageCode($fieldTarget->languageCode)->id, null, \PDO::PARAM_INT)), 0);
     }
     $query->leftJoin($query->alias($this->dbHandler->quoteTable('ezcontentobject_attribute'), $this->dbHandler->quoteIdentifier($table)), $query->expr->lAnd($query->expr->eq($query->bindValue($fieldDefinitionId, null, PDO::PARAM_INT), $this->dbHandler->quoteColumn('contentclassattribute_id', $table)), $query->expr->eq($this->dbHandler->quoteColumn('contentobject_id', $table), $this->dbHandler->quoteColumn('id', 'ezcontentobject')), $query->expr->eq($this->dbHandler->quoteColumn('version', $table), $this->dbHandler->quoteColumn('current_version', 'ezcontentobject')), $languageExpression));
 }
コード例 #13
0
 /**
  * Generates a language mask from the given $languageFilter.
  *
  * @param array $languageFilter
  *
  * @return int
  */
 protected function getLanguageMask(array $languageFilter)
 {
     if (!isset($languageFilter['languages'])) {
         $languageFilter['languages'] = array();
     }
     if (!isset($languageFilter['useAlwaysAvailable'])) {
         $languageFilter['useAlwaysAvailable'] = true;
     }
     $mask = 0;
     if ($languageFilter['useAlwaysAvailable']) {
         $mask |= 1;
     }
     foreach ($languageFilter['languages'] as $languageCode) {
         $mask |= $this->languageHandler->loadByLanguageCode($languageCode)->id;
     }
     return $mask;
 }
コード例 #14
0
 /**
  * Deletes  a language from content repository
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
  *         if language can not be deleted
  *         because it is still assigned to some content / type / (...).
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Language $language
  */
 public function deleteLanguage(Language $language)
 {
     if ($this->repository->hasAccess('content', 'translations') !== true) {
         throw new UnauthorizedException('content', 'translations');
     }
     $loadedLanguage = $this->loadLanguageById($language->id);
     $this->repository->beginTransaction();
     try {
         $this->languageHandler->delete($loadedLanguage->id);
         $this->repository->commit();
     } catch (LogicException $e) {
         $this->repository->rollback();
         throw new InvalidArgumentException("language", $e->getMessage(), $e);
     } catch (Exception $e) {
         $this->repository->rollback();
         throw $e;
     }
 }
コード例 #15
0
 /**
  * Builds ContentType update struct for storage layer.
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeUpdateStruct $contentTypeUpdateStruct
  * @param \eZ\Publish\API\Repository\Values\User\UserReference $user
  *
  * @return \eZ\Publish\SPI\Persistence\Content\Type\UpdateStruct
  */
 public function buildSPIContentTypeUpdateStruct(APIContentTypeDraft $contentTypeDraft, APIContentTypeUpdateStruct $contentTypeUpdateStruct, APIUserReference $user)
 {
     $updateStruct = new SPIContentTypeUpdateStruct();
     $updateStruct->identifier = $contentTypeUpdateStruct->identifier !== null ? $contentTypeUpdateStruct->identifier : $contentTypeDraft->identifier;
     $updateStruct->remoteId = $contentTypeUpdateStruct->remoteId !== null ? $contentTypeUpdateStruct->remoteId : $contentTypeDraft->remoteId;
     $updateStruct->name = $contentTypeUpdateStruct->names !== null ? $contentTypeUpdateStruct->names : $contentTypeDraft->names;
     $updateStruct->description = $contentTypeUpdateStruct->descriptions !== null ? $contentTypeUpdateStruct->descriptions : $contentTypeDraft->descriptions;
     $updateStruct->modified = $contentTypeUpdateStruct->modificationDate !== null ? $contentTypeUpdateStruct->modificationDate->getTimestamp() : time();
     $updateStruct->modifierId = $contentTypeUpdateStruct->modifierId !== null ? $contentTypeUpdateStruct->modifierId : $user->getUserId();
     $updateStruct->urlAliasSchema = $contentTypeUpdateStruct->urlAliasSchema !== null ? $contentTypeUpdateStruct->urlAliasSchema : $contentTypeDraft->urlAliasSchema;
     $updateStruct->nameSchema = $contentTypeUpdateStruct->nameSchema !== null ? $contentTypeUpdateStruct->nameSchema : $contentTypeDraft->nameSchema;
     $updateStruct->isContainer = $contentTypeUpdateStruct->isContainer !== null ? $contentTypeUpdateStruct->isContainer : $contentTypeDraft->isContainer;
     $updateStruct->sortField = $contentTypeUpdateStruct->defaultSortField !== null ? $contentTypeUpdateStruct->defaultSortField : $contentTypeDraft->defaultSortField;
     $updateStruct->sortOrder = $contentTypeUpdateStruct->defaultSortOrder !== null ? (int) $contentTypeUpdateStruct->defaultSortOrder : $contentTypeDraft->defaultSortOrder;
     $updateStruct->defaultAlwaysAvailable = $contentTypeUpdateStruct->defaultAlwaysAvailable !== null ? $contentTypeUpdateStruct->defaultAlwaysAvailable : $contentTypeDraft->defaultAlwaysAvailable;
     $updateStruct->initialLanguageId = $this->contentLanguageHandler->loadByLanguageCode($contentTypeUpdateStruct->mainLanguageCode !== null ? $contentTypeUpdateStruct->mainLanguageCode : $contentTypeDraft->mainLanguageCode)->id;
     return $updateStruct;
 }
コード例 #16
0
ファイル: Mapper.php プロジェクト: Pixy/ezpublish-kernel
 /**
  * Creates CreateStruct from $content.
  *
  * @param \eZ\Publish\SPI\Persistence\Content $content
  *
  * @return \eZ\Publish\SPI\Persistence\Content\CreateStruct
  */
 public function createCreateStructFromContent(Content $content)
 {
     $struct = new CreateStruct();
     $struct->name = $content->versionInfo->names;
     $struct->typeId = $content->versionInfo->contentInfo->contentTypeId;
     $struct->sectionId = $content->versionInfo->contentInfo->sectionId;
     $struct->ownerId = $content->versionInfo->contentInfo->ownerId;
     $struct->locations = array();
     $struct->alwaysAvailable = $content->versionInfo->contentInfo->alwaysAvailable;
     $struct->remoteId = md5(uniqid(get_class($this), true));
     $struct->initialLanguageId = $this->languageHandler->loadByLanguageCode($content->versionInfo->initialLanguageCode)->id;
     $struct->modified = time();
     foreach ($content->fields as $field) {
         $newField = clone $field;
         $newField->id = null;
         $struct->fields[] = $newField;
     }
     return $struct;
 }
コード例 #17
0
 /**
  * Test delete function throwing LogicException
  *
  * @expectedException \LogicException
  * @covers eZ\Publish\Core\Persistence\InMemory\LanguageHandler::delete
  */
 public function testDeleteThrowsLogicException()
 {
     $language = $this->handler->loadByLanguageCode('eng-GB');
     $this->handler->delete($language->id);
 }