/** * Initializes the backend module * * @return void */ function init() { global $TYPO3_CONF_VARS, $FILEMOUNTS; parent::init(); // Init guiRenderList object: $this->guiItems = t3lib_div::makeInstance('tx_dam_guiRenderList'); // Init basic-file-functions object: $this->basicFF = t3lib_div::makeInstance('t3lib_basicFileFunctions'); $this->basicFF->init($FILEMOUNTS, $TYPO3_CONF_VARS['BE']['fileExtensions']); }
/** * Do the file indexing * Read files from a directory index them and output a result table * * @return string HTML content */ function checkUploads($indexSessionID) { global $LANG, $TYPO3_CONF_VARS; // makes sense? Was a hint on php.net ob_end_flush(); // get session data - which might have left files stored $indexSession = $this->indexSessionFetch(); $where = array(); if ($age = intval($this->pObj->MOD_SETTINGS['tx_dam_tools_indexupdate.age'])) { $where['tstamp'] = 'tstamp<' . (time() - $age); } if ($indexSessionID == '' or !isset($indexSession['ID']) or !($indexSession['ID'] == $indexSessionID) or $indexSession['currentCount'] == 0) { $GLOBALS['TYPO3_DB']->exec_DELETEquery('tx_dam_file_tracking', ''); $files = array(); $files = $this->getFilesInDir(PATH_site . 'uploads/', true, $files); $countTotal = count($files); $indexSession = $this->indexSessionNew($countTotal, $files); } if (is_array($indexSession['data'])) { $damIndexing = t3lib_div::makeInstance('tx_dam_indexing'); $damIndexing->init(); $damIndexing->dryRun = TRUE; foreach ($indexSession['data'] as $key => $file) { // increase progress bar $indexSession['currentCount']++; $fileHash = tx_dam::file_calcHash($file); $fileInfo = tx_dam::file_compileInfo($file); $fields_values = array('tstamp' => time(), 'file_name' => $fileInfo['file_name'], 'file_path' => $fileInfo['file_path'], 'file_size' => $fileInfo['file_size'], 'file_ctime' => min($fileInfo['file_ctime'], $fileInfo['file_mtime']), 'file_hash' => $fileHash); $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_dam_file_tracking', $fields_values); $fileInfo = array_merge($fileInfo, $damIndexing->getFileMimeType($file)); $fileInfo['media_type'] = tx_dam::convert_mediaType($fileInfo['file_mime_type']); $ctable = array(); $ctable[] = ' '; $ctable[] = tx_dam::icon_getFileTypeImgTag($fileInfo, 'align="top"') . ' ' . htmlspecialchars(t3lib_div::fixed_lgd_cs($fileInfo['file_name'], 30)); $ctable[] = htmlspecialchars(t3lib_div::fixed_lgd_cs($fileInfo['file_path'], -30)); $this->indexing_addTableRow($ctable); $msg = $LANG->getLL('tx_dam_tools_indexupdate.updatedMessage', 1); $code = sprintf($msg, $indexSession['currentCount'], $indexSession['totalFilesCount']); $this->indexing_setMessage($code); $this->indexing_progressBar($indexSession['currentCount'], $indexSession['totalFilesCount']); $this->indexing_flushNow(); $this->indexSessionWrite($indexSession); if ($this->indexEndtime < time() and $indexSession['currentCount'] < $indexSession['totalFilesCount']) { $params = $this->pObj->addParams; $params['indexSessionID'] = $indexSession['ID']; echo ' <script type="text/javascript"> window.location.href = unescape("' . t3lib_div::rawUrlEncodeJS(tx_dam_SCbase::linkThisScriptStraight($params)) . '"); </script>'; exit; } } } elseif ($indexSession['totalFilesCount'] == 0) { $code = $LANG->getLL('tx_dam_tools_indexupdate.no_files'); $this->indexing_setMessage($code); } $this->indexing_finished(); // finished - clear session $this->indexSessionClear(); }
/** * Returns a record icon with title and edit link * * @param string Table name (tt_content,...) * @param array Record array * @param boolean For pages records the rootline will be rendered * @return string Rendered icon */ function getRecordInfoEditLink($refTable, $row, $showRootline = FALSE) { global $BACK_PATH, $LANG, $TCA; // Create record title or rootline for pages if option is selected if ($refTable === 'pages' and $showRootline) { $elementTitle = t3lib_BEfunc::getRecordPath($row['uid'], '1=1', 0); $elementTitle = t3lib_div::fixed_lgd_cs($elementTitle, -$BE_USER->uc['titleLen']); } else { $elementTitle = t3lib_BEfunc::getRecordTitle($refTable, $row, 1); } // Create icon for record if ($refTable === 'tx_dam') { $elementIcon = tx_dam_guiFunc::icon_getFileTypeImgTag($row, 'class="c-recicon" align="top"'); } else { $iconAltText = t3lib_BEfunc::getRecordIconAltText($row, $refTable); // Prepend table description for non-pages tables if (!($refTable === 'pages')) { $iconAltText = htmlspecialchars($LANG->sl($TCA[$refTable]['ctrl']['title']) . ': ') . $iconAltText; } $elementIcon = t3lib_iconworks::getIconImage($refTable, $row, $BACK_PATH, 'class="c-recicon" align="top" title="' . $iconAltText . '"'); } // Return item with edit link return tx_dam_SCbase::wrapLink_edit($elementIcon . $elementTitle, $refTable, $row['uid']); }
/** * 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; }
/** * Renders the data columns * * @param array $item item array * @return array */ function getItemColumns($item) { // Columns rendering $columns = array(); foreach ($this->columnList as $field => $descr) { switch ($field) { case 'page': // Create output item for pages record $pageRow = $item[$field]; $rootline = t3lib_BEfunc::BEgetRootLine($pageRow['uid']); $pageOnClick = t3lib_BEfunc::viewOnClick($pageRow['uid'], $GLOBALS['BACK_PATH'], $rootline); $iconAltText = t3lib_BEfunc::getRecordIconAltText($pageRow, 'pages'); $icon = t3lib_iconWorks::getIconImage('pages', $pageRow, $GLOBALS['BACK_PATH'], 'title="' . $iconAltText . '" align="top"'); if ($this->showRootline) { $title = t3lib_BEfunc::getRecordPath($pageRow['uid'], '1=1', 0); $title = t3lib_div::fixed_lgd_cs($title, -$GLOBALS['BE_USER']->uc['titleLen']); } else { $title = t3lib_BEfunc::getRecordTitle('pages', $pageRow, TRUE); } if ($pageRow['doktype'] == 1 || $pageRow['doktype'] == 6) { if ($this->enableContextMenus) { $columns[$field] = $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($icon, 'pages', $pageRow['uid'], 1, '', '+view,edit,info') . $title; } else { $columns[$field] = '<a href="#" onclick="' . htmlspecialchars($pageOnClick) . '">' . $icon . $title . '</a>'; } } else { if ($this->enableContextMenus) { $columns[$field] = $GLOBALS['SOBE']->doc->wrapClickMenuOnIcon($icon, 'pages', $pageRow['uid'], 1, '', '+edit,info') . $title; } else { $columns[$field] = $icon . $title; } } break; case 'content_element': // Create output item for content record $refTable = $item['tablenames']; $refRow = $item[$field]; if ($refTable == 'pages') { // The reference to the media is on a field of a page record if ($GLOBALS['BE_USER']->isInWebMount($refRow['uid']) && $GLOBALS['BE_USER']->doesUserHaveAccess($refRow, 1)) { $columns[$field] = tx_dam_SCbase::getRecordInfoEditLink($refTable, $refRow); } else { $pageRow = $refRow; $rootline = t3lib_BEfunc::BEgetRootLine($pageRow['uid']); $pageOnClick = t3lib_BEfunc::viewOnClick($pageRow['uid'], $GLOBALS['BACK_PATH'], $rootline); $iconAltText = t3lib_BEfunc::getRecordIconAltText($refRow, $refTable); $icon = t3lib_iconworks::getIconImage($refTable, $refRow, $GLOBALS['BACK_PATH'], 'class="c-recicon" align="top" title="' . $iconAltText . '"'); $title = t3lib_BEfunc::getRecordTitle($refTable, $refRow, 1); if ($pageRow['doktype'] == 1 || $pageRow['doktype'] == 6) { $columns[$field] = '<a href="#" onclick="' . htmlspecialchars($pageOnClick) . '">' . $icon . $title . '</a>'; } else { $columns[$field] = $icon . $title; } } } else { // The reference to the media is on a field of a content element record if ($GLOBALS['BE_USER']->isInWebMount($pageRow['uid']) && $GLOBALS['BE_USER']->doesUserHaveAccess($pageRow, 1)) { $columns[$field] = tx_dam_SCbase::getRecordInfoEditLink($refTable, $refRow); } else { $pageRow = $item['page']; $rootline = t3lib_BEfunc::BEgetRootLine($pageRow['uid']); $pageOnClick = t3lib_BEfunc::viewOnClick($pageRow['uid'], $GLOBALS['BACK_PATH'], $rootline); $iconAltText = t3lib_BEfunc::getRecordIconAltText($refRow, $refTable); $icon = t3lib_iconworks::getIconImage($refTable, $refRow, $GLOBALS['BACK_PATH'], 'class="c-recicon" align="top" title="' . $iconAltText . '"'); $title = t3lib_BEfunc::getRecordTitle($refTable, $refRow, 1); if ($pageRow['doktype'] == 1 || $pageRow['doktype'] == 6) { $columns[$field] = '<a href="#" onclick="' . htmlspecialchars($pageOnClick) . '">' . $icon . $title . '</a>'; } else { $columns[$field] = $icon . $title; } } } break; case 'content_field': // Create output item for reference field $columns[$field] = $item[$field]; break; case 'softref_key': // Create output item for reference key $columns[$field] = $item['softref_key'] ? $GLOBALS['LANG']->sl('LLL:EXT:dam/lib/locallang.xml:softref_key_' . $item['softref_key']) : $GLOBALS['LANG']->sl('LLL:EXT:dam/lib/locallang.xml:softref_key_media'); break; case 'content_age': // Create output text describing the age of the content element $columns[$field] = t3lib_BEfunc::dateTimeAge($item[$field], 1); break; case 'media_element': // Create output item for tx_dam record $columns[$field] = tx_dam_SCbase::getRecordInfoEditLink('tx_dam', $item); break; case 'media_element_age': // Create output text describing the tx_dam record age $columns[$field] = t3lib_BEfunc::dateTimeAge($item['tstamp'], 1); break; case '_CLIPBOARD_': $columns[$field] = $this->clipboard_getItemControl($item); break; case '_CONTROL_': $columns[$field] = $this->getItemControl($item); $this->columnTDAttr[$field] = ' nowrap="nowrap"'; break; default: $content = $item[$field]; $columns[$field] = htmlspecialchars(t3lib_div::fixed_lgd_cs($content, $this->titleLength)); break; } if ($columns[$field] === '') { $columns[$field] = ' '; } } // Thumbsnails? if ($this->showThumbs and $this->thumbnailPossible($item)) { $columns['media_element'] .= '<div style="margin:2px 0 2px 0;">' . $this->getThumbNail($item) . '</div>'; } return $columns; }
/** * Main function * * @return string HTML output */ function main() { global $BE_USER, $LANG, $BACK_PATH, $TCA, $TYPO3_CONF_VARS; $content = ''; $content .= tx_dam_SCbase::getFormTag(); // // Use the current selection to create a query and count selected records // $this->pObj->selection->addSelectionToQuery(); $this->pObj->selection->execSelectionQuery(TRUE); if ($this->pObj->selection->pointer->countTotal) { $batch = t3lib_div::makeInstance('tx_dam_batchProcess'); if ($batch->processGP()) { // result info $content .= $this->pObj->doc->section('', $this->pObj->getHeaderBar('', $this->pObj->btn_back()), 0, 1); $content .= $this->pObj->doc->spacer(10); $infoFields = $batch->getProcessFieldList(); $this->pObj->selection->execSelectionQuery(FALSE, ' DISTINCT ' . $infoFields); $batch->runBatch($this->pObj->selection->res); $content .= $batch->showResult(); } else { // header with back button $content .= $this->pObj->doc->section('', $this->pObj->getHeaderBar($this->pObj->getResultInfo(false)), 0, 1); $content .= $this->pObj->doc->spacer(10); $content .= $batch->showPresetForm(); } } else { // // output header: info bar, result browser, .... // $content .= $this->pObj->guiItems->getOutput('header'); $content .= $this->pObj->doc->spacer(10); // no search result: showing selection box $content .= $this->pObj->doc->section('', $this->pObj->getCurrentSelectionBox(), 0, 1); } $content .= '</form>'; return $content; }
/** * */ function doIndexingCallback($type, $meta, $absFile, $fileArrKey, $pObj) { global $LANG, $TYPO3_CONF_VARS; // get session data $indexSession = $this->indexSessionFetch(); // increase progress bar $indexSession['currentCount']++; if (is_array($meta) and is_array($meta['fields'])) { if (tx_dam::config_getValue('setup.devel')) { t3lib_div::print_array(array('file_name' => $meta['fields']['file_name'], 'indexExist' => $meta['indexExist'], 'reindexed' => $meta['reindexed'], 'isIndexed' => $meta['isIndexed'])); } if ($meta['isIndexed']) { $failure = ''; $openRecPopup = ''; if ($meta['failure']) { $failure .= '<br /><img' . t3lib_iconWorks::skinImg($GLOBALS['BACK_PATH'], 'gfx/icon_fatalerror.gif', 'width="18" height="16"') . ' class="absmiddle" alt="" />'; $failure .= ' ' . htmlspecialchars($meta['failure']); } else { $openRecPopup = $GLOBALS['SOBE']->btn_editRec_inNewWindow('tx_dam', $meta['fields']['uid']); } $ctable = array(); $ctable[] = $openRecPopup; $ctable[] = '<span style="white-space:nowrap;">' . tx_dam::icon_getFileTypeImgTag($meta['fields'], 'align="top"') . ' ' . htmlspecialchars(t3lib_div::fixed_lgd_cs($meta['fields']['file_name'], 23)) . '</span>' . $failure; $ctable[] = strtoupper($meta['fields']['file_type']); $ctable[] = '<span style="white-space:nowrap;">' . htmlspecialchars(str_replace("\n", ' ', t3lib_div::fixed_lgd_cs($meta['fields']['abstract'], 14))) . '</span>'; $ctable[] = htmlspecialchars(t3lib_div::fixed_lgd_cs($meta['fields']['file_path'], -15)); $this->indexing_addTableRow($ctable); $msg = $LANG->getLL('tx_damindex_index.indexed_message', 1); $code = sprintf($msg, $this->index->stat['totalCount'], max(1, ceil($this->index->stat['totalTime'] / 1000))); $this->indexing_setMessage($code); } } $this->indexing_progressBar($indexSession['currentCount'], $indexSession['totalFilesCount']); $this->indexing_flushNow(); // one step further - save session data unset($indexSession['filesTodo'][$fileArrKey]); $indexSession['indexStat'] = $this->index->stat; $indexSession['infoList'] = $this->index->infoList; $this->indexSessionWrite($indexSession); if ($this->indexEndtime < time() and $indexSession['currentCount'] < $indexSession['totalFilesCount']) { $params = $this->pObj->addParams; $params['indexSessionID'] = $indexSession['ID']; echo ' <script type="text/javascript"> window.location.href = unescape("' . t3lib_div::rawUrlEncodeJS(tx_dam_SCbase::linkThisScriptStraight($params)) . '"); </script>'; exit; } }
/** * Initializes the backend module * * @return void */ function init() { global $BE_USER, $TYPO3_CONF_VARS, $FILEMOUNTS; // Checking referer / executing $refInfo = parse_url(t3lib_div::getIndpEnv('HTTP_REFERER')); $vC = t3lib_div::_GP('vC'); $httpHost = t3lib_div::getIndpEnv('TYPO3_HOST_ONLY'); if ($httpHost != $refInfo['host'] && $vC != $BE_USER->veriCode() && !$TYPO3_CONF_VARS['SYS']['doNotCheckReferer']) { t3lib_BEfunc::typo3PrintError('Access Error', 'Referer did not match and veriCode was not valid either!', ''); exit; } // Initialize file GPvar if (is_array($param = t3lib_div::_GP('file'))) { $this->file = $param; } elseif ($param) { $this->file[] = $param; } // Initialize folder GPvar if (is_array($param = t3lib_div::_GP('folder'))) { $this->folder = $param; } elseif ($param) { $this->folder[] = $param; } // Initialize record GPvar if ($param = t3lib_div::_GP('record')) { if (is_array($param)) { $this->record = $param; } else { list($table, $uidList) = explode(':', $param); $this->record[$table] = $uidList; } foreach ($this->record as $table => $uidList) { if (is_array($GLOBALS['TCA'][$table]) and $uidList = $GLOBALS['TYPO3_DB']->cleanIntList($uidList)) { $this->record[$table] = explode(',', $uidList); } else { unset($this->record[$table]); } } } // Initialize target GPvar $this->target = t3lib_div::_GP('target'); // Initialize data GPvar - may be used with forms $this->data = t3lib_div::_GP('data'); $this->returnUrl = t3lib_div::_GP('returnUrl'); $this->returnUrl = $this->returnUrl ? $this->returnUrl : t3lib_div::getIndpEnv('HTTP_REFERER'); $this->redirect = t3lib_div::_GP('redirect'); $this->redirect = $this->redirect ? $this->redirect : $this->returnUrl; // // Init TCE-file-functions object: // has object: ->fileProcessor = t3lib_div::makeInstance('tx_dam_extFileFunctions'); // $this->TCEfile = t3lib_div::makeInstance('tx_dam_tce_file'); $this->TCEfile->init(); $this->TCEfile->overwriteExistingFiles(t3lib_div::_GP('overwriteExistingFiles')); parent::init(); }
/** * Returns a dia like thumbnail * * @param array $row tx_dam record * @param integer $diaSize dia size * @param integer $diaMargin dia margin * @param array $showElements Extra elements to show: "title,info,icons" * @param string $onClick: ... * @param boolean $makeIcon: ... * @param string $actions action content to be displayed * @return string HTML output */ function getDia($row, $diaSize = 115, $diaMargin = 10, $showElements = '', $onClick = NULL, $makeIcon = TRUE, $actions = '') { if (!is_array($showElements)) { $showElements = t3lib_div::trimExplode(',', $showElements, 1); } // extra CSS code for HTML header if (is_object($GLOBALS['SOBE']) and !isset($GLOBALS['SOBE']->doc->inDocStylesArray['tx_dam_SCbase_dia'])) { $GLOBALS['SOBE']->doc->inDocStylesArray['tx_dam_SCbase_dia'] = tx_dam_guiFunc::getDiaStyles($diaSize, $diaMargin); } // use css/stylesheet $iconBgColor = t3lib_div::modifyHTMLcolor($GLOBALS['SOBE']->doc->bgColor, -10, -10, -10); $titleLen = ceil(30 * ($diaSize - $diaMargin) / (200 - $diaMargin)); $hpixels = $row['hpixels']; $vpixels = $row['vpixels']; if ($hpixels and $vpixels) { list($hpixels, $vpixels) = tx_dam_image::calcSize($hpixels, $vpixels, $diaSize, $diaSize); } else { if ($hpixels > $diaSize) { $hpixels = $diaSize; } if ($vpixels > $diaSize) { $vpixels = $diaSize; } } $uid = $row['uid']; $imgAttributes = array(); $imgAttributes['title'] = str_replace("\n", '', t3lib_div::fixed_lgd_cs($row['description'], 50)); if ($hpixels) { $imgAttributes['style'] = 'margin-top:' . (ceil(($diaSize - $vpixels) / 2) + $diaMargin) . 'px;'; } else { $imgAttributes['style'] = 'margin-top:' . $diaMargin . 'px;'; } $imgAttributes['onclick'] = $onClick; $thumb = tx_dam_image::previewImgTag($row, $diaSize, $imgAttributes); if (!$makeIcon and empty($thumb)) { return ''; } if (empty($thumb)) { $thumb = tx_dam_guiFunc::getMediaTypeIconBox($row); if ($onClick) { $thumb = '<a href="#" onclick="' . htmlspecialchars($onClick) . '">' . $thumb . '</a>'; } } $descr = ''; if (in_array('title', $showElements)) { $descr .= htmlspecialchars(t3lib_div::fixed_lgd_cs($row['title'], $titleLen)) . '<br />'; } if (in_array('info', $showElements)) { $code = strtoupper($row['file_type']) . ', '; $code .= $row['hpixels'] ? $row['hpixels'] . 'x' . $row['vpixels'] . ', ' : ''; $code .= t3lib_div::formatSize($row['file_size']); $descr .= '<span class="txdam-descr">' . htmlspecialchars($code) . '</span>'; } if ($descr) { $descr = '<div class="txdam-title">' . $descr . '</div>'; } $icons = ''; $iconArr = array(); if (in_array('icons', $showElements)) { // deprecated $iconArr[] = tx_dam_SCbase::icon_editRec('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::btn_editRec_inNewWindow('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::icon_infoRec('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); $iconArr[] = tx_dam_SCbase::btn_removeRecFromSel('tx_dam', $row['uid'], 'style="margin-left:3px;margin-right:3px;"'); } if (in_array('actions', $showElements)) { $actions; } $icons = $icons ? '<div style="margin:3px;">' . implode('<span style="width:40px;"></span>', $iconArr) . '</div>' : ''; $actions = $actions ? '<div style="margin:3px;">' . $actions . '</div>' : ''; $diaCode = ' <table class="txdam-dia" cellspacing="0" cellpadding="0" border="0"> <tr><td><span class="txdam-dia">' . $thumb . '</span></td></tr> ' . ($descr . $icons . $actions ? '<tr><td align="center" bgcolor="' . $iconBgColor . '">' . $descr . $icons . $actions . '</td></tr>' : '') . ' </table> '; return $diaCode; }