Compare commits
11 Commits
feature.is
...
feature.co
Author | SHA1 | Date | |
---|---|---|---|
|
945429abf0 | ||
|
a016bcb51b | ||
|
f2b1ce795c | ||
|
3a8c56acc4 | ||
|
7b2552f940 | ||
|
324b202215 | ||
|
2c2da6082a | ||
|
dd3fbbd7e4 | ||
|
9bbcd571ec | ||
|
d1bcdcda20 | ||
|
4879d64989 |
@@ -33,6 +33,8 @@ or newer to properly run this version of Indefero!
|
|||||||
ATTENTION: This needs Pluf 46b7f251 or newer!
|
ATTENTION: This needs Pluf 46b7f251 or newer!
|
||||||
- Fix the branch links users of the Subversion frontend get when they enter a wrong revision
|
- Fix the branch links users of the Subversion frontend get when they enter a wrong revision
|
||||||
and only display this list if there are any branches available for all SCMs
|
and only display this list if there are any branches available for all SCMs
|
||||||
|
- If git's author name is not encoded in an UTF-8 compatible encoding, skip the author lookup,
|
||||||
|
as we have no information what the author string is actually encoded in
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
@@ -59,6 +59,16 @@ class IDF_Plugin_SyncGit_Cron
|
|||||||
$out .= sprintf($template, $cmd, $key->login, $content)."\n";
|
$out .= sprintf($template, $cmd, $key->login, $content)."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$out = "# indefero start" . PHP_EOL . $out . "# indefero end" . PHP_EOL;
|
||||||
|
|
||||||
|
// We update only the part of the file between IDF_START / IDF_END comment
|
||||||
|
$original_keys = file_get_contents($authorized_keys);
|
||||||
|
if (strstr($original_keys, "# indefero start") && strstr($original_keys, "# indefero end")) {
|
||||||
|
$out = preg_replace('/(#\sindefero\sstart).+(#\sindefero\send\s\s?)/isU',
|
||||||
|
$out, $original_keys);
|
||||||
|
} else {
|
||||||
|
$out .= $original_keys;
|
||||||
|
}
|
||||||
file_put_contents($authorized_keys, $out, LOCK_EX);
|
file_put_contents($authorized_keys, $out, LOCK_EX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -152,15 +152,14 @@ class IDF_Project extends Pluf_Model
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
||||||
$query = <<<"QUERY"
|
$query = "SELECT uid AS id,COUNT(uid) AS nb
|
||||||
SELECT uid AS id,COUNT(uid) AS nb
|
|
||||||
FROM (
|
FROM (
|
||||||
SELECT COALESCE(owner, -1) AS uid
|
SELECT COALESCE(owner, -1) AS uid
|
||||||
FROM $sqlIssueTable
|
FROM $sqlIssueTable
|
||||||
WHERE status IN ($tags)
|
WHERE status IN ($tags)
|
||||||
) AS ff
|
) AS ff
|
||||||
GROUP BY uid
|
GROUP BY uid";
|
||||||
QUERY;
|
|
||||||
$db = Pluf::db();
|
$db = Pluf::db();
|
||||||
$dbData = $db->select($query);
|
$dbData = $db->select($query);
|
||||||
$ownerStatistics = array();
|
$ownerStatistics = array();
|
||||||
|
@@ -346,6 +346,14 @@ class IDF_Scm_Git extends IDF_Scm
|
|||||||
if (!preg_match('/<(.*)>/', $author, $match)) {
|
if (!preg_match('/<(.*)>/', $author, $match)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
// FIXME: newer git versions know a i18n.commitencoding setting which
|
||||||
|
// leads to another header, "encoding", with which we _could_ try to
|
||||||
|
// decode the string into utf8. Unfortunately this does not always
|
||||||
|
// work, especially not in older repos, so we would then still have
|
||||||
|
// to supply some fallback.
|
||||||
|
if (!mb_check_encoding($match[1], 'UTF-8')) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
$sql = new Pluf_SQL('login=%s', array($match[1]));
|
$sql = new Pluf_SQL('login=%s', array($match[1]));
|
||||||
$users = Pluf::factory('Pluf_User')->getList(array('filter'=>$sql->gen()));
|
$users = Pluf::factory('Pluf_User')->getList(array('filter'=>$sql->gen()));
|
||||||
if ($users->count() > 0) {
|
if ($users->count() > 0) {
|
||||||
|
@@ -150,7 +150,7 @@ class IDF_Upload extends Pluf_Model
|
|||||||
if ($this->id == '') {
|
if ($this->id == '') {
|
||||||
$this->creation_dtime = gmdate('Y-m-d H:i:s');
|
$this->creation_dtime = gmdate('Y-m-d H:i:s');
|
||||||
$this->modif_dtime = gmdate('Y-m-d H:i:s');
|
$this->modif_dtime = gmdate('Y-m-d H:i:s');
|
||||||
$this->md5 = md5_file (Pluf::f('upload_path') . '/' . $this->get_project()->shortname . '/files/' . $this->file);
|
$this->md5 = md5_file ($this->getFullPath());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,6 +167,11 @@ class IDF_Upload extends Pluf_Model
|
|||||||
return Pluf::f('url_upload').'/'.$project->shortname.'/files/'.$this->file;
|
return Pluf::f('url_upload').'/'.$project->shortname.'/files/'.$this->file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getFullPath()
|
||||||
|
{
|
||||||
|
return(Pluf::f('upload_path').'/'.$this->get_project()->shortname.'/files/'.$this->file);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We drop the information from the timeline.
|
* We drop the information from the timeline.
|
||||||
*/
|
*/
|
||||||
@@ -256,4 +261,4 @@ class IDF_Upload extends Pluf_Model
|
|||||||
}
|
}
|
||||||
Pluf_Translation::loadSetLocale($current_locale);
|
Pluf_Translation::loadSetLocale($current_locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -202,7 +202,11 @@ class IDF_Views_Download
|
|||||||
$prj->inOr404($upload);
|
$prj->inOr404($upload);
|
||||||
$upload->downloads += 1;
|
$upload->downloads += 1;
|
||||||
$upload->update();
|
$upload->update();
|
||||||
return new Pluf_HTTP_Response_Redirect($upload->getAbsoluteUrl($prj));
|
$path = $upload->getFullPath();
|
||||||
|
$mime = IDF_FileUtil::getMimeType($path);
|
||||||
|
$render = new Pluf_HTTP_Response_File($path, $mime[0]);
|
||||||
|
$render->headers["Content-MD5"] = $upload->md5;
|
||||||
|
return $render;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -747,7 +747,13 @@ class IDF_Views_Issue
|
|||||||
else {
|
else {
|
||||||
// ID-based search
|
// ID-based search
|
||||||
if (is_numeric($query)) {
|
if (is_numeric($query)) {
|
||||||
$sql = new Pluf_SQL('project=%s AND id LIKE %s', array($prj->id, $query.'%'));
|
$sql = 'project=%s AND CAST(id AS VARCHAR) LIKE %s';
|
||||||
|
// MySQL can't cast to VARCHAR and a CAST to CHAR converts
|
||||||
|
// the whole number, not just the first digit
|
||||||
|
if (strtolower(Pluf::f('db_engine')) == 'mysql') {
|
||||||
|
$sql = 'project=%s AND CAST(id AS CHAR) LIKE %s';
|
||||||
|
}
|
||||||
|
$sql = new Pluf_SQL($sql, array($prj->id, $query.'%'));
|
||||||
$tmp = Pluf::factory('IDF_Issue')->getList(array(
|
$tmp = Pluf::factory('IDF_Issue')->getList(array(
|
||||||
'filter' => $sql->gen(),
|
'filter' => $sql->gen(),
|
||||||
'order' => 'id ASC'
|
'order' => 'id ASC'
|
||||||
|
@@ -10,12 +10,22 @@
|
|||||||
{if $attachments.count() > 0}
|
{if $attachments.count() > 0}
|
||||||
<hr align="left" class="attach" />
|
<hr align="left" class="attach" />
|
||||||
<ul>
|
<ul>
|
||||||
{foreach $attachments as $a}<li><a href="{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}">{$a.filename}</a> - {$a.filesize|ssize}</li>{/foreach}
|
{foreach $attachments as $a}<li><a href="{url 'IDF_Views_Issue::viewAttachment', array($project.shortname, $a.id, $a.filename)}">{$a.filename}</a> - {$a.filesize|ssize}</li>{/foreach}
|
||||||
</ul>{/if}
|
</ul>{/if}
|
||||||
{if $c.changes}
|
{if $c.changes}
|
||||||
{foreach $c.changes as $w => $v}
|
{foreach $c.changes as $w => $v}
|
||||||
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}</strong> {if $w == 'lb'}{assign $l = implode(', ', $v)}{$l}{else}{$v}{/if}<br />
|
<strong>{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}{if $w == 'rel'}{trans 'Relations:'}{/if}</strong>
|
||||||
|
{if $w == 'lb' or $w == 'rel'}
|
||||||
|
{foreach $v as $t => $ls}
|
||||||
|
{foreach $ls as $l}
|
||||||
|
{if $t == 'rem'}<s>{/if}{$l}{if $t == 'rem'}</s>{/if}
|
||||||
|
{/foreach}
|
||||||
|
{/foreach}
|
||||||
|
{else}
|
||||||
|
{$v}
|
||||||
|
{/if}<br />
|
||||||
{/foreach}
|
{/foreach}
|
||||||
{/if}
|
{/if}
|
||||||
</div></content>
|
</div></content>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
{if strlen($c.content) > 0}{$c.content|safe}{/if}{if $c.changedIssue()}
|
{if strlen($c.content) > 0}{$c.content|safe}{/if}{if $c.changedIssue()}
|
||||||
{foreach $c.changes as $w => $v}
|
{foreach $c.changes as $w => $v}
|
||||||
{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if} {if $w == 'lb'}{assign $l = implode(', ', $v)}{$l}{else}{$v}{/if}{/foreach}{/if}{assign $attachments = $c.get_attachment_list()}{if $attachments.count() > 0}
|
{if $w == 'su'}{trans 'Summary:'}{/if}{if $w == 'st'}{trans 'Status:'}{/if}{if $w == 'ow'}{trans 'Owner:'}{/if}{if $w == 'lb'}{trans 'Labels:'}{/if}{if $w == 'rel'}{trans 'Relations:'}{/if} {if $w == 'lb' or $w == 'rel'}{foreach $v as $t => $ls}{foreach $ls as $l}{if $t == 'rem'}-{/if}{$l} {/foreach}{/foreach}{else}{$v}{/if}{/foreach}{/if}{assign $attachments = $c.get_attachment_list()}{if $attachments.count() > 0}
|
||||||
|
|
||||||
{trans 'Attachments:'}{foreach $attachments as $a}
|
{trans 'Attachments:'}{foreach $attachments as $a}
|
||||||
- {$a.filename|safe} - {$a.filesize|ssize}
|
- {$a.filename|safe} - {$a.filesize|ssize}
|
||||||
|
@@ -625,6 +625,7 @@ END;
|
|||||||
'additions' => array('new_dir', 'new_dir/new_file'),
|
'additions' => array('new_dir', 'new_dir/new_file'),
|
||||||
'deletions' => array('old_dir', 'old_dir/old_file'),
|
'deletions' => array('old_dir', 'old_dir/old_file'),
|
||||||
'renames' => array('dir_with_old_name' => 'new_dir/dir_with_new_name'),
|
'renames' => array('dir_with_old_name' => 'new_dir/dir_with_new_name'),
|
||||||
|
'copies' => array(), // this is always empty
|
||||||
'patches' => array('existing_file'),
|
'patches' => array('existing_file'),
|
||||||
'properties' => array(
|
'properties' => array(
|
||||||
'new_dir/dir_with_new_name' => array(
|
'new_dir/dir_with_new_name' => array(
|
||||||
|
Reference in New Issue
Block a user