/** * Constructor. * */ private function __construct() { $this->preferenceDao = BOL_PreferenceDao::getInstance(); /* @var $this->preferenceDao BOL_PreferenceDao */ $this->preferenceSectionDao = BOL_PreferenceSectionDao::getInstance(); /* @var $this->preferenceSectionDao BOL_PreferenceSectionDao */ $this->preferenceDataDao = BOL_PreferenceDataDao::getInstance(); /* @var $this->preferenceDataDao BOL_PreferenceDataDao */ }
public function findUserIdListByPreferenceValues($preferenceValues) { if (empty($preferenceValues) || !is_array($preferenceValues)) { return array(); } $sqlList = array(); foreach ($preferenceValues as $key => $value) { $sqlList[$key] = " SELECT d.userId FROM " . BOL_PreferenceDao::getInstance()->getTableName() . " p\n LEFT JOIN " . BOL_PreferenceDataDao::getInstance()->getTableName() . " d ON ( d.`key` = p.`key` )\n WHERE p.`key` = '" . $this->dbo->escapeString($key) . "' AND ( d.value = '" . $this->dbo->escapeString($value) . "' OR d.value IS NULL AND p.defaultValue = '" . $this->dbo->escapeString($value) . "' ) "; if (!empty($value) && is_array($value)) { $sqlList[$key] = " SELECT d.userId FROM " . BOL_PreferenceDao::getInstance()->getTableName() . " p\n LEFT JOIN " . BOL_PreferenceDataDao::getInstance()->getTableName() . " d ON ( d.`key` = p.`key` )\n WHERE p.`key` = '" . $this->dbo->escapeString($key) . "' AND ( d.value IN " . $this->dbo->mergeInClause($value) . " OR d.value IS NULL AND p.defaultValue IN " . $this->dbo->mergeInClause($value) . " ) "; } } $sqlString = ''; $queryNumber = 0; foreach ($sqlList as $sql) { if ($queryNumber > 0) { $sqlString .= ' UNION '; } $queryNumber++; $sqlString .= $sql; } return $this->dbo->queryForColumnList($sqlString); }