This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".
The branch, master has been updated
via f737f582ed96ef2d325f2428a93ecbe383b1faaf (commit)
via 2f857c02e77563b0147f76e38ea73a63f736b05f (commit)
from 5f09ddc1cba8f62d49a68cf3ceac2cf0e061d982 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=f737f582ed96ef2d325f2428a93ecbe383b1faaf
commit f737f582ed96ef2d325f2428a93ecbe383b1faaf
Author: Franck Villaume <[email protected]>
Date: Mon May 29 20:17:16 2017 +0200
forge cli: start releaseImport, activate frsImport in groupImport, adjust
role accordingly
diff --git a/src/bin/forge b/src/bin/forge
index 6c823ad..8aa8e86 100755
--- a/src/bin/forge
+++ b/src/bin/forge
@@ -601,7 +601,14 @@ class CliActions {
if
(isset($stream['setup']['data_array']['use_frs'])) {
$new_group->setUseFRS($stream['setup']['data_array']['use_frs']);
if ($new_group->usesFRS() &&
isset($stream['frs'])) {
- //TODO: do the
injection :-)
+ $filename =
'frsDump-'.$stream['setup']['data_array']['group_id'].'.'.$format;
+
$this->createSubfile($filename, $stream['frs'], $format);
+ if
(!$this->frsImport($filename, $format)) {
+ echo _('Unable
to inject FRS')."\n";
+ db_rollback();
+ return false;
+ }
+ @unlink($filename);
}
} else {
$new_group->setUseFRS(false);
@@ -686,11 +693,11 @@ class CliActions {
case
'new_pm':
$perms[$key][$this->getMappingId($stream['setup']['data_array']['group_id'],
'group')] = current($value);
break;
-// case
'frs':
-//
foreach ($value as $frsp_key => $frsp_val) {
-//
$perms[$key][$this->getMappingId($frsp_key, 'package')] = $frsp_val;
-//
}
-//
break;
+ case
'frs':
+
foreach ($value as $frsp_key => $frsp_val) {
+
$perms[$key][$this->getMappingId($frsp_key, 'package')] = $frsp_val;
+
}
+
break;
// case
'forum':
//
foreach ($value as $fr_key => $fr_val) {
//
$perms[$key][$this->getMappingId($fr_key, 'forum')] = $fr_val;
@@ -1449,6 +1456,7 @@ class CliActions {
db_rollback();
return false;
}
+
$importRefMapping['package'][$stream['data_array']['package_id']] =
$frsp->getID();
if (isset($stream['package_releases']) &&
is_array($stream['package_releases'])) {
foreach ($stream['package_releases'] as
$prelease) {
$filename =
'releaseDump-'.$prelease['data_array']['release_id'].'.'.$format;
@@ -1462,6 +1470,8 @@ class CliActions {
}
}
db_commit();
+ echo _('Package injected')."\n";
+ return true;
} else {
echo _('Unable to get project to inject package')._(':
').$group_id."\n";
return false;
@@ -1488,7 +1498,44 @@ class CliActions {
if (!$stream) {
return false;
}
- return true;
+ $package_id =
$this->getMappingId($stream['data_array']['package_id'], 'package');
+ $frsp = frspackage_get_object($package_id);
+ if ($frsp && is_object($frsp) && !$frsp->isError()) {
+ db_begin();
+ $frsr = new FRSRelease($frsp);
+ $importData['nopermcheck'] = 1;
+ if (isset($stream['data_array']['release_date'])) {
+ $importData['time'] =
$stream['data_array']['release_date'];
+ }
+ if (isset($stream['data_array']['released_by'])) {
+ $importData['user'] =
$this->getMappingId($stream['data_array']['released_by'], 'user');
+ }
+ if (isset($stream['data_array']['preformatted'])) {
+ $preformatted =
$stream['data_array']['preformatted'];
+ } else {
+ $preformatted = 0;
+ }
+ if (isset($stream['data_array']['status_id'])) {
+ $status_id = $stream['data_array']['status_id'];
+ } else {
+ $status_id = 1;
+ }
+ if (!$frsr->create($stream['data_array']['name'],
$stream['data_array']['notes'], $stream['data_array']['changes'],
$preformatted, false, $status_id, $importData)) {
+ echo $frsr->getErrorMessage()."\n";
+ db_rollback();
+ return false;
+ }
+ if (isset($stream['release_files']) &&
is_array($stream['release_files'])) {
+ foreach ($stream['release_files'] as $rfile) {
+ echo 'TODO: support files'."\n";
+ }
+ }
+ db_commit();
+ echo _('Release injected')."\n";
+ return true;
+ } else {
+ echo _('Unable to get package to inject release')._(':
').$package_id."\n";
+ }
}
function pmDump($projectgroupid, $format = 'json') {
diff --git a/src/common/frs/FRSRelease.class.php
b/src/common/frs/FRSRelease.class.php
index 525c8e7..0d8bac3 100644
--- a/src/common/frs/FRSRelease.class.php
+++ b/src/common/frs/FRSRelease.class.php
@@ -133,9 +133,11 @@ class FRSRelease extends FFObject {
* @param string $changes The change log for the release.
* @param int $preformatted Whether the notes/log are
preformatted with \n chars (1) true (0) false.
* @param int $release_date The unix date of the release.
+ * @param array $importData Array of data to change
creator, time of creation, bypass permission check and do not send notification
like:
+ * array('user' => 127, 'time' =>
1234556789, 'nopermcheck' => 1, 'nonotice' => 1)
* @return boolean success.
*/
- function create($name, $notes, $changes, $preformatted, $release_date =
false) {
+ function create($name, $notes, $changes, $preformatted, $release_date =
false, $status_id = 1, $importData = array()) {
if (strlen($name) < 3) {
$this->setError(_('FRSRelease Name Must Be At Least 3
Characters'));
return false;
@@ -147,13 +149,25 @@ class FRSRelease extends FFObject {
$preformatted = 0;
}
- if (!forge_check_perm('frs', $this->FRSPackage->getID(),
'release')) {
- $this->setPermissionDeniedError();
- return false;
+ if (isset($importData['user'])) {
+ $userid = $importData['user'];
+ } else {
+ $userid = user_getid();
+ }
+
+ if (!isset($importData['nopermcheck']) ||
(isset($importData['nopermcheck']) && !$importData['nopermcheck'])) {
+ if
(!forge_check_perm_for_user(user_get_object($userid), 'frs',
$this->FRSPackage->getID(), 'release')) {
+ $this->setPermissionDeniedError();
+ return false;
+ }
}
- if (!$release_date) {
- $release_date=time();
+ if (!$release_date || !isset($importData['time'])) {
+ $release_date = time();
+ } else {
+ if (isset($importData['time'])) {
+ $release_date = $importData['time'];
+ }
}
$res = db_query_params('SELECT * FROM frs_release WHERE
package_id=$1 AND name=$2',
array ($this->FRSPackage->getID(),
@@ -171,8 +185,8 @@ class FRSRelease extends FFObject {
$preformatted,
htmlspecialchars($name),
$release_date,
- user_getid(),
- 1));
+ $userid,
+ $status_id));
if (!$result) {
$this->setError(_('Error Adding Release: ').db_error());
db_rollback();
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=2f857c02e77563b0147f76e38ea73a63f736b05f
commit 2f857c02e77563b0147f76e38ea73a63f736b05f
Author: Franck Villaume <[email protected]>
Date: Mon May 29 14:06:40 2017 +0200
forge cli: implement packageImport
diff --git a/src/bin/forge b/src/bin/forge
index a4e5f46..6c823ad 100755
--- a/src/bin/forge
+++ b/src/bin/forge
@@ -1439,7 +1439,33 @@ class CliActions {
if (!$stream) {
return false;
}
- return true;
+ $group_id =
$this->getMappingId($stream['data_array']['group_id'], 'group');
+ $group = group_get_object($group_id);
+ if ($group && is_object($group) && !$group->isError() &&
$group->usesFRS()) {
+ db_begin();
+ $frsp = new FRSPackage($group);
+ if (!$frsp->create($stream['data_array']['name'],
$stream['data_array']['status_id'])) {
+ echo $frsp->getErrorMessage()."\n";
+ db_rollback();
+ return false;
+ }
+ if (isset($stream['package_releases']) &&
is_array($stream['package_releases'])) {
+ foreach ($stream['package_releases'] as
$prelease) {
+ $filename =
'releaseDump-'.$prelease['data_array']['release_id'].'.'.$format;
+ $this->createSubfile($filename,
$prelease, $format);
+ if (!$this->releaseImport($filename,
$format)) {
+ echo _('Unable to inject
release')."\n";
+ db_rollback();
+ return false;
+ }
+ @unlink($filename);
+ }
+ }
+ db_commit();
+ } else {
+ echo _('Unable to get project to inject package')._(':
').$group_id."\n";
+ return false;
+ }
}
function releaseDump($releaseid, $format = 'json') {
diff --git a/src/common/frs/FRSPackage.class.php
b/src/common/frs/FRSPackage.class.php
index ab93f33..e09aa02 100644
--- a/src/common/frs/FRSPackage.class.php
+++ b/src/common/frs/FRSPackage.class.php
@@ -146,10 +146,11 @@ class FRSPackage extends FFError {
/**
* create - create a new FRSPackage in the database.
*
- * @param $name
+ * @param string $name Name of the package
+ * @param int $status Status ID. Default is 1 => Active
* @return boolean success.
*/
- function create($name) {
+ function create($name, $status = 1) {
if (strlen($name) < 3) {
$this->setError(_('FRSPackage Name Must Be At Least 3
Characters'));
return false;
@@ -162,7 +163,7 @@ class FRSPackage extends FFError {
return false;
}
- $res = db_query_params('SELECT * FROM frs_package WHERE
group_id=$1 AND name=$2',
+ $res = db_query_params('SELECT * FROM frs_package WHERE
group_id = $1 AND name = $2',
array($this->Group->getID(),
htmlspecialchars($name)));
if (db_numrows($res)) {
@@ -174,7 +175,7 @@ class FRSPackage extends FFError {
$result = db_query_params('INSERT INTO frs_package(group_id,
name, status_id) VALUES ($1, $2, $3)',
array($this->Group->getID(),
htmlspecialchars($name),
- 1));
+ $status));
if (!$result) {
$this->setError(_('Error Adding Package')._(':
').db_error());
db_rollback();
@@ -216,7 +217,7 @@ class FRSPackage extends FFError {
* @return boolean success.
*/
function fetchData($package_id) {
- $res = db_query_params('SELECT * FROM frs_package WHERE
package_id=$1 AND group_id=$2',
+ $res = db_query_params('SELECT * FROM frs_package WHERE
package_id = $1 AND group_id = $2',
array($package_id,
$this->Group->getID()));
if (!$res || db_numrows($res) < 1) {
$this->setError(_('Invalid package_id'));
-----------------------------------------------------------------------
Summary of changes:
src/bin/forge | 89 +++++++++++++++++++++++++++++++++----
src/common/frs/FRSPackage.class.php | 11 ++---
src/common/frs/FRSRelease.class.php | 30 +++++++++----
3 files changed, 109 insertions(+), 21 deletions(-)
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits