arrSettings = $_SESSION['SETS']; if (isset($_SESSION['domain'])) $this->intDomainId = $_SESSION['domain']; } /////////////////////////////////////////////////////////////////////////////////////////// // Function: Single data form initialization /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // $strChbFields Comma separated string of checkbox value names // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function addFormInit($objTemplate,$strChbFields='') { // Language text replacements from fieldvars.php file foreach($this->arrDescription AS $elem) { $objTemplate->setVariable($elem['name'],$elem['string']); } // Some single replacements $objTemplate->setVariable("ACTION_INSERT",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING)); $objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/"); $objTemplate->setVariable("DOCUMENT_ROOT",$this->arrSettings['path']['base_url']); $objTemplate->setVariable("ACT_CHECKED","checked"); $objTemplate->setVariable("REG_CHECKED","checked"); $objTemplate->setVariable("MODUS","insert"); $objTemplate->setVariable("VERSION",$this->intVersion); $objTemplate->setVariable("LIMIT",$this->intLimit); $objTemplate->setVariable("RELATION_CLASS","elementHide"); $objTemplate->setVariable("IFRAME_SRC",$this->arrSettings['path']['base_url']."admin/commandline.php"); // Some conditional replacements if ($this->strBrowser != "msie") $objTemplate->setVariable("MSIE_DISABLED","disabled=\"disabled\""); if ($this->intGroupAdm == 0) $objTemplate->setVariable("RESTRICT_GROUP_ADMIN","class=\"elementHide\""); if ($this->arrSettings['common']['seldisable'] == 0) $objTemplate->setVariable("MSIE_DISABLED",""); if ($this->arrSettings['common']['tplcheck'] == 0) $objTemplate->setVariable("CHECK_BYPASS","return true;"); // Some replacements based on nagios version if ($this->intVersion == 3) { $objTemplate->setVariable("VERSION_20_VISIBLE","elementHide"); $objTemplate->setVariable("VERSION_30_VISIBLE","elementShow"); $objTemplate->setVariable("VERSION_20_MUST",""); $objTemplate->setVariable("VERSION_30_MUST","inpmust"); $objTemplate->setVariable("VERSION_20_STAR",""); $objTemplate->setVariable("NAGIOS_VERSION","3"); } else { $objTemplate->setVariable("VERSION_20_VISIBLE","elementShow"); $objTemplate->setVariable("VERSION_30_VISIBLE","elementHide"); $objTemplate->setVariable("VERSION_20_MUST","inpmust"); $objTemplate->setVariable("VERSION_30_MUST",""); $objTemplate->setVariable("VERSION_20_STAR","*"); $objTemplate->setVariable("NAGIOS_VERSION","2"); } // Checkbox and radio field value replacements if ($strChbFields != '') { foreach (explode(",",$strChbFields) AS $elem) { $objTemplate->setVariable("DAT_".$elem."0_CHECKED",""); $objTemplate->setVariable("DAT_".$elem."1_CHECKED",""); $objTemplate->setVariable("DAT_".$elem."2_CHECKED","checked"); } } } /////////////////////////////////////////////////////////////////////////////////////////// // Function: Single data form - value insertions /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // $arrModifyData Database values // $intLocked Data is locked (0=no / 1=yes) // $strInfo Information string // $strChbFields Comma separated string of checkbox value names // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function addInsertData($objTemplate,$arrModifyData,$intLocked,$strInfo,$strChbFields = '') { // Insert text data values foreach($arrModifyData AS $key => $value) { if (($key == "active") || ($key == "register") || ($key == "last_modified") || ($key == "access_rights")) continue; $objTemplate->setVariable("DAT_".strtoupper($key),htmlentities($value,ENT_QUOTES,'UTF-8')); } // Insert checkbox data values if ((isset($arrModifyData['active'])) && ($arrModifyData['active'] != 1)) $objTemplate->setVariable("ACT_CHECKED",""); if ((isset($arrModifyData['register'])) && ($arrModifyData['register'] != 1)) $objTemplate->setVariable("REG_CHECKED",""); // Deselect any checkboxes if ($strChbFields != '') { foreach (explode(",",$strChbFields) AS $elem) { $objTemplate->setVariable("DAT_".$elem."0_CHECKED",""); $objTemplate->setVariable("DAT_".$elem."1_CHECKED",""); $objTemplate->setVariable("DAT_".$elem."2_CHECKED",""); } } // Change some status values in locked data sets if ($intLocked != 0) { $objTemplate->setVariable("ACT_DISABLED","disabled"); $objTemplate->setVariable("ACT_CHECKED","checked"); $objTemplate->setVariable("ACTIVE","1"); $objTemplate->setVariable("CHECK_MUST_DATA",$strInfo); $objTemplate->setVariable("RELATION_CLASS","elementShow"); } // Change mode to modify $objTemplate->setVariable("MODUS","modify"); // Check write permission if ($this->intWriteAccessId == 1) $objTemplate->setVariable("DISABLE_SAVE","disabled=\"disabled\""); if ($this->intGlobalWriteAccess == 1) $objTemplate->setVariable("DISABLE_SAVE","disabled=\"disabled\""); } /////////////////////////////////////////////////////////////////////////////////////////// // Function: List view - form initialization /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function listViewInit($objTemplate) { // Language text replacements from fieldvars.php file foreach($this->arrDescription AS $elem) { $objTemplate->setVariable($elem['name'],$elem['string']); } // Some single replacements $objTemplate->setVariable("LIMIT",$this->intLimit); $objTemplate->setVariable("ACTION_MODIFY",filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING)); $objTemplate->setVariable("TABLE_NAME",$this->strTableName); $objTemplate->setVariable("DAT_SEARCH",$_SESSION['search'][$this->strSearchSession]); $objTemplate->setVariable("MAX_ID","0"); $objTemplate->setVariable("MIN_ID","0"); } /////////////////////////////////////////////////////////////////////////////////////////// // Function: List view - value insertions /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // $arrData Database values // $intDataCount Total count of data lines for one page // $intLineCount Total count of data lines (all data) // $strField1 Field name for data field 1 // $strField2 Field name for data field 2 // $intLimit2 Actual data char limit for field 2 // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function listData($objTemplate,$arrData,$intDataCount,$intLineCount,$strField1,$strField2,$intLimit2=0) { // Template block names $strTplPart = 'datatable'; $strTplRow = 'datarow'; if ($this->strTableName == "tbl_host") { $strTplPart = 'datatablehost'; $strTplRow = 'datarowhost'; } if ($this->strTableName == "tbl_service") { $strTplPart = 'datatableservice'; $strTplRow = 'datarowservice'; } if (($this->strTableName == "tbl_user") || ($this->strTableName == "tbl_group") || ($this->strTableName == "tbl_datadomain") || ($this->strTableName == "tbl_configtarget")) { $strTplPart = 'datatablecommon'; $strTplRow = 'datarowcommon'; } // Some single replacements $objTemplate->setVariable("IMAGE_PATH_HEAD",$this->arrSettings['path']['base_url']."images/"); $objTemplate->setVariable("CELLCLASS_L","tdlb"); $objTemplate->setVariable("CELLCLASS_M","tdmb"); $objTemplate->setVariable("DISABLED","disabled"); $objTemplate->setVariable("DATA_FIELD_1",translate('No data')); $objTemplate->setVariable("DATA_FIELD_2"," "); $objTemplate->setVariable("DATA_REGISTERED"," "); $objTemplate->setVariable("DATA_ACTIVE"," "); $objTemplate->setVariable("DATA_FILE"," "); $objTemplate->setVariable("PICTURE_CLASS","elementHide"); $objTemplate->setVariable("DOMAIN_SPECIAL"," "); $objTemplate->setVariable("SORT_BY",$this->intSortBy); // Inserting data values if ($intDataCount != 0) { for ($i=0;$i<$intDataCount;$i++) { // Get biggest and smalest value if ($i == 0) {$y = $arrData[$i]['id']; $z = $arrData[$i]['id'];} if ($arrData[$i]['id'] < $y) $y = $arrData[$i]['id']; if ($arrData[$i]['id'] > $z) $z = $arrData[$i]['id']; $objTemplate->setVariable("MAX_ID",$z); $objTemplate->setVariable("MIN_ID",$y); // Line colours $strClassL = "tdld"; $strClassM = "tdmd"; if ($i%2 == 1) {$strClassL = "tdlb"; $strClassM = "tdmb";} if ((isset($arrData[$i]['register'])) && ($arrData[$i]['register'] == 0)) {$strRegister = translate('No');} else {$strRegister = translate('Yes');} if ($arrData[$i]['active'] == 0) {$strActive = translate('No');} else {$strActive = translate('Yes');} // Get file date for hosts and services $intTimeInfo = 0; if ($this->strTableName == "tbl_host") { $intReturn = $this->myConfigClass->lastModifiedDir($this->strTableName,$arrData[$i]['host_name'],$arrData[$i]['id'],$arrTimeData,$intTimeInfo); if ($intReturn == 1) $this->strErrorMessage = $this->myConfigClass->strErrorMessage; } if ($this->strTableName == "tbl_service") { $intReturn = $this->myConfigClass->lastModifiedDir($this->strTableName,$arrData[$i]['config_name'],$arrData[$i]['id'],$arrTimeData,$intTimeInfo); if ($intReturn == 1) $this->strErrorMessage = $this->myConfigClass->strErrorMessage; } // Set datafields foreach($this->arrDescription AS $elem) { $objTemplate->setVariable($elem['name'],$elem['string']); } if ($arrData[$i][$strField1] == '') $arrData[$i][$strField1] = "NOT DEFINED - ".$arrData[$i]['id']; $objTemplate->setVariable("DATA_FIELD_1",htmlentities($arrData[$i][$strField1],ENT_COMPAT,'UTF-8')); $objTemplate->setVariable("DATA_FIELD_1S",addslashes(htmlentities($arrData[$i][$strField1],ENT_COMPAT,'UTF-8'))); if ($strField2 == 'process_field') { $arrData[$i]['process_field'] = $this->processField2($arrData[$i],$this->strTableName); } else { $objTemplate->setVariable("DATA_FIELD_2S",addslashes(htmlentities($arrData[$i][$strField2],ENT_COMPAT,'UTF-8'))); } if ($intLimit2 != 0) { if (strlen($arrData[$i][$strField2]) > $intLimit2) {$strAdd = " ...";} else {$strAdd = "";} $objTemplate->setVariable("DATA_FIELD_2",htmlentities(substr($arrData[$i][$strField2],0,$intLimit2),ENT_COMPAT,'UTF-8').$strAdd); } else { $objTemplate->setVariable("DATA_FIELD_2",htmlentities($arrData[$i][$strField2],ENT_COMPAT,'UTF-8')); } $objTemplate->setVariable("DATA_REGISTERED",$strRegister); if (substr_count($this->strTableName,'template') != 0) $objTemplate->setVariable("DATA_REGISTERED","-"); $objTemplate->setVariable("DATA_ACTIVE",$strActive); $objTemplate->setVariable("DATA_FILE","".translate('out-of-date').""); if ($intTimeInfo == 4) $objTemplate->setVariable("DATA_FILE",translate('no target')); if ($intTimeInfo == 3) $objTemplate->setVariable("DATA_FILE","".translate('missed').""); if ($intTimeInfo == 2) $objTemplate->setVariable("DATA_FILE","".translate('missed').""); if ($intTimeInfo == 1) $objTemplate->setVariable("DATA_FILE","".translate('out-of-date').""); if ($intTimeInfo == 0) $objTemplate->setVariable("DATA_FILE",translate('up-to-date')); $objTemplate->setVariable("LINE_ID",$arrData[$i]['id']); $objTemplate->setVariable("CELLCLASS_L",$strClassL); $objTemplate->setVariable("CELLCLASS_M",$strClassM); $objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/"); $objTemplate->setVariable("PICTURE_CLASS","elementShow"); $objTemplate->setVariable("DOMAIN_SPECIAL",""); $objTemplate->setVariable("DISABLED",""); // Disable common domain objects if (isset($arrData[$i]['config_id'])) { if ($arrData[$i]['config_id'] != $this->intDomainId) { $objTemplate->setVariable("PICTURE_CLASS","elementHide"); $objTemplate->setVariable("DOMAIN_SPECIAL"," [common]"); $objTemplate->setVariable("DISABLED","disabled"); } else { // Inactive items should not be written/downloaded if ($arrData[$i]['active'] == 0) $objTemplate->setVariable("ACTIVE_CONTROL","elementHide"); } } // Check access rights for list objects if (isset($arrData[$i]['access_group'])) { if ($this->myVisClass->checkAccGroup($arrData[$i]['access_group'],'write') != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide"); } else { if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide"); } // Check global access rights for list objects if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("LINE_CONTROL","elementHide"); $objTemplate->parse($strTplRow); } } else { $objTemplate->setVariable("IMAGE_PATH",$this->arrSettings['path']['base_url']."images/"); $objTemplate->parse($strTplRow); } $objTemplate->setVariable("BUTTON_CLASS","elementShow"); if ($this->intDomainId == 0) $objTemplate->setVariable("BUTTON_CLASS","elementHide"); // Check access rights for adding new objects if ($this->intGlobalWriteAccess != 0) $objTemplate->setVariable("ADD_CONTROL","disabled=\"disabled\""); // Show page numbers $objTemplate->setVariable("PAGES",$this->myVisClass->buildPageLinks(filter_var($_SERVER['PHP_SELF'], FILTER_SANITIZE_STRING),$intLineCount,$this->intLimit,$this->intSortBy,$this->strSortDir)); $objTemplate->parse($strTplPart); $objTemplate->show($strTplPart); } /////////////////////////////////////////////////////////////////////////////////////////// // Function: Display information messages /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // $strErrorMessage String including error messages // $strInfoMessage String including information messages // $strConsistMessage String including consistency messages // $arrTimeData Array including time data // $strTimeInfoString String including time information message // $intNoTime Status value for showing time information (0=show time) // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function showMessages($objTemplate,$strErrorMessage,$strInfoMessage,$strConsistMessage,$arrTimeData,$strTimeInfoString,$intNoTime=0) { // Display info messages if ($strInfoMessage != "") { $objTemplate->setVariable("INFOMESSAGE",$strInfoMessage); $objTemplate->parse('infomessage'); } // Display error messages if ($strErrorMessage != "") { $objTemplate->setVariable("ERRORMESSAGE",$strErrorMessage); $objTemplate->parse('errormessage'); } // Display time informations if (($this->intDomainId != 0) && ($intNoTime == 0)) { foreach($arrTimeData AS $key => $elem) { if ($key == 'table') { $objTemplate->setVariable("LAST_MODIFIED_TABLE",translate('Last database update:')." ".$elem.""); $objTemplate->parse('table_time'); } else { $objTemplate->setVariable("LAST_MODIFIED_FILE",translate('Last file change of the configuration target ')." ".$key.": ".$elem.""); $objTemplate->parse('file_time'); } } if ($strTimeInfoString != "") { $objTemplate->setVariable("MODIFICATION_STATUS",$strTimeInfoString); $objTemplate->parse('modification_status'); } } // Display consistency messages if ($strConsistMessage != "") { $objTemplate->setVariable("CONSIST_USAGE",$strConsistMessage); $objTemplate->parse('consistency'); } $objTemplate->parse("msgfooter"); $objTemplate->show("msgfooter"); } /////////////////////////////////////////////////////////////////////////////////////////// // Function: Display page footer /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $objTemplate Form template object // $setFileVersion NagiosQL version // // Return values: none // /////////////////////////////////////////////////////////////////////////////////////////// function showFooter($objTemplate,$setFileVersion) { $objTemplate->setVariable("VERSION_INFO","NagiosQL $setFileVersion"); $objTemplate->parse("footer"); $objTemplate->show("footer"); } /////////////////////////////////////////////////////////////////////////////////////////// // --- HELP functions --- /////////////////////////////////////////////////////////////////////////////////////////// // Function: Process list view field 2 /////////////////////////////////////////////////////////////////////////////////////////// // // Parameter: $arrData Data array // $strTableName Table name // // Return values: String includung field 2 data // /////////////////////////////////////////////////////////////////////////////////////////// function processField2($arrData,$strTableName) { $strField = ""; // Hostdependency table if ($strTableName == "tbl_hostdependency") { if ($arrData['dependent_host_name'] != 0) { $strSQLHost = "SELECT `host_name`, `exclude` FROM `tbl_host` LEFT JOIN `tbl_lnkHostdependencyToHost_DH` ON `id`=`idSlave` WHERE `idMaster`=".$arrData['id']." ORDER BY `host_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHosts,$intDCHost); if ($intDCHost != 0) { foreach($arrDataHosts AS $elem) { if ($elem['exclude'] == 1) { $strField .= "H:!".$elem['host_name'].","; } else { $strField .= "H:".$elem['host_name'].","; } } } } if ($arrData['dependent_hostgroup_name'] != 0) { $strSQLHost = "SELECT `hostgroup_name`, `exclude` FROM `tbl_hostgroup` LEFT JOIN `tbl_lnkHostdependencyToHostgroup_DH` ON `id`=`idSlave` WHERE `idMaster`=".$arrData['id']." ORDER BY `hostgroup_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHostgroups,$intDCHostgroup); if ($intDCHostgroup != 0) { foreach($arrDataHostgroups AS $elem) { if ($elem['exclude'] == 1) { $strField .= "HG:!".$elem['hostgroup_name'].","; } else { $strField .= "HG:".$elem['hostgroup_name'].","; } } } } } // Hostescalation table if ($strTableName == "tbl_hostescalation") { if ($arrData['host_name'] != 0) { $strSQLHost = "SELECT `host_name` FROM `tbl_host` LEFT JOIN `tbl_lnkHostescalationToHost` ON `id`=`idSlave` WHERE `idMaster`=".$arrData['id']." ORDER BY `host_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHosts,$intDCHost); if ($intDCHost != 0) { foreach($arrDataHosts AS $elem) { $strField .= "H:".$elem['host_name'].","; } } } if ($arrData['hostgroup_name'] != 0) { $strSQLHost = "SELECT `hostgroup_name` FROM `tbl_hostgroup` LEFT JOIN `tbl_lnkHostescalationToHostgroup` ON `id`=`idSlave` WHERE `idMaster`=".$arrData['id']." ORDER BY `hostgroup_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLHost,$arrDataHostgroups,$intDCHostgroup); if ($intDCHostgroup != 0) { foreach($arrDataHostgroups AS $elem) { $strField .= "HG:".$elem['hostgroup_name'].","; } } } } // Servicedependency table if ($strTableName == "tbl_servicedependency") { if ($arrData['dependent_service_description'] == 2) { $strField .= "*"; } else if ($arrData['dependent_service_description'] != 0) { $strSQLService = "SELECT `strSlave` FROM `tbl_lnkServicedependencyToService_DS` WHERE `idMaster`=".$arrData['id']." ORDER BY `strSlave`"; $booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService); if ($intDCService != 0) { foreach($arrDataService AS $elem) { $strField .= $elem['strSlave'].","; } } } if ($strField == "") { $strSQLService = "SELECT `servicegroup_name` FROM `tbl_servicegroup` LEFT JOIN `tbl_lnkServicedependencyToServicegroup_DS` ON `idSlave`=`id` WHERE `idMaster`=".$arrData['id']." ORDER BY `servicegroup_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService); if ($intDCService != 0) { foreach($arrDataService AS $elem) { $strField .= $elem['servicegroup_name'].","; } } } } // Serviceescalation table if ($strTableName == "tbl_serviceescalation") { if ($arrData['service_description'] == 2) { $strField .= "*"; } else if ($arrData['service_description'] != 0) { $strSQLService = "SELECT `strSlave` FROM `tbl_lnkServiceescalationToService` WHERE `idMaster`=".$arrData['id']; $booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataServices,$intDCServices); if ($intDCServices != 0) { foreach($arrDataServices AS $elem) { $strField .= $elem['strSlave'].","; } } } if ($strField == "") { $strSQLService = "SELECT `servicegroup_name` FROM `tbl_servicegroup` LEFT JOIN `tbl_lnkServiceescalationToServicegroup` ON `idSlave`=`id` WHERE `idMaster`=".$arrData['id']." ORDER BY `servicegroup_name`"; $booReturn = $this->myDBClass->getDataArray($strSQLService,$arrDataService,$intDCService); if ($intDCService != 0) { foreach($arrDataService AS $elem) { $strField .= $elem['servicegroup_name'].","; } } } } // Some string manipulations - remove comma on line end if (substr($strField,-1) == ',') $strField = substr($strField,0,-1); return($strField); } } ?>