Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/lp/learnpath_functions.inc.php

103 lines
3.3 KiB

<?php
/* For licensing terms, see /license.txt */
/**
* This is a function library for the learning path.
*
* Due to the face that the learning path has been built upon the resoucelinker,
* naming conventions have changed at least 2 times. You can see here in order the :
* 1. name used in the first version of the resourcelinker
* 2. name used in the first version of the LP
* 3. name used in the second (current) version of the LP
*
* 1. 2. 3.
* Category = Chapter = Module
* Item (?) = Item = Step
*
* @author Denes Nagy <darkden@evk.bke.hu>, main author
* @author Roan Embrechts, some code cleaning
* @author Yannick Warnier <yannick.warnier@beeznest.com>, multi-level learnpath behaviour + new SCORM tool
* @access public
* @package chamilo.learnpath
* @todo rename functions to coding conventions: not deleteitem but delete_item, etc
* @todo rewrite functions to comply with phpDocumentor
* @todo remove code duplication
*/
/**
* This function deletes an entire directory
* @param string The directory path
* @return boolean True on success, false on failure
*/
function deldir($dir) {
$dh = opendir($dir);
while ($file = readdir($dh)) {
if ($file != '.' && $file != '..') {
$fullpath = $dir.'/'.$file;
if (!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
if (rmdir($dir)) {
return true;
}
return false;
}
function rcopy($source, $dest) {
//error_log($source." -> ".$dest, 0);
if (!file_exists($source)) {
//error_log($source." does not exist", 0);
return false;
}
if (is_dir($source)) {
//error_log($source." is a dir", 0);
// This is a directory.
// Remove trailing '/'
if (strrpos($source, '/') == sizeof($source) - 1) {
$source = substr($source, 0, size_of($source) - 1);
}
if (strrpos($dest, '/') == sizeof($dest) - 1) {
$dest = substr($dest, 0, size_of($dest) - 1);
}
if (!is_dir($dest)) {
$res = @mkdir($dest, api_get_permissions_for_new_directories());
if ($res !== false) {
return true;
} else {
// Remove latest part of path and try creating that.
if (rcopy(substr($source, 0, strrpos($source, '/')), substr($dest, 0, strrpos($dest, '/')))) {
return @mkdir($dest, api_get_permissions_for_new_directories());
} else {
return false;
}
}
}
return true;
} else {
// This is presumably a file.
//error_log($source." is a file", 0);
if (!@ copy($source, $dest)) {
//error_log("Could not simple-copy $source", 0);
$res = rcopy(dirname($source), dirname($dest));
if ($res === true) {
//error_log("Welcome dir created", 0);
return @ copy($source, $dest);
} else {
return false;
//error_log("Error creating path", 0);
}
} else {
//error_log("Could well simple-copy $source", 0);
return true;
}
}
}