$filter->prepare(); } $infoCode = "feedback-removed-all"; } else { if ($Module->isCurrentAction('RemoveAlias')) { if ($http->hasPostVariable('ElementList')) { $elementList = $http->postVariable('ElementList'); if (!is_array($elementList)) { $elementList = array(); } foreach ($elementList as $element) { if (preg_match("#^([0-9]+).([a-fA-F0-9]+).([a-zA-Z0-9-]+)\$#", $element, $matches)) { $parentID = (int) $matches[1]; $textMD5 = $matches[2]; $language = $matches[3]; eZURLAliasML::removeSingleEntry($parentID, $textMD5, $language); } } $infoCode = "feedback-removed"; } } else { if ($Module->isCurrentAction('NewAlias')) { $aliasText = trim($Module->actionParameter('AliasText')); $parentIsRoot = false; if ($http->hasPostVariable('ParentIsRoot') && strlen(trim($http->postVariable('ParentIsRoot'))) > 0) { $parentIsRoot = true; } $languageCode = $Module->actionParameter('LanguageCode'); $language = eZContentLanguage::fetchByLocale($languageCode); $aliasRedirects = $http->hasPostVariable('AliasRedirects') && $http->postVariable('AliasRedirects'); if (!$language) {
/** * Removes a translation from the current object * * @param int $languageID * @return bool */ function removeTranslation( $languageID ) { $language = eZContentLanguage::fetch( $languageID ); if ( !$language ) { return false; } // check permissions for editing if ( !$this->checkAccess( 'edit', false, false, false, $languageID ) ) { return false; } // check if it is not the initial language $objectInitialLanguageID = $this->attribute( 'initial_language_id' ); if ( $objectInitialLanguageID == $languageID ) { return false; } // change language_mask of the object $languageMask = (int) $this->attribute( 'language_mask' ); $languageMask = (int) $languageMask & ~ (int) $languageID; $this->setAttribute( 'language_mask', $languageMask ); $db = eZDB::instance(); $db->begin(); $this->store(); $objectID = $this->ID; // If the current version has initial_language_id $languageID, change it to the initial_language_id of the object. $currentVersion = $this->currentVersion(); if ( $currentVersion->attribute( 'initial_language_id' ) == $languageID ) { $currentVersion->setAttribute( 'initial_language_id', $objectInitialLanguageID ); $currentVersion->store(); } // Remove all versions which had the language as its initial ID. Because of previous checks, it is sure we will not remove the published version. $versionsToRemove = $this->versions( true, array( 'conditions' => array( 'initial_language_id' => $languageID ) ) ); foreach ( $versionsToRemove as $version ) { $version->removeThis(); } $altLanguageID = $languageID++; // Remove all attributes in the language $attributes = $db->arrayQuery( "SELECT * FROM ezcontentobject_attribute WHERE contentobject_id='$objectID' AND ( language_id='$languageID' OR language_id='$altLanguageID' )" ); foreach ( $attributes as $attribute ) { $attributeObject = new eZContentObjectAttribute( $attribute ); $attributeObject->remove( $attributeObject->attribute( 'id' ), $attributeObject->attribute( 'version' ) ); unset( $attributeObject ); } // Remove all names in the language $db->query( "DELETE FROM ezcontentobject_name WHERE contentobject_id='$objectID' AND ( language_id='$languageID' OR language_id='$altLanguageID' )" ); // Update masks of the objects $mask = eZContentLanguage::maskForRealLanguages() - (int) $languageID; if ( $db->databaseName() == 'oracle' ) { $db->query( "UPDATE ezcontentobject_version SET language_mask = bitand( language_mask, $mask ) WHERE contentobject_id='$objectID'" ); } else { $db->query( "UPDATE ezcontentobject_version SET language_mask = language_mask & $mask WHERE contentobject_id='$objectID'" ); } $urlElementfilter = new eZURLAliasQuery(); $urlElementfilter->type = 'name'; // We want all languages present here, so we are turning off // language filtering $urlElementfilter->languages = false; $urlElementfilter->limit = false; $nodes = $this->assignedNodes(); foreach ( $nodes as $node ) { $parent = null; $textMD5 = null; $urlElementfilter->actions = array( 'eznode:' . $node->attribute( 'node_id' ) ); $urlElementfilter->prepare(); $urlElements = $urlElementfilter->fetchAll(); foreach ($urlElements as $url ) { if ( $url->attribute( 'lang_mask' ) === (int)$languageID or $url->attribute( 'lang_mask') === (int)$altLanguageID ) { $parent = $url->attribute( 'parent'); $textMD5 = $url->attribute( 'text_md5' ); break; } } if ( $parent !== null and $textMD5 !== null ) eZURLAliasML::removeSingleEntry( $parent, $textMD5, $language ); } $db->commit(); return true; }