3 abstract class ForgeEvent extends Plugin {
5 function __construct() {
7 $this->name = "event" ;
8 $this->text = "event" ;
9 $this->_addHook('group_approve');
10 $this->_addHook('scm_admin_update');
11 $this->_addHook('site_admin_option_hook');
14 abstract function trigger_job($name);
16 function group_approve($params) {
17 return $this->trigger_job('create_scm_repos');
20 function scm_admin_update($params) {
21 return $this->trigger_job('create_scm_repos');
24 function site_admin_option_hook($params) {
25 $action = getStringFromRequest('action');
26 echo '<li><a name="jobs"></a>'.util_make_link('/admin/?action=listjobs#jobs', _('Jobs'))."\n";
27 if ($action == 'listjobs') {
29 echo '<li>'.util_make_link('/admin/?action=runjobs&job=create_scm_repos#jobs', _('Create SCM Repositories')).'</li>'."\n";
30 echo '<li>'.util_make_link('/admin/?action=runjobs&job=scm_update#jobs', _('Upgrade Forge Software')).'</li>'."\n";
34 if ($action == 'runjobs') {
35 $job = getStringFromRequest('job');
36 $job = util_ensure_value_in_set($job, array('create_scm_repos', 'scm_update'));
37 $this->trigger_job($job);
39 echo '<li><a name="version"></a>'.util_make_link('/admin/?action=version#version', _('Version'))."\n";
40 if ($action == 'version') {
42 if (is_dir("/opt/acosforge/.svn")) {
43 system("cd /opt/acosforge; svn info --config-dir /tmp 2>&1");
45 if (is_dir("/opt/acosforge/.git")) {
46 system("cd /opt/acosforge; git svn info 2>&1");
54 class PgForgeEvent extends ForgeEvent {
55 function trigger_job($name) {
56 return db_query_params("NOTIFY $name", array());
60 register_plugin (new PgForgeEvent) ;
62 $pm = plugin_manager_get_object() ;