/** * Set conditions * * @param array $flexFormSettings The Settings from the FlexForm * @param array $arguments The POST or GET parameters * @return void */ public function setConditions($flexFormSettings, $arguments) { $columnTypes = $this->table->getColumnTypes(); // Include hook to edit arguments if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ezqueries']['recordManagement']['hookEditArguments'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ezqueries']['recordManagement']['hookEditArguments'] as $_classRef) { $_procObj =& \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($_classRef); $arguments = $_procObj->hookEditArguments($arguments); } } if ($this->table->getTableType() !== 'relation') { // Set where, orderby ,order and groupby if (isset($arguments['orderBy']) && $arguments['orderBy'] !== '' && isset($arguments['order'])) { $orderBy = $arguments['orderBy']; $order = $arguments['order']; $orderByValue = NULL; } else { if (isset($flexFormSettings['orderByValue']) && $flexFormSettings['orderByValue'] !== '') { $orderByValue = $flexFormSettings['orderByValue']; } else { $orderBy = $flexFormSettings['orderBy']; $orderByValue = NULL; } $order = $flexFormSettings['order']; } $groupBy = $flexFormSettings['groupBy']; $where = ''; if (isset($flexFormSettings['where'])) { $where .= $flexFormSettings['where']; } // User authentication $userGroup = $GLOBALS['TSFE']->fe_user->user['usergroup']; $userID = $GLOBALS['TSFE']->fe_user->user['uid']; if (isset($flexFormSettings['userIDColumn']) && $userGroup !== $flexFormSettings['adminUserGroup']) { $tables = $this->table->getTableNames(); $column = ''; if (strpos($flexFormSettings['userIDColumn'], '.') !== false) { $column = $flexFormSettings['userIDColumn']; } else { $column = $tables[0] . '.' . $flexFormSettings['userIDColumn']; } if ($where !== '') { $where .= ' AND ' . $column . '="' . $userID . '"'; } else { $where .= '' . $column . '="' . $userID . '"'; } } $this->conditions->setWhere($where); $this->conditions->setOrderBy($orderBy); $this->conditions->setOrderByValue($orderByValue); $this->conditions->setOrder($order); $this->conditions->setGroupBy($groupBy); // Set search if (isset($arguments['search'])) { foreach ($arguments['search'] as $column => $value) { if ($column !== 'highlighting' && $column !== 'fullTextSearch') { if ($arguments['search'][$column]['value'] !== NULL && $arguments['search'][$column]['value'] !== "") { $connection = $this->recordManagementRepository->connect(); $search[$column]['value'] = substr($connection->qstr($arguments['search'][$column]['value']), 1, -1); $connection->Close(); $search[$column]['operation'] = $arguments['search'][$column]['operation']; $search[$column]['columnType'] = $columnTypes[$column]['type']; if (isset($arguments['search'][$column]['searchMode'])) { $search[$column]['searchMode'] = $arguments['search'][$column]['searchMode']; } else { $search[$column]['searchMode'] = $columnTypes[$column]['searchMode']; } $search[$column]['searchType'] = $arguments['search'][$column]['searchType']; } } } if (!isset($arguments['search']['highlighting'])) { if ($flexFormSettings['enableSearchMarks']) { $search['highlighting'] = 'true'; } else { $search['highlighting'] = 'false'; } } else { $search['highlighting'] = $arguments['search']['highlighting']; } if (isset($arguments['search']['fullTextSearch'])) { $search['fullTextSearch'] = $arguments['search']['fullTextSearch']; } } else { $search = array(); } $this->conditions->setSearch($search); // Set filters if (isset($arguments['filters'])) { $filters = $arguments['filters']; } else { $filters = array(); } $this->conditions->setFilters($filters); } else { // Set where for relation view $where = $flexFormSettings['relationForeignKeyColumn'] . '="' . $arguments['foreignKey'] . '"'; $this->conditions->setWhere($where); $this->table->setForeignKeyColumn($flexFormSettings['relationForeignKeyColumn']); $this->table->setForeignKeyRelationColumn($flexFormSettings['relationForeignKeyRelationColumn']); } // Set column relations if ($flexFormSettings['columnRelations']) { $this->conditions->setColumnRelations(explode(',', $flexFormSettings['columnRelations'])); } // Set records count $recordsCount = $this->recordManagementRepository->countRecordsFromTable($this->table->getColumns(), $this->table->getTableNames(), $this->conditions); $this->conditions->setRecordsCount($recordsCount); // Set page browser stuff if list view if ($this->table->getTableType() == 'list') { // Set number of records per page if ($arguments['recordsPerPage']) { $recordsPerPage = $recordsCount; } else { if ($flexFormSettings['recordsPerPage']) { $recordsPerPage = $flexFormSettings['recordsPerPage']; } else { $recordsPerPage = $recordsCount; } } $recordsPerPage = (int) $recordsPerPage; $this->conditions->setRecordsPerPage($recordsPerPage); // Set maximum count of pages if ($flexFormSettings['maxPages']) { $maxPages = $flexFormSettings['maxPages']; } else { $maxPages = 0; } $maxPages = (int) $maxPages; $this->conditions->setMaxPages($maxPages); // Set start record if ($arguments['startRecord']) { $startRecord = $arguments['startRecord']; } else { $startRecord = 0; } $this->conditions->setStartRecord($startRecord); } }