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!
|
||||
- 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
|
||||
- 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
|
||||
|
||||
|
@@ -59,6 +59,16 @@ class IDF_Plugin_SyncGit_Cron
|
||||
$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);
|
||||
}
|
||||
|
||||
|
@@ -152,15 +152,14 @@ class IDF_Project extends Pluf_Model
|
||||
break;
|
||||
}
|
||||
$sqlIssueTable = Pluf::factory('IDF_Issue')->getSqlTable();
|
||||
$query = <<<"QUERY"
|
||||
SELECT uid AS id,COUNT(uid) AS nb
|
||||
$query = "SELECT uid AS id,COUNT(uid) AS nb
|
||||
FROM (
|
||||
SELECT COALESCE(owner, -1) AS uid
|
||||
FROM $sqlIssueTable
|
||||
WHERE status IN ($tags)
|
||||
) AS ff
|
||||
GROUP BY uid
|
||||
QUERY;
|
||||
GROUP BY uid";
|
||||
|
||||
$db = Pluf::db();
|
||||
$dbData = $db->select($query);
|
||||
$ownerStatistics = array();
|
||||
|
@@ -346,6 +346,14 @@ class IDF_Scm_Git extends IDF_Scm
|
||||
if (!preg_match('/<(.*)>/', $author, $match)) {
|
||||
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]));
|
||||
$users = Pluf::factory('Pluf_User')->getList(array('filter'=>$sql->gen()));
|
||||
if ($users->count() > 0) {
|
||||
|
@@ -150,7 +150,7 @@ class IDF_Upload extends Pluf_Model
|
||||
if ($this->id == '') {
|
||||
$this->creation_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;
|
||||
}
|
||||
|
||||
function getFullPath()
|
||||
{
|
||||
return(Pluf::f('upload_path').'/'.$this->get_project()->shortname.'/files/'.$this->file);
|
||||
}
|
||||
|
||||
/**
|
||||
* We drop the information from the timeline.
|
||||
*/
|
||||
|
@@ -202,7 +202,11 @@ class IDF_Views_Download
|
||||
$prj->inOr404($upload);
|
||||
$upload->downloads += 1;
|
||||
$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 {
|
||||
// ID-based search
|
||||
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(
|
||||
'filter' => $sql->gen(),
|
||||
'order' => 'id ASC'
|
||||
|
@@ -14,8 +14,18 @@
|
||||
</ul>{/if}
|
||||
{if $c.changes}
|
||||
{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}
|
||||
{/if}
|
||||
</div></content>
|
||||
</entry>
|
||||
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
{if strlen($c.content) > 0}{$c.content|safe}{/if}{if $c.changedIssue()}
|
||||
{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}
|
||||
- {$a.filename|safe} - {$a.filesize|ssize}
|
||||
|
@@ -625,6 +625,7 @@ END;
|
||||
'additions' => array('new_dir', 'new_dir/new_file'),
|
||||
'deletions' => array('old_dir', 'old_dir/old_file'),
|
||||
'renames' => array('dir_with_old_name' => 'new_dir/dir_with_new_name'),
|
||||
'copies' => array(), // this is always empty
|
||||
'patches' => array('existing_file'),
|
||||
'properties' => array(
|
||||
'new_dir/dir_with_new_name' => array(
|
||||
|
Reference in New Issue
Block a user