addSelectColumn(\InputDocumentPeer::INP_DOC_UID); $criteria->addAlias("CT", \ContentPeer::TABLE_NAME); $arrayCondition = array(); $arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "INP_DOC_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $criteria->add(\InputDocumentPeer::PRO_UID, $processUid, \Criteria::EQUAL); if ($inputDocumentUidExclude != "") { $criteria->add(\InputDocumentPeer::INP_DOC_UID, $inputDocumentUidExclude, \Criteria::NOT_EQUAL); } $criteria->add("CT.CON_VALUE", $title, \Criteria::EQUAL); $rsCriteria = \InputDocumentPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { return true; } else { return false; } } catch (\Exception $e) { throw $e; } } /** * Create InputDocument for a Process * * @param string $processUid Unique id of Process * @param array $arrayData Data * * return array Return data of the new InputDocument created */ public function create($processUid, $arrayData) { try { $arrayData = array_change_key_case($arrayData, CASE_UPPER); unset($arrayData["INP_DOC_UID"]); //Verify data $process = new \Process(); if (!$process->exists($processUid)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($processUid, "PROCESS"), "The UID \"{0}\" doesn't exist in table {1}"))); } if (!isset($arrayData["INP_DOC_TITLE"])) { throw (new \Exception(str_replace(array("{0}"), array("INP_DOC_TITLE"), "The \"{0}\" attribute is not defined"))); } if (isset($arrayData["INP_DOC_TITLE"]) && trim($arrayData["INP_DOC_TITLE"]) == "") { throw (new \Exception(str_replace(array("{0}"), array("INP_DOC_TITLE"), "The \"{0}\" attribute is empty"))); } if (isset($arrayData["INP_DOC_TITLE"]) && $this->titleExists($processUid, $arrayData["INP_DOC_TITLE"])) { throw (new \Exception(\G::LoadTranslation("ID_INPUT_NOT_SAVE"))); } //Flags $flagDataDestinationPath = (isset($arrayData["INP_DOC_DESTINATION_PATH"]))? 1 : 0; $flagDataTags = (isset($arrayData["INP_DOC_TAGS"]))? 1 : 0; //Create $inputDocument = new \InputDocument(); $arrayData["PRO_UID"] = $processUid; $arrayData["INP_DOC_DESTINATION_PATH"] = ($flagDataDestinationPath == 1)? $arrayData["INP_DOC_DESTINATION_PATH"] : ""; $arrayData["INP_DOC_TAGS"] = ($flagDataTags == 1)? $arrayData["INP_DOC_TAGS"] : ""; $inputDocumentUid = $inputDocument->create($arrayData); //Return unset($arrayData["PRO_UID"]); if ($flagDataDestinationPath == 0) { unset($arrayData["INP_DOC_DESTINATION_PATH"]); } if ($flagDataTags == 0) { unset($arrayData["INP_DOC_TAGS"]); } $arrayData = array_change_key_case($arrayData, CASE_LOWER); unset($arrayData["inp_doc_uid"]); return array_merge(array("inp_doc_uid" => $inputDocumentUid), $arrayData); } catch (\Exception $e) { throw $e; } } /** * Update InputDocument * * @param string $inputDocumentUid Unique id of InputDocument * @param array $arrayData Data * * return array Return data of the InputDocument updated */ public function update($inputDocumentUid, $arrayData) { try { $arrayData = array_change_key_case($arrayData, CASE_UPPER); $inputDocument = new \InputDocument(); $arrayInputDocumentData = $inputDocument->load($inputDocumentUid); //Uids $processUid = $arrayInputDocumentData["PRO_UID"]; //Verify data if (!$inputDocument->InputExists($inputDocumentUid)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($inputDocumentUid, "INPUT_DOCUMENT"), "The UID \"{0}\" doesn't exist in table {1}"))); } if (isset($arrayData["INP_DOC_TITLE"]) && trim($arrayData["INP_DOC_TITLE"]) == "") { throw (new \Exception(str_replace(array("{0}"), array("INP_DOC_TITLE"), "The \"{0}\" attribute is empty"))); } if (isset($arrayData["INP_DOC_TITLE"]) && $this->titleExists($processUid, $arrayData["INP_DOC_TITLE"], $inputDocumentUid)) { throw (new \Exception(\G::LoadTranslation("ID_INPUT_NOT_SAVE"))); } //Update $arrayData["INP_DOC_UID"] = $inputDocumentUid; $result = $inputDocument->update($arrayData); //Return unset($arrayData["INP_DOC_UID"]); return array_change_key_case($arrayData, CASE_LOWER); } catch (\Exception $e) { throw $e; } } /** * Delete InputDocument * * @param string $inputDocumentUid Unique id of InputDocument * * return void */ public function delete($inputDocumentUid) { try { //Verify data $inputDocument = new \InputDocument(); if (!$inputDocument->InputExists($inputDocumentUid)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($inputDocumentUid, "INPUT_DOCUMENT"), "The UID \"{0}\" doesn't exist in table {1}"))); } //Delete //StepSupervisor $stepSupervisor = new \StepSupervisor(); $arrayData = $stepSupervisor->loadInfo($inputDocumentUid); $result = $stepSupervisor->remove($arrayData["STEP_UID"]); //ObjectPermission $objectPermission = new \ObjectPermission(); $arrayData = $objectPermission->loadInfo($inputDocumentUid); if (is_array($arrayData)) { $result = $objectPermission->remove($arrayData["OP_UID"]); } //InputDocument $inputDocument = new \InputDocument(); $result = $inputDocument->remove($inputDocumentUid); //Step $step = new \Step(); $step->removeStep("INPUT_DOCUMENT", $inputDocumentUid); //ObjectPermission $objectPermission = new \ObjectPermission(); $objectPermission->removeByObject("INPUT", $inputDocumentUid); } catch (\Exception $e) { throw $e; } } /** * Get criteria for InputDocument * * return object */ public function getInputDocumentCriteria() { try { $delimiter = \DBAdapter::getStringDelimiter(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_UID); $criteria->addAsColumn("INP_DOC_TITLE", "CT.CON_VALUE"); $criteria->addAsColumn("INP_DOC_DESCRIPTION", "CD.CON_VALUE"); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_FORM_NEEDED); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_ORIGINAL); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_PUBLISHED); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_VERSIONING); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_DESTINATION_PATH); $criteria->addSelectColumn(\InputDocumentPeer::INP_DOC_TAGS); $criteria->addAlias("CT", \ContentPeer::TABLE_NAME); $criteria->addAlias("CD", \ContentPeer::TABLE_NAME); $arrayCondition = array(); $arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "INP_DOC_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(\InputDocumentPeer::INP_DOC_UID, "CD.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "INP_DOC_DESCRIPTION" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); return $criteria; } catch (\Exception $e) { throw $e; } } /** * Get data of an InputDocument from a record * * @param array $record Record * * return array Return an array with data of an InputDocument */ public function getInputDocumentDataFromRecord($record) { try { if ($record["INP_DOC_TITLE"] . "" == "") { $inputDocument = new \InputDocument(); //There is no transaltion for this Document name, try to get/regenerate the label $arrayInputdocData = $inputDocument->load($record["INP_DOC_UID"]); $record["INP_DOC_TITLE"] = $arrayInputdocData["INP_DOC_TITLE"]; $record["INP_DOC_DESCRIPTION"] = $arrayInputdocData["INP_DOC_DESCRIPTION"]; } return array( "inp_doc_uid" => $record["INP_DOC_UID"], "inp_doc_title" => $record["INP_DOC_TITLE"], "inp_doc_description" => $record["INP_DOC_DESCRIPTION"] . "", "inp_doc_form_needed" => $record["INP_DOC_FORM_NEEDED"], "inp_doc_original" => $record["INP_DOC_ORIGINAL"], "inp_doc_published" => $record["INP_DOC_PUBLISHED"], "inp_doc_versioning" => (int)($record["INP_DOC_VERSIONING"]), "inp_doc_destination_path" => $record["INP_DOC_DESTINATION_PATH"] . "", "inp_doc_tags" => $record["INP_DOC_TAGS"] . "" ); } catch (\Exception $e) { throw $e; } } /** * Get data of an InputDocument * * @param string $inputDocumentUid Unique id of InputDocument * * return array Return an array with data of an InputDocument */ public function getInputDocument($inputDocumentUid) { try { //Verify data $inputDocument = new \InputDocument(); if (!$inputDocument->InputExists($inputDocumentUid)) { throw (new \Exception(str_replace(array("{0}", "{1}"), array($inputDocumentUid, "INPUT_DOCUMENT"), "The UID \"{0}\" doesn't exist in table {1}"))); } //Get data $criteria = $this->getInputDocumentCriteria(); $criteria->add(\InputDocumentPeer::INP_DOC_UID, $inputDocumentUid, \Criteria::EQUAL); $rsCriteria = \InputDocumentPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); $row = $rsCriteria->getRow(); return $this->getInputDocumentDataFromRecord($row); } catch (\Exception $e) { throw $e; } } }