function ReceiveData() { global $security_actions, $security_orders; $res = array(); $data = $_POST[$this->name . '_postdata']; $limits = db_unpack($data); if ($_POST[$this->name . '_inherit'] && $this->canInherit) { $res['inherit'] = true; } else { foreach ($limits as $l => $v) { if (preg_match('/\\{\\{\\{\\{GROUP[0-9]+\\}\\}\\}\\}/', $l) || !isset($this->security_limits[$l])) { continue; } $limit = db_unpack($v); $order = $limit['order']; $res[$l]['order'] = $order; if (!isset($security_orders[$order])) { continue; } $acts = db_unpack($limit['acts']); $i = 0; while (isset($acts[$i])) { $act = db_unpack($acts[$i]); if (isset($security_actions[$act['act']])) { $res[$l]['acts'][] = array('act' => $act['act'], 'val' => $act['val']); } $i++; } } } $this->data = $res; $this->RefreshCachedData(); }
function CreateSettings() { global $XPFS; $cfg = db_unpack($XPFS->readFile('/tester/wt.cfg')); if ($cfg['initialized']) { return; } manage_settings_create('Имя хоста основного сервера WebTester', 'WebTester', 'WT_server_host', 'CSCText'); manage_settings_create('IPC-порт основного сервера WebTester', 'WebTester', 'WT_server_port', 'CSCNumber'); manage_settings_create('Логин на основной сервер WebTester', 'WebTester', 'WT_server_login', 'CSCText'); manage_settings_create('Пароль на основной сервер WebTester', 'WebTester', 'WT_server_pass', 'CSCPassword'); manage_setting_use('WT_server_host'); manage_setting_use('WT_server_port'); manage_setting_use('WT_server_login'); manage_setting_use('WT_server_pass'); $cfg['initialized'] = 1; $XPFS->createDirectory('/', 'tester'); $XPFS->createFile('/tester', 'wt.cfg'); $XPFS->writeBlock('/tester/wt.cfg', db_pack($cfg)); }
function GetTests($id) { $data = $this->GetByID($id); if ($data['id'] != $id) { return null; } $tests_count = count(explode(' ', $data['settings']['tests'])); $data = db_unpack(WT_ReceiveIPCData('/tester/tests', $id . '@0', 'informatics', array('get_tests', $id, '1-' . $tests_count))); return array('tests' => db_unpack($data['tst']), 'answers' => db_unpack($data['ans'])); }