public static function setObjectStatusPublished($objectID, $versionNum) { $object = eZContentObject::fetch($objectID); $version = $object->version($versionNum); $db = eZDB::instance(); $db->begin(); $object->publishContentObjectRelations($versionNum); $object->setAttribute('status', eZContentObject::STATUS_PUBLISHED); $version->setAttribute('status', eZContentObjectVersion::STATUS_PUBLISHED); $object->setAttribute('current_version', $versionNum); $objectIsAlwaysAvailable = $object->isAlwaysAvailable(); $object->setAttribute('language_mask', eZContentLanguage::maskByLocale($version->translationList(false, false), $objectIsAlwaysAvailable)); if ($object->attribute('published') == 0) { $object->setAttribute('published', time()); } $object->setAttribute('modified', time()); $classID = $object->attribute('contentclass_id'); $class = eZContentClass::fetch($classID); $objectName = $class->contentObjectName($object); $object->setName($objectName, $versionNum); $existingTranslations = $version->translations(false); foreach ($existingTranslations as $translation) { $translatedName = $class->contentObjectName($object, $versionNum, $translation); $object->setName($translatedName, $versionNum, $translation); } if ($objectIsAlwaysAvailable) { $initialLanguageID = $object->attribute('initial_language_id'); $object->setAlwaysAvailableLanguageID($initialLanguageID); } $version->store(); $object->store(); eZContentObjectTreeNode::setVersionByObjectID($objectID, $versionNum); $nodes = $object->assignedNodes(); foreach ($nodes as $node) { $node->setName($object->attribute('name')); $node->updateSubTreePath(); } $db->commit(); /* Check if current class is the user class, and if so, clean up the user-policy cache */ if (in_array($classID, eZUser::contentClassIDs())) { eZUser::purgeUserCacheByUserId($object->attribute('id')); } }