memcache = PMmemcached::getSingleton( !empty(config("system.workspace")) ? config("system.workspace") : '' ); define('ERROR_EXCEPTION', 1); define('INFO_EXCEPTION', 3); define('WARNING_EXCEPTION', 2); //$this->setDebug(true); } public function index($httpData) { global $RBAC; $RBAC->requirePermissions('PM_LOGIN'); $meta = new stdClass(); $showSystemInfo = $RBAC->userCanAccess('PM_SETUP') == 1; // setting variables for template $this->setVar( 'logo_company', $this->getCompanyLogo() ); $this->setVar( 'userfullname', htmlentities( $this->getUserFullName(), ENT_QUOTES, 'UTF-8' ) ); $this->setVar( 'user', isset( $_SESSION['USR_USERNAME'] ) ? $_SESSION['USR_USERNAME'] : '' ); $this->setVar( 'pipe', isset( $_SESSION['USR_USERNAME'] ) ? ' | ' : '' ); $this->setVar( 'rolename', $this->getUserRole() ); $this->setVar( 'logout', G::LoadTranslation( 'ID_LOGOUT' ) ); $this->setVar( 'workspace', !empty(config("system.workspace")) ? ucfirst( config("system.workspace") ) : '' ); $this->setVar( 'user_avatar', 'users/users_ViewPhotoGrid?pUID=' . $_SESSION['USER_LOGGED'] . '&h=' . rand() ); // license notification $expireInLabel = ''; require_once("classes" . PATH_SEP . "class.pmLicenseManager.php"); $pmLicenseManager = PmLicenseManager::getSingleton(); $expireIn = $pmLicenseManager->getExpireIn(); $expireInLabel = $pmLicenseManager->getExpireInLabel(); $this->setVar('licenseNotification', $expireInLabel); // setting variables on javascript env. $this->setJSVar('meta', array('menu' => $this->getMenu() )); $activeTab = 0; if (isset($_SESSION['_defaultUserLocation'])) { $activeTab = $this->resolveUrlToTabIndex($_SESSION['_defaultUserLocation']); } if (isset($_GET['st'])) { $activeTab = $this->getActiveTab($_GET['st']); unset($_GET['st']); } $this->setJSVar('activeTab', $activeTab); $this->setJSVar('urlAddGetParams', $this->getUrlGetParams()); $this->setJSVar('showSystemInfo', $showSystemInfo); $switchInterface = isset($_SESSION['user_experience']) && $_SESSION['user_experience'] == 'SWITCHABLE'; if (($flyNotify = $this->getFlyNotify()) !== false) { $this->setJSVar('flyNotify', $flyNotify); } $this->setJSVar('switchInterface', $switchInterface); $this->includeExtJSLib('ux/ux.menu'); $this->includeExtJS('main/index'); $this->setLayout('pm-modern'); $this->afterLoad($httpData); $this->render(); } public function screamFileUpgrades() { G::streamFile(PATH_DATA . 'log/upgrades.log', true); } public function getSystemInfo() { $this->setResponseType('json'); $infoList = $this->_getSystemInfo(); $data = array(); foreach ($infoList as $row) { $data[] = array('label' => $row[0],'value' => $row[1],'section' => $row[2] ); } return $data; } /** * Login */ public function login() { $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_ID'] = $aRow['LOG_ID']; $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 = PluginRegistry::loadSingleton(); 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(); $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)); $oConf = new Configurations(); $oConf->loadConfig($obj, 'ENVIRONMENT_SETTINGS', ''); $flagForgotPassword = isset($oConf->aConfig['login_enableForgotPassword']) ? $oConf->aConfig['login_enableForgotPassword'] : 'off'; $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->setVar("URL_TRANSLATION_JS", G::browserCacheFilesUrl("/js/ext/translation.en.js")); $this->setLayout("pm-modern-login"); $this->render(); } /** * SysLogin */ public function sysLogin() { Propel::init(PATH_CORE . "config/databases.php"); Creole::registerDriver('dbarray', 'creole.contrib.DBArrayConnection'); // getting posibles errors passed by GET method $this->getInUrlError(); $availableWorkspace = $this->getWorkspacesAvailable(); $availableWorkspaceList = array(); foreach ($availableWorkspace as $ws) { $availableWorkspaceList[] = array($ws,$ws ); } $aField['LOGIN_VERIFY_MSG'] = G::loadTranslation('LOGIN_VERIFY_MSG'); //Get Server Configuration $oServerConf = ServerConf::getSingleton(); $availableLangArray = $this->getLanguagesList(); $this->includeExtJSLib('ux/virtualkeyboard'); $this->setJSVar('sysLang', SYS_LANG); $this->includeExtJS('main/sysLogin'); $this->setVar('logo_company', $this->getCompanyLogo()); $this->setVar('pmos_version', System::getVersion()); $footerText = G::LoadTranslation('ID_COPYRIGHT_FROM') . date('Y') . G::LoadTranslation('ID_COPYRIGHT_COL'); $adviseText = G::LoadTranslation('ID_COLOSA_AND_CERTIFIED_PARTNERS'); $this->setVar('footer_text', $footerText); $this->setVar('advise_text', $adviseText); //binding G::SendTemporalMessage() to Ext.msgBoxSlider.msgTopCenter() if (($flyNotify = $this->getFlyNotify()) !== false) { $this->setJSVar('flyNotify', $flyNotify); } $this->setJSVar('languages', $availableLangArray); $this->setJSVar('workspaces', $availableWorkspaceList); $this->setJSVar('wsPrivate', $oServerConf->getProperty('LOGIN_NO_WS')); $this->setJSVar('defaultLang', 'en'); $this->setJSVar('defaultWS', ''); $loginScript = $this->getHeadPublisher()->getExtJsLibraries(); $loginScript .= $this->getHeadPublisher()->getExtJsScripts(); $this->setVar("login_script", $loginScript); $this->setVar("login_vars", $this->getHeadPublisher()->getExtJsVariablesScript()); $this->setVar("URL_TRANSLATION_JS", G::browserCacheFilesUrl("/js/ext/translation.en.js")); $this->setLayout("pm-modern-login"); $this->render(); } public function forgotPassword($httpData) { $this->setResponseType('json'); global $RBAC; $rbacUser = new RbacUsers(); $user = new Users(); try { $userData = $rbacUser->getByUsername($httpData->username); if (! $userData) { $msg = G::LoadTranslation('ID_USER') . ' ' . $httpData->username . ' ' . G::LoadTranslation('ID_IS_NOT_REGISTERED'); throw new Exception($msg); } if (trim($userData['USR_EMAIL']) != trim($httpData->email)) { $msg = G::LoadTranslation('ID_EMAIL_DOES_NOT_MATCH_FOR_USER') . ' ' . $httpData->username . ''; throw new Exception($msg); } $newPass = G::generate_password(); $aData['USR_UID'] = $userData['USR_UID']; $aData['USR_PASSWORD'] = Bootstrap::hashPassword($newPass); $rbacUser->update($aData); $user->update($aData); $subject = G::loadTranslation('ID_PROCESSMAKER_FORGOT_PASSWORD_SERVICE'); $template = new TemplatePower(PATH_TPL . 'main/forgotPassword.tpl'); $template->prepare(); $template->assign('server', $_SERVER['SERVER_NAME']); $template->assign('serviceMsg', G::loadTranslation('ID_PROCESSMAKER_FORGOT_PASSWORD_SERVICE')); $template->assign('content', G::loadTranslation('ID_PASSWORD_CHANGED_SUCCESSFULLY')); $template->assign('passwd', $newPass); $template->assign('poweredBy', G::loadTranslation('ID_PROCESSMAKER_SLOGAN1')); $template->assign('versionLabel', G::loadTranslation('ID_VERSION')); $template->assign('version', System::getVersion()); $template->assign('visit', G::loadTranslation('ID_VISIT')); $template->assign('footer', ''); $body = $template->getOutputContent(); G::sendMail('', 'ProcessMaker Service', $httpData->email, $subject, $body); $result->success = true; $result->message = G::LoadTranslation('ID_NEW_PASSWORD_SENT'); } catch (Exception $e) { $result->success = false; $result->message = $e->getMessage(); } return $result; } /** * * * Private Functions * * * */ private function getMenu() { global $G_MAIN_MENU; global $G_SUB_MENU; global $G_MENU_SELECTED; global $G_SUB_MENU_SELECTED; global $G_ID_MENU_SELECTED; global $G_ID_SUB_MENU_SELECTED; $G_MAIN_MENU = 'processmaker'; $G_SUB_MENU = 'process'; $G_ID_MENU_SELECTED = 'BPMN'; $oMenu = new Menu(); $menus = $oMenu->generateArrayForTemplate($G_MAIN_MENU, 'SelectedMenu', 'mainMenu', $G_MENU_SELECTED, $G_ID_MENU_SELECTED); foreach ($menus as $i => $menu) { if (strpos($menu['target'], 'cases/main') !== false) { $menus[$i]['target'] = str_replace('cases/main', 'cases/main_init', $menus[$i]['target']); } if (strpos($menu['target'], 'processes/main') !== false) { $menus[$i]['target'] = str_replace('processes/main', 'processes/mainInit', $menus[$i]['target']); } if (strpos($menu['target'], 'setup/main') !== false) { $menus[$i]['target'] = str_replace('setup/main', 'setup/main_init', $menus[$i]['target']); } if (strpos($menu['target'], 'dashboard/main') !== false) { $menus[$i]['target'] = str_replace('dashboard/main', 'dashboard', $menus[$i]['target']); } $menus[$i]['elementclass'] = preg_replace(array('/class=/','/"/' ), array('','' ), $menus[$i]['elementclass']); } return $menus; } private function resolveUrlToTabIndex($url) { if (strpos($url, 'cases/main') !== false) { $activeTab = 0; } elseif (strpos($url, 'processes/main') !== false) { $activeTab = 1; } elseif (strpos($url, 'dashboard/main') !== false) { $activeTab = 2; } elseif (strpos($url, 'setup/main') !== false) { $activeTab = 3; } else { $activeTab = 0; } return $activeTab; } private function getCompanyLogo() { $sCompanyLogo = '/images/processmaker2.logo2.png'; if (!empty(config("system.workspace"))) { if (($aFotoSelect = $this->memcache->get( 'aFotoSelect' )) === false) { $oLogoR = new ReplacementLogo(); $aFotoSelect = $oLogoR->getNameLogo((isset($_SESSION['USER_LOGGED'])) ? $_SESSION['USER_LOGGED'] : ''); $this->memcache->set('aFotoSelect', $aFotoSelect, 1 * 3600); } if (is_array($aFotoSelect)) { $sFotoSelect = trim($aFotoSelect['DEFAULT_LOGO_NAME']); $sWspaceSelect = trim($aFotoSelect['WORKSPACE_LOGO_NAME']); } } if (class_exists('ProcessMaker\Plugins\PluginRegistry')) { $oPluginRegistry = PluginRegistry::loadSingleton(); $logoPlugin = $oPluginRegistry->getCompanyLogo($sCompanyLogo); if ($logoPlugin != '/images/processmaker2.logo2.png') { $sCompanyLogo = $logoPlugin; } elseif (isset( $sFotoSelect ) && $sFotoSelect != '' && ! (strcmp( $sWspaceSelect, config("system.workspace") ))) { $sCompanyLogo = $oPluginRegistry->getCompanyLogo( $sFotoSelect ); $sCompanyLogo = "/sys" . config("system.workspace") . "/" . SYS_LANG . "/" . SYS_SKIN . "/adminProxy/showLogoFile?id=" . base64_encode( $sCompanyLogo ); } } return $sCompanyLogo; } public function getLanguagesList() { $Translations = new Translation; $translationsTable = $Translations->getTranslationEnvironments(); if (($languagesList = $this->memcache->get('languagesList')) === false) { $languagesList = array(); foreach ($translationsTable as $locale) { $LANG_ID = $locale['LOCALE']; if ($locale['COUNTRY'] != '.') { $LANG_NAME = $locale['LANGUAGE'] . ' (' . (ucwords(strtolower($locale['COUNTRY']))) . ')'; } else { $LANG_NAME = $locale['LANGUAGE']; } $languagesList[] = array($LANG_ID,$LANG_NAME ); } $this->memcache->set('languagesList', $languagesList, 1 * 3600); } return $languagesList; } private function getWorkspacesAvailable() { $oServerConf = ServerConf::getSingleton(); $dir = PATH_DB; $filesArray = array(); if (file_exists($dir)) { if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if (($file != ".") && ($file != "..")) { if (file_exists(PATH_DB . $file . '/db.php')) { if (! $oServerConf->isWSDisabled($file)) { $filesArray[] = $file; } } } } closedir($handle); } } sort($filesArray, SORT_STRING); return $filesArray; } private function getUserRole() { global $RBAC; $rolCode = str_replace('_', ' ', $RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_CODE']); $rolUid = $RBAC->aUserInfo['PROCESSMAKER']['ROLE']['ROL_UID']; $oCriteria1 = new Criteria('workflow'); $oCriteria1->add(ContentPeer::CON_CATEGORY, 'ROL_NAME'); $oCriteria1->add(ContentPeer::CON_ID, $rolUid); $oCriteria1->add(ContentPeer::CON_LANG, SYS_LANG); $oDataset1 = ContentPeer::doSelectRS($oCriteria1); $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset1->next(); $aRow = $oDataset1->getRow(); $rolName = $aRow['CON_VALUE']; return $rolName ? $rolName : $rolCode; } /** * binding G::SendTemporalMessage() to Javascript routine Ext.msgBoxSlider.msgTopCenter() */ private function getFlyNotify() { if (! isset($_SESSION['G_MESSAGE'])) { return false; } $flyNotify['title'] = isset($_SESSION['G_MESSAGE_TITLE']) ? $_SESSION['G_MESSAGE_TITLE'] : ''; $flyNotify['text'] = $_SESSION['G_MESSAGE']; unset($_SESSION['G_MESSAGE']); if (isset($_SESSION['G_MESSAGE_TYPE'])) { $flyNotify['type'] = $_SESSION['G_MESSAGE_TYPE']; unset($_SESSION['G_MESSAGE_TYPE']); } else { $flyNotify['type'] = ''; } if ($flyNotify['title'] == '') { switch ($flyNotify['type']) { case 'alert': case 'warning': case 'tmp-warning': $flyNotify['title'] = G::loadTranslation('ID_WARNING'); break; case 'error': case 'tmp-error': $flyNotify['title'] = G::loadTranslation('ID_ERROR'); break; case 'tmp-info': case 'info': $flyNotify['title'] = G::loadTranslation('ID_INFO'); break; case 'success': case 'ok': $flyNotify['title'] = G::loadTranslation('ID_SUCCESS'); break; } $flyNotify['title'] = strtoupper($flyNotify['title']); } //TODO make dinamic $flyNotify['time'] = 5; $this->flyNotify = $flyNotify; return $this->flyNotify; } private function setFlyNotify($type, $title, $text, $time = 5) { $this->flyNotify = array('type' => $type,'title' => $title,'text' => $text,'time' => $time ); $_SESSION['G_MESSAGE'] = $text; $_SESSION['G_MESSAGE_TYPE'] = $type; } private function getInUrlError() { if (isset($_GET['errno'])) { switch ($_GET['errno']) { case '1': $trnLabel = 'ID_USER_HAVENT_RIGHTS_PAGE'; break; case '2': $trnLabel = 'ID_NOT_WORKSPACE'; break; default: $trnLabel = 'ID_USER_HAVENT_RIGHTS_PAGE'; break; } $this->setFlyNotify('error', 'ERROR', G::loadTranslation($trnLabel)); } } private function getActiveTab($activeTab) { if (! is_numeric($activeTab)) { switch ($activeTab) { case 'home': $activeTab = 0; break; case 'designer': $activeTab = 1; break; case 'dashboard': $activeTab = 2; break; case 'admin': $activeTab = 3; break; default: $activeTab = 0; break; } } else { $activeTab = $activeTab > - 1 && $activeTab < 3 ? (int) $activeTab : ''; } return $activeTab; } private function getUrlGetParams() { $urlGetParams = ''; foreach ($_GET as $key => $value) { $urlGetParams .= $urlGetParams == '' ? $key : "&" . $key; $urlGetParams .= trim($value) != '' ? '=' . $value : ''; } return $urlGetParams; } private function getUserFullName() { return isset($_SESSION['USR_FULLNAME']) ? $_SESSION['USR_FULLNAME'] : ''; } private function _getSystemInfo() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } else { if (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } else { $ip = getenv('REMOTE_ADDR'); } } $redhat = ''; if (file_exists('/etc/redhat-release')) { $fnewsize = filesize('/etc/redhat-release'); $fp = fopen('/etc/redhat-release', 'r'); $redhat = trim(fread($fp, $fnewsize)); fclose($fp); } $redhat .= " (" . PHP_OS . ")"; if (defined("DB_HOST")) { $dbNetView = new Net(DB_HOST); $dbNetView->loginDbServer(DB_USER, DB_PASS); $dbConns = new DbConnections(''); $availdb = ''; foreach ($dbConns->getDbServicesAvailables() as $key => $val) { if ($availdb != '') { $availdb .= ', '; } $availdb .= $val['name']; } try { $sMySQLVersion = $dbNetView->getDbServerVersion(DB_ADAPTER); } catch (Exception $oException) { $sMySQLVersion = '?????'; } } if (file_exists(PATH_HTML . "lib/versions")) { $versions = json_decode(file_get_contents(PATH_HTML . "lib/versions"), true); $pmuiVer = $versions["pmui_ver"]; $mafeVer = $versions["mafe_ver"]; $pmdynaformVer = isset($versions["pmdynaform_ver"]) ? $versions["pmdynaform_ver"] : ''; } else { $pmuiVer = $mafeVer = $pmdynaformVer = "(unknown)"; } $sysSection = G::loadTranslation('ID_SYSTEM_INFO'); $pmSection = G::LoadTranslation('ID_PROCESS_INFORMATION'); $properties = array (); $ee = ''; /*----------------------------------********---------------------------------*/ // In the community version this text must not be presented $ee = ' - Enterprise Edition'; /*----------------------------------********---------------------------------*/ $systemName = 'ProcessMaker'; if (defined('SYSTEM_NAME')) { $systemName = SYSTEM_NAME; } $properties[] = array($systemName. ' Ver.', System::getVersion() . $ee, $pmSection); $properties[] = array("PMUI JS Lib. Ver.", $pmuiVer, $pmSection); $properties[] = array("MAFE JS Lib. Ver.", $mafeVer, $pmSection); $properties[] = array("PM Dynaform JS Lib. Ver.", $pmdynaformVer, $pmSection); if (file_exists(PATH_DATA. 'log/upgrades.log')) { $properties[] = array(G::LoadTranslation('ID_UPGRADES_PATCHES'), '' . G::LoadTranslation('ID_UPGRADE_VIEW_LOG') . '' ,$pmSection); } else { $properties[] = array(G::LoadTranslation('ID_UPGRADES_PATCHES'), G::LoadTranslation('ID_UPGRADE_NEVER_UPGRADE') ,$pmSection); } $properties[] = array(G::LoadTranslation('ID_OPERATING_SYSTEM') ,$redhat,$sysSection ); $properties[] = array(G::LoadTranslation('ID_TIME_ZONE') ,(defined('TIME_ZONE')) ? TIME_ZONE : "Unknown",$sysSection ); $properties[] = array(G::LoadTranslation('ID_WEB_SERVER') ,getenv('SERVER_SOFTWARE'),$sysSection ); $properties[] = array(G::LoadTranslation('ID_SERVER_NAME') ,getenv('SERVER_NAME'),$pmSection ); $properties[] = array(G::LoadTranslation('ID_SERVER_IP') ,$this->lookup($ip),$sysSection ); $properties[] = array(G::LoadTranslation('ID_PHP_VERSION') ,phpversion(),$sysSection ); if (defined("DB_HOST")) { $properties[] = array(G::LoadTranslation('ID_DATABASE') ,$dbNetView->dbName(DB_ADAPTER) . ' (Version ' . $sMySQLVersion . ')',$pmSection ); $properties[] = array(G::LoadTranslation('ID_DATABASE_SERVER') ,DB_HOST,$pmSection ); $properties[] = array(G::LoadTranslation('ID_DATABASE_NAME') ,DB_NAME,$pmSection ); $properties[] = array(G::LoadTranslation('ID_AVAILABLE_DB') ,$availdb,$sysSection ); } else { $properties[] = array(G::LoadTranslation('ID_DATABASE') ,"Not defined",$pmSection ); $properties[] = array(G::LoadTranslation('ID_DATABASE_SERVER') ,"Not defined",$pmSection ); $properties[] = array(G::LoadTranslation('ID_DATABASE_NAME') ,"Not defined",$pmSection ); $properties[] = array(G::LoadTranslation('ID_AVAILABLE_DB') ,"Not defined",$sysSection ); } $properties[] = array ( G::LoadTranslation('ID_WORKSPACE') ,!empty(config("system.workspace")) ? config("system.workspace") : "Not defined",$pmSection ); $properties[] = array( G::LoadTranslation('ID_SERVER_PROTOCOL') ,getenv('SERVER_PROTOCOL'),$sysSection ); $properties[] = array( G::LoadTranslation('ID_SERVER_PORT') ,getenv('SERVER_PORT'),$sysSection ); //$sysSection[] = array('Remote Host', getenv ('REMOTE_HOST'), $sysSection); $properties[] = array( G::LoadTranslation('ID_SERVER_NAME') , getenv('SERVER_ADDR'),$sysSection ); $properties[] = array( G::LoadTranslation('ID_USER_BROWSER') , getenv('HTTP_USER_AGENT'),$sysSection ); return $properties; } private function lookup($target) { global $ntarget; $msg = $target . ' => '; //if (eregi ('[a-zA-Z]', $target)) if (preg_match('[a-zA-Z]', $target)) { //Made compatible to PHP 5.3 $ntarget = gethostbyname($target); } else { $ntarget = gethostbyaddr($target); } $msg .= $ntarget; return ($msg); } /** * Execute common reoutes after index() action load */ private function afterLoad($httpData) { if (isset($httpData->i18) || isset($httpData->i18n)) { $_SESSION['DEV_FLAG'] = true; } } }