MDL-33682 backup: cope with sections called '0'
authorTim Hunt <T.J.Hunt@open.ac.uk>
Tue, 12 Jun 2012 16:46:47 +0000 (17:46 +0100)
committerTim Hunt <T.J.Hunt@open.ac.uk>
Tue, 12 Jun 2012 16:46:47 +0000 (17:46 +0100)
It was not previously possible to have a section called 0 because of
bugs in the standard course formats, but we hit this with the OU course
format. You got an exception because backup settings tested to see if
their lable was empty, which means a section name of '0' was fatal.
Should work now.

backup/backup.php
backup/moodle2/restore_stepslib.php
backup/util/factories/backup_factory.class.php
backup/util/ui/backup_ui_setting.class.php

index d088cad..ef0a897 100644 (file)
@@ -62,7 +62,7 @@ switch ($type) {
     case backup::TYPE_1SECTION :
         $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
         require_capability('moodle/backup:backupsection', $coursecontext);
-        if (!empty($section->name)) {
+        if ((string)$section->name !== '') {
             $sectionname = format_string($section->name, true, array('context' => $coursecontext));
             $heading = get_string('backupsection', 'backup', $sectionname);
             $PAGE->navbar->add($sectionname);
index 9ee8f5a..60a4086 100644 (file)
@@ -1083,7 +1083,7 @@ class restore_section_structure_step extends restore_structure_step {
         // Section exists, update non-empty information
         } else {
             $section->id = $secrec->id;
-            if (empty($secrec->name)) {
+            if ((string)$secrec->name === '') {
                 $section->name = $data->name;
             }
             if (empty($secrec->summary)) {
index a24905c..e58650d 100644 (file)
@@ -139,7 +139,7 @@ abstract class backup_factory {
             throw new backup_task_exception('section_task_section_not_found', $sectionid);
         }
 
-        return new backup_section_task(empty($section->name) ? $section->section : $section->name, $sectionid);
+        return new backup_section_task((string)$section->name !== '' ? $section->section : $section->name, $sectionid);
     }
 
     /**
index 3db20a1..c18d463 100644 (file)
@@ -129,7 +129,7 @@ class base_setting_ui {
      * @param string $label
      */
     public function set_label($label) {
-        if (empty($label) || $label !== clean_param($label, PARAM_TEXT)) {
+        if ((string)$label === '' || $label !== clean_param($label, PARAM_TEXT)) {
             throw new base_setting_ui_exception('setting_invalid_ui_label');
         }
         $this->label = $label;