static function create($userID = false, $optionalValues = array(), $languageLocale = false) { $dateTime = time(); if (!$userID) { $userID = eZUser::currentUserID(); } $nameList = new eZContentClassNameList(); if (isset($optionalValues['serialized_name_list'])) { $nameList->initFromSerializedList($optionalValues['serialized_name_list']); } else { if (isset($optionalValues['name'])) { $nameList->initFromString($optionalValues['name'], $languageLocale); } else { $nameList->initFromString('', $languageLocale); } } $descriptionList = new eZSerializedObjectNameList(); if (isset($optionalValues['serialized_description_list'])) { $descriptionList->initFromSerializedList($optionalValues['serialized_description_list']); } else { if (isset($optionalValues['description'])) { $descriptionList->initFromString($optionalValues['description'], $languageLocale); } else { $descriptionList->initFromString('', $languageLocale); } } $languageMask = $nameList->languageMask(); $initialLanguageID = $nameList->alwaysAvailableLanguageID(); $contentClassDefinition = eZContentClass::definition(); $row = array("id" => null, "version" => 1, "serialized_name_list" => $nameList->serializeNames(), 'serialized_description_list' => $descriptionList->serializeNames(), "identifier" => "", "contentobject_name" => "", "creator_id" => $userID, "modifier_id" => $userID, "created" => $dateTime, 'remote_id' => eZRemoteIdUtility::generate('class'), "modified" => $dateTime, "is_container" => $contentClassDefinition['fields']['is_container']['default'], "always_available" => $contentClassDefinition['fields']['always_available']['default'], 'language_mask' => $languageMask, 'initial_language_id' => $initialLanguageID, "sort_field" => $contentClassDefinition['fields']['sort_field']['default'], "sort_order" => $contentClassDefinition['fields']['sort_order']['default']); $row = array_merge($row, $optionalValues); $contentClass = new eZContentClass($row); // setting 'dirtyData' to make sure the 'NameList' will be stored into db. $contentClass->NameList->setHasDirtyData(true); return $contentClass; }