protected function validate($data, $rules, $messages = array(), $customAttributes = array()) { $messages = Set::flatten($messages); $validator = \Validator::make($data, $rules, $messages, $customAttributes); if ($validator->fails()) { return $this->sendValidationErrorsResponse($validator->getMessageBag()->toArray()); } return true; }
/** * Validate data and returm errors array if it is invalid * @param array $data * @param array $rules * @param array $messages * @param array $customAttributes * @return array|bool */ protected function validateWithoutHalt(array $data, array $rules, array $messages = array(), array $customAttributes = array()) { $messages = Set::flatten($messages); $validator = \Validator::make($data, $rules, $messages, $customAttributes); if ($validator->fails()) { return $validator->getMessageBag()->toArray(); } return true; }
/** * @param Request $request * @param DbObject|Authenticatable $admin * @return array|\Illuminate\Http\JsonResponse */ protected function validateAndGetAdminProfileUpdates(Request $request, DbObject $admin) { $validationRules = ['old_password' => 'required', 'new_password' => 'min:6']; $fieldsToUpdate = []; if ($admin->_hasField('language')) { $validationRules['language'] = 'required|in:' . implode(CmfConfig::getInstance()->locales()); $fieldsToUpdate[] = 'language'; } if ($admin->_hasField('name')) { $validationRules['name'] = 'max:200'; $fieldsToUpdate[] = 'name'; } if ($admin->_hasField('timezone')) { $validationRules['timezone'] = 'required|exists2:pg_timezone_names,name'; $fieldsToUpdate[] = 'timezone'; } $usersTable = CmfConfig::getInstance()->users_table_name(); $userLoginCol = CmfConfig::getInstance()->user_login_column(); if ($admin->_hasField('email')) { if ($userLoginCol === 'email') { $validationRules['email'] = "required|email|unique:{$usersTable},email,{$admin->getAuthIdentifier()},id"; } else { $validationRules['email'] = 'email'; } $fieldsToUpdate[] = 'email'; } if ($userLoginCol !== 'email') { $validationRules[$userLoginCol] = "required|regex:%^[a-zA-Z0-9_@.-]+\$%is|min:4|unique:{$usersTable},{$userLoginCol},{$admin->getAuthIdentifier()},id"; $fieldsToUpdate[] = $userLoginCol; } foreach (CmfConfig::getInstance()->additional_user_profile_fields() as $fieldName => $rules) { if (is_int($fieldName)) { $fieldName = $rules; } else { $validationRules[$fieldName] = $rules; } $fieldsToUpdate[] = $fieldName; } $validator = \Validator::make($request->data(), $validationRules, Set::flatten(CmfConfig::transCustom('.page.profile.errors'))); $errors = []; if ($validator->fails()) { $errors = $validator->getMessageBag()->toArray(); } else { if (!\Hash::check($request->data('old_password'), $admin->getAuthPassword())) { $errors['old_password'] = CmfConfig::transCustom('.page.profile.errors.old_password.match'); } } if (!empty($errors)) { return cmfJsonResponseForValidationErrors($errors); } return $request->only($fieldsToUpdate); }
/** * @inheritdoc * @throws \BadMethodCallException * @throws \PeskyORM\Exception\DbConnectionConfigException * @throws \PeskyORM\Exception\DbModelException * @throws \PeskyORM\Exception\DbObjectException */ public function delete($conditionsAndOptions = null, $returning = false) { /** @var CmfDbModel|CacheForDbSelects $this */ $ret = parent::delete($conditionsAndOptions, $returning); if ($this->cachingIsPossible()) { if (!empty($ret[$this->getPkColumnName()])) { $ids = $ret[$this->getPkColumnName()]; } else { if (!empty($ret[0]) && !empty($ret[0][$this->getPkColumnName()])) { $ids = Set::extract('/' . $ret[$this->getPkColumnName()]); } else { if (!empty($conditionsAndOptions[$this->getPkColumnName()])) { $ids = $conditionsAndOptions[$this->getPkColumnName()]; } } } if (!empty($ids)) { if (!is_array($ids)) { $ids = array($ids); } foreach ($ids as $id) { $this->cleanRecordCache($id); } $this->cleanSelectManyCache(); } else { $this->cleanModelCache(); } } return $ret; }
<?php /** * @var array $user * @var string $url */ echo \PeskyCMF\Config\CmfConfig::transCustom('.forgot_password.email_content', ['url' => $url] + \Swayok\Utils\Set::flatten($user));
/** * @param array $data * @param array $validators - supports inserts in format "{{id}}" where "id" can be any key from $data * @param array $messages * @param bool $isRevalidation * @param bool $isBulkEdit * @return array|string|bool * @throws \LogicException * * @throws ScaffoldActionException */ public function validateData(array $data, array $validators, array $messages = [], $isRevalidation = false, $isBulkEdit = false) { $success = $this->beforeValidate($data, $isRevalidation); if ($success !== true) { return $success; } if (!is_array($validators)) { throw new ScaffoldActionException($this, '$validators must be an array'); } if (empty($validators)) { return []; } if (empty($messages)) { $messages = CmfConfig::transCustom('.' . $this->getModel()->getTableName() . '.form.validation'); } if (!is_array($messages)) { $messages = []; } else { $messages = Set::flatten($messages); } $arrayFields = []; foreach ($validators as $key => &$value) { if (is_string($value)) { $value = StringUtils::insert($value, $data, ['before' => '{{', 'after' => '}}']); if (preg_match('%(^|\\|)array%i', $value)) { $arrayFields[] = $key; } } else { if (is_array($value)) { foreach ($value as &$validator) { if (is_string($validator)) { $validator = StringUtils::insert($value, $data, ['before' => '{{', 'after' => '}}']); } if ($validator === 'array') { $arrayFields[] = $key; } } unset($validator); } } } unset($value); $validator = \Validator::make($data, $validators, $messages); if ($validator->fails()) { $errors = $validator->getMessageBag()->toArray(); foreach ($errors as $field => $error) { if (in_array($field, $arrayFields, true)) { $errors[$field . '[]'] = $error; unset($errors[$field]); } } return $errors; } $success = $this->onValidationSuccess($data, $isRevalidation, $isBulkEdit); if ($success !== true) { return $success; } return []; }
/** * @param Request $request * @param Admin $admin * @return array|\Illuminate\Http\JsonResponse */ protected function validateAndGetAdminProfileUpdates(Request $request, Admin $admin) { $validationRules = ['old_password' => 'required', 'new_password' => 'min:6']; $fieldsToUpdate = []; if ($admin->_hasField('language')) { $validationRules['language'] = 'required|in:' . implode(CmfConfig::getInstance()->locales()); $fieldsToUpdate[] = 'language'; } if ($admin->_hasField('name')) { $validationRules['name'] = 'max:200'; $fieldsToUpdate[] = 'name'; } $usersTable = CmfConfig::getInstance()->users_table_name(); $userLoginCol = CmfConfig::getInstance()->user_login_column(); if ($admin->_hasField('email')) { if ($userLoginCol === 'email') { $validationRules['email'] = "required|email|unique:{$usersTable},email,{$admin->id},id"; } else { $validationRules['email'] = "email"; } $fieldsToUpdate[] = 'email'; } if ($userLoginCol !== 'email') { $validationRules[$userLoginCol] = "required|alpha_dash|min:4|unique:{$usersTable},{$userLoginCol},{$admin->id},id"; $fieldsToUpdate[] = $userLoginCol; } $validator = \Validator::make($request->data(), $validationRules, Set::flatten(CmfConfig::transCustom('.page.profile.errors'))); $errors = []; if ($validator->fails()) { $errors = $validator->getMessageBag()->toArray(); } else { if (!\Hash::check($request->data('old_password'), $admin->password)) { $errors['old_password'] = CmfConfig::transCustom('.page.profile.errors.old_password.match'); } } if (!empty($errors)) { return response()->json(['errors' => $errors, 'message' => CmfConfig::transBase('.form.validation_errors')], HttpCode::INVALID); } return $request->only($fieldsToUpdate); }
protected function getColumns($tableName, $tableSchema = 'public') { $dataSource = call_user_func([$this->modelParentClass, '_getDataSource'], 'default'); $query = "SELECT * FROM `information_schema`.`columns` WHERE `table_name` = ``{$tableName}`` AND `table_schema` = ``{$tableSchema}``"; $columns = $dataSource->processRecords($dataSource->query(DbExpr::create($query))); if (empty($columns)) { $this->line("Table [{$tableName}] possibly not exists"); return false; } $columns = Set::combine($columns, '/column_name', '/.'); return $columns; }
/** * @param array $data * @param array $validators * @param array $messages * @param bool $isRevalidation * @return array * @throws ScaffoldActionException */ public function validateData(array $data, array $validators, array $messages = [], $isRevalidation = false) { $success = $this->beforeValidate($data, $isRevalidation); if ($success !== true) { return $success; } if (!is_array($validators)) { throw new ScaffoldActionException($this, '$validators must be an array'); } if (empty($validators)) { return []; } if (empty($messages)) { $messages = CmfConfig::transCustom('.' . $this->getModel()->getTableName() . '.form.validation'); } if (!is_array($messages)) { $messages = []; } else { $messages = Set::flatten($messages); } array_walk($validators, function (&$value, $key) use($data) { if (is_string($value)) { $value = StringUtils::insert($value, $data, ['before' => '{{', 'after' => '}}']); } }); $validator = \Validator::make($data, $validators, $messages); if ($validator->fails()) { return $validator->getMessageBag()->toArray(); } $success = $this->onValidationSuccess($data, $isRevalidation); if ($success !== true) { return $success; } return []; }