// Delete a selected recording, after confirmation if ($delete and confirm_sesskey()) { require_capability('mod/congrea:recordingdelete', $context); //require_capability('mod/congrea:addinstance', $context); $record = $DB->get_record('congrea_files', array('id' => $delete), '*', MUST_EXIST); if ($confirm != md5($delete)) { echo $OUTPUT->header(); echo $OUTPUT->heading($strdelete . " " . $congrea->name); $optionsyes = array('delete' => $delete, 'confirm' => md5($delete), 'sesskey' => sesskey()); echo $OUTPUT->confirm(get_string('deletecheckfull', '', "'{$record->vcsessionname}'"), new moodle_url($returnurl, $optionsyes), $returnurl); echo $OUTPUT->footer(); die; } else { if (data_submitted()) { $filepath = $CFG->dataroot . "/congrea/" . $record->courseid . "/" . $record->vcid . "/" . $record->vcsessionkey; if (mod_congrea_deleteAll($filepath)) { $DB->delete_records('congrea_files', array('id' => $record->id)); \core\session\manager::gc(); // Remove stale sessions. redirect($returnurl); } else { \core\session\manager::gc(); // Remove stale sessions. echo $OUTPUT->notification($returnurl, get_string('deletednot', '', $record->vcsessionname)); } } } } echo $OUTPUT->header(); echo $OUTPUT->heading($congrea->name); // If vidya.io API key missing.
/** * Delete recoded files with folder. * * @param string $directory - Path of folder where * recording files of one session has been stored. * @return bool */ function mod_congrea_deleteAll($directory, $empty = false) { if (substr($directory, -1) == "/") { $directory = substr($directory, 0, -1); } if (!file_exists($directory) || !is_dir($directory)) { return false; } elseif (!is_readable($directory)) { return false; } else { $directoryHandle = opendir($directory); while ($contents = readdir($directoryHandle)) { if ($contents != '.' && $contents != '..') { $path = $directory . "/" . $contents; if (is_dir($path)) { mod_congrea_deleteAll($path); } else { unlink($path); } } } closedir($directoryHandle); if ($empty == false) { if (!rmdir($directory)) { return false; } } return true; } }