function instantiate($userID = false, $sectionID = 0, $versionNumber = false, $languageCode = false, $versionStatus = eZContentObjectVersion::STATUS_INTERNAL_DRAFT) { $attributes = $this->fetchAttributes(); if ($userID === false) { $user = eZUser::currentUser(); $userID = $user->attribute('contentobject_id'); } if ($languageCode == false) { $languageCode = eZContentObject::defaultLanguage(); } $object = eZContentObject::create(ezpI18n::tr("kernel/contentclass", "New %1", null, array($this->name($languageCode))), $this->attribute("id"), $userID, $sectionID, 1, $languageCode); if ($this->attribute('always_available')) { $object->setAttribute('language_mask', (int) $object->attribute('language_mask') | 1); } $db = eZDB::instance(); $db->begin(); $object->store(); $object->assignDefaultStates(); $object->setName(ezpI18n::tr("kernel/contentclass", "New %1", null, array($this->name($languageCode))), false, $languageCode); if (!$versionNumber) { $version = $object->createInitialVersion($userID, $languageCode); } else { $version = eZContentObjectVersion::create($object->attribute("id"), $userID, $versionNumber, $languageCode); } if ($versionStatus !== false) { $version->setAttribute('status', $versionStatus); } $version->store(); foreach ($attributes as $attribute) { $attribute->instantiate($object->attribute('id'), $languageCode); } if (isset($user) && $user instanceof eZUser && $user->isAnonymous()) { $createdObjectIDList = eZPreferences::value('ObjectCreationIDList'); if (!$createdObjectIDList) { $createdObjectIDList = array($object->attribute('id')); } else { $createdObjectIDList = unserialize($createdObjectIDList); $createdObjectIDList[] = $object->attribute('id'); } eZPreferences::setValue('ObjectCreationIDList', serialize($createdObjectIDList)); } $db->commit(); return $object; }