X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2FBarrel%2FEvents.php;fp=include%2FBarrel%2FEvents.php;h=5a20fed66ffe78f624f5a2f1fc4bc2967b265ed8;hb=51dda5825f66ced0a744d9e49159cedbe0fd5771;hp=0000000000000000000000000000000000000000;hpb=d67ed5a62c8c59e3a6e21248b214150af80789fd;p=diogenes.git diff --git a/include/Barrel/Events.php b/include/Barrel/Events.php new file mode 100644 index 0000000..5a20fed --- /dev/null +++ b/include/Barrel/Events.php @@ -0,0 +1,152 @@ +barrel = $barrel; + } + + + /** Filename transformations. + */ + function makeFileLoc($log_file, &$caller) + { + $homepage = $this->barrel->getPID(''); + if (stristr($log_file, '/') == FALSE ) { + // this is a directory + $mydir = $log_file; + $myfile = ''; + } else { + $myfile = basename($log_file); + $mydir = dirname($log_file); + } + + $myloc = $this->barrel->getLocation($mydir); + if ($myloc or ($mydir == $homepage)) + { + $log_file = $myloc ? "$myloc/$myfile" : $myfile; + $url_loc = $myloc ? "$myloc/" : ''; + $link = $caller->urlBarrel($this->barrel->alias, $this->barrel->vhost, $url_loc); + } else { + $link = ''; + } + + return array($log_file, $mydir, $myfile, $link); + } + + /** Retrieve recent events. + */ + function getEvents($caller) + { + global $globals; + $events = array(); + $res = $globals->db->query("select e.action,e.stamp,e.data,a.text,s.auth,s.uid " + ."from {$globals->table_log_events} as e " + ."left join {$globals->table_log_actions} as a on e.action=a.id " + ."left join {$globals->table_log_sessions} as s on e.session=s.id " + ."where e.data like '{$this->barrel->alias}:%' " + ."order by stamp desc limit 0,10"); + while ($myarr = mysql_fetch_array($res)) { + $myarr['author'] = call_user_func(array($globals->session,'getUsername'),$myarr['auth'],$myarr['uid']); + $myarr['flags'] = EVENT_FLAG_NONE; + list($op_alias, $op_file) = split(":",$myarr['data']); + + switch($myarr['text']) { + case "barrel_create": + $myarr['title'] = __("site created"); + $myarr['icon'] = $globals->icons->get_action_icon('add'); + break; + + case "barrel_options": + $myarr['title'] = __("barrel options"); + $myarr['icon'] = $globals->icons->get_action_icon('properties'); + break; + + case "barrel_plugins": + $myarr['title'] = __("barrel plugins"); + $myarr['icon'] = $globals->icons->get_action_icon('plugins'); + $myarr['link_admin'] = "plugins"; + break; + + case "page_create": + $myarr['title'] = __("page created"); + $myarr['icon'] = $globals->icons->get_action_icon('add'); + list($op_file, $myarr['dir'], $myarr['file'], $myarr['link']) = $this->makeFileLoc($op_file, $caller); + $myarr['link_admin'] = "pages?dir={$myarr['dir']}"; + $myarr['flags'] |= EVENT_FLAG_PUBLIC; + break; + + case "page_delete": + $myarr['title'] = __("page removed"); + $myarr['icon'] = $globals->icons->get_action_icon('remove'); + break; + + case "page_props": + $myarr['title'] = __("page properties"); + $myarr['icon'] = $globals->icons->get_action_icon('properties'); + list($op_file, $myarr['dir'], $myarr['file']) = $this->makeFileLoc($op_file, $caller); + $myarr['link_admin'] = "pages?dir={$myarr['dir']}"; + break; + + case "page_plugins": + $myarr['title'] = __("page plugins"); + $myarr['icon'] = $globals->icons->get_action_icon('plugins'); + list($op_file, $myarr['dir'], $myarr['file']) = $this->makeFileLoc($op_file, $caller); + $myarr['link_admin'] = "plugins?plug_page={$myarr['dir']}"; + break; + + case "rcs_commit": + $myarr['title'] = __("file updated"); + $myarr['icon'] = $globals->icons->get_action_icon('update'); + list($op_file, $myarr['dir'], $myarr['file'], $myarr['link']) = $this->makeFileLoc($op_file, $caller); + $myarr['link_admin'] = "files?action=revs&dir={$myarr['dir']}&target={$myarr['file']}"; + $myarr['flags'] |= EVENT_FLAG_PUBLIC; + + break; + + case "rcs_delete": + $myarr['title'] = __("file deleted"); + $myarr['icon'] = $globals->icons->get_action_icon('delete'); + list($op_file, $myarr['dir'], $myarr['file']) = $this->makeFileLoc($op_file, $caller); + break; + } + $myarr['opfile'] = $op_file; + + if (isset($myarr['title'])) + array_push($events, $myarr); + } + mysql_free_result($res); + return $events; + } +} + +?>