public function ordersCollection($params) { /** * @var shopOrdersCollection $collection */ $collection = $params['collection']; $hash = $collection->getType(); $filters = self::parseHash(urldecode($hash)); $model = new shopOrderModel(); foreach ($filters as $k => $v) { $key = $model->escape($k); $value = $model->escape($v); if (empty($value)) { continue; } if (substr($key, 0, 15) == 'update_datetime') { $operators = array("_from" => ">=", "_to" => "<="); if (array_key_exists(substr($key, 15), $operators)) { $operator = $operators[substr($key, 15)]; $collection->addWhere("o.update_datetime" . $operator . "'" . date('Y-m-d', strtotime($value)) . "'"); } } elseif (substr($key, 0, 7) == 'params.') { $model_params = new shopOrderParamsModel(); $params_table_name = $model_params->getTableName(); $collection->addJoin($params_table_name, "o.id=:table.order_id AND :table.name='" . substr($key, 7) . "'", ":table.value" . $this->getWhere($value)); } elseif ($model->fieldExists($key)) { $title[] = $key . $this->getWhere($value); $collection->addWhere("o." . $key . $this->getWhere($value)); } } return true; }