Example #1
0
 /**
  * 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[] = '&nbsp;';
                $ctable[] = tx_dam::icon_getFileTypeImgTag($fileInfo, 'align="top"') . '&nbsp;' . 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] = '&nbsp;';
         }
     }
     // 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"') . '&nbsp;' . 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;
        }
    }
Example #8
0
 /**
  * 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;
    }