File: forge_events.php

package info (click to toggle)
fusionforge 5.3.2%2B20141104-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 60,472 kB
  • sloc: php: 271,846; sql: 36,817; python: 14,575; perl: 6,406; sh: 5,980; xml: 4,294; pascal: 1,411; makefile: 911; cpp: 52; awk: 27
file content (63 lines) | stat: -rw-r--r-- 1,831 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php

abstract class ForgeEvent extends Plugin {

	function __construct() {
		$this->Plugin() ;
		$this->name = "event" ;
		$this->text = "event" ;
		$this->_addHook('group_approve');
		$this->_addHook('scm_admin_update');
		$this->_addHook('site_admin_option_hook');
	}

	abstract function trigger_job($name);

	function group_approve($params) {
		return $this->trigger_job('create_scm_repos');
	}

	function scm_admin_update($params) {
		return $this->trigger_job('create_scm_repos');
	}

	function site_admin_option_hook($params) {
		$action = getStringFromRequest('action');
		echo '<li><a name="jobs"></a>'.util_make_link('/admin/?action=listjobs#jobs', _('Jobs'))."\n";
		if ($action == 'listjobs') {
			echo '<ul>';
			echo '<li>'.util_make_link('/admin/?action=runjobs&amp;job=create_scm_repos#jobs', _('Create SCM Repositories')).'</li>'."\n";
			echo '<li>'.util_make_link('/admin/?action=runjobs&amp;job=scm_update#jobs', _('Upgrade Forge Software')).'</li>'."\n";
			echo '</ul>';
		}
		echo '</li>';
		if ($action == 'runjobs') {
			$job = getStringFromRequest('job');
			$job = util_ensure_value_in_set($job, array('create_scm_repos', 'scm_update'));
			$this->trigger_job($job);
		}
		echo '<li><a name="version"></a>'.util_make_link('/admin/?action=version#version', _('Version'))."\n";
		if ($action == 'version') {
			echo '<pre>';
			if (is_dir("/opt/acosforge/.svn")) {
				system("cd /opt/acosforge; svn info --config-dir /tmp 2>&1");
			}
			if (is_dir("/opt/acosforge/.git")) {
				system("cd /opt/acosforge; git svn info 2>&1");
			}
			echo '</pre>'."\n";
		}
		echo '</li>';
	}
}

class PgForgeEvent extends ForgeEvent {
	function trigger_job($name) {
		return db_query_params("NOTIFY $name", array());
	}
}

register_plugin (new PgForgeEvent) ;

$pm = plugin_manager_get_object() ;
$pm->SetupHooks () ;