Merged in darojas/processmaker (pull request #286)

Se controla si un archivo es creado mediante upload o post y se agrega validacion. Cambios en BEHAT, rest
This commit is contained in:
erik ao
2014-03-10 18:58:31 -04:00
5 changed files with 265 additions and 30 deletions

View File

@@ -1333,7 +1333,7 @@ class RestContext extends BehatContext
$ch = curl_init(); $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr); curl_setopt($ch, CURLOPT_HTTPHEADER,$headr);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('prf_filename'=>$sfile, "prf_path" => $path, "prf_content" => null)); curl_setopt($ch, CURLOPT_POSTFIELDS, array('prf_filename'=>$sfile, "prf_path" => $path));
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch); $postResult = curl_exec($ch);

View File

@@ -67,7 +67,6 @@ class FilesManager
} }
\G::verifyPath($sDirectory, true); \G::verifyPath($sDirectory, true);
$aTheFiles = array(); $aTheFiles = array();
$aDirectories = array();
$aFiles = array(); $aFiles = array();
$oDirectory = dir($sDirectory); $oDirectory = dir($sDirectory);
while ($sObject = $oDirectory->read()) { while ($sObject = $oDirectory->read()) {
@@ -127,7 +126,7 @@ class FilesManager
} }
} }
return $aTheFiles; return $aTheFiles;
} catch (Exception $e) { } catch (\Exception $e) {
throw $e; throw $e;
} }
} }
@@ -184,6 +183,12 @@ class FilesManager
$sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory . $aData['prf_filename']; $sDirectory = PATH_DATA_MAILTEMPLATES . $sProcessUID . PATH_SEP . $sSubDirectory . $aData['prf_filename'];
break; break;
} }
$content = $aData['prf_content'];
if (is_string($content)) {
if (file_exists(PATH_SEP.$sDirectory)) {
throw (new \Exception( 'The file: '.$sMainDirectory. PATH_SEP . $sSubDirectory . $aData['prf_filename'] . ' already exists.'));
}
}
if (!file_exists($sCheckDirectory)) { if (!file_exists($sCheckDirectory)) {
$sPkProcessFiles = \G::generateUniqueID(); $sPkProcessFiles = \G::generateUniqueID();
$oProcessFiles = new \ProcessFiles(); $oProcessFiles = new \ProcessFiles();

View File

@@ -624,9 +624,10 @@ class ProcessSupervisor
* *
* @param string $sProcessUID * @param string $sProcessUID
* @param string $sDynUID * @param string $sDynUID
* @param int $sPudPosition
* @access public * @access public
*/ */
public function addProcessSupervisorDynaform($sProcessUID, $sDynUID) public function addProcessSupervisorDynaform($sProcessUID, $sDynUID, $sPudPosition)
{ {
$oTypeDynaform = \DynaformPeer::retrieveByPK($sDynUID); $oTypeDynaform = \DynaformPeer::retrieveByPK($sDynUID);
if (is_null( $oTypeDynaform )) { if (is_null( $oTypeDynaform )) {
@@ -692,9 +693,10 @@ class ProcessSupervisor
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aResp = array('pud_uid' => $aRow['STEP_UID'], $aResp = array('pud_uid' => $aRow['STEP_UID'],
'pud_position' => $aRow['STEP_POSITION'], 'pud_position' => $aRow['STEP_POSITION'],
'dyn_uid' => $aRow['STEP_UID_OBJ'], 'dyn_uid' => $aRow['STEP_UID_OBJ']);
'dyn_title' => $aRow['DYN_TITLE']);
$oDataset->next(); $oDataset->next();
$aRespPosition = $this->updateProcessSupervisorDynaform($sProcessUID ,$aRow['STEP_UID'], $sPudPosition);
$aResp = array_merge(array('dyn_title' => $aRow['DYN_TITLE']), $aRespPosition);
} }
return $aResp; return $aResp;
} else { } else {
@@ -707,9 +709,11 @@ class ProcessSupervisor
* *
* @param string $sProcessUID * @param string $sProcessUID
* @param string $sInputDocumentUID * @param string $sInputDocumentUID
* @param int $sPuiPosition
* @access public * @access public
*/ */
public function addProcessSupervisorInputDocument($sProcessUID, $sInputDocumentUID)
public function addProcessSupervisorInputDocument($sProcessUID, $sInputDocumentUID, $sPuiPosition)
{ {
$oTypeInputDocument= \InputDocumentPeer::retrieveByPK($sInputDocumentUID); $oTypeInputDocument= \InputDocumentPeer::retrieveByPK($sInputDocumentUID);
if (is_null( $oTypeInputDocument )) { if (is_null( $oTypeInputDocument )) {
@@ -747,7 +751,7 @@ class ProcessSupervisor
$oStepSupervisor->create(array('PRO_UID' => $sProcessUID, $oStepSupervisor->create(array('PRO_UID' => $sProcessUID,
'STEP_TYPE_OBJ' => "INPUT_DOCUMENT", 'STEP_TYPE_OBJ' => "INPUT_DOCUMENT",
'STEP_UID_OBJ' => $sInputDocumentUID, 'STEP_UID_OBJ' => $sInputDocumentUID,
'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "DYNAFORM"))); 'STEP_POSITION' => $oStepSupervisor->getNextPosition($sProcessUID, "INPUT_DOCUMENT")));
$sDelimiter = \DBAdapter::getStringDelimiter(); $sDelimiter = \DBAdapter::getStringDelimiter();
$oCriteria = new \Criteria('workflow'); $oCriteria = new \Criteria('workflow');
$oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID); $oCriteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
@@ -776,9 +780,10 @@ class ProcessSupervisor
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aResp = array('pui_uid' => $aRow['STEP_UID'], $aResp = array('pui_uid' => $aRow['STEP_UID'],
'pui_position' => $aRow['STEP_POSITION'], 'pui_position' => $aRow['STEP_POSITION'],
'input_doc_uid' => $aRow['STEP_UID_OBJ'], 'input_doc_uid' => $aRow['STEP_UID_OBJ']);
'input_doc_title' => $aRow['INP_DOC_TITLE']);
$oDataset->next(); $oDataset->next();
$aRespPosition = $this->updateProcessSupervisorInputDocument($sProcessUID ,$aRow['STEP_UID'], $sPuiPosition);
$aResp = array_merge(array('input_doc_title' => $aRow['INP_DOC_TITLE']), $aRespPosition);
} }
return $aResp; return $aResp;
} else { } else {
@@ -821,19 +826,15 @@ class ProcessSupervisor
*/ */
public function removeDynaformSupervisor($sProcessUID, $sPudUID) public function removeDynaformSupervisor($sProcessUID, $sPudUID)
{ {
$oConnection = \Propel::getConnection(\StepSupervisorPeer::DATABASE_NAME);
try { try {
$oDynaformSupervidor = \StepSupervisorPeer::retrieveByPK($sPudUID); $oDynaformSupervidor = \StepSupervisorPeer::retrieveByPK($sPudUID);
if (!is_null($oDynaformSupervidor)) { if (!is_null($oDynaformSupervidor)) {
$oConnection->begin(); $oProcessMap = new \processMap(new \DBConnection());
$iResult = $oDynaformSupervidor->delete(); $oProcessMap->removeSupervisorStep( $oDynaformSupervidor->getStepUid(), $sProcessUID, 'DYNAFORM', $oDynaformSupervidor->getStepUidObj(), $oDynaformSupervidor->getStepPosition() );
$oConnection->commit();
return $iResult;
} else { } else {
throw (new \Exception('This row does not exist!')); throw (new \Exception('This row does not exist!'));
} }
} catch (Exception $oError) { } catch (Exception $oError) {
$oConnection->rollback();
throw ($oError); throw ($oError);
} }
} }
@@ -851,10 +852,8 @@ class ProcessSupervisor
try { try {
$oInputDocumentSupervidor = \StepSupervisorPeer::retrieveByPK($sPuiUID); $oInputDocumentSupervidor = \StepSupervisorPeer::retrieveByPK($sPuiUID);
if (!is_null($oInputDocumentSupervidor)) { if (!is_null($oInputDocumentSupervidor)) {
$oConnection->begin(); $oProcessMap = new \processMap(new \DBConnection());
$iResult = $oInputDocumentSupervidor->delete(); $oProcessMap->removeSupervisorStep( $oInputDocumentSupervidor->getStepUid(), $sProcessUID, 'INPUT_DOCUMENT', $oInputDocumentSupervidor->getStepUidObj(), $oInputDocumentSupervidor->getStepPosition() );
$oConnection->commit();
return $iResult;
} else { } else {
throw (new \Exception('This row does not exist!')); throw (new \Exception('This row does not exist!'));
} }
@@ -863,5 +862,174 @@ class ProcessSupervisor
throw ($oError); throw ($oError);
} }
} }
}
/**
* Assign a dynaform supervisor of a process
*
* @param string $sProcessUID
* @param string $sPudUID
* @param string $sPudPosition
* @access public
*/
public function updateProcessSupervisorDynaform($sProcessUID, $sPudUID, $sPudPosition)
{
$oCriteria=\StepSupervisorPeer::retrieveByPK($sPudUID);
$actualPosition = $oCriteria->getStepPosition();
$tempPosition = (isset($sPudPosition)) ? $sPudPosition : $actualPosition;
if (isset($tempPosition) && ($tempPosition != $actualPosition)) {
$this->moveDynaforms($sProcessUID, $sPudUID, $tempPosition);
}
//Return
unset($sPudPosition);
$sPudPosition = $tempPosition;
$oCriteria->setStepPosition($sPudPosition);
$oCriteria->save();
$oCriteria=array('pud_uid' => $oCriteria->getStepUid(),
'pud_position' => $oCriteria->getStepPosition(),
'dyn_uid' => $oCriteria->getStepUidObj());
return $oCriteria;
}
/**
* Assign a InputDocument supervisor of a process
*
* @param string $sProcessUID
* @param string $sPuiUID
* @param string $sPuiPosition
* @access public
*/
public function updateProcessSupervisorInputDocument($sProcessUID, $sPuiUID, $sPuiPosition)
{
$oCriteria=\StepSupervisorPeer::retrieveByPK($sPuiUID);
$actualPosition = $oCriteria->getStepPosition();
$tempPosition = (isset($sPuiPosition)) ? $sPuiPosition : $actualPosition;
if (isset($tempPosition) && ($tempPosition != $actualPosition)) {
$this->moveInputDocuments($sProcessUID, $sPuiUID, $tempPosition);
}
//Return
unset($sPuiPosition);
$sPuiPosition = $tempPosition;
$oCriteria->setStepPosition($sPuiPosition);
$oCriteria->save();
$oCriteria=array('pui_uid' => $oCriteria->getStepUid(),
'pui_position' => $oCriteria->getStepPosition(),
'inp_doc_uid' => $oCriteria->getStepUidObj());
return $oCriteria;
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for Process
* @var string $pu_uid. Uid for Step
* @var string $pu_pos. Position for Step
*
* @return void
*/
public function moveDynaforms($pro_uid, $pu_uid, $pu_pos)
{
$aSteps = $this->getProcessSupervisorDynaforms($pro_uid);
$step_pos = $pu_pos;
$step_uid = $pu_uid;
foreach ($aSteps as $dataStep) {
if ($dataStep['pud_uid'] == $step_uid) {
$prStepPos = (int)$dataStep['pud_position'];
}
}
$seStepPos = $step_pos;
//Principal Step is up
if ($prStepPos == $seStepPos) {
return true;
} elseif ($prStepPos < $seStepPos) {
$modPos = 'UP';
$newPos = $seStepPos;
$iniPos = $prStepPos+1;
$finPos = $seStepPos;
} else {
$modPos = 'DOWN';
$newPos = $seStepPos;
$iniPos = $seStepPos;
$finPos = $prStepPos-1;
}
$range = range($iniPos, $finPos);
foreach ($aSteps as $dataStep) {
if ((in_array($dataStep['pud_position'], $range)) && ($dataStep['pud_uid'] != $step_uid)) {
$stepChangeIds[] = $dataStep['pud_uid'];
$stepChangePos[] = $dataStep['pud_position'];
}
}
foreach ($stepChangeIds as $key => $value) {
if ($modPos == 'UP') {
$tempPos = ((int)$stepChangePos[$key])-1;
$this ->changePosStep($value, $tempPos);
} else {
$tempPos = ((int)$stepChangePos[$key])+1;
$this ->changePosStep($value, $tempPos);
}
}
$this ->changePosStep($value, $tempPos);
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for Process
* @var string $pu_uid. Uid for Step
* @var string $pu_pos. Position for Step
*
* @return void
*/
public function moveInputDocuments($pro_uid, $pu_uid, $pu_pos)
{
$aSteps = $this->getProcessSupervisorInputDocuments($pro_uid);
$step_pos = $pu_pos;
$step_uid = $pu_uid;
foreach ($aSteps as $dataStep) {
if ($dataStep['pui_uid'] == $step_uid) {
$prStepPos = (int)$dataStep['pui_position'];
}
}
$seStepPos = $step_pos;
//Principal Step is up
if ($prStepPos == $seStepPos) {
return true;
} elseif ($prStepPos < $seStepPos) {
$modPos = 'UP';
$newPos = $seStepPos;
$iniPos = $prStepPos+1;
$finPos = $seStepPos;
} else {
$modPos = 'DOWN';
$newPos = $seStepPos;
$iniPos = $seStepPos;
$finPos = $prStepPos-1;
}
$range = range($iniPos, $finPos);
foreach ($aSteps as $dataStep) {
if ((in_array($dataStep['pui_position'], $range)) && ($dataStep['pui_uid'] != $step_uid)) {
$stepChangeIds[] = $dataStep['pui_uid'];
$stepChangePos[] = $dataStep['pui_position'];
}
}
foreach ($stepChangeIds as $key => $value) {
if ($modPos == 'UP') {
$tempPos = ((int)$stepChangePos[$key])-1;
$this ->changePosStep($value, $tempPos);
} else {
$tempPos = ((int)$stepChangePos[$key])+1;
$this ->changePosStep($value, $tempPos);
}
}
$this ->changePosStep($value, $tempPos);
}
/**
* Validate Process Uid
* @var string $pro_uid. Uid for process
*
*/
public function changePosStep ($step_uid, $pos)
{
$oCriteria=\StepSupervisorPeer::retrieveByPK($step_uid);
$oCriteria->setStepPosition($pos);
$oCriteria->save();
}
}

View File

@@ -37,15 +37,17 @@ class FilesManager extends Api
/** /**
* @param string $prj_uid {@min 32} {@max 32} * @param string $prj_uid {@min 32} {@max 32}
* @param ProcessFilesManagerStructure $request_data * @param ProcessFilesManagerStructurePost $request_data
* @param string $prf_content
* *
* @url POST /:prj_uid/file-manager * @url POST /:prj_uid/file-manager
*/ */
public function doPostProcessFilesManager($prj_uid, ProcessFilesManagerStructure $request_data) public function doPostProcessFilesManager($prj_uid, ProcessFilesManagerStructurePost $request_data, $prf_content=null)
{ {
try { try {
$userUid = $this->getUserId(); $userUid = $this->getUserId();
$request_data = (array)($request_data); $request_data = (array)($request_data);
$request_data = array_merge(array('prf_content' => $prf_content ), $request_data);
$filesManager = new \BusinessModel\FilesManager(); $filesManager = new \BusinessModel\FilesManager();
$arrayData = $filesManager->addProcessFilesManager($prj_uid, $userUid, $request_data); $arrayData = $filesManager->addProcessFilesManager($prj_uid, $userUid, $request_data);
//Response //Response
@@ -151,6 +153,18 @@ class FilesManager extends Api
} }
} }
class ProcessFilesManagerStructurePost
{ /**
* @var string {@from body}
*/
public $prf_filename;
/**
* @var string {@from body}
*/
public $prf_path;
}
class ProcessFilesManagerStructure class ProcessFilesManagerStructure
{ {
/** /**

View File

@@ -215,14 +215,15 @@ class ProcessSupervisors extends Api
* *
* @param string $prjUid {@min 32} {@max 32} * @param string $prjUid {@min 32} {@max 32}
* @param string $dyn_uid {@min 32} {@max 32} * @param string $dyn_uid {@min 32} {@max 32}
* @param int $pud_position
* *
* @status 201 * @status 201
*/ */
public function doPostProcessSupervisorDynaform($prjUid, $dyn_uid) public function doPostProcessSupervisorDynaform($prjUid, $dyn_uid, $pud_position=null)
{ {
try { try {
$supervisor = new \BusinessModel\ProcessSupervisor(); $supervisor = new \BusinessModel\ProcessSupervisor();
$objectData = $supervisor->addProcessSupervisorDynaform($prjUid, $dyn_uid); $objectData = $supervisor->addProcessSupervisorDynaform($prjUid, $dyn_uid, $pud_position);
//Response //Response
$response = $objectData; $response = $objectData;
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -237,14 +238,15 @@ class ProcessSupervisors extends Api
* *
* @param string $prjUid {@min 32} {@max 32} * @param string $prjUid {@min 32} {@max 32}
* @param string $inp_doc_uid {@min 32} {@max 32} * @param string $inp_doc_uid {@min 32} {@max 32}
* @param int $pui_position
* *
* @status 201 * @status 201
*/ */
public function doPostProcessSupervisorInputDocument($prjUid, $inp_doc_uid) public function doPostProcessSupervisorInputDocument($prjUid, $inp_doc_uid, $pui_position=null)
{ {
try { try {
$supervisor = new \BusinessModel\ProcessSupervisor(); $supervisor = new \BusinessModel\ProcessSupervisor();
$objectData = $supervisor->addProcessSupervisorInputDocument($prjUid, $inp_doc_uid); $objectData = $supervisor->addProcessSupervisorInputDocument($prjUid, $inp_doc_uid, $pui_position);
//Response //Response
$response = $objectData; $response = $objectData;
} catch (\Exception $e) { } catch (\Exception $e) {
@@ -265,7 +267,7 @@ class ProcessSupervisors extends Api
{ {
try { try {
$supervisor = new \BusinessModel\ProcessSupervisor(); $supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->removeProcessSupervisor($prjUid, $puUid); $supervisor->removeProcessSupervisor($prjUid, $puUid);
} catch (\Exception $e) { } catch (\Exception $e) {
//response //response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
@@ -283,7 +285,7 @@ class ProcessSupervisors extends Api
{ {
try { try {
$supervisor = new \BusinessModel\ProcessSupervisor(); $supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->removeDynaformSupervisor($prjUid, $pudUid); $supervisor->removeDynaformSupervisor($prjUid, $pudUid);
} catch (\Exception $e) { } catch (\Exception $e) {
//response //response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
@@ -301,11 +303,57 @@ class ProcessSupervisors extends Api
{ {
try { try {
$supervisor = new \BusinessModel\ProcessSupervisor(); $supervisor = new \BusinessModel\ProcessSupervisor();
$arrayData = $supervisor->removeInputDocumentSupervisor($prjUid, $puiUid); $supervisor->removeInputDocumentSupervisor($prjUid, $puiUid);
} catch (\Exception $e) { } catch (\Exception $e) {
//response //response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
} }
} }
/**
* @url PUT /:prjUid/process-supervisor/dynaform/:pud_uid
*
* @param string $prjUid {@min 32} {@max 32}
* @param string $pud_uid {@min 32} {@max 32}
* @param int $pud_position
*
* @status 201
*/
public function doPutProcessSupervisorDynaform($prjUid, $pud_uid, $pud_position = null)
{
try {
$supervisor = new \BusinessModel\ProcessSupervisor();
$objectData = $supervisor->updateProcessSupervisorDynaform($prjUid, $pud_uid, $pud_position);
//Response
$response = $objectData;
} catch (\Exception $e) {
//Response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
/**
* @url PUT /:prjUid/process-supervisor/input-document/:pui_uid
*
* @param string $prjUid {@min 32} {@max 32}
* @param string $pui_uid {@min 32} {@max 32}
* @param int $pui_position
*
* @status 201
*/
public function doPutProcessSupervisorInputDocument($prjUid, $pui_uid, $pui_position = null)
{
try {
$supervisor = new \BusinessModel\ProcessSupervisor();
$objectData = $supervisor->updateProcessSupervisorInputDocument($prjUid, $pui_uid, $pui_position);
//Response
$response = $objectData;
} catch (\Exception $e) {
//Response
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
return $response;
}
} }