public function getData() { $data = array(); /* @var $contentClassAttribute eZContentClassAttribute */ $contentClassAttribute = $this->ContentObjectAttribute->attribute( 'contentclass_attribute' ); switch( $contentClassAttribute->attribute('identifier') ) { case 'download_ressource': $data = array(); $pdfNameFieldName = parent::generateSubattributeFieldName($contentClassAttribute, 'name', 'string'); $pdfNodeIdFieldName = parent::generateSubattributeFieldName($contentClassAttribute, 'main_node_id', 'int'); $pdfExpirationDateFieldName = parent::generateSubattributeFieldName($contentClassAttribute, 'expiration_date', 'date'); $pdfContentFieldName = 'attr_download_ressource_content_mt'; // <= meta suffix used to avoid polluting copyfields $pdfNameValues = array(); $pdfNodeIdValues = array(); $pdfExpirationDateValues = array(); $pdfContentValues = array(); $content = $this->ContentObjectAttribute->content(); /* @var $version eZContentObjectVersion */ $version = $this->ContentObjectAttribute->objectVersion(); $objectDatamap = $version->dataMap(); foreach ( $content['relation_list'] as $relationItem ) { $subObjectID = $relationItem['contentobject_id']; if ( !$subObjectID || $relationItem['contentclass_identifier'] != "pdf" ) { continue; } /* @var $subObject eZContentObjectVersion */ $subObject = eZContentObject::fetch($subObjectID); if ( !$subObject || $relationItem['in_trash'] ) { continue; } $dataMap = $subObject->dataMap(); $pdfNameValues[] = $subObject->name(); $pdfNodeIdValues[] = $subObject->mainNodeID(); /* @var $objectDateAttribute eZContentObjectAttribute */ $expirationDate = gmdate(DATE_ATOM, 0).'Z'; $objectDateAttribute = $objectDatamap['online_date']; if( $objectDateAttribute->hasContent() && $dataMap['expiration_duration']->hasContent() ) { $expiration = (int)$dataMap['expiration_duration']->content(); /* @var $objectDateContent eZDateTime */ $objectDateContent = $objectDateAttribute->content(); if( $objectDateContent->timeStamp() ) { $expirationDate = self::convertTimestampToDate( $objectDateContent->timeStamp() + ($expiration * 24 * 3600) ); } } $pdfExpirationDateValues[] = $expirationDate; // pdf content $subobjectPDFAttribute = $dataMap['file']; if( $subobjectPDFAttribute->hasContent() ) { /* @var $pdfContentBinaryFile eZBinaryFile */ $pdfContentBinaryFile = $subobjectPDFAttribute->content(); $pdfClusterFile = eZClusterFileHandler::instance( $pdfContentBinaryFile->filePath() ); $pdfContent = $pdfClusterFile->processFile( array(__CLASS__, 'pdfToText') ); if( $pdfContent ) { $pdfContentValues[] = $pdfContent; } } } if( !empty($pdfNameValues) ) { $data[$pdfNameFieldName] = $pdfNameValues; } if( !empty($pdfNodeIdValues) ) { $data[$pdfNodeIdFieldName] = $pdfNodeIdValues; } if( !empty($pdfExpirationDateValues) ) { $data[$pdfExpirationDateFieldName] = $pdfExpirationDateValues; } if( !empty($pdfContentValues) ) { $data[$pdfContentFieldName] = implode("\n", $pdfContentValues); } return $data; case 'media_content': $mediaTitleFieldName = parent::generateSubattributeFieldName( $contentClassAttribute, 'title', 'text' ); $mediaDescriptionFieldName = parent::generateSubattributeFieldName( $contentClassAttribute, 'description', 'text' ); $mediaKeywordsFieldName = parent::generateSubattributeFieldName( $contentClassAttribute, 'keywords', 'text' ); $mediaTitleValues = array(); $mediaDescriptionValues = array(); $mediaKeywordsValues = array(); $content = $this->ContentObjectAttribute->content(); /* @var $version eZContentObjectVersion */ $version = $this->ContentObjectAttribute->objectVersion(); $objectDatamap = $version->dataMap(); foreach ( $content['relation_list'] as $relationItem ) { $subObjectID = $relationItem['contentobject_id']; if ( !$subObjectID ) { continue; } /* @var $subObject eZContentObject */ $subObject = eZContentObject::fetch($subObjectID); if ( !$subObject || $relationItem['in_trash'] ) { continue; } $dataMap = $subObject->dataMap(); if( isset( $dataMap['headline'] ) && $dataMap['headline']->hasContent() ) { $mediaTitleValues[] = $dataMap['headline']->content(); } if( isset( $dataMap['description'] ) && $dataMap['description']->hasContent() ) { $mediaDescriptionValues[] = $dataMap['description']->content(); } if( isset( $dataMap['additional_keywords']) && $dataMap['additional_keywords']->hasContent() ) { $mediaKeywordsValues[] = $dataMap['additional_keywords']->content(); } } if( !empty( $mediaTitleValues ) ) { $data[$mediaTitleFieldName] = $mediaTitleValues; } if( !empty( $mediaDescriptionValues ) ) { $data[$mediaDescriptionFieldName] = strip_tags( $mediaDescriptionValues ); } if( !empty( $mediaKeywordsValues ) ) { $data[$mediaKeywordsFieldName] = $mediaKeywordsValues; } return $data; default: return parent::getData(); break; } }
public function getPlainTextRepresentation(eZContentObjectAttribute $contentObjectAttribute = null) { return parent::getPlainTextRepresentation($contentObjectAttribute); }
/** * test for getData() */ public function testGetData() { $providerArray = array(); #start 1 : the simplest attribute $content1 = "Hello world"; $ezcca1 = new eZContentClassAttribute(array('identifier' => 'title', 'data_type_string' => 'ezstring')); $ezcoa1 = new eZContentObjectAttributeTester(array("data_type_string" => 'ezstring', "id" => 100123, "data_text" => $content1, "contentclass_attribute" => $ezcca1)); $fieldName1 = ezfSolrDocumentFieldBase::getFieldName($ezcca1); $expectedData1 = array($fieldName1 => $content1); $providerArray[] = array($expectedData1, $ezcoa1); #end 1 #start 2 : attribute with subattributes $ezcca2 = new eZContentClassAttribute(array('identifier' => 'dummy', 'data_type_string' => 'dummy_example')); $ezcoa2 = new eZContentObjectAttributeTester(array("data_type_string" => 'dummy_example', "id" => 100124, "contentclass_attribute" => $ezcca2)); $fieldList2 = ezfSolrDocumentFieldBase::getFieldNameList($ezcca2); $expectedData2 = array(); foreach ($fieldList2 as $fieldName) { $expectedData2[$fieldName] = 'DATA_FOR_' . $fieldName; } $fieldName2 = ezfSolrDocumentFieldBase::getFieldName($ezcca2); $providerArray[] = array($expectedData2, $ezcoa2); #end 2 #start 3 : object relations $expectedData3 = array(); $tester3 = new ezfSolrDocumentFieldObjectRelationTester(new eZContentObjectAttribute(array())); $time3 = time(); $image3 = new ezpObject("image", 2); $image3->name = __METHOD__ . $time3; $image3->caption = __METHOD__ . $time3; $imageId3 = $image3->publish(); // $image3->object->clearCache(); $dataMapImage3 = $image3->dataMap; // eZContentObjectAttribute objects, attributes of the related Image $imageName3 = $dataMapImage3['name']; $imageCaption3 = $dataMapImage3['caption']; $article3 = new ezpObject("article", 2); $articleId3 = $article3->publish(); // Create object relation $article3->object->addContentObjectRelation($imageId3, $article3->current_version, 154, eZContentObject::RELATION_ATTRIBUTE); $dataMapArticle3 = $article3->attribute('data_map'); $ezcoa3 = $dataMapArticle3['image']; $ezcoa3->setAttribute('data_int', $imageId3); $ezcoa3->store(); $ezcca3 = $ezcoa3->attribute('contentclass_attribute'); $defaultFieldName3 = ezfSolrDocumentFieldBase::generateAttributeFieldName($ezcca3, ezfSolrDocumentFieldObjectRelation::$subattributesDefinition[ezfSolrDocumentFieldObjectRelation::DEFAULT_SUBATTRIBUTE]); $expectedData3[$defaultFieldName3] = $tester3->getPlainTextRepresentation($ezcoa3); // required to allow another call to metaData() // on $ezcoa3 in getPlainTextRepresentation, called from the getData() method : eZContentObject::recursionProtectionEnd(); $fieldNameImageName3 = ezfSolrDocumentFieldBase::generateSubattributeFieldName($ezcca3, $imageName3->attribute('contentclass_attribute_identifier'), ezfSolrDocumentFieldObjectRelation::getClassAttributeType($imageName3->attribute('contentclass_attribute'))); $expectedData3[$fieldNameImageName3] = trim(implode(' ', array_values(ezfSolrDocumentFieldBase::getInstance($imageName3)->getData())), "\t\r\n "); $fieldNameImageCaption3 = ezfSolrDocumentFieldBase::generateSubattributeFieldName($ezcca3, $imageCaption3->attribute('contentclass_attribute_identifier'), ezfSolrDocumentFieldObjectRelation::getClassAttributeType($imageCaption3->attribute('contentclass_attribute'))); $expectedData3[$fieldNameImageCaption3] = trim(implode(' ', array_values(ezfSolrDocumentFieldBase::getInstance($imageCaption3)->getData())), "\t\r\n "); $image3 = eZContentObject::fetch($imageId3); $metaAttributeValues = eZSolr::getMetaAttributesForObject($image3); foreach ($metaAttributeValues as $metaInfo) { $expectedData3[ezfSolrDocumentFieldBase::generateSubmetaFieldName($metaInfo['name'], $ezcca3)] = ezfSolrDocumentFieldBase::preProcessValue($metaInfo['value'], $metaInfo['fieldType']); } $providerArray[] = array($expectedData3, $ezcoa3); #end 3 // Let's perform the actual testing : foreach ($providerArray as $input) { $expected = $input[0]; $contentObjectAttribute = $input[1]; $instance = ezfSolrDocumentFieldBase::getInstance($contentObjectAttribute); self::assertEquals($expected, $instance->getData()); } }