/** * Build a new route and add it to the Map. * * @param array $methods Array containing http methods. * The supported methods are defined by Request::METHOD_* constants * @param string $routeStr A string that may contain parameters * that will be passed to the controller. * For example: * - /home * - /product/{productId} * - /tag/{slug} * @param array $info An array containing the following indexes: * - controller: Name of a controller class * - action: Method of the defined controller (Default: index) * - alias: Short name of the route, for easy referencing */ public static function create(array $methods, string $routeStr, array $info) { $middlewareList = isset($info['middleware']) ? (array) $info['middleware'] : []; array_walk_recursive(self::$middlewareGroupStack, function ($middleware) use(&$middlewareList) { $middlewareList[] = $middleware; }); $route = new self(); $route->setMethods($methods); $route->setAction(isset($info['action']) ? $info['action'] : 'index'); $route->setAlias(isset($info['alias']) ? $info['alias'] : ''); $route->setMiddlewareList($middlewareList); $route->setControllerName($info['controller']); $route->setMethods($methods); $route->setRouteStr($routeStr); Map::addRoute($route); }
/** * Instantiates a new instance of this object from a string * * @param String $string The string to parse into an object * @return \r8\Query\From\Table */ public static function fromString($string) { list($string, $alias) = \r8\Query::parseSQLAlias($string); // Split the name into the table and database $parsed = \r8\Query::parseSQLName($string); // Instantiate with the table name $field = new self(array_pop($parsed)); // Set the database if we found one if (count($parsed) > 0) { $field->setDatabase(array_pop($parsed)); } // Now load in the alias if ($alias) { $field->setAlias($alias); } return $field; }
/** * @param $parameters * @param Environment $environment * @param bool $skipSignature skip signature check true / false * * @return Response * * @throws InvalidArgumentException * @throws NotValidSignatureException */ public static function create($parameters, Environment $environment, $skipSignature = false) { $response = new self(); $parameters = array_change_key_case($parameters, CASE_UPPER); $missing = array_diff(Parameter::$requiredPostSaleParameters, array_keys($parameters)); if (count($missing) > 0) { throw new InvalidArgumentException(sprintf('Missing parameter(s) %s of PostFinance post-sale response', implode(', ', $missing))); } if (!$skipSignature) { $string = ''; $p = Parameter::$postSaleParameters; sort($p); foreach ($p as $key) { if ($key === Parameter::SIGNATURE || !isset($parameters[$key]) || $parameters[$key] === '') { continue; } $string .= sprintf('%s=%s%s', $key, $parameters[$key], $environment->getShaOut()); } if (strtoupper(hash($environment->getHashAlgorithm(), $string)) !== $parameters[Parameter::SIGNATURE]) { throw new NotValidSignatureException(); } } $response->setOrderId($parameters[Parameter::ORDER_ID])->setAmount($parameters[Parameter::AMOUNT])->setCurrency($parameters[Parameter::CURRENCY])->setAcceptance($parameters[Parameter::ACCEPTANCE])->setStatus($parameters[Parameter::STATUS])->setCardNumber($parameters[Parameter::CARD_NUMBER])->setPaymentId($parameters[Parameter::PAYMENT_ID])->setError($parameters[Parameter::NC_ERROR])->setCardExpirationDate($parameters[Parameter::EXPIRATION_DATE])->setTransactionDate(\DateTime::createFromFormat('m/d/Y', $parameters[Parameter::TRANSACTION_DATE]))->setCardHolderName($parameters[Parameter::CARD_HOLDER])->setIp($parameters[Parameter::IP]); if (isset($parameters[Parameter::ALIAS]) && !empty($parameters[Parameter::ALIAS])) { $response->setAlias($parameters[Parameter::ALIAS]); } switch ($parameters['PM']) { case 'CreditCard': $response->setPaymentMethod(PaymentMethod::CREDITCARD); switch ($parameters['BRAND']) { case 'MasterCard': $response->setBrand(Brand::MASTERCARD); break; case 'Visa': $response->setBrand(Brand::VISA); break; } break; case 'PostFinance e-finance': $response->setPaymentMethod(PaymentMethod::POSTFINANCE_EFINANCE); $response->setBrand(Brand::POSTFINANCE_EFINANCE); break; case 'PostFinance Card': $response->setPaymentMethod(PaymentMethod::POSTFINANCE_CARD); $response->setBrand(Brand::POSTFINANCE_CARD); break; } return $response; }