/** * Return a list of child objects of the specified type for the selected parent object. * @param $obt_id (int) Object ID. * @param $obt_id (int) Object Type ID. * @return string. */ function F_getGuestList($obj_id, $obt_id) { global $l, $db; require_once '../config/tce_config.php'; $obj_id = intval($obj_id); $obt_id = intval($obt_id); $cobj = array(); $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . intval($obj_id) . ' AND obj_obt_id=' . intval($obt_id) . ' ORDER BY obj_name ASC'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $cobj[] = $m; } } else { F_display_db_error(); } return $cobj; }
/** * Returns a comma separated string of test IDs with test_results_to_users enabled * @param $test_id (int) Test ID. * @return string */ function F_getTestIDs($test_id, $user_id, $filter = 'test_results_to_users') { global $l, $db; require_once '../config/tce_config.php'; $str = '0'; // string to return $test_id = intval($test_id); $user_id = intval($user_id); $sql = 'SELECT test_id FROM ' . K_TABLE_TESTS . ' WHERE test_id IN (SELECT DISTINCT testuser_test_id FROM ' . K_TABLE_TEST_USER . ' WHERE testuser_user_id=' . intval($user_id) . ' AND testuser_status>0) AND ' . $filter . '=1'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $str .= ',' . $m['test_id']; } } else { F_display_db_error(); } return $str; }
header('Location: index.php'); //redirect browser to public main page exit; } if (isset($_REQUEST['test_id']) and $_REQUEST['test_id'] > 0) { $test_id = intval($_REQUEST['test_id']); } else { header('Location: index.php'); //redirect browser to public main page exit; } // security check $checkid = 0; $sqlt = 'SELECT testuser_user_id FROM ' . K_TABLE_TEST_USER . ' WHERE testuser_test_id=' . $test_id . ' AND testuser_id=' . $testuser_id . ''; if ($rt = F_db_query($sqlt, $db)) { if ($mt = F_db_fetch_assoc($rt)) { $checkid = $mt['testuser_user_id']; } } else { F_display_db_error(); } if ($user_id != $checkid) { header('Location: index.php'); //redirect browser to public main page exit; } // get user's test stats $userdata = F_getUserData($user_id); $teststat = F_getTestStat($test_id, 0, $user_id, 0, 0, $testuser_id); $teststat['testinfo'] = F_getUserTestStat($test_id, $user_id, $testuser_id); $test_id = $teststat['testinfo']['test_id'];
case 'update': // generate script if (!($new_child_quantity > 0 and $new_child_type > 0 and strlen($new_child_name) > 0)) { break; } foreach ($_REQUEST as $k => $v) { if (substr($k, 0, 3) == 'so_') { ${$k} = true; // get object ID $object_id = intval(substr($k, 3)); for ($i = 1; $i <= $new_child_quantity; ++$i) { $obj_name = F_escape_sql(sprintf($new_child_name, $i)); // check if this child already exist $sqlus = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . $object_id . ' AND obj_name=\'' . $obj_name . '\' LIMIT 1'; if ($rus = F_db_query($sqlus, $db)) { if (!F_db_fetch_assoc($rus)) { // add new child $sql = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name ) VALUES ( ' . $new_child_type . ', \'' . $obj_name . '\' )'; if (!($r = F_db_query($sql, $db))) { F_display_db_error(false); } else { $cobj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // update parent-child map $sql = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' (
$sql .= ' FROM ' . K_TABLE_OBJECTS . ''; $sql .= ' INNER JOIN ' . K_TABLE_OBJECT_TYPES . ' ON obt_id=obj_obt_id'; $sql .= ' LEFT JOIN ' . K_TABLE_MANUFACTURES . ' ON obj_mnf_id=mnf_id'; $sql .= ' LEFT JOIN ' . K_TABLE_USERS . ' owner ON obj_owner_id=owner.user_id'; $sql .= ' LEFT JOIN ' . K_TABLE_USERS . ' tenant ON obj_tenant_id=tenant.user_id'; $sql .= ' LEFT JOIN (' . K_TABLE_LOCATIONS . ''; $sql .= ' INNER JOIN (' . K_TABLE_RACKS . ''; $sql .= ' INNER JOIN (' . K_TABLE_SUITES . ''; $sql .= ' INNER JOIN (' . K_TABLE_DATACENTERS . ') ON sts_dcn_id=dcn_id'; $sql .= ') ON rck_sts_id=sts_id'; $sql .= ') ON loc_rack_id=rck_id'; $sql .= ') ON obj_id=loc_obj_id'; // CSV headers $csv = "obt_name\tobj_name\tobj_description\tobj_label\tobj_tag\tmnf_name\tdcn_name\tsts_name\trck_name\tloc_row_top\tloc_row_bottom\towner_name\towner_email\towner_firstname\towner_lastname\ttenant_name\ttenant_email\ttenant_firstname\ttenant_lastname\n"; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $csv .= implode("\t", $m) . "\n"; } } else { F_display_db_error(); } // convert and save exporting file $outfile = date('YmdHis') . '_rackmap_objects_list_' . md5($sql) . '.csv'; // save data file if (file_put_contents(K_PATH_CONFIG_SCRIPTS . $outfile, $csv) !== false) { F_print_error('MESSAGE', $l['m_file_saved'] . ': <a href="' . K_PATH_URL_CONFIG_SCRIPTS . $outfile . '" title="' . $l['w_download'] . '" onclick="pdfWindow=window.open(\'' . K_PATH_URL_CONFIG_SCRIPTS . $outfile . '\',\'expWindow\',\'dependent,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes\'); return false;">' . $outfile . '</a>'); } else { F_print_error('ERROR', $l['m_file_save_error'] . ': ' . $outfile); } break; default:
/** * Get a comma separated list of valid SSL certificates IDs for the selected test. * @param $test_id (int) ID of the selected test * @return string containing a comma separated list SSL certificates IDs. */ function F_getTestSSLCerts($test_id) { require_once '../config/tce_config.php'; global $db, $l; $test_id = intval($test_id); $ids = '0'; // select SSL certificates in this test $sql = 'SELECT tstssl_ssl_id FROM ' . K_TABLE_TEST_SSLCERTS . ' WHERE tstssl_test_id=' . $test_id . ' ORDER BY tstssl_ssl_id'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $ids .= ',' . $m['tstssl_ssl_id']; } } else { F_display_db_error(); } return $ids; }
/** * Import the specifed server object. * @param $srv (array) array containing object data. * @return true in case of success, false otherwise */ function F_importServerObj($srv) { global $l, $db; require_once '../config/tce_config.php'; if (!isset($srv['serial']) or empty($srv['serial'])) { F_print_error('ERROR', 'missing serial'); return false; } // get ID of the object with the same serial number $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ' WHERE obj_tag=\'' . F_escape_sql($srv['serial']) . '\' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $obj_id = $m['obj_id']; } else { // this object do not exist. F_print_error('ERROR', $srv['serial']); return false; } } else { F_display_db_error(false); return false; } // attribute map $srvattrmap = array('hostname' => 66, 'os release' => 68, 'os type' => 67, 'kernel name' => 69, 'kernel release' => 70, 'kernel version' => 71, 'kernel architecture' => 72, 'product' => 17, 'uuid' => 26); // for each attribute foreach ($srvattrmap as $k => $v) { if (isset($srv[$k]) and strlen($srv[$k]) > 0) { $value = $srv[$k]; if ($k == 'product' and isset($srv['manufacturer']) and !empty($srv['manufacturer'])) { $value = $srv['manufacturer'] . ' ' . $value; } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } // cpu attribute map $cpuattrmap = array('Socket Designation' => 92, 'Family' => 94, 'ID' => 93, 'Architecture' => 56, 'CPU op-mode(s)' => 83, 'Byte Order' => 84, 'Thread(s) per core' => 85, 'Core(s) per socket' => 55, 'Vendor ID' => 86, 'CPU family' => 87, 'Model' => 88, 'Stepping' => 89, 'CPU MHz' => 25, 'Virtualization' => 90, 'L1d cache' => 81, 'L1i cache' => 82, 'L1 cache' => 57, 'L2 cache' => 58, 'L3 cache' => 59); // cpu if (isset($srv['dmi']['Processor Information']) and !empty($srv['dmi']['Processor Information'])) { $cpucount = 0; foreach ($srv['dmi']['Processor Information'] as $cpu) { ++$cpucount; $cpuname = sprintf('CPU%02d', $cpucount); // check if CPU exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=58 AND obj_name=\'' . $cpuname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $cpu_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 58, \'' . $cpuname . '\', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $cpu_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $obj_id . ', ' . $cpu_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($cpuattrmap as $k => $v) { $value = ''; if (isset($cpu[$k])) { $value = $cpu[$k]; } elseif (isset($srv['cpu'][$k])) { $value = $srv['cpu'][$k]; } if (preg_match('/([0-9\\.]+)[\\s]?([KMGT][B]?)/', $value, $vmtch) > 0) { $value = $vmtch[1]; } if (strlen($value) > 0) { // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $cpu_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } } } // memory attribute map $memattrmap = array('Total Width' => 95, 'Data Width' => 96, 'Size' => 52, 'Form Factor' => 97, 'Locator' => 99, 'Type' => 98, 'Speed' => 61); // memory if (isset($srv['ram']) and !empty($srv['ram'])) { // get total ram in gigabytes $totalram = round(floatval($srv['ram']) / 1024 / 1024 / 1024); // check if RAM object exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=59 ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $ram_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 59, \'RAM\', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $ram_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $obj_id . ', ' . $ram_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $ram_obj_id . ', 60, \'' . F_escape_sql($totalram) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } else { F_display_db_error(false); return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (isset($srv['dmi']['Memory Device']) and !empty($srv['dmi']['Memory Device'])) { $memcount = 0; foreach ($srv['dmi']['Memory Device'] as $mem) { ++$memcount; $memname = sprintf('SLOT%02d', $memcount); // check if object exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ram_obj_id . ' AND obj_obt_id=60 AND obj_name=\'' . $memname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing memory slot object $mem_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 60, \'' . $memname . '\', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $mem_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $ram_obj_id . ', ' . $mem_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each memory attribute foreach ($memattrmap as $k => $v) { $value = ''; if (isset($mem[$k])) { $value = $mem[$k]; if ($k == 'Size' or $k == 'Speed') { $value = intval($value); } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $mem_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } } } } // end srv['ram'] // network attribute map $netattrmap = array('device' => 74, 'mac' => 9, 'ipv4' => 10, 'bcast' => 75, 'mask' => 76, 'ipv6' => 73, 'encap' => 77, 'scope' => 78, 'mtu' => 79, 'metric' => 80); // network if (isset($srv['network']) and !empty($srv['network'])) { $netcount = 0; foreach ($srv['network'] as $net) { if (preg_match('/^eth[0-9]+$/', $net['device']) > 0) { ++$netcount; $netname = sprintf('ETH%02d', $netcount); // check if device exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=37 AND obj_name=\'' . $netname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $net_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 37, \'' . $netname . '\', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null('') . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $net_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $obj_id . ', ' . $net_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($netattrmap as $k => $v) { $value = ''; if (isset($net[$k])) { $value = $net[$k]; } elseif (isset($srv['net'][$k])) { $value = $srv['net'][$k]; } if (strlen($value) > 0) { // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $net_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } } } } // disk controller (8) attribute map $ctrlattrmap = array('Bus Interface' => 100, 'Slot' => 101, 'Cache Serial Number' => 102, 'Hardware Revision' => 103, 'Firmware Version' => 104, 'Total Cache Size' => 105, 'Total Cache Memory Available' => 106); // disk array (65) attribute map $darrattrmap = array('Interface Type' => 122); // logical drive (66) attribute map $logdrvattrmap = array('Size' => 123, 'Fault Tolerance' => 107, 'Heads' => 108, 'Sectors Per Track' => 109, 'Cylinders' => 110, 'Strip Size' => 111, 'Full Stripe Size' => 112, 'Caching' => 113, 'Unique Identifier' => 114, 'Disk Name' => 115, 'Mount Points' => 116, 'Logical Drive Label' => 117, 'Drive Type' => 118); // physical drive (66) attribute map $phydrvattrmap = array('Port' => 119, 'Box' => 120, 'Bay' => 121, 'Drive Type' => 118, 'Interface Type' => 122, 'Size' => 123, 'Rotational Speed' => 124, 'Firmware Revision' => 104, 'Model' => 125, 'PHY Transfer Rate' => 126); $disknum = 0; $logdrvdisks = array(); // list physical disks that belongs to logical drives // hp disk controller data if (isset($srv['hpdisks']) and !empty($srv['hpdisks'])) { $ctrlcount = 0; foreach ($srv['hpdisks'] as $ctrl) { ++$ctrlcount; $ctrlname = sprintf('DISKCTRL%02d', $ctrlcount); // check if device exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $obj_id . ' AND obj_obt_id=8 AND obj_name=\'' . $ctrlname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $ctrl_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 8, \'' . $ctrlname . '\', ' . F_empty_to_null($ctrl['item']) . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null($ctrl['Serial Number']) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $ctrl_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $obj_id . ', ' . $ctrl_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($ctrlattrmap as $k => $v) { $value = ''; if (isset($ctrl[$k]) and strlen($ctrl[$k]) > 0) { $value = $ctrl[$k]; if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) { $value = $vmtch[1]; } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $ctrl_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } // - - - - - - - - - - // disk arrays foreach ($ctrl as $ck => $darr) { if (is_array($darr) and $darr['item'] == 'Array') { $diskarrayname = sprintf('ARRAY%02d', $ck + 1); // check if device exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ctrl_obj_id . ' AND obj_obt_id=65 AND obj_name=\'' . $diskarrayname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $darr_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 65, \'' . $diskarrayname . '\', ' . F_empty_to_null($darr['item']) . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null($darr['value']) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $darr_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $ctrl_obj_id . ', ' . $darr_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($darrattrmap as $k => $v) { $value = ''; if (isset($darr[$k]) and strlen($darr[$k]) > 0) { $value = $darr[$k]; // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $darr_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } // - - - - - - - - - - // logical (66) and physical (61) disks foreach ($darr as $dk => $dsk) { if (is_array($dsk)) { if ($dsk['item'] == 'Logical Drive') { $ldiskname = sprintf('LOGICALDRIVE%02d', $dk + 1); // check if device exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $darr_obj_id . ' AND obj_obt_id=66 AND obj_name=\'' . $ldiskname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $ldsk_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 66, \'' . $ldiskname . '\', ' . F_empty_to_null($dsk['item']) . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null($dsk['value']) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $ldsk_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $darr_obj_id . ', ' . $ldsk_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($logdrvattrmap as $k => $v) { $value = ''; if (isset($dsk[$k]) and strlen($dsk[$k]) > 0) { $value = $dsk[$k]; if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) { $value = $vmtch[1]; } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $ldsk_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } $logdrvdisks[$ldsk_obj_id] = array(); } elseif ($dsk['item'] == 'physicaldrive') { ++$disknum; $diskname = sprintf('DISK%02d', $disknum); $logdrvdisks[$ldsk_obj_id][] = $diskname; // check if device exist $sql = 'SELECT obj_id FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE obj_id=omp_child_obj_id AND omp_parent_obj_id=' . $ctrl_obj_id . ' AND obj_obt_id=61 AND obj_name=\'' . $diskname . '\' ORDER BY obj_name'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { // update existing object $pdsk_obj_id = $m['obj_id']; } else { // create new object $sqlo = 'INSERT INTO ' . K_TABLE_OBJECTS . ' ( obj_obt_id, obj_name, obj_description, obj_label, obj_tag, obj_mnf_id, obj_owner_id, obj_tenant_id ) VALUES ( 61, \'' . $diskname . '\', ' . F_empty_to_null($dsk['item']) . ', ' . F_empty_to_null('') . ', ' . F_empty_to_null($dsk['value']) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ', ' . F_zero_to_null(0) . ' )'; if (!($ro = F_db_query($sqlo, $db))) { F_display_db_error(false); return false; } else { $pdsk_obj_id = F_db_insert_id($db, K_TABLE_OBJECTS, 'obj_id'); } // set object map $sqlm = 'INSERT INTO ' . K_TABLE_OBJECTS_MAP . ' ( omp_parent_obj_id, omp_child_obj_id ) VALUES ( ' . $ctrl_obj_id . ', ' . $pdsk_obj_id . ' )'; if (!($rm = F_db_query($sqlm, $db))) { F_display_db_error(false); return false; } } // for each attribute foreach ($phydrvattrmap as $k => $v) { $value = ''; if (isset($dsk[$k]) and strlen($dsk[$k]) > 0) { $value = $dsk[$k]; if (preg_match('/([0-9\\.]+)[\\s]?([KMGT]B|Gbps)/', $value, $vmtch) > 0) { $value = $vmtch[1]; } // add or update attribute value $sqla = 'REPLACE INTO ' . K_TABLE_ATTRIBUTE_VALUES . ' ( atv_obj_id, atv_atb_id, atv_value ) VALUES ( ' . $pdsk_obj_id . ', ' . $v . ', \'' . F_escape_sql($value) . '\' )'; if (!($ra = F_db_query($sqla, $db))) { F_display_db_error(false); return false; } } } } else { F_display_db_error(false); return false; } } } } // end of disks } // is array } // end of disk array } // end for each controller // add physical disks on the logical drives if (isset($logdrvdisks) and !empty($logdrvdisks)) { foreach ($logdrvdisks as $logdrvid => $disks) { $sql = 'UPDATE ' . K_TABLE_OBJECTS . ' SET obj_description=' . F_empty_to_null(implode(', ', $disks)) . ' WHERE obj_id=' . $logdrvid . ''; if (!($r = F_db_query($sql, $db))) { F_display_db_error(false); } } } } return true; }
$omp_parent_obj_ids[] = $ma['omp_parent_obj_id']; } } else { F_display_db_error(); } // get connections $conn = array(); $cab_a_obj_id = 0; $cab_b_obj_id = 0; $cab_a_cbt_id = 1; $cab_b_cbt_id = 1; $cab_a_color = ''; $cab_b_color = ''; $sqlc = 'SELECT * FROM ' . K_TABLE_CABLES . ' WHERE (cab_a_obj_id=' . $obj_id . ' OR cab_b_obj_id=' . $obj_id . ') ORDER BY cab_a_obj_id'; if ($rc = F_db_query($sqlc, $db)) { while ($mc = F_db_fetch_assoc($rc)) { $conn[] = $mc; } if (isset($conn[0])) { if ($conn[0]['cab_b_obj_id'] == $obj_id) { $cab_a_obj_id = $conn[0]['cab_a_obj_id']; } else { $cab_a_obj_id = $conn[0]['cab_b_obj_id']; } $cab_a_cbt_id = $conn[0]['cab_cbt_id']; $cab_a_color = $conn[0]['cab_color']; } if (isset($conn[1])) { if ($conn[1]['cab_b_obj_id'] == $obj_id) { $cab_b_obj_id = $conn[1]['cab_a_obj_id']; } else {