* Copyright 2004, GForge, LLC
* Copyright 2010, Alain Peyrat <aljeux@free.fr>
* Copyright 2012-2013, Franck Villaume - TrivialDev
+ * Copyright 2013, French Ministry of National Education
*
* This file is part of FusionForge.
*
$repo = forge_get_config('repos_path', 'scmsvn') . '/' . $project->getUnixName();
if (!is_dir ($repo) || !is_file ("$repo/format")) {
- if (!mkdir($repo, 0700)) {
+ if (!mkdir($repo, 0700, true)) {
return false;
}
$ret = 0;
$unix_group = 'scm_' . $project->getUnixName() ;
system ("find $repo -type d | xargs -I{} chmod g+s {}") ;
if ($project->enableAnonSCM()) {
- system ("chmod -R g+wX,o+rX-w $repo") ;
+ system ("chmod -R g+rwX,o+rX-w $repo") ;
} else {
- system ("chmod -R g+wX,o-rwx $repo") ;
+ system ("chmod -R g+rwX,o-rwx $repo") ;
}
system ("chgrp -R $unix_group $repo") ;
} else {
system("chgrp $unix_group $repo");
}
if ($project->enableAnonSCM()) {
- system("chmod g+wX,o+rX-w $repo") ;
+ system("chmod g+rwX,o+rX-w $repo") ;
} else {
- system("chmod g+wX,o-rwx $repo") ;
+ system("chmod g+rwX,o-rwx $repo") ;
}
} else {
$unix_user = forge_get_config('apache_user');
$repo = forge_get_config('repos_path', 'scmsvn') . '/' . $project->getUnixName();
if (!is_dir ($repo) || !is_file ("$repo/format")) {
- echo "No repository\n";
+ echo "No repository $repo\n";
db_rollback();
return false;
}
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, $revisions;
+ $usr_adds, $usr_deletes, $usr_updates, $old_commit,
+ $messages, $last_message, $times, $revisions, $users;
$group_id = $params['group'];
$project = group_get_object($group_id);
if (! $project->usesPlugin($this->name)) {
}
if (in_array('scmsvn', $params['show']) || (count($params['show']) < 1)) {
+ $commits = 0;
+ $old_commit = -1;
$start_time = $params['begin'];
$end_time = $params['end'];
$d1 = date('Y-m-d', $start_time - 80000);
$result['group_id'] = $group_id;
$result['ref_id'] = 'viewvc.php/?root='.$project->getUnixName();
$result['description'] = $message.' (r'.$revisions[$i].')';
- $result['realname'] = '';
+ $result['user_name'] = $users[$i];
+ $userObject = user_get_object_by_name($users[$i]);
+ if (is_a($userObject, 'GFUser')) {
+ $result['realname'] = $userObject->getFirstName().' '.$userObject->getLastName();
+ $result['user_id'] = $userObject->getId();
+ } else {
+ $result['realname'] = '';
+ $result['user_id'] = '';
+ }
$result['activity_date'] = $times[$i];
$result['subref_id'] = '&view=rev&revision='.$revisions[$i];
$params['results'][] = $result;
// End of class, helper functions now
function SVNPluginCharData($parser, $chars) {
- global $last_tag, $last_user, $last_time, $start_time, $end_time,
- $time_ok, $user_list, $last_message, $messages, $times;
+ global $last_tag, $last_user, $last_time, $start_time, $end_time, $old_commit, $commits,
+ $time_ok, $user_list, $last_message, $messages, $times, $users;
switch ($last_tag) {
case "AUTHOR": {
$last_user = preg_replace('/[^a-z0-9_-]/', '', strtolower(trim($chars)));
+ $users[] = $last_user;
break;
}
case "DATE": {
break;
}
case "MSG": {
- $messages[] = $chars;
+ /* If commit id is the same, then concatenate the string with the previous
++ * (happen when the message contain accents).
++ */
+ if ($old_commit == $commits) {
+ $messages[count($messages)-1] .= $chars;
+ } else {
+ $messages[] = $chars;
+ }
+ $old_commit = $commits;
break;
}
}