/** * Gets hook handler class instance * * @param array $argv * @return AbstractHandler */ public static function &get_handler(array $argv) { $handler_name = self::hook_name_to_handler_class(isset($argv[1]) ? $argv[1] : ''); dbg::get_instance()->write('handler name: ' . $handler_name); if (class_exists($handler_name)) { unset($argv[0]); unset($argv[1]); $out = new $handler_name(array_values($argv)); } else { $out = null; } return $out; }
/** * Prepares commands list * * @return bool */ public function prepare() { $conf = SVNHooksConfig::get_instance(); $ex_str = sprintf("%s info %s -r %s 2>&1", $conf->svnlook, $this->repos, $this->rev); exec($ex_str, $out, $code); dbg::get_instance()->write('PostCommitHandler::prepare exec result: ' . $code); dbg::get_instance()->write('PostCommitHandler::prepare exec output: ' . var_export($out, true)); if ($code) { return false; } $this->revision_wrapper = new SVNRevisionWrapper($this->rev, $out); dbg::get_instance()->write('PostCommitHandler::prepare SVNRevisionWrapper: ' . var_export($this->revision_wrapper, true)); $this->commands[] = new CommandActiveUser($this->revision_wrapper->author); if (!$this->parse_comment_into_commands()) { return false; } return count($this->commands) > 1; }
/** * Send commands to flyspray * * @param string $url * @param string $cookie_file * @param string $data JSON encoded array of commands * @throws Exception */ private function transfer($url, $cookie_file, $data) { try { dbg::get_instance()->write("Commands to transfer:\r\n" . $data); $result = $this->send_request($url, $cookie_file, "commands={$data}"); dbg::get_instance()->write("transfer result:\r\n" . $result); } catch (Exception $exc) { dbg::get_instance()->write("AbstractHandler::transfer threw Exception"); throw $exc; } }
require_once 'classes/class.FSConfig.php'; require_once 'classes/class.SVNHooksConfig.php'; require_once 'classes/flyspray/class.FlySprayCommand.php'; require_once 'classes/class.SVNRevisionWrapper.php'; require_once 'classes/class.dbg.php'; require_once 'classes/class.SVNHooksHandlerFactory.php'; require_once 'classes/handlers/class.AbstractHandler.php'; require_once 'classes/handlers/class.PostCommitHandler.php'; require_once 'classes/flyspray/class.CommandAddVote.php'; require_once 'classes/flyspray/class.CommandAddUserToGroup.php'; require_once 'classes/flyspray/class.CommandCloseTask.php'; require_once 'classes/flyspray/class.CommandEditTask.php'; require_once 'classes/flyspray/class.CommandAssignToMe.php'; require_once 'classes/flyspray/class.FlySprayResponse.php'; require_once 'classes/flyspray/class.CommandActiveUser.php'; require_once 'classes/flyspray/class.CommandAddComment.php'; require_once 'classes/flyspray/class.CommandAddToAssignees.php'; require_once 'classes/flyspray/class.CommandAddNotification.php'; require_once 'classes/flyspray/class.CommandRemoveNotification.php'; if (!isset($argv)) { $argv = array(); } dbg::get_instance()->write('argv: ' . var_export($argv, true)); $handler = SVNHooksHandlerFactory::get_handler($argv); dbg::get_instance()->write('handler: ' . var_export($handler, true)); if (!is_null($handler)) { if ($handler->prepare()) { $handler->send(); } }