/** * Get the required parameters. Return bad request if any of them is missing. This method will return array. * * @param variable * @return array * @link http://koldy.net/docs/input#require * * @example * $params = Input::requireParamsArray('id', 'email'); * echo $params['email']; */ public static function requireParamsArray() { switch ($_SERVER['REQUEST_METHOD']) { case 'GET': $parameters = $_GET; break; case 'POST': $parameters = $_POST; break; case 'PUT': case 'DELETE': $parameters = static::getInputVars(); break; } $params = func_get_args(); $a = array(); foreach ($params as $param) { if (!isset($parameters[$param])) { if (Application::inDevelopment()) { $passedParams = implode(',', array_keys($parameters)); Log::debug("Missing {$_SERVER['REQUEST_METHOD']} parameter '{$param}', only got " . (strlen($passedParams) > 0 ? $passedParams : '[nothing]')); } Application::error(400, 'Missing one of the parameters'); } $a[$param] = $parameters[$param]; } return $a; }
/** * Throw error if value is not unique in database * * @param string $param * @param string $settings (Class\Name,uniqueField[,exceptionValue][,exceptionField]) * @return true|string * @example \Db\User,email,my@email.com * @example \Db\User,email,field:id,id */ protected function validateUnique($param, $settings) { if (isset($this->input[$param]) && !isset($this->invalids[$param]) && trim($this->input[$param]) != '') { $settings = explode(',', $settings); $settingsCount = count($settings); if ($settingsCount < 2) { if (LOG && Application::inDevelopment()) { Log::debug('validateUnique got only this: ' . print_r($settings, true)); } throw new Exception('Bad parameters count in Validator::validateUnique method; expected at least 2, got ' . $settingsCount); } $class = $settings[0]; $field = $settings[1]; $exceptionValue = isset($settings[2]) ? $settings[2] : null; if (substr($exceptionValue, 0, 6) == 'field:') { $exceptionFieldName = substr($exceptionValue, 6); if (isset($this->input[$exceptionFieldName])) { $exceptionValue = $this->input[$exceptionFieldName]; } } $exceptionField = isset($settings[3]) ? $settings[3] : null; if (!$class::isUnique($field, trim($this->input[$param]), $exceptionValue, $exceptionField)) { return static::getErrorMessage(8, array('value' => $this->input[$param])); } } return true; }