Merge branch 'master' of bitbucket.org:colosa/processmaker

This commit is contained in:
Daniel Rojas
2014-03-10 14:08:04 -04:00
22 changed files with 600 additions and 124 deletions

View File

@@ -48,8 +48,8 @@ class Department
$criteria->add( DepartmentPeer::DEP_UID, $dep_uid, \Criteria::EQUAL );
$con = \Propel::getConnection( DepartmentPeer::DATABASE_NAME );
$objects = DepartmentPeer::doSelect( $criteria, $con );
$oUsers = new \Users();
global $RBAC;
$node = array ();
foreach ($objects as $oDepartment) {
$node['DEP_UID'] = $oDepartment->getDepUid();
@@ -62,7 +62,7 @@ class Department
$manager = $oDepartment->getDepManager();
if ($manager != '') {
$UserUID = $RBAC->load( $manager );
$UserUID = $oUsers->load($manager);
$node['DEP_MANAGER_USERNAME'] = isset( $UserUID['USR_USERNAME'] ) ? $UserUID['USR_USERNAME'] : '';
$node['DEP_MANAGER_FIRSTNAME'] = isset( $UserUID['USR_FIRSTNAME'] ) ? $UserUID['USR_FIRSTNAME'] : '';
$node['DEP_MANAGER_LASTNAME'] = isset( $UserUID['USR_LASTNAME'] ) ? $UserUID['USR_LASTNAME'] : '';
@@ -110,7 +110,7 @@ class Department
if (isset($dep_data['DEP_PARENT']) && $dep_data['DEP_PARENT'] != '') {
Validator::depUid($dep_data['DEP_PARENT'], 'dep_parent');
}
if (isset($dep_data['DEP_MANAGER']) && $dep_data['DEP_PARENT'] != '') {
if (isset($dep_data['DEP_MANAGER']) && $dep_data['DEP_MANAGER'] != '') {
Validator::usrUid($dep_data['DEP_MANAGER'], 'dep_manager');
}
if (isset($dep_data['DEP_STATUS'])) {

View File

@@ -0,0 +1,99 @@
<?php
namespace ProcessMaker\Importer;
abstract class Importer
{
protected $filename = "";
protected $saveDir = "";
const IMPORT_OPTION_OVERWRITE = "OVERWRITE_PROJECT";
const IMPORT_OPTION_DISABLE_AND_CREATE_NEW = "DISABLE_AND_CREATE_NEW_PROJECT";
const IMPORT_OPTION_CREATE_NEW = "CREATE_NEW_PROJECT";
/**
* Success, Project imported successfully.
*/
const IMPORT_STAT_SUCCESS = 100;
/**
* Error, Target Project already exists.
*/
const IMPORT_STAT_TARGET_ALREADY_EXISTS = 101;
/**
* Error, Invalid file type or the file have corrupt data.
*/
const IMPORT_STAT_INVALID_SOURCE_FILE = 102;
public abstract function import();
public abstract function validateSource();
public abstract function targetExists();
public function setSaveDir($dirName)
{
$this->saveDir = rtrim($dirName, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
}
public function getSaveDir()
{
if (empty($this->saveDir)) {
$this->saveDir = sys_get_temp_dir() . DIRECTORY_SEPARATOR;
}
return $this->saveDir;
}
public function setSourceFile($filename)
{
$this->filename = $filename;
}
public function setSourceFromGlobals($varName)
{
/*[PROCESS_FILENAME] => Array
(
[name] => sample29.pm
[type] => application/pm
[tmp_name] => /tmp/phpvHpCVO
[error] => 0
[size] => 1260881
)*/
if (! array_key_exists($varName, $_FILES)) {
throw new \Exception("Couldn't find specified source \"$varName\" in PHP Globals");
}
$data = $_FILES[$varName];
if ($data["error"] != 0){
throw new \Exception("Error while uploading file. Error code: {$data["error"]}");
}
$this->filename = $this->getSaveDir() . $data["name"];
$oldUmask = umask(0);
move_uploaded_file($data["tmp_name"], $this->filename);
@chmod($this->filename, 0755);
umask($oldUmask);
}
public function prepare()
{
if ($this->validateSource() === false) {
throw new \Exception(
"Error, Invalid file type or the file have corrupt data",
self::IMPORT_STAT_INVALID_SOURCE_FILE
);
}
if ($this->targetExists()) {
throw new \Exception(sprintf(
"Project already exists, you need set an action to continue. " .
"Avaliable actions: [%s|%s|%s].", self::IMPORT_OPTION_CREATE_NEW,
self::IMPORT_OPTION_OVERWRITE, self::IMPORT_OPTION_DISABLE_AND_CREATE_NEW
), self::IMPORT_STAT_TARGET_ALREADY_EXISTS);
}
return self::IMPORT_STAT_SUCCESS;
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace ProcessMaker\Importer;
class WorkflowImporter extends Importer
{
public function validateSource()
{
return true;
}
public function targetExists()
{
return false;
}
public function import($option = self::IMPORT_OPTION_CREATE_NEW)
{
switch ($option) {
case self::IMPORT_OPTION_CREATE_NEW:
$this->prepare();
$this->createNewProject();
break;
case self::IMPORT_OPTION_DISABLE_AND_CREATE_NEW:
break;
case self::IMPORT_OPTION_OVERWRITE:
break;
}
}
public function createNewProject()
{
}
public function updateProject()
{
}
public function disableCurrentProject()
{
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace ProcessMaker\Importer;
class XmlImporter
{
public $filename = "";
public function setSourceFile($filename)
{
$this->filename = $filename;
}
public function import()
{
}
}

View File

@@ -16,10 +16,94 @@ if (!class_exists("Propel")) {
*/
class DepartmentTest extends \PHPUnit_Framework_TestCase
{
public function testSaveDepartment()
{
$oDepartment = new \BusinessModel\Department();
////////// Create department parent
$dep1 = array (
'dep_title' => 'departamento padre'
);
$arrayDepartments = $oDepartment->saveDepartment($dep1);
$this->assertTrue(isset($arrayDepartments['dep_uid']));
$this->assertEquals($arrayDepartments['dep_parent'], '');
$this->assertEquals($arrayDepartments['dep_title'], 'departamento padre');
$this->assertEquals($arrayDepartments['dep_status'], 'ACTIVE');
$this->assertEquals($arrayDepartments['dep_manager'], '');
$this->assertEquals($arrayDepartments['has_children'], 0);
////////// Create department child
$dep1Uid = $arrayDepartments['dep_uid'];
$dep2 = array (
'dep_parent' => $dep1Uid,
'dep_manager' => '00000000000000000000000000000001',
'dep_title' => 'departamento hijo1',
'dep_status' => 'INACTIVE'
);
$arrayDepartments2 = $oDepartment->saveDepartment($dep2);
$this->assertTrue(isset($arrayDepartments2['dep_uid']));
$this->assertEquals($arrayDepartments2['dep_parent'], $dep1Uid);
$this->assertEquals($arrayDepartments2['dep_title'], 'departamento hijo1');
$this->assertEquals($arrayDepartments2['dep_status'], 'INACTIVE');
$this->assertEquals($arrayDepartments2['dep_manager'], '00000000000000000000000000000001');
$this->assertEquals($arrayDepartments2['has_children'], 0);
////////// Update department parent
$depUp1 = array (
'dep_uid' => $dep1Uid,
'dep_title' => 'DepPadre',
'dep_manager' => '00000000000000000000000000000001'
);
$oDepartment->saveDepartment($depUp1, false);
$dep2Uid = $arrayDepartments2['dep_uid'];
$depUp2 = array (
'dep_uid' => $dep2Uid,
'dep_title' => 'DepHijo',
'dep_manager' => '',
);
$oDepartment->saveDepartment($depUp2, false);
}
public function testGetDepartments()
{
$oDepartment = new \BusinessModel\Department();
$arrayDepartments = $oDepartment->getDepartments();
$this->assertTrue(is_array($arrayDepartments));
$this->assertEquals(count($arrayDepartments), 1);
$this->assertTrue(is_array($arrayDepartments[0]['dep_children']));
$this->assertEquals(count($arrayDepartments[0]['dep_children']), 1);
}
public function testGetDepartment()
{
$oDepartment = new \BusinessModel\Department();
$arrayDepartments = $oDepartment->getDepartments();
$depIdPadre = $arrayDepartments[0]['dep_uid'];
$depIdChild = $arrayDepartments[0]['dep_children'][0]['dep_uid'];
$oDepartment = new \BusinessModel\Department();
$dataPadre = $oDepartment->getDepartment($depIdPadre);
$dataChild = $oDepartment->getDepartment($depIdChild);
$this->assertTrue(is_array($dataPadre));
$this->assertEquals($dataPadre['dep_title'], 'DepPadre');
$this->assertEquals($dataPadre['dep_manager'], '00000000000000000000000000000001');
$this->assertTrue(is_array($dataChild));
$this->assertEquals($dataChild['dep_title'], 'DepHijo');
$this->assertEquals($dataChild['dep_manager'], '');
}
public function testDeleteDepartment()
{
$oDepartment = new \BusinessModel\Department();
$arrayDepartments = $oDepartment->getDepartments();
$dataDepChild = $arrayDepartments[0]['dep_children'];
$oDepartment->deleteDepartment($dataDepChild[0]['dep_uid']);
$oDepartment->deleteDepartment($arrayDepartments[0]['dep_uid']);
$arrayDepartments = $oDepartment->getDepartments();
$this->assertEquals(count($arrayDepartments), 0);
}
}