getFromDB(1)) { self::$_instance->getEmpty(); } } return self::$_instance; } /** * Prepare input datas for updating the item * @param array $input used to update the item * @return array the modified $input array **/ function prepareInputForUpdate($input) { global $CFG_GLPI; if (!isset($input["maintenance"])) { $input["maintenance"] = 0; } if (isset($input["pm_dbserver_passwd"])) { if (empty($input["pm_dbserver_passwd"])) { unset($input["pm_dbserver_passwd"]); } else { $input["pm_dbserver_passwd"] = Toolbox::encrypt(stripslashes($input["pm_dbserver_passwd"]), GLPIKEY); } } if (isset($input["_blank_pm_dbserver_passwd"]) && $input["_blank_pm_dbserver_passwd"]) { $input['pm_dbserver_passwd'] = ''; } if (isset($input["pm_admin_passwd"])) { if (empty($input["pm_admin_passwd"])) { unset($input["pm_admin_passwd"]); } else { $input["pm_admin_passwd"] = Toolbox::encrypt(stripslashes($input["pm_admin_passwd"]), GLPIKEY); } } if (isset($input["_blank_pm_admin_passwd"]) && $input["_blank_pm_admin_passwd"]) { $input['pm_admin_passwd'] = ''; } $input['domain'] = self::getCommonDomain( $CFG_GLPI['url_base'], $input['pm_server_URL'] ); return $input; } /** * Summary of getCommonDomain * @param mixed $url1 first url * @param mixed $url2 second url * @return string the common domain part of the given urls */ static function getCommonDomain($url1, $url2) { $domain = ''; try { $glpi = explode(".", parse_url($url1, PHP_URL_HOST)); $pm = explode( ".", parse_url($url2, PHP_URL_HOST)); $cglpi = array_pop( $glpi ); $cpm = array_pop( $pm ); while ($cglpi && $cpm && $cglpi == $cpm) { $domain = $cglpi.($domain==''?'':'.'.$domain); $cglpi = array_pop( $glpi ); $cpm = array_pop( $pm ); } if ($domain != '') { return $domain; } } catch (Exception $e) { $domain = ''; } return $domain; } /** * Summary of showConfigForm * @param mixed $item is the config * @return boolean */ static function showConfigForm($item) { global $LANG, $PM_DB, $CFG_GLPI; $setup_ok = false; $ui_theme = array( 'glpi_classic' => 'glpi_classic', 'glpi_neoclassic' => 'glpi_neoclassic' ); $config = self::getInstance(); $config->showFormHeader(['colspan' => 4]); echo ""; echo "".$LANG['processmaker']['config']['URL'].""; echo ""; echo "\n"; echo ""; echo "" . $LANG['processmaker']['config']['domain'] . ""; echo "
".$config->fields['domain']."
"; echo Html::scriptBlock(" function setCommonDomain() { function parseUrl( url ) { var a = document.createElement('a'); a.href = url; // debugger; return { host: a.hostname, port: a.port, scheme: a.protocol.slice(0, -1), path: a.pathname, query: a.search.slice(1), fragment: a.hash.slice(1) } ; } var domain = ''; try { var glpi = parseUrl( '".$CFG_GLPI['url_base']."' ).host.split('.') ; var pm = parseUrl( $('input[name=pm_server_URL]').val()).host.split('.'); var cglpi = glpi.pop() ; var cpm = pm.pop() ; while( cglpi && cpm && cglpi == cpm ) { domain = cglpi + (domain==''?'':'.' + domain) ; cglpi = glpi.pop() ; cpm = pm.pop() ; } if( domain != '' ) { $('div[name=domain]').text(domain) ; $('div[name=domain]').parent().attr('color', 'green'); return; } } catch(ex) {} $('div[name=domain]').text('".$LANG['processmaker']['config']['domain-error']."') ; $('div[name=domain]').parent().attr('color', 'red'); }; $('input[name=pm_server_URL]').on('keyup', setCommonDomain ) ; setCommonDomain() ; "); echo "\n"; echo ""; echo "".$LANG['processmaker']['config']['workspace'].""; echo ""; echo "\n"; echo ""; echo "" . $LANG['processmaker']['config']['admin']['user'] . ""; echo ""; echo "\n"; echo ""; echo "" . $LANG['processmaker']['config']['admin']['password'] . ""; echo ""; echo "  ".__('Clear'); echo "\n"; echo ""; echo "".$LANG['processmaker']['config']['connectionstatus'].""; $pm = new PluginProcessmakerProcessmaker; if ($config->fields['pm_server_URL'] != '' && $config->fields['pm_workspace'] != '' && $config->fields["pm_admin_user"] != '' && ($pm->login(true))) { echo "".__('Test successful'); $setup_ok = true; } else { echo "".__('Test failed')."
".print_r($pm->lasterror, true); } echo "
\n"; echo "".$LANG['processmaker']['config']['mysql'].""; echo ""; echo "" . __('SQL server (MariaDB or MySQL)') . ""; echo ""; echo "\n"; echo ""; echo "" . __('Database name') . ""; echo ""; echo "\n"; echo ""; echo "" . __('SQL user') . ""; echo ""; echo "\n"; echo ""; echo "" . __('SQL password') . ""; echo ""; echo "  ".__('Clear'); echo "\n"; echo ""; echo "".$LANG['processmaker']['config']['connectionstatus'].""; if ($PM_DB->connected) { echo "".__('Test successful'); } else { echo "".__('Test failed'); } echo "\n"; echo "".__('Settings').""; echo ""; echo "".$LANG['processmaker']['config']['theme'].""; Dropdown::showFromArray('pm_theme', $ui_theme, array('value' => $config->fields['pm_theme'])); echo ""; echo ""; echo "".$LANG['processmaker']['config']['main_task_category'].""; TaskCategory::dropdown(array('name' => 'taskcategories_id', 'display_emptychoice' => true, 'value' => $config->fields['taskcategories_id'])); echo "\n"; echo ""; echo "".$LANG['processmaker']['config']['taskwriter'].""; $rand = mt_rand(); User::dropdown(array('name' => 'users_id', 'display_emptychoice' => true, 'right' => 'all', 'rand' => $rand, 'value' => $config->fields['users_id'])); // this code adds the + sign to the form echo ""; echo Ajax::createIframeModalWindow('add_dropdown'.$rand, User::getFormURL(), array('display' => false)); // end of + sign echo "\n"; echo ""; echo "".$LANG['processmaker']['config']['pm_group_name'].""; $pmGroups = array( 0 => Dropdown::EMPTY_VALUE ); $query = "SELECT DISTINCT CON_ID, CON_VALUE FROM CONTENT WHERE CON_CATEGORY='GRP_TITLE' ORDER BY CON_VALUE;"; if ($PM_DB->connected) { foreach ($PM_DB->request( $query ) as $row) { $pmGroups[ $row['CON_ID'] ] = $row['CON_VALUE']; } Dropdown::showFromArray( 'pm_group_guid', $pmGroups, array('value' => $config->fields['pm_group_guid']) ); } else { echo "".__('Not connected'); } echo "\n"; echo "".__('Maintenance').""; echo ""; echo "".$LANG['processmaker']['config']['maintenance'].""; Dropdown::showYesNo("maintenance", $config->fields['maintenance']); echo ""; echo ""; echo "".__('Processmaker system information').""; if ($setup_ok) { $info = $pm->systemInformation( ); echo ''._('Version').''.$info->version.''; echo ''._('Web server').''.$info->webServer.''; echo ''._('Server name').''.$info->serverName.''; echo ''._('PHP version').''.$info->phpVersion.''; echo ''._('DB version').''.$info->databaseVersion.''; echo ''._('DB server IP').''.$info->databaseServerIp.''; echo ''._('DB name').''.$info->databaseName.''; echo ''._('User browser').''.$info->userBrowser.''; echo ''._('User IP').''.$info->userIp.''; } else { echo ''._('Version').''.__('Not yet!').''; } $config->showFormButtons(array('candel'=>false)); return false; } function getTabNameForItem(CommonGLPI $item, $withtemplate=0) { global $LANG; if ($item->getType()=='Config') { return $LANG['processmaker']['title'][1]; } return ''; } static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0) { if ($item->getType()=='Config') { self::showConfigForm($item); } return true; } }