xcat-core/xCAT-UI/lib/tabRestore.php

83 lines
2.2 KiB
PHP

<?php
/* Required libraries */
$TOPDIR = '..';
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/jsonwrapper.php";
/**
* Replace the contents of an xCAT table
*
* @param $tab The xCAT table
* @param $cont The xCAT table contents
* @return The xCAT response. Replies are in the form of JSON
*/
if (isset($_POST["table"])) {
// HTTP POST requests
$tab = $_POST["table"];
$cont = $_POST["cont"];
}
// Create xCAT request
$request = simplexml_load_string('<xcatrequest></xcatrequest>');
// Command is tabrestore
$request->addChild('command', 'tabrestore');
// Setup authentication
$usernode = $request->addChild('becomeuser');
$usernode->addChild('username', $_SESSION["username"]);
$usernode->addChild('password', getpassword());
// Go through each table row
$first = 0;
foreach($cont as $line){
if($first == 0){
// The 1st line is the table header
// It does not need special processing
// Create string containing all array elements
$str = implode(",", $line);
$request->addChild('data', $str);
$first = 1;
continue;
}
// Go through each column
foreach ($line as &$col){
// If the column does begins and end with a quote
// Change quotes to &quot;
if(!empty($col) && !preg_match('/^".*"$/', $col)) {
$col = '&quot;' . $col . '&quot;';
}
}
// Sort line
ksort($line, SORT_NUMERIC);
$keys = array_keys($line);
$max = count($line) - 1;
if ($keys[$max] != $max){
for ($i = 0; $i <= $keys[$max]; $i++) {
if (!isset($line[$i])) {
$line[$i]='';
}
}
ksort($line, SORT_NUMERIC);
}
// Create string containing all array elements
$str = implode(",", $line);
// Replace " with &quot;
$str = str_replace('"', '&quot;', $str);
// Replace ' with &apos;
$str = str_replace("'", '&apos;', $str);
$request->addChild('data', $str);
}
// Run command
$request->addChild('table', $tab);
$xml = submit_request($request, 0, NULL);
// Reply in the form of JSON
$rtn = array("rsp" => $xml);
echo json_encode($rtn);
?>