/**
  * 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);
     }
 }