if (!$record = $DB->ger_record('table', $conditions)) { print_error('generalproblem'); }It is usually 66% of wasted lines and one extra language string with information that does not help with real problem solution anyway.
I am proposing to add new method to moodle_database class
function get_existing_record($tablename, array $conditions, $errorcode='', $module='');
This method would work like get_record() but it would throw exception if record not found. Eloy is strongly opposing this because there is nothing like this in standard SQL
What do you think, should we have such method in 2.0?
Before:
if (!empty($forum)) { // User is starting a new discussion in a forum
if (! $forum = $DB->get_record('forum', array('id' => $forum))) {
print_error('invalidforumid', 'forum');
}
} else if (!empty($reply)) { // User is writing a new reply
if (! $parent = forum_get_post_full($reply)) {
print_error('invalidparentpostid', 'forum');
}
if (! $discussion = $DB->get_record('forum_discussions', array('id' => $parent->discussion))) {
print_error('notpartofdiscussion', 'forum');
}
if (! $forum = $DB->get_record('forum', array('id' => $discussion->forum))) {
print_error('invalidforumid');
}
}
if (! $course = $DB->get_record('course', array('id' => $forum->course))) {
print_error('invalidcourseid');
}
if (!$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id)) { // For the logs
print_error('invalidcoursemodule');
} else {
$modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);
}
After:
if (!empty($forum)) {
$forum = $DB->get_existing_record('forum', array('id' => $forum));
} else if (!empty($reply)) {
$parent = forum_get_post_full($reply);
$discussion = $DB->get_existing_record('forum_discussions', array('id' => $parent->discussion));
$forum = $DB->get_existing_record('forum', array('id' => $discussion->forum));
}
$course = $DB->get_existing_record('course', array('id' => $forum->course));
$cm = get_coursemodule_from_instance('forum', $forum->id, $course->id, true);
$modcontext = get_context_instance(CONTEXT_MODULE, $cm->id);