/**
  * Adds records from a foreign table (for selector boxes)
  *
  * @param	array		The array of items (label,value,icon)
  * @param	array		The 'columns' array for the field (from TCA)
  * @param	array		TSconfig for the table/row
  * @param	string		The fieldname
  * @param	boolean		If set, then we are fetching the 'neg_' foreign tables.
  * @return	array		The $items array modified.
  * @see addSelectOptionsToItemArray(), t3lib_BEfunc::exec_foreign_table_where_query()
  */
 function foreignTable($items, $fieldValue, $TSconfig, $field, $pFFlag = 0)
 {
     global $TCA;
     // Init:
     $pF = $pFFlag ? 'neg_' : '';
     $f_table = $fieldValue['config'][$pF . 'foreign_table'];
     $uidPre = $pFFlag ? '-' : '';
     // Get query:
     $res = t3lib_BEfunc::exec_foreign_table_where_query($fieldValue, $field, $TSconfig, $pF);
     // Perform lookup
     if ($GLOBALS['TYPO3_DB']->sql_error()) {
         echo $GLOBALS['TYPO3_DB']->sql_error() . "\n\nThis may indicate a table defined in tables.php is not existing in the database!";
         return array();
     }
     // Get label prefix.
     $lPrefix = $this->sL($fieldValue['config'][$pF . 'foreign_table_prefix']);
     // Get icon field + path if any:
     $iField = $TCA[$f_table]['ctrl']['selicon_field'];
     $iPath = trim($TCA[$f_table]['ctrl']['selicon_field_path']);
     // Traverse the selected rows to add them:
     while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
         t3lib_BEfunc::workspaceOL($f_table, $row);
         if (is_array($row)) {
             // Prepare the icon if available:
             if ($iField && $iPath && $row[$iField]) {
                 $iParts = t3lib_div::trimExplode(',', $row[$iField], 1);
                 $icon = '../' . $iPath . '/' . trim($iParts[0]);
             } elseif (t3lib_div::inList('singlebox,checkbox', $fieldValue['config']['renderMode'])) {
                 $icon = t3lib_iconWorks::mapRecordTypeToSpriteIconName($f_table, $row);
             } else {
                 $icon = 'empty-empty';
             }
             // Add the item:
             $items[] = array($lPrefix . htmlspecialchars(t3lib_BEfunc::getRecordTitle($f_table, $row)), $uidPre . $row['uid'], $icon);
         }
     }
     return $items;
 }
 /**
  * returns the sprite icon for the given sys language record.
  *
  * @param array|int $recordOrUid
  * @return Ambigous <string, multitype:>
  */
 public static function getLangSpriteIcon($recordOrUid, $options = NULL)
 {
     tx_rnbase::load('tx_rnbase_model_data');
     $options = tx_rnbase_model_data::getInstance($options);
     if (!is_array($recordOrUid)) {
         $langUid = (int) $recordOrUid;
         $record = self::getLangRecord($recordOrUid);
     } else {
         $langUid = (int) $recordOrUid['uid'];
         $record = $recordOrUid;
     }
     $spriteIconName = 'flags-multiple';
     if (!empty($record)) {
         $spriteIconName = t3lib_iconWorks::mapRecordTypeToSpriteIconName('sys_language', $record);
     }
     $out = tx_rnbase_mod_Util::getSpriteIcon($spriteIconName);
     // add title per default (typo3 equivalent)!
     if ($options->getShowTitle() !== FALSE) {
         $langTitle = 'N/A';
         if ($langUid === -1) {
             $langTitle = 'LLL:EXT:lang/locallang_general.xml:LGL.allLanguages';
         } elseif ($langUid === 0) {
             $langTitle = 'LLL:EXT:lang/locallang_general.xml:LGL.default_value';
         } elseif (!empty($record['title'])) {
             $langTitle = $record['title'];
         }
         $out .= '&nbsp;' . htmlspecialchars($GLOBALS['LANG']->sL($langTitle));
     }
     return $out;
 }
 /**
  * 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 (only used to get TSconfig configuration setting flag and label for default language)
  * @param	string		Backpath for flags
  * @return	array		Array with languages (title, uid, flagIcon)
  */
 function getSystemLanguages($page_id = 0, $backPath = '')
 {
     global $TCA, $LANG;
     $modSharedTSconfig = t3lib_BEfunc::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' => $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'] && t3lib_extMgm::isLoaded('static_info_tables')) {
             $staticLangRow = t3lib_BEfunc::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'] = t3lib_iconWorks::mapRecordTypeToSpriteIconName('sys_language', $row);
         }
     }
     return $languageIconTitles;
 }