/** * tx_dam::config_setValue() */ public function test_config_setValue() { tx_dam::config_init(); tx_dam::config_setValue('setup.indexing.auto', true); $value = tx_dam::config_getValue('setup.indexing.auto'); self::assertEquals($value, true); tx_dam::config_setValue('setup.indexing.auto', false); $value = tx_dam::config_getValue('setup.indexing.auto'); self::assertEquals($value, false); }
/** * constructor * * @return void */ function tx_dam_selectionCategory() { global $LANG, $BACK_PATH; $this->title = $LANG->sL('LLL:EXT:dam/lib/locallang.xml:categories'); $this->treeName = 'txdamCat'; $this->domIdPrefix = $this->treeName; $this->table = 'tx_dam_cat'; $this->parentField = $GLOBALS['TCA'][$this->table]['ctrl']['treeParentField']; $this->typeField = $GLOBALS['TCA'][$this->table]['ctrl']['type']; $this->iconName = 'cat.gif'; $this->iconPath = PATH_txdam_rel . 'i/'; $this->rootIcon = PATH_txdam_rel . 'i/catfolder.gif'; $this->fieldArray = array('uid', 'pid', 'title', 'sys_language_uid'); if ($this->parentField) { $this->fieldArray[] = $this->parentField; } if ($this->typeField) { $this->fieldArray[] = $this->typeField; } $this->defaultList = 'uid,pid,tstamp,sorting'; $this->clause = tx_dam_db::enableFields($this->table, 'AND'); $this->clause .= ' AND sys_language_uid IN (0,-1)'; // default_sortby might be not set $defaultSortby = $GLOBALS['TCA'][$this->table]['ctrl']['default_sortby'] ? $GLOBALS['TYPO3_DB']->stripOrderBy($GLOBALS['TCA'][$this->table]['ctrl']['default_sortby']) : ''; // sortby might be not set or unset $sortby = $GLOBALS['TCA'][$this->table]['ctrl']['sortby'] ? $GLOBALS['TCA'][$this->table]['ctrl']['sortby'] : ''; // if we have default_sortby it shall win $this->orderByFields = $defaultSortby ? $defaultSortby : $sortby; // get the right sys_language_uid for the BE users language if (is_object($GLOBALS['BE_USER']) and t3lib_extMgm::isLoaded('static_info_tables')) { // Hooray - it's so simple to develop with TYPO3 $lang = $GLOBALS['BE_USER']->user['lang']; $lang = $lang ? $lang : 'en'; // TYPO3 specific: Array with the iso names used for each system language in TYPO3: // Missing keys means: same as Typo3 $isoArray = array('ba' => 'bs', 'br' => 'pt_BR', 'ch' => 'zh_CN', 'cz' => 'cs', 'dk' => 'da', 'si' => 'sl', 'se' => 'sv', 'gl' => 'kl', 'gr' => 'el', 'hk' => 'zh_HK', 'kr' => 'ko', 'ua' => 'uk', 'jp' => 'ja', 'vn' => 'vi'); $iso = $isoArray[$lang] ? $isoArray[$lang] : $lang; // Finding the ISO code: if ($rows = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('sys_language.uid', 'sys_language LEFT JOIN static_languages ON static_languages.uid=sys_language.static_lang_isocode', 'static_languages.lg_iso_2=' . $GLOBALS['TYPO3_DB']->fullQuoteStr(strtoupper($iso), 'static_languages') . tx_dam_db::enableFields('static_languages', 'AND') . tx_dam_db::enableFields('sys_language', 'AND'))) { $row = current($rows); $this->langOvlUid = intval($row['uid']); } } $this->TSconfig = tx_dam::config_getValue('setup.selections.' . $this->treeName, true); }
/** * */ function indexing_getProgessTable() { global $BE_USER, $LANG, $BACK_PATH, $TYPO3_CONF_VARS; // JavaScript $this->pObj->doc->JScode = $this->pObj->doc->wrapScriptTags(' function progress_bar_update(intCurrentPercent) { document.getElementById("progress_bar_left").style.width = intCurrentPercent+"%"; document.getElementById("progress_bar_left").innerHTML = intCurrentPercent+" %"; document.getElementById("progress_bar_left").style.background = "#448e44"; if(intCurrentPercent >= 100) { document.getElementById("progress_bar_right").style.background = "#448e44"; } } function addTableRow(cells) { document.getElementById("progressTable").style.visibility = "visible"; var tbody = document.getElementById("progressTable").getElementsByTagName("tbody")[0]; var row = document.createElement("TR"); row.style.backgroundColor = "#D9D5C9"; for (var cellId in cells) { var tdCell = document.createElement("TD"); tdCell.innerHTML = cells[cellId]; row.appendChild(tdCell); } var header = document.getElementById("progressTableheader"); var headerParent = header.parentNode; headerParent.insertBefore(row,header.nextSibling); // tbody.appendChild(row); // tbody.insertBefore(row,document.getElementById("progressTableheader")); } function setMessage(msg) { var messageCnt = document.getElementById("message"); messageCnt.innerHTML = msg; } function finished() { progress_bar_update(100); document.getElementById("progress_bar_left").innerHTML = "' . $LANG->getLL('tx_dam_tools_indexupdate.finished', 1) . '"; // document.getElementById("btn_back").style.visibility = "visible"; } '); if (tx_dam::config_getValue('setup.devel')) { $iframeSize = 'width="100%" height="300" border="1" scrolling="yes" frameborder="1"'; } else { $iframeSize = 'width="0" height="0" border="0" scrolling="no" frameborder="0"'; } $code = ''; $code .= ' <table width="300px" border="0" cellpadding="0" cellspacing="0" id="progress_bar" summary="progress_bar" align="center" style="border:1px solid #888"> <tbody> <tr> <td id="progress_bar_left" width="0%" align="center" style="background:#eee; color:#fff"> </td> <td id="progress_bar_right" style="background:#eee;"> </td> </tr> </tbody> </table> <iframe src="' . htmlspecialchars(t3lib_div::linkThisScript($this->pObj->addParams)) . '" name="indexiframe" ' . $iframeSize . '> Error! </iframe> <br /> '; $code .= ' <div id="message"></div> <table id="progressTable" style="visibility:hidden" cellpadding="1" cellspacing="1" border="0" width="100%"> <tr id="progressTableheader" bgcolor="' . $this->pObj->doc->bgColor5 . '"> <th></th> <th>' . $LANG->sL('LLL:EXT:dam/locallang_db.xml:tx_dam_item.file_name', 1) . '</th> <th>' . $LANG->sL('LLL:EXT:dam/locallang_db.xml:tx_dam_item.file_path', 1) . '</th> </tr> </table> '; return $code; }
/** * Initializes the action objects. * * @param boolean $checkForPossiblyValid If set invalid will be done with isPossiblyValid(). * @param boolean $keepInvalid If set invalid actions will not removed * @return void */ function initObjects($checkForPossiblyValid = false, $keepInvalid = false) { $setupAllowDeny = tx_dam::config_getValue('mod.txdamM1_SHARED.actions', true); $setupAllowDeny = isset($setupAllowDeny[$this->type . '.']) ? $setupAllowDeny[$this->type . '.'] : $setupAllowDeny['shared.']; $setupAllowDenyShared = tx_dam_allowdeny_list::transformSimpleSetup($setupAllowDeny); list($modName, $modFuncName) = explode('.', $this->moduleName); $setupAllowDeny = tx_dam::config_getValue('mod.' . $modName . '.actions', true); $setupAllowDeny = isset($setupAllowDeny[$this->type . '.']) ? $setupAllowDeny[$this->type . '.'] : $setupAllowDeny['shared.']; $setupAllowDenyMod = tx_dam_allowdeny_list::transformSimpleSetup($setupAllowDeny); if ($modFuncName) { $setupAllowDeny = tx_dam::config_getValue('mod.' . $modName . '.modfunc.' . $modFuncName . '.actions', true); $setupAllowDeny = isset($setupAllowDeny[$this->type . '.']) ? $setupAllowDeny[$this->type . '.'] : $setupAllowDeny['shared.']; $setupAllowDenyModfunc = tx_dam_allowdeny_list::transformSimpleSetup($setupAllowDeny); } $allowDeny = new tx_dam_allowdeny_list(array_keys($this->classes), $setupAllowDenyModfunc, $setupAllowDenyMod, $setupAllowDenyShared); foreach ($this->classes as $idName => $classRef) { if ($allowDeny->isAllowed($idName) and $this->makeObject($idName)) { $this->objects[$idName]->setItemInfo($this->itemInfo); $this->objects[$idName]->setEnv($this->env); $this->objects[$idName]->getIdName(); if ($checkForPossiblyValid) { $valid = $this->objects[$idName]->isPossiblyValid($this->type); } else { $valid = $this->objects[$idName]->isValid($this->type); } if (!$keepInvalid and !$valid) { unset($this->objects[$idName]); } } } }
/** * Call gui item functions and return the output * * @param string Type name: header, footer * @param string List of item function which should be called instead of the default defined * @return string Items output */ function getOutput($type = 'footer', $itemList = '') { if (is_null($itemList)) { return; } if ($itemList) { $itemListArr = t3lib_div::trimExplode(',', $itemList, 1); } else { $type = 'items_' . $type; if (!is_array($this->{$type})) { return; } $itemListArr = array_keys($this->{$type}); } $elementList =& $this->{$type}; $out = ''; foreach ($itemListArr as $item) { $content = $this->items_callFunc($elementList[$item]); $out .= ' <!-- GUI element section: ' . htmlspecialchars($item) . ' --> ' . $content . ' <!-- GUI element section end -->'; } if ($type === 'items_footer' and is_array($GLOBALS['SOBE']->debugContent) and tx_dam::config_getValue('setup.devel')) { $content = '<div class="itemsFooter">' . '<h4>GUI Elements</h4>' . t3lib_div::view_array($GLOBALS['SOBE']->develAvailableGuiItems) . '</div>'; $content .= '<div class="itemsFooter">' . '<h4>Options</h4>' . t3lib_div::view_array($GLOBALS['SOBE']->develAvailableOptions) . '</div>'; $content .= '<div class="itemsFooter">' . '<h4>Registered actions (all)</h4>' . t3lib_div::view_array(array_keys($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['dam']['actionClasses'])) . '</div>'; $out .= $GLOBALS['SOBE']->buttonToggleDisplay('devel', 'Module Info', $content); $content = '<div class="itemsFooter">' . implode('', $GLOBALS['SOBE']->debugContent) . '</div>'; $out .= $GLOBALS['SOBE']->buttonToggleDisplay('debug', 'Debug output', $content); } return $out; }
/** * Process auto indexing for the given file. * This should be used to index files easily. * When auto indexing is disabled the indexing will not be processed. * * @param string $filename Filename with path * @param boolean $reindex If set already indexed files will be reindexed * @return array Meta data array. $meta['fields'] has the record data. Returns false when nothing was indexed but file might be in index already. */ function index_autoProcess($filename, $reindex = false) { global $TYPO3_CONF_VARS; // disable auto indexing by setup if (!tx_dam::config_getValue('setup.indexing.auto')) { return false; } $filename = tx_dam::file_absolutePath($filename); if (!@is_file($filename)) { return false; } // we don't index indexing setup files if (basename($filename) == '.indexing.setup.xml') { return false; } if (!$reindex and tx_dam::file_isIndexed($filename)) { return false; } require_once PATH_txdam . 'lib/class.tx_dam_indexing.php'; $index = t3lib_div::makeInstance('tx_dam_indexing'); $index->init(); $index->setDefaultSetup(tx_dam::file_dirname($filename)); $index->initEnabledRules(); $index->enableReindexing($reindex); // overrule some parameter from setup $index->setPath($filename); $index->setPID(tx_dam_db::getPid()); $index->setRunType('auto'); $index->enableMetaCollect(); // indexing ... $index->indexUsingCurrentSetup(); return current($index->meta); }
/** * Checks if $this->path is a path under one of the filemounts * * @param string $path If set this path will be set as current * @return void * @see init() * @todo check path access in modules or set path to a valid path? */ function checkOrSetPath($path = '') { global $FILEMOUNTS; if ($path) { $this->path = $path; } if (!$this->path) { reset($FILEMOUNTS); $fmount = current($FILEMOUNTS); $path = $fmount['path']; } else { $path = tx_dam::path_makeAbsolute($this->path); } $pathInfo = tx_dam::path_compileInfo($path); if ($this->checkPathAccess($pathInfo)) { $this->path = $pathInfo['dir_path_relative']; $this->pathInfo = $pathInfo; $this->pathAccess = true; } else { $this->path = $path; $this->pathInfo = $pathInfo; $this->pathAccess = false; } $this->MOD_SETTINGS = t3lib_BEfunc::getModuleData($this->MOD_MENU, array('tx_dam_folder' => $this->path), $this->MCONF['name'], 'ses'); if (tx_dam::config_getValue('setup.devel')) { $this->debugContent['pathInfo'] = '<h4>pathInfo</h4>' . t3lib_div::view_array($this->pathInfo); } }
/** * Returns a single pid of a DAM folder. * This pid have to be used for storage of DAM records. * * For fetching data getPidList() have to be used. * * @return integer Current/default DAM folder pid for storage. */ function getPid() { global $TYPO3_CONF_VARS; static $pid = 0; if (!$pid and is_object($GLOBALS['TSFE'])) { // get pid from TS // // plugin.tx_dam.defaults { // // The pid of the media folder. Needs to be set when multiple media folders exist // pid = $pid = intval(tx_dam::config_getValue('plugin.defaults.pid')); # $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_dam.']['defaults.']['pid']); } if (!$pid) { require_once PATH_txdam . 'lib/class.tx_dam_sysfolder.php'; $pid = tx_dam_sysfolder::init(); } return $pid; }
/** * tx_dam::config_getValue() */ public function test_config_getValue() { tx_dam::config_setValue('setup.indexing.auto', true); $value = tx_dam::config_getValue('setup.indexing', true); self::assertTrue($value['auto']); }
/** * Executes the query from the db querygen array. * * @param boolean $count If set count query will be generated * @param string $select Overrule SELECT query part * @return mixed Query result pointer */ function execQuery($count = false, $select = '') { $this->prepareSelectionQuery($count); $queryArr = $this->qg->getQueryParts(); if ($select) { $queryArr['SELECT'] = $select; } $this->error = ''; $this->res = $GLOBALS['TYPO3_DB']->exec_SELECT_queryArray($queryArr); $this->error = $GLOBALS['TYPO3_DB']->sql_error(); if ($count) { if ($this->res) { $numRows = $GLOBALS['TYPO3_DB']->sql_num_rows($this->res); if ($numRows > 1) { $this->pointer->setTotalCount($numRows); } else { list($countTotal) = $GLOBALS['TYPO3_DB']->sql_fetch_row($this->res); $this->pointer->setTotalCount($countTotal); } } else { $this->pointer->setTotalCount(0); } } // collect debug information if (tx_dam::config_getValue('setup.devel')) { if ($this->error or !$count or $countTotal == 0) { if ($this->error) { $this->SOBE->debugContent['queryArr'] = '<h4>ERROR</h4>' . $this->error; } $this->SOBE->debugContent['queryArr'] = '<h4>$queryArr</h4>' . t3lib_div::view_array($queryArr); $query = $GLOBALS['TYPO3_DB']->SELECTquery($queryArr['SELECT'], $queryArr['FROM'], $queryArr['WHERE'], $queryArr['GROUPBY'], $queryArr['ORDERBY'], $queryArr['LIMIT']); $this->SOBE->debugContent['query'] = '<h4>$query</h4>' . $query; } $this->SOBE->debugContent['Pointer'] = '<h4>Pointer</h4>' . t3lib_div::view_array($this->pointer->getDebugArray()); } return $this->res; }
/** * */ 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. * * @return void */ function init() { global $TYPO3_CONF_VARS; // enable dev logging if set if ($TYPO3_CONF_VARS['SC_OPTIONS']['ext/dam/lib/class.tx_dam_indexing.php']['writeDevLog']) { $this->writeDevLog = TRUE; } if (TYPO3_DLOG) { $this->writeDevLog = TRUE; } if ($this->writeDevLog && !isset($TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['debugData']['pid'])) { $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['debugData']['pid'] = tx_dam_db::getPid(); } if ($this->writeDevLog) { t3lib_div::devLog('## Beginning of dam indexing logging.', 'tx_dam_indexing'); } $this->setup['useInternalMediaTypeList'] = tx_dam::config_checkValueEnabled('setup.indexing.useInternalMediaTypeList', true); $this->setup['useInternalMimeList'] = tx_dam::config_checkValueEnabled('setup.indexing.useInternalMimeList', true); $this->setup['useMimeContentType'] = tx_dam::config_checkValueEnabled('setup.indexing.useMimeContentType', true); $this->setup['useFileCommand'] = tx_dam::config_checkValueEnabled('setup.indexing.useFileCommand', true); $this->defaultSetup = tx_dam::config_getValue('tx_dam.indexing.defaultSetup'); $this->skipFileTypes = t3lib_div::trimExplode(',', tx_dam::config_getValue('setup.indexing.skipFileTypes'), true); $this->ruleConf = array(); $this->dataPreset = array(); $this->dataPostset = array(); $this->dataAppend = array(); $this->stat = array(); $this->indexRun = time(); $this->clearCollectedMeta(); $this->initAvailableRules(); }
/** * initialize the browsable trees * * @param array $TYPO3_CONF_VARS['EXTCONF']['dam']['selectionClasses'] * @param string script name to link to * @param boolean Element browser mode * @return void */ function initSelectionClasses($selectionClassesArr, $thisScript, $mode = 'browse', $excludeReadOnlyMounts = false) { global $BE_USER, $LANG, $BACK_PATH, $TYPO3_CONF_VARS; $this->selectionClasses = $selectionClassesArr; // configuration - default $default_modeSelIcons = tx_dam::config_checkValueEnabled('setup.selections.default.modeSelIcons', true); if (is_array($this->selectionClasses)) { foreach ($this->selectionClasses as $classKey => $classRef) { // configuration - class if (!tx_dam::config_checkValueEnabled('setup.selections.' . $classKey, true)) { continue; } $config = tx_dam::config_getValue('setup.selections.' . $classKey, true); if (is_object($obj =& t3lib_div::getUserObj($classRef))) { if (!$obj->isPureSelectionClass) { if ($obj->isTreeViewClass) { // object is a treeview class itself $this->treeObjArr[$classKey] = $obj; $this->treeObjArr[$classKey]->init('', '', $excludeReadOnlyMounts); } else { // object does not include treeview functionality. Therefore the standard browsetree is used with setup from the object $this->treeObjArr[$classKey] =& t3lib_div::makeInstance('tx_dam_browseTree'); $this->treeObjArr[$classKey]->init(); $this->treeObjArr[$classKey]->title = $obj->getTreeTitle(); $this->treeObjArr[$classKey]->treeName = $obj->getTreeName(); $this->treeObjArr[$classKey]->domIdPrefix = $obj->domIdPrefix ? $obj->domIdPrefix : $obj->getTreeName(); $this->treeObjArr[$classKey]->rootIcon = PATH_txdam_rel . 'i/cat2folder.gif'; $this->treeObjArr[$classKey]->iconName = tx_dam::file_basename($obj->getDefaultIcon()); $this->treeObjArr[$classKey]->iconPath = tx_dam::file_dirname($obj->getDefaultIcon()); // workaround: Only variables can be passed by reference $this->treeObjArr[$classKey]->_data = $obj->getTreeArray(); $this->treeObjArr[$classKey]->setDataFromArray($this->treeObjArr[$classKey]->_data); } $this->treeObjArr[$classKey]->thisScript = $thisScript; $this->treeObjArr[$classKey]->BE_USER = $BE_USER; $this->treeObjArr[$classKey]->mode = $mode; $this->treeObjArr[$classKey]->ext_IconMode = '1'; // no context menu on icons if (!$default_modeSelIcons or !tx_dam::config_isEnabledOption($config, 'modeSelIcons', true)) { $this->treeObjArr[$classKey]->modeSelIcons = false; } } if ($this->treeObjArr[$classKey]->supportMounts) { $mounts = $this->getMountsForTreeClass($classKey, $this->treeObjArr[$classKey]->getTreeName()); if (count($mounts)) { $this->treeObjArr[$classKey]->setMounts($mounts); } else { unset($this->treeObjArr[$classKey]); } } } } } }
/** * Rendering * Called in SC_browse_links::main() when isValid() returns true; * * @param string $type Type: "file", ... * @param object $pObj Parent object. * @return string Rendered content * @see SC_browse_links::main() */ function render($type, &$pObj) { global $LANG, $BE_USER; $this->pObj =& $pObj; $pObj->browser =& $this; $this->renderInit(); $content = ''; $debug = false; switch ((string) $type) { case 'rte': $content = $this->main_rte(); break; case 'db': case 'file': $content = $this->main(); break; default: $content .= '<h3>ERROR</h3>'; $content .= '<h3>Unknown or missing mode!</h3>'; $debug = true; break; } // debug output if ($debug or tx_dam::config_getValue('setup.devel')) { $bparams = explode('|', $this->bparams); $debugArr = array('act' => $this->act, 'mode' => $this->mode, 'thisScript' => $this->thisScript, 'bparams' => $bparams, 'allowedTables' => $this->allowedTables, 'allowedFileTypes' => $this->allowedFileTypes, 'disallowedFileTypes' => $this->disallowedFileTypes, 'addParams' => $this->addParams, 'pointer' => $this->damSC->selection->pointer->page, 'SLCMD' => t3lib_div::_GPmerged('SLCMD'), 'Selection' => $this->damSC->selection->sl->sel, 'Query' => $this->damSC->selection->qg->query, 'QueryArray' => $this->damSC->selection->qg->getQueryParts(), 'PM' => t3lib_div::_GPmerged('PM')); $this->damSC->debugContent['browse_links'] = '<h4>EB SETTINGS</h4>' . t3lib_div::view_array($debugArr); $dbgContent = '<div class="debugContent">' . implode('', $this->damSC->debugContent) . '</div>'; $content .= $this->damSC->buttonToggleDisplay('debug', 'Debug output', $dbgContent); } return $content; }