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; } }