예제 #1
0
function skinList()
{
    G::loadClass('system');
    $skinList = System::getSkingList();
    $wildcard = '';
    if (isset($_REQUEST['activeskin'])) {
        $wildcard = '@';
    }
    $filterList = array();
    if (defined('PARTNER_FLAG')) {
        $filterList = array('00000000000000000000000000000001', '00000000000000000000000000000002');
    }
    foreach ($skinList['skins'] as $key => $value) {
        if (!isset($value['SKIN_ID']) || !in_array($value['SKIN_ID'], $filterList)) {
            if ($value['SKIN_FOLDER_ID'] != 'simplified' && $value['SKIN_FOLDER_ID'] != 'uxs' && $value['SKIN_FOLDER_ID'] != 'uxmodern') {
                if ($skinList['currentSkin'] == $value['SKIN_FOLDER_ID']) {
                    $value['SKIN_STATUS'] = $wildcard . G::LoadTranslation('ID_ACTIVE');
                    $value['SKIN_NAME'] = $wildcard . $value['SKIN_NAME'];
                    $value['SKIN_WORKSPACE'] = $wildcard . $value['SKIN_WORKSPACE'];
                    $value['SKIN_DESCRIPTION'] = $wildcard . $value['SKIN_DESCRIPTION'];
                    $value['SKIN_AUTHOR'] = $wildcard . $value['SKIN_AUTHOR'];
                    $value['SKIN_CREATEDATE'] = $wildcard . $value['SKIN_CREATEDATE'];
                    $value['SKIN_MODIFIEDDATE'] = $wildcard . $value['SKIN_MODIFIEDDATE'];
                } else {
                    $value['SKIN_STATUS'] = G::LoadTranslation('ID_INACTIVE');
                }
                $skinListArray['skins'][] = $value;
            }
        }
    }
    $skinListArray['currentSkin'] = $skinList['currentSkin'];
    echo G::json_encode($skinListArray);
}
예제 #2
0
 public function system()
 {
     require_once PATH_CONTROLLERS . 'main.php';
     G::loadClass('system');
     $skinsList = System::getSkingList();
     foreach ($skinsList['skins'] as $key => $value) {
         if ($value['SKIN_WORKSPACE'] != 'Global') {
             unset($skinsList['skins'][$key]);
         }
     }
     $skins = array();
     $timeZonesList = System::getAllTimeZones();
     $timeZonesList = array_keys($timeZonesList);
     $mainController = new Main();
     $languagesList = $mainController->getLanguagesList();
     $sysConf = System::getSystemConfiguration(PATH_CONFIG . 'env.ini');
     foreach ($skinsList['skins'] as $skin) {
         $skins[] = array($skin['SKIN_FOLDER_ID'], $skin['SKIN_NAME']);
     }
     foreach ($timeZonesList as $tz) {
         $timeZones[] = array($tz, $tz);
     }
     $this->includeExtJS('admin/system');
     //G::LoadClass('configuration');
     // $c = new Configurations();
     // $configPage = $c->getConfiguration('usersList', 'pageSize','',$_SESSION['USER_LOGGED']);
     // $Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20;
     $this->setJSVar('skinsList', $skins);
     $this->setJSVar('languagesList', $languagesList);
     $this->setJSVar('timeZonesList', $timeZones);
     $this->setJSVar('sysConf', $sysConf);
     G::RenderPage('publish', 'extJs');
 }
예제 #3
0
 /**
  * getting default list
  * @param string $httpData (opional)
  */
 public function index($httpData)
 {
     if ($this->userUxType == 'SINGLE') {
         $this->indexSingle($httpData);
         return;
     }
     require_once 'classes/model/UsersProperties.php';
     G::LoadClass('process');
     G::LoadClass('case');
     $userProperty = new UsersProperties();
     $process = new Process();
     $case = new Cases();
     G::loadClass('system');
     $sysConf = System::getSystemConfiguration(PATH_CONFIG . 'env.ini');
     //Get ProcessStatistics Info
     $start = 0;
     $limit = '';
     $proData = $process->getAllProcesses($start, $limit);
     $processList = $case->getStartCasesPerType($_SESSION['USER_LOGGED'], 'category');
     $switchLink = $userProperty->getUserLocation($_SESSION['USER_LOGGED']);
     if (substr($sysConf['default_skin'], 0, 2) == 'ux') {
         $_SESSION['_defaultUserLocation'] = $switchLink;
         $switchLink = '/sys' . SYS_SYS . '/' . SYS_LANG . '/' . $sysConf['default_skin'] . '/main';
     }
     unset($processList[0]);
     //Get simplified options
     global $G_TMP_MENU;
     $mnu = new Menu();
     $mnu->load('simplified');
     $arrayMnuOption = array();
     $mnuNewCase = array();
     if (!empty($mnu->Options)) {
         foreach ($mnu->Options as $index => $value) {
             $option = array('id' => $mnu->Id[$index], 'url' => $mnu->Options[$index], 'label' => $mnu->Labels[$index], 'icon' => $mnu->Icons[$index], 'class' => $mnu->ElementClass[$index]);
             if ($mnu->Id[$index] != 'S_NEW_CASE') {
                 $arrayMnuOption[] = $option;
             } else {
                 $mnuNewCase = $option;
             }
         }
     }
     $this->setView('home/index');
     $this->setVar('usrUid', $this->userID);
     $this->setVar('userName', $this->userName);
     $this->setVar('processList', $processList);
     $this->setVar('canStartCase', $case->canStartCase($_SESSION['USER_LOGGED']));
     $this->setVar('userUxType', $this->userUxType);
     $this->setVar('clientBrowser', $this->clientBrowser['name']);
     $this->setVar('switchLink', $switchLink);
     $this->setVar('arrayMnuOption', $arrayMnuOption);
     $this->setVar('mnuNewCase', $mnuNewCase);
     $this->render();
 }
예제 #4
0
 /**
  * edit pmtable
  *
  * @param string $httpData->id
  */
 public function edit($httpData)
 {
     require_once PATH_CONTROLLERS . 'pmTablesProxy.php';
     require_once 'classes/model/AdditionalTables.php';
     G::loadClass('pmTable');
     $additionalTables = new AdditionalTables();
     $table = false;
     $addTabUid = isset($httpData->id) ? $httpData->id : false;
     $dataNumRows = 0;
     $repTabPluginPermissions = false;
     $columnsTypes = PmTable::getPropelSupportedColumnTypes();
     $jsFile = isset($httpData->tableType) && $httpData->tableType == 'report' ? 'editReport' : 'edit';
     $columnsTypesList = array();
     foreach ($columnsTypes as $columnTypeName => $columnType) {
         $columnsTypesList[] = array($columnTypeName, $columnType);
     }
     if ($addTabUid) {
         $tableData = $additionalTables->getAllData($httpData->id, 0, 2);
         $dataNumRows = $tableData['count'];
     }
     if ($addTabUid !== false) {
         // if it is a edit request
         $tableFields = array();
         $fieldsList = array();
         $table = $additionalTables->load($addTabUid, true);
         //fix for backware compatibility
         $table['DBS_UID'] = $table['DBS_UID'] == null || $table['DBS_UID'] == '' ? 'workflow' : $table['DBS_UID'];
         $_SESSION['ADD_TAB_UID'] = $addTabUid;
         //list dynaform fields
         if ($table['ADD_TAB_TYPE'] == 'NORMAL' || $table['ADD_TAB_TYPE'] == 'GRID') {
             $repTabPluginPermissions = $this->_getSimpleReportPluginDef();
         }
     }
     $this->includeExtJS('pmTables/' . $jsFile);
     $this->setJSVar('flagProcessmap', isset($_REQUEST['flagProcessmap']) ? $_REQUEST['flagProcessmap'] : 0);
     $this->setJSVar('ADD_TAB_UID', $addTabUid);
     $this->setJSVar('PRO_UID', isset($_GET['PRO_UID']) ? $_GET['PRO_UID'] : false);
     $this->setJSVar('TABLE', $table);
     $this->setJSVar('dbg', isset($httpData->dbg));
     $this->setJSVar('columnsTypes', $columnsTypesList);
     $this->setJSVar('dataNumRows', $dataNumRows);
     $this->setJSVar('_plugin_permissions', $repTabPluginPermissions);
     $this->setJSVar('sizeTableName', $this->getSizeTableName());
     $isBpmn = 0;
     if (isset($_GET['PRO_UID'])) {
         $process = new Process();
         $isBpmn = $process->isBpmnProcess($_GET['PRO_UID']);
     }
     $this->setJSVar('isBpmn', $isBpmn);
     G::RenderPage('publish', 'extJs');
 }
예제 #5
0
 protected function get($id = '', $start = null, $limit = null, $type = null, $filter = null, $search = null, $process = null, $user = null, $status = null, $typeResource = null, $dateFrom = null, $dateTo = null)
 {
     if (empty($id)) {
         // getting all records.
         G::loadClass('applications');
         $app = new Applications();
         $userUid = Services_Rest_Auth::$userId;
         return $app->getAll($userUid, $start, $limit, $type, $filter, $search, $process, $status, $typeResource, $dateFrom, $dateTo);
     } else {
         // get a specific record.
         G::loadClass('wsBase');
         $wsBase = new wsBase();
         return $wsBase->getCaseInfo($id);
     }
 }
예제 #6
0
 public function system()
 {
     global $RBAC;
     $RBAC->requirePermissions('PM_SETUP');
     require_once PATH_CONTROLLERS . 'main.php';
     G::loadClass('system');
     $skinsList = System::getSkingList();
     foreach ($skinsList['skins'] as $key => $value) {
         if ($value['SKIN_WORKSPACE'] != 'Global') {
             unset($skinsList['skins'][$key]);
         }
     }
     $skins = array();
     $mainController = new Main();
     $languagesList = $mainController->getLanguagesList();
     $languagesList[] = array("", G::LoadTranslation("ID_USE_LANGUAGE_URL"));
     $sysConf = System::getSystemConfiguration(PATH_CONFIG . 'env.ini');
     foreach ($skinsList['skins'] as $skin) {
         $skins[] = array($skin['SKIN_FOLDER_ID'], $skin['SKIN_NAME']);
     }
     $this->includeExtJS('admin/system');
     //G::LoadClass('configuration');
     // $c = new Configurations();
     // $configPage = $c->getConfiguration('usersList', 'pageSize','',$_SESSION['USER_LOGGED']);
     // $Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20;
     if (isset($sysConf["session.gc_maxlifetime"])) {
         $sysConf["session_gc_maxlifetime"] = $sysConf["session.gc_maxlifetime"];
     } else {
         $sysConf["session_gc_maxlifetime"] = ini_get('session.gc_maxlifetime');
     }
     $this->setJSVar('skinsList', $skins);
     $this->setJSVar('languagesList', $languagesList);
     $this->setJSVar('timeZonesList', array_map(function ($value) {
         return [$value, $value];
     }, DateTimeZone::listIdentifiers()));
     $this->setJSVar('sysConf', $sysConf);
     G::RenderPage('publish', 'extJs');
 }
예제 #7
0
         print G::json_encode($result);
     }
     break;
 case 'userData':
     require_once 'classes/model/Users.php';
     $_SESSION['CURRENT_USER'] = $_POST['USR_UID'];
     $oUser = new Users();
     $aFields = $oUser->loadDetailed($_POST['USR_UID']);
     //Load Calendar options and falue for this user
     G::LoadClass('calendar');
     $calendar = new Calendar();
     $calendarInfo = $calendar->getCalendarFor($_POST['USR_UID'], $_POST['USR_UID'], $_POST['USR_UID']);
     //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar
     $aFields['USR_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";
     #verifying if it has any preferences on the configurations table
     G::loadClass('configuration');
     $oConf = new Configurations();
     $oConf->loadConfig($x, 'USER_PREFERENCES', '', '', $_SESSION['USER_LOGGED'], '');
     $aFields['PREF_DEFAULT_MENUSELECTED'] = '';
     $aFields['PREF_DEFAULT_CASES_MENUSELECTED'] = '';
     if (sizeof($oConf->Fields) > 0) {
         // this user has a configuration record
         $aFields['PREF_DEFAULT_LANG'] = $oConf->aConfig['DEFAULT_LANG'];
         $aFields['PREF_DEFAULT_MENUSELECTED'] = isset($oConf->aConfig['DEFAULT_MENU']) ? $oConf->aConfig['DEFAULT_MENU'] : '';
         $aFields['PREF_DEFAULT_CASES_MENUSELECTED'] = isset($oConf->aConfig['DEFAULT_CASES_MENU']) ? $oConf->aConfig['DEFAULT_CASES_MENU'] : '';
     } else {
         switch ($RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE']) {
             case 'PROCESSMAKER_ADMIN':
                 $aFields['PREF_DEFAULT_MENUSELECTED'] = 'PM_SETUP';
                 break;
             case 'PROCESSMAKER_OPERATOR':
예제 #8
0
 public function saveOrderDashlet($data)
 {
     $this->setResponseType('json');
     try {
         $orderDashlet[0] = Bootstrap::json_decode($data->positionCol0);
         $orderDashlet[1] = Bootstrap::json_decode($data->positionCol1);
         $orderDashlet[2] = Bootstrap::json_decode($data->positionCol2);
         G::loadClass('configuration');
         $oConfiguration = new Configurations();
         $aConfiguration = $oConfiguration->load('Dashboard', '', '', $_SESSION['USER_LOGGED']);
         $dataDashboard = array();
         if (isset($aConfiguration["CFG_VALUE"])) {
             $dataDashboard = $aConfiguration["CFG_VALUE"];
         }
         $dataNow['ORDER'] = $orderDashlet;
         if (isset($data->columns)) {
             $dataNow['COLUMNS'] = Bootstrap::json_decode($data->columns);
         }
         $dataDashboard = array_merge($dataDashboard, $dataNow);
         $oConfiguration->aConfig = $dataDashboard;
         $oConfiguration->saveConfig('Dashboard', '', '', $_SESSION['USER_LOGGED']);
         $result->success = '1';
         return $result;
     } catch (Exception $error) {
         //ToDo: Display a error message
     }
 }
예제 #9
0
    /**
     * Update the report table with a determinated case data
     * @param string $proUid
     * @param string $appUid
     * @param string $appNumber
     * @param string $caseData
     */
    public function updateReportTables($proUid, $appUid, $appNumber, $caseData, $appStatus)
    {
        G::loadClass('pmTable');
        //get all Active Report Tables
        $criteria = new Criteria('workflow');
        $criteria->add(AdditionalTablesPeer::PRO_UID, $proUid);
        $dataset = AdditionalTablesPeer::doSelectRS($criteria);
        $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);

        // accomplish all related  report tables for this process that contain case data
        // for the target ($appUid) application
        while ($dataset->next()) {
            $row = $dataset->getRow();
            $className = $row['ADD_TAB_CLASS_NAME'];
            // verify if the report table class exists
            if (!file_exists(PATH_WORKSPACE . 'classes/' . $className . '.php')) {
                continue;
            }
            // the class exists then load it.
            require_once PATH_WORKSPACE . 'classes/' . $className . '.php';
            // create a criteria object of report table class
            $c = new Criteria(pmTable::resolveDbSource($row['DBS_UID']));
            // select all related records with this $appUid
            eval('$c->add(' . $className . 'Peer::APP_UID, \'' . $appUid . '\');');
            eval('$records = ' . $className . 'Peer::doSelect($c);');

            //Select all types
            require_once 'classes/model/Fields.php';
            $criteriaField = new Criteria('workflow');
            $criteriaField->add(FieldsPeer::ADD_TAB_UID, $row['ADD_TAB_UID']);
            $datasetField = FieldsPeer::doSelectRS($criteriaField);
            $datasetField->setFetchmode(ResultSet::FETCHMODE_ASSOC);
            $fieldTypes = array();
            while ($datasetField->next()) {
                $rowfield = $datasetField->getRow();
                switch ($rowfield['FLD_TYPE']) {
                    case 'FLOAT':
                    case 'DOUBLE':
                    case 'INTEGER':
                        $fieldTypes[] = array($rowfield['FLD_NAME']=>$rowfield['FLD_TYPE']);
                        break;
                    default:
                        break;
                }
            }

            switch ($row['ADD_TAB_TYPE']) {
                //switching by report table type
                case 'NORMAL':
                    // parsing empty values to null
                    if (!is_array($caseData)) {
                        $caseData = unserialize($caseData);
                    }
                    foreach ($caseData as $i => $v) {
                        foreach ($fieldTypes as $key => $fieldType) {
                            foreach ($fieldType as $name => $type) {
                                if ( strtoupper ( $i) == $name) {
                                    $v = validateType ($v, $type);
                                    unset($name);
                                }
                            }
                        }
                        $caseData[$i] = $v === '' ? null : $v;
                    }

                    if (is_array($records) && count($records) > 0) {
                        // if the record already exists on the report table
                        foreach ($records as $record) {
                            //update all records
                            if (method_exists($record, 'setAppStatus')) {
                                $record->setAppStatus($appStatus);
                            }
                            $record->fromArray(array_change_key_case($caseData, CASE_UPPER), BasePeer::TYPE_FIELDNAME);
                            if ($record->validate()) {
                                $record->save();
                            }
                        }
                    } else {
                        // there are not any record for this application on the table, then create it
                        eval('$obj = new ' . $className . '();');
                        $obj->fromArray(array_change_key_case($caseData, CASE_UPPER), BasePeer::TYPE_FIELDNAME);
                        $obj->setAppUid($appUid);
                        $obj->setAppNumber($appNumber);
                        if (method_exists($obj, 'setAppStatus')) {
                            $obj->setAppStatus($appStatus);
                        }
                        $obj->save();
                    }
                    break;
                case 'GRID':
                    list($gridName, $gridUid) = explode('-', $row['ADD_TAB_GRID']);
                    $gridData = isset($caseData[$gridName]) ? $caseData[$gridName] : array();

                    // delete old records
                    if (is_array($records) && count($records) > 0) {
                        foreach ($records as $record) {
                            $record->delete();
                        }
                    }
                    // save all grid rows on grid type report table
                    foreach ($gridData as $i => $gridRow) {
                        eval('$obj = new ' . $className . '();');
                        //Parsing values
                        foreach ($gridRow as $j => $v) {
                            foreach ($fieldTypes as $key => $fieldType) {
                                foreach ($fieldType as $name => $type) {
                                    if ( strtoupper ( $j) == $name) {
                                        $v = validateType ($v, $type);
                                        unset($name);
                                    }
                                }
                            }
                            $gridRow[$j] = $v === '' ? null : $v;
                        }
                        $obj->fromArray(array_change_key_case($gridRow, CASE_UPPER), BasePeer::TYPE_FIELDNAME);
                        $obj->setAppUid($appUid);
                        $obj->setAppNumber($appNumber);
                        if (method_exists($obj, 'setAppStatus')) {
                            $obj->setAppStatus($appStatus);
                        }
                        $obj->setRow($i);
                        $obj->save();
                    }
                    break;
            }
        }
    }
예제 #10
0
 /**
  * get user preferences for default redirect
  * verifying if it has any preferences on configurations table
  */
 public function _getDefaultLocation()
 {
     global $RBAC;
     G::loadClass('configuration');
     $oConf = new Configurations();
     $oConf->loadConfig($x, 'USER_PREFERENCES', '', '', $_SESSION['USER_LOGGED'], '');
     //$baseUrl = '/sys' . SYS_SYS . '/' . $this->lang . '/' . SYS_SKIN . '/';
     if (isset($_COOKIE['workspaceSkin'])) {
         $baseUrl = '/sys' . SYS_SYS . '/' . $this->lang . '/' . $_COOKIE['workspaceSkin'] . '/';
     } else {
         $baseUrl = '/sys' . SYS_SYS . '/' . $this->lang . '/' . SYS_SKIN . '/';
     }
     $url = '';
     if (sizeof($oConf->aConfig) > 0) {
         // this user has a configuration record
         // backward compatibility, because now, we don't have user and dashboard menu.
         if ($oConf->aConfig['DEFAULT_MENU'] == 'PM_USERS') {
             $oConf->aConfig['DEFAULT_MENU'] = 'PM_SETUP';
         }
         switch ($oConf->aConfig['DEFAULT_MENU']) {
             case 'PM_SETUP':
                 if ($RBAC->userCanAccess('PM_SETUP') == 1) {
                     $url = 'setup/main';
                 }
                 break;
             case 'PM_FACTORY':
                 if ($RBAC->userCanAccess('PM_FACTORY') == 1) {
                     $url = 'processes/main';
                 }
                 break;
             case 'PM_CASES':
                 if ($RBAC->userCanAccess('PM_CASES') == 1) {
                     $url = 'cases/main';
                 }
                 break;
             case 'PM_USERS':
                 if ($RBAC->userCanAccess('PM_USERS') == 1) {
                     $url = 'setup/main';
                 }
                 break;
             case 'PM_DASHBOARD':
                 if ($RBAC->userCanAccess('PM_DASHBOARD') == 1) {
                     $url = 'dashboard/main';
                 }
                 break;
         }
     }
     if (empty($url)) {
         if ($RBAC->userCanAccess('PM_FACTORY') == 1) {
             $url = 'processes/main';
         } elseif ($RBAC->userCanAccess('PM_SETUP') == 1) {
             $url = 'setup/main';
         } elseif ($RBAC->userCanAccess('PM_CASES') == 1) {
             $url = 'cases/main';
         } elseif ($RBAC->userCanAccess('PM_USERS') == 1) {
             $url = 'setup/main';
         } elseif ($RBAC->userCanAccess('PM_DASHBOARD') == 1) {
             $url = 'dashboard/dashboard';
         } else {
             $url = 'users/myInfo';
         }
     }
     return $baseUrl . $url;
 }
예제 #11
0
 function getInfoFromPOFile($file)
 {
     G::loadClass('i18n_po');
     $POFile = new i18n_PO($file);
     $POFile->readInit();
     $POHeaders = $POFile->getHeaders();
     if ($POHeaders['X-Poedit-Country'] != '.') {
         $country = self::getTranslationMetaByCountryName($POHeaders['X-Poedit-Country']);
     } else {
         $country = '.';
     }
     $language = self::getTranslationMetaByLanguageName($POHeaders['X-Poedit-Language']);
     if ($language !== false) {
         if ($country !== false) {
             if ($country != '.') {
                 $LOCALE = $language['LAN_ID'] . '-' . $country['IC_UID'];
             } else {
                 if ($country == '.') {
                     //this a trsnlation file with a language international, no country name was set
                     $LOCALE = $language['LAN_ID'];
                 } else {
                     throw new Exception('PO File Error: "' . $file . '" has a invalid country definition!');
                 }
             }
         } else {
             throw new Exception('PO File Error: "' . $file . '" has a invalid country definition!');
         }
     } else {
         throw new Exception('PO File Error: "' . $file . '" has a invalid language definition!');
     }
     $countItems = 0;
     try {
         while ($rowTranslation = $POFile->getTranslation()) {
             $countItems++;
         }
     } catch (Exception $e) {
         $countItems = '-';
     }
     return array('LOCALE' => $LOCALE, 'HEADERS' => $POHeaders, 'COUNT' => $countItems);
 }
예제 #12
0
function getEmailConfiguration()
{
    G::loadClass('system');
    return System::getEmailConfiguration();
}
예제 #13
0
 /**
  * Login
  */
 public function login()
 {
     require_once 'classes/model/LoginLog.php';
     G::LoadClass('system');
     G::loadClass('configuration');
     $this->conf = new Configurations();
     // getting posibles errors passed by GET method
     $this->getInUrlError();
     if (!isset($_SESSION['G_MESSAGE'])) {
         $_SESSION['G_MESSAGE'] = '';
     }
     if (!isset($_SESSION['G_MESSAGE_TYPE'])) {
         $_SESSION['G_MESSAGE_TYPE'] = '';
     }
     $msg = $_SESSION['G_MESSAGE'];
     $msgType = $_SESSION['G_MESSAGE_TYPE'];
     if (!isset($_SESSION['FAILED_LOGINS'])) {
         $_SESSION['FAILED_LOGINS'] = 0;
     }
     $sFailedLogins = $_SESSION['FAILED_LOGINS'];
     if (isset($_SESSION['USER_LOGGED'])) {
         //close the session, if the current session_id was used in PM.
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(LoginLogPeer::LOG_SID, session_id());
         $oCriteria->add(LoginLogPeer::USR_UID, isset($_SESSION['USER_LOGGED']) ? $_SESSION['USER_LOGGED'] : '-');
         $oCriteria->add(LoginLogPeer::LOG_STATUS, 'ACTIVE');
         $oCriteria->add(LoginLogPeer::LOG_END_DATE, null, Criteria::ISNULL);
         $oDataset = LoginLogPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         $aRow = $oDataset->getRow();
         if ($aRow) {
             if ($aRow['LOG_STATUS'] != 'CLOSED' && $aRow['LOG_END_DATE'] == null) {
                 $weblog = new LoginLog();
                 $aLog['LOG_UID'] = $aRow['LOG_UID'];
                 $aLog['LOG_STATUS'] = 'CLOSED';
                 $aLog['LOG_IP'] = $aRow['LOG_IP'];
                 $aLog['LOG_SID'] = session_id();
                 $aLog['LOG_INIT_DATE'] = $aRow['LOG_INIT_DATE'];
                 $aLog['LOG_END_DATE'] = date('Y-m-d H:i:s');
                 $aLog['LOG_CLIENT_HOSTNAME'] = $aRow['LOG_CLIENT_HOSTNAME'];
                 $aLog['USR_UID'] = $aRow['USR_UID'];
                 $weblog->update($aLog);
             }
         }
         //remove memcached session
         $this->memcache->delete('rbacSession' . session_id());
     } else {
         // Execute SSO trigger
         $pluginRegistry =& PMPluginRegistry::getSingleton();
         if (defined('PM_SINGLE_SIGN_ON')) {
             if ($pluginRegistry->existsTrigger(PM_SINGLE_SIGN_ON)) {
                 if ($pluginRegistry->executeTriggers(PM_SINGLE_SIGN_ON, null)) {
                     // Start new session
                     @session_destroy();
                     session_start();
                     session_regenerate_id();
                     // Authenticate
                     $result = $this->authentication();
                     if ($result->success) {
                         // Redirect to landing page for the user
                         G::header('Location: ' . $result->url);
                         die;
                     }
                 }
             }
         }
     }
     //end log
     //start new session
     @session_destroy();
     session_start();
     session_regenerate_id();
     if (strlen($msg) > 0) {
         $_SESSION['G_MESSAGE'] = $msg;
     }
     if (strlen($msgType) > 0) {
         $_SESSION['G_MESSAGE_TYPE'] = $msgType;
     }
     $_SESSION['FAILED_LOGINS'] = $sFailedLogins;
     $availableLangArray = $this->getLanguagesList();
     G::LoadClass("serverConfiguration");
     $sflag = 0;
     if (($nextBeatDate = $this->memcache->get('nextBeatDate')) === false) {
         //get the serverconf singleton, and check if we can send the heartbeat
         $oServerConf =& serverConf::getSingleton();
         $sflag = $oServerConf->getHeartbeatProperty('HB_OPTION', 'HEART_BEAT_CONF');
         $sflag = trim($sflag) != '' ? $sflag : '1';
         //get date of next beat
         $nextBeatDate = $oServerConf->getHeartbeatProperty('HB_NEXT_BEAT_DATE', 'HEART_BEAT_CONF');
         $this->memcache->set('nextBeatDate', $nextBeatDate, 1 * 3600);
     } else {
         $sflag = '1';
     }
     if ($sflag == '1' && (strtotime("now") > $nextBeatDate || is_null($nextBeatDate))) {
         //To do: we need to change to ExtJs
         $this->setJSVar('flagHeartBeat', 1);
     } else {
         $this->setJSVar('flagHeartBeat', 0);
     }
     if (($flagGettingStarted = $this->memcache->get('flagGettingStarted')) === false) {
         require_once 'classes/model/Configuration.php';
         $oConfiguration = new Configuration();
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ConfigurationPeer::CFG_UID, 'getStarted');
         $oCriteria->add(ConfigurationPeer::OBJ_UID, '');
         $oCriteria->add(ConfigurationPeer::CFG_VALUE, '1');
         $oCriteria->add(ConfigurationPeer::PRO_UID, '');
         $oCriteria->add(ConfigurationPeer::USR_UID, '');
         $oCriteria->add(ConfigurationPeer::APP_UID, '');
         $flagGettingStarted = ConfigurationPeer::doCount($oCriteria);
         $this->memcache->set('flagGettingStarted', $flagGettingStarted, 8 * 3600);
     }
     $this->setJSVar('flagGettingStarted', $flagGettingStarted == 0);
     G::loadClass('configuration');
     $oConf = new Configurations();
     $oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', '');
     $flagForgotPassword = isset($oConf->aConfig['login_enableForgotPassword']) ? $oConf->aConfig['login_enableForgotPassword'] : '******';
     $this->includeExtJSLib('ux/virtualkeyboard');
     $this->includeExtJS('main/login');
     $this->setView('main/login');
     $oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', '');
     $forgotPasswd = isset($oConf->aConfig['login_enableForgotPassword']) ? $oConf->aConfig['login_enableForgotPassword'] : false;
     $virtualKeyboad = isset($oConf->aConfig['login_enableVirtualKeyboard']) ? $oConf->aConfig['login_enableVirtualKeyboard'] : false;
     $defaultLanguaje = isset($oConf->aConfig['login_defaultLanguage']) ? $oConf->aConfig['login_defaultLanguage'] : 'en';
     $this->setJSVar('forgotPasswd', $forgotPasswd);
     $this->setJSVar('virtualKeyboad', $virtualKeyboad);
     $this->setJSVar('languages', $availableLangArray);
     $this->setJSVar('defaultLang', $defaultLanguaje);
     //binding G::SendTemporalMessage() to Ext.msgBoxSlider.msgTopCenter()
     if (($flyNotify = $this->getFlyNotify()) !== false) {
         $this->setJSVar('flyNotify', $flyNotify);
     }
     //binding G::SendTemporalMessage() to Ext.msgBoxSlider.msgTopCenter()
     if (isset($_GET['u'])) {
         $this->setJSVar('urlRequested', urldecode($_GET['u']));
     }
     $this->setVar('logo_company', $this->getCompanyLogo());
     $this->setVar('pmos_version', System::getVersion());
     $footerText = 'Copyright © 2003-' . date('Y') . ' Colosa, Inc. All rights reserved.';
     $adviseText = 'Supplied free of charge with no support, certification, warranty,
         maintenance nor indemnity by Colosa and its Certified Partners. ';
     $this->setVar('footer_text', $footerText);
     $this->setVar('advise_text', $adviseText);
     $loginScript = $this->getHeadPublisher()->getExtJsLibraries();
     $loginScript .= $this->getHeadPublisher()->getExtJsScripts();
     $this->setVar('login_script', $loginScript);
     $this->setVar('login_vars', $this->getHeadPublisher()->getExtJsVariablesScript());
     $this->setLayout('pm-modern-login');
     $this->render();
 }
예제 #14
0
    public function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0)

    {

        $sw_template = false;

        try {

            switch ($iForm) {

                case 1:

                    $sFilename = 'tasks/tasks_Definition.xml';

                    break;

                case 2:

                    $sFilename = 'tasks/tasks_AssignmentRules.xml';

                    break;

                case 3:

                    $sFilename = 'tasks/tasks_TimingControl.xml';

                    break;

                case 4:

                    $sFilename = 'tasks/tasks_Owner.xml';

                    break;

                case 5:

                    $sFilename = 'tasks/tasks_Permissions.xml';

                    break;

                case 6:

                    $sFilename = 'tasks/tasks_Labels.xml';

                    break;

                case 7:

                    $sFilename = 'tasks/tasks_Notifications.xml';

                    break;

                case 8:

                    $sFilename = 'tasks/tasks_Consolidated.xml';

                    break;

                default:

                    //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011

                    $oPluginRegistry = & PMPluginRegistry::getSingleton();

                    $activePluginsForTaskProperties = $oPluginRegistry->getTaskExtendedProperties();

                    foreach ($activePluginsForTaskProperties as $key => $taskPropertiesInfo) {

                        $id = $taskPropertiesInfo->sNamespace . "--" . $taskPropertiesInfo->sName;

                        if ($id == $iForm) {

                            $sFilename = $taskPropertiesInfo->sPage;

                            $sw_template = true;

                        }

                    }



                    //$sFilename = 'tasks/tasks_Owner.xml';

                    break;

            }

            $oTask = new Task();

            $aFields = $oTask->load($sTaskUID);

            $aFields['INDEX'] = $iIndex;

            $aFields['IFORM'] = $iForm;

            $aFields['LANG'] = SYS_LANG;



            /**

             * Task Notifications *

             */

            if ($iForm == 7 || $iForm == 1) {

                G::loadClass('processes');

                $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail');



                $templates = array();

                $templates[] = 'dummy';



                foreach ($files as $file) {

                    $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename'] );

                }



                global $_DBArray;

                $_DBArray['_TEMPLATES1'] = $templates;

                $_SESSION['_DBArray'] = $_DBArray;



                if ($iForm == 7) {

                    // Additional configuration

                    G::loadClass('configuration');

                    $oConf = new Configurations();

                    $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', '');

                    $conf = $oConf->aConfig;

                    if (isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) {

                        $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE'];

                        $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE'];

                    }

                }

            }



            if ($iForm == 3) {

                //Load Calendar Information

                $calendar = new Calendar();

                $calendarObj = $calendar->getCalendarList(true, true);



                global $_DBArray;



                $_DBArray['availableCalendars'] = $calendarObj['array'];



                $_SESSION['_DBArray'] = $_DBArray;



                $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID);



                //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar

                $aFields['TAS_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";

            }



            if ($iForm == 2) {

                switch ($aFields["TAS_ASSIGN_TYPE"]) {

                    case "SELF_SERVICE":

                        $aFields["TAS_ASSIGN_TYPE"] = (!empty($aFields["TAS_GROUP_VARIABLE"])) ? "SELF_SERVICE_EVALUATE" : $aFields["TAS_ASSIGN_TYPE"];

                        break;

                }

            }



            if ($iForm == 8) {

                $oCaseConsolidated = CaseConsolidatedCorePeer::retrieveByPK($_SESSION["cDhTajE2T2lxSkhqMzZUTXVacWYyNcKwV3A4eWYybDdyb1p3"]["TAS_UID"]);

                if ((is_object($oCaseConsolidated)) && get_class($oCaseConsolidated) == "CaseConsolidated") {

                    require_once ("classes/model/ReportTable.php");



                    $aFields["CON_STATUS"]  = $oCaseConsolidated->getConStatus();

                    $aFields["DYN_UID"]     = $oCaseConsolidated->getDynUid();

                    $aFields["REP_TAB_UID"] = $oCaseConsolidated->getRepTabUid();



                    $oReportTables = new ReportTable();

                    $oReportTables = $oReportTables->load($aFields["REP_TAB_UID"]);

                    if (count($oReportTables)>0) {

                        if ($oReportTables['REP_TAB_STATUS'] == 'ACTIVE') {

                            $aFields["TABLE_NAME"] = $oReportTables['REP_TAB_NAME'];

                            $aFields["TITLE"] = $oReportTables['REP_TAB_TITLE'];

                        }

                    }

                }

                $aFields["PRO_UID"]  = $_SESSION["PROCESS"];

                $aFields["TAS_UID"]  = $_SESSION["cDhTajE2T2lxSkhqMzZUTXVacWYyNcKwV3A4eWYybDdyb1p3"]["TAS_UID"];

                $aFields["SYS_LANG"] = SYS_LANG;

                $aFields['INDEX']    = 0;

                $aFields["TABLE_NAME_DEFAULT"] = "__" . $aFields["TAS_UID"];



                $oCriteria = new Criteria("workflow");

                $del = DBAdapter::getStringDelimiter();



                $oCriteria->setDistinct();

                $oCriteria->addSelectColumn(DynaformPeer::DYN_UID);

                $oCriteria->addSelectColumn(ContentPeer::CON_VALUE);

                

                $aConditions   = array();

                $aConditions[] = array(DynaformPeer::DYN_UID, ContentPeer::CON_ID);

                $aConditions[] = array(ContentPeer::CON_CATEGORY, $del . "DYN_TITLE" . $del);

                $aConditions[] = array(ContentPeer::CON_LANG, $del . "en" . $del);

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

                

                $oCriteria->add(DynaformPeer::PRO_UID, $_SESSION["PROCESS"]);

                $oCriteria->add(DynaformPeer::DYN_TYPE, "grid");

                

                $oCriteria->addAscendingOrderByColumn(ContentPeer::CON_VALUE);



                $numRows = DynaformPeer::doCount($oCriteria);

                if ($numRows == 0) {

                    $aFields['TITLE_ALERT'] = G::LoadTranslation('ID_ALERT');

                    $aFields['SUBTITLE_MESSAGE'] = G::LoadTranslation('ID_CONSOLIDATED_DYNAFORM_REQUIRED');

                    $sFilename = 'tasks/tasks_Consolidated_Error.xml';

                }

            }



            global $G_PUBLISH;

            G::LoadClass('xmlfield_InputPM');

            $G_PUBLISH = new Publisher();

            if ($sw_template) {

                $G_PUBLISH->AddContent('view', $sFilename);

            } else {

                $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields);

            }



            G::RenderPage('publish', 'raw');

            return true;

        } catch (Exception $oError) {

            throw ($oError);

        }

    }
예제 #15
0
 /**
  *
  * @param string $target - task name to execute
  * @param string $buildFile - build file path
  * @param array $options - array options to override the options on .ini file
  * @param bool $verbose - to show a verbose output
  */
 public static function callPhing($target, $buildFile = '', $options = array(), $verbose = true)
 {
     G::loadClass('pmPhing');
     $args = array();
     foreach ($options as $key => $value) {
         $args[] = "-D{$key}={$value}";
     }
     if ($buildFile) {
         $args[] = '-f';
         $args[] = realpath($buildFile);
     }
     if (!$verbose) {
         $args[] = '-q';
     }
     if (is_array($target)) {
         $args = array_merge($args, $target);
     } else {
         $args[] = $target;
     }
     if (DIRECTORY_SEPARATOR != '\\' && (function_exists('posix_isatty') && @posix_isatty(STDOUT))) {
         $args[] = '-logger';
         $args[] = 'phing.listener.AnsiColorLogger';
     }
     Phing::startup();
     Phing::setProperty('phing.home', getenv('PHING_HOME'));
     $m = new pmPhing();
     $m->execute($args);
     $m->runBuild();
 }
예제 #16
0
 public function generatedDocumentsSummary()
 {
     global $G_PUBLISH;
     G::loadClass('configuration');
     $oHeadPublisher =& headPublisher::getSingleton();
     $conf = new Configurations();
     $oHeadPublisher->addExtJsScript('cases/casesGenerateDocumentPage', true);
     //adding a javascript file .js
     $oHeadPublisher->addContent('cases/casesGenerateDocumentPage');
     //adding a html file  .html.
     $oHeadPublisher->assign("FORMATS", $conf->getFormats());
     $oHeadPublisher->assign('pageSize', $conf->getEnvSetting('casesListRowNumber'));
     G::RenderPage('publish', 'extJs');
 }
예제 #17
0
 /**
  * Upgrade the AppCacheView table to the latest system version.
  *
  * This recreates the table and populates with data.
  *
  * @param bool $checkOnly only check if the upgrade is needed if true
  * @param string $lang not currently used
  */
 public function upgradeCacheView($fill = true)
 {
     $this->initPropel(true);
     $lang = "en";
     require_once 'classes/model/AppCacheView.php';
     //check the language, if no info in config about language, the default is 'en'
     G::loadClass('configuration');
     $oConf = new Configurations();
     $oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '');
     $appCacheViewEngine = $oConf->aConfig;
     //setup the appcacheview object, and the path for the sql files
     $appCache = new AppCacheView();
     $appCache->setPathToAppCacheFiles(PATH_METHODS . 'setup' . PATH_SEP . 'setupSchemas' . PATH_SEP);
     $userGrants = $appCache->checkGrantsForUser(false);
     $currentUser = $userGrants['user'];
     $currentUserIsSuper = $userGrants['super'];
     //if user does not have the SUPER privilege we need to use the root user and grant the SUPER priv. to normal user.
     if (!$currentUserIsSuper) {
         $appCache->checkGrantsForUser(true);
         $appCache->setSuperForUser($currentUser);
         $currentUserIsSuper = true;
     }
     CLI::logging("-> Creating table\n");
     //now check if table APPCACHEVIEW exists, and it have correct number of fields, etc.
     $res = $appCache->checkAppCacheView();
     CLI::logging("-> Creating triggers\n");
     //now check if we have the triggers installed
     $triggers = array();
     $triggers[] = $appCache->triggerAppDelegationInsert($lang, $checkOnly);
     $triggers[] = $appCache->triggerAppDelegationUpdate($lang, $checkOnly);
     $triggers[] = $appCache->triggerApplicationUpdate($lang, $checkOnly);
     $triggers[] = $appCache->triggerApplicationDelete($lang, $checkOnly);
     $triggers[] = $appCache->triggerContentUpdate($lang, $checkOnly);
     if ($fill) {
         CLI::logging("-> Rebuild Cache View\n");
         //build using the method in AppCacheView Class
         $res = $appCache->fillAppCacheView($lang);
         //set status in config table
         $confParams = array('LANG' => $lang, 'STATUS' => 'active');
     }
     $oConf->aConfig = $confParams;
     $oConf->saveConfig('APP_CACHE_VIEW_ENGINE', '', '', '');
     // removing casesList configuration records. TODO: removing these lines that resets all the configurations records
     $oCriteria = new Criteria();
     $oCriteria->add(ConfigurationPeer::CFG_UID, "casesList");
     $oCriteria->add(ConfigurationPeer::OBJ_UID, array("todo", "draft", "sent", "unassigned", "paused", "cancelled"), Criteria::NOT_IN);
     ConfigurationPeer::doDelete($oCriteria);
     // end of reset
 }
예제 #18
0
 /**
  * Replacement Logo
  * @global type $_REQUEST
  * @global type $RBAC
  */
 public function replacementLogo()
 {
     global $_REQUEST;
     $sfunction = $_REQUEST['nameFunction'];
     $_GET['NAMELOGO'] = $_REQUEST['NAMELOGO'];
     try {
         global $RBAC;
         switch ($RBAC->userCanAccess('PM_LOGIN')) {
             case -2:
                 G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
                 G::header('location: ../login/login');
                 die;
                 break;
             case -1:
                 G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
                 G::header('location: ../login/login');
                 die;
                 break;
         }
         switch ($sfunction) {
             case 'replacementLogo':
                 $snameLogo = urldecode($_GET['NAMELOGO']);
                 $snameLogo = trim($snameLogo);
                 $snameLogo = self::changeNamelogo($snameLogo);
                 G::loadClass('configuration');
                 $oConf = new Configurations();
                 $aConf = array('WORKSPACE_LOGO_NAME' => SYS_SYS, 'DEFAULT_LOGO_NAME' => $snameLogo);
                 $oConf->aConfig = $aConf;
                 $oConf->saveConfig('USER_LOGO_REPLACEMENT', '', '', '');
                 G::SendTemporalMessage('ID_REPLACED_LOGO', 'tmp-info', 'labels');
                 break;
             case 'restoreLogo':
                 $snameLogo = $_GET['NAMELOGO'];
                 G::loadClass('configuration');
                 $oConf = new Configurations();
                 $aConf = array('WORKSPACE_LOGO_NAME' => '', 'DEFAULT_LOGO_NAME' => '');
                 $oConf->aConfig = $aConf;
                 $oConf->saveConfig('USER_LOGO_REPLACEMENT', '', '', '');
                 G::SendTemporalMessage('ID_REPLACED_LOGO', 'tmp-info', 'labels');
                 break;
         }
     } catch (Exception $oException) {
         die($oException->getMessage());
     }
     exit;
 }
예제 #19
0
    /**

     * Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]

     *

     * function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)

     * @author Erik Amaru Ortiz <*****@*****.**>

     * @access public

     * @param  Process ID, Application ID, Task ID, User ID, Action, Delegation index

     * @return Array within all user permitions all objects' types

     */

    public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = "", $USR_UID = "", $ACTION = "", $delIndex = 0)

    {

        $aCase = $this->loadCase($APP_UID);



        if ($delIndex != 0) {

            $appDelay = new AppDelay();



            if ($appDelay->isPaused($APP_UID, $delIndex)) {

                $aCase["APP_STATUS"] = "PAUSED";

            }

        }



        $USER_PERMISSIONS = Array();

        $GROUP_PERMISSIONS = Array();

        $RESULT = Array(

            "DYNAFORM" => Array(),

            "INPUT" => Array(),

            "OUTPUT" => Array(),

            "CASES_NOTES" => 0,

            "MSGS_HISTORY" => Array()

        	/*----------------------------------********---------------------------------*/

        );



        //permissions per user

        $oCriteria = new Criteria('workflow');

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0')

                        )

                )

        );

        $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

        $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                        )

                )

        );



        $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

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



        while ($rs->next()) {

            $row = $rs->getRow();



            if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

            ) {

                array_push($USER_PERMISSIONS, $row);

            }

        }



        //permissions per group

        G::loadClass('groups');



        $gr = new Groups();

        $records = $gr->getActiveGroupsForAnUser($USR_UID);



        foreach ($records as $group) {

            $oCriteria = new Criteria('workflow');

            $oCriteria->add(ObjectPermissionPeer::USR_UID, $group);

            $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

            $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

            $oCriteria->add(

                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                            $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                            )

                    )

            );



            $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

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

            while ($rs->next()) {

                $row = $rs->getRow();



                if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                    $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

                ) {

                    array_push($GROUP_PERMISSIONS, $row);

                }

            }

        }



        $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);



        foreach ($PERMISSIONS as $row) {

            $USER = $row['USR_UID'];

            $USER_RELATION = $row['OP_USER_RELATION'];

            $TASK_SOURCE = $row['OP_TASK_SOURCE'];

            $PARTICIPATE = $row['OP_PARTICIPATE'];

            $O_TYPE = $row['OP_OBJ_TYPE'];

            $O_UID = $row['OP_OBJ_UID'];

            $ACTION = $row['OP_ACTION'];

            $CASE_STATUS = $row['OP_CASE_STATUS'];



            // here!,. we should verify $PARTICIPATE

            $sw_participate = false; // must be false for default

            if (($row['OP_CASE_STATUS'] != 'COMPLETED') && ($row['OP_CASE_STATUS'] != '') && ($row['OP_CASE_STATUS'] != '0')) {

                if ($PARTICIPATE == 1) {

                    $oCriteriax = new Criteria('workflow');

                    $oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);

                    $oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);



                    if (AppDelegationPeer::doCount($oCriteriax) == 0) {

                        $sw_participate = true;

                    }

                }

            }

            if (!$sw_participate) {

                switch ($O_TYPE) {

                    case 'ANY':

                        //for dynaforms

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



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

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

                        $oDataset->next();



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

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }



                        //InputDocuments and OutputDocuments

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);



                        $arrayCondition = array();

                        $arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);

                        $arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);

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



                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(

                                $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->

                                        addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->

                                        addOr($oCriteria->

                                                getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                        );



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

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



                        while ($oDataset->next()) {

                            $aRow = $oDataset->getRow();



                            if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {

                                $aRow['APP_DOC_TYPE'] = "INPUT";

                            }

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {

                                array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);

                            }

                        }



                        $RESULT['CASES_NOTES'] = 1;

                        /*----------------------------------********---------------------------------*/



                        // Message History

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);



                        $arrayDelIndex = array();



                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            //Users

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);



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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }



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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;

                    case 'DYNAFORM':

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

                            $oCriteria->add(DynaformPeer::DYN_UID, $O_UID);

                        }

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



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

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

                        $oDataset->next();



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

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }

                        break;

                    case 'INPUT':

                    case 'OUTPUT':

                        if ($row['OP_OBJ_TYPE'] == 'INPUT') {

                            $obj_type = 'INPUT';

                        } else {

                            $obj_type = 'OUTPUT';

                        }

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

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

                        }

                        if ($obj_type == 'INPUT') {

                            $oCriteria->add(

                                    $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->

                                            addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                            );

                        } else {

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

                        }



                        $aConditions = Array();

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

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

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



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

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

                        $oDataset->next();

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

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {

                                array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);

                            }

                            $oDataset->next();

                        }

                        if ($obj_type == 'INPUT') {

                            // For supervisor documents

                            $oCriteria = new Criteria('workflow');

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                            $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(ApplicationPeer::PRO_UID, $PRO_UID);

                            if ($O_UID != '' && $O_UID != '0') {

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

                            }

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

                            $oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);



                            $oCriteria->addJoin(ApplicationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::LEFT_JOIN);



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

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

                            $oDataset->next();

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

                                if (!in_array($aRow['APP_DOC_UID'], $RESULT['INPUT'])) {

                                    array_push($RESULT['INPUT'], $aRow['APP_DOC_UID']);

                                }

                                $oDataset->next();

                            }

                        }

                        break;

                    case 'CASES_NOTES':

                        $RESULT['CASES_NOTES'] = 1;

                        break;

                    /*----------------------------------********---------------------------------*/

                    case 'MSGS_HISTORY':

                        // Permission

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);

                        $arrayDelIndex = array();

                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);

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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

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

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;



                }

            }

        }

        return Array(

            "DYNAFORMS" => $RESULT['DYNAFORM'],

            "INPUT_DOCUMENTS" => $RESULT['INPUT'],

            "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'],

            "CASES_NOTES" => $RESULT['CASES_NOTES'],

            "MSGS_HISTORY" => $RESULT['MSGS_HISTORY']

        	/*----------------------------------********---------------------------------*/

        );

    }
예제 #20
0
 case 'editProfile':
     G::header('Location: ../fieldcontrol/my_profile');
     die;
     break;
 case 'editPassword':
     G::header('Location: ../fieldcontrol/my_profile.php?type=onlyPassword');
     die;
     break;
 case 'start':
     // Validating request data
     if (!isset($_REQUEST['task'])) {
         throw new Exception('The required parameter "task" is empty.');
     }
     // Start a case
     # Get the last draft case
     G::loadClass('pmFunctions');
     G::LoadClass('case');
     $caseInstance = new Cases();
     $sqlGetProcess = 'SELECT PRO_UID FROM TASK WHERE TAS_UID="' . $_REQUEST['task'] . '"';
     $resultGetProcess = executeQuery($sqlGetProcess);
     $sqlDraft = "SELECT MAX(APP_NUMBER), APP_UID FROM APPLICATION\n                     WHERE APP_STATUS = 'DRAFT' AND PRO_UID='" . $resultGetProcess[1]['PRO_UID'] . "' AND APP_CUR_USER= '******'USER_LOGGED'] . "'  GROUP BY APP_NUMBER ";
     $resultDraft = executeQuery($sqlDraft);
     if (sizeof($resultDraft)) {
         $sqlprocessTask = "SELECT * FROM APP_DELEGATION WHERE APP_UID= '" . $resultDraft[1]['APP_UID'] . "' AND DEL_INDEX= 1 ";
         $resultprocessTask = executeQuery($sqlprocessTask);
         if (sizeof($resultprocessTask)) {
             $_SESSION['APPLICATION'] = $resultDraft[1]['APP_UID'];
             $_SESSION['INDEX'] = 1;
             $_SESSION['PROCESS'] = $resultprocessTask[1]['PRO_UID'];
             $_SESSION['TASK'] = $resultprocessTask[1]['TAS_UID'];
             $_SESSION['STEP_POSITION'] = 0;
예제 #21
0
 public function replaceRowUserData($rowData)
 {
     try {
         G::loadClass('configuration');
         $oConfig = new Configuration();
         $aConfig = $oConfig->load('ENVIRONMENT_SETTINGS');
         $aConfig = unserialize($aConfig['CFG_VALUE']);
     } catch (Exception $e) {
         // if there is no configuration record then.
         $aConfig['format'] = '@userName';
     }
     if (isset($rowData['USR_UID']) && isset($rowData['APP_CURRENT_USER'])) {
         $rowData['APP_CURRENT_USER'] = $this->getFormatedUser($aConfig['format'], $rowData, 'USR_UID');
     }
     if (isset($rowData['PREVIOUS_USR_UID']) && isset($rowData['APP_DEL_PREVIOUS_USER'])) {
         $rowData['APP_DEL_PREVIOUS_USER'] = $this->getFormatedUser($aConfig['format'], $rowData, 'PREVIOUS_USR_UID');
     }
     return $rowData;
 }
예제 #22
0
<?php

G::loadClass('wsBase');
G::LoadClass('sessions');
class Services_Rest_Login
{
    public function post($user, $password)
    {
        $wsBase = new wsBase();
        $result = $wsBase->login($user, $password);
        if ($result->status_code == 0) {
            return array('auth_key' => $result->message);
        } else {
            throw new RestException(401, $result->message);
        }
    }
}
예제 #23
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;
 }
예제 #24
0
 /**
  * Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]
  *
  * function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)
  * @author Erik Amaru Ortiz <*****@*****.**>
  * @access public
  * @param  Process ID, Application ID, Task ID, User ID, Action
  * @return Array within all user permitions all objects' types
  */
 public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = '', $USR_UID = '', $ACTION = '')
 {
     $aCase = $this->loadCase($APP_UID);
     $USER_PERMISSIONS = array();
     $GROUP_PERMISSIONS = array();
     $RESULT = array("DYNAFORM" => array(), "INPUT" => array(), "OUTPUT" => array(), "CASES_NOTES" => 0);
     //permissions per user
     $oCriteria = new Criteria('workflow');
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0'))));
     $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
     $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0'))));
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, 'ALL')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '0'))));
     $rs = ObjectPermissionPeer::doSelectRS($oCriteria);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     while ($row = $rs->getRow()) {
         if ($aCase['APP_STATUS'] == $row['OP_CASE_STATUS'] || $row['OP_CASE_STATUS'] == '' || $row['OP_CASE_STATUS'] == 'ALL' || $row['OP_CASE_STATUS'] == '') {
             array_push($USER_PERMISSIONS, $row);
         }
         $rs->next();
     }
     //permissions per group
     G::loadClass('groups');
     $gr = new Groups();
     $records = $gr->getActiveGroupsForAnUser($USR_UID);
     foreach ($records as $group) {
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ObjectPermissionPeer::USR_UID, $group);
         $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
         $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
         $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0'))));
         $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, 'ALL')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '0'))));
         $rs = ObjectPermissionPeer::doSelectRS($oCriteria);
         $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         while ($rs->next()) {
             array_push($GROUP_PERMISSIONS, $rs->getRow());
         }
     }
     $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);
     foreach ($PERMISSIONS as $row) {
         $USER = $row['USR_UID'];
         $USER_RELATION = $row['OP_USER_RELATION'];
         $TASK_SOURCE = $row['OP_TASK_SOURCE'];
         $PARTICIPATE = $row['OP_PARTICIPATE'];
         $O_TYPE = $row['OP_OBJ_TYPE'];
         $O_UID = $row['OP_OBJ_UID'];
         $ACTION = $row['OP_ACTION'];
         $CASE_STATUS = $row['OP_CASE_STATUS'];
         // here!,. we should verify $PARTICIPATE
         $sw_participate = false;
         // must be false for default
         if ($row['OP_CASE_STATUS'] != 'COMPLETED' && $row['OP_CASE_STATUS'] != '' && $row['OP_CASE_STATUS'] != '0') {
             if ($PARTICIPATE == 1) {
                 $oCriteriax = new Criteria('workflow');
                 $oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);
                 $oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);
                 if (AppDelegationPeer::doCount($oCriteriax) == 0) {
                     $sw_participate = true;
                 }
             }
         }
         if (!$sw_participate) {
             switch ($O_TYPE) {
                 case 'ANY':
                     //for dynaforms
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
                     $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
                     $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
                     $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
                     $oCriteria->setDistinct();
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
                             array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
                         }
                         $oDataset->next();
                     }
                     //inputs
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
                     $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
                     $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     $oCriteria->add($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED')));
                     $aConditions = array();
                     $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
                     $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
                     $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
                             $aRow['APP_DOC_TYPE'] = "INPUT";
                         }
                         if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {
                             array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);
                         }
                         $oDataset->next();
                     }
                     $RESULT['CASES_NOTES'] = 1;
                     break;
                 case 'DYNAFORM':
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {
                             $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     if ($O_UID != '' && $O_UID != '0') {
                         $oCriteria->add(DynaformPeer::DYN_UID, $O_UID);
                     }
                     $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
                     $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
                     $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
                     $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
                     $oCriteria->setDistinct();
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
                             array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
                         }
                         $oDataset->next();
                     }
                     break;
                 case 'INPUT':
                 case 'OUTPUT':
                     if ($row['OP_OBJ_TYPE'] == 'INPUT') {
                         $obj_type = 'INPUT';
                     } else {
                         $obj_type = 'OUTPUT';
                     }
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
                     $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
                     $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     if ($O_UID != '' && $O_UID != '0') {
                         $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);
                     }
                     if ($obj_type == 'INPUT') {
                         $oCriteria->add($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED')));
                     } else {
                         $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, $obj_type);
                     }
                     $aConditions = array();
                     $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
                     $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
                     $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {
                             array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);
                         }
                         $oDataset->next();
                     }
                     break;
                 case 'CASES_NOTES':
                     $RESULT['CASES_NOTES'] = 1;
                     break;
             }
         }
     }
     return array("DYNAFORMS" => $RESULT['DYNAFORM'], "INPUT_DOCUMENTS" => $RESULT['INPUT'], "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'], "CASES_NOTES" => $RESULT['CASES_NOTES']);
 }
예제 #25
0
 public function getAllProcesses($start, $limit, $category = null, $processName = null, $counters = true, $reviewSubProcess = false, $userLogged = "")
 {
     require_once PATH_RBAC . "model/RbacUsers.php";
     require_once "classes/model/ProcessCategory.php";
     require_once "classes/model/Users.php";
     $user = new RbacUsers();
     $aProcesses = array();
     $categories = array();
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn(ProcessPeer::PRO_UID);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_PARENT);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_STATUS);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_TYPE);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_CATEGORY);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_UPDATE_DATE);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_CREATE_DATE);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_CREATE_USER);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_DEBUG);
     $oCriteria->addSelectColumn(ProcessPeer::PRO_TYPE_PROCESS);
     $oCriteria->addSelectColumn(UsersPeer::USR_UID);
     $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME);
     $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
     $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME);
     $oCriteria->addSelectColumn(ProcessCategoryPeer::CATEGORY_UID);
     $oCriteria->addSelectColumn(ProcessCategoryPeer::CATEGORY_NAME);
     $oCriteria->add(ProcessPeer::PRO_UID, '', Criteria::NOT_EQUAL);
     $oCriteria->add(ProcessPeer::PRO_STATUS, 'DISABLED', Criteria::NOT_EQUAL);
     if ($reviewSubProcess) {
         $oCriteria->add(ProcessPeer::PRO_SUBPROCESS, '1', Criteria::NOT_EQUAL);
     }
     if (isset($category)) {
         $oCriteria->add(ProcessPeer::PRO_CATEGORY, $category, Criteria::EQUAL);
     }
     $oCriteria->addJoin(ProcessPeer::PRO_CREATE_USER, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
     $oCriteria->addJoin(ProcessPeer::PRO_CATEGORY, ProcessCategoryPeer::CATEGORY_UID, Criteria::LEFT_JOIN);
     if ($this->sort == "PRO_CREATE_DATE") {
         if ($this->dir == "DESC") {
             $oCriteria->addDescendingOrderByColumn(ProcessPeer::PRO_CREATE_DATE);
         } else {
             $oCriteria->addAscendingOrderByColumn(ProcessPeer::PRO_CREATE_DATE);
         }
     }
     if ($userLogged != "") {
         $oCriteria->add($oCriteria->getNewCriterion(ProcessPeer::PRO_TYPE_PROCESS, "PUBLIC", Criteria::EQUAL)->addOr($oCriteria->getNewCriterion(ProcessPeer::PRO_CREATE_USER, $userLogged, Criteria::EQUAL)));
     }
     $this->tmpCriteria = clone $oCriteria;
     //execute a query to obtain numbers, how many cases there are by process
     if ($counters) {
         $casesCnt = $this->getCasesCountInAllProcesses();
     }
     // getting bpmn projects
     $c = new Criteria('workflow');
     $c->addSelectColumn(BpmnProjectPeer::PRJ_UID);
     $ds = ProcessPeer::doSelectRS($c, Propel::getDbConnection('workflow_ro'));
     $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $bpmnProjects = array();
     while ($ds->next()) {
         $row = $ds->getRow();
         $bpmnProjects[] = $row['PRJ_UID'];
     }
     //execute the query
     $oDataset = ProcessPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $processes = array();
     $uids = array();
     while ($oDataset->next()) {
         $row = $oDataset->getRow();
         $row["PROJECT_TYPE"] = $row["PRO_TYPE"] == "NORMAL" ? in_array($row["PRO_UID"], $bpmnProjects) ? "bpmn" : "classic" : $row["PRO_TYPE"];
         $processes[] = $row;
         $uids[] = $processes[sizeof($processes) - 1]['PRO_UID'];
     }
     //process details will have the info about the processes
     $processesDetails = array();
     //now get the labels for all process, using an array of Uids,
     $c = new Criteria('workflow');
     //$c->add ( ContentPeer::CON_CATEGORY, 'PRO_TITLE', Criteria::EQUAL );
     $c->add(ContentPeer::CON_LANG, defined('SYS_LANG') ? SYS_LANG : 'en', Criteria::EQUAL);
     $c->add(ContentPeer::CON_ID, $uids, Criteria::IN);
     $dt = ContentPeer::doSelectRS($c, Propel::getDbConnection('workflow_ro'));
     $dt->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     while ($dt->next()) {
         $row = $dt->getRow();
         $processesDetails[$row['CON_ID']][$row['CON_CATEGORY']] = $row['CON_VALUE'];
     }
     G::loadClass('configuration');
     $oConf = new Configurations();
     $oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', '');
     foreach ($processes as $process) {
         $proTitle = isset($processesDetails[$process['PRO_UID']]) && isset($processesDetails[$process['PRO_UID']]['PRO_TITLE']) ? $processesDetails[$process['PRO_UID']]['PRO_TITLE'] : '';
         $proDescription = isset($processesDetails[$process['PRO_UID']]) && isset($processesDetails[$process['PRO_UID']]['PRO_DESCRIPTION']) ? $processesDetails[$process['PRO_UID']]['PRO_DESCRIPTION'] : '';
         $process["PRO_TYPE_PROCESS"] = $process["PRO_TYPE_PROCESS"] == "PUBLIC" ? G::LoadTranslation("ID_PUBLIC") : G::LoadTranslation("ID_PRIVATE");
         // verify if the title is already set on the current language
         if (trim($proTitle) == '') {
             // if not, then load the record to generate content for current language
             $proData = $this->load($process['PRO_UID']);
             $proTitle = $proData['PRO_TITLE'];
             $proDescription = $proData['PRO_DESCRIPTION'];
         }
         //filtering by $processName
         if (isset($processName) && $processName != '' && stripos($proTitle, $processName) === false) {
             continue;
         }
         if ($counters) {
             $casesCountTotal = 0;
             if (isset($casesCnt[$process['PRO_UID']])) {
                 foreach ($casesCnt[$process['PRO_UID']] as $item) {
                     $casesCountTotal += $item;
                 }
             }
         }
         //get user format from configuration
         $userOwner = isset($oConf->aConfig['format']) ? $oConf->aConfig['format'] : '';
         $creationDateMask = isset($oConf->aConfig['dateFormat']) ? $oConf->aConfig['dateFormat'] : '';
         if ($userOwner != '') {
             $userOwner = str_replace('@userName', $process['USR_USERNAME'], $userOwner);
             $userOwner = str_replace('@firstName', $process['USR_FIRSTNAME'], $userOwner);
             $userOwner = str_replace('@lastName', $process['USR_LASTNAME'], $userOwner);
             if ($userOwner == " ( )") {
                 $userOwner = '-';
             }
         } else {
             $userOwner = $process['USR_FIRSTNAME'] . ' ' . $process['USR_LASTNAME'];
         }
         //get date format from configuration
         if ($creationDateMask != '') {
             list($date, $time) = explode(' ', $process['PRO_CREATE_DATE']);
             list($y, $m, $d) = explode('-', $date);
             list($h, $i, $s) = explode(':', $time);
             $process['PRO_CREATE_DATE'] = date($creationDateMask, mktime($h, $i, $s, $m, $d, $y));
         }
         $process['PRO_CATEGORY_LABEL'] = trim($process['PRO_CATEGORY']) != '' ? $process['CATEGORY_NAME'] : '- ' . G::LoadTranslation('ID_PROCESS_NO_CATEGORY') . ' -';
         $process['PRO_TITLE'] = $proTitle;
         $process['PRO_DESCRIPTION'] = $proDescription;
         $process['PRO_DEBUG'] = $process['PRO_DEBUG'];
         $process['PRO_DEBUG_LABEL'] = $process['PRO_DEBUG'] == "1" ? G::LoadTranslation('ID_ON') : G::LoadTranslation('ID_OFF');
         $process['PRO_STATUS_LABEL'] = $process['PRO_STATUS'] == 'ACTIVE' ? G::LoadTranslation('ID_ACTIVE') : G::LoadTranslation('ID_INACTIVE');
         $process['PRO_CREATE_USER_LABEL'] = $userOwner;
         if ($counters) {
             $process['CASES_COUNT_TO_DO'] = isset($casesCnt[$process['PRO_UID']]['TO_DO']) ? $casesCnt[$process['PRO_UID']]['TO_DO'] : 0;
             $process['CASES_COUNT_COMPLETED'] = isset($casesCnt[$process['PRO_UID']]['COMPLETED']) ? $casesCnt[$process['PRO_UID']]['COMPLETED'] : 0;
             $process['CASES_COUNT_DRAFT'] = isset($casesCnt[$process['PRO_UID']]['DRAFT']) ? $casesCnt[$process['PRO_UID']]['DRAFT'] : 0;
             $process['CASES_COUNT_CANCELLED'] = isset($casesCnt[$process['PRO_UID']]['CANCELLED']) ? $casesCnt[$process['PRO_UID']]['CANCELLED'] : 0;
             $process['CASES_COUNT'] = $casesCountTotal;
         }
         unset($process['PRO_CREATE_USER']);
         $aProcesses[] = $process;
     }
     $memcache =& PMmemcached::getSingleton(SYS_SYS);
     if (isset($memcache) && $memcache->enabled == 1) {
         return $aProcesses;
     }
     if ($limit == '') {
         $limit = count($aProcesses);
     }
     if ($this->sort != "PRO_CREATE_DATE") {
         if ($this->dir == "ASC") {
             usort($aProcesses, array($this, "ordProcessAsc"));
         } else {
             usort($aProcesses, array($this, "ordProcessDesc"));
         }
     }
     return $aProcesses;
 }
예제 #26
0
 public function editTaskProperties($sTaskUID = '', $iForm = 1, $iIndex = 0)
 {
     $sw_template = false;
     try {
         switch ($iForm) {
             case 1:
                 $sFilename = 'tasks/tasks_Definition.xml';
                 break;
             case 2:
                 $sFilename = 'tasks/tasks_AssignmentRules.xml';
                 break;
             case 3:
                 $sFilename = 'tasks/tasks_TimingControl.xml';
                 break;
             case 4:
                 $sFilename = 'tasks/tasks_Owner.xml';
                 break;
             case 5:
                 $sFilename = 'tasks/tasks_Permissions.xml';
                 break;
             case 6:
                 $sFilename = 'tasks/tasks_Labels.xml';
                 break;
             case 7:
                 $sFilename = 'tasks/tasks_Notifications.xml';
                 break;
             default:
                 //if the $iForm is not one of the defaults then search under Plugins for an extended property. By JHL Jan 18, 2011
                 $oPluginRegistry =& PMPluginRegistry::getSingleton();
                 $activePluginsForTaskProperties = $oPluginRegistry->getTaskExtendedProperties();
                 $oPM->taskOptions = array();
                 foreach ($activePluginsForTaskProperties as $key => $taskPropertiesInfo) {
                     $id = $taskPropertiesInfo->sNamespace . "--" . $taskPropertiesInfo->sName;
                     if ($id == $iForm) {
                         $sFilename = $taskPropertiesInfo->sPage;
                         $sw_template = true;
                     }
                 }
                 //$sFilename = 'tasks/tasks_Owner.xml';
                 break;
         }
         $oTask = new Task();
         $aFields = $oTask->load($sTaskUID);
         $aFields['INDEX'] = $iIndex;
         $aFields['IFORM'] = $iForm;
         $aFields['LANG'] = SYS_LANG;
         /**
          * Task Notifications *
          */
         if ($iForm == 7 || $iForm == 1) {
             G::loadClass('processes');
             $files = Processes::getProcessFiles($aFields['PRO_UID'], 'mail');
             $templates = array();
             $templates[] = 'dummy';
             foreach ($files as $file) {
                 $templates[] = array('FILE' => $file['filename'], 'NAME' => $file['filename']);
             }
             global $_DBArray;
             $_DBArray['_TEMPLATES1'] = $templates;
             $_SESSION['_DBArray'] = $_DBArray;
             if ($iForm == 7) {
                 // Additional configuration
                 G::loadClass('configuration');
                 $oConf = new Configurations();
                 $oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aFields['TAS_UID'], '', '');
                 $conf = $oConf->aConfig;
                 if (isset($conf['TAS_DEF_MESSAGE_TYPE']) && isset($conf['TAS_DEF_MESSAGE_TYPE'])) {
                     $aFields['TAS_DEF_MESSAGE_TYPE'] = $conf['TAS_DEF_MESSAGE_TYPE'];
                     $aFields['TAS_DEF_MESSAGE_TEMPLATE'] = $conf['TAS_DEF_MESSAGE_TEMPLATE'];
                 }
             }
         }
         if ($iForm == 3) {
             //Load Calendar Information
             $calendar = new Calendar();
             $calendarObj = $calendar->getCalendarList(true, true);
             global $_DBArray;
             $_DBArray['availableCalendars'] = $calendarObj['array'];
             $_SESSION['_DBArray'] = $_DBArray;
             $calendarInfo = $calendar->getCalendarFor($sTaskUID, $sTaskUID, $sTaskUID);
             //If the function returns a DEFAULT calendar it means that this object doesn't have assigned any calendar
             $aFields['TAS_CALENDAR'] = $calendarInfo['CALENDAR_APPLIED'] != 'DEFAULT' ? $calendarInfo['CALENDAR_UID'] : "";
         }
         if ($iForm == 2) {
             switch ($aFields["TAS_ASSIGN_TYPE"]) {
                 case "SELF_SERVICE":
                     $aFields["TAS_ASSIGN_TYPE"] = !empty($aFields["TAS_GROUP_VARIABLE"]) ? "SELF_SERVICE_EVALUATE" : $aFields["TAS_ASSIGN_TYPE"];
                     break;
             }
         }
         global $G_PUBLISH;
         G::LoadClass('xmlfield_InputPM');
         $G_PUBLISH = new Publisher();
         if ($sw_template) {
             $G_PUBLISH->AddContent('view', $sFilename);
         } else {
             $G_PUBLISH->AddContent('xmlform', 'xmlform', $sFilename, '', $aFields);
         }
         G::RenderPage('publish', 'raw');
         return true;
     } catch (Exception $oError) {
         throw $oError;
     }
 }
예제 #27
0
 public function genDataReport($httpData)
 {
     G::loadClass('pmTable');
     require_once 'classes/model/AdditionalTables.php';
     $result->message = '';
     $result->success = true;
     $additionalTables = new AdditionalTables();
     $table = $additionalTables->load($httpData->id);
     if ($table['PRO_UID'] != '') {
         $additionalTables->populateReportTable($table['ADD_TAB_NAME'], pmTable::resolveDbSource($table['DBS_UID']), $table['ADD_TAB_TYPE'], $table['PRO_UID'], $table['ADD_TAB_GRID'], $table['ADD_TAB_UID']);
         $result->message = 'generated for table ' . $table['ADD_TAB_NAME'];
     }
     return $result;
 }
예제 #28
0
    public function createMySQLWorkspace ()

    {

        G::LoadSystem('inputfilter');

        $filter = new InputFilter();

        ini_set( 'max_execution_time', '0' );

        $info = new StdClass();

        $info->result = false;

        $info->message = '';

        $info->canRedirect = true;



        $db_hostname = trim( $_REQUEST['db_hostname'] );

        $db_port = trim( $_REQUEST['db_port'] );

        $db_port = $filter->validateInput($db_port);

        $db_username = trim( $_REQUEST['db_username'] );

        $db_username = $filter->validateInput($db_username);

        $db_password = trim( $_REQUEST['db_password'] );

        $db_password = $filter->validateInput($db_password);

        $wf = trim( $_REQUEST['wfDatabase'] );

        $rb = trim( $_REQUEST['wfDatabase'] );

        $rp = trim( $_REQUEST['wfDatabase'] );

        $workspace = trim( $_REQUEST['workspace'] );

        $pathConfig = trim( $_REQUEST['pathConfig'] );

        $pathLanguages = trim( $_REQUEST['pathLanguages'] );

        $pathPlugins = trim( $_REQUEST['pathPlugins'] );

        $pathShared = trim( $_REQUEST['pathShared'] );

        $pathXmlforms = trim( $_REQUEST['pathXmlforms'] );

        $adminPassword = trim( $_REQUEST['adminPassword'] );

        $adminPassword = $filter->validateInput($adminPassword);

        $adminUsername = trim( $_REQUEST['adminUsername'] );

        $adminUsername = $filter->validateInput($adminUsername);

        $deleteDB = ($_REQUEST['deleteDB'] == 'true');

        $userLogged = (isset($_REQUEST['userLogged']) ? ($_REQUEST['userLogged'] == 'true') : false);

        $userLogged = $filter->validateInput($userLogged);



        if (substr( $pathShared, - 1 ) != '/') {

            $pathShared .= '/';

        }



        $this->installLog( '-------------------------------------------' );

        $this->installLog( G::LoadTranslation('ID_CREATING_WORKSPACE', SYS_LANG, Array($workspace)));



        try {

            $db_host = ($db_port != '' && $db_port != 3306) ? $db_hostname . ':' . $db_port : $db_hostname;

            $db_host = $filter->validateInput($db_host);

            $db_username = $filter->validateInput($db_username);

            $db_password = $filter->validateInput($db_password);

            $this->link = @mysql_connect( $db_host, $db_username, $db_password );

            $this->installLog( G::LoadTranslation('ID_CONNECT_TO_SERVER', SYS_LANG, Array($db_hostname, $db_port, $db_username ) ));



            if ($deleteDB) {

                $q = sprintf( 'DROP DATABASE IF EXISTS %s;', $wf, $wf );

                $this->mysqlQuery( $q );

            }



            // CREATE databases wf_workflow, rb_workflow and rp_workflow

            $q = sprintf( 'CREATE DATABASE IF NOT EXISTS %s;', $wf, $wf );

            $this->mysqlQuery( $q );



            // CREATE users and GRANT Privileges

            $wf_workpace = $wf;

            $rb_workpace = $wf;

            $rp_workpace = $wf;

            if (!$userLogged) {

                $wfPass = G::generate_password( 12 );

                $this->setGrantPrivilegesMySQL( $wf, $wfPass, $wf, $db_hostname );

                $this->setGrantPrivilegesMySQL( $rb, $wfPass, $wf, $db_hostname );

                $this->setGrantPrivilegesMySQL( $rp, $wfPass, $wf, $db_hostname );

            } else {

                $wfPass = $db_password;

                $rbPass = $db_password;

                $rpPass = $db_password;

                $wf = $db_username;

                $rb = $db_username;

                $rp = $db_username;

            }





            // Generate the db.php file and folders

            $pathSharedSites = $pathShared;

            $path_site = $pathShared . "/sites/" . $workspace . "/";

            $db_file = $path_site . "db.php";

            @mkdir( $path_site, 0777, true );

            @mkdir( $path_site . "files/", 0777, true );

            @mkdir( $path_site . "mailTemplates/", 0777, true );

            @mkdir( $path_site . "public/", 0777, true );

            @mkdir( $path_site . "reports/", 0777, true );

            @mkdir( $path_site . "xmlForms", 0777, true );



            $dbText = "<?php\n";

            $dbText .= sprintf( "// Processmaker configuration\n" );

            $dbText .= sprintf( "  define ('DB_ADAPTER',     '%s' );\n", 'mysql' );

            $dbText .= sprintf( "  define ('DB_HOST',        '%s' );\n", $db_host );

            $dbText .= sprintf( "  define ('DB_NAME',        '%s' );\n", $wf_workpace );

            $dbText .= sprintf( "  define ('DB_USER',        '%s' );\n", $wf );

            $dbText .= sprintf( "  define ('DB_PASS',        '%s' );\n", $wfPass );

            $dbText .= sprintf( "  define ('DB_RBAC_HOST',   '%s' );\n", $db_host );

            $dbText .= sprintf( "  define ('DB_RBAC_NAME',   '%s' );\n", $wf_workpace );

            $dbText .= sprintf( "  define ('DB_RBAC_USER',   '%s' );\n", $wf );

            $dbText .= sprintf( "  define ('DB_RBAC_PASS',   '%s' );\n", $wfPass );

            $dbText .= sprintf( "  define ('DB_REPORT_HOST', '%s' );\n", $db_host );

            $dbText .= sprintf( "  define ('DB_REPORT_NAME', '%s' );\n", $wf_workpace );

            $dbText .= sprintf( "  define ('DB_REPORT_USER', '%s' );\n", $wf );

            $dbText .= sprintf( "  define ('DB_REPORT_PASS', '%s' );\n", $wfPass );



            if (defined('PARTNER_FLAG') || isset($_REQUEST['PARTNER_FLAG'])) {

                $dbText .= "\n";

                $dbText .= "  define ('PARTNER_FLAG', " . ((defined('PARTNER_FLAG')) ? PARTNER_FLAG : ((isset($_REQUEST['PARTNER_FLAG'])) ? $_REQUEST['PARTNER_FLAG']:'false')) . ");\n";

                if ($this->systemName != '') {

                    $dbText .= "  define ('SYSTEM_NAME', '" . $this->systemName . "');\n";

                }

            }



            $this->installLog( G::LoadTranslation('ID_CREATING', SYS_LANG, Array($db_file) ));

            file_put_contents( $db_file, $dbText );



            // Generate the databases.php file

            $databases_file = $path_site . 'databases.php';

            $dbData = sprintf( "\$dbAdapter    = '%s';\n", 'mysql' );

            $dbData .= sprintf( "\$dbHost       = '%s';\n", $db_host );

            $dbData .= sprintf( "\$dbName       = '%s';\n", $wf_workpace );

            $dbData .= sprintf( "\$dbUser       = '******';\n", $wf );

            $dbData .= sprintf( "\$dbPass       = '******';\n", $wfPass );

            $dbData .= sprintf( "\$dbRbacHost   = '%s';\n", $db_host );

            $dbData .= sprintf( "\$dbRbacName   = '%s';\n", $wf_workpace );

            $dbData .= sprintf( "\$dbRbacUser   = '******';\n", $wf );

            $dbData .= sprintf( "\$dbRbacPass   = '******';\n", $wfPass );

            $dbData .= sprintf( "\$dbReportHost = '%s';\n", $db_host );

            $dbData .= sprintf( "\$dbReportName = '%s';\n", $wf_workpace );

            $dbData .= sprintf( "\$dbReportUser = '******';\n", $wf );

            $dbData .= sprintf( "\$dbReportPass = '******';\n", $wfPass );

            $databasesText = str_replace( '{dbData}', $dbData, @file_get_contents( PATH_HOME . 'engine/templates/installer/databases.tpl' ) );



            $this->installLog( G::LoadTranslation('ID_CREATING', SYS_LANG, Array($databases_file) ));

            file_put_contents( $databases_file, $databasesText );



            // Execute scripts to create and populates databases

            $query = sprintf( "USE %s;", $wf_workpace );

            $this->mysqlQuery( $query );



            $this->mysqlFileQuery( PATH_RBAC_HOME . 'engine/data/mysql/schema.sql' );

            $this->mysqlFileQuery( PATH_RBAC_HOME . 'engine/data/mysql/insert.sql' );

            

            $query = sprintf( "USE %s;", $wf_workpace );

            $this->mysqlQuery( $query );

            $this->mysqlFileQuery( PATH_HOME . 'engine/data/mysql/schema.sql' );

            $this->mysqlFileQuery( PATH_HOME . 'engine/data/mysql/insert.sql' );

            



            if (defined('PARTNER_FLAG') || isset($_REQUEST['PARTNER_FLAG'])) {

                $this->setPartner();

                //$this->setConfiguration();

            }



            // Create the triggers

            if (file_exists( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationInsert.sql' ) && file_exists( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationUpdate.sql' ) && file_exists( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationUpdate.sql' ) && file_exists( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationDelete.sql' ) && file_exists( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerContentUpdate.sql' )) {

                $this->mysqlQuery( @file_get_contents( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationInsert.sql' ) );

                $this->mysqlQuery( @file_get_contents( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerAppDelegationUpdate.sql' ) );

                $this->mysqlQuery( @file_get_contents( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationUpdate.sql' ) );

                $this->mysqlQuery( @file_get_contents( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerApplicationDelete.sql' ) );

                $this->mysqlQuery(@file_get_contents(PATH_HOME . "engine/methods/setup/setupSchemas/triggerSubApplicationInsert.sql"));

                $this->mysqlQuery( @file_get_contents( PATH_HOME . 'engine/methods/setup/setupSchemas/triggerContentUpdate.sql' ) );



                $this->mysqlQuery( "INSERT INTO `CONFIGURATION` (

                            `CFG_UID`,

                            `CFG_VALUE`

                           )

                           VALUES (

                             'APP_CACHE_VIEW_ENGINE',

                             '" . mysql_real_escape_string( serialize( array ('LANG' => 'en','STATUS' => 'active'

                ) ) ) . "'

                           )" );



                $this->mysqlQuery("INSERT INTO EMAIL_SERVER(MESS_UID, MESS_ENGINE) VALUES('" . \ProcessMaker\Util\Common::generateUID() . "', 'MAIL')");

            }



            // Change admin user

            $query = sprintf( "USE %s;", $wf_workpace );

            $this->mysqlQuery( $query );



            $query = sprintf( "UPDATE USERS SET USR_USERNAME = '******', USR_LASTNAME = '%s', USR_PASSWORD = '******' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, G::encryptOld( $adminPassword ) );

            $this->mysqlQuery( $query );



            $query = sprintf( "UPDATE RBAC_USERS SET USR_USERNAME = '******', USR_LASTNAME = '%s', USR_PASSWORD = '******' WHERE USR_UID = '00000000000000000000000000000001' ", $adminUsername, $adminUsername, G::encryptOld( $adminPassword ) );

            $this->mysqlQuery( $query );



            // Write the paths_installed.php file (contains all the information configured so far)

            if (! file_exists( FILE_PATHS_INSTALLED )) {

                $sh = G::encryptOld( filemtime( PATH_GULLIVER . '/class.g.php' ) );

                $h = G::encrypt( $db_hostname . $sh . $db_username . $sh . $db_password, $sh );

                $dbText = "<?php\n";

                $dbText .= sprintf( "  define('PATH_DATA',         '%s');\n", $pathShared );

                $dbText .= sprintf( "  define('PATH_C',            '%s');\n", $pathShared . 'compiled/' );

                $dbText .= sprintf( "  define('HASH_INSTALLATION', '%s');\n", $h );

                $dbText .= sprintf( "  define('SYSTEM_HASH',       '%s');\n", $sh );

                $this->installLog( G::LoadTranslation('ID_CREATING', SYS_LANG, Array(FILE_PATHS_INSTALLED) ));

                file_put_contents( FILE_PATHS_INSTALLED, $dbText );

            }



            /**

             * AppCacheView Build

             */

            define( 'HASH_INSTALLATION', $h );

            define( 'SYSTEM_HASH', $sh );

            define( 'PATH_DB', $pathShared . 'sites' . PATH_SEP );

            define( 'SYS_SYS', $workspace );



            require_once ("propel/Propel.php");



            Propel::init( PATH_CORE . "config/databases.php" );

            $con = Propel::getConnection( 'workflow' );



            require_once ('classes/model/AppCacheView.php');

            $lang = 'en';



            //setup the appcacheview object, and the path for the sql files

            $appCache = new AppCacheView();



            $appCache->setPathToAppCacheFiles( PATH_METHODS . 'setup' . PATH_SEP . 'setupSchemas' . PATH_SEP );



            //Update APP_DELEGATION.DEL_LAST_INDEX data

            $res = $appCache->updateAppDelegationDelLastIndex($lang, true);



            //APP_DELEGATION INSERT

            $res = $appCache->triggerAppDelegationInsert( $lang, true );



            //APP_DELEGATION Update

            $res = $appCache->triggerAppDelegationUpdate( $lang, true );



            //APPLICATION UPDATE

            $res = $appCache->triggerApplicationUpdate( $lang, true );



            //APPLICATION DELETE

            $res = $appCache->triggerApplicationDelete( $lang, true );



            //SUB_APPLICATION INSERT

            $res = $appCache->triggerSubApplicationInsert($lang, false);



            //CONTENT UPDATE

            $res = $appCache->triggerContentUpdate( $lang, true );



            //build using the method in AppCacheView Class

            $res = $appCache->fillAppCacheView( $lang );



            //end AppCacheView Build





            //erik: for new env conf handling

            G::loadClass( 'system' );

            $envFile = PATH_CONFIG . 'env.ini';



            // getting configuration from env.ini

            $sysConf = System::getSystemConfiguration( $envFile );



            $langUri = 'en';

            if (isset($sysConf['default_lang'])) {

                $langUri = $sysConf['default_lang'];

            }



            $skinUri = 'neoclassic';

            if (isset($sysConf['default_skin'])) {

                $skinUri = $sysConf['default_skin'];

            }



            $updatedConf['default_lang'] = $langUri;

            $updatedConf['default_skin'] = $skinUri;

            $info->uri =  PATH_SEP . 'sys' . $_REQUEST['workspace'] . PATH_SEP . $langUri . PATH_SEP . $skinUri . PATH_SEP . 'login' . PATH_SEP . 'login';



            //register PMDesigner Client

            $http = (G::is_https() == true) ? 'https' : 'http';

            $host = $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '');



            $endpoint = sprintf(

                '%s://%s/sys%s/%s/%s/oauth2/grant',

                $http,

                $host,

                $workspace,

                $langUri,

                $skinUri

            );



            // inserting the outh_client

            if (!$userLogged) {

                $query = sprintf( "USE %s;", $wf );

            } else {

                $query = sprintf( "USE %s;", trim( $_REQUEST['wfDatabase']) );

            }

            $this->mysqlQuery( $query );

            $query = ( "INSERT INTO OAUTH_CLIENTS (CLIENT_ID,CLIENT_SECRET,CLIENT_NAME,CLIENT_DESCRIPTION,CLIENT_WEBSITE,REDIRECT_URI,USR_UID ) VALUES

                ('x-pm-local-client','179ad45c6ce2cb97cf1029e212046e81','PM Web Designer','ProcessMaker Web Designer App','www.processmaker.com','" . $endpoint . "','00000000000000000000000000000001' )");

            $this->mysqlQuery( $query );



            $indexFileUpdated = true;

            if (defined('PARTNER_FLAG') || isset($_REQUEST['PARTNER_FLAG'])) {

                $this->buildParternExtras($adminUsername, $adminPassword, $_REQUEST['workspace'], $langUri, $skinUri);

            } else {

                try {

                    G::update_php_ini( $envFile, $updatedConf );

                } catch (Exception $e) {

                    $info->result = false;

                    $info->message = G::LoadTranslation('ID_PROCESSMAKER_WRITE_CONFIG_INDEX', SYS_LANG, Array($envFile));

                    $info->message .= G::LoadTranslation('ID_PROCESSMAKER_UI_NOT_INSTALL');

                    $this->installLog( G::LoadTranslation('ID_INSTALL_BUT_ERROR', SYS_LANG, Array('env.ini')));

                    return $info;

                }



                try {

                    // update the main index file

                    $indexFileUpdated = System::updateIndexFile(array('lang' => 'en','skin' => $updatedConf['default_skin']));

                } catch (Exception $e) {

                    $info->result = false;

                    $info->message = G::LoadTranslation('ID_PROCESSMAKER_WRITE_CONFIG_INDEX', SYS_LANG, Array(PATH_HTML . "index.html."));

                    $info->message .= G::LoadTranslation('ID_PROCESSMAKER_UI_NOT_INSTALL');

                    $this->installLog( G::LoadTranslation('ID_INSTALL_BUT_ERROR', SYS_LANG, Array('index.html')));

                    return $info;

                }

            }



            $this->installLog( G::LoadTranslation('ID_INDEX_FILE_UPDATED', SYS_LANG, Array($indexFileUpdated, $sysConf['default_lang'],$sysConf['default_skin'])));

            $this->installLog( G::LoadTranslation('ID_INSTALL_SUCESS') );



            $info->result = true;

            $info->message = G::LoadTranslation('ID_INSTALL_SUCESS');

            $info->messageFinish = G::LoadTranslation('ID_PROCESSMAKER_SUCCESS_INSTALLED', SYS_LANG, Array($workspace));;

        } catch (Exception $e) {

            $info->canRedirect = false;

            $info->result = false;

            $info->message = $e->getMessage();

        }

        return $info;

    }
예제 #29
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;
 }
예제 #30
0
    /**
     * Get list status indicator
     *
     * @access public
     * @param array $options, Data for list
     * @return array
     *
     * @author Marco Antonio Nina <*****@*****.**>
     * @copyright Colosa - Bolivia
     */
    public function getStatusIndicator($options = array())
    {
        Validator::isArray($options, '$options');

        $usrUid = isset( $options["usrUid"] ) ? $options["usrUid"] : "";

        G::loadClass('indicatorsCalculator');
        $calculator = new \IndicatorsCalculator();
        $result = $calculator->statusIndicator($usrUid);
        return $result;
    }