/** * Convert iso_filterFields configuration for new cumulative filter */ private function updateCumulativeFilterFields() { if ($this->createDatabaseField('iso_cumulativeFields', 'tl_module')) { $modules = $this->db->query("SELECT id, iso_filterFields FROM tl_module WHERE type='iso_cumulativefilter'"); while ($modules->next()) { $fields = deserialize($modules->iso_filterFields); if (!empty($fields) && is_array($fields)) { $config = array(); foreach ($fields as $field) { $config[] = array('attribute' => $field, 'queryType' => 'and', 'matchCount' => 'none'); } $this->db->prepare("UPDATE tl_module SET iso_cumulativeFields=? WHERE id=?")->execute(serialize($config), $modules->id); } } } }
/** * Filter the allowed ids. * * @param array $ids Content elkement ids. * @param array $allowedElements Flat list of allowed elements. * @param string|null $orderBy Optional order statement. * * @return array */ private function filterIds($ids, $allowedElements, $orderBy = null) { $query = sprintf("SELECT id FROM tl_content WHERE id IN (%s) AND type IN ('%s')", implode(',', $ids), implode("','", $allowedElements)); if ($orderBy) { $query .= ' ORDER BY ' . $orderBy; } return $this->database->query($query)->fetchEach('id'); }