source/Core/Model/MultiLanguageModel.php
public function getAvailableInLangs()
    {
        $languages = \OxidEsales\Eshop\Core\Registry::getLang()->getLanguageNames();

        $objFields = $this->_getTableFields(
            getViewName($this->_sCoreTable, -1, -1),
            true
        );
        $multiLangFields = [];

        //selecting all object multilang fields
        foreach ($objFields as $key => $value) {
            //skipping oxactive field
            if (preg_match('/^oxactive(_(\d{1,2}))?$/', $key)) {
                continue;
            }

            $fieldLang = $this->_getFieldLang($key);

            //checking, if field is multilanguage
            if ($this->isMultilingualField($key) || $fieldLang > 0) {
                $newKey = preg_replace('/_(\d{1,2})$/', '', $key);
                $multiLangFields[$newKey][] = (int) $fieldLang;
            }
        }

        // if no multilanguage fields, return default languages array
        if (count($multiLangFields) < 1) {
            return $languages;
        }

        // select from non-multilanguage core view (all ml tables joined to one)
        $db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
        $query = "select * from " . getViewName($this->_sCoreTable, -1, -1) . " where oxid = " . $db->quote($this->getId());
        $rs = $db->getAll($query);

        $notInLang = $languages;

        // checks if object field data is not empty in all available languages
        // and formats not available in languages array
        if (isset($rs[0]) && is_array($rs[0]) && count($rs[0])) {
            foreach ($multiLangFields as $fieldId => $multiLangIds) {
                foreach ($multiLangIds as $multiLangId) {
                    $fieldName = ($multiLangId == 0) ? $fieldId : $fieldId . '_' . $multiLangId;
                    if ($rs[0][strtoupper($fieldName)]) {
                        unset($notInLang[$multiLangId]);
                        continue;
                    }
                }
            }
        }

        return array_diff($languages, $notInLang);
    }
public function getAvailableInLangs()
    {
        $languages = \OxidEsales\Eshop\Core\Registry::getLang()->getLanguageNames();

        $objFields = $this->_getTableFields(
            getViewName($this->_sCoreTable, -1, -1),
            true
        );
        $multiLangFields = [];

        //selecting all object multilang fields
        foreach ($objFields as $key => $value) {
            //skipping oxactive field
            if (preg_match('/^oxactive(_(\d{1,2}))?$/', $key)) {
                continue;
            }

            $fieldLang = $this->_getFieldLang($key);

            //checking, if field is multilanguage
            if ($this->isMultilingualField($key) || $fieldLang > 0) {
                $newKey = preg_replace('/_(\d{1,2})$/', '', $key);
                $multiLangFields[$newKey][] = (int) $fieldLang;
            }
        }

        // if no multilanguage fields, return default languages array
        if (count($multiLangFields) < 1) {
            return $languages;
        }

        // select from non-multilanguage core view (all ml tables joined to one)
        $db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb(\OxidEsales\Eshop\Core\DatabaseProvider::FETCH_MODE_ASSOC);
        $query = "select * from " . getViewName($this->_sCoreTable, -1, -1) . " where oxid = " . $db->quote($this->getId());
        $rs = $db->getAll($query);

        $notInLang = $languages;

        // checks if object field data is not empty in all available languages
        // and formats not available in languages array
        if (isset($rs[0]) && is_array($rs[0]) && count($rs[0])) {
            foreach ($multiLangFields as $fieldId => $multiLangIds) {
                foreach ($multiLangIds as $multiLangId) {
                    $fieldName = ($multiLangId == 0) ? $fieldId : $fieldId . '_' . $multiLangId;
                    if ($rs[0][strtoupper($fieldName)]) {
                        unset($notInLang[$multiLangId]);
                        continue;
                    }
                }
            }
        }

        return array_diff($languages, $notInLang);
    }
public function getAvailableInLangs ( ) { $ languages = \ OxidEsales \ Eshop \ Core \ Registry :: getLang ( ) -> getLanguageNames ( ) ; $ objFields = $ this -> _getTableFields ( getViewName ( $ this -> _sCoreTable , - 1 , - 1 ) , true ) ; $ multiLangFields = [ ] ; //selecting all object multilang fields foreach ( $ objFields as $ key => $ value ) { //skipping oxactive field if ( preg_match ( '/^oxactive(_(\d{1,2}))?$/' , $ key ) ) { continue ; } $ fieldLang = $ this -> _getFieldLang ( $ key ) ; //checking, if field is multilanguage if ( $ this -> isMultilingualField ( $ key ) || $ fieldLang > 0 ) { $ newKey = preg_replace ( '/_(\d{1,2})$/' , '' , $ key ) ; $ multiLangFields [ $ newKey ] [ ] = ( int ) $ fieldLang ; } } // if no multilanguage fields, return default languages array if ( count ( $ multiLangFields ) < 1 ) { return $ languages ; } // select from non-multilanguage core view (all ml tables joined to one) $ db = \ OxidEsales \ Eshop \ Core \ DatabaseProvider :: getDb ( \ OxidEsales \ Eshop \ Core \ DatabaseProvider :: FETCH_MODE_ASSOC ) ; $ query = "select * from " . getViewName ( $ this -> _sCoreTable , - 1 , - 1 ) . " where oxid = " . $ db -> quote ( $ this -> getId ( ) ) ; $ rs = $ db -> getAll ( $ query ) ; $ notInLang = $ languages ; // checks if object field data is not empty in all available languages // and formats not available in languages array if ( isset ( $ rs [ 0 ] ) && is_array ( $ rs [ 0 ] ) && count ( $ rs [ 0 ] ) ) { foreach ( $ multiLangFields as $ fieldId => $ multiLangIds ) { foreach ( $ multiLangIds as $ multiLangId ) { $ fieldName = ( $ multiLangId == 0 ) ? $ fieldId : $ fieldId . '_' . $ multiLangId ; if ( $ rs [ 0 ] [ strtoupper ( $ fieldName ) ] ) { unset ( $ notInLang [ $ multiLangId ] ) ; continue ; } } } } return array_diff ( $ languages , $ notInLang ) ; }
Returns an array of languages in which object multilanguage
fields are already setted

@return array
Returns an array of languages in which object multilanguage fields are already setted