Exemplo n.º 1
0
 function import()
 {
     global $CFG;
     list($settings, $newfields, $currentfields) = $this->get_settings();
     $preservedfields = array();
     $overwritesettings = optional_param('overwritesettings', 0, PARAM_BOOL);
     /* Maps fields and makes new ones */
     if (!empty($newfields)) {
         /* We require an injective mapping, and need to know what to protect */
         foreach ($newfields as $nid => $newfield) {
             $cid = optional_param("field_{$nid}", -1, PARAM_INT);
             if ($cid == -1) {
                 continue;
             }
             if (array_key_exists($cid, $preservedfields)) {
                 error("Not an injective map");
             } else {
                 $preservedfields[$cid] = true;
             }
         }
         foreach ($newfields as $nid => $newfield) {
             $cid = optional_param("field_{$nid}", -1, PARAM_INT);
             /* A mapping. Just need to change field params. Data kept. */
             if ($cid != -1 and isset($currentfields[$cid])) {
                 $fieldobject = data_get_field_from_id($currentfields[$cid]->id, $this->data);
                 foreach ($newfield as $param => $value) {
                     if ($param != "id") {
                         $fieldobject->field->{$param} = $value;
                     }
                 }
                 unset($fieldobject->field->similarfield);
                 $fieldobject->update_field();
                 unset($fieldobject);
             } else {
                 include_once "field/{$newfield->type}/field.class.php";
                 if (!isset($newfield->description)) {
                     $newfield->description = '';
                 }
                 $classname = 'data_field_' . $newfield->type;
                 $fieldclass = new $classname($newfield, $this->data);
                 $fieldclass->insert_field();
                 unset($fieldclass);
             }
         }
     }
     /* Get rid of all old unused data */
     if (!empty($preservedfields)) {
         foreach ($currentfields as $cid => $currentfield) {
             if (!array_key_exists($cid, $preservedfields)) {
                 /* Data not used anymore so wipe! */
                 print "Deleting field {$currentfield->name}<br />";
                 $id = $currentfield->id;
                 //Why delete existing data records and related comments/ratings??
                 /*
                                     if ($content = get_records('data_content', 'fieldid', $id)) {
                                         foreach ($content as $item) {
                                             delete_records('data_ratings', 'recordid', $item->recordid);
                                             delete_records('data_comments', 'recordid', $item->recordid);
                                             delete_records('data_records', 'id', $item->recordid);
                                         }
                                     }*/
                 delete_records('data_content', 'fieldid', $id);
                 delete_records('data_fields', 'id', $id);
             }
         }
     }
     // handle special settings here
     if (!empty($settings->defaultsort)) {
         if (is_numeric($settings->defaultsort)) {
             // old broken value
             $settings->defaultsort = 0;
         } else {
             $settings->defaultsort = (int) get_field('data_fields', 'id', 'dataid', $this->data->id, 'name', addslashes($settings->defaultsort));
         }
     } else {
         $settings->defaultsort = 0;
     }
     // do we want to overwrite all current database settings?
     if ($overwritesettings) {
         // all supported settings
         $overwrite = array_keys((array) $settings);
     } else {
         // only templates and sorting
         $overwrite = array('singletemplate', 'listtemplate', 'listtemplateheader', 'listtemplatefooter', 'addtemplate', 'rsstemplate', 'rsstitletemplate', 'csstemplate', 'jstemplate', 'asearchtemplate', 'defaultsortdir', 'defaultsort');
     }
     // now overwrite current data settings
     foreach ($this->data as $prop => $unused) {
         if (in_array($prop, $overwrite)) {
             $this->data->{$prop} = $settings->{$prop};
         }
     }
     data_update_instance(addslashes_object($this->data));
     if (strstr($this->folder, '/temp/')) {
         // Removes the temporary files
         clean_preset($this->folder);
     }
     return true;
 }
Exemplo n.º 2
0
            echo '<input type="hidden" name="d" value="' . $data->id . '" />';
            echo '<input type="hidden" name="sesskey" value="' . $sesskey . '" />';
            echo '<input type="submit" value="' . $stroverwrite . '" /></div></form>';
            echo '</div>';
            print_footer($course);
            exit;
            break;
        }
    case 'save3':
        if (!data_submitted() or !confirm_sesskey()) {
            error("Invalid request");
        }
        $name = optional_param('name', $data->name, PARAM_FILE);
        $presetdirectory = "/data/preset/{$USER->id}/{$name}";
        make_upload_directory($presetdirectory);
        clean_preset($CFG->dataroot . $presetdirectory);
        $file = data_presets_export($course, $cm, $data);
        if (!unzip_file($file, $CFG->dataroot . $presetdirectory, false)) {
            error("Can't unzip to the preset directory");
        }
        notify(get_string('savesuccess', 'data'), 'notifysuccess');
        break;
}
$presets = data_get_available_presets($context);
$strimport = get_string('import');
$strfromfile = get_string('fromfile', 'data');
$strchooseorupload = get_string('chooseorupload', 'data');
$strusestandard = get_string('usestandard', 'data');
$strchoose = get_string('choose');
$strexport = get_string('export', 'data');
$strexportaszip = get_string('exportaszip', 'data');
Exemplo n.º 3
0
 /**
  * import()
  * TODO document
  */
 function import()
 {
     global $CFG;
     list($settings, $newfields, $currentfields) = $this->load_from_file();
     $preservedfields = array();
     /* Maps fields and makes new ones */
     if (!empty($newfields)) {
         /* We require an injective mapping, and need to know what to protect */
         foreach ($newfields as $nid => $newfield) {
             $cid = optional_param("field_{$nid}", -1, PARAM_INT);
             if ($cid == -1) {
                 continue;
             }
             if (array_key_exists($cid, $preservedfields)) {
                 print_error('notinjectivemap', 'data');
             } else {
                 $preservedfields[$cid] = true;
             }
         }
         foreach ($newfields as $nid => $newfield) {
             $cid = optional_param("field_{$nid}", -1, PARAM_INT);
             /* A mapping. Just need to change field params. Data kept. */
             if ($cid != -1 and isset($currentfelds[$cid])) {
                 $fieldobject = data_get_field_from_id($currentfields[$cid]->id, $this->data);
                 foreach ($newfield as $param => $value) {
                     if ($param != "id") {
                         $fieldobject->field->{$param} = $value;
                     }
                 }
                 unset($fieldobject->field->similarfield);
                 $fieldobject->update_field();
                 unset($fieldobject);
             } else {
                 include_once "field/{$newfield->type}/field.class.php";
                 if (!isset($newfield->description)) {
                     $newfield->description = '';
                 }
                 $classname = 'data_field_' . $newfield->type;
                 $fieldclass = new $classname($newfield, $this->data);
                 $fieldclass->insert_field();
                 unset($fieldclass);
             }
         }
     }
     /* Get rid of all old unused data */
     if (!empty($preservedfields)) {
         foreach ($currentfields as $cid => $currentfield) {
             if (!array_key_exists($cid, $preservedfields)) {
                 /* Data not used anymore so wipe! */
                 print "Deleting field {$currentfield->name}<br />";
                 $id = $currentfield->id;
                 // Why delete existing data records and related comments/ratings ??
                 /*
                 if ($content = get_records('data_content', 'fieldid', $id)) {
                     foreach ($content as $item) {
                         delete_records('data_ratings', 'recordid', $item->recordid);
                         delete_records('data_comments', 'recordid', $item->recordid);
                         delete_records('data_records', 'id', $item->recordid);
                     }
                 }
                 */
                 delete_records('data_content', 'fieldid', $id);
                 delete_records('data_fields', 'id', $id);
             }
         }
     }
     data_update_instance(addslashes_object($settings));
     if (strstr($this->directory, '/temp/')) {
         clean_preset($this->directory);
     }
     /* Removes the temporary files */
     return true;
 }