Пример #1
0
 /**
  * Implementation for 'GET' method for Rest API
  *
  * @param  mixed $appDocUid, $docVersion Primary key
  *
  * @return array $result Returns array within multiple records or a single record depending if
  *                       a single selection was requested passing id(s) as param
  */
 protected function get($appDocUid = null, $docVersion = null)
 {
     $result = array();
     try {
         $noArguments = true;
         $argumentList = func_get_args();
         foreach ($argumentList as $arg) {
             if (!is_null($arg)) {
                 $noArguments = false;
             }
         }
         if ($noArguments) {
             $criteria = new Criteria('workflow');
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
             $criteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
             $criteria->addSelectColumn(AppDocumentPeer::APP_UID);
             $criteria->addSelectColumn(AppDocumentPeer::DEL_INDEX);
             $criteria->addSelectColumn(AppDocumentPeer::DOC_UID);
             $criteria->addSelectColumn(AppDocumentPeer::USR_UID);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_CREATE_DATE);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_INDEX);
             $criteria->addSelectColumn(AppDocumentPeer::FOLDER_UID);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_PLUGIN);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_TAGS);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_STATUS);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_STATUS_DATE);
             $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_FIELDNAME);
             $dataset = AppEventPeer::doSelectRS($criteria);
             $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
             while ($dataset->next()) {
                 $result[] = $dataset->getRow();
             }
         } else {
             $record = AppDocumentPeer::retrieveByPK($appDocUid, $docVersion);
             if ($record) {
                 $result = $record->toArray(BasePeer::TYPE_FIELDNAME);
             } else {
                 $paramValues = "";
                 foreach ($argumentList as $arg) {
                     $paramValues .= strlen($paramValues) ? ', ' : '';
                     if (!is_null($arg)) {
                         $paramValues .= "{$arg}";
                     } else {
                         $paramValues .= "NULL";
                     }
                 }
                 throw new RestException(417, "table AppDocument ({$paramValues})");
             }
         }
     } catch (RestException $e) {
         throw new RestException($e->getCode(), $e->getMessage());
     } catch (Exception $e) {
         throw new RestException(412, $e->getMessage());
     }
     return $result;
 }
Пример #2
0
 public function jsonr(&$json)
 {
     foreach ($json as $key => &$value) {
         $sw1 = is_array($value);
         $sw2 = is_object($value);
         if ($sw1 || $sw2) {
             $this->jsonr($value);
         }
         if (!$sw1 && !$sw2) {
             //read event
             $fn = $this->onPropertyRead;
             if (function_exists($fn)) {
                 $fn($json, $key, $value);
             }
             //set properties from trigger
             $prefixs = array("@@", "@#", "@%", "@?", "@$", "@=");
             if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
                 $triggerValue = substr($value, 2);
                 if (isset($this->fields["APP_DATA"][$triggerValue])) {
                     $json->{$key} = $this->fields["APP_DATA"][$triggerValue];
                 }
             }
             //set properties from 'formInstance' variable
             if (isset($this->fields["APP_DATA"]["formInstance"])) {
                 $formInstance = $this->fields["APP_DATA"]["formInstance"];
                 if (!is_array($formInstance)) {
                     $formInstance = array($formInstance);
                 }
                 $nfi = count($formInstance);
                 for ($ifi = 0; $ifi < $nfi; $ifi++) {
                     $fi = $formInstance[$ifi];
                     if (is_object($fi) && isset($fi->id) && $key === "id" && $json->{$key} === $fi->id) {
                         foreach ($fi as $keyfi => $valuefi) {
                             if (isset($json->{$keyfi})) {
                                 $json->{$keyfi} = $valuefi;
                             }
                         }
                     }
                 }
             }
             //query & options
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "dropdown" || $value === "suggest" || $value === "checkbox" || $value === "radio" || $value === "datetime" || $value === "hidden")) {
                 if (!isset($json->data)) {
                     $json->data = array(
                         "value" => "",
                         "label" => ""
                     );
                 }
                 if (!isset($json->dbConnection))
                     $json->dbConnection = "none";
                 if (!isset($json->sql))
                     $json->sql = "";
                 if (!isset($json->options))
                     $json->options = array();
                 if (!isset($json->optionsSql))
                     $json->optionsSql = array();
                 else {
                     //convert stdClass to array
                     if (is_array($json->options)) {
                         $option = array();
                         foreach ($json->options as $valueOptions) {
                             array_push($option, array(
                                 "value" => $valueOptions->value,
                                 "label" => isset($valueOptions->label) ? $valueOptions->label : ""
                             ));
                         }
                         $json->options = $option;
                     }
                 }
                 if ($json->dbConnection !== "" && $json->dbConnection !== "none" && $json->sql !== "") {
                     $cnn = Propel::getConnection($json->dbConnection);
                     $stmt = $cnn->createStatement();
                     try {
                         $rs = $stmt->executeQuery(G::replaceDataField($json->sql, array()), \ResultSet::FETCHMODE_NUM);
                         while ($rs->next()) {
                             $row = $rs->getRow();
                             $option = array(
                                 "label" => isset($row[1]) ? $row[1] : $row[0],
                                 "value" => $row[0]
                             );
                             array_push($json->optionsSql, $option);
                         }
                     } catch (Exception $e) {
                         
                     }
                 }
                 if (isset($json->options[0])) {
                     $json->data = $json->options[0];
                     $no = count($json->options);
                     for ($io = 0; $io < $no; $io++) {
                         if ((is_array($json->options[$io]) ? $json->options[$io]["value"] : $json->options[$io]->value) === $json->defaultValue) {
                             $json->data = $json->options[$io];
                         }
                     }
                 }
             }
             //data
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "suggest" || $value === "dropdown" || $value === "checkbox" || $value === "radio" || $value === "datetime" || $value === "hidden")) {
                 $json->data = array(
                     "value" => isset($this->fields["APP_DATA"][$json->name]) ? $this->fields["APP_DATA"][$json->name] : (is_array($json->data) ? $json->data["value"] : $json->data->value),
                     "label" => isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : (is_array($json->data) ? $json->data["label"] : $json->data->label)
                 );
                 if ($json->data["label"] === "") {
                     $json->data["label"] = $json->data["value"];
                 }
                 //synchronize var_label
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) &&
                         in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $json->data["label"] = $json->data["value"];
                     foreach ($json->options as $io) {
                         if ($json->data["value"] === $io->value) {
                             $json->data["label"] = $io->label;
                         }
                     }
                     foreach ($json->optionsSql as $io) {
                         if ($json->data["value"] === $io["value"]) {
                             $json->data["label"] = $io["label"];
                         }
                     }
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = Array(
                         "key" => $json->name . "_label",
                         "value" => $json->data["label"]
                     );
                 }
             }
             if ($key === "type" && ($value === "checkbox")) {
                 $json->data = array(
                     "value" => isset($this->fields["APP_DATA"][$json->name]) ? $this->fields["APP_DATA"][$json->name] : array(),
                     "label" => isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : "[]"
                 );
             }
             if ($key === "type" && ($value === "file") && isset($this->fields["APP_DATA"]["APPLICATION"])) {
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                 $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
                 $oCriteria->add(AppDocumentPeer::APP_UID, $this->fields["APP_DATA"]["APPLICATION"]);
                 $oCriteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $json->name);
                 $rs = AppDocumentPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $links = array();
                 while ($rs->next()) {
                     $row = $rs->getRow();
                     array_push($links, "../cases/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"]);
                 }
                 $json->data = array(
                     "value" => $links,
                     "label" => isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : "[]"
                 );
             }
             //grid
             if ($key === "type" && ($value === "grid")) {
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     //rows
                     $rows = $this->fields["APP_DATA"][$json->name];
                     foreach ($rows as $keyRow => $row) {
                         //cells
                         $cells = array();
                         foreach ($json->columns as $column) {
                             //data
                             if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $column->type === "hidden") {
                                 array_push($cells, array(
                                     "value" => isset($row[$column->name]) ? $row[$column->name] : "",
                                     "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "")
                                 ));
                             }
                         }
                         $rows[$keyRow] = $cells;
                     }
                     $json->rows = count($rows);
                     $json->data = $rows;
                 }
                 //todo compatibility 'columnWidth'
                 foreach ($json->columns as $column) {
                     if (!isset($column->columnWidth)) {
                         $json->layout = "static";
                         $column->columnWidth = "";
                     }
                 }
             }
             //languages
             if ($this->lang === null && $key === "language" && isset($json->language)) {
                 $this->lang = $json->language;
             }
             if ($this->langs !== null) {
                 if (($key === "label" || $key === "title" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($this->langs->{$this->lang})) {
                     $langs = $this->langs->{$this->lang}->Labels;
                     foreach ($langs as $langsValue) {
                         if (is_object($json) && $json->{$key} === $langsValue->msgid) {
                             $json->{$key} = $langsValue->msgstr;
                         }
                         if (is_array($json) && $json[$key] === $langsValue->msgid) {
                             $json[$key] = $langsValue->msgstr;
                         }
                     }
                 }
             }
         }
     }
 }
Пример #3
0
    public function getAllGeneratedDocumentsCriteriaTracker($sProcessUID, $sApplicationUID, $sDocUID)

    {

        $oAppDocument = new AppDocument();

        $oCriteria = new Criteria('workflow');

        $oCriteria->add(AppDocumentPeer::APP_UID, $sApplicationUID);

        $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');

        $oCriteria->add(AppDocumentPeer::APP_DOC_STATUS, array('ACTIVE'), Criteria::IN);

        $oCriteria->add(AppDocumentPeer::DOC_UID, $sDocUID);

        $aConditions = array();

        $aConditions[] = array(AppDocumentPeer::APP_UID, AppDelegationPeer::APP_UID);

        $aConditions[] = array(AppDocumentPeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX);

        $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);

        $oCriteria->add(AppDelegationPeer::PRO_UID, $sProcessUID);

        $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX);

        $oDataset = AppDocumentPeer::doSelectRS($oCriteria);

        $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

        $oDataset->next();

        $aOutputDocuments = array();

        $aOutputDocuments[] = array(

            'APP_DOC_UID' => 'char',

            'DOC_UID' => 'char',

            'APP_DOC_COMMENT' => 'char',

            'APP_DOC_FILENAME' => 'char',

            'APP_DOC_INDEX' => 'integer'

        );

        while ($aRow = $oDataset->getRow()) {

            $oCriteria2 = new Criteria('workflow');

            $oCriteria2->add(AppDelegationPeer::APP_UID, $sApplicationUID);

            $oCriteria2->add(AppDelegationPeer::DEL_INDEX, $aRow['DEL_INDEX']);

            $oDataset2 = AppDelegationPeer::doSelectRS($oCriteria2);

            $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC);

            $oDataset2->next();

            $aRow2 = $oDataset2->getRow();

            $oTask = new Task();

            if ($oTask->taskExists($aRow2['TAS_UID'])) {

                $aTask = $oTask->load($aRow2['TAS_UID']);

            } else {

                $aTask = array('TAS_TITLE' => '(TASK DELETED)');

            }

            $aAux = $oAppDocument->load($aRow['APP_DOC_UID'], $aRow['DOC_VERSION']);

            $aFields = array(

                'APP_DOC_UID' => $aAux['APP_DOC_UID'],

                'DOC_UID' => $aAux['DOC_UID'],

                'APP_DOC_COMMENT' => $aAux['APP_DOC_COMMENT'],

                'APP_DOC_FILENAME' => $aAux['APP_DOC_FILENAME'],

                'APP_DOC_INDEX' => $aAux['APP_DOC_INDEX'],

                'ORIGIN' => $aTask['TAS_TITLE']

            );

            if ($aFields['APP_DOC_FILENAME'] != '') {

                $aFields['TITLE'] = $aFields['APP_DOC_FILENAME'];

            } else {

                $aFields['TITLE'] = $aFields['APP_DOC_COMMENT'];

            }

            //$aFields['POSITION'] = $_SESSION['STEP_POSITION'];

            $aFields['CONFIRM'] = G::LoadTranslation('ID_CONFIRM_DELETE_ELEMENT');

            $aOutputDocuments[] = $aFields;

            $oDataset->next();

        }



        global $_DBArray;

        $_DBArray['outputDocuments'] = $aOutputDocuments;

        $_SESSION['_DBArray'] = $_DBArray;

        G::LoadClass('ArrayPeer');

        $oCriteria = new Criteria('dbarray');

        $oCriteria->setDBArrayTable('outputDocuments');

        $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_CREATE_DATE);

        return $oCriteria;

    }
Пример #4
0
 /**
  * Function render
  *
  * @author David S. Callizaya S. <*****@*****.**>
  * @access public
  * @param string value
  * @return string
  */
 public function render($value = null, $owner = null, $rowId = null, $row = -1, $therow = -1)
 {
     $permission = false;
     $url = null;
     switch ($owner->type) {
         case "xmlform":
             $pmtype = $this->NSFieldType();
             break;
         case "grid":
             $pmtype = $this->NSGridType();
             break;
     }
     if (isset($_SESSION["APPLICATION"]) && isset($_SESSION["USER_LOGGED"]) && isset($_SESSION["TASK"]) && isset($this->input) && $this->input != null && $this->mode == "view") {
         require_once "classes/model/AppDocument.php";
         G::LoadClass("case");
         $case = new Cases();
         $arrayField = $case->loadCase($_SESSION["APPLICATION"]);
         $arrayPermission = $case->getAllObjects($arrayField["PRO_UID"], $_SESSION["APPLICATION"], $_SESSION["TASK"], $_SESSION["USER_LOGGED"]);
         $criteria = new Criteria();
         $criteria->add(AppDocumentPeer::APP_DOC_UID, $arrayPermission["INPUT_DOCUMENTS"], Criteria::IN);
         switch ($owner->type) {
             case "xmlform":
                 break;
             case "grid":
                 $criteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $owner->name . "_" . $row . "_" . $this->name);
                 break;
         }
         $criteria->addDescendingOrderByColumn(AppDocumentPeer::APP_DOC_CREATE_DATE);
         $rsCriteria = AppDocumentPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $sw = 0;
         while ($rsCriteria->next() && $sw == 0) {
             $row = $rsCriteria->getRow();
             if ($row["DOC_UID"] == $this->input) {
                 $permission = true;
                 $url = (G::is_https() ? "https://" : "http://") . $_SERVER["HTTP_HOST"] . dirname($_SERVER["REQUEST_URI"]) . "/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"];
                 $sw = 1;
             }
         }
     }
     $html1 = null;
     $html2 = null;
     $mode = $this->mode == "view" ? " disabled=\"disabled\"" : null;
     $styleDisplay = null;
     if ($this->mode == "view") {
         if ($permission) {
             $html1 = "<a href=\"" . $url . "\"" . ($owner->type == "grid" ? " class=\"tableOption\" style=\"color: #006699; text-decoration: none; font-weight: normal;\"" : null) . ">";
             $html2 = "</a>";
         }
         $html1 = $html1 . $value;
         $styleDisplay = "display: none;";
     }
     $html = $html1 . "<input type=\"file\" " . $pmtype . " id=\"form" . $rowId . "[" . $this->name . "]\" name=\"form" . $rowId . "[" . $this->name . "]\" value=\"" . $value . "\" class=\"module_app_input___gray_file\" style=\"" . $styleDisplay . "\"" . $mode . " " . $this->NSRequiredValue() . " />" . $html2;
     if (isset($this->input) && $this->input != null) {
         require_once "classes/model/InputDocument.php";
         try {
             $indoc = new InputDocument();
             $aDoc = $indoc->load($this->input);
             $aDoc["INP_DOC_TITLE"] = isset($aDoc["INP_DOC_TITLE"]) ? $aDoc["INP_DOC_TITLE"] : null;
             $html = $html . "<label><img src=\"/images/inputdocument.gif\" width=\"22px\" width=\"22px\" alt=\"\" /><font size=\"1\">(" . trim($aDoc["INP_DOC_TITLE"]) . ")</font></label>";
         } catch (Exception $e) {
             //Then the input document doesn"t exits, id referencial broken
             $html = $html . "&nbsp;<font color=\"red\"><img src=\"/images/alert_icon.gif\" width=\"16px\" width=\"16px\" alt=\"\" /><font size=\"1\">(" . G::loadTranslation("ID_INPUT_DOC_DOESNT_EXIST") . ")</font></font>";
         }
     }
     $html = $html . $this->renderHint();
     return $html;
 }
Пример #5
0
 /**
  * Get data of Cases OutputDocument
  *
  * @param string $applicationUid
  * @param string $outputDocumentUid
  * @param string $userUid
  *
  * return object Return an object with data of an OutputDocument
  */
 public function addCasesOutputDocument($applicationUid, $outputDocumentUid, $userUid)
 {
     try {
         $sApplication = $applicationUid;
         $index = \AppDelegation::getCurrentIndex($applicationUid);
         $sUserLogged = $userUid;
         $outputID = $outputDocumentUid;
         $g = new \G();
         $g->sessionVarSave();
         \G::LoadClass( 'case' );
         $oCase = new \Cases();
         $oCase->thisIsTheCurrentUser( $sApplication, $index, $sUserLogged, '', 'casesListExtJs' );
         //require_once 'classes/model/OutputDocument.php';
         $oOutputDocument = new \OutputDocument();
         $aOD = $oOutputDocument->load( $outputID );
         $Fields = $oCase->loadCase( $sApplication );
         $sFilename = preg_replace( '[^A-Za-z0-9_]', '_', \G::replaceDataField( $aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA'] ) );
         require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "AppFolder.php");
         require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "AppDocument.php");
         //Get the Custom Folder ID (create if necessary)
         $oFolder = new \AppFolder();
         $folderId = $oFolder->createFromPath( $aOD['OUT_DOC_DESTINATION_PATH'], $sApplication );
         //Tags
         $fileTags = $oFolder->parseTags( $aOD['OUT_DOC_TAGS'], $sApplication );
         //Get last Document Version and apply versioning if is enabled
         $oAppDocument = new \AppDocument();
         $lastDocVersion = $oAppDocument->getLastDocVersion( $outputID, $sApplication );
         $oCriteria = new \Criteria( 'workflow' );
         $oCriteria->add( \AppDocumentPeer::APP_UID, $sApplication );
         $oCriteria->add( \AppDocumentPeer::DOC_UID, $outputID );
         $oCriteria->add( \AppDocumentPeer::DOC_VERSION, $lastDocVersion );
         $oCriteria->add( \AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT' );
         $oDataset = \AppDocumentPeer::doSelectRS( $oCriteria );
         $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
         $oDataset->next();
         if (($aOD['OUT_DOC_VERSIONING']) && ($lastDocVersion != 0)) {
             //Create new Version of current output
             $lastDocVersion ++;
             if ($aRow = $oDataset->getRow()) {
                 $aFields = array ('APP_DOC_UID' => $aRow['APP_DOC_UID'],'APP_UID' => $sApplication,'DEL_INDEX' => $index,'DOC_UID' => $outputID,'DOC_VERSION' => $lastDocVersion + 1,'USR_UID' => $sUserLogged,'APP_DOC_TYPE' => 'OUTPUT','APP_DOC_CREATE_DATE' => date( 'Y-m-d H:i:s' ),'APP_DOC_FILENAME' => $sFilename,'FOLDER_UID' => $folderId,'APP_DOC_TAGS' => $fileTags);
                 $oAppDocument = new \AppDocument();
                 $oAppDocument->create( $aFields );
                 $sDocUID = $aRow['APP_DOC_UID'];
             }
         } else {
             ////No versioning so Update a current Output or Create new if no exist
             if ($aRow = $oDataset->getRow()) {
                 //Update
                 $aFields = array ('APP_DOC_UID' => $aRow['APP_DOC_UID'],'APP_UID' => $sApplication,'DEL_INDEX' => $index,'DOC_UID' => $outputID,'DOC_VERSION' => $lastDocVersion,'USR_UID' => $sUserLogged,'APP_DOC_TYPE' => 'OUTPUT','APP_DOC_CREATE_DATE' => date( 'Y-m-d H:i:s' ),'APP_DOC_FILENAME' => $sFilename,'FOLDER_UID' => $folderId,'APP_DOC_TAGS' => $fileTags
                 );
                 $oAppDocument = new \AppDocument();
                 $oAppDocument->update( $aFields );
                 $sDocUID = $aRow['APP_DOC_UID'];
             } else {
                 //we are creating the appdocument row
                 //create
                 if ($lastDocVersion == 0) {
                     $lastDocVersion ++;
                 }
                 $aFields = array ('APP_UID' => $sApplication,'DEL_INDEX' => $index,'DOC_UID' => $outputID,'DOC_VERSION' => $lastDocVersion,'USR_UID' => $sUserLogged,'APP_DOC_TYPE' => 'OUTPUT','APP_DOC_CREATE_DATE' => date( 'Y-m-d H:i:s' ),'APP_DOC_FILENAME' => $sFilename,'FOLDER_UID' => $folderId,'APP_DOC_TAGS' => $fileTags
                 );
                 $oAppDocument = new \AppDocument();
                 $aFields['APP_DOC_UID'] = $sDocUID = $oAppDocument->create( $aFields );
             }
         }
         $sFilename = $aFields['APP_DOC_UID'] . "_" . $lastDocVersion;
         $pathOutput = PATH_DOCUMENT . \G::getPathFromUID($sApplication) . PATH_SEP . 'outdocs' . PATH_SEP; //G::pr($sFilename);die;
         \G::mk_dir( $pathOutput );
         $aProperties = array ();
         if (! isset( $aOD['OUT_DOC_MEDIA'] )) {
             $aOD['OUT_DOC_MEDIA'] = 'Letter';
         }
         if (! isset( $aOD['OUT_DOC_LEFT_MARGIN'] )) {
             $aOD['OUT_DOC_LEFT_MARGIN'] = '15';
         }
         if (! isset( $aOD['OUT_DOC_RIGHT_MARGIN'] )) {
             $aOD['OUT_DOC_RIGHT_MARGIN'] = '15';
         }
         if (! isset( $aOD['OUT_DOC_TOP_MARGIN'] )) {
             $aOD['OUT_DOC_TOP_MARGIN'] = '15';
         }
         if (! isset( $aOD['OUT_DOC_BOTTOM_MARGIN'] )) {
             $aOD['OUT_DOC_BOTTOM_MARGIN'] = '15';
         }
         $aProperties['media'] = $aOD['OUT_DOC_MEDIA'];
         $aProperties['margins'] = array ('left' => $aOD['OUT_DOC_LEFT_MARGIN'],'right' => $aOD['OUT_DOC_RIGHT_MARGIN'],'top' => $aOD['OUT_DOC_TOP_MARGIN'],'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN']
         );
         if (isset($aOD['OUT_DOC_REPORT_GENERATOR'])) {
             $aProperties['report_generator'] = $aOD['OUT_DOC_REPORT_GENERATOR'];
         }
         $this->generate( $outputID, $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], (boolean) $aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'], $aProperties , $applicationUid);
         //Plugin Hook PM_UPLOAD_DOCUMENT for upload document
         //G::LoadClass('plugin');
         $oPluginRegistry = & \PMPluginRegistry::getSingleton();
         if ($oPluginRegistry->existsTrigger( PM_UPLOAD_DOCUMENT ) && class_exists( 'uploadDocumentData' )) {
             $triggerDetail = $oPluginRegistry->getTriggerInfo( PM_UPLOAD_DOCUMENT );
             $aFields['APP_DOC_PLUGIN'] = $triggerDetail->sNamespace;
             $oAppDocument1 = new \AppDocument();
             $oAppDocument1->update( $aFields );
             $sPathName = PATH_DOCUMENT . \G::getPathFromUID($sApplication) . PATH_SEP;
             $oData['APP_UID'] = $sApplication;
             $oData['ATTACHMENT_FOLDER'] = true;
             switch ($aOD['OUT_DOC_GENERATE']) {
                 case "BOTH":
                     $documentData = new \uploadDocumentData( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion() );
                     $documentData->sFileType = "PDF";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers( PM_UPLOAD_DOCUMENT, $documentData );
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink( $pathOutput . $sFilename . '.pdf' );
                     }
                     $documentData = new \uploadDocumentData( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion() );
                     $documentData->sFileType = "DOC";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers( PM_UPLOAD_DOCUMENT, $documentData );
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink( $pathOutput . $sFilename . '.doc' );
                     }
                     break;
                 case "PDF":
                     $documentData = new \uploadDocumentData( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion() );
                     $documentData->sFileType = "PDF";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers( PM_UPLOAD_DOCUMENT, $documentData );
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink( $pathOutput . $sFilename . '.pdf' );
                     }
                     break;
                 case "DOC":
                     $documentData = new \uploadDocumentData( $sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion() );
                     $documentData->sFileType = "DOC";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers( PM_UPLOAD_DOCUMENT, $documentData );
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink( $pathOutput . $sFilename . '.doc' );
                     }
                     break;
             }
         }
         $g->sessionVarRestore();
         $oAppDocument = \AppDocumentPeer::retrieveByPK( $aFields['APP_DOC_UID'], $lastDocVersion);
         if ($oAppDocument->getAppDocStatus() == 'DELETED') {
             $oAppDocument->setAppDocStatus('ACTIVE');
             $oAppDocument->save();
         }
         $response = $this->getCasesOutputDocument($applicationUid, $userUid, $aFields['APP_DOC_UID']);
         return $response;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Пример #6
0
    public function getDirectoryContentSortedBy ($folderID, $docIdFilter = array(), $keyword = null, $searchType = null, $limit = 0, $start = 0, $user = '', $onlyActive = false, $direction = 'ASC', $ColumnSort = 'appDocCreateDate', $search = null)
    {
        G::LoadClass( 'case' );
        $oCase = new Cases();
        G::LoadClass( 'process' );
        $oProcess = new Process();

        $oAppDocument = new AppDocument();
        $oCriteria = new Criteria();
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_UID);
        $oCriteria->addSelectColumn( AppDocumentPeer::DOC_VERSION);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_UID);
        $oCriteria->addSelectColumn( AppDocumentPeer::DEL_INDEX);
        $oCriteria->addSelectColumn( AppDocumentPeer::DOC_UID);
        $oCriteria->addSelectColumn( AppDocumentPeer::USR_UID);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_TYPE);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_CREATE_DATE);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_INDEX);
        $oCriteria->addSelectColumn( AppDocumentPeer::FOLDER_UID);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_PLUGIN);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_TAGS);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_STATUS);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_STATUS_DATE);
        $oCriteria->addSelectColumn( AppDocumentPeer::APP_DOC_FIELDNAME);

        if ((is_array( $docIdFilter )) && (count( $docIdFilter ) > 0)) {
            //Search by App Doc UID no matter what Folder it is
            $oCriteria->add( AppDocumentPeer::APP_DOC_UID, $docIdFilter, CRITERIA::IN );
        } elseif ($folderID != null) {
            if ($folderID == "/") {
                $oCriteria->add( AppDocumentPeer::FOLDER_UID, array ('root','',null), CRITERIA::IN );
            } else {
                $oCriteria->add( AppDocumentPeer::FOLDER_UID, $folderID );
            }
        } elseif ($searchType == "TAG") {
            $oCriteria->add( AppDocumentPeer::APP_DOC_TAGS, "%" . $keyword . "%", CRITERIA::LIKE );
        }

        require_once ("classes/model/AppDelegation.php");
        if ($user != '') {
            require_once ("classes/model/AppDelegation.php");
            $criteria = new Criteria();
            $criteria->addSelectColumn( AppDelegationPeer::APP_UID );
            $criteria->setDistinct();

            $conditions = array ();
            $conditions[] = array (AppDelegationPeer::APP_UID,AppDocumentPeer::APP_UID);
            $conditions[] = array (AppDelegationPeer::DEL_INDEX,AppDocumentPeer::DEL_INDEX);

            $criteria->addJoinMC( $conditions, Criteria::LEFT_JOIN );

            $criteria->add( AppDelegationPeer::USR_UID, $user );

            $rs2 = AppDocumentPeer::doSelectRS( $criteria );

            $rs2->setFetchmode( ResultSet::FETCHMODE_ASSOC );
            $data = array ();
            while ($rs2->next()) {
                $row = $rs2->getRow();
                $data[] = $row['APP_UID'];
            }
            $oCriteria->add( AppDocumentPeer::APP_UID, $data, CRITERIA::IN );
        }

        if ($onlyActive) {
            $oCriteria->add( AppDocumentPeer::APP_DOC_STATUS, 'ACTIVE' );
        }

        $oCriteria->addSelectColumn( ContentPeer::CON_VALUE . ' AS NAME');
        $oCriteria->add( ContentPeer::CON_CATEGORY, "APP_DOC_FILENAME");
        $oCriteria->add( ContentPeer::CON_LANG, SYS_LANG);
        $oCriteria->addJoin( AppDocumentPeer::APP_DOC_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN );

        $oCriteria->addSelectColumn( UsersPeer::USR_FIRSTNAME);
        $oCriteria->addSelectColumn( UsersPeer::USR_LASTNAME);
        $oCriteria->addJoin( AppDocumentPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN );

        if ($search) {
            $oCriteria->add(
                $oCriteria->getNewCriterion( ContentPeer::CON_VALUE, '%' . $search . '%', Criteria::LIKE )->
                    addOr( $oCriteria->getNewCriterion( UsersPeer::USR_FIRSTNAME, '%' . $search . '%', Criteria::LIKE )->
                    addOr( $oCriteria->getNewCriterion( UsersPeer::USR_LASTNAME, '%' . $search . '%', Criteria::LIKE )))
                );
        }

        $numRecTotal = AppDocumentPeer::doCount($oCriteria);

        $oCase->verifyTable();

        //Need to review hot to get the Column Type name
        switch($ColumnSort) {
            case 'appDocCreateDate' :
                $ColumnSort = AppDocumentPeer::APP_DOC_CREATE_DATE;
                break;
            case 'name' :
                $ColumnSort = 'NAME';
                break;
            default:
                break;
        }

        if($direction == 'ASC') {
            $oCriteria->addAscendingOrderByColumn( $ColumnSort );
        } else {
            $oCriteria->addDescendingOrderByColumn( $ColumnSort );
        }

        $response['documents'] = array ();

        $oCriteria->setLimit( $limit );
        $oCriteria->setOffset( $start );

        $rs = AppDocumentPeer::doSelectRS( $oCriteria );
        $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
        $rs->next();
        $filesResult = array ();
        while (is_array( $row = $rs->getRow() )) {
            //**** start get Doc Info
            $oApp = new Application();
            if (($oApp->exists( $row['APP_UID'] )) || ($row['APP_UID'] == "00000000000000000000000000000000")) {
                //$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']);
                $completeInfo = $this->getCompleteDocumentInfo( $row['APP_UID'], $row['APP_DOC_UID'], $row['DOC_VERSION'], $row['DOC_UID'], $row['USR_UID'] );
                $oAppDocument = new AppDocument();
                $lastVersion = $oAppDocument->getLastAppDocVersion( $row['APP_DOC_UID'], $row['APP_UID'] );

                if ($completeInfo['APP_DOC_STATUS'] != "DELETED") {
                    if (in_array($row["APP_DOC_UID"], $completeInfo["INPUT_DOCUMENTS"]) || in_array($row["APP_DOC_UID"], $completeInfo["OUTPUT_DOCUMENTS"]) || in_array($completeInfo["USR_UID"], array($_SESSION["USER_LOGGED"], "-1")) || $user == "") {
                        if (count( $docIdFilter ) > 0) {
                            if (in_array( $row['APP_DOC_UID'], $docIdFilter )) {
                                $response['documents'][] = $completeInfo;
                            }
                        } else {
                            if ($lastVersion == $row["DOC_VERSION"]) {
                                //Only Last Document version
                                if ($searchType == "ALL") {
                                    //If search in name of docs is active then filter
                                    if (stripos($completeInfo["APP_DOC_FILENAME"], $keyword) !== false || stripos($completeInfo["APP_DOC_TAGS"], $keyword) !== false) {
                                        $response["documents"][] = $completeInfo;
                                    }
                                } else {
                                    //No search filter active
                                    $response["documents"][] = $completeInfo;
                                }
                            }
                        }
                    }
                }
            }

            $rs->next();
        }

        $response["totalDocumentsCount"] = $numRecTotal;

        return $response;
    }
Пример #7
0
 public function getFolderContent($folderID, $docIdFilter = array(), $keyword = null, $searchType = null, $limit = 0, $start = 0, $user = '', $onlyActive = false)
 {
     require_once "classes/model/AppDocument.php";
     require_once "classes/model/InputDocument.php";
     require_once "classes/model/OutputDocument.php";
     require_once "classes/model/Users.php";
     G::LoadClass('case');
     $oCase = new Cases();
     G::LoadClass('process');
     $oProcess = new Process();
     $oAppDocument = new AppDocument();
     $oCriteria = new Criteria();
     if (is_array($docIdFilter) && count($docIdFilter) > 0) {
         //Search by App Doc UID no matter what Folder it is
         $oCriteria->add(AppDocumentPeer::APP_DOC_UID, $docIdFilter, CRITERIA::IN);
     } elseif ($folderID != null) {
         if ($folderID == "/") {
             $oCriteria->add(AppDocumentPeer::FOLDER_UID, array('root', '', null), CRITERIA::IN);
         } else {
             $oCriteria->add(AppDocumentPeer::FOLDER_UID, $folderID);
         }
     } elseif ($searchType == "TAG") {
         $oCriteria->add(AppDocumentPeer::APP_DOC_TAGS, "%" . $keyword . "%", CRITERIA::LIKE);
     }
     if ($user != '') {
         require_once "classes/model/AppDelegation.php";
         $criteria = new Criteria();
         $criteria->addSelectColumn(AppDelegationPeer::APP_UID);
         $criteria->setDistinct();
         $conditions = array();
         $conditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
         $conditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
         $criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
         $criteria->add(AppDelegationPeer::USR_UID, $user);
         $rs2 = AppDocumentPeer::doSelectRS($criteria);
         $rs2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $data = array();
         while ($rs2->next()) {
             $row = $rs2->getRow();
             $data[] = $row['APP_UID'];
         }
         $oCriteria->add(AppDocumentPeer::APP_UID, $data, CRITERIA::IN);
     }
     if ($onlyActive) {
         $oCriteria->add(AppDocumentPeer::APP_DOC_STATUS, 'ACTIVE');
     }
     $numRecTotal = AppDocumentPeer::doCount($oCriteria);
     $auxCriteria = clone $oCriteria;
     $auxCriteria->addJoin(AppDocumentPeer::DOC_UID, OutputDocumentPeer::OUT_DOC_UID);
     $auxCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
     $auxCriteria->add(OutputDocumentPeer::OUT_DOC_UID, '-1', Criteria::NOT_EQUAL);
     $auxCriteria->add(OutputDocumentPeer::OUT_DOC_GENERATE, 'BOTH');
     $numRecTotal += AppDocumentPeer::doCount($auxCriteria);
     $oCase->verifyTable();
     $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX);
     $oCriteria->addDescendingOrderByColumn(AppDocumentPeer::DOC_VERSION);
     $response['documents'] = array();
     $oCriteria->setLimit($limit);
     $oCriteria->setOffset($start);
     $rs = AppDocumentPeer::doSelectRS($oCriteria);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     $filesResult = array();
     while (is_array($row = $rs->getRow())) {
         //**** start get Doc Info
         $oApp = new Application();
         if ($oApp->exists($row['APP_UID']) || $row['APP_UID'] == "00000000000000000000000000000000") {
             //$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']);
             $completeInfo = $this->getCompleteDocumentInfo($row['APP_UID'], $row['APP_DOC_UID'], $row['DOC_VERSION'], $row['DOC_UID'], $row['USR_UID']);
             $oAppDocument = new AppDocument();
             $lastVersion = $oAppDocument->getLastAppDocVersion($row['APP_DOC_UID'], $row['APP_UID']);
             //$filesResult [] = $completeInfo;
             if ($completeInfo['APP_DOC_STATUS'] != "DELETED") {
                 if (in_array($row['APP_DOC_UID'], $completeInfo['INPUT_DOCUMENTS']) || in_array($row['APP_DOC_UID'], $completeInfo['OUTPUT_DOCUMENTS']) || in_array($completeInfo['USR_UID'], array($_SESSION['USER_LOGGED'], '-1'))) {
                     if (count($docIdFilter) > 0) {
                         if (in_array($row['APP_DOC_UID'], $docIdFilter)) {
                             $response['documents'][] = $completeInfo;
                         }
                     } elseif ($lastVersion == $row['DOC_VERSION']) {
                         //Only Last Document version
                         if ($searchType == "ALL") {
                             // If search in name of docs is active then filter
                             if (stripos($completeInfo['APP_DOC_FILENAME'], $keyword) !== false || stripos($completeInfo['APP_DOC_TAGS'], $keyword) !== false) {
                                 $response['documents'][] = $completeInfo;
                             }
                         } else {
                             //No search filter active
                             $response['documents'][] = $completeInfo;
                         }
                     }
                 }
             }
         }
         $rs->next();
     }
     $response["totalDocumentsCount"] = $numRecTotal;
     return $response;
 }
Пример #8
0
 /**
  * Get data of Cases OutputDocument
  *
  * @param string $applicationUid
  * @param string $outputDocumentUid
  * @param string $userUid
  *
  * return object Return an object with data of an OutputDocument
  */
 public function addCasesOutputDocument($applicationUid, $outputDocumentUid, $userUid)
 {
     try {
         $sApplication = $applicationUid;
         $index = \AppDelegation::getCurrentIndex($applicationUid);
         $sUserLogged = $userUid;
         $outputID = $outputDocumentUid;
         $g = new \G();
         $g->sessionVarSave();
         \G::LoadClass('case');
         $oCase = new \Cases();
         $oCase->thisIsTheCurrentUser($sApplication, $index, $sUserLogged, '', 'casesListExtJs');
         //require_once 'classes/model/OutputDocument.php';
         $oOutputDocument = new \OutputDocument();
         $aOD = $oOutputDocument->load($outputID);
         $Fields = $oCase->loadCase($sApplication);
         $sFilename = preg_replace('[^A-Za-z0-9_]', '_', \G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA']));
         require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "AppFolder.php";
         require_once PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "AppDocument.php";
         //Get the Custom Folder ID (create if necessary)
         $oFolder = new \AppFolder();
         $folderId = $oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH'], $sApplication);
         //Tags
         $fileTags = $oFolder->parseTags($aOD['OUT_DOC_TAGS'], $sApplication);
         //Get last Document Version and apply versioning if is enabled
         $oAppDocument = new \AppDocument();
         $lastDocVersion = $oAppDocument->getLastDocVersion($outputID, $sApplication);
         $oCriteria = new \Criteria('workflow');
         $oCriteria->add(\AppDocumentPeer::APP_UID, $sApplication);
         $oCriteria->add(\AppDocumentPeer::DOC_UID, $outputID);
         $oCriteria->add(\AppDocumentPeer::DOC_VERSION, $lastDocVersion);
         $oCriteria->add(\AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
         $oDataset = \AppDocumentPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         if ($aOD['OUT_DOC_VERSIONING'] && $lastDocVersion != 0) {
             //Create new Version of current output
             $lastDocVersion++;
             if ($aRow = $oDataset->getRow()) {
                 $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion + 1, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
                 $oAppDocument = new \AppDocument();
                 $oAppDocument->create($aFields);
                 $sDocUID = $aRow['APP_DOC_UID'];
             }
         } else {
             ////No versioning so Update a current Output or Create new if no exist
             if ($aRow = $oDataset->getRow()) {
                 //Update
                 $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
                 $oAppDocument = new \AppDocument();
                 $oAppDocument->update($aFields);
                 $sDocUID = $aRow['APP_DOC_UID'];
             } else {
                 //we are creating the appdocument row
                 //create
                 if ($lastDocVersion == 0) {
                     $lastDocVersion++;
                 }
                 $aFields = array('APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
                 $oAppDocument = new \AppDocument();
                 $aFields['APP_DOC_UID'] = $sDocUID = $oAppDocument->create($aFields);
             }
         }
         $sFilename = $aFields['APP_DOC_UID'] . "_" . $lastDocVersion;
         $pathOutput = PATH_DOCUMENT . \G::getPathFromUID($sApplication) . PATH_SEP . 'outdocs' . PATH_SEP;
         //G::pr($sFilename);die;
         \G::mk_dir($pathOutput);
         $aProperties = array();
         if (!isset($aOD['OUT_DOC_MEDIA'])) {
             $aOD['OUT_DOC_MEDIA'] = 'Letter';
         }
         if (!isset($aOD['OUT_DOC_LEFT_MARGIN'])) {
             $aOD['OUT_DOC_LEFT_MARGIN'] = '15';
         }
         if (!isset($aOD['OUT_DOC_RIGHT_MARGIN'])) {
             $aOD['OUT_DOC_RIGHT_MARGIN'] = '15';
         }
         if (!isset($aOD['OUT_DOC_TOP_MARGIN'])) {
             $aOD['OUT_DOC_TOP_MARGIN'] = '15';
         }
         if (!isset($aOD['OUT_DOC_BOTTOM_MARGIN'])) {
             $aOD['OUT_DOC_BOTTOM_MARGIN'] = '15';
         }
         $aProperties['media'] = $aOD['OUT_DOC_MEDIA'];
         $aProperties['margins'] = array('left' => $aOD['OUT_DOC_LEFT_MARGIN'], 'right' => $aOD['OUT_DOC_RIGHT_MARGIN'], 'top' => $aOD['OUT_DOC_TOP_MARGIN'], 'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN']);
         if (isset($aOD['OUT_DOC_REPORT_GENERATOR'])) {
             $aProperties['report_generator'] = $aOD['OUT_DOC_REPORT_GENERATOR'];
         }
         $this->generate($outputID, $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], (bool) $aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'], $aProperties, $applicationUid);
         /*----------------------------------********---------------------------------*/
         $licensedFeatures =& \PMLicensedFeatures::getSingleton();
         if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
             \G::LoadClass("pmDrive");
             $pmDrive = new \PMDrive();
             if ($pmDrive->getStatusService()) {
                 $app = new \Application();
                 $user = new \Users();
                 $dataUser = $user->load($userUid);
                 $pmDrive->setDriveUser($dataUser['USR_EMAIL']);
                 $appData = $app->Load($applicationUid);
                 if ($appData['APP_DRIVE_FOLDER_UID'] == null) {
                     $process = new \Process();
                     $process->setProUid($appData['PRO_UID']);
                     $result = $pmDrive->createFolder($process->getProTitle() . ' - ' . G::LoadTranslation("ID_CASE") . ' #' . $appData['APP_NUMBER'], $pmDrive->getFolderIdPMDrive($userUid));
                     $appData['APP_DRIVE_FOLDER_UID'] = $result->id;
                     $app->update($appData);
                 }
                 $fileIdDriveDoc = '';
                 $fileIdDrivePdf = '';
                 $sFilenameOriginal = preg_replace('[^A-Za-z0-9_]', '_', \G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA']));
                 switch ($aOD['OUT_DOC_GENERATE']) {
                     case "BOTH":
                         $result = $pmDrive->uploadFile('application/pdf', $pathOutput . $sFilename . '.pdf', $sFilenameOriginal . '.pdf', $appData['APP_DRIVE_FOLDER_UID']);
                         $oAppDocument->setDriveDownload('OUTPUT_PDF', $result->webContentLink);
                         $fileIdDrivePdf = $result->id;
                         $result = $pmDrive->uploadFile('application/doc', $pathOutput . $sFilename . '.doc', $sFilenameOriginal . '.doc', $appData['APP_DRIVE_FOLDER_UID']);
                         $oAppDocument->setDriveDownload('OUTPUT_DOC', $result->webContentLink);
                         $fileIdDriveDoc = $result->id;
                         break;
                     case "PDF":
                         $result = $pmDrive->uploadFile('application/pdf', $pathOutput . $sFilename . '.pdf', $sFilenameOriginal . '.pdf', $appData['APP_DRIVE_FOLDER_UID']);
                         $oAppDocument->setDriveDownload('OUTPUT_PDF', $result->webContentLink);
                         $fileIdDrivePdf = $result->id;
                         break;
                     case "DOC":
                         $result = $pmDrive->uploadFile('application/doc', $pathOutput . $sFilename . '.doc', $sFilenameOriginal . '.doc', $appData['APP_DRIVE_FOLDER_UID']);
                         $oAppDocument->setDriveDownload('OUTPUT_DOC', $result->webContentLink);
                         $fileIdDriveDoc = $result->id;
                         break;
                 }
                 $aFields['DOC_VERSION'] = $oAppDocument->getDocVersion();
                 // $docVersion;
                 $aFields['APP_DOC_UID'] = $oAppDocument->getAppDocUid();
                 //$appDocUid;
                 $appDocUid = $aFields['APP_DOC_UID'];
                 $oAppDocument->update($aFields);
                 //$option = 'pmDrive';
                 //add permissions
                 $criteria = new \Criteria('workflow');
                 $criteria->addSelectColumn(\ApplicationPeer::PRO_UID);
                 $criteria->addSelectColumn(\TaskUserPeer::TAS_UID);
                 $criteria->addSelectColumn(\TaskUserPeer::USR_UID);
                 $criteria->addSelectColumn(\TaskUserPeer::TU_RELATION);
                 $criteria->add(\ApplicationPeer::APP_UID, $applicationUid);
                 $criteria->addJoin(\ApplicationPeer::PRO_UID, \TaskPeer::PRO_UID, \Criteria::LEFT_JOIN);
                 $criteria->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN);
                 $dataset = \ApplicationPeer::doSelectRS($criteria);
                 $dataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 $userPermission = array();
                 $case = new \Cases();
                 while ($dataset->next()) {
                     $row = $dataset->getRow();
                     if ($row['TU_RELATION'] == 1) {
                         //users
                         $dataUser = $user->load($row['USR_UID']);
                         if (array_search($dataUser['USR_EMAIL'], $userPermission) === false) {
                             $objectPermissions = $case->getAllObjects($row['PRO_UID'], $applicationUid, $row['TAS_UID'], $row['USR_UID']);
                             if (array_search($appDocUid, $objectPermissions['OUTPUT_DOCUMENTS']) !== false) {
                                 $userPermission[] = $dataUser['USR_EMAIL'];
                             }
                         }
                     } else {
                         //Groups
                         $criteria = new \Criteria('workflow');
                         $criteria->addSelectColumn(\UsersPeer::USR_EMAIL);
                         $criteria->addSelectColumn(\UsersPeer::USR_UID);
                         $criteria->add(\GroupUserPeer::GRP_UID, $row['USR_UID']);
                         $criteria->addJoin(\GroupUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN);
                         $oDataset = \AppDelegationPeer::doSelectRS($criteria);
                         $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                         while ($oDataset->next()) {
                             $aRow = $oDataset->getRow();
                             if (array_search($aRow['USR_EMAIL'], $userPermission) === false) {
                                 $objectPermissions = $case->getAllObjects($row['PRO_UID'], $applicationUid, $row['TAS_UID'], $aRow['USR_UID']);
                                 if (array_search($appDocUid, $objectPermissions['OUTPUT_DOCUMENTS']) !== false) {
                                     $userPermission[] = $aRow['USR_EMAIL'];
                                 }
                             }
                         }
                     }
                 }
                 $userPermission = array_unique($userPermission);
                 foreach ($userPermission as $key => $val) {
                     $pmDrive->setPermission($appData['APP_DRIVE_FOLDER_UID'], $val, 'user', 'writer');
                     $pmDrive->setPermission($fileIdDrivePdf, $val);
                     $pmDrive->setPermission($fileIdDriveDoc, $val);
                 }
             }
         }
         /*----------------------------------********---------------------------------*/
         //Plugin Hook PM_UPLOAD_DOCUMENT for upload document
         //G::LoadClass('plugin');
         $oPluginRegistry =& \PMPluginRegistry::getSingleton();
         if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT) && class_exists('uploadDocumentData')) {
             $triggerDetail = $oPluginRegistry->getTriggerInfo(PM_UPLOAD_DOCUMENT);
             $aFields['APP_DOC_PLUGIN'] = $triggerDetail->sNamespace;
             $oAppDocument1 = new \AppDocument();
             $oAppDocument1->update($aFields);
             $sPathName = PATH_DOCUMENT . \G::getPathFromUID($sApplication) . PATH_SEP;
             $oData['APP_UID'] = $sApplication;
             $oData['ATTACHMENT_FOLDER'] = true;
             switch ($aOD['OUT_DOC_GENERATE']) {
                 case "BOTH":
                     $documentData = new \uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
                     $documentData->sFileType = "PDF";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink($pathOutput . $sFilename . '.pdf');
                     }
                     $documentData = new \uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion());
                     $documentData->sFileType = "DOC";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink($pathOutput . $sFilename . '.doc');
                     }
                     break;
                 case "PDF":
                     $documentData = new \uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
                     $documentData->sFileType = "PDF";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink($pathOutput . $sFilename . '.pdf');
                     }
                     break;
                 case "DOC":
                     $documentData = new \uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion());
                     $documentData->sFileType = "DOC";
                     $documentData->bUseOutputFolder = true;
                     $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                     if ($uploadReturn) {
                         //Only delete if the file was saved correctly
                         unlink($pathOutput . $sFilename . '.doc');
                     }
                     break;
             }
         }
         $g->sessionVarRestore();
         $oAppDocument = \AppDocumentPeer::retrieveByPK($aFields['APP_DOC_UID'], $lastDocVersion);
         if ($oAppDocument->getAppDocStatus() == 'DELETED') {
             $oAppDocument->setAppDocStatus('ACTIVE');
             $oAppDocument->save();
         }
         $response = $this->getCasesOutputDocument($applicationUid, $userUid, $aFields['APP_DOC_UID']);
         return $response;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Пример #9
0
/**
 *
 * @method
 *
 * Generates an Output Document
 *
 * @name PMFGenerateOutputDocument
 * @label PMF Generate Output Document
 *
 * @param string(32) | $outputID | Output ID | Output Document ID
 * @return none | $none | None | None
 *
 */
function PMFGenerateOutputDocument($outputID, $sApplication = null, $index = null, $sUserLogged = null)
{
    $g = new G();
    $g->sessionVarSave();
    if ($sApplication) {
        $_SESSION["APPLICATION"] = $sApplication;
    } else {
        $sApplication = $_SESSION["APPLICATION"];
    }
    if ($index) {
        $_SESSION["INDEX"] = $index;
    } else {
        $index = $_SESSION["INDEX"];
    }
    if ($sUserLogged) {
        $_SESSION["USER_LOGGED"] = $sUserLogged;
    } else {
        $sUserLogged = $_SESSION["USER_LOGGED"];
    }
    G::LoadClass('case');
    $oCase = new Cases();
    $oCase->thisIsTheCurrentUser($sApplication, $index, $sUserLogged, '', 'casesListExtJs');
    //require_once 'classes/model/OutputDocument.php';
    $oOutputDocument = new OutputDocument();
    $aOD = $oOutputDocument->load($outputID);
    $Fields = $oCase->loadCase($sApplication);
    //The $_GET['UID'] variable is used when a process executes.
    //$_GET['UID']=($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID'];
    //$sUID = ($aOD['OUT_DOC_VERSIONING'])?$_GET['UID']:$aOD['OUT_DOC_UID'];
    $sFilename = preg_replace('[^A-Za-z0-9_]', '_', G::replaceDataField($aOD['OUT_DOC_FILENAME'], $Fields['APP_DATA']));
    require_once 'classes/model/AppFolder.php';
    require_once 'classes/model/AppDocument.php';
    //Get the Custom Folder ID (create if necessary)
    $oFolder = new AppFolder();
    //$aOD['OUT_DOC_DESTINATION_PATH'] = ($aOD['OUT_DOC_DESTINATION_PATH']=='')?PATH_DOCUMENT
    //      . $_SESSION['APPLICATION'] . PATH_SEP . 'outdocs'. PATH_SEP:$aOD['OUT_DOC_DESTINATION_PATH'];
    $folderId = $oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH'], $sApplication);
    //Tags
    $fileTags = $oFolder->parseTags($aOD['OUT_DOC_TAGS'], $sApplication);
    //Get last Document Version and apply versioning if is enabled
    $oAppDocument = new AppDocument();
    $lastDocVersion = $oAppDocument->getLastDocVersion($outputID, $sApplication);
    $oCriteria = new Criteria('workflow');
    $oCriteria->add(AppDocumentPeer::APP_UID, $sApplication);
    //$oCriteria->add(AppDocumentPeer::DEL_INDEX,    $index);
    $oCriteria->add(AppDocumentPeer::DOC_UID, $outputID);
    $oCriteria->add(AppDocumentPeer::DOC_VERSION, $lastDocVersion);
    $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
    $oDataset = AppDocumentPeer::doSelectRS($oCriteria);
    $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
    $oDataset->next();
    if ($aOD['OUT_DOC_VERSIONING'] && $lastDocVersion != 0) {
        //Create new Version of current output
        $lastDocVersion++;
        if ($aRow = $oDataset->getRow()) {
            $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion + 1, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
            $oAppDocument = new AppDocument();
            $oAppDocument->create($aFields);
            $sDocUID = $aRow['APP_DOC_UID'];
        }
    } else {
        ////No versioning so Update a current Output or Create new if no exist
        if ($aRow = $oDataset->getRow()) {
            //Update
            $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
            $oAppDocument = new AppDocument();
            $oAppDocument->update($aFields);
            $sDocUID = $aRow['APP_DOC_UID'];
        } else {
            //we are creating the appdocument row
            //create
            if ($lastDocVersion == 0) {
                $lastDocVersion++;
            }
            $aFields = array('APP_UID' => $sApplication, 'DEL_INDEX' => $index, 'DOC_UID' => $outputID, 'DOC_VERSION' => $lastDocVersion, 'USR_UID' => $sUserLogged, 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
            $oAppDocument = new AppDocument();
            $aFields['APP_DOC_UID'] = $sDocUID = $oAppDocument->create($aFields);
        }
    }
    $sFilename = $aFields['APP_DOC_UID'] . "_" . $lastDocVersion;
    $pathOutput = PATH_DOCUMENT . G::getPathFromUID($sApplication) . PATH_SEP . 'outdocs' . PATH_SEP;
    //G::pr($sFilename);die;
    G::mk_dir($pathOutput);
    $aProperties = array();
    if (!isset($aOD['OUT_DOC_MEDIA'])) {
        $aOD['OUT_DOC_MEDIA'] = 'Letter';
    }
    if (!isset($aOD['OUT_DOC_LEFT_MARGIN'])) {
        $aOD['OUT_DOC_LEFT_MARGIN'] = '15';
    }
    if (!isset($aOD['OUT_DOC_RIGHT_MARGIN'])) {
        $aOD['OUT_DOC_RIGHT_MARGIN'] = '15';
    }
    if (!isset($aOD['OUT_DOC_TOP_MARGIN'])) {
        $aOD['OUT_DOC_TOP_MARGIN'] = '15';
    }
    if (!isset($aOD['OUT_DOC_BOTTOM_MARGIN'])) {
        $aOD['OUT_DOC_BOTTOM_MARGIN'] = '15';
    }
    $aProperties['media'] = $aOD['OUT_DOC_MEDIA'];
    $aProperties['margins'] = array('left' => $aOD['OUT_DOC_LEFT_MARGIN'], 'right' => $aOD['OUT_DOC_RIGHT_MARGIN'], 'top' => $aOD['OUT_DOC_TOP_MARGIN'], 'bottom' => $aOD['OUT_DOC_BOTTOM_MARGIN']);
    if (isset($aOD['OUT_DOC_REPORT_GENERATOR'])) {
        $aProperties['report_generator'] = $aOD['OUT_DOC_REPORT_GENERATOR'];
    }
    $oOutputDocument->generate($outputID, $Fields['APP_DATA'], $pathOutput, $sFilename, $aOD['OUT_DOC_TEMPLATE'], (bool) $aOD['OUT_DOC_LANDSCAPE'], $aOD['OUT_DOC_GENERATE'], $aProperties);
    //Plugin Hook PM_UPLOAD_DOCUMENT for upload document
    //G::LoadClass('plugin');
    $oPluginRegistry =& PMPluginRegistry::getSingleton();
    if ($oPluginRegistry->existsTrigger(PM_UPLOAD_DOCUMENT) && class_exists('uploadDocumentData')) {
        $triggerDetail = $oPluginRegistry->getTriggerInfo(PM_UPLOAD_DOCUMENT);
        $aFields['APP_DOC_PLUGIN'] = $triggerDetail->sNamespace;
        $oAppDocument1 = new AppDocument();
        $oAppDocument1->update($aFields);
        $sPathName = PATH_DOCUMENT . G::getPathFromUID($sApplication) . PATH_SEP;
        $oData['APP_UID'] = $sApplication;
        $oData['ATTACHMENT_FOLDER'] = true;
        switch ($aOD['OUT_DOC_GENERATE']) {
            case "BOTH":
                $documentData = new uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
                $documentData->sFileType = "PDF";
                $documentData->bUseOutputFolder = true;
                $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                if ($uploadReturn) {
                    //Only delete if the file was saved correctly
                    unlink($pathOutput . $sFilename . '.pdf');
                }
                $documentData = new uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion());
                $documentData->sFileType = "DOC";
                $documentData->bUseOutputFolder = true;
                $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                if ($uploadReturn) {
                    //Only delete if the file was saved correctly
                    unlink($pathOutput . $sFilename . '.doc');
                }
                break;
            case "PDF":
                $documentData = new uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.pdf', $sFilename . '.pdf', $sDocUID, $oAppDocument->getDocVersion());
                $documentData->sFileType = "PDF";
                $documentData->bUseOutputFolder = true;
                $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                if ($uploadReturn) {
                    //Only delete if the file was saved correctly
                    unlink($pathOutput . $sFilename . '.pdf');
                }
                break;
            case "DOC":
                $documentData = new uploadDocumentData($sApplication, $sUserLogged, $pathOutput . $sFilename . '.doc', $sFilename . '.doc', $sDocUID, $oAppDocument->getDocVersion());
                $documentData->sFileType = "DOC";
                $documentData->bUseOutputFolder = true;
                $uploadReturn = $oPluginRegistry->executeTriggers(PM_UPLOAD_DOCUMENT, $documentData);
                if ($uploadReturn) {
                    //Only delete if the file was saved correctly
                    unlink($pathOutput . $sFilename . '.doc');
                }
                break;
        }
    }
    $g->sessionVarRestore();
}
Пример #10
0
 function getFolderContent($folderID, $docIdFilter = array(), $keyword = NULL, $searchType = NULL, $limit = 0, $start = 0)
 {
     require_once "classes/model/AppDocument.php";
     require_once "classes/model/InputDocument.php";
     require_once "classes/model/OutputDocument.php";
     require_once "classes/model/Users.php";
     G::LoadClass('case');
     $oCase = new Cases();
     G::LoadClass('process');
     $oProcess = new Process();
     $oAppDocument = new AppDocument();
     $oCriteria = new Criteria();
     if (is_array($docIdFilter) && count($docIdFilter) > 0) {
         //Search by App Doc UID no matter what Folder it is
         $oCriteria->add(AppDocumentPeer::APP_DOC_UID, $docIdFilter, CRITERIA::IN);
     } elseif ($folderID != NULL) {
         if ($folderID == "/") {
             $oCriteria->add(AppDocumentPeer::FOLDER_UID, array('root', '', NULL), CRITERIA::IN);
         } else {
             $oCriteria->add(AppDocumentPeer::FOLDER_UID, $folderID);
         }
     } elseif ($searchType == "TAG") {
         $oCriteria->add(AppDocumentPeer::APP_DOC_TAGS, "%" . $keyword . "%", CRITERIA::LIKE);
     }
     $oCase->verifyTable();
     $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX);
     $oCriteria->addDescendingOrderByColumn(AppDocumentPeer::DOC_VERSION);
     $response['totalDocumentsCount'] = AppDocumentPeer::doCount($oCriteria);
     $response['documents'] = array();
     $oCriteria->setLimit($limit);
     $oCriteria->setOffset($start);
     $rs = AppDocumentPeer::doSelectRS($oCriteria);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     $filesResult = array();
     while (is_array($row = $rs->getRow())) {
         //**** start get Doc Info
         $oApp = new Application();
         if ($oApp->exists($row['APP_UID']) || $row['APP_UID'] == "00000000000000000000000000000000") {
             //$completeInfo = array("APP_DOC_FILENAME" => $row ["APP_DOC_UID"],"APP_DOC_UID"=>$row ['APP_UID']);
             $completeInfo = $this->getCompleteDocumentInfo($row['APP_UID'], $row['APP_DOC_UID'], $row['DOC_VERSION'], $row['DOC_UID'], $row['USR_UID']);
             $oAppDocument = new AppDocument();
             $lastVersion = $oAppDocument->getLastAppDocVersion($row['APP_DOC_UID'], $row['APP_UID']);
             //$filesResult [] = $completeInfo;
             if ($completeInfo['APP_DOC_STATUS'] != "DELETED") {
                 if (in_array($row['APP_DOC_UID'], $completeInfo['INPUT_DOCUMENTS']) || in_array($row['APP_DOC_UID'], $completeInfo['OUTPUT_DOCUMENTS']) || in_array($completeInfo['USR_UID'], array($_SESSION['USER_LOGGED'], '-1'))) {
                     if (count($docIdFilter) > 0) {
                         if (in_array($row['APP_DOC_UID'], $docIdFilter)) {
                             $response['documents'][] = $completeInfo;
                         }
                     } elseif ($lastVersion == $row['DOC_VERSION']) {
                         //Only Last Document version
                         if ($searchType == "ALL") {
                             // If search in name of docs is active then filter
                             if (stripos($completeInfo['APP_DOC_FILENAME'], $keyword) !== false || stripos($completeInfo['APP_DOC_TAGS'], $keyword) !== false) {
                                 $response['documents'][] = $completeInfo;
                             }
                         } else {
                             //No search filter active
                             $response['documents'][] = $completeInfo;
                         }
                     }
                 }
             }
         }
         $rs->next();
     }
     return $response;
 }
Пример #11
0
    /**
     * Get all docuemnts for a folder
     *
     * @param array $sFolderUid
     * @return array
     */
    public function getDocumentsinFolders ($sFolderUid)
    {
        $documents = array ();

        $oCriteria = new Criteria( 'workflow' );
        $oCriteria->add( AppDocumentPeer::FOLDER_UID, $sFolderUid );
        $oDataset = AppDocumentPeer::doSelectRS( $oCriteria );
        $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
        $oDataset->next();

        while ($aRow = $oDataset->getRow()) {
            $documents[] = array ('sAppDocUid' => $aRow['APP_DOC_UID'],'iVersion' => $aRow['DOC_VERSION']
            );
            $oDataset->next();
        }

        return $documents;
    }
Пример #12
0
 public function jsonr(&$json)
 {
     foreach ($json as $key => &$value) {
         $sw1 = is_array($value);
         $sw2 = is_object($value);
         if ($sw1 || $sw2) {
             $this->jsonr($value);
         }
         if (!$sw1 && !$sw2) {
             //read event
             $fn = $this->onPropertyRead;
             if (function_exists($fn)) {
                 $fn($json, $key, $value);
             }
             //set properties from trigger
             $prefixs = array("@@", "@#", "@%", "@?", "@\$", "@=");
             if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
                 $triggerValue = substr($value, 2);
                 if (isset($this->fields["APP_DATA"][$triggerValue])) {
                     $json->{$key} = $this->fields["APP_DATA"][$triggerValue];
                 }
             }
             //set properties from 'formInstance' variable
             if (isset($this->fields["APP_DATA"]["formInstance"])) {
                 $formInstance = $this->fields["APP_DATA"]["formInstance"];
                 if (!is_array($formInstance)) {
                     $formInstance = array($formInstance);
                 }
                 $nfi = count($formInstance);
                 for ($ifi = 0; $ifi < $nfi; $ifi++) {
                     $fi = $formInstance[$ifi];
                     if (is_object($fi) && isset($fi->id) && $key === "id" && $json->{$key} === $fi->id) {
                         foreach ($fi as $keyfi => $valuefi) {
                             if (isset($json->{$keyfi})) {
                                 $json->{$keyfi} = $valuefi;
                             }
                         }
                     }
                 }
             }
             //options & query
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden" || $value === "dropdown" || $value === "checkgroup" || $value === "radio" || $value === "suggest")) {
                 if (!isset($json->dbConnection)) {
                     $json->dbConnection = "none";
                 }
                 if (!isset($json->sql)) {
                     $json->sql = "";
                 }
                 $json->optionsSql = array();
                 if ($json->dbConnection !== "" && $json->dbConnection !== "none" && $json->sql !== "") {
                     $cnn = Propel::getConnection($json->dbConnection);
                     $stmt = $cnn->createStatement();
                     try {
                         $sql = G::replaceDataField($json->sql, $this->getValuesDependentFields($json));
                         $rs = $stmt->executeQuery($sql, \ResultSet::FETCHMODE_NUM);
                         while ($rs->next()) {
                             $row = $rs->getRow();
                             $option = new stdClass();
                             $option->value = $row[0];
                             $option->label = isset($row[1]) ? $row[1] : $row[0];
                             array_push($json->optionsSql, $option);
                         }
                     } catch (Exception $e) {
                     }
                 }
             }
             //data
             if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden")) {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($json->optionsSql[0])) {
                     $json->data->value = $json->optionsSql[0]->value;
                     $json->data->label = $json->optionsSql[0]->value;
                 }
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     $json->data->label = $this->fields["APP_DATA"][$json->name];
                 }
                 $json->optionsSql = array();
             }
             if ($key === "type" && $value === "dropdown") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "suggest") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     $json->data->label = $json->defaultValue;
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
                 $json->optionsSql = array();
             }
             if ($key === "type" && $value === "radio") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if ($json->defaultValue !== "") {
                     foreach ($json->optionsSql as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                     foreach ($json->options as $os) {
                         if ($os->value === $json->defaultValue) {
                             $json->data->value = $os->value;
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "checkbox") {
                 $json->data = new stdClass();
                 $json->data->value = "0";
                 $json->data->label = "";
                 foreach ($json->options as $os) {
                     if ($os->value === false || $os->value === 0 || $os->value === "0") {
                         $json->data->label = $os->label;
                     }
                 }
                 if ($json->defaultValue !== "") {
                     $json->data->value = $json->defaultValue;
                     foreach ($json->options as $os) {
                         if (($json->data->value === "true" || $json->data->value === "1") && ($os->value === true || $os->value === 1 || $os->value === "1")) {
                             $json->data->label = $os->label;
                         }
                         if (($json->data->value === "false" || $json->data->value === "0") && ($os->value === false || $os->value === 0 || $os->value === "0")) {
                             $json->data->label = $os->label;
                         }
                     }
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                     if (is_array($json->data->value) && isset($json->data->value[0])) {
                         $json->data->value = $json->data->value[0];
                     }
                     foreach ($json->options as $os) {
                         if (($json->data->value === true || $json->data->value === 1 || $json->data->value === "1") && ($os->value === true || $os->value === 1 || $os->value === "1")) {
                             $json->data->label = $os->label;
                         }
                         if (($json->data->value === false || $json->data->value === 0 || $json->data->value === "0") && ($os->value === false || $os->value === 0 || $os->value === "0")) {
                             $json->data->label = $os->label;
                         }
                     }
                 }
             }
             if ($key === "type" && $value === "checkgroup") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "[]";
                 if ($json->defaultValue !== "") {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = explode("|", $json->defaultValue);
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === trim($idv)) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                 }
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "datetime") {
                 $json->data = new stdClass();
                 $json->data->value = "";
                 $json->data->label = "";
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     $json->data->value = $this->fields["APP_DATA"][$json->name];
                 }
                 if (isset($this->fields["APP_DATA"][$json->name . "_label"])) {
                     $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"];
                 }
             }
             if ($key === "type" && $value === "file" && isset($this->fields["APP_DATA"]["APPLICATION"])) {
                 /*----------------------------------********---------------------------------*/
                 $licensedFeatures =& PMLicensedFeatures::getSingleton();
                 $enablePMGmail = false;
                 if ($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')) {
                     G::LoadClass("pmDrive");
                     $pmDrive = new PMDrive();
                     $enablePMGmail = $pmDrive->getStatusService();
                 }
                 /*----------------------------------********---------------------------------*/
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                 $oCriteria->addSelectColumn(AppDocumentPeer::DOC_VERSION);
                 $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);
                 /*----------------------------------********---------------------------------*/
                 if ($enablePMGmail) {
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_DRIVE_DOWNLOAD);
                 }
                 /*----------------------------------********---------------------------------*/
                 $oCriteria->addJoin(AppDocumentPeer::APP_DOC_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN);
                 $oCriteria->add(AppDocumentPeer::APP_UID, $this->fields["APP_DATA"]["APPLICATION"]);
                 $oCriteria->add(AppDocumentPeer::APP_DOC_FIELDNAME, $json->name);
                 $oCriteria->add(ContentPeer::CON_CATEGORY, 'APP_DOC_FILENAME');
                 $rs = AppDocumentPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $links = array();
                 $labelsFromDb = array();
                 while ($rs->next()) {
                     $row = $rs->getRow();
                     $linkDownload = "../cases/cases_ShowDocument?a=" . $row["APP_DOC_UID"] . "&v=" . $row["DOC_VERSION"];
                     /*----------------------------------********---------------------------------*/
                     //change donwload link - drive
                     $driveDownload = @unserialize($row['APP_DOC_DRIVE_DOWNLOAD']);
                     if ($driveDownload !== false && is_array($driveDownload) && array_key_exists('ATTACHED', $driveDownload) && $enablePMGmail) {
                         $linkDownload = $driveDownload['ATTACHED'];
                     }
                     /*----------------------------------********---------------------------------*/
                     array_push($links, $linkDownload);
                     array_push($labelsFromDb, $row["CON_VALUE"]);
                 }
                 $json->data = new stdClass();
                 $json->data->value = $links;
                 if (sizeof($labelsFromDb)) {
                     $json->data->label = G::json_encode($labelsFromDb);
                 } else {
                     $json->data->label = isset($this->fields["APP_DATA"][$json->name . "_label"]) ? $this->fields["APP_DATA"][$json->name . "_label"] : (isset($this->fields["APP_DATA"][$json->name]) ? $this->fields["APP_DATA"][$json->name] : "[]");
                 }
             }
             if ($key === "type" && $value === "file" && isset($json->variable)) {
                 //todo
                 $oCriteria = new Criteria("workflow");
                 $oCriteria->addSelectColumn(ProcessVariablesPeer::INP_DOC_UID);
                 $oCriteria->add(ProcessVariablesPeer::VAR_NAME, $json->variable);
                 $rs = ProcessVariablesPeer::doSelectRS($oCriteria);
                 $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                 $rs->next();
                 $row = $rs->getRow();
                 if (isset($row["INP_DOC_UID"])) {
                     $json->inputDocuments = array($row["INP_DOC_UID"]);
                 }
             }
             //synchronize var_label
             if ($key === "type" && ($value === "dropdown" || $value === "suggest")) {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     foreach ($json->optionsSql as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     foreach ($json->options as $io) {
                         if ($json->data->value === $io->value) {
                             $json->data->label = $io->label;
                         }
                     }
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && $value === "checkgroup") {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $dataValue = array();
                     $dataLabel = array();
                     $dv = array();
                     if (isset($this->fields["APP_DATA"][$json->name])) {
                         $dv = $this->fields["APP_DATA"][$json->name];
                     }
                     foreach ($dv as $idv) {
                         foreach ($json->optionsSql as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                         foreach ($json->options as $os) {
                             if ($os->value === $idv) {
                                 array_push($dataValue, $os->value);
                                 array_push($dataLabel, $os->label);
                             }
                         }
                     }
                     $json->data->value = $dataValue;
                     $json->data->label = G::json_encode($dataLabel);
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             if ($key === "type" && $value === "datetime") {
                 if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) {
                     $json->data->label = $json->data->value;
                     $_SESSION["TRIGGER_DEBUG"]["DATA"][] = array("key" => $json->name . "_label", "value" => $json->data->label);
                 }
             }
             //grid
             if ($key === "type" && $value === "grid") {
                 if (isset($this->fields["APP_DATA"][$json->name])) {
                     //rows
                     $rows = $this->fields["APP_DATA"][$json->name];
                     foreach ($rows as $keyRow => $row) {
                         //cells
                         $cells = array();
                         foreach ($json->columns as $column) {
                             //data
                             if ($column->type === "text" || $column->type === "textarea" || $column->type === "dropdown" || $column->type === "suggest" || $column->type === "datetime" || $column->type === "checkbox" || $column->type === "file" || $column->type === "link" || $column->type === "hidden") {
                                 array_push($cells, array("value" => isset($row[$column->name]) ? $row[$column->name] : "", "label" => isset($row[$column->name . "_label"]) ? $row[$column->name . "_label"] : (isset($row[$column->name]) ? $row[$column->name] : "")));
                             }
                         }
                         $rows[$keyRow] = $cells;
                     }
                     $json->rows = count($rows);
                     $json->data = $rows;
                 }
                 //todo compatibility 'columnWidth'
                 foreach ($json->columns as $column) {
                     if (!isset($column->columnWidth) && $column->type !== "hidden") {
                         $json->layout = "static";
                         $column->columnWidth = "";
                     }
                 }
             }
             //languages
             if ($this->lang === null && $key === "language" && isset($json->language)) {
                 $this->lang = $json->language;
             }
             if ($this->langs !== null) {
                 if (($key === "label" || $key === "title" || $key === "hint" || $key === "placeholder" || $key === "validateMessage" || $key === "alternateText" || $key === "comment" || $key === "alt") && isset($this->langs->{$this->lang})) {
                     $langs = $this->langs->{$this->lang}->Labels;
                     foreach ($langs as $langsValue) {
                         if (is_object($json) && $json->{$key} === $langsValue->msgid) {
                             $json->{$key} = $langsValue->msgstr;
                         }
                         if (is_array($json) && $json[$key] === $langsValue->msgid) {
                             $json[$key] = $langsValue->msgstr;
                         }
                     }
                 }
             }
             //EDIT,VIEW
             if (isset($this->fields["STEP_MODE"]) && $this->fields["STEP_MODE"] === "VIEW" && isset($json->mode)) {
                 $json->mode = "view";
             }
             if ($key === "type" && $value === "form" && $this->records != null) {
                 foreach ($this->records as $ri) {
                     if ($json->id === $ri["DYN_UID"] && !isset($json->jsonUpdate)) {
                         $jsonUpdate = G::json_decode($ri["DYN_CONTENT"]);
                         $jsonUpdate = $jsonUpdate->items[0];
                         $jsonUpdate->colSpan = $json->colSpan;
                         $jsonUpdate->jsonUpdate = true;
                         $json = $jsonUpdate;
                         $this->jsonr($json);
                     }
                 }
             }
         }
     }
 }
Пример #13
0
    public function getAllGeneratedDocumentsCriteria($sProcessUID, $sApplicationUID, $sTasKUID, $sUserUID)
    {
        \G::LoadClass("configuration");
        $conf = new \Configurations();
        $confEnvSetting = $conf->getFormats();
        //verifica si la tabla OBJECT_PERMISSION
        $cases = new \cases();
        $cases->verifyTable();
        $listing = false;
        $oPluginRegistry = & \PMPluginRegistry::getSingleton();
        if ($oPluginRegistry->existsTrigger(PM_CASE_DOCUMENT_LIST)) {
            $folderData = new \folderData(null, null, $sApplicationUID, null, $sUserUID);
            $folderData->PMType = "OUTPUT";
            $folderData->returnList = true;
            //$oPluginRegistry = & PMPluginRegistry::getSingleton();
            $listing = $oPluginRegistry->executeTriggers(PM_CASE_DOCUMENT_LIST, $folderData);
        }
        $aObjectPermissions = $cases->getAllObjects($sProcessUID, $sApplicationUID, $sTasKUID, $sUserUID);
        if (!is_array($aObjectPermissions)) {
            $aObjectPermissions = array('DYNAFORMS' => array(-1),'INPUT_DOCUMENTS' => array(-1),'OUTPUT_DOCUMENTS' => array(-1));
        }
        if (!isset($aObjectPermissions['DYNAFORMS'])) {
            $aObjectPermissions['DYNAFORMS'] = array(-1);
        } else {
            if (!is_array($aObjectPermissions['DYNAFORMS'])) {
                $aObjectPermissions['DYNAFORMS'] = array(-1);
            }
        }
        if (!isset($aObjectPermissions['INPUT_DOCUMENTS'])) {
            $aObjectPermissions['INPUT_DOCUMENTS'] = array(-1);
        } else {
            if (!is_array($aObjectPermissions['INPUT_DOCUMENTS'])) {
                $aObjectPermissions['INPUT_DOCUMENTS'] = array(-1);
            }
        }
        if (!isset($aObjectPermissions['OUTPUT_DOCUMENTS'])) {
            $aObjectPermissions['OUTPUT_DOCUMENTS'] = array(-1);
        } else {
            if (!is_array($aObjectPermissions['OUTPUT_DOCUMENTS'])) {
                $aObjectPermissions['OUTPUT_DOCUMENTS'] = array(-1);
            }
        }
        $aDelete = $cases->getAllObjectsFrom($sProcessUID, $sApplicationUID, $sTasKUID, $sUserUID, 'DELETE');
        $oAppDocument = new \AppDocument();
        $oCriteria = new \Criteria('workflow');
        $oCriteria->add(\AppDocumentPeer::APP_UID, $sApplicationUID);
        $oCriteria->add(\AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
        $oCriteria->add(\AppDocumentPeer::APP_DOC_STATUS, array('ACTIVE'), \Criteria::IN);
        //$oCriteria->add(AppDocumentPeer::APP_DOC_UID, $aObjectPermissions['OUTPUT_DOCUMENTS'], Criteria::IN);
        $oCriteria->add(
            $oCriteria->getNewCriterion(
                \AppDocumentPeer::APP_DOC_UID, $aObjectPermissions['OUTPUT_DOCUMENTS'], \Criteria::IN)->addOr($oCriteria->getNewCriterion(\AppDocumentPeer::USR_UID, $sUserUID, \Criteria::EQUAL))
        );
        $aConditions = array();
        $aConditions[] = array(\AppDocumentPeer::APP_UID, \AppDelegationPeer::APP_UID);
        $aConditions[] = array(\AppDocumentPeer::DEL_INDEX, \AppDelegationPeer::DEL_INDEX);
        $oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
        $oCriteria->add(\AppDelegationPeer::PRO_UID, $sProcessUID);
        $oCriteria->addAscendingOrderByColumn(\AppDocumentPeer::APP_DOC_INDEX);
        $oDataset = \AppDocumentPeer::doSelectRS($oCriteria);
        $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
        $oDataset->next();
        $aOutputDocuments = array();
        $aOutputDocuments[] = array(
            'APP_DOC_UID' => 'char',
            'DOC_UID' => 'char',
            'APP_DOC_COMMENT' => 'char',
            'APP_DOC_FILENAME' => 'char',
            'APP_DOC_INDEX' => 'integer'
        );
        $oUser = new \Users();
        while ($aRow = $oDataset->getRow()) {
            $oCriteria2 = new \Criteria('workflow');
            $oCriteria2->add(\AppDelegationPeer::APP_UID, $sApplicationUID);
            $oCriteria2->add(\AppDelegationPeer::DEL_INDEX, $aRow['DEL_INDEX']);
            $oDataset2 = \AppDelegationPeer::doSelectRS($oCriteria2);
            $oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
            $oDataset2->next();
            $aRow2 = $oDataset2->getRow();
            $oTask = new \Task();
            if ($oTask->taskExists($aRow2['TAS_UID'])) {
                $aTask = $oTask->load($aRow2['TAS_UID']);
            } else {
                $aTask = array('TAS_TITLE' => '(TASK DELETED)');
            }
            $lastVersion = $oAppDocument->getLastDocVersion($aRow['DOC_UID'], $sApplicationUID);
            if ($lastVersion == $aRow['DOC_VERSION']) {
                //Only show last document Version
                $aAux = $oAppDocument->load($aRow['APP_DOC_UID'], $aRow['DOC_VERSION']);
                //Get output Document information
                $oOutputDocument = new \OutputDocument();
                $aGields = $oOutputDocument->load($aRow['DOC_UID']);
                //OUTPUTDOCUMENT
                $outDocTitle = $aGields['OUT_DOC_TITLE'];
                switch ($aGields['OUT_DOC_GENERATE']) {
                    //G::LoadTranslation(ID_DOWNLOAD)
                    case "PDF":
                        $fileDoc = 'javascript:alert("NO DOC")';
                        $fileDocLabel = " ";
                        $filePdf = 'cases_ShowOutputDocument?a=' .
                            $aRow['APP_DOC_UID'] . '&v=' . $aRow['DOC_VERSION'] . '&ext=pdf&random=' . rand();
                        $filePdfLabel = ".pdf";
                        if (is_array($listing)) {
                            foreach ($listing as $folderitem) {
                                if (($folderitem->filename == $aRow['APP_DOC_UID']) && ($folderitem->type == "PDF")) {
                                    $filePdfLabel = \G::LoadTranslation('ID_GET_EXTERNAL_FILE') . " .pdf";
                                    $filePdf = $folderitem->downloadScript;
                                    continue;
                                }
                            }
                        }
                        break;
                    case "DOC":
                        $fileDoc = 'cases_ShowOutputDocument?a=' .
                            $aRow['APP_DOC_UID'] . '&v=' . $aRow['DOC_VERSION'] . '&ext=doc&random=' . rand();
                        $fileDocLabel = ".doc";
                        $filePdf = 'javascript:alert("NO PDF")';
                        $filePdfLabel = " ";
                        if (is_array($listing)) {
                            foreach ($listing as $folderitem) {
                                if (($folderitem->filename == $aRow['APP_DOC_UID']) && ($folderitem->type == "DOC")) {
                                    $fileDocLabel = \G::LoadTranslation('ID_GET_EXTERNAL_FILE') . " .doc";
                                    $fileDoc = $folderitem->downloadScript;
                                    continue;
                                }
                            }
                        }
                        break;
                    case "BOTH":
                        $fileDoc = 'cases_ShowOutputDocument?a=' .
                            $aRow['APP_DOC_UID'] . '&v=' . $aRow['DOC_VERSION'] . '&ext=doc&random=' . rand();
                        $fileDocLabel = ".doc";
                        if (is_array($listing)) {
                            foreach ($listing as $folderitem) {
                                if (($folderitem->filename == $aRow['APP_DOC_UID']) && ($folderitem->type == "DOC")) {
                                    $fileDocLabel = G::LoadTranslation('ID_GET_EXTERNAL_FILE') . " .doc";
                                    $fileDoc = $folderitem->downloadScript;
                                    continue;
                                }
                            }
                        }
                        $filePdf = 'cases_ShowOutputDocument?a=' .
                            $aRow['APP_DOC_UID'] . '&v=' . $aRow['DOC_VERSION'] . '&ext=pdf&random=' . rand();
                        $filePdfLabel = ".pdf";

                        if (is_array($listing)) {
                            foreach ($listing as $folderitem) {
                                if (($folderitem->filename == $aRow['APP_DOC_UID']) && ($folderitem->type == "PDF")) {
                                    $filePdfLabel = \G::LoadTranslation('ID_GET_EXTERNAL_FILE') . " .pdf";
                                    $filePdf = $folderitem->downloadScript;
                                    continue;
                                }
                            }
                        }
                        break;
                }
                try {
                    $aAux1 = $oUser->load($aAux['USR_UID']);
                    $sUser = $conf->usersNameFormatBySetParameters($confEnvSetting["format"], $aAux1["USR_USERNAME"], $aAux1["USR_FIRSTNAME"], $aAux1["USR_LASTNAME"]);
                } catch (\Exception $oException) {
                    $sUser = '******';
                }
                //if both documents were generated, we choose the pdf one, only if doc was
                //generate then choose the doc file.
                $firstDocLink = $filePdf;
                $firstDocLabel = $filePdfLabel;
                if ($aGields['OUT_DOC_GENERATE'] == 'DOC') {
                    $firstDocLink = $fileDoc;
                    $firstDocLabel = $fileDocLabel;
                }
                $aFields = array(
                    'APP_DOC_UID' => $aAux['APP_DOC_UID'],
                    'DOC_UID' => $aAux['DOC_UID'],
                    'APP_DOC_COMMENT' => $aAux['APP_DOC_COMMENT'],
                    'APP_DOC_FILENAME' => $aAux['APP_DOC_FILENAME'],
                    'APP_DOC_INDEX' => $aAux['APP_DOC_INDEX'],
                    'ORIGIN' => $aTask['TAS_TITLE'],
                    'CREATE_DATE' => $aAux['APP_DOC_CREATE_DATE'],
                    'CREATED_BY' => $sUser,
                    'FILEDOC' => $fileDoc,
                    'FILEPDF' => $filePdf,
                    'OUTDOCTITLE' => $outDocTitle,
                    'DOC_VERSION' => $aAux['DOC_VERSION'],
                    'TYPE' => $aAux['APP_DOC_TYPE'] . ' ' . $aGields['OUT_DOC_GENERATE'],
                    'DOWNLOAD_LINK' => $firstDocLink,
                    'DOWNLOAD_FILE' => $aAux['APP_DOC_FILENAME'] . $firstDocLabel
                );
                if (trim($fileDocLabel) != '') {
                    $aFields['FILEDOCLABEL'] = $fileDocLabel;
                }
                if (trim($filePdfLabel) != '') {
                    $aFields['FILEPDFLABEL'] = $filePdfLabel;
                }
                if ($aFields['APP_DOC_FILENAME'] != '') {
                    $aFields['TITLE'] = $aFields['APP_DOC_FILENAME'];
                } else {
                    $aFields['TITLE'] = $aFields['APP_DOC_COMMENT'];
                }
                //$aFields['POSITION'] = $_SESSION['STEP_POSITION'];
                $aFields['CONFIRM'] = \G::LoadTranslation('ID_CONFIRM_DELETE_ELEMENT');
                if (in_array($aRow['APP_DOC_UID'], $aObjectPermissions['OUTPUT_DOCUMENTS'])) {
                    if (in_array($aRow['APP_DOC_UID'], $aDelete['OUTPUT_DOCUMENTS'])) {
                        $aFields['ID_DELETE'] = \G::LoadTranslation('ID_DELETE');
                    }
                }
                $aOutputDocuments[] = $aFields;
            }
            $oDataset->next();
        }
        global $_DBArray;
        $_DBArray['outputDocuments'] = $aOutputDocuments;
        \G::LoadClass('ArrayPeer');
        $oCriteria = new \Criteria('dbarray');
        $oCriteria->setDBArrayTable('outputDocuments');
        $oCriteria->addDescendingOrderByColumn('CREATE_DATE');
        return $oCriteria;
    }
Пример #14
0
 /**
  * Retrieve object using using composite pkey values.
  * @param string $app_doc_uid
  * @param int $doc_version
  * @param      Connection $con
  * @return     AppDocument
  */
 public static function retrieveByPK($app_doc_uid, $doc_version, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $criteria = new Criteria();
     $criteria->add(AppDocumentPeer::APP_DOC_UID, $app_doc_uid);
     $criteria->add(AppDocumentPeer::DOC_VERSION, $doc_version);
     $v = AppDocumentPeer::doSelect($criteria, $con);
     return !empty($v) ? $v[0] : null;
 }
Пример #15
0
         $sOptions .= '<td width="100%" class="treeNode"><a style="' . ($_GET['TYPE'] == 'OUTPUT_DOCUMENT' && ($_GET['UID'] == $aRow->getStepUidObj() && $_GET['ACTION'] == 'GENERATE') ? 'background-color:orange;color:white;padding-left:5px;padding-right:5px;' : '') . '" href="../cases/cases_Step?TYPE=' . $aRow->getStepTypeObj() . '&UID=' . $aRow->getStepUidObj() . '&POSITION=' . $aRow->getStepPosition() . '&ACTION=GENERATE">' . G::LoadTranslation('ID_GENERATE') . '</a></td>';
     }
     $sOptions .= '</tr></table>';
     $oAux =& $oNode->addChild($aRow->getStepUid() . '_node', $sOptions, array('nodeType' => 'child'));
     break;
 case 'INPUT_DOCUMENT':
     $sOptions = '<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr>';
     $sOptions .= '<td width="100%" class="treeNode"><a style="' . ($_GET['TYPE'] == 'INPUT_DOCUMENT' && ($_GET['UID'] == $aRow->getStepUidObj() && $_GET['ACTION'] == 'ATTACH') ? 'background-color:orange;color:white;padding-left:5px;padding-right:5px;' : '') . '" href="../cases/cases_Step?TYPE=' . $aRow->getStepTypeObj() . '&UID=' . $aRow->getStepUidObj() . '&POSITION=' . $aRow->getStepPosition() . '&ACTION=ATTACH">' . ($sType == 'REAL' ? G::LoadTranslation('ID_NEW') : G::LoadTranslation('ID_ATTACH')) . '</a></td>';
     $sOptions .= '</tr></table>';
     $oCri = new Criteria();
     $oCri->add(AppDocumentPeer::APP_UID, $_SESSION['APPLICATION']);
     $oCri->add(AppDocumentPeer::DEL_INDEX, $_SESSION['INDEX']);
     $oCri->add(AppDocumentPeer::DOC_UID, $aRow->getStepUidObj());
     $oCri->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');
     $oCri->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX);
     $aDocuments = AppDocumentPeer::doSelect($oCri);
     if (sizeof($aDocuments) !== 0) {
         $i = 1;
         $sOptions .= '<table width="90%" align="center" cellpadding="0" cellspacing="0" border="0">';
         reset($aDocuments);
         while ($oDocument = current($aDocuments)) {
             $aRow2 = $oDocument->toArray(BasePeer::TYPE_FIELDNAME);
             $oAux1 = new AppDocument();
             $aAux = $oAux1->load($aRow2['APP_DOC_UID']);
             $sOptions .= '<tr>';
             if ($aAux['APP_DOC_FILENAME'] != '') {
                 $sAux = $aAux['APP_DOC_FILENAME'];
             } else {
                 $sAux = $aAux['APP_DOC_COMMENT'];
             }
             $sOptions .= '<td width="5%">' . $i . '.</td><td width="55%" class="treeNodeAlternate"><input type="text" readonly="readonly" style="font:inherit;border:none;width:100%;" value="' . htmlentities($sAux, ENT_QUOTES, "utf-8") . '" title="' . $sAux . '" /></td>';
Пример #16
0
 /**
  * Delete InputDocument
  *
  * @param string $inputDocumentUid
  *
  * return array Return an array with data of an InputDocument
  */
 public function removeInputDocument($inputDocumentUid)
 {
     try {
         $oAppDocument = \AppDocumentPeer::retrieveByPK( $inputDocumentUid, 1 );
         if (is_null( $oAppDocument ) || $oAppDocument->getAppDocStatus() == 'DELETED') {
             throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($inputDocumentUid)));
         }
         \G::LoadClass('wsBase');
         $ws = new \wsBase();
         $ws->removeDocument($inputDocumentUid);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Пример #17
0
 $folderId = $oFolder->createFromPath($aOD['OUT_DOC_DESTINATION_PATH']);
 //Tags
 $fileTags = $oFolder->parseTags($aOD['OUT_DOC_TAGS']);
 //Get last Document Version and apply versioning if is enabled
 $oAppDocument = new AppDocument();
 $lastDocVersion = $oAppDocument->getLastDocVersion($_GET['UID'], $_SESSION['APPLICATION']);
 //if(($aOD['OUT_DOC_VERSIONING'])||($lastDocVersion==0)){
 //  $lastDocVersion++;
 //}
 $oCriteria = new Criteria('workflow');
 $oCriteria->add(AppDocumentPeer::APP_UID, $_SESSION['APPLICATION']);
 //$oCriteria->add(AppDocumentPeer::DEL_INDEX,    $_SESSION['INDEX']);
 $oCriteria->add(AppDocumentPeer::DOC_UID, $_GET['UID']);
 $oCriteria->add(AppDocumentPeer::DOC_VERSION, $lastDocVersion);
 $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT');
 $oDataset = AppDocumentPeer::doSelectRS($oCriteria);
 $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
 $oDataset->next();
 if ($aOD['OUT_DOC_VERSIONING'] && $lastDocVersion != 0) {
     //Create new Version of current output
     $lastDocVersion++;
     if ($aRow = $oDataset->getRow()) {
         $aFields = array('APP_DOC_UID' => $aRow['APP_DOC_UID'], 'APP_UID' => $_SESSION['APPLICATION'], 'DEL_INDEX' => $_SESSION['INDEX'], 'DOC_UID' => $_GET['UID'], 'DOC_VERSION' => $lastDocVersion + 1, 'USR_UID' => $_SESSION['USER_LOGGED'], 'APP_DOC_TYPE' => 'OUTPUT', 'APP_DOC_CREATE_DATE' => date('Y-m-d H:i:s'), 'APP_DOC_FILENAME' => $sFilename, 'FOLDER_UID' => $folderId, 'APP_DOC_TAGS' => $fileTags);
         $oAppDocument = new AppDocument();
         $oAppDocument->create($aFields);
         $sDocUID = $aRow['APP_DOC_UID'];
     }
 } else {
     //No versioning so Update a current Output or Create new if no exist
     if ($aRow = $oDataset->getRow()) {
         //Update
Пример #18
0
    /**
     * Populates the object using an array.
     *
     * This is particularly useful when populating an object from one of the
     * request arrays (e.g. $_POST).  This method goes through the column
     * names, checking to see whether a matching key exists in populated
     * array. If so the setByName() method is called for that column.
     *
     * You can specify the key type of the array by additionally passing one
     * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME,
     * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId')
     *
     * @param      array  $arr     An array to populate the object from.
     * @param      string $keyType The type of keys the array uses.
     * @return     void
     */
    public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
    {
        $keys = AppDocumentPeer::getFieldNames($keyType);

        if (array_key_exists($keys[0], $arr)) {
            $this->setAppDocUid($arr[$keys[0]]);
        }

        if (array_key_exists($keys[1], $arr)) {
            $this->setDocVersion($arr[$keys[1]]);
        }

        if (array_key_exists($keys[2], $arr)) {
            $this->setAppUid($arr[$keys[2]]);
        }

        if (array_key_exists($keys[3], $arr)) {
            $this->setDelIndex($arr[$keys[3]]);
        }

        if (array_key_exists($keys[4], $arr)) {
            $this->setDocUid($arr[$keys[4]]);
        }

        if (array_key_exists($keys[5], $arr)) {
            $this->setUsrUid($arr[$keys[5]]);
        }

        if (array_key_exists($keys[6], $arr)) {
            $this->setAppDocType($arr[$keys[6]]);
        }

        if (array_key_exists($keys[7], $arr)) {
            $this->setAppDocCreateDate($arr[$keys[7]]);
        }

        if (array_key_exists($keys[8], $arr)) {
            $this->setAppDocIndex($arr[$keys[8]]);
        }

        if (array_key_exists($keys[9], $arr)) {
            $this->setFolderUid($arr[$keys[9]]);
        }

        if (array_key_exists($keys[10], $arr)) {
            $this->setAppDocPlugin($arr[$keys[10]]);
        }

        if (array_key_exists($keys[11], $arr)) {
            $this->setAppDocTags($arr[$keys[11]]);
        }

        if (array_key_exists($keys[12], $arr)) {
            $this->setAppDocStatus($arr[$keys[12]]);
        }

        if (array_key_exists($keys[13], $arr)) {
            $this->setAppDocStatusDate($arr[$keys[13]]);
        }

        if (array_key_exists($keys[14], $arr)) {
            $this->setAppDocFieldname($arr[$keys[14]]);
        }

    }