예제 #1
0
 function index($httpData)
 {
     if (!isset($httpData->id)) {
         throw new Exception('The Process ID was not set!');
     }
     require_once 'classes/model/Process.php';
     $process = ProcessPeer::retrieveByPK($httpData->id);
     if (get_class($process) != 'Process') {
         throw new Exception("The Process with UID: {$httpData->id} doesn't exist!");
     }
     $_SESSION['PROCESS'] = $httpData->id;
     $_SESSION['PROCESSMAP'] = 'BPMN';
     $this->includeExtJS('bpmn/MyWorkflow', true);
     $this->includeExtJS('bpmn/pmosExt', true);
     $this->includeExtJS('bpmn/TaskContext', true);
     $this->includeExtJS('bpmn/designerComponents', true);
     $this->includeExtJS('bpmn/designer', true);
     $this->includeExtJS('bpmn/Annotation', true);
     $this->includeExtJS('bpmn/bpmnShapes', true);
     $this->includeExtJS('bpmn/EventEmptyStart');
     $this->includeExtJS('bpmn/EventMessageStart');
     $this->includeExtJS('bpmn/EventTimerStart');
     $this->includeExtJS('bpmn/EventEmptyInter');
     $this->includeExtJS('bpmn/EventMessageRecInter');
     $this->includeExtJS('bpmn/EventMessageSendInter');
     $this->includeExtJS('bpmn/EventTimerInter');
     $this->includeExtJS('bpmn/EventEmptyEnd');
     $this->includeExtJS('bpmn/EventMessageEnd');
     $this->includeExtJS('bpmn/GatewayInclusive');
     $this->includeExtJS('bpmn/GatewayExclusiveData');
     $this->includeExtJS('bpmn/GatewayParallel');
     $this->includeExtJS('bpmn/GridPanel');
     $this->includeExtJS('bpmn/SubProcess');
     $this->includeExtJS('bpmn/ProcessOptions', true);
     $this->includeExtJS('bpmn/ProcessMapContext', true);
     $this->includeExtJS('bpmn/ProcessOptions', true);
     $this->setJSVar('pro_uid', $httpData->id);
     $this->setJSVar('pro_title', $process->getProTitle());
     $this->setView('bpmn/designer');
     G::RenderPage('publish', 'extJs');
 }
예제 #2
0
$html .= '<label for="prefix_label">' . $filter->xssFilterHard(G::LoadTranslation('ID_PREFIX')) . '</label>';
$html .= '</td>';
$html .= '<td width="25%">';
$html .= '<label for="variables_label">' . $filter->xssFilterHard(G::LoadTranslation('ID_SEARCH')) . '</label>';
$html .= '</td>';
$html .= '</tr>';
$html .= '<tr>';
$html .= '<td width="25%">';
$html .= '<select name="type_variables" id="type_variables">';
$html .= '<option value="all">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_ALL_VARIABLES')) . '</option>';
$html .= '<option value="system">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES')) . '</option>';
$html .= '<option value="process">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_PROCESS_VARIABLES')) . '</option>';
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(BpmnProjectPeer::PRJ_UID);
$oCriteria->add(BpmnProjectPeer::PRJ_UID, $_REQUEST['sProcess']);
$oDataset = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro'));
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$row = $oDataset->getRow();
$isBpmn = false;
if (isset($row["PRJ_UID"])) {
    $isBpmn = true;
    $html .= '<option value="grid">' . $filter->xssFilterHard(G::LoadTranslation('ID_TINY_GRID_VARIABLES')) . '</option>';
}
$html .= '</select> &nbsp;&nbsp;&nbsp;&nbsp;';
$html .= '</td>';
$html .= '<td width="25%">';
$html .= '<select name="prefix" id="prefix">';
if ($isBpmn) {
    $html .= '<option value="ID_TO_STRING">@@</option>';
    $html .= '<option value="ID_TO_FLOAT">@#</option>';
예제 #3
0
 function getProcessArray($action, $userUid)
 {
     global $oAppCache;
     $processes = array();
     $processes[] = array("", G::LoadTranslation("ID_ALL_PROCESS"));
     switch ($action) {
         case "simple_search":
         case "search":
             //In search action, the query to obtain all process is too slow, so we need to query directly to
             //process and content tables, and for that reason we need the current language in AppCacheView.
             G::loadClass("configuration");
             $oConf = new Configurations();
             $oConf->loadConfig($x, "APP_CACHE_VIEW_ENGINE", "", "", "", "");
             $appCacheViewEngine = $oConf->aConfig;
             $lang = isset($appCacheViewEngine["LANG"]) ? $appCacheViewEngine["LANG"] : "en";
             $cProcess = new Criteria("workflow");
             $cProcess->clearSelectColumns();
             $cProcess->addSelectColumn(ProcessPeer::PRO_UID);
             $cProcess->addSelectColumn(ContentPeer::CON_VALUE);
             $del = DBAdapter::getStringDelimiter();
             $conds = array();
             $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID);
             $conds[] = array(ContentPeer::CON_CATEGORY, $del . "PRO_TITLE" . $del);
             $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del);
             $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN);
             $cProcess->add(ProcessPeer::PRO_STATUS, "ACTIVE");
             $oDataset = ProcessPeer::doSelectRS($cProcess);
             $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
             $oDataset->next();
             while ($aRow = $oDataset->getRow()) {
                 $processes[] = array($aRow["PRO_UID"], $aRow["CON_VALUE"]);
                 $oDataset->next();
             }
             return $processes;
             break;
         case "consolidated":
         default:
             $cProcess = $oAppCache->getToDoListCriteria($userUid);
             //fast enough
             break;
     }
     $cProcess->clearSelectColumns();
     $cProcess->setDistinct();
     $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID);
     $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE);
     $oDataset = AppCacheViewPeer::doSelectRS($cProcess);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     while ($aRow = $oDataset->getRow()) {
         $processes[] = array($aRow["PRO_UID"], $aRow["APP_PRO_TITLE"]);
         $oDataset->next();
     }
     return $processes;
 }
예제 #4
0
require_once 'classes/model/DbSource.php';
require_once 'classes/model/Content.php';
$G_PUBLISH = new Publisher();
G::LoadClass('processMap');
G::LoadClass('ArrayPeer');
G::LoadClass('dbConnections');
global $_DBArray;
switch ($action) {
    case 'loadInfoAssigConnecctionDB':
        $oStep = new Step();
        return print $oStep->loadInfoAssigConnecctionDB($_POST['PRO_UID'], $_POST['DBS_UID']);
        break;
    case 'showDbConnectionsList':
        $oProcess = new processMap();
        $oCriteria = $oProcess->getConditionProcessList();
        if (ProcessPeer::doCount($oCriteria) > 0) {
            $aProcesses = array();
            $aProcesses[] = array('PRO_UID' => 'char', 'PRO_TITLE' => 'char');
            $oDataset = ArrayBasePeer::doSelectRS($oCriteria);
            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
            $oDataset->next();
            $sProcessUID = '';
            while ($aRow = $oDataset->getRow()) {
                if ($sProcessUID == '') {
                    $sProcessUID = $aRow['PRO_UID'];
                }
                $aProcesses[] = array('PRO_UID' => isset($aRow['PRO_UID']) ? $aRow['PRO_UID'] : '', 'PRO_TITLE' => isset($aRow['PRO_TITLE']) ? $aRow['PRO_TITLE'] : '');
                $oDataset->next();
            }
            $_DBArray['PROCESSES'] = $aProcesses;
            $_SESSION['_DBArray'] = $_DBArray;
예제 #5
0
    /**

     * get all groups

     *

     * @param none

     * @return $result will return an object

     */

    public function processList ()

    {

        try {

            $result = array ();

            $oCriteria = new Criteria( 'workflow' );

            //$oCriteria->add(ProcessPeer::PRO_STATUS , 'ACTIVE');

            $oCriteria->add( ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL );

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

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

            $oDataset->next();



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

                $oProcess = new Process();

                $arrayProcess = $oProcess->Load( $aRow['PRO_UID'] );

                $result[] = array ('guid' => $aRow['PRO_UID'],'name' => $arrayProcess['PRO_TITLE']

                );

                $oDataset->next();

            }



            return $result;

        } catch (Exception $e) {

            $result[] = array ('guid' => $e->getMessage(),'name' => $e->getMessage()

            );



            return $result;

        }

    }
예제 #6
0
    public function listLanguage($dyn_uid)
    {
        $list = array();
        $a = new Criteria("workflow");
        $a->addSelectColumn(DynaformPeer::DYN_LABEL);
        $a->add(DynaformPeer::DYN_UID, $dyn_uid, Criteria::EQUAL);
        $ds = ProcessPeer::doSelectRS($a);
        $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
        $ds->next();
        $row = $ds->getRow();

        if ($row["DYN_LABEL"] === null || $row["DYN_LABEL"] === "") {
            return $list;
        }

        $dyn_label = \G::json_decode($row["DYN_LABEL"]);
        foreach ($dyn_label as $key => $value) {
            array_push($list, array(
                "Lang" => $key,
                "File-Name" => isset($value->{"File-Name"}) ? $value->{"File-Name"} : "",
                "Project-Id-Version" => isset($value->{"Project-Id-Version"}) ? $value->{"Project-Id-Version"} : "",
                "POT-Creation-Date" => isset($value->{"POT-Creation-Date"}) ? $value->{"POT-Creation-Date"} : "",
                "PO-Revision-Date" => isset($value->{"PO-Revision-Date"}) ? $value->{"PO-Revision-Date"} : "",
                "Last-Translator" => isset($value->{"Last-Translator"}) ? $value->{"Last-Translator"} : "",
                "Language-Team" => isset($value->{"Language-Team"}) ? $value->{"Language-Team"} : "",
                "MIME-Version" => isset($value->{"MIME-Version"}) ? $value->{"MIME-Version"} : "",
                "Content-Type" => isset($value->{"Content-Type"}) ? $value->{"Content-Type"} : "",
                "Content-Transfer_Encoding" => isset($value->{"Content-Transfer_Encoding"}) ? $value->{"Content-Transfer_Encoding"} : "",
                "X-Poedit-Language" => isset($value->{"X-Poedit-Language"}) ? $value->{"X-Poedit-Language"} : "",
                "X-Poedit-Country" => isset($value->{"X-Poedit-Country"}) ? $value->{"X-Poedit-Country"} : "",
                "X-Poedit-SourceCharset" => isset($value->{"X-Poedit-SourceCharset"}) ? $value->{"X-Poedit-SourceCharset"} : "",
                "Content-Transfer-Encoding" => isset($value->{"Content-Transfer-Encoding"}) ? $value->{"Content-Transfer-Encoding"} : ""
            ));
        }
        return $list;
    }
예제 #7
0
 /**
  * PROPFIND method handler
  *
  * @param array general parameter passing array
  * @param array return array for file properties
  * @return bool true on success
  */
 function PROPFIND(&$options, &$files)
 {
     $paths = $this->paths;
     // prepare property array
     $files["files"] = array();
     $pathClasses = PATH_DB . PATH_SEP . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP;
     if (count($paths) == 0 && is_dir($pathClasses)) {
         $props = array();
         $props[] = $this->mkprop("displayname", 'Classes');
         $props[] = $this->mkprop("creationdate", filectime($pathClasses));
         $props[] = $this->mkprop("getlastmodified", filemtime($pathClasses));
         $props[] = $this->mkprop("lastaccessed", filemtime($pathClasses));
         $props[] = $this->mkprop("resourcetype", 'collection');
         $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
         $files["files"][] = array('path' => 'classes', 'props' => $props);
     }
     if (count($paths) > 0 && $paths[0] == 'classes' && is_dir($pathClasses)) {
         // try to open directory
         $handle = @opendir($pathClasses);
         if ($handle) {
             while ($filename = readdir($handle)) {
                 $ext = array_pop(explode('.', $filename));
                 if ($filename != "." && $filename != ".." && !is_dir($pathClasses . $filename) && $ext == 'php') {
                     $props = array();
                     $props[] = $this->mkprop("displayname", $filename);
                     $props[] = $this->mkprop("creationdate", filectime($pathClasses . $filename));
                     $props[] = $this->mkprop("getlastmodified", filemtime($pathClasses . $filename));
                     $props[] = $this->mkprop("getetag", fileatime($pathClasses . $filename));
                     $props[] = $this->mkprop("lastaccessed", filemtime($pathClasses . $filename));
                     $props[] = $this->mkprop("resourcetype", '');
                     $props[] = $this->mkprop("getcontenttype", 'text/plain');
                     $props[] = $this->mkprop("getcontentlength", filesize($pathClasses . $filename));
                     if (count($paths) == 1 || count($paths) == 2 && $paths[1] == $filename) {
                         $files["files"][] = array('path' => "classes/{$filename}", 'props' => $props);
                     }
                 }
             }
         }
     }
     //path classes
     $pathProcesses = PATH_DB . SYS_SYS . PATH_SEP;
     if (count($paths) == 0 && is_dir($pathProcesses)) {
         $props = array();
         $props[] = $this->mkprop("displayname", 'Processes');
         $props[] = $this->mkprop("creationdate", filectime($pathProcesses));
         $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses));
         $props[] = $this->mkprop("resourcetype", 'collection');
         $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
         $files["files"][] = array('path' => 'processes', 'props' => $props);
     }
     //list all active processes
     if (count($paths) == 1 && $paths[0] == 'processes' && is_dir($pathProcesses)) {
         // try to get the process directory list
         G::LoadClass('processMap');
         G::LoadClass('model/Process');
         $oProcessMap = new processMap();
         $oProcess = new Process();
         $c = $oProcessMap->getConditionProcessList();
         $oDataset = ProcessPeer::doSelectRS($c);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         while ($aRow = $oDataset->getRow()) {
             if ($aRow['PRO_STATUS'] == 'ACTIVE') {
                 $aProcess = $oProcess->load($aRow['PRO_UID']);
                 $props = array();
                 $props[] = $this->mkprop("displayname", $aProcess['PRO_TITLE']);
                 $props[] = $this->mkprop("creationdate", filectime($pathProcesses));
                 $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses));
                 $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses));
                 $props[] = $this->mkprop("resourcetype", 'collection');
                 $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
                 $files["files"][] = array('path' => "processes/" . $aRow['PRO_UID'], 'props' => $props);
             }
             $oDataset->next();
         }
     }
     //dir of processes
     //content of any process  ( the three major folders of Processes )
     $pathXmlform = $pathProcesses . 'xmlForms' . PATH_SEP;
     if (count($paths) == 2 && $paths[0] == 'processes' && is_dir($pathProcesses)) {
         $props = array();
         $props[] = $this->mkprop("displayname", 'xmlforms');
         $props[] = $this->mkprop("creationdate", filectime($pathXmlform));
         $props[] = $this->mkprop("getlastmodified", filemtime($pathXmlform));
         $props[] = $this->mkprop("lastaccessed", filemtime($pathXmlform));
         $props[] = $this->mkprop("resourcetype", 'collection');
         $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
         $files["files"][] = array('path' => 'processes/' . $paths[1] . '/xmlforms', 'props' => $props);
         $props[] = $this->mkprop("displayname", 'mailTemplates');
         $props[] = $this->mkprop("creationdate", filectime($pathProcesses));
         $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses));
         $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses));
         $props[] = $this->mkprop("resourcetype", 'collection');
         $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
         $files["files"][] = array('path' => 'processes/' . $paths[1] . '/mailTemplates', 'props' => $props);
         $props[] = $this->mkprop("displayname", 'public_html');
         $props[] = $this->mkprop("creationdate", filectime($pathProcesses));
         $props[] = $this->mkprop("getlastmodified", filemtime($pathProcesses));
         $props[] = $this->mkprop("lastaccessed", filemtime($pathProcesses));
         $props[] = $this->mkprop("resourcetype", 'collection');
         $props[] = $this->mkprop("getcontenttype", 'httpd/unix-directory');
         $files["files"][] = array('path' => 'processes/' . $paths[1] . '/public_html', 'props' => $props);
     }
     //content of any processes
     //list available xmlforms
     if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'xmlforms' && is_dir($pathXmlform)) {
         $pathXmlform = $pathProcesses . 'xmlForms' . PATH_SEP . $paths[1] . PATH_SEP;
         $handle = @opendir($pathXmlform);
         if ($handle) {
             while ($filename = readdir($handle)) {
                 $ext = array_pop(explode('.', $filename));
                 if ($filename != "." && $filename != ".." && !is_dir($pathXmlform . $filename) && ($ext == 'xml' || $ext == 'html')) {
                     $props = array();
                     $props[] = $this->mkprop("displayname", $filename);
                     $props[] = $this->mkprop("creationdate", filectime($pathXmlform . $filename));
                     $props[] = $this->mkprop("getlastmodified", filemtime($pathXmlform . $filename));
                     $props[] = $this->mkprop("getetag", fileatime($pathXmlform . $filename));
                     $props[] = $this->mkprop("lastaccessed", filemtime($pathXmlform . $filename));
                     $props[] = $this->mkprop("resourcetype", '');
                     $props[] = $this->mkprop("getcontenttype", 'text/plain');
                     $props[] = $this->mkprop("getcontentlength", filesize($pathXmlform . $filename));
                     //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) )
                     $files["files"][] = array('path' => 'processes/' . $paths[1] . '/xmlforms/' . $filename, 'props' => $props);
                 }
             }
         }
     }
     //content of xmlforms
     //list available mailTemplates
     $pathTemplates = $pathProcesses . 'mailTemplates' . PATH_SEP;
     if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'mailTemplates' && is_dir($pathTemplates)) {
         $pathTemplates = $pathProcesses . 'mailTemplates' . PATH_SEP . $paths[1] . PATH_SEP;
         $handle = @opendir($pathTemplates);
         if ($handle) {
             while ($filename = readdir($handle)) {
                 $ext = array_pop(explode('.', $filename));
                 if ($filename != "." && $filename != ".." && !is_dir($pathTemplates . $filename)) {
                     $props = array();
                     $props[] = $this->mkprop("displayname", $filename);
                     $props[] = $this->mkprop("creationdate", filectime($pathTemplates . $filename));
                     $props[] = $this->mkprop("getlastmodified", filemtime($pathTemplates . $filename));
                     $props[] = $this->mkprop("getetag", fileatime($pathTemplates . $filename));
                     $props[] = $this->mkprop("lastaccessed", filemtime($pathTemplates . $filename));
                     $props[] = $this->mkprop("resourcetype", '');
                     $props[] = $this->mkprop("getcontenttype", 'text/plain');
                     $props[] = $this->mkprop("getcontentlength", filesize($pathTemplates . $filename));
                     //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) )
                     $files["files"][] = array('path' => 'processes/' . $paths[1] . '/mailTemplates/' . $filename, 'props' => $props);
                 }
             }
         }
     }
     //content of mailTemplates
     //list available public_html files
     $pathPublic = $pathProcesses . 'public' . PATH_SEP;
     if (count($paths) == 3 && $paths[0] == 'processes' && $paths[2] == 'public_html' && is_dir($pathTemplates)) {
         $pathPublic = $pathProcesses . 'public' . PATH_SEP . $paths[1] . PATH_SEP;
         $handle = @opendir($pathPublic);
         if ($handle) {
             while ($filename = readdir($handle)) {
                 $ext = array_pop(explode('.', $filename));
                 if ($filename != "." && $filename != ".." && !is_dir($pathPublic . $filename)) {
                     $props = array();
                     $props[] = $this->mkprop("displayname", $filename);
                     $props[] = $this->mkprop("creationdate", filectime($pathPublic . $filename));
                     $props[] = $this->mkprop("getlastmodified", filemtime($pathPublic . $filename));
                     $props[] = $this->mkprop("getetag", fileatime($pathPublic . $filename));
                     $props[] = $this->mkprop("lastaccessed", filemtime($pathPublic . $filename));
                     $props[] = $this->mkprop("resourcetype", '');
                     $props[] = $this->mkprop("getcontenttype", 'text/plain');
                     $props[] = $this->mkprop("getcontentlength", filesize($pathPublic . $filename));
                     //if ( count( $paths ) == 1 || ( count( $paths ) == 2 && $paths[1] == $filename ) )
                     $files["files"][] = array('path' => 'processes/' . $paths[1] . '/public_html/' . $filename, 'props' => $props);
                 }
             }
         }
     }
     //content of public_html files
     /*
         if ( 1 ) {
           $props = array ();
           $props[] = $this->mkprop("displayname",     print_r ($pathPublic, 1) );
           $props[] = $this->mkprop("creationdate",    filectime( PATH_DB ) );
           $props[] = $this->mkprop("getlastmodified", filemtime( PATH_DB ) );
           $props[] = $this->mkprop("resourcetype",    'collection' );
           $props[] = $this->mkprop("getcontenttype",  'httpd/unix-directory' );
           $files["files"][] = array ( 'path' => '/' , 'props' => $props);
         } */
     // ok, all done
     return true;
 }
 /**
  * Will return all the information of a WS.
  * - Status
  * - # of cases
  * - # of processes
  * - # of users
  * @param string $wsName
  * @return array
  */
 function getWorkspaceInfo($wsName)
 {
     $aResult = array('num_processes' => '0', 'num_cases' => '0');
     $result = array();
     require_once 'classes/model/Process.php';
     require_once 'classes/model/Application.php';
     require_once 'classes/model/Users.php';
     $Criteria = new Criteria('workflow');
     $Criteria->add(ProcessPeer::PRO_STATUS, 'ACTIVE', CRITERIA::EQUAL);
     $aResult['num_processes'] = ProcessPeer::doCount($Criteria);
     $Criteria = new Criteria('workflow');
     $Criteria->add(ApplicationPeer::APP_STATUS, 'COMPLETED', CRITERIA::NOT_EQUAL);
     $aResult['num_cases'] = ApplicationPeer::doCount($Criteria);
     $Criteria = new Criteria('workflow');
     $Criteria->add(UsersPeer::USR_STATUS, array('DELETED', 'DISABLED'), CRITERIA::NOT_IN);
     $aResult['num_users'] = UsersPeer::doCount($Criteria);
     return $aResult;
 }
예제 #9
0
 /**
  * Function updateTables
  * This function updated the Report Tables
  *
  * @access public
  * @param string $sProcessUid
  * @param string $sApplicationUid
  * @param string $iApplicationNumber
  * @param string $aFields
  * @return void
  */
 public function updateTables($sProcessUid, $sApplicationUid, $iApplicationNumber, $aFields)
 {
     try {
         $c = new Criteria('workflow');
         $c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
         $c->add(BpmnProjectPeer::PRJ_UID, $sProcessUid, Criteria::EQUAL);
         $ds = ProcessPeer::doSelectRS($c);
         $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $ds->next();
         $row = $ds->getRow();
         $isBpmn = isset($row['PRJ_UID']);
         if (!class_exists('ReportTablePeer')) {
             require_once 'classes/model/ReportTablePeer.php';
         }
         //get all Active Report Tables
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUid);
         $oCriteria->add(ReportTablePeer::REP_TAB_STATUS, 'ACTIVE');
         $oDataset = ReportTablePeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         $aVars = array();
         while ($aRow = $oDataset->getRow()) {
             $aRow['REP_TAB_NAME'] = $this->sPrefix . $aRow['REP_TAB_NAME'];
             $PropelDatabase = $this->chooseDB($aRow['REP_TAB_CONNECTION']);
             $con = Propel::getConnection($PropelDatabase);
             $stmt = $con->createStatement();
             switch (DB_ADAPTER) {
                 case 'mysql':
                     $aTableFields = $this->getTableVars($aRow['REP_TAB_UID'], true);
                     if ($aRow['REP_TAB_TYPE'] == 'NORMAL') {
                         $sqlExists = "SELECT * FROM `" . $aRow['REP_TAB_NAME'] . "` WHERE APP_UID = '" . $sApplicationUid . "'";
                         $rsExists = $stmt->executeQuery($sqlExists, ResultSet::FETCHMODE_ASSOC);
                         $rsExists->next();
                         $aRow2 = $rsExists->getRow();
                         if (is_array($aRow2)) {
                             $sQuery = 'UPDATE `' . $aRow['REP_TAB_NAME'] . '` SET ';
                             foreach ($aTableFields as $aField) {
                                 $sQuery .= '`' . $aField['sFieldName'] . '` = ';
                                 if (!$isBpmn && !isset($aFields[$aField['sFieldName']])) {
                                     foreach ($aFields as $row) {
                                         if (is_array($row) && isset($row[count($row)])) {
                                             $aFields = $row[count($row)];
                                         }
                                     }
                                 }
                                 switch ($aField['sType']) {
                                     case 'number':
                                         $sQuery .= (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0') . ',';
                                         break;
                                     case 'char':
                                     case 'text':
                                         if (!isset($aFields[$aField['sFieldName']])) {
                                             $aFields[$aField['sFieldName']] = '';
                                         }
                                         if (!isset($aFields[$aField['sFieldName'] . '_label'])) {
                                             $aFields[$aField['sFieldName'] . '_label'] = '';
                                         }
                                         if (is_array($aFields[$aField['sFieldName']])) {
                                             $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']][0] : '') . "',";
                                         } else {
                                             if (!isset($aFields[$aField['sFieldName'] . '_label'])) {
                                                 $aFields[$aField['sFieldName'] . '_label'] = '';
                                             }
                                             if ($aFields[$aField['sFieldName']] == $aFields[$aField['sFieldName'] . '_label']) {
                                                 $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? @mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "',";
                                             } else {
                                                 $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? @mysql_real_escape_string($aFields[$aField['sFieldName'] . '_label']) : '') . "',";
                                             }
                                         }
                                         break;
                                     case 'date':
                                         $mysqlDate = isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '';
                                         if ($mysqlDate != '') {
                                             $mysqlDate = str_replace('/', '-', $mysqlDate);
                                             $mysqlDate = date('Y-m-d', strtotime($mysqlDate));
                                         }
                                         $value = trim($mysqlDate) != '' ? "'" . $mysqlDate . "'" : 'NULL';
                                         $sQuery .= $value . ",";
                                         break;
                                 }
                             }
                             $sQuery = substr($sQuery, 0, -1);
                             $sQuery .= " WHERE APP_UID = '" . $sApplicationUid . "'";
                         } else {
                             $sQuery = 'INSERT INTO `' . $aRow['REP_TAB_NAME'] . '` (';
                             $sQuery .= '`APP_UID`,`APP_NUMBER`';
                             foreach ($aTableFields as $aField) {
                                 $sQuery .= ',`' . $aField['sFieldName'] . '`';
                             }
                             $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber;
                             foreach ($aTableFields as $aField) {
                                 switch ($aField['sType']) {
                                     case 'number':
                                         $sQuery .= ',' . (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0');
                                         break;
                                     case 'char':
                                     case 'text':
                                         if (!isset($aFields[$aField['sFieldName']])) {
                                             $aFields[$aField['sFieldName']] = '';
                                         }
                                         $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "'";
                                         break;
                                     case 'date':
                                         $mysqlDate = isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '';
                                         if ($mysqlDate != '') {
                                             $mysqlDate = str_replace('/', '-', $mysqlDate);
                                             $mysqlDate = date('Y-m-d', strtotime($mysqlDate));
                                         }
                                         $value = trim($mysqlDate) != '' ? "'" . $mysqlDate . "'" : 'NULL';
                                         $sQuery .= "," . $value;
                                         break;
                                 }
                             }
                             $sQuery .= ')';
                         }
                         $rs = $stmt->executeQuery($sQuery);
                     } else {
                         //remove old rows from database
                         $sqlDelete = 'DELETE FROM `' . $aRow['REP_TAB_NAME'] . "` WHERE APP_UID = '" . $sApplicationUid . "'";
                         $rsDelete = $stmt->executeQuery($sqlDelete);
                         $aAux = explode('-', $aRow['REP_TAB_GRID']);
                         if (isset($aFields[$aAux[0]])) {
                             if (is_array($aFields[$aAux[0]])) {
                                 foreach ($aFields[$aAux[0]] as $iRow => $aGridRow) {
                                     $sQuery = 'INSERT INTO `' . $aRow['REP_TAB_NAME'] . '` (';
                                     $sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`';
                                     foreach ($aTableFields as $aField) {
                                         $sQuery .= ',`' . $aField['sFieldName'] . '`';
                                     }
                                     $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber . ',' . $iRow;
                                     foreach ($aTableFields as $aField) {
                                         switch ($aField['sType']) {
                                             case 'number':
                                                 $sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (double) str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0');
                                                 break;
                                             case 'char':
                                             case 'text':
                                                 if (!isset($aGridRow[$aField['sFieldName']])) {
                                                     $aGridRow[$aField['sFieldName']] = '';
                                                 }
                                                 $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'";
                                                 break;
                                             case 'date':
                                                 $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'";
                                                 break;
                                         }
                                     }
                                     $sQuery .= ')';
                                     $rs = $stmt->executeQuery($sQuery);
                                 }
                             }
                         }
                     }
                     break;
                     /**
                      * For SQLServer code
                      */
                 /**
                  * For SQLServer code
                  */
                 case 'mssql':
                     $aTableFields = $this->getTableVars($aRow['REP_TAB_UID'], true);
                     if ($aRow['REP_TAB_TYPE'] == 'NORMAL') {
                         $oDataset2 = mssql_query("SELECT * FROM [" . $aRow['REP_TAB_NAME'] . "] WHERE APP_UID = '" . $sApplicationUid . "'");
                         if ($aRow2 = mssql_fetch_row($oDataset2)) {
                             $sQuery = 'UPDATE [' . $aRow['REP_TAB_NAME'] . '] SET ';
                             foreach ($aTableFields as $aField) {
                                 $sQuery .= '[' . $aField['sFieldName'] . '] = ';
                                 switch ($aField['sType']) {
                                     case 'number':
                                         $sQuery .= (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0') . ',';
                                         break;
                                     case 'char':
                                     case 'text':
                                         if (!isset($aFields[$aField['sFieldName']])) {
                                             $aFields[$aField['sFieldName']] = '';
                                         }
                                         $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "',";
                                         break;
                                     case 'date':
                                         $sQuery .= "'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '') . "',";
                                         break;
                                 }
                             }
                             $sQuery = substr($sQuery, 0, -1);
                             $sQuery .= " WHERE APP_UID = '" . $sApplicationUid . "'";
                         } else {
                             $sQuery = 'INSERT INTO [' . $aRow['REP_TAB_NAME'] . '] (';
                             $sQuery .= '[APP_UID],[APP_NUMBER]';
                             foreach ($aTableFields as $aField) {
                                 $sQuery .= ',[' . $aField['sFieldName'] . ']';
                             }
                             $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber;
                             foreach ($aTableFields as $aField) {
                                 switch ($aField['sType']) {
                                     case 'number':
                                         $sQuery .= ',' . (isset($aFields[$aField['sFieldName']]) ? (double) str_replace(',', '', $aFields[$aField['sFieldName']]) : '0');
                                         break;
                                     case 'char':
                                     case 'text':
                                         if (!isset($aFields[$aField['sFieldName']])) {
                                             $aFields[$aField['sFieldName']] = '';
                                         }
                                         $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? mysql_real_escape_string($aFields[$aField['sFieldName']]) : '') . "'";
                                         break;
                                     case 'date':
                                         $sQuery .= ",'" . (isset($aFields[$aField['sFieldName']]) ? $aFields[$aField['sFieldName']] : '') . "'";
                                         break;
                                 }
                             }
                             $sQuery .= ')';
                         }
                         $rs = $stmt->executeQuery($sQuery);
                     } else {
                         mysql_query('DELETE FROM [' . $aRow['REP_TAB_NAME'] . "] WHERE APP_UID = '" . $sApplicationUid . "'");
                         $aAux = explode('-', $aRow['REP_TAB_GRID']);
                         if (isset($aFields[$aAux[0]])) {
                             foreach ($aFields[$aAux[0]] as $iRow => $aGridRow) {
                                 $sQuery = 'INSERT INTO [' . $aRow['REP_TAB_NAME'] . '] (';
                                 $sQuery .= '[APP_UID],[APP_NUMBER],[ROW]';
                                 foreach ($aTableFields as $aField) {
                                     $sQuery .= ',[' . $aField['sFieldName'] . ']';
                                 }
                                 $sQuery .= ") VALUES ('" . $sApplicationUid . "'," . (int) $iApplicationNumber . ',' . $iRow;
                                 foreach ($aTableFields as $aField) {
                                     switch ($aField['sType']) {
                                         case 'number':
                                             $sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (double) str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0');
                                             break;
                                         case 'char':
                                         case 'text':
                                             if (!isset($aGridRow[$aField['sFieldName']])) {
                                                 $aGridRow[$aField['sFieldName']] = '';
                                             }
                                             $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'";
                                             break;
                                         case 'date':
                                             $sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'";
                                             break;
                                     }
                                 }
                                 $sQuery .= ')';
                                 $rs = $stmt->executeQuery($sQuery);
                             }
                         }
                     }
                     break;
             }
             $oDataset->next();
         }
     } catch (Exception $oError) {
         throw $oError;
     }
 }
예제 #10
0
파일: Light.php 프로젝트: rrsc/processmaker
    /**
     * @param $action
     * @param $categoryUid
     * @param $userUid
     * @return array
     * @throws \PropelException
     */
    public function getProcessList ($action, $categoryUid, $userUid)
    {
        //$action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : null;
        //$categoryUid = isset( $_REQUEST['CATEGORY_UID'] ) ? $_REQUEST['CATEGORY_UID'] : null;
        //$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null;

        // global $oAppCache;
        $oAppCache = new \AppCacheView();
        $processes = array ();
        $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' ));

        //get the list based in the action provided
        switch ($action) {
            case 'draft':
                $cProcess = $oAppCache->getDraftListCriteria( $userUid ); //fast enough
                break;
            case 'sent':
                $cProcess = $oAppCache->getSentListProcessCriteria( $userUid ); // fast enough
                break;
            case 'simple_search':
            case 'search':
                //in search action, the query to obtain all process is too slow, so we need to query directly to
                //process and content tables, and for that reason we need the current language in AppCacheView.
                G::loadClass( 'configuration' );
                $oConf = new \Configurations();
                $oConf->loadConfig( $x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '' );
                $appCacheViewEngine = $oConf->aConfig;
                $lang = isset( $appCacheViewEngine['LANG'] ) ? $appCacheViewEngine['LANG'] : 'en';

                $cProcess = new Criteria( 'workflow' );
                $cProcess->clearSelectColumns();
                $cProcess->addSelectColumn( \ProcessPeer::PRO_UID );
                $cProcess->addSelectColumn( \ContentPeer::CON_VALUE );
                if ($categoryUid) {
                    $cProcess->add( \ProcessPeer::PRO_CATEGORY, $categoryUid );
                }
                $del = DBAdapter::getStringDelimiter();
                $conds = array ();
                $conds[] = array (ProcessPeer::PRO_UID,ContentPeer::CON_ID);
                $conds[] = array (ContentPeer::CON_CATEGORY,$del . 'PRO_TITLE' . $del);
                $conds[] = array (ContentPeer::CON_LANG,$del . $lang . $del);
                $cProcess->addJoinMC( $conds, Criteria::LEFT_JOIN );
                $cProcess->add( ProcessPeer::PRO_STATUS, 'ACTIVE' );
                $cProcess->addAscendingOrderByColumn(ContentPeer::CON_VALUE);

                $oDataset = ProcessPeer::doSelectRS( $cProcess );
                $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
                $oDataset->next();

                while ($aRow = $oDataset->getRow()) {
                    $processes[] = array ($aRow['PRO_UID'],$aRow['CON_VALUE']
                    );
                    $oDataset->next();
                }
                return print G::json_encode( $processes );
                break;
            case 'unassigned':
                $cProcess = $oAppCache->getUnassignedListCriteria( $userUid );
                break;
            case 'paused':
                $cProcess = $oAppCache->getPausedListCriteria( $userUid );
                break;
            case 'to_revise':
                $cProcess = $oAppCache->getToReviseListCriteria( $userUid );
                break;
            case 'to_reassign':
                $cProcess = $oAppCache->getToReassignListCriteria($userUid);
                break;
            case 'gral':
                $cProcess = $oAppCache->getGeneralListCriteria();
                break;
            case 'todo':
            default:
                $cProcess = $oAppCache->getToDoListCriteria( $userUid ); //fast enough
                break;
        }
        //get the processes for this user in this action
        $cProcess->clearSelectColumns();
        $cProcess->addSelectColumn( \AppCacheViewPeer::PRO_UID );
        $cProcess->addSelectColumn( \AppCacheViewPeer::APP_PRO_TITLE );
        $cProcess->setDistinct( \AppCacheViewPeer::PRO_UID );
        if ($categoryUid) {
            require_once 'classes/model/Process.php';
            $cProcess->addAlias( 'CP', 'PROCESS' );
            $cProcess->add( 'CP.PRO_CATEGORY', $categoryUid, Criteria::EQUAL );
            $cProcess->addJoin( \AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN );
            $cProcess->addAsColumn( 'CATEGORY_UID', 'CP.PRO_CATEGORY' );
        }

        $cProcess->addAscendingOrderByColumn(\AppCacheViewPeer::APP_PRO_TITLE);

        $oDataset = \AppCacheViewPeer::doSelectRS( $cProcess, \Propel::getDbConnection('workflow_ro') );
        $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC );
        $oDataset->next();

        while ($aRow = $oDataset->getRow()) {
            $processes[] = array ($aRow['PRO_UID'],$aRow['APP_PRO_TITLE']
            );
            $oDataset->next();
        }
        return $processes;
    }
예제 #11
0
                    </script>');
}
try {
    if ($_GET['APP_UID'] !== $_SESSION['APPLICATION']) {
        throw new Exception( G::LoadTranslation( 'ID_INVALID_APPLICATION_ID_MSG', array ('<a href=\'' . $_SERVER['HTTP_REFERER'] . '\'>{1}</a>',G::LoadTranslation( 'ID_REOPEN' ) ) ) );
    }

    /*
     * PMDynaform
     * DYN_VERSION is 1: classic Dynaform,
     * DYN_VERSION is 2: responsive form, Pmdynaform.
     */
    $a = new Criteria("workflow");
    $a->addSelectColumn(DynaformPeer::DYN_VERSION);
    $a->add(DynaformPeer::DYN_UID, $_GET['UID'], Criteria::EQUAL);
    $a = ProcessPeer::doSelectRS($a);
    $a->setFetchmode(ResultSet::FETCHMODE_ASSOC);
    $a->next();
    $row = $a->getRow();
    $swpmdynaform = isset($row) && $row["DYN_VERSION"] == 2;
    if ($swpmdynaform) {
        $pmdynaform = $_POST["form"];
    }

    $oForm = new Form( $_SESSION["PROCESS"] . "/" . $_GET["UID"], PATH_DYNAFORM );
    $oForm->validatePost();

    //Includes
    G::LoadClass( "case" );

    //Load the variables
예제 #12
0
 function getAllProcessesByCategory()
 {
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn(ProcessPeer::PRO_CATEGORY);
     $oCriteria->addSelectColumn('COUNT(*) AS CNT');
     $oCriteria->addGroupByColumn(ProcessPeer::PRO_CATEGORY);
     $oDataSet = ProcessPeer::doSelectRS($oCriteria);
     $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $aProc = array();
     while ($oDataSet->next()) {
         $row = $oDataSet->getRow();
         $aProc[$row['PRO_CATEGORY']] = $row['CNT'];
     }
     return $aProc;
 }
예제 #13
0
    /**
     * Verify if exists the title of a Process
     *
     * @param string $processTitle      Title
     * @param string $processUidExclude Unique id of Process to exclude
     *
     * return bool Return true if exists the title of a Process, false otherwise
     */
    public function existsTitle($processTitle, $processUidExclude = "")
    {
        try {
            $delimiter = \DBAdapter::getStringDelimiter();

            $criteria = new \Criteria("workflow");

            $criteria->addSelectColumn(\ProcessPeer::PRO_UID);

            $criteria->addAlias("CT", \ContentPeer::TABLE_NAME);

            $arrayCondition = array();
            $arrayCondition[] = array(\ProcessPeer::PRO_UID, "CT.CON_ID", \Criteria::EQUAL);
            $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "PRO_TITLE" . $delimiter, \Criteria::EQUAL);
            $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL);
            $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);

            if ($processUidExclude != "") {
                $criteria->add(\ProcessPeer::PRO_UID, $processUidExclude, \Criteria::NOT_EQUAL);
            }

            $criteria->add("CT.CON_VALUE", $processTitle, \Criteria::EQUAL);

            $rsCriteria = \ProcessPeer::doSelectRS($criteria);

            if ($rsCriteria->next()) {
                return true;
            } else {
                return false;
            }
        } catch (\Exception $e) {
            throw $e;
        }
    }
예제 #14
0
/**
 * Function getDynaformsVars
 *
 * @access public
 * @param eter string $sProcessUID
 * @param eter boolean $bSystemVars
 * @return array
 */
function getDynaformsVars ($sProcessUID, $typeVars = 'all', $bIncMulSelFields = 0)
{
    $aFields = array ();
    $aFieldsNames = array ();
    if ($typeVars == 'system' || $typeVars == 'all') {
        $aAux = G::getSystemConstants();
        foreach ($aAux as $sName => $sValue) {
            $aFields[] = array ('sName' => $sName,'sType' => 'system','sLabel' => G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES'));
        }
        //we're adding the ping variable to the system list
        $aFields[] = array ('sName' => 'PIN','sType' => 'system','sLabel' => G::LoadTranslation('ID_TINY_SYSTEM_VARIABLES'));
    }

    $aInvalidTypes = array("title", "subtitle", "file", "button", "reset", "submit", "javascript", "pmconnection");
    $aMultipleSelectionFields = array("listbox", "checkgroup");

    if ($bIncMulSelFields != 0) {
        $aInvalidTypes = array_merge( $aInvalidTypes, $aMultipleSelectionFields );
    }
    // getting bpmn projects
    $oCriteria = new Criteria('workflow');
    $oCriteria->addSelectColumn(BpmnProjectPeer::PRJ_UID);
    $oCriteria->add(BpmnProjectPeer::PRJ_UID, $sProcessUID);
    $oDataset = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro'));
    $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
    $oDataset->next();
    $row = $oDataset->getRow();
    if (isset($row["PRJ_UID"])) {
        if($typeVars == 'process' || $typeVars == 'all') {
            $oCriteria = new Criteria('workflow');
            $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_UID);
            $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_NAME);
            $oCriteria->addSelectColumn(ProcessVariablesPeer::VAR_FIELD_TYPE);
            $oCriteria->add(ProcessVariablesPeer::PRJ_UID, $sProcessUID);
            $oDataset = DynaformPeer::doSelectRS($oCriteria);
            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
            while ($oDataset->next()) {
                $row = $oDataset->getRow();
                array_push($aFields, array(
                    "sName" => $row["VAR_NAME"],
                    "sType" => $row["VAR_FIELD_TYPE"],
                    "sLabel" => $row["VAR_FIELD_TYPE"]
                ));
            }
        } 
        if($typeVars == 'grid' || $typeVars == 'all') {
            $oC = new Criteria( 'workflow' );
            $oC->addSelectColumn( DynaformPeer::DYN_CONTENT );
            $oC->add( DynaformPeer::PRO_UID, $sProcessUID );
            $oC->add( DynaformPeer::DYN_TYPE, 'xmlform' );
            $oData = DynaformPeer::doSelectRS( $oC );
            $oData->setFetchmode( ResultSet::FETCHMODE_ASSOC );
            $oData->next();
            while ($aRowd = $oData->getRow()) {
                $dynaform = G::json_decode($aRowd['DYN_CONTENT'],true);
                if(is_array($dynaform) && sizeof($dynaform)) {
                    $items = $dynaform['items'][0]['items'];
                    foreach($items as $key => $val){
                        if($val[0]['type'] == 'grid'){
                            if(sizeof($val[0]['columns'])) {
                                $columns = $val[0]['columns'];
                                foreach($columns as $column) {
                                    array_push($aFields, array(
                                        "sName" => $column['name'],
                                        "sType" => $column['type'],
                                        "sLabel" => $column['type']
                                    ));
                                }
                            }
                        }
                    }
                }
                $oData->next();
            }
        }
        
    } else {
        require_once 'classes/model/Dynaform.php';
        $oCriteria = new Criteria( 'workflow' );
        $oCriteria->addSelectColumn( DynaformPeer::DYN_FILENAME );
        $oCriteria->add( DynaformPeer::PRO_UID, $sProcessUID );
        $oCriteria->add( DynaformPeer::DYN_TYPE, 'xmlform' );
        $oDataset = DynaformPeer::doSelectRS( $oCriteria );
        $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
        $oDataset->next();
        while ($aRow = $oDataset->getRow()) {
            if (file_exists( PATH_DYNAFORM . PATH_SEP . $aRow['DYN_FILENAME'] . '.xml' )) {
                $G_FORM = new Form( $aRow['DYN_FILENAME'], PATH_DYNAFORM, SYS_LANG );
                if (($G_FORM->type == 'xmlform') || ($G_FORM->type == '')) {
                    foreach ($G_FORM->fields as $k => $v) {
                        if (! in_array( $v->type, $aInvalidTypes )) {
                            if (! in_array( $k, $aFieldsNames )) {
                                $aFields[] = array ('sName' => $k,'sType' => $v->type,'sLabel' => ($v->type != 'grid' ? $v->label : '[ ' . G::LoadTranslation( 'ID_GRID' ) . ' ]')
                                );
                                $aFieldsNames[] = $k;
                            }
                        }
                    }
                }
            }
            $oDataset->next();
        }
    }
    return $aFields;
}
예제 #15
0
 public static function removeIfExists($proUid)
 {
     $process = \ProcessPeer::retrieveByPK($proUid);
     if ($process) {
         $me = new self();
         $me->proUid = $process->getProUid();
         $me->remove();
     }
 }
 <?php 
if ($RBAC->userCanAccess('PM_SETUP') != 1 && $RBAC->userCanAccess('PM_SETUP_ADVANCE') != 1) {
    G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
    //G::header('location: ../login/login');
    die;
}
try {
    $form = $_POST['form'];
    $CategoryUid = $form['CATEGORY_UID'];
    require_once "classes/model/ProcessCategory.php";
    require_once 'classes/model/Process.php';
    //we'are looking for data into process with this CategoryUid
    $oCriteria = new Criteria('workflow');
    $oCriteria->add(ProcessPeer::PRO_CATEGORY, $CategoryUid);
    $oDataset = ProcessPeer::doSelectRS($oCriteria);
    $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
    while ($oDataset->next()) {
        $aDataProcess = $oDataset->getRow();
        $oCriteria1 = new Criteria('workflow');
        $oCriteria1->add(ProcessPeer::PRO_CATEGORY, '');
        $oCriteria2 = new Criteria('workflow');
        $oCriteria2->add(ProcessPeer::PRO_UID, $aDataProcess['PRO_UID']);
        BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
    }
    //if exists the row in the database propel will update it, otherwise will insert.
    $tr = ProcessCategoryPeer::retrieveByPK($CategoryUid);
    if (is_object($tr) && get_class($tr) == 'ProcessCategory') {
        $tr->delete();
    }
    G::Header('location: processCategoryList');
} catch (Exception $e) {
예제 #17
0
 /**
  * get all the Active process
  *
  * SELECT PROCESS.PRO_UID AS UID, CONTENT.CON_VALUE AS VALUE FROM PROCESS, CONTENT
  * WHERE (PROCESS.PRO_UID=CONTENT.CON_ID AND PROCESS.PRO_STATUS!='DISABLED' AND CONTENT.CON_CATEGORY='PRO_TITLE' AND CONTENT.CON_LANG='en')
  * ORDER BY CONTENT.CON_VALUE
  * ]]>
  */
 public function getAllProcesses()
 {
     $aProcesses = array();
     //$aProcesses [] = array ('PRO_UID' => 'char', 'PRO_TITLE' => 'char');
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn(ProcessPeer::PRO_UID);
     $oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL);
     $oDataset = ProcessPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     $oProcess = new Process();
     while ($aRow = $oDataset->getRow()) {
         $aProcess = $oProcess->load($aRow['PRO_UID']);
         $aProcesses[] = array('value' => $aProcess['PRO_UID'], 'name' => $aProcess['PRO_TITLE']);
         $oDataset->next();
     }
     //$oJSON = new Services_JSON();
     return Bootstrap::json_encode($aProcesses);
     //$oJSON->encode( $aProcesses );
 }
예제 #18
0
            G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
            G::header('location: ../login/login');
            die;
            break;
        default:
            G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
            G::header('location: ../login/login');
            die;
            break;
    }
}
$criteria = new Criteria("workflow");
$criteria->addSelectColumn(ProcessPeer::PRO_UID);
$criteria->add(ProcessPeer::PRO_UID, $_GET["PRO_UID"], Criteria::EQUAL);
$criteria->add($criteria->getNewCriterion(ProcessPeer::PRO_CREATE_USER, $_SESSION["USER_LOGGED"], Criteria::EQUAL)->addOr($criteria->getNewCriterion(ProcessPeer::PRO_TYPE_PROCESS, "PUBLIC", Criteria::EQUAL)));
$rsCriteria = ProcessPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
if (!$rsCriteria->next()) {
    echo "You don't have privileges to edit this process.";
    exit(0);
}
$processUID = $_GET['PRO_UID'];
$_SESSION['PROCESS'] = $processUID;
$_SESSION['PROCESSMAP'] = 'LEIMNUD';
G::LoadClass('processMap');
$oTemplatePower = new TemplatePower(PATH_TPL . 'processes/processes_Map.html');
$oTemplatePower->prepare();
$G_MAIN_MENU = 'processmaker';
$G_ID_MENU_SELECTED = 'PROCESSES';
$G_SUB_MENU = 'processes';
$G_ID_SUB_MENU_SELECTED = '_';
예제 #19
0
 /**
  * Implementation for 'DELETE' method for Rest API
  *
  * @param  mixed $proUid 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 delete($proUid)
 {
     $conn = Propel::getConnection(ProcessPeer::DATABASE_NAME);
     try {
         $conn->begin();
         $obj = ProcessPeer::retrieveByPK($proUid);
         if (!is_object($obj)) {
             throw new RestException(412, 'Record does not exist.');
         }
         $obj->delete();
         $conn->commit();
     } catch (Exception $e) {
         $conn->rollback();
         throw new RestException(412, $e->getMessage());
     }
 }
예제 #20
0
    public function generateBpmn($processUid, $processUidFieldNameForException, $userUid = "")
    {
        $bpmnProjectUid = "";

        try {
            //Verify data
            $obj = \ProcessPeer::retrieveByPK($processUid);

            if (is_null($obj)) {
                throw new \Exception(\G::LoadTranslation("ID_PROCESS_DOES_NOT_EXIST", array($processUidFieldNameForException, $processUid)));
            }

            //Verify data
            $criteria = new \Criteria("workflow");

            $criteria->addSelectColumn(\BpmnProjectPeer::PRJ_UID);
            $criteria->add(\BpmnProjectPeer::PRJ_UID, $processUid, \Criteria::EQUAL);

            $rsCriteria = \BpmnProjectPeer::doSelectRS($criteria);

            if ($rsCriteria->next()) {
                throw new \Exception(\G::LoadTranslation("ID_PROJECT_IS_BPMN", array($processUidFieldNameForException, $processUid)));
            }

            //Set data
            $processUidBk = $processUid;

            list($arrayWorkflowData, $arrayWorkflowFile) = $this->getData($processUid); //Get workflow data

            $arrayWorkflowData["process"] = $arrayWorkflowData["process"][0];

            $arrayWorkflowData["groupwfs"] = array();

            //Create WorkflowBpmn
            $arrayUid  = array();
            $arrayUid2 = array();

            //Process
            $arrayProcessData = $arrayWorkflowData["process"];

            unset(
                $arrayProcessData["PRO_UID"],
                $arrayProcessData["PRO_UPDATE_DATE"]
            );

            $arrayProcessData["PRO_PARENT"] = $processUidBk;
            $arrayProcessData["PRO_TITLE"]  = $arrayProcessData["PRO_TITLE"] . " - New version - " . date("M d, H:i:s");
            $arrayProcessData["PRO_CREATE_USER"] = ($userUid != "")? $userUid : "00000000000000000000000000000001";

            $this->create($arrayProcessData);

            $processUid = $this->getUid();

            $bpmnProjectUid = $processUid;

            //Task
            foreach ($arrayWorkflowData["tasks"] as $value) {
                $arrayTaskData = $value;

                $taskUidOld = $arrayTaskData["TAS_UID"];

                //Add
                unset($arrayTaskData["TAS_UID"]);

                $taskUid = $this->addTask($arrayTaskData);

                //Add new UID
                $arrayUid["task"][$taskUidOld] = $taskUid;

                $arrayUid2[] = array(
                    "old_uid" => $taskUidOld,
                    "new_uid" => $taskUid
                );
            }

            //$arrayWorkflowData["tasks"] = array();

            //Route
            $arrayRouteSecJoin = array();

            foreach ($arrayWorkflowData["routes"] as $value) {
                $arrayRouteData = $value;

                $arrayRouteData["TAS_UID"] = $arrayUid["task"][$arrayRouteData["TAS_UID"]];
                $arrayRouteData["ROU_NEXT_TASK"] = ($arrayRouteData["ROU_NEXT_TASK"] != "-1")? $arrayUid["task"][$arrayRouteData["ROU_NEXT_TASK"]] : $arrayRouteData["ROU_NEXT_TASK"];

                if ($arrayRouteData["ROU_TYPE"] != "SEC-JOIN") {
                    //Add
                    $result = $this->addRoute($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"], $arrayRouteData["ROU_TYPE"], $arrayRouteData["ROU_CONDITION"]);
                } else {
                    $arrayRouteSecJoin[] = $arrayRouteData;
                }
            }

            $arrayWorkflowData["routes"] = array();

            //Route SEC-JOIN
            foreach ($arrayRouteSecJoin as $value) {
                $arrayRouteData = $value;

                $result = $this->addRouteSecJoin($arrayRouteData["TAS_UID"], $arrayRouteData["ROU_NEXT_TASK"]);
            }

            //Lane
            foreach ($arrayWorkflowData["lanes"] as $value) {
                $arrayLaneData = $value;

                $swiX = (int)($arrayLaneData["SWI_X"]);
                $swiY = (int)($arrayLaneData["SWI_Y"]);

                switch ($arrayLaneData["SWI_TYPE"]) {
                    case "TEXT":
                        $swiUid = $this->addText($arrayLaneData["SWI_TEXT"], $swiX, $swiY);
                        break;
                    case "LINE":
                        $direction = (($swiX == 0)? "HORIZONTAL" : "VERTICAL");

                        $swiUid = $this->addLine(($direction == "HORIZONTAL")? $swiY : $swiX, $direction);
                        break;
                }
            }

            $arrayWorkflowData["lanes"] = array();

            //Data
            $arrayUid2 = array_merge(
                array(
                    array(
                        "old_uid" => $processUidBk,
                        "new_uid" => $processUid
                    )
                ),
                $arrayUid2
            );

            list($arrayWorkflowData, $arrayWorkflowFile) = $this->updateDataUidByArrayUid($arrayWorkflowData, $arrayWorkflowFile, $arrayUid2);

            $arrayWorkflowData["tasks"] = array();

            $this->createDataByArrayData($arrayWorkflowData);
            $this->createDataFileByArrayFile($arrayWorkflowFile);

            //Return
            return $bpmnProjectUid;
        } catch (\Exception $e) {
            if ($bpmnProjectUid != "") {
                $this->remove();
            }

            throw $e;
        }
    }
예제 #21
0
 /**
  * Get Process details
  *
  * @param object $httpData{PRO_UID}
  * @return array
  */
 public function getProcessDetail($httpData)
 {
     require_once 'classes/model/Process.php';
     G::loadClass('tasks');
     $tasks = new Tasks();
     $PRO_UID = $httpData->PRO_UID;
     $process = ProcessPeer::retrieveByPk($PRO_UID);
     $tasksList = $tasks->getAllTasks($PRO_UID);
     $rootNode->id = $process->getProUid();
     $rootNode->type = 'process';
     $rootNode->typeLabel = G::LoadTranslation('ID_PROCESS');
     $rootNode->text = $process->getProTitle();
     $rootNode->leaf = count($tasksList) > 0 ? false : true;
     $rootNode->iconCls = 'ss_sprite ss_application';
     $rootNode->expanded = true;
     foreach ($tasksList as $task) {
         $node = new stdClass();
         $node->id = $task['TAS_UID'];
         $node->type = 'task';
         $node->typeLabel = G::LoadTranslation('ID_TASK');
         $node->text = $task['TAS_TITLE'];
         $node->iconCls = 'ss_sprite ss_layout';
         $node->leaf = true;
         $rootNode->children[] = $node;
     }
     $treeDetail[] = $rootNode;
     return $treeDetail;
 }
예제 #22
0
 public function getTriggerWebBotProcess($proUid, $action)
 {
     require_once "classes/model/Triggers.php";
     if (!isset($proUid) && $proUid == '' || !isset($action) && $action == '') {
         return false;
     }
     $action = G::toUpper($action);
     $webBotTrigger = '';
     switch ($action) {
         case 'DELETED':
             $var = ProcessPeer::PRO_TRI_DELETED;
             break;
         case 'CANCELED':
             $var = ProcessPeer::PRO_TRI_CANCELED;
             break;
         case 'PAUSED':
             $var = ProcessPeer::PRO_TRI_PAUSED;
             break;
         case 'REASSIGNED':
             $var = ProcessPeer::PRO_TRI_REASSIGNED;
             break;
     }
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn($var);
     $oCriteria->addSelectColumn(TriggersPeer::TRI_WEBBOT);
     $oCriteria->addJoin($var, TriggersPeer::TRI_UID, Criteria::LEFT_JOIN);
     $oCriteria->add(ProcessPeer::PRO_UID, $proUid);
     $oDataSet = ProcessPeer::doSelectRS($oCriteria);
     $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     if ($oDataSet->next()) {
         $row = $oDataSet->getRow();
         $webBotTrigger = $row['TRI_WEBBOT'];
     }
     return $webBotTrigger;
 }
예제 #23
0
    /**

     * disable all previous process with the parent $sProUid

     *

     * @param $sProUid process uid

     * @return void

     */

    public function disablePreviousProcesses ($sProUid)

    {

        //change status of process

        $oCriteria = new Criteria( 'workflow' );

        $oCriteria->add( ProcessPeer::PRO_PARENT, $sProUid );

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

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

        $oDataset->next();

        $oProcess = new Process();

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

            $aRow['PRO_STATUS'] = 'DISABLED';

            $aRow['PRO_UPDATE_DATE'] = 'now';

            $oProcess->update( $aRow );

            $oDataset->next();

        }

    }
예제 #24
0
$G_MAIN_MENU = 'caseTracker';
$G_ID_MENU_SELECTED = 'MAP';
require_once 'classes/model/CaseTracker.php';
$oCaseTracker = new CaseTracker();
$aCaseTracker = $oCaseTracker->load($_SESSION['PROCESS']);
$idProcess = $_SESSION['PROCESS'];
$oProcess = new Process();
$aProcessFieds = $oProcess->load($idProcess);
$noShowTitle = 0;
if (isset($aProcessFieds['PRO_SHOW_MESSAGE'])) {
    $noShowTitle = $aProcessFieds['PRO_SHOW_MESSAGE'];
}
// getting bpmn projects
$c = new Criteria('workflow');
$c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
$ds = ProcessPeer::doSelectRS($c);
$ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$bpmnProjects = array();
while ($ds->next()) {
    $row = $ds->getRow();
    $bpmnProjects[] = $row['PRJ_UID'];
}
switch ($aCaseTracker['CT_MAP_TYPE']) {
    case 'NONE':
        //Nothing
        break;
    case 'PROCESSMAP':
        G::LoadClass('case');
        G::LoadClass('processMap');
        $oCase = new Cases();
        $aFields = $oCase->loadCase($_SESSION['APPLICATION']);
예제 #25
0
 public function getAllConfiguredCurrencies()
 {
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn(ProcessPeer::PRO_UNIT_COST);
     $oCriteria->setDistinct();
     $oDataSet = ProcessPeer::doSelectRS($oCriteria, Propel::getDbConnection('workflow_ro'));
     $oDataSet->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $aProc = array();
     while ($oDataSet->next()) {
         $row = $oDataSet->getRow();
         $aProc[$row['PRO_UNIT_COST']] = $row['PRO_UNIT_COST'];
     }
     return $aProc;
 }
예제 #26
0
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      Connection $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria();
         $criteria->add(ProcessPeer::PRO_UID, $pks, Criteria::IN);
         $objs = ProcessPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
예제 #27
0
    public function getProcessDescription ()
    {
        $c = new Criteria( 'workflow' );
        $c->clearSelectColumns();
        $c->addSelectColumn( ProcessPeer::PRO_UID );

        $oDataset = ProcessPeer::doSelectRS( $c );
        $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
        $oDataset->next();
        $aRows = Array ();
        while ($aRow = $oDataset->getRow()) {
            $aRows[] = $aRow;
            $oDataset->next();
        }

        foreach ($aRows as $k => $aRow) {
            $oProcess = new Process();
            $aProcessRow = $oProcess->load( $aRow['PRO_UID'] );

            $aRows[$k] = array_merge( $aRow, array ('PRO_TITLE' => $aProcessRow['PRO_TITLE']
            ) );
        }
        return $aRows;

    }
예제 #28
0
     $cProcess = new Criteria('workflow');
     $cProcess->clearSelectColumns();
     $cProcess->addSelectColumn(ProcessPeer::PRO_UID);
     $cProcess->addSelectColumn(ContentPeer::CON_VALUE);
     if ($categoryUid) {
         $cProcess->add(ProcessPeer::PRO_CATEGORY, $categoryUid);
     }
     $del = DBAdapter::getStringDelimiter();
     $conds = array();
     $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID);
     $conds[] = array(ContentPeer::CON_CATEGORY, $del . 'PRO_TITLE' . $del);
     $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del);
     $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN);
     $cProcess->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
     $cProcess->addAscendingOrderByColumn(ContentPeer::CON_VALUE);
     $oDataset = ProcessPeer::doSelectRS($cProcess);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     while ($aRow = $oDataset->getRow()) {
         $processes[] = array($aRow['PRO_UID'], $aRow['CON_VALUE']);
         $oDataset->next();
     }
     return print G::json_encode($processes);
     break;
 case 'unassigned':
     $cProcess = $oAppCache->getUnassignedListCriteria($userUid);
     break;
 case 'paused':
     $cProcess = $oAppCache->getPausedListCriteria($userUid);
     break;
 case 'to_revise':
예제 #29
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 = ProcessPeer::getFieldNames($keyType);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    }
예제 #30
0
function getProcessArray($action, $userUid)
{
    global $oAppCache;
    $processes = array();
    $processes[] = array('', G::LoadTranslation('ID_ALL_PROCESS'));
    //get the list based in the action provided
    // G::pr($action);die;
    switch ($action) {
        case 'draft':
            $cProcess = $oAppCache->getDraftListCriteria($userUid);
            //fast enough
            break;
        case 'sent':
            $cProcess = $oAppCache->getSentListProcessCriteria($userUid);
            // fast enough
            break;
        case 'simple_search':
        case 'search':
            //in search action, the query to obtain all process is too slow, so we need to query directly to
            //process and content tables, and for that reason we need the current language in AppCacheView.
            G::loadClass('configuration');
            $oConf = new Configurations();
            $oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '');
            $appCacheViewEngine = $oConf->aConfig;
            $lang = isset($appCacheViewEngine['LANG']) ? $appCacheViewEngine['LANG'] : 'en';
            $cProcess = new Criteria('workflow');
            $cProcess->clearSelectColumns();
            $cProcess->addSelectColumn(ProcessPeer::PRO_UID);
            $cProcess->addSelectColumn(ContentPeer::CON_VALUE);
            $del = DBAdapter::getStringDelimiter();
            $conds = array();
            $conds[] = array(ProcessPeer::PRO_UID, ContentPeer::CON_ID);
            $conds[] = array(ContentPeer::CON_CATEGORY, $del . 'PRO_TITLE' . $del);
            $conds[] = array(ContentPeer::CON_LANG, $del . $lang . $del);
            $cProcess->addJoinMC($conds, Criteria::LEFT_JOIN);
            $cProcess->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
            $oDataset = ProcessPeer::doSelectRS($cProcess);
            $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
            $oDataset->next();
            while ($aRow = $oDataset->getRow()) {
                $processes[] = array($aRow['PRO_UID'], $aRow['CON_VALUE']);
                $oDataset->next();
            }
            return $processes;
            break;
        case 'unassigned':
            $cProcess = $oAppCache->getUnassignedListCriteria($userUid);
            break;
        case 'paused':
            $cProcess = $oAppCache->getPausedListCriteria($userUid);
            break;
        case 'to_revise':
            $cProcess = $oAppCache->getToReviseListCriteria($userUid);
            break;
        case 'to_reassign':
            $cProcess = $oAppCache->getToReassignListCriteria();
            $cProcess->addAscendingOrderByColumn(AppCacheViewPeer::APP_PRO_TITLE);
            break;
        case 'gral':
            $cProcess = $oAppCache->getGeneralListCriteria();
            $cProcess->addAscendingOrderByColumn(AppCacheViewPeer::APP_PRO_TITLE);
            break;
        case 'todo':
        default:
            $cProcess = $oAppCache->getToDoListCriteria($userUid);
            //fast enough
            break;
    }
    //get the processes for this user in this action
    $cProcess->clearSelectColumns();
    $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID);
    $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE);
    $cProcess->setDistinct(AppCacheViewPeer::PRO_UID);
    $oDataset = AppCacheViewPeer::doSelectRS($cProcess);
    $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
    $oDataset->next();
    while ($aRow = $oDataset->getRow()) {
        $processes[] = array($aRow['PRO_UID'], $aRow['APP_PRO_TITLE']);
        $oDataset->next();
    }
    return $processes;
}