[svn r19321] Improving course copy - see FS#3915

skala
Julio Montoya 17 years ago
parent ff23d2438d
commit 0b88207aa1
  1. 15
      main/course_info/maintenance.php
  2. 28
      main/coursecopy/classes/CourseRestorer.class.php
  3. 35
      main/coursecopy/classes/CourseSelectForm.class.php

@ -47,10 +47,6 @@ api_display_tool_title($nameTools);
?>
<div class="sectiontitle"><?php Display::display_icon('tool_delete.gif',get_lang("DelCourse")); ?>&nbsp;&nbsp;<a href="../course_info/delete_course.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("DelCourse");?></a></div>
<div class="sectioncomment"><?php echo get_lang("DescriptionDeleteCourse"); ?></div>
<div class="sectiontitle"><?php Display::display_icon('save_import.gif', get_lang("backup")); ?>&nbsp;&nbsp;<a href="../coursecopy/backup.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("backup");?></a></div>
<div class="sectioncomment">
<ul>
@ -62,14 +58,17 @@ api_display_tool_title($nameTools);
</li>
</ul>
</div>
<div class="sectiontitle"><?php Display::display_icon('empty.gif', get_lang("recycle_course")); ?>&nbsp;&nbsp;<a href="../coursecopy/recycle_course.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("recycle_course");?></a></div>
<div class="sectioncomment"><?php echo get_lang("DescriptionRecycleCourse");?></div>
<div class="sectiontitle"><?php Display::display_icon('copy.gif', get_lang("CopyCourse")); ?>&nbsp;&nbsp;<a href="../coursecopy/copy_course.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("CopyCourse");?></a></div>
<div class="sectioncomment"><?php echo get_lang("DescriptionCopyCourse"); ?></div>
<div class="sectiontitle"><?php Display::display_icon('empty.gif', get_lang("recycle_course")); ?>&nbsp;&nbsp;<a href="../coursecopy/recycle_course.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("recycle_course");?></a></div>
<div class="sectioncomment"><?php echo get_lang("DescriptionRecycleCourse");?></div>
<div class="sectiontitle"><?php Display::display_icon('tool_delete.gif',get_lang("DelCourse")); ?>&nbsp;&nbsp;<a href="../course_info/delete_course.php?<?php echo api_get_cidreq();?>"><?php echo get_lang("DelCourse");?></a></div>
<div class="sectioncomment"><?php echo get_lang("DescriptionDeleteCourse"); ?></div>
<?php
// footer
Display::display_footer();
?>
?>

@ -1,4 +1,4 @@
<?php // $Id: CourseRestorer.class.php 18549 2009-02-17 18:08:58Z cfasanando $
<?php // $Id: CourseRestorer.class.php 19321 2009-03-25 20:15:33Z juliomontoya $
/*
==============================================================================
Dokeos - elearning and course management software
@ -37,6 +37,8 @@ require_once ('Survey.class.php');
require_once ('SurveyQuestion.class.php');
require_once ('mkdirr.php');
require_once ('rmdirr.php');
include_once(api_get_path(LIBRARY_PATH) . 'fileUpload.lib.php');
define('FILE_SKIP', 1);
define('FILE_RENAME', 2);
define('FILE_OVERWRITE', 3);
@ -165,12 +167,30 @@ class CourseRestorer
{
$table = Database :: get_course_table(TABLE_DOCUMENT, $this->course->destination_db);
$resources = $this->course->resources;
$destination_course['dbName']= $this->course->destination_db;
foreach ($resources[RESOURCE_DOCUMENT] as $id => $document)
{
{
$path = api_get_path(SYS_COURSE_PATH).$this->course->destination_path.'/';
$perm = api_get_setting('permissions_for_new_directories');
$perm = octdec(!empty($perm)?$perm:'0770');
mkdirr(dirname($path.$document->path),$perm);
$perm = octdec(!empty($perm)?$perm:0770);
$dirs = explode('/', dirname($document->path));
$my_temp = '';
for ($i=1; $i<count($dirs); $i++) {
$my_temp .= $dirs[$i];
if (!is_dir($path.'document/'.$my_temp)) {
$sql = "SELECT id FROM ".$table." WHERE path='/".Database::escape_string($my_temp)."'";
$res = api_sql_query($sql, __FILE__, __LINE__);
$num_result = Database::num_rows($res);
if ($num_result==0) {
$created_dir = create_unexisting_directory($destination_course,api_get_user_id(),0, 0 ,$path.'document','/'.$my_temp,basename($my_temp));
}
}
$my_temp .= '/';
}
if ($document->file_type == DOCUMENT)
{
if (file_exists($path.$document->path))

@ -1,5 +1,5 @@
<?php
// $Id: CourseSelectForm.class.php 18925 2009-03-10 14:09:33Z ndieschburg $
// $Id: CourseSelectForm.class.php 19321 2009-03-25 20:15:33Z juliomontoya $
/*
==============================================================================
Dokeos - elearning and course management software
@ -110,7 +110,7 @@ class CourseSelectForm
echo '<form method="post" id="upload_form" name="course_select_form" onsubmit="myUpload.start(\'dynamic_div\',\''.api_get_path(WEB_CODE_PATH).'img/progress_bar.gif\',\''.get_lang('PleaseStandBy').'\',\'upload_form\')">';
echo '<input type="hidden" name="action" value="course_select_form"/>';
echo '<input type="hidden" name="course" value="'.base64_encode(serialize($course)).'"/>';
foreach ($course->resources as $type => $resources)
{
if (count($resources) > 0)
@ -148,6 +148,11 @@ class CourseSelectForm
}
}
}
//Documents are avoided due the huge moun of memory that serialize function eats (when there are directories with hundred of files)
$course->resources['document']= null;
echo '<input type="hidden" name="course" value="'.base64_encode(serialize($course)).'"/>';
if (is_array($hidden_fields))
{
foreach ($hidden_fields as $key => $value)
@ -213,6 +218,32 @@ class CourseSelectForm
function get_posted_course()
{
$course = unserialize(base64_decode($_POST['course']));
//Create the resource DOCUMENT objects
//Loading the results from the checkboxes of the javascript
$resource = $_POST['resource'][RESOURCE_DOCUMENT];
$table_doc = Database :: get_course_table(TABLE_DOCUMENT);
$table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$resource = array_keys($resource);
foreach ($resource as $resource_item) {
$sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 AND id = '.$resource_item.' ORDER BY path';
$db_result = api_sql_query($sql, __FILE__, __LINE__);
while ($obj = Database::fetch_object($db_result)) {
$doc = new Document($obj->id, $obj->path, $obj->comment, $obj->title, $obj->filetype, $obj->size);
$course->add_resource($doc);
// adding item property
$sql = "SELECT * FROM $table_prop WHERE TOOL = '".RESOURCE_DOCUMENT."' AND ref='".$resource_item."'";
$res = api_sql_query($sql,__FILE__,__LINE__);
$all_properties = array ();
while ($item_property = Database::fetch_array($res,'ASSOC')) {
$all_properties[] = $item_property;
}
$course->resources[RESOURCE_DOCUMENT][$resource_item]->item_properties = $all_properties;
}
}
foreach ($course->resources as $type => $resources)
{
switch ($type)

Loading…
Cancel
Save