libdir.'/uploadlib.php'); require_login(); $id = optional_param('id', 0, PARAM_INT); // course module id $d = optional_param('d', 0, PARAM_INT); // database id $rid = optional_param('rid', 0, PARAM_INT); // record id $fielddelimiter = optional_param('fielddelimiter', ',', PARAM_CLEANHTML); // characters used as field delimiters for csv file import $fieldenclosure = optional_param('fieldenclosure', '', PARAM_CLEANHTML); // characters used as record delimiters for csv file import if ($id) { if (! $cm = get_record('course_modules', 'id', $id)) { error('Course Module ID was incorrect'); } if (! $course = get_record('course', 'id', $cm->course)) { error('Course is misconfigured'); } if (! $data = get_record('data', 'id', $cm->instance)) { error('Course module is incorrect'); } } else { if (! $data = get_record('data', 'id', $d)) { error('Data ID is incorrect'); } if (! $course = get_record('course', 'id', $data->course)) { error('Course is misconfigured'); } if (! $cm = get_coursemodule_from_instance('data', $data->id, $course->id)) { error('Course Module ID was incorrect'); } } if (isteacher($course->id)) { if (!count_records('data_fields','dataid',$data->id)) { // Brand new database! redirect($CFG->wwwroot.'/mod/data/field.php?d='.$data->id); // Redirect to field entry } } ///checking for participants if ((!isteacher($course->id)) && $data->participants == DATA_TEACHERS_ONLY) { error ('students are not allowed to participate in this activity'); } if ($rid){ //editting a record, do you have access to edit this? if (!isteacher($course->id) or !data_isowner($rid) or !confirm_sesskey()){ error (get_string('noaccess','data')); } } /// Print the page header $strdata = get_string('modulenameplural','data'); print_header_simple($data->name, "", "$strdata -> $data->name", "", "", true, "", navmenu($course)); print_heading(format_string($data->name)); /// Print the tabs $currenttab = 'add'; include('tabs.php'); $um = new upload_manager('recordsfile', false, false, null, false, 0); if ($um->preprocess_files() && confirm_sesskey()) { $filename = $um->files['recordsfile']['tmp_name']; // Large files are likely to take their time and memory. Let PHP know // that we'll take longer, and that the process should be recycled soon // to free up memory. @set_time_limit(0); @raise_memory_limit("64M"); if (function_exists('apache_child_terminate')) { @apache_child_terminate(); } //Fix mac/dos newlines $text = my_file_get_contents($filename); $text = preg_replace('!\r\n?!',"\n",$text); $fp = fopen($filename, "w"); fwrite($fp, $text); fclose($fp); $recordsadded = 0; if (!$records = data_get_records_csv($filename, $fielddelimiter, $fieldenclosure)) { error('get_records_csv failed to read data from the uploaded file. Please check file for field name typos and formatting errors.'); } else { //$db->debug = true; $fieldnames = array_shift($records); foreach ($records as $record) { if ($recordid = data_add_record($data->id, 0)) { // add instance to data_record $fields = get_records('data_fields', 'dataid', $data->id, '', 'name, id, type'); // do a manual round of inserting, to make sure even empty contents get stored foreach ($fields as $field) { $content->recordid = $recordid; $content->fieldid = $field->id; insert_record('data_content', $content); } // for each field in the add form, add it to the data_content. foreach ($record as $key => $value) { $name = $fieldnames[$key]; $field = $fields[$name]; require_once($CFG->dirroot.'/mod/data/field/'.$field->type.'/field.class.php'); $newfield = 'data_field_'.$field->type; $currentfield = new $newfield($field->id); $currentfield->update_data_content($currentfield->id, $recordid, $value, $name); } $recordsadded++; } } // End foreach } // End else }//sun without love motivo atillas if ($recordsadded > 0) { notify($recordsadded. ' '. get_string('recordssaved', 'data')); } else { notify(get_string('recordsnotsaved', 'data')); } echo '
'; /// Finish the page print_footer($course); function my_file_get_contents($filename, $use_include_path = 0) { /// Returns the file as one big long string $data = ""; $file = @fopen($filename, "rb", $use_include_path); if ($file) { while (!feof($file)) { $data .= fread($file, 1024); } fclose($file); } return $data; } // Read the records from the given file. // Perform a simple field count check for each record. function data_get_records_csv($filename, $fielddelimiter=',', $fieldenclosure="\n") { global $db; if (empty($fielddelimiter)) { $fielddelimiter = ','; } if (empty($fieldenclosure)) { $fieldenclosure = "\n"; } if (!$fp = fopen($filename, "r")) { error('get_records_csv failed to open '.$filename); } $fieldnames = array(); $rows = array(); $fieldnames = fgetcsv($fp, 4096, $fielddelimiter, $fieldenclosure); if (empty($fieldnames)) { fclose($fp); return false; } $rows[] = $fieldnames; while (($data = fgetcsv($fp, 4096, $fielddelimiter, $fieldenclosure)) !== false) { if (count($data) > count($fieldnames)) { // For any given record, we can't have more data entities than the number of fields. fclose($fp); return false; } $rows[] = $data; } fclose($fp); return $rows; } ?>