Add option to clone filters on project duplication
* Fixed missing metadata option from project "create from" * Added option to clone project custom filters * Added append option to custom field tests * Added a test that uses the "append" option * Fixed disabled swimlane duplication error with Postgresql
This commit is contained in:
committed by
Frédéric Guillot
parent
d3be738d4f
commit
c250f3b1b8
@@ -101,4 +101,39 @@ class CustomFilterModel extends Base
|
||||
{
|
||||
return $this->db->table(self::TABLE)->eq('id', $filter_id)->remove();
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplicate custom filters from a project to another one, must be executed inside a transaction
|
||||
*
|
||||
* @param integer $src_project_id Source project id
|
||||
* @param integer $dst_project_id Destination project id
|
||||
* @return boolean
|
||||
*/
|
||||
public function duplicate($src_project_id, $dst_project_id)
|
||||
{
|
||||
$filters = $this->db
|
||||
->table(self::TABLE)
|
||||
->columns(
|
||||
self::TABLE.'.user_id',
|
||||
self::TABLE.'.filter',
|
||||
self::TABLE.'.name',
|
||||
self::TABLE.'.is_shared',
|
||||
self::TABLE.'.append'
|
||||
)
|
||||
->eq('project_id', $src_project_id)
|
||||
->findAll();
|
||||
|
||||
foreach ($filters as $filter) {
|
||||
$filter['project_id'] = $dst_project_id;
|
||||
// Avoid SQL error with Postgres
|
||||
$filter['is_shared'] = $filter['is_shared'] ?: 0;
|
||||
$filter['append'] = $filter['append'] ?: 0;
|
||||
|
||||
if (! $this->db->table(self::TABLE)->save($filter)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user