/** * Transverse the tree and update/insert entries based on the updated structure. * @param array The tree from rebuild(), and the subtree from the recursion. * @param int the ordering of this subtree respect to its parent. * @param int parent content id * @return null (nothing to return, it updates the db only) */ function reconstruct($tree, $order, $content_parent_id, $table_prefix) { global $db; //a content page. if (!is_array($tree)) { $sql = 'UPDATE ' . $table_prefix . "content SET ordering={$order}, content_parent_id={$content_parent_id} WHERE content_id={$tree}"; if (!mysql_query($sql, $db)) { //throw error echo mysql_error(); } return; } foreach ($tree as $k => $v) { if (preg_match('/order\\_([\\d]+)/', $k, $match) == 1) { //order layer reconstruct($v, $match[1], $content_parent_id, $table_prefix); //inherit the previous layer id } else { //content folder layer $sql = 'SELECT * FROM ' . $table_prefix . "content WHERE content_id={$k}"; $result = mysql_query($sql, $db); $old_content_row = mysql_fetch_assoc($result); $sql = 'INSERT INTO ' . $table_prefix . 'content (course_id, content_parent_id, ordering, last_modified, revision, formatting, release_date, keywords, content_path, title, use_customized_head, allow_test_export, content_type) VALUES (' . $old_content_row['course_id'] . ', ' . $content_parent_id . ', ' . $order . ', ' . '\'' . $old_content_row['last_modified'] . '\', ' . $old_content_row['revision'] . ', ' . $old_content_row['formatting'] . ', ' . '\'' . $old_content_row['release_date'] . '\', ' . '\'' . mysql_real_escape_string($old_content_row['keywords']) . '\', ' . '\'' . mysql_real_escape_string($old_content_row['content_path']) . '\', ' . '\'' . mysql_real_escape_string($old_content_row['title']) . '\', ' . $old_content_row['use_customized_head'] . ', ' . $old_content_row['allow_test_export'] . ', ' . '1)'; if (mysql_query($sql, $db)) { $folder_id = mysql_insert_id(); reconstruct($v, '', $folder_id, $table_prefix); } else { //throw error echo mysql_error(); } } } }
} if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (is_session_active()) { //$shares = array($_POST['1'] , $_POST['2'], $_POST['3']); $shares = array(); if (!empty($_POST['1'])) { array_push($shares, $_POST['1']); } if (!empty($_POST['2'])) { array_push($shares, $_POST['2']); } if (!empty($_POST['3'])) { array_push($shares, $_POST['3']); } //var_dump($shares); $reconstructed_secret = reconstruct($shares); $db = new DBConnection(); $db->connect(); $user = get_user_info(); $secret = $db->query('secret', 'secret', "uid='{$user}'", null, null, null)[0]['secret']; $db->delete('secret', "uid='{$user}'"); $db->disconnect(); if ($secret == $reconstructed_secret) { echo "Secrets matching. Access granted."; } else { echo "{$secret} != {$reconstructed_secret}. Access denied"; } } else { echo "fail"; } } else {
include_once "ressources/class.lvm.org.inc"; $user = new usersMenus(); if (!$user->AsSystemAdministrator) { echo "alert('no privileges');"; die; } if (isset($_GET["popup"])) { popup(); exit; } if (isset($_POST["remove-table"])) { remove_table(); exit; } if (isset($_POST["reconstruct"])) { reconstruct(); exit; } js(); function js() { $tpl = new templates(); $page = CurrentPageName(); if (!is_numeric($_GET["t"])) { $t = time(); } $database = $_GET["database"]; $table = $_GET["table"]; $title = $tpl->javascript_parse_text("{$database}/{$table}"); echo "YahooWinBrowse('500','{$page}?popup=yes&t={$t}&database={$database}&table={$table}&t={$t}','{$title}')"; }
$sql = 'SELECT * FROM '.$_POST['step1']['tb_prefix'].'content WHERE course_id='.$row_course['course_id']; $result = mysql_query($sql, $db); $content_array = array(); while ($row = mysql_fetch_assoc($result)){ $content_array[$row['content_parent_id']][$row['ordering']] = $row['content_id']; } $tree = buildTree($content_array[0], $content_array); /* Restructure the tree */ $tree = rebuild($tree); /* Update the Db based on this new tree */ reconstruct($tree, '', 0, $_POST['step1']['tb_prefix']); } } /* deal with the extra modules: */ /* for each module in the modules table check if that module still exists in the mod directory. */ /* if that module does not exist then check the old directory and prompt to have it copied */ /* or delete it from the modules table. or maybe disable it instead? */ if (version_compare($_POST['step1']['old_version'], '1.5.1', '>')) { define('TABLE_PREFIX', $_POST['step1']['tb_prefix']); require(AT_INCLUDE_PATH . '../mods/_core/modules/classes/Module.class.php'); $moduleFactory = new ModuleFactory(FALSE); $module_list =& $moduleFactory->getModules(AT_MODULE_STATUS_DISABLED | AT_MODULE_STATUS_ENABLED); $keys = array_keys($module_list); foreach($keys as $dir_name) { $module =& $module_list[$dir_name];
require_once "repoapi.inc"; header('Content-Type: application/json'); $file_info = get_file_info($_GET['fid']); $colluded_list = is_threshold_met($_GET['fid']); // print_r($colluded_list);print_r($file_info); if ($file_info['status'] != 4) { $colluded_list = is_threshold_met($_GET['fid']); // print_r($colluded_list); $ret = ''; if ($colluded_list['more'] <= 0) { $shares = get_shares_as_string($_GET['fid']); $info['shares'] = $shares; $info['file-name'] = get_file_name($_GET['fid']); $info['fid'] = $_GET['fid']; // print_r($info); $result = reconstruct($info); set_decryption_status($_GET['fid'], $result); // print_r($result); $data = "<a href='/toyapp/repo/{$result}'>Download file</a><br />"; $ret = array('status' => 'success', 'data' => $data); } else { $data = ''; foreach ($colluded_list['list'] as $key => $value) { $data .= $value['uid'] . ', '; } //$data = trim($data); $data .= ' shared secrets. Needs ' . $colluded_list['more'] . ' more shares.'; $ret = array('status' => 'fail', 'data' => $data); } } else { $file = get_file_path($_GET['fid']);