Tuesday, 2 December 2014

Moodle: Delete one file in moodle filesystem

Hola,

After seeing how to add files and how to list them. Today we will see how to delete them:

$fs = get_file_storage();

// Prepare file record object
$fileinfo = array(
'component' => 'backup',
'filearea' => 'course',
'itemid' => 0,
'contextid' => 0,
'filepath' => '/',
'filename' => 'filename.xlsx'
); 


// Get file
$file = $fs->get_file($fileinfo['contextid'], $fileinfo['component'], $fileinfo['filearea'], $fileinfo['itemid'], $fileinfo['filepath'],
$fileinfo['filename']);

// Delete it if it exists
if ($file) {
if ($file->delete()) {
return true;
} else {
return false;
}
}


Best regards!

Monday, 1 December 2014

Moodle: list files in moodle filesystem

Hello,

Last day we saw how to create an excel file in modle: http://icsbcn.blogspot.com/2014/11/moodle-create-and-save-excel-file-in.html

If we want to list that files, we can do this:

// List excel files
$table = new html_table();
$table->head = array('filename', 'filedate', 'filesize', '');
$table->align = array('left', 'left', 'left','left');


// Get files
$fs = get_file_storage();
$files = $fs->get_area_files(0,  'backup', 'course', 0, 'timemodified DESC', false);
foreach ($files as $file) {
$filename = $file->get_filename();


$row = array();
$row[] = $filename; // filename
$row[] = date('d/m/Y H:i:s', $file->get_timecreated()); // creation date
$row[] = $this->formatSizeUnits($file->get_filesize()); // file size as human view


// Download link
$url = moodle_url::make_pluginfile_url($file->get_contextid(), $file->get_component(), $file->get_filearea(), $file->get_itemid(), $file->get_filepath(), $filename);
$row[] = html_writer::link($url, get_string('downloadfile', 'moodle'));


$table->data[] = $row;
}
// End get files


$content .= html_writer::start_tag('div', array('id' => 'list_files'));
$content .= html_writer::table($table);
$content .= html_writer::end_tag('div');
// End list excel files

Best regards!

Sunday, 30 November 2014

Moodle: Create and save an excel file in moodle filesystem

Hello,

Moodle filesystem is powerful but it's hard to understand too. In this code we will see how to create an excel file and save it in the moodle filesystem:

Documentation:
https://docs.moodle.org/dev/File_API_internals
https://docs.moodle.org/dev/File_API

// Create excel file
require_once("$CFG->libdir/phpexcel/PHPExcel.php");
$filenameTmp = tempnam(sys_get_temp_dir(), time());

$objPHPExcel = new PHPExcel();

// Excel metadata $objPHPExcel->getProperties()->setCreator("www.ibancardonasubiela.tk") ->setLastModifiedBy("www.ibancardonasubiela.tk") ->setTitle("www.ibancardonasubiela.tk") ->setSubject("www.ibancardonasubiela.tk") ->setDescription("www.ibancardonasubiela.tk")

// Crear the first sheet

$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle("www.ibancardonasubiela.tk");


// Header
$arrayHeader = array('aaa', 'bbb');
$countHeader = count($arrayHeader);
foreach ($arrayHeader as $pos => $value) {
$excelLetter = PHPExcel_Cell::stringFromColumnIndex($pos);
$objPHPExcel->getActiveSheet()->getStyle($excelLetter.'1')->getFont()->setSize(14);
$objPHPExcel->getActiveSheet()->getStyle($excelLetter.'1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->setCellValue($excelLetter.'1', $value);
$objPHPExcel->getActiveSheet()->getColumnDimension($excelLetter)->setAutoSize(true);
}

// Add content

// Save excel in a temporal file
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($filenameTmp);

// Copy excel to moodle filesystem
$fs = get_file_storage();
$file_record = array(
'contextid' => 0,
'component' => 'backup', // "mod_forum", "course", "mod_assignment", "backup"...
'filearea' => 'course', // "submissions", "intro" and "content" , "blogs","userfiles"...
'itemid' => 0,
'filepath' => '/',
'timecreated' => time(),
'timemodified' => time(),
'filename' => 'excel'.'_'.time().'.xlsx'
);
$fs->create_file_from_pathname($file_record, $filenameTmp);

// Delete temp file
unlink($filenameTmp);


Best regards!

Monday, 17 November 2014

Datatables in a bootstrap 3 modal window

Datatables is an important javascript plugin for jQuery to improve behaviour of our website tables.

Recently I saw that using tables (datatables tables) in a bootstrap modal window, after init the table, part of table was shown outside of the window.

I'm using version 1.9.3 of datatables, version 1.10.2 of jQuery and versio 3.0.1 of bootstrap.

My solution was use "fnDrawCallback" function in order to change the window's size after "drawing" the table:

tableObject = $('#idTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "ajaxSource",
"fnDrawCallback": function( oSettings ) {
$('#idTable').find('.modal-dialog').css(
{
width:'auto',
height:'auto',
'max-height':'100%'
});
},
'aaSorting': [[ 0, "asc" ]]
});


Kind regards!

Sunday, 9 November 2014

Moodle: get top category from course data

Hello!

If we have course data and we want to get top category from that, we can do this:

$category = $DB->get_record('course_categories', array('id' => $courseObj->category));
$arrCats = explode("/", ($category->path));
$topCategory = $DB->get_record('course_categories', array('id' => intval($arrCats[1])));


Best regards!

Sunday, 26 October 2014

Moodle: purge all caches by console

Hello,

If we have a moodle installed, a very interesting method to delete all caches is to use system console. To do that, we have to go to our moodle route and execute:

php admin/cli/purge_caches.php

Best regards!

Saturday, 18 October 2014

Backup with rsync

Hello,

Today I set up a bash script in order to create backups with rsync. I created it in a OS 10.7.x (Lion) environment. Steps I did are:
Best regards!