id : null, $post_script)); return $token; } /** * Confirm a token * * @param string $token Token string * @return bool Returns true or false or throws an error depending on success. */ public static function confirm($token){ $res = self::get($token); /*if(!$res){ throw new \SYSTEM\LOG\ERROR('Token invalid.');} if(!$res['expire'] || strtotime($res['expire']) < time()){ throw new \SYSTEM\LOG\ERROR('Token has expired!');}*/ if(!$res || !$res['expire'] || strtotime($res['expire']) < time()){ return false;} if(!\in_array($res['class'], self::$type_handlers)){ throw new \SYSTEM\LOG\ERROR('Token_handler class not known to Token class. Please register it first.');} if(\array_key_exists('post_script',$res) && $res['post_script']){ if(!\is_callable($res['post_script'])){ throw new \SYSTEM\LOG\ERROR('Post Script required, but could not find it!');} if(!\call_user_func($res['post_script'], $res)){ throw new \SYSTEM\LOG\ERROR('Post Script did not execute successfully');} } if(!\call_user_func_array(array($res['class'], 'confirm'),array($res))){ throw new \SYSTEM\LOG\ERROR('Token_handler rejected Token.');} return \SYSTEM\SQL\SYS_TOKEN_CONFIRM::QI(array( \SYSTEM\SECURITY\security::isLoggedIn() ? \SYSTEM\SECURITY\security::getUser()->id : null, $token)); } /** * Call token text_success on success * * @param string $token token_handler Classname * @return string Returns token success string. */ public static function text_success($token){ $res = self::get($token); if(!\in_array($res['class'], self::$type_handlers)){ throw new \SYSTEM\LOG\ERROR('Token_handler class not known to Token class. Please register it first.');} return \call_user_func_array(array($res['class'], 'text_success'),array($res)); } /** * Call token text_fail on fail * * @param string $token token_handler Classname * @return string Returns token fail string. */ public static function text_fail($token){ $res = self::get($token); if(!\in_array($res['class'], self::$type_handlers)){ throw new \SYSTEM\LOG\ERROR('Token_handler class not known to Token class. Please register it first.');} return \call_user_func_array(array($res['class'], 'text_fail'),array($res)); } /** * Get a existing token from db * * @param string $token Token string * @return array Returns database entry for the given Token if it exists. */ public static function get($token){ return \SYSTEM\SQL\SYS_TOKEN_GET::Q1(array($token));} }