/**
  * Returns array of system languages
  *
  * Since TYPO3 4.5 the flagIcon is not returned as a filename in "gfx/flags/*" anymore,
  * but as a string <flags-xx>. The calling party should call
  * t3lib_iconWorks::getSpriteIcon(<flags-xx>) to get an HTML which will represent
  * the flag of this language.
  *
  * @param integer $page_id Page id (only used to get TSconfig configuration setting flag and label for default language)
  * @param string $backPath Backpath for flags
  * @return array Array with languages (title, uid, flagIcon)
  * @todo Define visibility
  */
 public function getSystemLanguages($page_id = 0, $backPath = '')
 {
     $modSharedTSconfig = \TYPO3\CMS\Backend\Utility\BackendUtility::getModTSconfig($page_id, 'mod.SHARED');
     $languageIconTitles = array();
     // fallback "old iconstyles"
     if (preg_match('/\\.gif$/', $modSharedTSconfig['properties']['defaultLanguageFlag'])) {
         $modSharedTSconfig['properties']['defaultLanguageFlag'] = str_replace('.gif', '', $modSharedTSconfig['properties']['defaultLanguageFlag']);
     }
     $languageIconTitles[0] = array('uid' => 0, 'title' => strlen($modSharedTSconfig['properties']['defaultLanguageLabel']) ? $modSharedTSconfig['properties']['defaultLanguageLabel'] . ' (' . $GLOBALS['LANG']->sl('LLL:EXT:lang/locallang_mod_web_list.xml:defaultLanguage') . ')' : $GLOBALS['LANG']->sl('LLL:EXT:lang/locallang_mod_web_list.xml:defaultLanguage'), 'ISOcode' => 'DEF', 'flagIcon' => strlen($modSharedTSconfig['properties']['defaultLanguageFlag']) ? 'flags-' . $modSharedTSconfig['properties']['defaultLanguageFlag'] : 'empty-empty');
     // Set "All" language:
     $languageIconTitles[-1] = array('uid' => -1, 'title' => $GLOBALS['LANG']->getLL('multipleLanguages'), 'ISOcode' => 'DEF', 'flagIcon' => 'flags-multiple');
     // Find all system languages:
     $sys_languages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('*', 'sys_language', '');
     foreach ($sys_languages as $row) {
         $languageIconTitles[$row['uid']] = $row;
         if ($row['static_lang_isocode'] && \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('static_info_tables')) {
             $staticLangRow = \TYPO3\CMS\Backend\Utility\BackendUtility::getRecord('static_languages', $row['static_lang_isocode'], 'lg_iso_2');
             if ($staticLangRow['lg_iso_2']) {
                 $languageIconTitles[$row['uid']]['ISOcode'] = $staticLangRow['lg_iso_2'];
             }
         }
         if (strlen($row['flag'])) {
             $languageIconTitles[$row['uid']]['flagIcon'] = \TYPO3\CMS\Backend\Utility\IconUtility::mapRecordTypeToSpriteIconName('sys_language', $row);
         }
     }
     return $languageIconTitles;
 }
 /**
  * Returns array of system languages
  *
  * The property flagIcon returns a string <flags-xx>. The calling party should call
  * \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon(<flags-xx>) to get an HTML
  * which will represent the flag of this language.
  *
  * @param int $pageId Page id (used to get TSconfig configuration setting flag and label for default language)
  * @return array Array with languages (uid, title, ISOcode, flagIcon)
  */
 public function getSystemLanguages($pageId = 0)
 {
     $modSharedTSconfig = BackendUtility::getModTSconfig($pageId, 'mod.SHARED');
     // default language and "all languages" are always present
     $languages = array(0 => array('uid' => 0, 'title' => $this->getDefaultLanguageLabel($modSharedTSconfig), 'ISOcode' => 'DEF', 'flagIcon' => $this->getDefaultLanguageFlag($modSharedTSconfig)), -1 => array('uid' => -1, 'title' => $this->getLanguageService()->getLL('multipleLanguages'), 'ISOcode' => 'DEF', 'flagIcon' => 'flags-multiple'));
     // add the additional languages from database records
     $languageRecords = $this->getDatabaseConnection()->exec_SELECTgetRows('*', 'sys_language', '');
     foreach ($languageRecords as $languageRecord) {
         $languages[$languageRecord['uid']] = $languageRecord;
         if ($languageRecord['static_lang_isocode'] && ExtensionManagementUtility::isLoaded('static_info_tables')) {
             $staticLangRow = BackendUtility::getRecord('static_languages', $languageRecord['static_lang_isocode'], 'lg_iso_2');
             if ($staticLangRow['lg_iso_2']) {
                 $languages[$languageRecord['uid']]['ISOcode'] = $staticLangRow['lg_iso_2'];
             }
         }
         if ($languageRecord['flag'] !== '') {
             $languages[$languageRecord['uid']]['flagIcon'] = IconUtility::mapRecordTypeToSpriteIconName('sys_language', $languageRecord);
         }
     }
     return $languages;
 }
Ejemplo n.º 3
0
 /**
  * Adds records from a foreign table (for selector boxes)
  *
  * @param array $items The array of items (label,value,icon)
  * @param array $fieldValue The 'columns' array for the field (from TCA)
  * @param array $TSconfig TSconfig for the table/row
  * @param string $field The fieldname
  * @param boolean $pFFlag If set, then we are fetching the 'neg_' foreign tables.
  * @return array The $items array modified.
  * @see addSelectOptionsToItemArray(), BackendUtility::exec_foreign_table_where_query()
  * @todo Define visibility
  */
 public function foreignTable($items, $fieldValue, $TSconfig, $field, $pFFlag = FALSE)
 {
     // Init:
     $pF = $pFFlag ? 'neg_' : '';
     $f_table = $fieldValue['config'][$pF . 'foreign_table'];
     $uidPre = $pFFlag ? '-' : '';
     // Exec query:
     $res = BackendUtility::exec_foreign_table_where_query($fieldValue, $field, $TSconfig, $pF);
     // Perform error test
     $db = $this->getDatabaseConnection();
     if ($db->sql_error()) {
         $msg = htmlspecialchars($db->sql_error());
         $msg .= '<br />' . LF;
         $msg .= $this->sL('LLL:EXT:lang/locallang_core.xlf:error.database_schema_mismatch');
         $msgTitle = $this->sL('LLL:EXT:lang/locallang_core.xlf:error.database_schema_mismatch_title');
         /** @var $flashMessage FlashMessage */
         $flashMessage = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', $msg, $msgTitle, FlashMessage::ERROR, TRUE);
         /** @var $flashMessageService FlashMessageService */
         $flashMessageService = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessageService');
         /** @var $defaultFlashMessageQueue FlashMessageQueue */
         $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
         $defaultFlashMessageQueue->enqueue($flashMessage);
         return array();
     }
     // Get label prefix.
     $lPrefix = $this->sL($fieldValue['config'][$pF . 'foreign_table_prefix']);
     // Get icon field + path if any:
     $iField = $GLOBALS['TCA'][$f_table]['ctrl']['selicon_field'];
     $iPath = trim($GLOBALS['TCA'][$f_table]['ctrl']['selicon_field_path']);
     // Traverse the selected rows to add them:
     while ($row = $db->sql_fetch_assoc($res)) {
         BackendUtility::workspaceOL($f_table, $row);
         if (is_array($row)) {
             // Prepare the icon if available:
             if ($iField && $iPath && $row[$iField]) {
                 $iParts = GeneralUtility::trimExplode(',', $row[$iField], TRUE);
                 $icon = '../' . $iPath . '/' . trim($iParts[0]);
             } elseif (GeneralUtility::inList('singlebox,checkbox', $fieldValue['config']['renderMode'])) {
                 $icon = IconUtility::mapRecordTypeToSpriteIconName($f_table, $row);
             } else {
                 $icon = '';
             }
             // Add the item:
             $items[] = array($lPrefix . htmlspecialchars(BackendUtility::getRecordTitle($f_table, $row)), $uidPre . $row['uid'], $icon);
         }
     }
     $db->sql_free_result($res);
     return $items;
 }