/**
 * Given an ID of an instance of this module, 
 * this function will permanently delete the instance 
 * and any data that depends on it.  
 * @uses $COURSE, $DB
 */
function flashcard_delete_instance($id)
{
    global $COURSE, $DB;
    // clear anyway what remains here
    filesystem_clear_dir($COURSE->id . '/moddata/flashcard/' . $id, FS_FULL_DELETE);
    if (!($flashcard = $DB->get_record('flashcard', array('id' => $id)))) {
        return false;
    }
    $result = true;
    // Delete any dependent records here
    $DB->delete_records('flashcard_card', array('flashcardid' => $flashcard->id));
    if (!$DB->delete_records('flashcard', array('id' => $flashcard->id))) {
        $result = false;
    }
    return $result;
}
         echo $OUTPUT->box(get_string('vmoodlesnapshot2', 'local_vmoodle'));
         $params = array('view' => 'management', 'what' => 'snapshot', 'step' => 2, 'wwwroot' => $wwwroot);
         echo $OUTPUT->continue_button(new moodle_url('/local/vmoodle/view.php', $params));
         echo $OUTPUT->footer();
         die;
     }
 }
 // End of process.
 // copy moodle data and protect against copy recursion.
 // $CFG->filedebug = 1;
 filesystem_copy_tree($vdatapath, $absolute_datadir, $vdatabase, array("^{$templatefoldername}\$"));
 // Remove Vmoodle clone session, temp and cache dir.
 filesystem_clear_dir($relative_datadir . $separator . 'sessions', true);
 filesystem_clear_dir($relative_datadir . $separator . 'temp', true);
 filesystem_clear_dir($relative_datadir . $separator . 'cache', true);
 filesystem_clear_dir($relative_datadir . $separator . 'localcache', true);
 // Store original hostname for further database replacements.
 $FILE = fopen($absolute_sqldir . $separator . 'manifest.php', 'w');
 fwrite($FILE, "<?php\n ");
 fwrite($FILE, "\$templatewwwroot = '" . $wwwroot . "';\n");
 fwrite($FILE, "\$templatevdbprefix = '" . $CFG->prefix . "';\n ");
 fwrite($FILE, "?>");
 fclose($FILE);
 if (empty($automation)) {
     // Every step was SUCCESS.
     $message_object->message = get_string('successfinishedcapture', 'local_vmoodle');
     $message_object->style = 'notifysuccess';
     // Save confirm message before redirection.
     $SESSION->vmoodle_ma['confirm_message'] = $message_object;
     echo $OUTPUT->header();
     echo $OUTPUT->box(get_string('vmoodlesnapshot3', 'local_vmoodle'));
    }
    $form->editing = 1;
    include "add.html";
    return -1;
}
/**************************** delete a vmoodle and uninstall it ************/
if ($action == 'delete') {
    $id = required_param('id', PARAM_INT);
    $vmoodle = $DB->get_record('local_vmoodle', array('id' => $id));
    if ($vmoodle) {
        /// drop record in vmoodle table
        $DB->delete_records('local_vmoodle', array('id' => $id));
        /// destroy database. work silently
        @vmoodle_drop_database($vmoodle);
        /// unlink datapath
        filesystem_clear_dir($vmoodle->vdatapath, FS_FULL_DELETE, '');
        /// unbind mnet hosts
        if ($vmoodle->mnet) {
            // unregister from me (this)
            $thismoodle = vmoodle_make_this();
            vmoodle_unregister_mnet($vmoodle, $thismoodle);
            // unregister from all remaining peers (this)
            $mnetpeers = $DB->get_records('local_vmoodle', array('mnet' => 1));
            if (!empty($mnetpeers)) {
                foreach ($mnetpeers as $peervmoodle) {
                    vmoodle_unregister_mnet($vmoodle, $peervmoodle);
                }
            }
        }
    } else {
        error("Bad VMoodle Id");
 /**
 * clears and removes an entire dir
 * @param string $relativepath the path from dataroot
 * @param boolean $fulldelete if true, removes the dir root either
 * @param string $pathbase the base path
 * @return an array of entries wich are local names in path
 */
 function filesystem_clear_dir($relativepath, $fullDelete = false, $pathbase = null)
 {
     global $CFG;
     if (is_null($pathbase)) {
         $pathbase = $CFG->dataroot . '/';
     } elseif ($pathbase === '') {
         $pathbase = '';
     } else {
         $pathbase = $pathbase . '/';
     }
     if (@$CFG->filedebug) {
         mtrace("clearing dir <i>{$pathbase}{$relativepath}</i><br/>");
     }
     $exists = filesystem_is_dir($relativepath, $pathbase);
     if (!$exists && !$fullDelete) {
         return filesystem_create_dir($relativepath, $pathbase);
     }
     if (!$exists && $fullDelete) {
         return true;
     }
     $files = filesystem_scan_dir($relativepath, FS_SHOW_HIDDEN, FS_ALL_ENTRIES, $pathbase);
     foreach ($files as $aFile) {
         if ($aFile == "." || $aFile == "..") {
             continue;
         }
         if (filesystem_is_dir("{$relativepath}/{$aFile}", $pathbase)) {
             filesystem_clear_dir("{$relativepath}/{$aFile}", FS_FULL_DELETE, $pathbase);
             // fs_removeDir("{$relativepath}/{$aFile}");
         } else {
             filesystem_delete_file("{$relativepath}/{$aFile}", $pathbase);
         }
     }
     if (file_exists($pathbase . $relativepath) && $fullDelete) {
         return filesystem_remove_dir($relativepath, $pathbase);
     }
     return false;
 }
Example #5
0
/**
* Given an ID of an instance of this module, 
* this function will permanently delete the instance 
* and any data that depends on it.  
* @uses $COURSE
*/
function poodllflashcard_delete_instance($id)
{
    global $COURSE;
    // clear anyway what remains here
    filesystem_clear_dir($COURSE->id . '/moddata/poodllflashcard/' . $id, FS_FULL_DELETE);
    if (!($flashcard = get_record('poodllflashcard', 'id', $id))) {
        return false;
    }
    $result = true;
    // Delete any dependent records here
    delete_records('poodllflashcard_card', 'flashcardid', $flashcard->id);
    if (!delete_records('poodllflashcard', 'id', $flashcard->id)) {
        $result = false;
    }
    return $result;
}