+ function activity($params) {
+ global $last_user, $last_time, $last_tag, $time_ok, $start_time, $end_time,
+ $adds, $deletes, $updates, $commits, $date_key,
+ $usr_adds, $usr_deletes, $usr_updates,
+ $messages, $last_message, $times;
+ $group_id = $params['group'];
+ $project = group_get_object($group_id);
+ if (! $project->usesPlugin($this->name)) {
+ return false;
+ }
+
+ if (in_array('scm', $params['show'])) {
+ $start_time = $params['begin'];
+ $end_time = $params['end'];
+ $d1 = date('Y-m-d', $start_time - 80000);
+ $d2 = date('Y-m-d', $end_time + 80000);
+
+ $repo = forge_get_config('repos_path', 'scmsvn') . '/' . $project->getUnixName();
+ $pipe = popen("svn log file://$repo --xml -v -r '".'{'.$d2.'}:{'.$d1.'}'."' 2> /dev/null", 'r' );
+ $xml_parser = xml_parser_create();
+ xml_set_element_handler($xml_parser, "SVNPluginStartElement", "SVNPluginEndElement");
+ xml_set_character_data_handler($xml_parser, "SVNPluginCharData");
+ while (!feof($pipe) && $data = fgets($pipe, 4096)) {
+ if (!xml_parse($xml_parser, $data, feof ($pipe))) {
+ debug("Unable to parse XML with error " .
+ xml_error_string(xml_get_error_code($xml_parser)) .
+ " on line " .
+ xml_get_current_line_number($xml_parser));
+ return false;
+ break;
+ }
+ }
+ xml_parser_free($xml_parser);
+ if ($adds > 0 || $updates > 0) {
+ $i = 0;
+ foreach ($messages as $message) {
+ $result = array();
+ $result['section'] = 'scm';
+ $result['group_id'] = $group_id;
+ $result['ref_id'] = 'viewvc.php/?root='.$project->getUnixName();
+ $result['description'] = $message;
+ $result['realname'] = '';
+ $result['activity_date'] = $times[$i];
+ $result['subref_id'] = 0;
+ $params['results'][] = $result;
+ $i++;
+ }
+ }
+ }
+ $params['ids'][] = 'scm';
+ $params['texts'][] = _('SCM SVN Commits');
+ return true;
+ }
+