本文整理汇总了PHP中DataSource::prepareFilterValue方法的典型用法代码示例。如果您正苦于以下问题:PHP DataSource::prepareFilterValue方法的具体用法?PHP DataSource::prepareFilterValue怎么用?PHP DataSource::prepareFilterValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataSource
的用法示例。
在下文中一共展示了DataSource::prepareFilterValue方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: buildFilterQuery
public function buildFilterQuery($filter, &$joins, array &$where, Register $parameter_output)
{
$driver = Extension::load('members');
$filter = $this->processFilter($filter);
$filter_join = DataSource::FILTER_OR;
$db = Symphony::Database();
$values = DataSource::prepareFilterValue($filter->value, $parameter_output, $filter_join);
if (!is_array($values)) {
$values = array();
}
// Exact matches:
if ($filter->type == 'is' or $filter->type == 'is-not') {
$statements = array();
if ($filter_join == DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
foreach ($values as $index => $value) {
if ($filter_join != DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
$statements[] = $db->prepareQuery("{$handle}.password = '%s' OR {$handle}.code = '%s'", array(sha1($value), $driver->extractToken($value, 'login')));
}
if (empty($statements)) {
return true;
}
if ($filter_join == DataSource::FILTER_OR) {
$statement = "(\n\t" . implode("\n\tOR ", $statements) . "\n)";
} else {
$statement = "(\n\t" . implode("\n\tAND ", $statements) . "\n)";
}
if ($filter->type == 'is-not') {
$statement = 'NOT ' . $statement;
}
$where[] = $statement;
}
return true;
}
示例2: buildFilterQuery
public function buildFilterQuery($filter, &$joins, array &$where, Register $parameter_output)
{
$filter = $this->processFilter($filter);
$filter_join = DataSource::FILTER_OR;
$db = Symphony::Database();
$values = DataSource::prepareFilterValue($filter->value, $parameter_output, $filter_join);
if (!is_array($values)) {
$values = array();
}
// Exact matches:
if ($filter->type == 'is' or $filter->type == 'is-not') {
$statements = array();
if ($filter_join == DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
foreach ($values as $index => $value) {
if ($filter_join != DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
$statements[] = $db->prepareQuery("'%s' IN ({$handle}.value, {$handle}.handle)", array($value));
}
if (empty($statements)) {
return true;
}
if ($filter_join == DataSource::FILTER_OR) {
$statement = "(\n\t" . implode("\n\tOR ", $statements) . "\n)";
} else {
$statement = "(\n\t" . implode("\n\tAND ", $statements) . "\n)";
}
if ($filter->type == 'is-not') {
$statement = 'NOT ' . $statement;
}
$where[] = $statement;
} else {
if ($filter->type == 'is-null') {
$handle = $this->buildFilterJoin($joins);
$where[] = $db->prepareQuery("{$handle}.value IS NULL");
} else {
if ($filter->type == 'is-null') {
$handle = $this->buildFilterJoin($joins);
$where[] = $db->prepareQuery("{$handle}.value IS NULL");
} else {
if ($filter->type == 'contains' or $filter->type == 'does-not-contain') {
$statements = array();
if ($filter_join == DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
foreach ($values as $index => $value) {
$value = '%' . $value . '%';
if ($filter_join != DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
$statements = array($db->prepareQuery("{$handle}.value LIKE '%s'", array($value)), $db->prepareQuery("{$handle}.handle LIKE '%s'", array($value)));
}
if (empty($statements)) {
return true;
}
if ($filter_join == DataSource::FILTER_OR) {
$statement = "(\n\t" . implode("\n\tOR ", $statements) . "\n)";
} else {
$statement = "(\n\t" . implode("\n\tAND ", $statements) . "\n)";
}
if ($filter->type == 'does-not-contain') {
$statement = 'NOT ' . $statement;
}
$where[] = $statement;
} else {
if ($filter->type == 'regex-search') {
$handle = $this->buildFilterJoin($joins);
$value = trim($filter->value);
$statements = array($db->prepareQuery("{$handle}.value REGEXP '%s'", array($value)), $db->prepareQuery("{$handle}.handle REGEXP '%s'", array($value)));
$where[] = "(\n\t" . implode("\n\tOR ", $statements) . "\n)";
}
}
}
}
}
return true;
}
示例3: buildFilterQuery
public function buildFilterQuery($filter, &$joins, array &$where, Register $ParameterOutput = NULL)
{
self::$key++;
$value = DataSource::prepareFilterValue($filter['value'], $ParameterOutput, $operation_type);
$joins .= sprintf('
LEFT OUTER JOIN `tbl_data_%2$s_%3$s` AS t%1$s ON (e.id = t%1$s.entry_id)
', self::$key, $this->section, $this->{'element-name'});
if ($operation_type == DataSource::FILTER_AND) {
$clause = NULL;
foreach ($value as $v) {
$clause .= sprintf("(t%1\$s.value %2\$s '%3\$s') AND", self::$key, $filter['type'] == 'is-not' ? '<>' : '=', $v);
}
$where[] = sprintf("(%s)", preg_replace('/AND$/i', NULL, $clause));
} else {
$where[] = sprintf("(t%1\$s.value %2\$s IN ('%3\$s'))", self::$key, $filter['type'] == 'is-not' ? 'NOT' : NULL, implode("', '", $value));
}
return true;
}
示例4: xbuildFilterQuery
public function xbuildFilterQuery($filter, &$joins, array &$where, Register $ParameterOutput = NULL)
{
var_dump($this->getFilterTypes($filter));
var_dump($filter);
exit;
self::$key++;
$value = DataSource::prepareFilterValue($filter['value'], $ParameterOutput, $filterOperationType);
$joins .= sprintf('
LEFT OUTER JOIN `tbl_data_%2$s_%3$s` AS t%1$s ON (e.id = t%1$s.entry_id)
', self::$key, $this->section, $this->{'element-name'});
if ($filterOperationType == DataSource::FILTER_AND) {
$clause = NULL;
foreach ($value as $v) {
$clause .= sprintf(" (t%1\$s.relation_id %2\$s '%3\$s') AND", self::$key, $filter['type'] == 'is-not' ? '<>' : '=', $v);
}
$where[] = sprintf("(%s)", preg_replace('/AND$/i', NULL, $clause));
} else {
$where[] = sprintf("(t%1\$s.relation_id %2\$s IN ('%3\$s'))", self::$key, $filter['type'] == 'is-not' ? 'NOT' : NULL, implode("', '", $value));
}
return true;
// OLD CODE ------
$field_id = $this->{'id'};
if (preg_match('/^sql:\\s*/', $data[0], $matches)) {
$data = trim(array_pop(explode(':', $data[0], 2)));
if (strpos($data, "NOT NULL") !== false) {
$joins .= " LEFT JOIN\n\t\t\t\t\t\t\t\t\t`tbl_entries_data_{$field_id}` AS `t{$field_id}`\n\t\t\t\t\t\t\t\tON (`e`.`id` = `t{$field_id}`.entry_id)";
$where .= " AND `t{$field_id}`.relation_id IS NOT NULL ";
} else {
if (strpos($data, "NULL") !== false) {
$joins .= " LEFT JOIN\n\t\t\t\t\t\t\t\t\t`tbl_entries_data_{$field_id}` AS `t{$field_id}`\n\t\t\t\t\t\t\t\tON (`e`.`id` = `t{$field_id}`.entry_id)";
$where .= " AND `t{$field_id}`.relation_id IS NULL ";
}
}
} else {
foreach ($data as $key => &$value) {
// for now, I assume string values are the only possible handles.
// of course, this is not entirely true, but I find it good enough.
if (!is_numeric($value)) {
$related_field_id = $this->{'related-field-id'};
if (is_array($related_field_id) && !empty($related_field_id)) {
$return = Symphony::Database()->fetchCol("id", sprintf("SELECT\n\t\t\t\t\t\t\t\t\t`entry_id` as `id`\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t`tbl_entries_data_%d`\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\t`handle` = '%s'\n\t\t\t\t\t\t\t\tLIMIT 1", $related_field_id[0], Lang::createHandle($value)));
// Skipping returns wrong results when doing an AND operation, return 0 instead.
if (empty($return)) {
$value = 0;
} else {
$value = $return[0];
}
}
}
}
if ($andOperation) {
foreach ($data as $key => $bit) {
$joins .= " LEFT JOIN `tbl_entries_data_{$field_id}` AS `t{$field_id}{$key}` ON (`e`.`id` = `t{$field_id}{$key}`.entry_id) ";
$where .= " AND `t{$field_id}{$key}`.relation_id = '{$bit}' ";
}
} else {
$joins .= " LEFT JOIN `tbl_entries_data_{$field_id}` AS `t{$field_id}` ON (`e`.`id` = `t{$field_id}`.entry_id) ";
$where .= " AND `t{$field_id}`.relation_id IN ('" . @implode("', '", $data) . "') ";
}
}
return true;
}
示例5: buildFilterQuery
public function buildFilterQuery($filter, &$joins, array &$where, Register $parameter_output)
{
$filter = $this->processFilter($filter);
$filter_join = DataSource::FILTER_OR;
$db = Symphony::Database();
$values = DataSource::prepareFilterValue($filter->value, $parameter_output, $filter_join);
if (!is_array($values)) {
$values = array();
}
// Exact matches:
if ($filter->type == 'is' or $filter->type == 'is-not') {
$statements = array();
if ($filter_join == DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
foreach ($values as $index => $value) {
if ($filter_join != DataSource::FILTER_OR) {
$handle = $this->buildFilterJoin($joins);
}
$statements[] = $db->prepareQuery("'%s' IN ({$handle}.relation_id)", array($value));
}
if (empty($statements)) {
return true;
}
if ($filter_join == DataSource::FILTER_OR) {
$statement = "(\n\t" . implode("\n\tOR ", $statements) . "\n)";
} else {
$statement = "(\n\t" . implode("\n\tAND ", $statements) . "\n)";
}
if ($filter->type == 'is-not') {
$statement = 'NOT ' . $statement;
}
$where[] = $statement;
}
}