/**
  * Main function
  *
  * @return	string		HTML output
  */
 function main()
 {
     global $BE_USER, $LANG, $BACK_PATH, $TCA, $TYPO3_CONF_VARS;
     $content = '';
     $table = 'tx_dam';
     //
     // get records by query depending on option 'Show deselected only'
     //
     $origSel = $this->pObj->selection->sl->sel;
     if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_onlyDeselected']) {
         if (is_array($this->pObj->selection->sl->sel['NOT']['txdamRecords'])) {
             $excludeUidList = array_keys($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         } else {
             $excludeUidList = array(0);
             //dummy
         }
         unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         $this->pObj->selection->addSelectionToQuery();
         if (is_array($excludeUidList)) {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['NOT_txdamRecords'] = 'AND tx_dam.uid IN (' . $GLOBALS['TYPO3_DB']->cleanIntList(implode(',', $excludeUidList)) . ')';
         }
     } else {
         // will display deselected unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         $this->pObj->selection->addSelectionToQuery();
     }
     $this->pObj->selection->sl->sel = $origSel;
     //
     // set language query
     //
     $langRows = $this->pObj->getLanguages($this->pObj->defaultPid);
     $langCurrent = intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']);
     if (!isset($langRows[$langCurrent])) {
         $langCurrent = $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector'] = key($langRows);
     }
     $langQuery = '';
     $languageField = $TCA[$table]['ctrl']['languageField'];
     if ($langCurrent && $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') {
         // if ($langCurrent) { This works but create NULL columns for non-translated records so we need to use language overlay anyway
         $lgOvlFields = tx_dam_db::getLanguageOverlayFields($table, 'tx_dam_lgovl');
         $languageField = $TCA[$table]['ctrl']['languageField'];
         $transOrigPointerField = $TCA[$table]['ctrl']['transOrigPointerField'];
         $this->pObj->selection->setSelectionLanguage($langCurrent);
         $this->pObj->selection->qg->query['SELECT']['tx_dam as tx_dam_lgovl'] = implode(', ', $lgOvlFields) . ', tx_dam.uid as _dlg_uid, tx_dam.title as _dlg_title';
         $this->pObj->selection->qg->query['LEFT_JOIN']['tx_dam as tx_dam_lgovl'] = 'tx_dam.uid=tx_dam_lgovl.' . $transOrigPointerField;
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND tx_dam_lgovl.' . $languageField . '=' . $langCurrent;
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND tx_dam_lgovl.deleted=0';
         } else {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND (tx_dam_lgovl.' . $languageField . ' IN (' . $langCurrent . ', 0, -1) )';
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND (tx_dam_lgovl.sys_language_uid=1 OR tx_dam.sys_language_uid=0 )';
         }
     } else {
         $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam.' . $languageField] = 'AND tx_dam.' . $languageField . ' IN (0,-1)';
     }
     //
     // Add the current selection to the query
     //
     #		$this->pObj->selection->addSelectionToQuery();
     //
     // Use the current selection to create a query and count selected records
     //
     $this->pObj->selection->execSelectionQuery(TRUE);
     //
     // output header: info bar, result browser, ....
     //
     $content .= $this->pObj->guiItems->getOutput('header');
     $content .= $this->pObj->doc->spacer(10);
     // any records found?
     if ($this->pObj->selection->pointer->countTotal) {
         //
         // init db list object
         //
         $dblist = t3lib_div::makeInstance('tx_dam_listrecords');
         $dblist->setParameterName('form', $this->pObj->formName);
         $dblist->init($table);
         $dblist->setActionsEnv(array('currentLanguage' => $langCurrent, 'allowedLanguages' => $langRows));
         //
         // process multi action if needed
         //
         if ($processAction = $dblist->getMultiActionCommand()) {
             if ($processAction['onItems'] === '_all') {
                 $uidList = array();
                 $res = $this->pObj->selection->execSelectionQuery();
                 while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                     $uidList[] = $row['uid'];
                 }
                 $itemList = implode(',', $uidList);
             } else {
                 $itemList = $processAction['onItems'];
                 $uidList = t3lib_div::trimExplode(',', $itemList, true);
             }
             if ($uidList) {
                 switch ($processAction['actionType']) {
                     case 'url':
                         $url = str_replace('###ITEMLIST###', $itemList, $processAction['action']);
                         header('Location: ' . $url);
                         exit;
                         break;
                     case 'tce-data':
                         $params = '';
                         foreach ($uidList as $uid) {
                             $params .= str_replace('###UID###', $uid, $processAction['action']);
                         }
                         $url = $GLOBALS['SOBE']->doc->issueCommand($params, -1);
                         $url = $BACK_PATH . 'tce_db.php?&redirect=' . rawurlencode(t3lib_div::getIndpEnv('REQUEST_URI')) . '&vC=' . $BE_USER->veriCode() . '&prErr=1&uPT=1' . $params;
                         header('Location: ' . $url);
                         exit;
                         break;
                 }
             }
         }
         t3lib_div::loadTCA($table);
         //
         // set fields to display
         //
         $titleColumn = $TCA[$table]['ctrl']['label'];
         $allFields = tx_dam_db::getFieldListForUser($table);
         $selectedFields = t3lib_div::_GP('tx_dam_list_list_displayFields');
         $selectedFields = is_array($selectedFields) ? $selectedFields : explode(',', $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields']);
         // remove fields that can not be selected
         if (is_array($selectedFields)) {
             $selectedFields = array_intersect($allFields, $selectedFields);
             $selectedFields = array_merge(array($titleColumn), $selectedFields);
         } else {
             $selectedFields = array();
             $selectedFields[] = $titleColumn;
         }
         // store field list
         $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields'] = implode(',', $selectedFields);
         $GLOBALS['BE_USER']->pushModuleData($this->pObj->MCONF['name'], $this->pObj->MOD_SETTINGS);
         //
         // set query and sorting
         //
         $orderBy = $TCA[$table]['ctrl']['sortby'] ? 'tx_dam.' . $TCA[$table]['ctrl']['sortby'] : 'tx_dam.title';
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField']) {
             if (in_array($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $allFields)) {
                 $orderBy = 'tx_dam.' . $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'];
                 if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']) {
                     $orderBy .= ' DESC';
                 }
             }
         }
         $queryFieldList = tx_dam_db::getMetaInfoFieldList(false, $selectedFields);
         $this->pObj->selection->qg->addSelectFields($queryFieldList);
         $this->pObj->selection->qg->addOrderBy($orderBy);
         //
         // exec query
         //
         $this->pObj->selection->addLimitToQuery();
         $res = $this->pObj->selection->execSelectionQuery();
         //
         // init iterator for query
         //
         $conf = array('table' => 'tx_dam', 'countTotal' => $this->pObj->selection->pointer->countTotal);
         if ($langCurrent > 0 and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] !== 'exclusive') {
             $dbIterator = new tx_dam_iterator_db_lang_ovl($res, $conf);
             $dbIterator->initLanguageOverlay($table, $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']);
         } else {
             $dbIterator = new tx_dam_iterator_db($res, $conf);
         }
         //
         // make db list
         //
         $dblist->setDataObject($dbIterator);
         // add columns to list
         $dblist->clearColumns();
         $cc = 0;
         foreach ($selectedFields as $field) {
             $fieldLabel = is_array($TCA[$table]['columns'][$field]) ? preg_replace('#:$#', '', $LANG->sL($TCA[$table]['columns'][$field]['label'])) : '[' . $field . ']';
             $dblist->addColumn($field, $fieldLabel);
             $cc++;
             if ($cc == 1) {
                 // add control at second column
                 $dblist->addColumn('_CONTROL_', '');
                 $cc++;
             }
         }
         // enable display of action column
         $dblist->showActions = true;
         // enable display of multi actions
         $dblist->showMultiActions = $this->pObj->MOD_SETTINGS['tx_dam_list_list_showMultiActions'];
         // enable context menus
         $dblist->enableContextMenus = $this->pObj->config_checkValueEnabled('contextMenuOnListItems', true);
         // Enable/disable display of thumbnails
         $dblist->showThumbs = $this->pObj->MOD_SETTINGS['tx_dam_list_list_showThumb'];
         // Enable/disable display of AlternateBgColors
         $dblist->showAlternateBgColors = $this->pObj->config_checkValueEnabled('alternateBgColors', true);
         $dblist->setPointer($this->pObj->selection->pointer);
         $dblist->setCurrentSorting($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']);
         $dblist->setParameterName('sortField', 'SET[tx_dam_list_list_sortField]');
         $dblist->setParameterName('sortRev', 'SET[tx_dam_list_list_sortRev]');
         $this->pObj->doc->JScodeArray['dblist-JsCode'] = $dblist->getJsCode();
         // todo Clipboard
         // It is set, if the clickmenu-layer is active AND the extended view is not enabled.
         #			$dblist->dontShowClipControlPanels = $CLIENT['FORMSTYLE'] && !$BE_USER->uc['disableCMlayers'];
         #$content.= '<form action="'.htmlspecialchars(t3lib_div::linkThisScript()).'" method="post" name="'.$dblist->paramName['form'].'">';
         // get all avalibale languages for the page
         if ($languageSwitch = $this->pObj->languageSwitch($langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']))) {
             $this->pObj->markers['LANGUAGE_SELECT'] = '<div class="languageSwitch">' . $languageSwitch . '</div>';
         } else {
             $this->pObj->markers['LANGUAGE_SELECT'] = '';
         }
         // wraps the list table with the form
         $content .= tx_dam_SCbase::getFormTag();
         $content .= $dblist->getListTable();
         $content .= '</form>';
         $fieldSelectBoxContent = $this->fieldSelectBox($table, $allFields, $selectedFields);
         $content .= $this->pObj->buttonToggleDisplay('fieldselector', $LANG->getLL('field_selector'), $fieldSelectBoxContent);
     } else {
         // no search result: showing selection box
         if ($languageSwitch = $this->pObj->languageSwitch($langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']))) {
             $this->pObj->markers['LANGUAGE_SELECT'] = '<div class="languageSwitch">' . $languageSwitch . '</div>';
         } else {
             $this->pObj->markers['LANGUAGE_SELECT'] = '';
         }
         // is in footer now $content .= $this->pObj->getCurrentSelectionBox();
     }
     return $content;
 }
 /**
  * Main function
  *
  * @return	string		HTML output
  */
 function main()
 {
     global $BE_USER, $LANG, $BACK_PATH, $TCA, $TYPO3_CONF_VARS;
     $content = '';
     $table = 'tx_dam';
     //
     // get records by query depending on option 'Show deselected only'
     //
     $origSel = $this->pObj->selection->sl->sel;
     if ($this->pObj->MOD_SETTINGS['tx_dam_list_editsel_onlyDeselected']) {
         if (is_array($this->pObj->selection->sl->sel['NOT']['txdamRecords'])) {
             $ids = array_keys($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         } else {
             $ids = array(0);
             //dummy
         }
         unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         $this->pObj->selection->addSelectionToQuery();
         if (is_array($ids)) {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['NOT_txdamRecords'] = 'AND tx_dam.uid IN (' . $GLOBALS['TYPO3_DB']->cleanIntList(implode(',', $ids)) . ')';
         }
     } else {
         unset($this->pObj->selection->sl->sel['NOT']['txdamRecords']);
         $this->pObj->selection->addSelectionToQuery();
     }
     $this->pObj->selection->sl->sel = $origSel;
     //
     // Use the current selection to create a query and count selected records
     //
     $this->pObj->selection->execSelectionQuery(TRUE);
     //
     // output header: info bar, result browser, ....
     //
     $content .= $this->pObj->guiItems->getOutput('header');
     $content .= $this->pObj->doc->spacer(10);
     //
     // current selection box
     //
     $content .= $this->pObj->getCurrentSelectionBox();
     $content .= $this->pObj->doc->spacer(25);
     // any records found?
     if ($this->pObj->selection->pointer->countTotal) {
         t3lib_div::loadTCA($table);
         //
         // set fields to display
         //
         $titleColumn = $TCA[$table]['ctrl']['label'];
         $allFields = tx_dam_db::getFieldListForUser($table);
         $selectedFields = t3lib_div::_GP('tx_dam_list_list_displayFields');
         $selectedFields = is_array($selectedFields) ? $selectedFields : explode(',', $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields']);
         // remove fields that can not be selected
         if (is_array($selectedFields)) {
             $selectedFields = array_intersect($allFields, $selectedFields);
             $selectedFields = array_merge(array($titleColumn), $selectedFields);
         } else {
             $selectedFields = array();
             $selectedFields[] = $titleColumn;
         }
         // store field list
         $this->pObj->MOD_SETTINGS['tx_dam_list_list_displayFields'] = implode(',', $selectedFields);
         $GLOBALS['BE_USER']->pushModuleData($this->pObj->MCONF['name'], $this->pObj->MOD_SETTINGS);
         //
         // set query and sorting
         //
         $orderBy = $TCA[$table]['ctrl']['sortby'] ? 'tx_dam.' . $TCA[$table]['ctrl']['sortby'] : 'tx_dam.title';
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField']) {
             if (in_array($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $allFields)) {
                 $orderBy = 'tx_dam.' . $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'];
                 if ($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']) {
                     $orderBy .= ' DESC';
                 }
             }
         }
         $queryFieldList = tx_dam_db::getMetaInfoFieldList(false, $selectedFields);
         $this->pObj->selection->qg->addSelectFields($queryFieldList);
         $this->pObj->selection->qg->addOrderBy($orderBy);
         //
         // exec query
         //
         $this->pObj->selection->addLimitToQuery();
         $res = $this->pObj->selection->execSelectionQuery();
         //
         // init iterator for query
         //
         $conf = array('table' => 'tx_dam', 'countTotal' => $this->pObj->selection->pointer->countTotal);
         $dbIterator = new tx_dam_iterator_db($res, $conf);
         //
         // make db list
         //
         $dblist = t3lib_div::makeInstance('tx_dam_listrecords');
         $dblist->init($table, $dbIterator);
         $dblist->setDataObject($dbIterator);
         // add columns to list
         $dblist->clearColumns();
         $cc = 0;
         foreach ($selectedFields as $field) {
             $fieldLabel = is_array($TCA[$table]['columns'][$field]) ? preg_replace('#:$#', '', $LANG->sL($TCA[$table]['columns'][$field]['label'])) : '[' . $field . ']';
             $dblist->addColumn($field, $fieldLabel);
             $cc++;
             if ($cc == 1) {
                 // add control at second column
                 $dblist->addColumn('_CONTROL_', '');
                 $cc++;
             }
         }
         // enable display of action column
         $dblist->showActions = true;
         // enable context menus
         $dblist->enableContextMenus = true;
         // Enable/disable display of thumbnails
         $dblist->showThumbs = $this->pObj->MOD_SETTINGS['tx_dam_list_list_showThumb'];
         // Enable/disable display of AlternateBgColors
         $dblist->showAlternateBgColors = $this->pObj->config_checkValueEnabled('alternateBgColors', true);
         $dblist->setPointer($this->pObj->selection->pointer);
         $dblist->setCurrentSorting($this->pObj->MOD_SETTINGS['tx_dam_list_list_sortField'], $this->pObj->MOD_SETTINGS['tx_dam_list_list_sortRev']);
         $dblist->setParameterName('sortField', 'SET[tx_dam_list_list_sortField]');
         $dblist->setParameterName('sortRev', 'SET[tx_dam_list_list_sortRev]');
         #$content.= '<form action="'.htmlspecialchars(t3lib_div::linkThisScript()).'" method="post" name="dblistForm">';
         $content .= $dblist->getListTable();
         #$content.= '<input type="hidden" name="cmd_table"><input type="hidden" name="cmd"></form>';
         $fieldSelectBoxContent = $this->fieldSelectBox($table, $allFields, $selectedFields);
         $content .= $this->pObj->buttonToggleDisplay('fieldselector', $LANG->getLL('field_selector'), $fieldSelectBoxContent);
     }
     return $content;
 }
 /**
  * Main function
  *
  * @return	string		HTML output
  */
 function main()
 {
     global $BE_USER, $LANG, $BACK_PATH, $TCA;
     $content = '';
     $table = 'tx_dam';
     t3lib_div::loadTCA($table);
     //
     // set language query
     //
     $this->langRows = $this->pObj->getLanguages($this->pObj->defaultPid);
     $this->langCurrent = intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']);
     if (!isset($this->langRows[$this->langCurrent])) {
         $this->langCurrent = $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector'] = key($this->langRows);
     }
     $langQuery = '';
     $languageField = $TCA[$table]['ctrl']['languageField'];
     if ($this->langCurrent and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') {
         // if ($this->langCurrent) { This works but create NULL columns for non-translated records so we need to use language overlay anyway
         $lgOvlFields = tx_dam_db::getLanguageOverlayFields($table, 'tx_dam_lgovl');
         $languageField = $TCA[$table]['ctrl']['languageField'];
         $transOrigPointerField = $TCA[$table]['ctrl']['transOrigPointerField'];
         $this->pObj->selection->setSelectionLanguage($this->langCurrent);
         $this->pObj->selection->qg->query['SELECT']['tx_dam as tx_dam_lgovl'] = implode(', ', $lgOvlFields) . ', tx_dam.uid as _dlg_uid, tx_dam.title as _dlg_title';
         $this->pObj->selection->qg->query['LEFT_JOIN']['tx_dam as tx_dam_lgovl'] = 'tx_dam.uid=tx_dam_lgovl.' . $transOrigPointerField;
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] === 'exclusive') {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND tx_dam_lgovl.' . $languageField . '=' . $this->langCurrent;
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND tx_dam_lgovl.deleted=0';
         } else {
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.' . $languageField] = 'AND (tx_dam_lgovl.' . $languageField . ' IN (' . $this->langCurrent . ',0,-1) )';
             $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam_lgovl.deleted'] = 'AND (tx_dam_lgovl.sys_language_uid=1 OR tx_dam.sys_language_uid=0 )';
         }
     } else {
         $this->pObj->selection->qg->query['WHERE']['WHERE']['tx_dam.' . $languageField] = 'AND tx_dam.' . $languageField . ' IN (0,-1)';
     }
     //
     // set query and sorting
     //
     $allFields = tx_dam_db::getFieldListForUser($table);
     if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField']) {
         if (in_array($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'], $allFields)) {
             $orderBy = 'tx_dam.' . $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'];
         }
     } else {
         $orderBy = $TCA[$table]['ctrl']['sortby'] ? $TCA[$table]['ctrl']['sortby'] : $TCA[$table]['ctrl']['default_sortby'];
         $orderBy = $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy);
         $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'] = $orderBy;
     }
     if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortRev']) {
         $orderBy .= ' DESC';
     }
     $this->pObj->selection->qg->addOrderBy($orderBy);
     //
     // Use the current selection to create a query and count selected records
     //
     $this->pObj->selection->addSelectionToQuery();
     $this->pObj->selection->execSelectionQuery(TRUE);
     //
     // output header: info bar, result browser, ....
     //
     $content .= $this->pObj->guiItems->getOutput('header');
     $content .= $this->pObj->doc->spacer(10);
     // any records found?
     if ($this->pObj->selection->pointer->countTotal) {
         // TODO move to scbase (see tx_dam_browser too)
         if (is_array($allFields) && count($allFields)) {
             $fieldsSelItems = array();
             foreach ($allFields as $field => $title) {
                 $fL = is_array($TCA[$table]['columns'][$field]) ? preg_replace('#:$#', '', $GLOBALS['LANG']->sL($TCA[$table]['columns'][$field]['label'])) : '[' . $field . ']';
                 $fieldsSelItems[$field] = t3lib_div::fixed_lgd_cs($fL, 15);
             }
             $sortingSelector = $GLOBALS['LANG']->sL('LLL:EXT:dam/lib/locallang.xml:labelSorting', 1) . ' ';
             $sortingSelector .= t3lib_befunc::getFuncMenu('', 'SET[tx_dam_list_thumbs_sortField]', $this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortField'], $fieldsSelItems);
             if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_sortRev']) {
                 $href = t3lib_div::linkThisScript(array('SET[tx_dam_list_thumbs_sortRev]' => '0'));
                 $sortingSelector .= '<button name="SET[tx_dam_list_thumbs_sortRev]" type="button" onclick="self.location.href=\'' . htmlspecialchars($href) . '\'">' . '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/pil2up.gif', 'width="12" height="7"') . ' alt="" />' . '</button>';
             } else {
                 $href = t3lib_div::linkThisScript(array('SET[tx_dam_list_thumbs_sortRev]' => '1'));
                 $sortingSelector .= '<button name="SET[tx_dam_list_thumbs_sortRev]" type="button" onclick="self.location.href=\'' . htmlspecialchars($href) . '\'">' . '<img' . t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/pil2down.gif', 'width="12" height="7"') . ' alt="" />' . '</button>';
             }
             $sortingSelector = '<form action="' . htmlspecialchars(t3lib_div::linkThisScript()) . '" method="post">' . $sortingSelector . '</form>';
         }
         $this->pObj->markers['LANGUAGE_SELECT'] = $this->pObj->languageSwitch($this->langRows, intval($this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']));
         $content .= $this->pObj->contentLeftRight($sortingSelector, '');
         $content .= $this->pObj->doc->spacer(10);
         //
         // creates thumbnail list
         //
         // limit query for browsing
         $this->pObj->selection->addLimitToQuery();
         $res = $this->pObj->selection->execSelectionQuery();
         $showElements = array();
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showTitle']) {
             $showElements[] = 'title';
         }
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showInfo']) {
             $showElements[] = 'info';
         }
         if ($this->pObj->MOD_SETTINGS['tx_dam_list_thumbs_showIcons']) {
             $showElements[] = 'actions';
         }
         // extra CSS code for HTML header
         $this->pObj->doc->inDocStylesArray['tx_dam_SCbase_dia'] = tx_dam_guiFunc::getDiaStyles($this->diaSize, $this->diaMargin, 5);
         $code = '';
         //
         // init iterator for query
         //
         $conf = array('table' => 'tx_dam', 'countTotal' => $this->pObj->selection->pointer->countTotal);
         if ($this->langCurrent > 0 and $this->pObj->MOD_SETTINGS['tx_dam_list_langOverlay'] !== 'exclusive') {
             $dbIterator = new tx_dam_iterator_db_lang_ovl($res, $conf);
             $dbIterator->initLanguageOverlay($table, $this->pObj->MOD_SETTINGS['tx_dam_list_langSelector']);
         } else {
             $dbIterator = new tx_dam_iterator_db($res, $conf);
         }
         if ($dbIterator->count()) {
             while ($dbIterator->valid() and $dbIterator->currentPointer < $this->pObj->selection->pointer->itemsPerPage) {
                 $row = $dbIterator->current();
                 $onClick = $this->pObj->doc->wrapClickMenuOnIcon('', $table, $row['uid'], $listFr = 1, $addParams = '', $enDisItems = '', $returnOnClick = TRUE);
                 $actions = $this->getItemControl($row);
                 $code .= tx_dam_guiFunc::getDia($row, $this->diaSize, $this->diaMargin, $showElements, $onClick, true, $actions);
                 $dbIterator->next();
             }
         }
         $content .= $this->pObj->doc->spacer(5);
         $content .= $this->pObj->doc->section('', '<div style="line-height:' . ($this->diaSize + 7 + 8) . 'px;">' . $code . '</div><br style="clear:left" />', 0, 1);
     }
     return $content;
 }
 /**
  * Makes a DAM db query and collects data to be used in EB display
  *
  * @param	array		$allowedFileTypes Array list of allowed file types
  * @param	array		$disallowedFileTypes Array list of disallowed file types
  * @param	string		$mode EB mode: "db", "file", ...
  * @return	array		Array of file elements
  */
 function getFileListArr($allowedFileTypes, $disallowedFileTypes, $mode)
 {
     global $TCA;
     $filearray = array();
     //
     // Use the current selection to create a query and count selected records
     //
     $this->damSC->selection->addSelectionToQuery();
     $this->damSC->selection->qg->query['FROM']['tx_dam'] = tx_dam_db::getMetaInfoFieldList(true, array('hpixels', 'vpixels', 'caption'));
     #$this->damSC->selection->qg->addSelectFields(...
     //
     // set sorting
     //
     $allFields = tx_dam_db::getFieldListForUser('tx_dam');
     if ($this->damSC->MOD_SETTINGS['txdam_sortField']) {
         if (in_array($this->damSC->MOD_SETTINGS['txdam_sortField'], $allFields)) {
             $orderBy = 'tx_dam.' . $this->damSC->MOD_SETTINGS['txdam_sortField'];
         }
     } else {
         $orderBy = $TCA['tx_dam']['ctrl']['sortby'] ? $TCA['tx_dam']['ctrl']['sortby'] : $TCA['tx_dam']['ctrl']['default_sortby'];
         $orderBy = $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy);
         $this->damSC->MOD_SETTINGS['txdam_sortField'] = $orderBy;
     }
     if ($this->damSC->MOD_SETTINGS['txdam_sortRev']) {
         $orderBy .= ' DESC';
     }
     $this->damSC->selection->qg->addOrderBy($orderBy);
     //
     // allowed media types
     //
     $allowedMediaTypes = array();
     $disallowedMediaTypes = array();
     foreach ($allowedFileTypes as $key => $type) {
         if ($mediaType = tx_dam::convert_mediaType($type)) {
             $allowedMediaTypes[] = $mediaType;
             unset($allowedFileTypes[$key]);
         }
     }
     foreach ($disallowedFileTypes as $key => $type) {
         if ($mediaType = tx_dam::convert_mediaType($type)) {
             $disallowedMediaTypes[] = $mediaType;
             unset($disallowedFileTypes[$key]);
         }
     }
     if ($allowedFileTypes) {
         $extList = implode(',', $GLOBALS['TYPO3_DB']->fullQuoteArray($allowedFileTypes, 'tx_dam'));
         $this->damSC->selection->qg->addWhere('AND tx_dam.file_type IN (' . $extList . ')', 'WHERE', 'tx_dam.file_type');
     }
     if ($disallowedFileTypes) {
         $extList = implode(',', $GLOBALS['TYPO3_DB']->fullQuoteArray($disallowedFileTypes, 'tx_dam'));
         $this->damSC->selection->qg->addWhere('AND tx_dam.file_type NOT IN (' . $extList . ')', 'WHERE', 'NOT tx_dam.file_type');
     }
     if ($allowedMediaTypes) {
         $extList = implode(',', $GLOBALS['TYPO3_DB']->fullQuoteArray($allowedMediaTypes, 'tx_dam'));
         $this->damSC->selection->qg->addWhere('AND tx_dam.media_type IN (' . $extList . ')', 'WHERE', 'tx_dam.media_type');
     }
     if ($disallowedMediaTypes) {
         $extList = implode(',', $GLOBALS['TYPO3_DB']->fullQuoteArray($disallowedMediaTypes, 'tx_dam'));
         $this->damSC->selection->qg->addWhere('AND tx_dam.media_type NOT IN (' . $extList . ')', 'WHERE', 'NOT tx_dam.media_type');
     }
     $this->damSC->selection->execSelectionQuery(TRUE);
     // any records found?
     if ($this->damSC->selection->pointer->countTotal) {
         // limit query for browsing
         $this->damSC->selection->addLimitToQuery();
         $this->damSC->selection->execSelectionQuery();
         if ($this->damSC->selection->res) {
             while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($this->damSC->selection->res)) {
                 $row = $this->enhanceItemArray($row, $mode);
                 $filearray[] = $row;
                 if (count($filearray) >= $this->damSC->selection->pointer->itemsPerPage) {
                     break;
                 }
             }
         }
     }
     return $filearray;
 }