File manager - Edit - /home/missmand/public_html/learning/old/main/formation/turbomedia.php
Back
<?php /* For licensing terms, see /license.txt */ /** * @author Batiste Roger <batiste.roger@live.fr> * @package chamilo.formation */ // Requires require_once '../inc/global.inc.php'; require_once api_get_path(LIBRARY_PATH).'userportal.lib.php'; require_once 'utils.php'; function turbo_get_course_id () { $c_id = isset($_SESSION['mm_current_course_code']) ? $_SESSION['mm_current_course_code'] : 'MO1'; // detect course to modify $c_id_result = Database::fetch_assoc(Database::query("SELECT id FROM course WHERE code = '$c_id'")); return $c_id_result['id']; } function turbo_create() { $turboname = $_POST['turboname']; $c_id = turbo_get_course_id(); if ($_FILES["turbo"]["error"] == 0) { error_test_param ($_FILES["turbo"]["size"] < 200 * 1024 * 1024, "Fichier trop lourd", "formation/upload.php") ; error_test_param (end(explode(".", $_FILES["turbo"]["name"])) == 'zip', "Mauvaise extension. Je veux du zip.", "formation/upload.php") ; $tmp_name = $_FILES["turbo"]["tmp_name"]; // Unzip // Store $zip = new ZipArchive; $res = $zip->open($tmp_name); if ($res === TRUE) { if (!file_exists(TURBO_PATH)) mkdir(TURBO_PATH, 0777, true); // Scan archive for non image formats // If one is find, crash hard :o for($i = 0; $i < $zip->numFiles; $i++) { $filename_i = $zip->getNameIndex($i); $ext_i = end(explode(".", $filename_i)); if (!in_array($ext_i, array('jpg', 'png'))) error_throw("Unexpected extension ($ext_i).", "formation/upload.php"); } // Extract every single element and create the lp // 1) Create lp $sql_lp = "INSERT INTO c_lp SET c_id = '$c_id', lp_type = '1', name = '" . trim(Database::escape_string($turboname)) . "', description = '$ext_i', use_max_score = '0'"; // IMPORTANT (TODO) : Extention stored in description. The extention HAS TO BE the same for all images Database::query($sql_lp); $new_lp_id = Database::get_last_insert_id(); // 2) Create items $target_path = TURBO_PATH . '/' . $turboname; error_log("path = $target_path"); error_log("#files = " . $zip->numFiles); for($i = 1; $i <= $zip->numFiles; $i++) { error_log("Uploading #" . $i); $filename_i = $i . "." . $ext_i; // HERE I FORCE THE NAME TO $i, which is 1.jpg, 2.jpg .... n.jpg (or png) [KNOWN ISSUE] error_log("Name = " . $filename_i); $ext_i = end(explode(".", $filename_i)); $zip->extractTo($target_path, array($filename_i)); error_log("Renaming : (" . $target_path . "/" . $filename_i . ") ===> (" . $target_path . "/" . "$i.$ext_i" . ")"); rename ($target_path . "/" . $filename_i, $target_path . "/" . "$i.$ext_i"); // Rename all images, replace by id // Create lp_item $sql_item = "INSERT INTO c_lp_item SET c_id = '$c_id', lp_id = '$new_lp_id', title = '$i', max_score = '0', item_type = 'turbomedia'"; Database::query($sql_item); } $zip->close(); } else { error_throw("Erreur dans le dézippage de l'archive", "formation/upload.php"); } } else { error_throw("Erreur dans le téléchargement de " . print_r($_FILES["turbo"]["error"], true), "formation/upload.php"); } } function turbo_view ($c_id, $lp_id, $item_nb) { $user_id = api_get_user_id(); // item nb is the title of the item. Its id is not necessarily the same. $item_id_sql = "SELECT id FROM c_lp_item WHERE c_id = '$c_id' AND lp_id = '$lp_id' AND title = '$item_nb'"; $item_id_res = Database::fetch_assoc(Database::query($item_id_sql)); $item_id = $item_id_res['id']; // Compute progress // 1) Count ids so that we know the rank of item_id // 2) Progress = rank(id) / rank(max[ids]) * 100 $sql_ranks = "SELECT id FROM c_lp_item WHERE c_id = '$c_id' AND lp_id = '$lp_id' ORDER BY id ASC"; $res_ranks = Database::query($sql_ranks); $ranks = array(); while ($row = Database::fetch_array($res_ranks)) { $ranks[$row['id']] = sizeof($ranks); // For any row, we store its loop_index as the rank of row.id } // Create view if required $res = Database::query("SELECT * FROM c_lp_view WHERE c_id = '$c_id' AND lp_id = '$lp_id' AND user_id = '$user_id'"); if (Database::num_rows($res) <= 0) { $sql = "INSERT INTO c_lp_view SET c_id = '$c_id', lp_id = '$lp_id', user_id = '$user_id', view_count = '1'" . ", last_item = '$item_id', progress = '" . $ranks[$item_id] / $_POST['item_max'] * 100 . "'"; $id = Database::get_last_insert_id(); } else { $sql = "UPDATE c_lp_view SET last_item = '$item_id', progress = '" . $ranks[$item_id] / $_POST['item_max'] * 100 . "' WHERE c_id = '$c_id' AND lp_id = '$lp_id' AND user_id = '$user_id'"; $info = Database::fetch_assoc($res); $id = $info['id']; } Database::query($sql); // Set view for item $item_id $res_exists = Database::query("SELECT * FROM c_lp_item_view WHERE c_id = '$c_id' AND lp_item_id = '$item_id' AND lp_view_id = '$id'"); if (Database::num_rows($res_exists) > 0) { $sql_item = "UPDATE c_lp_item_view SET view_count = '1', score = '0', status = 'completed' WHERE c_id = '$c_id' AND lp_item_id = '$item_id' AND lp_view_id = '$id'"; } else { $sql_item = "INSERT INTO c_lp_item_view SET c_id = '$c_id', lp_item_id = '$item_id', lp_view_id = '$id', view_count = '1', score = '0', status = 'completed'"; } Database::query($sql_item); return "requete = $sql_item"; }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings