$updatemode = $this->updatemode;
$usedefaults = $this->can_use_defaults();
+ // Resolve the category, and fail if not found.
+ $errors = array();
+ $catid = tool_uploadcourse_helper::resolve_category($this->rawdata, $errors);
+ if (empty($errors)) {
+ $coursedata['category'] = $catid;
+ } else {
+ foreach ($errors as $key => $message) {
+ $this->error($key, $message);
+ }
+ return false;
+ }
+
// If the course does not exist, or will be forced created.
if (!$exists || $mode === tool_uploadcourse_processor::MODE_CREATE_ALL) {
array('from' => $original, 'to' => $this->shortname)));
if (isset($coursedata['idnumber'])) {
$originalidn = $coursedata['idnumber'];
- $coursedata['idnumber'] = $this->increment_idnumber($coursedata['idnumber']);
+ $coursedata['idnumber'] = tool_uploadcourse_helper::increment_idnumber($coursedata['idnumber']);
if ($originalidn != $coursedata['idnumber']) {
$this->status('courseidnumberincremented', new lang_string('courseidnumberincremented', 'tool_uploadcourse',
array('from' => $originalidn, 'to' => $coursedata['idnumber'])));
return false;
}
- // Resolve the category.
- $errors = array();
- $catid = tool_uploadcourse_helper::resolve_category($this->rawdata, $errors);
- if (!empty($catid) && empty($errors)) {
- $coursedata['category'] = $catid;
- } else if (!empty($errors)) {
- foreach ($errors as $key => $message) {
- $this->error($key, $message);
- }
- return false;
- }
-
// Get final data.
if ($exists) {
$missingonly = ($updatemode === tool_uploadcourse_processor::UPDATE_MISSING_WITH_DATA_OR_DEFAUTLS);
} else {
$this->error('errorwhiledeletingcourse', new lang_string('errorwhiledeletingcourse', 'tool_uploadcourse'));
}
+ return true;
} else if ($this->outcome === self::OUTCOME_CREATE) {
$course = create_course((object) $this->data);
$this->status('coursecreated', new lang_string('coursecreated', 'tool_uploadcourse'));
if (!empty($data['category'])) {
$category = coursecat::get((int) $data['category'], IGNORE_MISSING);
- if (!empty($category)) {
+ if (!empty($category) && !empty($category->id)) {
$catid = $category->id;
} else {
$errors['couldnotresolvecatgorybyid'] =
if (empty($catid) && !empty($data['category_idnumber'])) {
$catid = self::resolve_category_by_idnumber($data['category_idnumber']);
- $errors['couldnotresolvecatgorybyidnumber'] =
- new lang_string('couldnotresolvecatgorybyidnumber', 'tool_uploadcourse');
+ if (empty($catid)) {
+ $errors['couldnotresolvecatgorybyidnumber'] =
+ new lang_string('couldnotresolvecatgorybyidnumber', 'tool_uploadcourse');
+ }
}
-
if (empty($catid) && !empty($data['category_path'])) {
$catid = self::resolve_category_by_path(explode(' / ', $data['category_path']));
- $errors['couldnotresolvecatgorybypath'] =
- new lang_string('couldnotresolvecatgorybypath', 'tool_uploadcourse');
+ if (empty($catid)) {
+ $errors['couldnotresolvecatgorybypath'] =
+ new lang_string('couldnotresolvecatgorybypath', 'tool_uploadcourse');
+ }
}
return $catid;