*/ class ActionCode { /** * Generate an Action Code. * * @param string $action The identifier of the action. * @param int $user The user this action code is intended for (leave 0 for universal). * * @return string The action code given to the user. */ public static function generate($action, $user = 0) { // Generate a code $code = uniqid(); // Insert it Database::insert('actioncodes', [ 'code_action' => $action, 'user_id' => $user, 'action_code' => $code, ]); // Return the code return $code; } /** * Validate an action code. * * @param string $action The action identifier. * @param string $code The action code. * @param int $user The id of the user validating this code. * @param bool $invalidate Set if the code should be invalidated once validated. * * @return bool Boolean indicating success. */ public static function validate($action, $code, $user = 0, $invalidate = true) { // Fetch the code from the db $get = Database::count('actioncodes', [ 'code_action' => [$action, '='], 'action_code' => [$code, '='], 'user_id' => [$user, '='], ]); // Invalidate the code if requested if ($invalidate) { self::invalidate($code); } // Return the result return $get[0] > 0; } /** * Make a code invalid. * * @param string $code The code that is being invalidated. */ public static function invalidate($code) { Database::delete('actioncodes', [ 'code_action' => [$code, '='], ]); } }