protected function parse_filter(array $filters = null, array $options = array()) { $defaults = ['to_string' => true]; $options = array_merge($defaults, $options); if (isset($filters['start'])) { $filters['stat_date'][] = array('operator' => '>=', 'data' => $filters['start']); unset($filters['start']); } if (isset($filters['end'])) { $filters['stat_date'][] = array('operator' => '<=', 'data' => $filters['end']); unset($filters['end']); } $spec = array('date'); $pick = Utils::array_pick($filters, $spec); $filters = Utils::array_omit($filters, $spec); list($conditions, $params) = parent::parse_filter($filters, ['to_string' => false]); foreach ($pick as $key => $value) { switch ($key) { case 'date': $conditions[] = "DATE(`stat_date`)=:date"; $params[':date'] = $value; break; } } $conditions = $options['to_string'] ? ($options['is_append'] ? ' and ' : '') . implode(' AND ', $conditions) : $options; return array($conditions, $params); }
public function update() { $data = $this->get_post_data(); // 有可能通过修改密码popup修改密码 if ($_REQUEST['newpassword']) { $data = Utils::array_pick($_REQUEST, 'oldpassword', 'newpassword', 'repassword'); } // 校验密码 if ($data['newpassword']) { if ($data['newpassword'] != $data['repassword']) { $this->exit_with_error(11, '两次输入的密码不一致,请重新输入。', 403); } if (!preg_match('/[0-9a-zA-Z$!^#_@%&*.]{6,16}/', $data['newpassword'])) { $this->exit_with_error(12, '新的密码不合规则,请重新输入。', 403); } $auth = new Auth(); if (!$auth->validate($_SESSION['email'], $data['oldpassword'], true)) { $this->exit_with_error(13, '旧密码不正确,请重新输入', 403); } $data['password'] = $auth->encrypt($_SESSION['email'], $data['newpassword']); $data = Utils::array_omit($data, 'oldpassword', 'newpassword', 'repassword'); } $service = new User(); $check = $service->update_me($data); if ($check) { $this->output(['code' => 0, 'msg' => '修改成功', $data]); } else { $this->exit_with_error(400, '修改失败', 1); } }
private function split_attr(array $attr = null, $only_split = false) { $attr = $attr ? $attr : $this->attributes; $callback = Utils::array_pick($attr, self::$FIELDS_CALLBACK); $ios = Utils::array_pick($attr, self::$FIELDS_IOS); $channel = Utils::array_pick($attr, self::$FIELDS_CHANNEL); $diy = Utils::array_pick($attr, self::$FIELDS_DIY); $permissions = $attr['permission']; $provinces = $attr['provinces'] ? $attr['provinces'] : $attr['put_provinces']; if (!$only_split) { $me = $_SESSION['id']; $im_cp = $_SESSION['role'] == Auth::$CP_PERMISSION; $now = date('Y-m-d H:i:s'); $callback['ad_id'] = $channel['id'] = $ios['ad_id'] = $diy['id'] = $this->id; $attr['status'] = 2; // 新建,待审核 $attr['ad_sdk_type'] = 1; // 只允许广告墙 $attr['create_user'] = $me; $attr['create_time'] = $now; if ($im_cp) { $channel['feedback'] = 7; $channel['cycle'] = 1; $attr['ad_app_type'] = 2; $attr['cate'] = 1; } else { $admin = new Admin(); $channel = array_merge($channel, $admin->get_owner($attr, $me)); } if ($attr['replace']) { $this->replace = $attr['replace-with']; $attr['status'] = 3; // 欲替换之前的广告 $attr['status_time'] = $attr['replace-time']; } } $attr = Utils::array_omit($attr, self::$FIELDS_CALLBACK, self::$FIELDS_CHANNEL, self::$FIELDS_IOS, self::$FIELDS_DIY, self::$FIELDS_OMIT); if ($only_split) { unset($attr['id']); } return [$callback, $ios, $channel, $diy, $attr, $permissions, $provinces]; }
protected function parse_filter(array $filters = null, array $options = array()) { $defaults = ['to_string' => true]; $options = array_merge($defaults, $options); if (isset($filters['salesman'])) { $filters['applicant'] = $filters['salesman']; unset($filters['salesman']); } if (isset($filters['start'])) { $filters['apply_time'][] = array('operator' => '>=', 'data' => $filters['start']); unset($filters['start']); } if (isset($filters['end'])) { $filters['apply_time'][] = array('operator' => '<=', 'data' => $filters['end']); unset($filters['end']); } if (isset($filters['pass_status'])) { $filters['a.status'][] = array('operator' => '>=', 'data' => $filters['pass_status']); unset($filters['pass_status']); } $spec = array('keyword'); $pick = Utils::array_pick($filters, $spec); $filters = Utils::array_omit($filters, $spec); list($conditions, $params) = parent::parse_filter($filters, array('to_string' => false)); foreach ($pick as $key => $value) { switch ($key) { case 'keyword': if ($value) { $conditions[] = "(`express_number` LIKE :keyword OR `full_name` LIKE :keyword OR `company` LIKE :keyword)"; $params[':keyword'] = "%{$value}%"; } break; } } $conditions = $options['to_string'] ? ($options['is_append'] ? ' and ' : '') . implode(' AND ', $conditions) : $options; return array($conditions, $params); }
protected function parse_admin_filter(array $filters = null, array $options = array()) { $defaults = ['to_string' => true]; $options = array_merge($defaults, $options); $spec = array('keyword', 'salesman', 'channel', 'follow'); if (isset($filters['ad_name'])) { $filters['a.ad_name'] = $filters['ad_name']; unset($filters['ad_name']); } if (isset($filters['start'])) { $filters['create_time'][] = array('operator' => '>=', 'data' => $filters['start']); unset($filters['start']); } if (isset($filters['end'])) { $filters['create_time'][] = array('operator' => '<=', 'data' => $filters['start']); unset($filters['end']); } if (isset($filters['owner'])) { $filters['b.owner'] = $filters['owner']; unset($filters['owner']); } $pick = Utils::array_pick($filters, $spec); $filters = Utils::array_omit($filters, $spec); list($conditions, $params) = parent::parse_filter($filters, array('to_string' => false)); foreach ($pick as $key => $value) { switch ($key) { case 'keyword': $conditions[] = " (a.`ad_name` LIKE :keyword OR ifnull(h.company_short,ifnull(c.alias,b.channel)) LIKE :keyword)"; $params[':keyword'] = '%' . $value . '%'; break; case 'salesman': $conditions[] = " (b.`owner`=:salesman OR `execute_owner`=:salesman)"; $params[':salesman'] = $value; break; case 'channel': $conditions[] = " ifnull(h.company_short,ifnull(c.alias,b.channel))=:channel"; $params[':channel'] = $value; break; case 'follow': $conditions[] = ' b.owner!=execute_owner'; break; } } $conditions = $options['to_string'] ? ($options['is_append'] ? ' and ' : '') . implode(' AND ', $conditions) : $options; return array($conditions, $params); }
/** * @param array $filters * @param array $options * * @return array */ protected function parse_filter(array $filters = null, array $options = array()) { $defaults = ['to_string' => true]; $options = array_merge($defaults, $options); $spec = array('keyword', 'today'); $pick = Utils::array_pick($filters, $spec); $filters = Utils::array_omit($filters, $spec); list($conditions, $params) = parent::parse_filter($filters, array('to_string' => false)); foreach ($pick as $key => $value) { switch ($key) { case 'keyword': if ($value) { $conditions[] = "(`company` LIKE :keyword OR `company_short` LIKE :keyword OR a.`agreement_id` LIKE\n :keyword)"; $params[':keyword'] = '%' . $value . '%'; } break; case 'today': $value = date('Y-m-d', strtotime($value) - 86400 * 60); $conditions[] = '(`doc_date`>=:protection_begin OR c.`status`=' . ADModel::ONLINE . ' OR (c.`status`=' . ADModel::OFFLINE . ' AND `status_time`>=:protection_begin))'; $params[':protection_begin'] = $value; break; } } $conditions = $options['to_string'] ? ($options['is_append'] ? ' and ' : '') . implode(' AND ', $conditions) : $conditions; return array($conditions, $params); }
/** * @param array $filters * @param array $options * * @return array */ protected function parse_filter(array $filters = null, array $options = array()) { $defaults = ['to_string' => true]; $options = array_merge($defaults, $options); $spec = array('keyword', 'salesman'); $pick = Utils::array_pick($filters, $spec); $filters = Utils::array_omit($filters, $spec); list($conditions, $params) = parent::parse_filter($filters, array('to_string' => false)); foreach ($pick as $key => $value) { switch ($key) { case 'keyword': if ($value) { $conditions[] = "(`alias` LIKE :keyword OR `full_name` LIKE :keyword)"; $params[':keyword'] = "%{$value}%"; } break; case 'salesman': if ($value) { $conditions[] = "(b.`owner`=:salesman OR b.`execute_owner`=:salesman)"; $params[':salesman'] = $value; } break; } } $conditions = $options['to_string'] ? ($options['is_append'] ? ' and ' : '') . implode(' AND ', $conditions) : $options; return array($conditions, $params); }