/** * * @test * @return void */ public function getLanguageUidDB() { // Create the Array fixture. $fixture = array('uid' => 1); $language = new tx_languagevisibility_language(); $language->setData($fixture); // Assert that the size of the Array fixture is 0. $this->assertEquals(1, $language->getUid(), "wrong uid 1"); }
/** * returns array with the visibility options that are allowed for the current user. * * @param tx_languagevisibility_language $language * @return array */ public static function getAvailableOptionsForLanguage(tx_languagevisibility_language $language, $isOverlay = false, $element = null) { $element = $element === null ? self::getContextElement('pages', self::_guessCurrentPid()) : $element; $elementSupportsInheritance = $element->supportsInheritance(); $uid = $language->getUid(); $select = array(); $useInheritance = $elementSupportsInheritance && self::isInheritanceEnabled(); if (!$isOverlay) { if ($uid == 0) { $select['-'] = '-'; $select['yes'] = 'yes'; $select['no'] = 'no'; if ($useInheritance) { $select['no+'] = 'no+'; } } else { $select['-'] = '-'; $select['yes'] = 'yes'; $select['no'] = 'no'; if ($useInheritance) { $select['no+'] = 'no+'; } $select['t'] = 't'; $select['f'] = 'f'; } //check permissions, if user has no permission only no for the language is allowed // if the user has permissions for languages that act as fallbacklanguage: then the languages that falls back can have "-" in the options! if (!$GLOBALS['BE_USER']->checkLanguageAccess($uid)) { //check if the language falls back to one of the languages the user has permissions: $isInFallback = FALSE; $fallbacks = $language->getFallbackOrder($element); foreach ($fallbacks as $lId) { if ($GLOBALS['BE_USER']->checkLanguageAccess($lId)) { $isInFallback = TRUE; continue; } } $select = array(); if ($isInFallback) { $select['-'] = '-'; } if ($uid != 0 && self::isTranslatedAsDefaultEnabled()) { $select['t'] = 't'; } $select['no'] = 'no'; if ($useInheritance) { $select['no+'] = 'no+'; } } } else { //overlays elements can only have "force to no" or "force to no inherited" $select['-'] = '-'; $select['no'] = 'no'; if ($useInheritance) { $select['no+'] = 'no+'; } } /** * Get translations of labels from the locallang file */ if (is_object($GLOBALS['LANG'])) { //get value from locallang: foreach ($select as $k => $v) { $select[$k] = $GLOBALS['LANG']->sl('LLL:EXT:languagevisibility/locallang_db.xml:tx_languagevisibility_visibility.I.' . $v); } } return $select; }
/** * Compare element-language and foreign language. * * @todo make this method work for pages * @return boolean */ public function languageEquals(tx_languagevisibility_language $language) { return $this->row['sys_language_uid'] == $language->getUid(); }
/** * Create a visiblity object for an element for a given language. * @param tx_languagevisibility_language $language * @param tx_languagevisibility_element $element * @param boolean $omitLocal * @return tx_languagevisibility_visibility */ protected function getVisibility(tx_languagevisibility_language $language, tx_languagevisibility_element $element, $omitLocal = false) { $visibility = new tx_languagevisibility_visibility(); $local = $element->getLocalVisibilitySetting($language->getUid()); if (!$omitLocal && ($local != '' && $local != '-')) { $visibility->setVisibilityString($local)->setVisibilityDescription('local setting ' . $local); return $visibility; } else { if ($element->isLanguageSetToAll()) { $visibility->setVisibilityString('yes')->setVisibilityDescription('language configured to all'); return $visibility; } if ($element->isMonolithicTranslated()) { if ($element->languageEquals($language)) { $visibility->setVisibilityString('yes')->setVisibilityDescription(''); } else { $visibility->setVisibilityString('no')->setVisibilityDescription(''); } return $visibility; } if ($element->getFieldToUseForDefaultVisibility() == 'page') { if ($this->getUseInheritance()) { // gibt es in der rootline das visibiklitysetting no+ für die sprache dann return 'no' $inheritedVisibility = $this->getInheritedVisibility($language, $element); switch ($inheritedVisibility->getVisibilityString()) { case 'no+': //if no+ is found it means the current element should be threated as if it has no set $visibility->setVisibilityString('no')->setVisibilityDescription('force to no (' . $inheritedVisibility->getVisibilityDescription() . ')'); break; case 'yes+': $visibility->setVisibilityString('yes')->setVisibilityDescription('force to yes (' . $inheritedVisibility->getVisibilityDescription() . ')'); break; default: $setting = $language->getDefaultVisibilityForPage($element); $visibility->setVisibilityString($setting)->setVisibilityDescription('default visibility for page (' . $setting . ')'); break; } } else { //inheritance is disabled $setting = $language->getDefaultVisibilityForPage($element); $visibility->setVisibilityString($setting)->setVisibilityDescription('default visibility for page (' . $setting . ')'); } } elseif ($element->getFieldToUseForDefaultVisibility() == 'tt_news') { $setting = $language->getDefaultVisibilityForTTNewsElement($element); $visibility->setVisibilityString($setting)->setVisibilityDescription('default visibility for news (' . $setting . ')'); } else { $setting = $language->getDefaultVisibilityForElement($element); $visibility->setVisibilityString($setting)->setVisibilityDescription('default visibility for element (' . $setting . ')'); } if ($visibility->getVisibilityString() == '') { $visibility->setVisibilityString('t')->setVisibilityDescription('no visibility configured using default setting "t"'); } return $visibility; } }