/** * Fetches the attributes for an array of objects or nodes * * @param eZContentObject[]|eZContentObjectTreeNode[] $objList * @param bool $asObject */ static function fillNodeListAttributes( $objList, $asObject = true ) { $db = eZDB::instance(); if ( count( $objList ) > 0 ) { $objectArray = array(); $tmpLanguageObjectList = array(); $whereSQL = ''; $count = count( $objList ); $i = 0; foreach ( $objList as $obj ) { if ( $obj instanceOf eZContentObject ) $object = $obj; else $object = $obj->attribute( 'object' ); $language = $object->currentLanguage(); $tmpLanguageObjectList[$object->attribute( 'id' )] = $language; $objectArray = array( 'id' => $object->attribute( 'id' ), 'language' => $language, 'version' => $object->attribute( 'current_version' ) ); $whereSQL .= "( ezcontentobject_attribute.version = '" . $object->attribute( 'current_version' ) . "' AND ezcontentobject_attribute.contentobject_id = '" . $object->attribute( 'id' ) . "' AND ezcontentobject_attribute.language_code = '" . $language . "' ) "; $i++; if ( $i < $count ) $whereSQL .= ' OR '; } $query = "SELECT ezcontentobject_attribute.*, ezcontentclass_attribute.identifier as identifier FROM ezcontentobject_attribute, ezcontentclass_attribute WHERE ezcontentclass_attribute.version = '0' AND ezcontentclass_attribute.id = ezcontentobject_attribute.contentclassattribute_id AND ( $whereSQL ) ORDER BY ezcontentobject_attribute.contentobject_id, ezcontentclass_attribute.placement ASC"; $attributeArray = $db->arrayQuery( $query ); $tmpAttributeObjectList = array(); $returnAttributeArray = array(); foreach ( $attributeArray as $attribute ) { $attr = new eZContentObjectAttribute( $attribute ); $attr->setContentClassAttributeIdentifier( $attribute['identifier'] ); $tmpAttributeObjectList[$attr->attribute( 'contentobject_id' )][] = $attr; } foreach ( $objList as $obj ) { if ( $obj instanceOf eZContentObject ) { $obj->setContentObjectAttributes( $tmpAttributeObjectList[$obj->attribute( 'id' )], $obj->attribute( 'current_version' ), $tmpLanguageObjectList[$obj->attribute( 'id' )] ); } else { $object = $obj->attribute( 'object' ); $object->setContentObjectAttributes( $tmpAttributeObjectList[$object->attribute( 'id' )], $object->attribute( 'current_version' ), $tmpLanguageObjectList[$object->attribute( 'id' )] ); $obj->setContentObject( $object ); } } } }
static function fetchAttributes( $version, $contentObjectID, $language = false, $asObject = true ) { $db = eZDB::instance(); $language = $db->escapeString( $language ); $contentObjectID = (int) $contentObjectID; $version =(int) $version; $query = "SELECT ezcontentobject_attribute.*, ezcontentclass_attribute.identifier as classattribute_identifier, ezcontentclass_attribute.can_translate, ezcontentclass_attribute.serialized_name_list as attribute_serialized_name_list FROM ezcontentobject_attribute, ezcontentclass_attribute, ezcontentobject_version WHERE ezcontentclass_attribute.version = '0' AND ezcontentclass_attribute.id = ezcontentobject_attribute.contentclassattribute_id AND ezcontentobject_attribute.version = '$version' AND ezcontentobject_attribute.contentobject_id = '$contentObjectID' AND ezcontentobject_version.contentobject_id = '$contentObjectID' AND ezcontentobject_version.version = '$version' AND ". ( ( $language )? "ezcontentobject_attribute.language_code = '$language'": eZContentLanguage::sqlFilter( 'ezcontentobject_attribute', 'ezcontentobject_version' ) ). " ORDER by ezcontentclass_attribute.placement ASC"; $attributeArray = $db->arrayQuery( $query ); $returnAttributeArray = array(); foreach ( $attributeArray as $attribute ) { $attr = new eZContentObjectAttribute( $attribute ); $attr->setContentClassAttributeIdentifier( $attribute['classattribute_identifier'] ); $dataType = $attr->dataType(); if ( is_object( $dataType ) && $dataType->Attributes["properties"]["translation_allowed"] && $attribute['can_translate'] ) $attr->setContentClassAttributeCanTranslate( 1 ); else $attr->setContentClassAttributeCanTranslate( 0 ); $attr->setContentClassAttributeName( eZContentClassAttribute::nameFromSerializedString( $attribute['attribute_serialized_name_list'] ) ); $returnAttributeArray[] = $attr; } return $returnAttributeArray; }