private function deleteTranslationFromContentObject($contentId, $languageId)
    {
        $query = $this->connection->createQueryBuilder();
        $query->update('ezcontentobject')
            // parameter for bitwise operation has to be placed verbatim (w/o binding) for this to work cross-DBMS
            ->set('language_mask', 'language_mask & ~ ' . $languageId)
            ->set('modified', ':now')
            ->where('id = :contentId')
            ->andWhere(
            // make sure removed translation is not the last one (incl. alwaysAvailable)
                $query->expr()->andX(
                    'language_mask & ~ ' . $languageId . ' <> 0',
                    'language_mask & ~ ' . $languageId . ' <> 1'
                )
            )
            ->setParameter(':now', time())
            ->setParameter(':contentId', $contentId)
        ;

        $rowCount = $query->execute();

        // no rows updated means that most likely somehow it was the last remaining translation
        if ($rowCount === 0) {
            throw new BadStateException(
                '$languageCode',
                'Specified translation is the only one Content Object Version has'
            );
        }
    }
private function deleteTranslationFromContentObject($contentId, $languageId)
    {
        $query = $this->connection->createQueryBuilder();
        $query->update('ezcontentobject')
            // parameter for bitwise operation has to be placed verbatim (w/o binding) for this to work cross-DBMS
            ->set('language_mask', 'language_mask & ~ ' . $languageId)
            ->set('modified', ':now')
            ->where('id = :contentId')
            ->andWhere(
            // make sure removed translation is not the last one (incl. alwaysAvailable)
                $query->expr()->andX(
                    'language_mask & ~ ' . $languageId . ' <> 0',
                    'language_mask & ~ ' . $languageId . ' <> 1'
                )
            )
            ->setParameter(':now', time())
            ->setParameter(':contentId', $contentId)
        ;

        $rowCount = $query->execute();

        // no rows updated means that most likely somehow it was the last remaining translation
        if ($rowCount === 0) {
            throw new BadStateException(
                '$languageCode',
                'Specified translation is the only one Content Object Version has'
            );
        }
    }
private function deleteTranslationFromContentObject ( $ contentId , $ languageId ) { $ query = $ this -> connection -> createQueryBuilder ( ) ; $ query -> update ( 'ezcontentobject' ) // parameter for bitwise operation has to be placed verbatim (w/o binding) for this to work cross-DBMS -> set ( 'language_mask' , 'language_mask & ~ ' . $ languageId ) -> set ( 'modified' , ':now' ) -> where ( 'id = :contentId' ) -> andWhere ( // make sure removed translation is not the last one (incl. alwaysAvailable) $ query -> expr ( ) -> andX ( 'language_mask & ~ ' . $ languageId . ' <> 0' , 'language_mask & ~ ' . $ languageId . ' <> 1' ) ) -> setParameter ( ':now' , time ( ) ) -> setParameter ( ':contentId' , $ contentId ) ; $ rowCount = $ query -> execute ( ) ; // no rows updated means that most likely somehow it was the last remaining translation if ( $ rowCount === 0 ) { throw new BadStateException ( '$languageCode' , 'Specified translation is the only one Content Object Version has' ) ; } }
Remove language from language_mask of ezcontentobject.

@param int $contentId
@param int $languageId
@throws \eZ\Publish\Core\Base\Exceptions\BadStateException
Remove language from language_mask of ezcontentobject .