Exemplo n.º 1
0
 /**
  * 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);
 }
 /**
  * Builds a ContentType domain object from value object returned by persistence.
  *
  * @param \eZ\Publish\SPI\Persistence\Content\Type $spiContentType
  * @param \eZ\Publish\SPI\Persistence\Content\Type\Group[] $spiContentTypeGroups
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType
  */
 public function buildContentTypeDomainObject(SPIContentType $spiContentType, array $spiContentTypeGroups)
 {
     $mainLanguageCode = $this->contentLanguageHandler->load($spiContentType->initialLanguageId)->languageCode;
     $contentTypeGroups = array();
     foreach ($spiContentTypeGroups as $spiContentTypeGroup) {
         $contentTypeGroups[] = $this->buildContentTypeGroupDomainObject($spiContentTypeGroup);
     }
     $fieldDefinitions = array();
     foreach ($spiContentType->fieldDefinitions as $spiFieldDefinition) {
         $fieldDefinitions[] = $this->buildFieldDefinitionDomainObject($spiFieldDefinition);
     }
     return new ContentType(array('names' => $spiContentType->name, 'descriptions' => $spiContentType->description, 'contentTypeGroups' => $contentTypeGroups, 'fieldDefinitions' => $fieldDefinitions, 'id' => $spiContentType->id, 'status' => $spiContentType->status, 'identifier' => $spiContentType->identifier, 'creationDate' => $this->getDateTime($spiContentType->created), 'modificationDate' => $this->getDateTime($spiContentType->modified), 'creatorId' => $spiContentType->creatorId, 'modifierId' => $spiContentType->modifierId, 'remoteId' => $spiContentType->remoteId, 'urlAliasSchema' => $spiContentType->urlAliasSchema, 'nameSchema' => $spiContentType->nameSchema, 'isContainer' => $spiContentType->isContainer, 'mainLanguageCode' => $mainLanguageCode, 'defaultAlwaysAvailable' => $spiContentType->defaultAlwaysAvailable, 'defaultSortField' => $spiContentType->sortField, 'defaultSortOrder' => $spiContentType->sortOrder));
 }
Exemplo n.º 3
0
 /**
  * Extracts a VersionInfo object from $row.
  *
  * @param array $rows
  * @param array $nameRows
  *
  * @return \eZ\Publish\SPI\Persistence\Content\VersionInfo[]
  */
 public function extractVersionInfoListFromRows(array $rows, array $nameRows)
 {
     $nameData = array();
     foreach ($nameRows as $row) {
         $versionId = $row['ezcontentobject_name_contentobject_id'] . '_' . $row['ezcontentobject_name_content_version'];
         $nameData[$versionId][$row['ezcontentobject_name_content_translation']] = $row['ezcontentobject_name_name'];
     }
     $versionInfoList = array();
     foreach ($rows as $row) {
         $versionId = $row['ezcontentobject_id'] . '_' . $row['ezcontentobject_version_version'];
         if (!isset($versionInfoList[$versionId])) {
             $versionInfo = new VersionInfo();
             $versionInfo->id = (int) $row['ezcontentobject_version_id'];
             $versionInfo->contentInfo = $this->extractContentInfoFromRow($row, 'ezcontentobject_');
             $versionInfo->versionNo = (int) $row['ezcontentobject_version_version'];
             $versionInfo->creatorId = (int) $row['ezcontentobject_version_creator_id'];
             $versionInfo->creationDate = (int) $row['ezcontentobject_version_created'];
             $versionInfo->modificationDate = (int) $row['ezcontentobject_version_modified'];
             $versionInfo->initialLanguageCode = $this->languageHandler->load($row['ezcontentobject_version_initial_language_id'])->languageCode;
             $versionInfo->languageIds = $this->extractLanguageIdsFromMask((int) $row['ezcontentobject_version_language_mask']);
             $versionInfo->status = (int) $row['ezcontentobject_version_status'];
             $versionInfo->names = $nameData[$versionId];
             $versionInfoList[$versionId] = $versionInfo;
         }
     }
     return array_values($versionInfoList);
 }
Exemplo n.º 4
0
 /**
  * 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);
 }
 /**
  * Test delete function
  *
  * @covers eZ\Publish\Core\Persistence\InMemory\LanguageHandler::delete
  */
 public function testDelete()
 {
     $this->handler->delete(4);
     try {
         $this->handler->load(4);
         $this->fail("Language has not been deleted");
     } catch (NotFound $e) {
     }
 }
Exemplo n.º 6
0
 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));
 }
Exemplo n.º 7
0
 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;
 }
Exemplo n.º 8
0
 /**
  * Builds a VersionInfo domain object from value object returned from persistence.
  *
  * @param \eZ\Publish\SPI\Persistence\Content\VersionInfo $spiVersionInfo
  *
  * @return \eZ\Publish\Core\Repository\Values\Content\VersionInfo
  */
 public function buildVersionInfoDomainObject(SPIVersionInfo $spiVersionInfo)
 {
     $languageCodes = array();
     foreach ($spiVersionInfo->languageIds as $languageId) {
         $languageCodes[] = $this->contentLanguageHandler->load($languageId)->languageCode;
     }
     // Map SPI statuses to API
     switch ($spiVersionInfo->status) {
         case SPIVersionInfo::STATUS_ARCHIVED:
             $status = APIVersionInfo::STATUS_ARCHIVED;
             break;
         case SPIVersionInfo::STATUS_PUBLISHED:
             $status = APIVersionInfo::STATUS_PUBLISHED;
             break;
         case SPIVersionInfo::STATUS_DRAFT:
         default:
             $status = APIVersionInfo::STATUS_DRAFT;
     }
     return new VersionInfo(array('id' => $spiVersionInfo->id, 'versionNo' => $spiVersionInfo->versionNo, 'modificationDate' => $this->getDateTime($spiVersionInfo->modificationDate), 'creatorId' => $spiVersionInfo->creatorId, 'creationDate' => $this->getDateTime($spiVersionInfo->creationDate), 'status' => $status, 'initialLanguageCode' => $spiVersionInfo->initialLanguageCode, 'languageCodes' => $languageCodes, 'names' => $spiVersionInfo->names, 'contentInfo' => $this->buildContentInfoDomainObject($spiVersionInfo->contentInfo)));
 }
 /**
  * Loads a Language by its id ($languageId)
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException if language could not be found
  *
  * @param mixed $languageId
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Language
  */
 public function loadLanguageById($languageId)
 {
     $language = $this->languageHandler->load($languageId);
     return $this->buildDomainObject($language);
 }