本文整理汇总了PHP中eZContentObjectAttribute::create方法的典型用法代码示例。如果您正苦于以下问题:PHP eZContentObjectAttribute::create方法的具体用法?PHP eZContentObjectAttribute::create怎么用?PHP eZContentObjectAttribute::create使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZContentObjectAttribute
的用法示例。
在下文中一共展示了eZContentObjectAttribute::create方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: initializeObjectAttributes
//.........这里部分代码省略.........
$datatypeData = $dataType->batchInitializeObjectAttributeData( $this );
$data = array_merge( $data, $datatypeData );
$cols = implode( ', ', array_keys( $data ) );
$values = implode( ', ', $data );
$sql = "INSERT INTO ezcontentobject_attribute( $cols )
SELECT $values
FROM ezcontentobject_attribute a, ezcontentobject o
WHERE o.id = a.contentobject_id AND
o.contentclass_id=$classID
GROUP BY contentobject_id,
version,
language_code";
$db->query( $sql );
// update ids to keep them same with one attribute for different versions
if( $db->databaseName() == 'mysql' )
{
$updateSql = "UPDATE ezcontentobject_attribute,
( SELECT contentobject_id, language_code, version, contentclassattribute_id, MIN( id ) AS minid
FROM ezcontentobject_attribute WHERE contentclassattribute_id = $classAttributeID
GROUP BY contentobject_id, language_code, version, contentclassattribute_id ) t
SET ezcontentobject_attribute.id = t.minid
WHERE ezcontentobject_attribute.contentobject_id = t.contentobject_id
AND ezcontentobject_attribute.language_code = t.language_code
AND ezcontentobject_attribute.contentclassattribute_id = $classAttributeID";
}
else if( $db->databaseName() == 'postgresql' )
{
$updateSql = "UPDATE ezcontentobject_attribute
SET id=t.minid FROM
( SELECT contentobject_id, language_code, version, contentclassattribute_id, MIN( id ) AS minid
FROM ezcontentobject_attribute WHERE contentclassattribute_id = $classAttributeID
GROUP BY contentobject_id, language_code, version, contentclassattribute_id ) t
WHERE ezcontentobject_attribute.contentobject_id = t.contentobject_id
AND ezcontentobject_attribute.language_code = t.language_code
AND ezcontentobject_attribute.contentclassattribute_id = $classAttributeID";
}
else if( $db->databaseName() == 'oracle' )
{
$updateSql = "UPDATE ezcontentobject_attribute a SET a.id = (
SELECT MIN( id ) FROM ezcontentobject_attribute b
WHERE b.contentclassattribute_id = $classAttributeID
AND b.contentobject_id = a.contentobject_id
AND b.language_code = a.language_code )
WHERE a.contentclassattribute_id = $classAttributeID";
}
else
{
$updateSql = "";
}
$db->query( $updateSql );
}
else
{
$limit = 1000;
$offset = 0;
while ( true )
{
$contentObjects = eZContentObject::fetchSameClassList( $classID, true, $offset, $limit );
if ( empty( $contentObjects ) )
{
break;
}
foreach ( $contentObjects as $object )
{
$contentobjectID = $object->attribute( 'id' );
$objectVersions = $object->versions();
// the start version ID, to make sure one attribute in different version has same id.
$startAttributeID = array();
foreach ( $objectVersions as $objectVersion )
{
$translations = $objectVersion->translations( false );
$version = $objectVersion->attribute( 'version' );
foreach ( $translations as $translation )
{
$objectAttribute = eZContentObjectAttribute::create( $classAttributeID, $contentobjectID, $version, $translation );
if( array_key_exists( $translation, $startAttributeID ) )
{
$objectAttribute->setAttribute( 'id', $startAttributeID[$translation] );
}
$objectAttribute->setAttribute( 'language_code', $translation );
$objectAttribute->initialize();
$objectAttribute->store();
if( !array_key_exists( $translation, $startAttributeID ) )
{
$startAttributeID[$translation] = $objectAttribute->attribute( 'id' );
}
$objectAttribute->postInitialize();
}
}
}
$offset += $limit;
eZContentObject::clearCache();
}
}
}
示例2: addClassAttributes
function addClassAttributes( $params )
{
$classInfo = $params['class'];
$attributesInfo = $params['attributes'];
$classID = isset( $classInfo['id'] ) ? $classInfo['id'] : false;
if( $classID )
{
$class = eZContentClass::fetch( $classID );
}
else
{
if( isset( $classInfo['identifier'] ) )
{
$class = eZSiteInstaller::classByIdentifier( $classInfo );
}
else
{
$this->reportError( "neither 'id' nor 'identifier' is set for content class" ,
'eZSiteInstaller::addClassAttribute' );
}
}
if( !is_object( $class ) )
{
$this->reportError( "Can't fetch content class" ,
'eZSiteInstaller::addClassAttribute' );
return;
}
$classID = $class->attribute( 'id' );
foreach( $attributesInfo as $attributeInfo )
{
$classAttributeIdentifier = $attributeInfo['identifier'];
$classAttributeName = $attributeInfo['name'];
$datatype = $attributeInfo['data_type_string'];
$defaultValue = isset( $attributeInfo['default_value'] ) ? $attributeInfo['default_value'] : false;
$canTranslate = isset( $attributeInfo['can_translate'] ) ? $attributeInfo['can_translate'] : 1;
$isRequired = isset( $attributeInfo['is_required'] ) ? $attributeInfo['is_required'] : 0;
$isSearchable = isset( $attributeInfo['is_searchable'] ) ? $attributeInfo['is_searchable'] : 0;
$attrContent = isset( $attributeInfo['content'] ) ? $attributeInfo['content'] : false;
$attrCreateInfo = array( 'identifier' => $classAttributeIdentifier,
'name' => $classAttributeName,
'can_translate' => $canTranslate,
'is_required' => $isRequired,
'is_searchable' => $isSearchable );
$newAttribute = eZContentClassAttribute::create( $classID, $datatype, $attrCreateInfo );
$dataType = $newAttribute->dataType();
$dataType->initializeClassAttribute( $newAttribute );
// not all datatype can have 'default_value'. do check here.
if( $defaultValue !== false )
{
switch( $datatype )
{
case 'ezboolean':
{
$newAttribute->setAttribute( 'data_int3', $defaultValue );
}
break;
default:
break;
}
}
if( $attrContent )
$newAttribute->setContent( $attrContent );
// store attribute, update placement, etc...
$attributes = $class->fetchAttributes();
$attributes[] = $newAttribute;
// remove temporary version
if ( $newAttribute->attribute( 'id' ) !== null )
{
$newAttribute->remove();
}
$newAttribute->setAttribute( 'version', eZContentClass::VERSION_STATUS_DEFINED );
$newAttribute->setAttribute( 'placement', count( $attributes ) );
$class->adjustAttributePlacements( $attributes );
foreach( $attributes as $attribute )
{
$attribute->storeDefined();
}
// update objects
$classAttributeID = $newAttribute->attribute( 'id' );
$objects = eZContentObject::fetchSameClassList( $classID );
foreach( $objects as $object )
{
$contentobjectID = $object->attribute( 'id' );
$objectVersions = $object->versions();
foreach( $objectVersions as $objectVersion )
{
//.........这里部分代码省略.........
示例3: execute
//.........这里部分代码省略.........
}
$class->setAttribute('contentobject_name', $classObjectNamePattern);
$class->setAttribute('identifier', $classIdentifier);
$class->setAttribute('is_container', $classIsContainer);
$class->setAttribute('url_alias_name', $classURLAliasPattern);
$class->store();
break;
case 'skip':
default:
continue;
break;
}
}
if (!$class) {
// Try to create a unique class identifier
$currentClassIdentifier = $classIdentifier;
$unique = false;
while (!$unique) {
$classList = eZContentClass::fetchByIdentifier($currentClassIdentifier);
if ($classList) {
// "increment" class identifier
if (preg_match('/^(.*)_(\\d+)$/', $currentClassIdentifier, $matches)) {
$currentClassIdentifier = $matches[1] . '_' . ($matches[2] + 1);
} else {
$currentClassIdentifier = $currentClassIdentifier . '_1';
}
} else {
$unique = true;
}
unset($classList);
}
$classIdentifier = $currentClassIdentifier;
// create class
$class = eZContentClass::create($userID, array('version' => 1, 'serialized_name_list' => $classNameList->serializeNames(), 'create_lang_if_not_exist' => true, 'identifier' => $classIdentifier, 'remote_id' => $classRemoteID, 'contentobject_name' => $classObjectNamePattern, 'url_alias_name' => $classURLAliasPattern, 'is_container' => $classIsContainer, 'created' => $classCreated, 'modified' => $classModified));
$class->store();
$attributes = $class->fetchAttributes();
$class->storeDefined($attributes);
$classID = $class->attribute('id');
$this->writeMessage("\t\tClass '{$classIdentifier}' will be newly created.", 'notice');
}
// create class attributes
$classAttributeList = $classAttributesNode->getElementsByTagName('Attribute');
$classDataMap = $class->attribute('data_map');
$updateAttributeList = array();
if ($classDataMap == NULL) {
$classDataMap = array();
}
foreach ($classAttributeList as $classAttributeNode) {
$attributeDatatype = $classAttributeNode->getAttribute('datatype');
$attributeIsRequired = strtolower($classAttributeNode->getAttribute('required')) == 'true';
$attributeIsSearchable = strtolower($classAttributeNode->getAttribute('searchable')) == 'true';
$attributeIsInformationCollector = strtolower($classAttributeNode->getAttribute('informationCollector')) == 'true';
$attributeIsTranslatable = strtolower($classAttributeNode->getAttribute('translatable')) == 'false' ? 0 : 1;
$attributeIdentifier = $classAttributeNode->getAttribute('identifier');
$attributePlacement = $classAttributeNode->getAttribute('placement');
$attributeNameListObject = $classAttributeNode->getElementsByTagName('Names')->item(0);
if ($attributeNameListObject->hasAttributes()) {
if ($attributeNameListObject->hasAttributes()) {
$attributes = $attributeNameListObject->attributes;
if (!is_null($attributes)) {
$attributeNameList = array();
foreach ($attributes as $index => $attr) {
$attributeNameList[$attr->name] = $attr->value;
}
}
}
示例4: updateClass
function updateClass($classId)
{
global $cli, $script, $db, $scheduledScript;
// If the class is not stored yet, store it now
$class = eZContentClass::fetch($classId, true, eZContentClass::VERSION_STATUS_TEMPORARY);
if ($class) {
$cli->output("Storing class");
$class->storeDefined($class->fetchAttributes());
}
// Fetch the stored class
$class = eZContentClass::fetch($classId);
if (!$class) {
$cli->error('Could not fetch class with ID: ' . $classId);
return;
}
$classAttributes = $class->fetchAttributes();
$classAttributeIDs = array();
foreach ($classAttributes as $classAttribute) {
$classAttributeIDs[] = $classAttribute->attribute('id');
}
$objectCount = eZContentObject::fetchSameClassListCount($classId);
$cli->output('Number of objects to be processed: ' . $objectCount);
$counter = 0;
$offset = 0;
$limit = 100;
$objects = eZContentObject::fetchSameClassList($classId, true, $offset, $limit);
// Add and/or remove attributes for all versions and translations of all objects of this class
while (count($objects) > 0) {
// Run a transaction per $limit objects
$db->begin();
foreach ($objects as $object) {
$contentObjectID = $object->attribute('id');
$objectVersions = $object->versions();
foreach ($objectVersions as $objectVersion) {
$versionID = $objectVersion->attribute('version');
$translations = $objectVersion->translations();
foreach ($translations as $translation) {
$translationName = $translation->attribute('language_code');
// Class attribute IDs of object attributes (not necessarily the same as those in the class, hence the manual sql)
$objectClassAttributeIDs = array();
$rows = $db->arrayQuery("SELECT id,contentclassattribute_id, data_type_string\n FROM ezcontentobject_attribute\n WHERE contentobject_id = '{$contentObjectID}' AND\n version = '{$versionID}' AND\n language_code='{$translationName}'");
foreach ($rows as $row) {
$objectClassAttributeIDs[$row['id']] = $row['contentclassattribute_id'];
}
// Quick array diffs
$attributesToRemove = array_diff($objectClassAttributeIDs, $classAttributeIDs);
// Present in the object, not in the class
$attributesToAdd = array_diff($classAttributeIDs, $objectClassAttributeIDs);
// Present in the class, not in the object
// Remove old attributes
foreach ($attributesToRemove as $objectAttributeID => $classAttributeID) {
$objectAttribute = eZContentObjectAttribute::fetch($objectAttributeID, $versionID);
if (!is_object($objectAttribute)) {
continue;
}
$objectAttribute->remove($objectAttributeID);
}
// Add new attributes
foreach ($attributesToAdd as $classAttributeID) {
$objectAttribute = eZContentObjectAttribute::create($classAttributeID, $contentObjectID, $versionID, $translationName);
if (!is_object($objectAttribute)) {
continue;
}
$objectAttribute->setAttribute('language_code', $translationName);
$objectAttribute->initialize();
$objectAttribute->store();
$objectAttribute->postInitialize();
}
}
}
// Progress bar and Script Monitor progress
$cli->output('.', false);
$counter++;
if ($counter % 70 == 0 or $counter >= $objectCount) {
$progressPercentage = $counter / $objectCount * 100;
$cli->output(sprintf(' %01.1f %%', $progressPercentage));
if ($scheduledScript) {
$scheduledScript->updateProgress($progressPercentage);
}
}
}
$db->commit();
$offset += $limit;
$objects = eZContentObject::fetchSameClassList($classId, true, $offset, $limit);
}
// Set the object name to the first attribute, if not set
$classAttributes = $class->fetchAttributes();
// Fetch the first attribute
if (count($classAttributes) > 0 && trim($class->attribute('contentobject_name')) == '') {
$db->begin();
$identifier = $classAttributes[0]->attribute('identifier');
$identifier = '<' . $identifier . '>';
$class->setAttribute('contentobject_name', $identifier);
$class->store();
$db->commit();
}
}
示例5: initializeObjectAttributes
function initializeObjectAttributes(&$objects = null)
{
$classAttributeID = $this->ID;
$classID = $this->ContentClassID;
$dataType = $this->attribute('data_type');
if ($dataType->supportsBatchInitializeObjectAttribute()) {
$db = eZDB::instance();
$data = array('contentobject_id' => 'a.contentobject_id', 'version' => 'a.version', 'contentclassattribute_id' => $classAttributeID, 'data_type_string' => "'" . $db->escapeString($this->DataTypeString) . "'", 'language_code' => 'a.language_code', 'language_id' => 'MAX(a.language_id)');
$datatypeData = $dataType->batchInitializeObjectAttributeData($this);
$data = array_merge($data, $datatypeData);
$cols = implode(', ', array_keys($data));
$values = implode(', ', $data);
$sql = "INSERT INTO ezcontentobject_attribute( {$cols} )\n SELECT {$values}\n FROM ezcontentobject_attribute a, ezcontentobject o\n WHERE o.id = a.contentobject_id AND\n o.contentclass_id={$classID}\n GROUP BY contentobject_id,\n version,\n language_code";
$db->query($sql);
} else {
if (!is_array($objects)) {
$objects = eZContentObject::fetchSameClassList($classID);
}
foreach ($objects as $object) {
$contentobjectID = $object->attribute('id');
$objectVersions = $object->versions();
foreach ($objectVersions as $objectVersion) {
$translations = $objectVersion->translations(false);
$version = $objectVersion->attribute('version');
foreach ($translations as $translation) {
$objectAttribute = eZContentObjectAttribute::create($classAttributeID, $contentobjectID, $version, $translation);
$objectAttribute->setAttribute('language_code', $translation);
$objectAttribute->initialize();
$objectAttribute->store();
$objectAttribute->postInitialize();
}
}
}
}
}
示例6: updateContentObjectAttributes
/**
* update all the objects with the new attribute info
* todo; this might have to support processing in batches
*/
static function updateContentObjectAttributes($contentClass, $classAttributeID, $identifier = false)
{
$classId = $contentClass->attribute("id");
// update object attributes
$countProcessed = 0;
$batchSize = 200;
$totalObjectCount = eZContentObject::fetchSameClassListCount($classId);
for ($offset = 0; $offset < $totalObjectCount; $offset += $batchSize) {
$objects = eZContentObject::fetchSameClassList($classId, false, $offset, $batchSize);
foreach ($objects as $num => $object) {
$object = eZContentObject::fetch($object["id"]);
if ($object) {
$contentobjectID = $object->attribute("id");
$objectVersions = $object->versions();
foreach ($objectVersions as $objectVersion) {
$translations = $objectVersion->translations(false);
$version = $objectVersion->attribute("version");
$dataMap = $objectVersion->attribute("data_map");
if ($identifier && isset($dataMap[$identifier])) {
// Attribute already exists for this object version
} else {
foreach ($translations as $translation) {
$objectAttribute = eZContentObjectAttribute::create($classAttributeID, $contentobjectID, $version);
$objectAttribute->setAttribute("language_code", $translation);
$objectAttribute->initialize();
$objectAttribute->store();
$objectAttribute->postInitialize();
}
}
}
$countProcessed += 1;
}
echo "Percent complete: " . sprintf("% 3.2f", $countProcessed / $totalObjectCount * 100.0) . "%\r";
}
unset($GLOBALS["eZContentObjectContentObjectCache"]);
unset($GLOBALS["eZContentObjectDataMapCache"]);
unset($GLOBALS["eZContentObjectVersionCache"]);
unset($objects);
}
echo "\n";
}
示例7: addClassAttributes
public static function addClassAttributes($class_identifier, $attributesInfo)
{
if (isset($class_identifier)) {
$class = eZContentClass::fetchByIdentifier($class_identifier);
}
if (!is_object($class)) {
return;
}
$classID = $class->attribute('id');
foreach ($attributesInfo as $attributeInfo) {
$classAttributeIdentifier = $attributeInfo['identifier'];
$classAttributeName = $attributeInfo['name'];
$datatype = $attributeInfo['data_type_string'];
$defaultValue = isset($attributeInfo['default_value']) ? $attributeInfo['default_value'] : false;
$canTranslate = isset($attributeInfo['can_translate']) ? $attributeInfo['can_translate'] : 1;
$isRequired = isset($attributeInfo['is_required']) ? $attributeInfo['is_required'] : 0;
$isSearchable = isset($attributeInfo['is_searchable']) ? $attributeInfo['is_searchable'] : 1;
$attrContent = isset($attributeInfo['content']) ? $attributeInfo['content'] : false;
$attrCreateInfo = array('identifier' => $classAttributeIdentifier, 'name' => $classAttributeName, 'can_translate' => $canTranslate, 'is_required' => $isRequired, 'is_searchable' => $isSearchable);
$newAttribute = eZContentClassAttribute::create($classID, $datatype, $attrCreateInfo);
$dataType = $newAttribute->dataType();
$dataType->initializeClassAttribute($newAttribute);
// not all datatype can have 'default_value'. do check here.
if ($defaultValue !== false) {
switch ($datatype) {
case 'ezboolean':
$newAttribute->setAttribute('data_int3', $defaultValue);
break;
default:
break;
}
}
if ($attrContent) {
$newAttribute->setContent($attrContent);
}
// store attribute, update placement, etc...
$attributes = $class->fetchAttributes();
$attributes[] = $newAttribute;
// remove temporary version
if ($newAttribute->attribute('id') !== null) {
$newAttribute->remove();
}
$newAttribute->setAttribute('version', eZContentClass::VERSION_STATUS_DEFINED);
$newAttribute->setAttribute('placement', count($attributes));
$class->adjustAttributePlacements($attributes);
foreach ($attributes as $attribute) {
$attribute->storeDefined();
}
// update objects
$classAttributeID = $newAttribute->attribute('id');
$count = eZContentObject::fetchSameClassListCount($class->ID);
$output = new ezcConsoleOutput();
$bar = new ezcConsoleProgressbar($output, (int) $count);
$offset = 0;
$limit = 50;
while (true) {
if ($offset > $count) {
break;
}
$objects = eZContentObject::fetchSameClassList($classID, true, $offset, $limit);
foreach ($objects as $object) {
$contentobjectID = $object->attribute('id');
$objectVersions = $object->versions();
foreach ($objectVersions as $objectVersion) {
$translations = $objectVersion->translations(false);
$version = $objectVersion->attribute('version');
foreach ($translations as $translation) {
$objectAttribute = eZContentObjectAttribute::create($classAttributeID, $contentobjectID, $version);
$objectAttribute->setAttribute('language_code', $translation);
$objectAttribute->initialize();
$objectAttribute->store();
$objectAttribute->postInitialize();
}
}
$bar->advance();
}
eZContentObject::clearCache();
$offset += $limit;
}
$bar->finish();
}
}