public static function setObjectStatusPublished($objectID, $versionNum)
{
$object = eZContentObject::fetch($objectID);
$version = $object->version($versionNum);
$db = eZDB::instance();
$db->begin();
$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'));
}
}