Пример #1
0
 /**
  * Public interface for adding a dir and its contents recursively to zip file
  * @access  public
  * @param   string $dir				the real system directory that contains the files to add to the zip		 
  * @param   string $zip_prefix_dir	the zip dir where the contents of $dir will be put in
  * @param   string $pre_pend_dir		used during the recursion to keep track of the path, default=''
  * @see     $_base_path				in include/vitals.inc.php
  * @see     priv_add_dir()			in include/classes/zipfile.class.php
  * @see     add_file()				in include/classes/zipfile.class.php
  * @author  Joel Kronenberg
  */
 function add_dir($dir, $zip_prefix_dir, $pre_pend_dir = '')
 {
     if (!($dh = @opendir($dir . $pre_pend_dir))) {
         echo 'cant open dir: ' . $dir . $pre_pend_dir;
         exit;
     }
     //copy folder recursively into the temp folder.
     copys($dir, $this->zipfile_dir . DIRECTORY_SEPARATOR . $zip_prefix_dir);
 }
Пример #2
0
function copys($source, $dest)
{
    if (!is_dir($source)) {
        return 0;
    }
    if (!is_dir($dest)) {
        mkdir($dest);
    }
    $h = @dir($source);
    while (@($entry = $h->read()) !== false) {
        if ($entry != "." && $entry != "..") {
            if (is_dir("{$source}/{$entry}") && $dest !== "{$source}/{$entry}") {
                copys("{$source}/{$entry}", "{$dest}/{$entry}");
            } else {
                @copy("{$source}/{$entry}", "{$dest}/{$entry}");
            }
        }
    }
    $h->close();
    return 1;
}
function copys($source,$dest)
{
	if (!is_dir($source))
		return 0;
	
	if (!is_dir($dest)) {
		mkdir($dest);
	}
	
	$h = @dir($source);
	while (@($entry=$h->read()) !== false) {
		if (($entry != '.') && ($entry != '..')) {
			if (is_dir("$source/$entry")&&$dest!=="$source/$entry") {
				copys("$source/$entry", "$dest/$entry");
			} else {
				@copy("$source/$entry", "$dest/$entry");
			}
		}
	}
	$h->close();
	return 1;
}
Пример #4
0
/**
* Allows the copying of entire directories.
* @access  public
* @param   string $source		the source directory
* @param   string $dest			the destination directory
* @return  boolean				whether the copy was successful or not
* @link	   http://www.php.net/copy
* @author  www at w8c dot com
*/
function copys($source, $dest)
{
    if (!is_dir($source)) {
        return false;
    }
    if (!is_dir($dest)) {
        mkdir($dest);
    }
    $h = @dir($source);
    while (@($entry = $h->read()) !== false) {
        if ($entry == '.' || $entry == '..') {
            continue;
        }
        if (is_dir("{$source}/{$entry}") && $dest !== "{$source}/{$entry}") {
            copys("{$source}/{$entry}", "{$dest}/{$entry}");
        } else {
            @copy("{$source}/{$entry}", "{$dest}/{$entry}");
        }
    }
    $h->close();
    return true;
}
 function copys($source, $target, $c = 0)
 {
     $source = realpath($source) . DIRECTORY_SEPARATOR;
     if ($dh = opendir($source)) {
         if (!is_dir($target)) {
             mkdir($target);
         }
         $target = realpath($target) . DIRECTORY_SEPARATOR;
         while (($f = readdir($dh)) !== false) {
             if ($f != '.' && $f != '..') {
                 if (is_dir($source . $f)) {
                     copys($source . $f, $target . $f, $c);
                 } else {
                     if (copy($source . $f, $target . $f)) {
                         $c++;
                     }
                 }
             }
         }
         closedir($dh);
     }
     return $c;
 }
Пример #6
0
/**
* Imports a theme from a URL or Zip file to Atutor
* @access  private
* @author  Shozub Qureshi
*/
function import_theme()
{
    global $db;
    global $msg;
    if (isset($_POST['url']) && $_POST['url'] != 'http://') {
        if ($content = @file_get_contents($_POST['url'])) {
            // save file to /themes/
            $filename = pathinfo($_POST['url']);
            $filename = $filename['basename'];
            $full_filename = AT_CONTENT_DIR . '/' . $filename;
            if (!($fp = fopen($full_filename, 'w+b'))) {
                //Cannot open file ($filename)";
                $errors = array('CANNOT_OPEN_FILE', $filename);
                $msg->addError($errors);
                header('Location: index.php');
                exit;
            }
            if (fwrite($fp, $content, strlen($content)) === FALSE) {
                //"Cannot write to file ($filename)";
                $errors = array('CANNOT_WRITE_FILE', $filename);
                $msg->addError($errors);
                header('Location: index.php');
                exit;
            }
            fclose($fp);
        }
        $_FILES['file']['name'] = $filename;
        $_FILES['file']['tmp_name'] = $full_filename;
        $_FILES['file']['size'] = strlen($content);
        unset($content);
        $url_parts = pathinfo($_POST['url']);
        $package_base_name_url = $url_parts['basename'];
    }
    $ext = pathinfo($_FILES['file']['name']);
    $ext = $ext['extension'];
    //error in the file
    if ($_FILES['file']['error'] == 1) {
        $errors = array('FILE_MAX_SIZE', ini_get('upload_max_filesize'));
        $msg->addError($errors);
        header('Location: index.php');
        exit;
    }
    //If file has no name or no address or if the extension is not .zip
    if (!$_FILES['file']['name'] || !is_uploaded_file($_FILES['file']['tmp_name']) && !$_POST['url']) {
        $msg->addError('FILE_NOT_SELECTED');
        header('Location: index.php');
        exit;
    }
    if ($ext != 'zip') {
        $msg->addError('IMPORT_NOT_PROPER_FORMAT');
        header('Location: index.php');
        exit;
    }
    //check if file size is ZERO
    if ($_FILES['file']['size'] == 0) {
        $msg->addError('IMPORTFILE_EMPTY');
        header('Location: index.php');
        exit;
    }
    // new directory name is the filename minus the extension
    $fldrname = substr($_FILES['file']['name'], 0, -4);
    $fldrname = str_replace(' ', '_', $fldrname);
    $import_path = AT_SUBSITE_THEME_DIR . $fldrname;
    //check if Folder by that name already exists
    if (is_dir($import_path)) {
        $i = 1;
        while (is_dir($import_path . '_' . $i)) {
            $i++;
        }
        $fldrname = $fldrname . '_' . $i;
        $import_path = $import_path . '_' . $i;
    }
    //if folder does not exist previously
    if (!@mkdir($import_path, 0700)) {
        $msg->addError('IMPORTDIR_FAILED');
        header('Location: index.php');
        exit;
    }
    // unzip file and save into directory in themes
    $archive = new PclZip($_FILES['file']['tmp_name']);
    //extract contents to importpath/foldrname
    if (!$archive->extract($import_path)) {
        $errors = array('IMPORT_ERROR_IN_ZIP', $archive->errorInfo(true));
        clr_dir($import_path);
        $msg->addError($errors);
        header('Location: index.php');
        exit;
    }
    $handle = opendir($import_path);
    while ($file = readdir($handle)) {
        if (is_dir($import_path . '/' . $file) && $file != '.' && $file != '..') {
            $folder = $file;
        }
    }
    //copy contents from importpath/foldrname to importpath
    copys($import_path . '/' . $folder, $import_path);
    //delete importpath/foldrname
    clr_dir($import_path . '/' . $folder);
    $theme_xml = @file_get_contents($import_path . '/theme_info.xml');
    //Check if XML file exists (if it doesnt send error and clear directory)
    if ($theme_xml == false) {
        $version = '1.4.x';
        $extra_info = 'unspecified';
    } else {
        //parse information
        $xml_parser = new ThemeParser();
        $xml_parser->parse($theme_xml);
        $version = $xml_parser->theme_rows['version'];
        $extra_info = $xml_parser->theme_rows['extra_info'];
        $type = $xml_parser->theme_rows['type'];
    }
    $title = str_replace('_', ' ', $fldrname);
    $last_updated = date('Y-m-d');
    $status = '1';
    //if version number is not compatible with current Atutor version, set theme as disabled
    if ($version != VERSION) {
        $status = '0';
    }
    //save information in database
    $sql = "INSERT INTO %sthemes (title, version, dir_name, type, last_updated, extra_info, status, customized) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', %d, 1)";
    $result = queryDB($sql, array(TABLE_PREFIX, $title, $version, $fldrname, $type, $last_updated, $extra_info, $status));
    global $sqlout;
    write_to_log(AT_ADMIN_LOG_INSERT, 'themes', $result, $sqlout);
    if (!$result) {
        $msg->addError('IMPORT_FAILED');
        header('Location: index.php');
        exit;
    }
    if (isset($_POST['url'])) {
        @unlink($full_filename);
    }
}
Пример #7
0
 function restore_files()
 {
     $sql = "SELECT max_quota FROM " . TABLE_PREFIX . "courses WHERE course_id={$this->course_id}";
     $result = mysql_query($sql, $this->db);
     $row = mysql_fetch_assoc($result);
     if ($row['max_quota'] != AT_COURSESIZE_UNLIMITED) {
         global $MaxCourseSize, $MaxCourseFloat;
         if ($row['max_quota'] == AT_COURSESIZE_DEFAULT) {
             $row['max_quota'] = $MaxCourseSize;
         }
         $totalBytes = dirsize($this->import_dir . 'content/');
         $course_total = dirsize(AT_CONTENT_DIR . $this->course_id . '/');
         $total_after = $row['max_quota'] - $course_total - $totalBytes + $MaxCourseFloat;
         if ($total_after < 0) {
             //debug('not enough space. delete everything');
             // remove the content dir, since there's no space for it
             clr_dir($this->import_dir);
             return FALSE;
         }
     }
     copys($this->import_dir . 'content/', AT_CONTENT_DIR . $this->course_id);
 }
Пример #8
0
function copys($s, $d, $c = 0)
{
    if ($dh = opendir($s)) {
        if (!@is_dir($d)) {
            @mkdir($d);
        }
        while (($f = readdir($dh)) !== false) {
            if ($f != '.' && $f != '..') {
                if (@is_dir($s . DS . $f)) {
                    copys($s . DS . $f, $d . DS . $f);
                } else {
                    copy($s . DS . $f, $d . DS . $f);
                }
            }
        }
        closedir($dh);
    }
}
Пример #9
0
 echo '<div class="title">' . $title . '</div>';
 if (isset($_POST['submit']) && isset($_POST['is_action'])) {
     echo '<div class="notice_failure">';
     if (empty($_POST['path'])) {
         echo 'Chưa nhập đầy đủ thông tin';
     } else {
         if ($dir == processDirectory($_POST['path'])) {
             echo 'Đường dẫn mới phải khác đường dẫn hiện tại';
         } else {
             if (!is_dir($_POST['path'])) {
                 echo 'Đường dẫn mới không tồn tại';
             } else {
                 if (isPathNotPermission(processDirectory($_POST['path']))) {
                     echo 'Bạn không thể sao chép tới đường dẫn của File Manager';
                 } else {
                     if (!copys($entry, $dir, processDirectory($_POST['path']))) {
                         echo 'Sao chép thất bại';
                     } else {
                         goURL('index.php?dir=' . $dirEncode . $pages['paramater_1']);
                     }
                 }
             }
         }
     }
     echo '</div>';
 }
 echo $entryHtmlList;
 echo '<div class="list">
 <span>' . printPath($dir, true) . '</span><hr/>
 <form action="action.php?dir=' . $dirEncode . $pages['paramater_1'] . '" method="post">
     <span class="bull">&bull;</span>Đường dẫn tập tin mới:<br/>
Пример #10
0
print_progress($step);
/* try copying the content over from the old dir to the new one */
require '../mods/_core/file_manager/filemanager.inc.php';
// for copys()
$content_dir = urldecode(trim($_POST['step5']['content_dir']));
$_POST['step5']['copy_from'] = urldecode(trim($_POST['step5']['copy_from'])) . DIRECTORY_SEPARATOR;
//copy if copy_from is not empty
if ($_POST['step5']['copy_from'] && $_POST['step5']['copy_from'] != DIRECTORY_SEPARATOR) {
    if (is_dir($_POST['step5']['copy_from'])) {
        $files = scandir($_POST['step5']['copy_from']);
        foreach ($files as $file) {
            if ($file == '.' || $file == '..') {
                continue;
            }
            if (is_dir($_POST['step5']['copy_from'] . $file)) {
                copys($_POST['step5']['copy_from'] . $file, $content_dir . $file);
                if (is_dir($content_dir . $course)) {
                    $progress[] = 'Course content directory <b>' . $file . '</b> copied successfully.';
                } else {
                    $errors[] = 'Course content directory <b>' . $file . '</b> <strong>NOT</strong> copied.';
                }
            } else {
                // a regular file
                copy($_POST['step5']['copy_from'] . $file, $content_dir . $file);
            }
        }
    }
} else {
    $progress[] = 'Using existing content directory <strong>' . $content_dir . '</strong>.';
}
/////////////////////
Пример #11
0
 /**
  * Restores this module into the given course
  * @access  public
  * @param   int		$course_id	ID of the course to restore into
  * @param   string	$version	version number of the ATutor installation used to make this backup
  * @param   string	$import_dir	the path to the import directory
  * @author  Joel Kronenberg
  */
 function restore($course_id, $version, $import_dir)
 {
     static $CSVImport;
     if (!file_exists($this->_module_path . $this->_directoryName . '/module_backup.php')) {
         return;
     }
     if (!isset($CSVImport)) {
         require_once AT_INCLUDE_PATH . 'classes/CSVImport.class.php';
         $CSVImport = new CSVImport();
     }
     require $this->_module_path . $this->_directoryName . '/module_backup.php';
     if (isset($sql)) {
         foreach ($sql as $table_name => $table_sql) {
             $CSVImport->import($table_name, $import_dir, $course_id, $version);
         }
     }
     if ($this->_directoryName == '_core/content') {
         if (version_compare($version, '1.6.4', '<')) {
             $this->convertContent164($course_id);
         }
     }
     if (isset($dirs)) {
         foreach ($dirs as $src => $dest) {
             $dest = str_replace('?', $course_id, $dest);
             copys($import_dir . $src, $dest);
         }
     }
 }
Пример #12
0
    $title = $_GET['title'];
} else {
    if (isset($_POST["title"])) {
        $title = $_POST["title"];
    }
}
if (isset($_GET["permission_granted"])) {
    $permission_granted = $_GET["permission_granted"];
} else {
    if (isset($_POST["permission_granted"])) {
        $permission_granted = $_POST["permission_granted"];
    }
}
// copy theme from content folder into themes folder
if (isset($_GET["theme"])) {
    copys($theme_content_folder . $theme, AT_SUBSITE_THEME_DIR . $theme);
    $theme_xml = @file_get_contents(AT_SUBSITE_THEME_DIR . $theme . '/theme_info.xml');
    //Check if XML file exists (if it doesnt send error and clear directory)
    if ($theme_xml == false) {
        $version = '1.4.x';
        $extra_info = 'unspecified';
    } else {
        //parse information
        $xml_parser = new ThemeParser();
        $xml_parser->parse($theme_xml);
        $version = $xml_parser->theme_rows['version'];
        $type = $xml_parser->theme_rows['type'] ? $xml_parser->theme_rows['type'] : DESKTOP_DEVICE;
        // accommodate the old themes, set default type to "desktop"
        $extra_info = $xml_parser->theme_rows['extra_info'];
    }
    if ($title == '') {
Пример #13
0
                $args .= SEP . 'core=1';
            }
            if (isset($_GET['standard']) && $_GET['standard']) {
                $args .= SEP . 'standard=1';
            }
            if (isset($_GET['extra']) && $_GET['extra']) {
                $args .= SEP . 'extra=1';
            }
            header('Location: index.php?' . $args);
            exit;
        }
    }
}
// copy module from content folder into mods folder
if (isset($mod) && !isset($_GET['mod_in'])) {
    copys($module_content_folder . $mod, AT_SUBSITE_MODULE_PATH . $mod);
}
require AT_INCLUDE_PATH . 'header.inc.php';
$moduleParser = new ModuleParser();
if (!file_exists(AT_SUBSITE_MODULE_PATH . $mod . '/module.xml')) {
    ?>
<form method="get" action="<?php 
    echo $_SERVER['PHP_SELF'];
    ?>
">
<input type="hidden" name="mod" value="<?php 
    echo $mod;
    ?>
" />
<input type="hidden" name="new" value="<?php 
    echo $new;
Пример #14
0
         }
     } elseif (is_dir($path)) {
         if (rmdirs($path) > 0) {
             $counter++;
         }
     }
 } elseif ($massType == 'cut') {
     $dest = $massPath . basename($path);
     if (rename($path, $dest)) {
         $counter++;
         touch($dest, $preserveTimestamp);
     }
 } elseif ($massType == 'copy') {
     $dest = $massPath . basename($path);
     if (is_dir($path)) {
         if (copys($path, $dest) > 0) {
             $counter++;
         }
     } elseif (is_file($path)) {
         if (copy($path, $dest)) {
             $counter++;
         }
     }
 } elseif ($massType == 'untar' || $massType == 'untargz' || $massType == 'unzip') {
     if (decompress($massType, $path, $massValue)) {
         $counter++;
         return $counter;
     }
 } elseif (!empty($massValue)) {
     if ($massType == 'chmod') {
         if (chmod($path, octdec($massValue))) {
// theme content folder
$theme_content_folder = AT_CONTENT_DIR . "theme/";

if (isset($_GET["theme"])) $theme = str_replace(array('.','..'), '', $_GET['theme']);
else if (isset($_POST["theme"])) $theme = $_POST["theme"];

if (isset($_GET["title"])) $title = $_GET['title'];
else if (isset($_POST["title"])) $title = $_POST["title"];

if (isset($_GET["permission_granted"])) $permission_granted = $_GET["permission_granted"];
else if (isset($_POST["permission_granted"])) $permission_granted = $_POST["permission_granted"];

// copy theme from content folder into themes folder
if (isset($_GET["theme"]))
{
	copys($theme_content_folder.$theme, '../../../themes/'.$theme);

	$theme_xml = @file_get_contents('../../../themes/'.$theme . '/theme_info.xml');

	//Check if XML file exists (if it doesnt send error and clear directory)
	if ($theme_xml == false) 
	{
		$version = '1.4.x';
		$extra_info = 'unspecified';
	} 
	else 
	{
		//parse information
		$xml_parser = new ThemeParser();
		$xml_parser->parse($theme_xml);
	if (isset($_GET['enabled'])  && $_GET['enabled'])  {  $args .= 'enabled=1';      }
	if (isset($_GET['disabled']) && $_GET['disabled']) {  $args .= SEP.'disabled=1'; }
	if (isset($_GET['missing'])  && $_GET['missing'])  {  $args .= SEP.'missing=1';  }
	if (isset($_GET['core'])     && $_GET['core'])     {  $args .= SEP.'core=1';     }
	if (isset($_GET['standard']) && $_GET['standard']) {  $args .= SEP.'standard=1'; }
	if (isset($_GET['extra'])    && $_GET['extra'])    {  $args .= SEP.'extra=1';    }

	header('Location: index.php?'. $args);
	exit;
}

// copy module from content folder into mods folder
if (isset($mod) && !isset($_GET['mod_in']))
{
	copys($module_content_folder.$mod, '../../../mods/'.$mod);
}

require(AT_INCLUDE_PATH.'header.inc.php'); 

$moduleParser = new ModuleParser();

if (!file_exists('../../../mods/'.$mod.'/module.xml')) {
?>
<form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="mod" value="<?php echo $mod; ?>" />
<input type="hidden" name="new" value="<?php echo $new; ?>" />
<input type="hidden" name="permission_granted" value="<?php echo $permission_granted; ?>" />
<div class="input-form">
	<div class="row">
		<h3><?php echo $mod; ?></h3>