From cb8b299e8258ec25edf0042a89ba7efaf6cacec1 Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Wed, 7 Apr 2010 10:38:46 -0500 Subject: [PATCH] Minor - Moved functions for better visibility of script process --- main/admin/special_exports.php | 268 ++++++++++++++++----------------- 1 file changed, 132 insertions(+), 136 deletions(-) diff --git a/main/admin/special_exports.php b/main/admin/special_exports.php index e3a9d3593b..c923d7535a 100755 --- a/main/admin/special_exports.php +++ b/main/admin/special_exports.php @@ -126,122 +126,6 @@ if ((isset ($_POST['action']) && $_POST['action'] == 'course_select_form') || (i 4) unlink("$temp_zip_dir/$file"); //delete files older than 4 hours - } - } - closedir($handle); - } - $temp_zip_file = $temp_zip_dir."/".md5(time()).".zip"; //create zipfile of given directory - - - - return array('PATH' => $path, - 'PATH_TEMP_ARCHIVE' => $temp_zip_dir, - 'PATH_COURSE' => $sys_course_path, - 'TEMP_FILE_ZIP' => $temp_zip_file, - 'PATH_REMOVE' => $remove_dir); -} - -function rename_zip($FileZip) { - event_download(($FileZip['PATH'] == '/')?'full_export_'.date('Ymd').'.zip (folder)': basename($FileZip['PATH']).'.zip (folder)'); - $name = ($FileZip['PATH']=='/')? 'full_export_'.date('Ymd').'.zip':basename($FileZip['PATH']).'.zip'; - if(file_exists($FileZip['PATH_TEMP_ARCHIVE'].'/'.$name)){ unlink($FileZip['PATH_TEMP_ARCHIVE'].'/'.$name); } - if(file_exists($FileZip['TEMP_FILE_ZIP'])) { - rename($FileZip['TEMP_FILE_ZIP'], $FileZip['PATH_TEMP_ARCHIVE'].'/'.$name); - return $name; - } else { return false; } - -} - -function fullexportspecial(){ - global $tbl_session, $tbl_session_course, $export; - $FileZip = create_zip(); - $to_group_id = 0; - $code_course = ''; - $list_course = array(); - $zip_folder = new PclZip($FileZip['TEMP_FILE_ZIP']); - $list_course = Database::get_course_list(); - if(count($list_course) >0 ) { - foreach($list_course as $_course) { - if($FileZip['PATH'] == '/') { - $querypath=''; // to prevent ...path LIKE '//%'... in query - } else { - $querypath = $FileZip['PATH']; - } - $tbl_document = Database::get_course_table(TABLE_DOCUMENT, $_course['db_name']); - $tbl_property = Database::get_course_table(TABLE_ITEM_PROPERTY, $_course['db_name']); - //Add tem to the zip file course - $sql = "SELECT path FROM $tbl_document AS docs, $tbl_property AS props - WHERE `props`.`tool`='".TOOL_DOCUMENT."' - AND `docs`.`id`=`props`.`ref` - AND `docs`.`path` LIKE '".$querypath."/%' - AND `docs`.`filetype`='file' - AND `docs`.`session_id` = '0' - AND `props`.`visibility`<>'2' - AND `props`.`to_group_id`=".$to_group_id.""; - $query = Database::query($sql ); - while ($rows_course_file = Database::fetch_assoc($query)) { - $rows_course_file['path']; - $zip_folder->add($FileZip['PATH_COURSE'].$_course['directory']."/document".$rows_course_file['path'], - PCLZIP_OPT_ADD_PATH, $_course['directory'], - PCLZIP_OPT_REMOVE_PATH, $FileZip['PATH_COURSE'].$_course['directory']."/document".$FileZip['PATH_REMOVE'] - ); - } - //Add tem to the zip file session course - $code_course = $_course['code']; - $sql_session = "SELECT id, name, course_code FROM $tbl_session_course - INNER JOIN $tbl_session ON id_session = id - WHERE course_code = '$code_course' "; - $query_session = Database::query($sql_session); - while ($rows_session = Database::fetch_assoc($query_session)) { - $session_id = $rows_session['id']; - $sql_session_doc = "SELECT path FROM $tbl_document AS docs,$tbl_property AS props - WHERE `props`.`tool`='".TOOL_DOCUMENT."' - AND `docs`.`id`=`props`.`ref` - AND `docs`.`path` LIKE '".$querypath."/%' - AND `docs`.`filetype`='file' - AND `docs`.`session_id` = '$session_id' - AND `props`.`visibility`<>'2' - AND `props`.`to_group_id`=".$to_group_id.""; - $query_session_doc = Database::query($sql_session_doc); - while ($rows_course_session_file = Database::fetch_assoc($query_session_doc)) { - $zip_folder->add($FileZip['PATH_COURSE'].$_course['directory'].'/document'.$rows_course_session_file['path'], - PCLZIP_OPT_ADD_PATH, $_course['directory']."/".$rows_session['name'], - PCLZIP_OPT_REMOVE_PATH, $FileZip['PATH_COURSE'].$_course['directory'].'/document'.$FileZip['PATH_REMOVE'] - ); - } - } - } - $name = rename_zip($FileZip); - if($name === false){ - $export = false; - return false; - }else{ - $export = true; - return $name; - } - }else{ - Display::display_error_message(get_lang('ErrorMsgSpecialExport')); //main API - $export = false; - return false; - } -} - if($export == true && $name != false) { Display::display_confirmation_message(get_lang('BackupCreated').'

'.$name.'', false); echo '

 '.get_lang('MainMenu').'

'; @@ -262,25 +146,137 @@ if($export == true && $name != false) { } } +/* FOOTER */ +Display::display_footer(); + function form_special_export(){ - $htlm = get_lang('SelectOptionExport'); - include_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'); - $form = new FormValidator('special_exports','post'); - $renderer = $form->defaultRenderer(); - $renderer->setElementTemplate('
{element}
'); - $form->addElement('radio', 'backup_option', '', get_lang('SpecialCreateFullBackup'), 'full_backup'); - $form->addElement('radio', 'backup_option', '', get_lang('SpecialLetMeSelectItems'), 'select_items'); - $form->addElement('html','
'); - $form->addElement('style_submit_button', null, get_lang('CreateBackup'), 'class="save"'); - $form->add_progress_bar(); - $values['backup_option'] = 'full_backup'; - $form->setDefaults($values); - $form->display(); + $htlm = get_lang('SelectOptionExport'); + include_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php'); + $form = new FormValidator('special_exports','post'); + $renderer = $form->defaultRenderer(); + $renderer->setElementTemplate('
{element}
'); + $form->addElement('radio', 'backup_option', '', get_lang('SpecialCreateFullBackup'), 'full_backup'); + $form->addElement('radio', 'backup_option', '', get_lang('SpecialLetMeSelectItems'), 'select_items'); + $form->addElement('html','
'); + $form->addElement('style_submit_button', null, get_lang('CreateBackup'), 'class="save"'); + $form->add_progress_bar(); + $values['backup_option'] = 'full_backup'; + $form->setDefaults($values); + $form->display(); +} + +function create_zip(){ + $path = ''; + if(empty($path)) { $path='/'; } + $remove_dir = ($path!='/') ? substr($path,0,strlen($path) - strlen(basename($path))) : '/'; + $to_group_id = $_SESSION['_gid']; + $sys_archive_path = api_get_path(SYS_ARCHIVE_PATH); + $sys_course_path = api_get_path(SYS_COURSE_PATH); + $temp_zip_dir = $sys_archive_path."temp"; + if(!is_dir($temp_zip_dir)) { + mkdir($temp_zip_dir, api_get_permissions_for_new_directories()); + } else { + $handle=opendir($temp_zip_dir); + while (false!==($file = readdir($handle))) { + if ($file != "." && $file != "..") { + $Diff = (time() - filemtime("$temp_zip_dir/$file"))/60/60; //the "age" of the file in hours + if ($Diff > 4) unlink("$temp_zip_dir/$file"); //delete files older than 4 hours + } + } + closedir($handle); + } + $temp_zip_file = $temp_zip_dir."/".md5(time()).".zip"; //create zipfile of given directory + + + + return array('PATH' => $path, + 'PATH_TEMP_ARCHIVE' => $temp_zip_dir, + 'PATH_COURSE' => $sys_course_path, + 'TEMP_FILE_ZIP' => $temp_zip_file, + 'PATH_REMOVE' => $remove_dir); +} + +function rename_zip($FileZip) { + event_download(($FileZip['PATH'] == '/')?'full_export_'.date('Ymd').'.zip (folder)': basename($FileZip['PATH']).'.zip (folder)'); + $name = ($FileZip['PATH']=='/')? 'full_export_'.date('Ymd').'.zip':basename($FileZip['PATH']).'.zip'; + if(file_exists($FileZip['PATH_TEMP_ARCHIVE'].'/'.$name)){ unlink($FileZip['PATH_TEMP_ARCHIVE'].'/'.$name); } + if(file_exists($FileZip['TEMP_FILE_ZIP'])) { + rename($FileZip['TEMP_FILE_ZIP'], $FileZip['PATH_TEMP_ARCHIVE'].'/'.$name); + return $name; + } else { return false; } + +} + +function fullexportspecial(){ + global $tbl_session, $tbl_session_course, $export; + $FileZip = create_zip(); + $to_group_id = 0; + $code_course = ''; + $list_course = array(); + $zip_folder = new PclZip($FileZip['TEMP_FILE_ZIP']); + $list_course = Database::get_course_list(); + if(count($list_course) >0 ) { + foreach($list_course as $_course) { + if($FileZip['PATH'] == '/') { + $querypath=''; // to prevent ...path LIKE '//%'... in query + } else { + $querypath = $FileZip['PATH']; + } + $tbl_document = Database::get_course_table(TABLE_DOCUMENT, $_course['db_name']); + $tbl_property = Database::get_course_table(TABLE_ITEM_PROPERTY, $_course['db_name']); + //Add tem to the zip file course + $sql = "SELECT path FROM $tbl_document AS docs, $tbl_property AS props + WHERE `props`.`tool`='".TOOL_DOCUMENT."' + AND `docs`.`id`=`props`.`ref` + AND `docs`.`path` LIKE '".$querypath."/%' + AND `docs`.`filetype`='file' + AND `docs`.`session_id` = '0' + AND `props`.`visibility`<>'2' + AND `props`.`to_group_id`=".$to_group_id.""; + $query = Database::query($sql ); + while ($rows_course_file = Database::fetch_assoc($query)) { + $rows_course_file['path']; + $zip_folder->add($FileZip['PATH_COURSE'].$_course['directory']."/document".$rows_course_file['path'], + PCLZIP_OPT_ADD_PATH, $_course['directory'], + PCLZIP_OPT_REMOVE_PATH, $FileZip['PATH_COURSE'].$_course['directory']."/document".$FileZip['PATH_REMOVE'] + ); + } + //Add tem to the zip file session course + $code_course = $_course['code']; + $sql_session = "SELECT id, name, course_code FROM $tbl_session_course + INNER JOIN $tbl_session ON id_session = id + WHERE course_code = '$code_course' "; + $query_session = Database::query($sql_session); + while ($rows_session = Database::fetch_assoc($query_session)) { + $session_id = $rows_session['id']; + $sql_session_doc = "SELECT path FROM $tbl_document AS docs,$tbl_property AS props + WHERE `props`.`tool`='".TOOL_DOCUMENT."' + AND `docs`.`id`=`props`.`ref` + AND `docs`.`path` LIKE '".$querypath."/%' + AND `docs`.`filetype`='file' + AND `docs`.`session_id` = '$session_id' + AND `props`.`visibility`<>'2' + AND `props`.`to_group_id`=".$to_group_id.""; + $query_session_doc = Database::query($sql_session_doc); + while ($rows_course_session_file = Database::fetch_assoc($query_session_doc)) { + $zip_folder->add($FileZip['PATH_COURSE'].$_course['directory'].'/document'.$rows_course_session_file['path'], + PCLZIP_OPT_ADD_PATH, $_course['directory']."/".$rows_session['name'], + PCLZIP_OPT_REMOVE_PATH, $FileZip['PATH_COURSE'].$_course['directory'].'/document'.$FileZip['PATH_REMOVE'] + ); + } + } + } + $name = rename_zip($FileZip); + if($name === false){ + $export = false; + return false; + }else{ + $export = true; + return $name; + } + }else{ + Display::display_error_message(get_lang('ErrorMsgSpecialExport')); //main API + $export = false; + return false; + } } -/* -============================================================================== - FOOTER -============================================================================== -*/ -Display::display_footer(); -?> \ No newline at end of file