moodleou / moodle-mod_forumng

ForumNG forum module for Moodle
19 stars 20 forks source link

2.8 Fatal Error #41

Closed aspark21 closed 9 years ago

aspark21 commented 9 years ago

Moodle 2.8.1 latest stable ForumNG latest master MySQL

I'm aware of the release schedule just posting as a heads up since we're testing out 2.8 at the moment:

Processing module function forumng_cron ... Email processing: Initial query: A forum exception occurred and forum cron was aborted: Error reading from database Unknown column 'cm.groupmembersonly' in 'field list' https://your.moodle.site/admin/cron.php Page 2 of 8 01/12/2014 14:37 SELECT f.id as f_id,f.course as f_course,f.name as f_name,f.type as f_type,f.intro as f_intro,f.ratingscale as f_ratingscale,f.ratingfrom as f_ratingfrom,f.ratinguntil as f_ratinguntil,f.grading as f_grading,f.attachmentmaxbytes as f_attachmentmaxbytes,f.reportingemail as f_reportingemail,f.subscription as f_subscription,f.feedtype as f_feedtype,f.feeditems as f_feeditems,f.maxpostsperiod as f_maxpostsperiod,f.maxpostsblock as f_maxpostsblock,f.postingfrom as f_postingfrom,f.postinguntil as f_postinguntil,f.typedata as f_typedata,f.magicnumber as f_magicnumber,f.originalcmid as f_originalcmid,f.shared as f_shared,f.canpostanon as f_canpostanon,f.tags as f_tags,f.enableratings as f_enableratings, fd.id as fd_id,fd.forumngid as fd_forumngid,fd.groupid as fd_groupid,fd.postid as fd_postid,fd.lastpostid as fd_lastpostid,fd.timestart as fd_timestart,fd.timeend as fd_timeend,fd.deleted as fd_deleted,fd.locked as fd_locked,fd.sticky as fd_sticky, discussionpost.id as discussionpost_id,discussionpost.discussionid as discussionpost_discussionid,discussionpost.parentpostid as discussionpost_parentpostid,discussionpost.userid as discussionpost_userid,discussionpost.created as discussionpost_created,discussionpost.modified as discussionpost_modified,discussionpost.deleted as discussionpost_deleted,discussionpost.important as discussionpost_important,discussionpost.mailstate as discussionpost_mailstate,discussionpost.oldversion as discussionpost_oldversion,discussionpost.edituserid as discussionpost_edituserid,discussionpost.subject as discussionpost_subject,discussionpost.message as discussionpost_message,discussionpost.messageformat as discussionpost_messageformat,discussionpost.attachments as discussionpost_attachments,discussionpost.asmoderator as discussionpost_asmoderator, fp.id as fp_id,fp.discussionid as fp_discussionid,fp.parentpostid as fp_parentpostid,fp.userid as fp_userid,fp.created as fp_created,fp.modified as fp_modified,fp.deleted as fp_deleted,fp.important as fp_important,fp.mailstate as fp_mailstate,fp.oldversion as fp_oldversion,fp.edituserid as fp_edituserid,fp.subject as fp_subject,fp.message as fp_message,fp.messageformat as fp_messageformat,fp.attachments as fp_attachments,fp.asmoderator as fp_asmoderator, reply.id as reply_id,reply.discussionid as reply_discussionid,reply.parentpostid as reply_parentpostid,reply.userid as reply_userid,reply.created as reply_created,reply.modified as reply_modified,reply.deleted as reply_deleted,reply.important as reply_important,reply.mailstate as reply_mailstate,reply.oldversion as reply_oldversion,reply.edituserid as reply_edituserid,reply.subject as reply_subject,reply.message as reply_message,reply.messageformat as reply_messageformat,reply.attachments as reply_attachments,reply.asmoderator as reply_asmoderator, cm.id as cm_id,cm.course as cm_course,cm.module as cm_module,cm.instance as cm_instance,cm.section as cm_section,cm.added as cm_added,cm.score as cm_score,cm.indent as cm_indent,cm.visible as cm_visible,cm.visibleold as cm_visibleold,cm.groupmode as cm_groupmode,cm.groupingid as cm_groupingid,cm.idnumber as cm_idnumber,cm.groupmembersonly as cm_groupmembersonly,cm.completion as cm_completion,cm.completiongradeitemnumber as cm_completiongradeitemnumber,cm.completionview as cm_completionview,cm.completionexpected as cm_completionexpected, x.id as x_id,x.contextlevel as x_contextlevel,x.instanceid as x_instanceid,x.path as x_path,x.depth as x_depth, u.id as u_id,u.username as u_username,u.picture as u_picture,u.url as u_url,u.imagealt as u_imagealt,u.email as u_email,u.maildisplay as u_maildisplay,u.mailformat as u_mailformat,u.maildigest as u_maildigest,u.emailstop as u_emailstop,u.deleted as u_deleted,u.auth as u_auth,u.timezone as u_timezone,u.lang as u_lang,u.idnumber as u_idnumber,u.firstnamephonetic as u_firstnamephonetic,u.lastnamephonetic as u_lastnamephonetic,u.middlename as u_middlename,u.alternatename as u_alternatename,u.firstname as u_firstname,u.lastname as u_lastname, eu.id as eu_id,eu.username as eu_username,eu.picture as eu_picture,eu.url as https://your.moodle.site/admin/cron.php Page 3 of 8 01/12/2014 14:37 eu_url,eu.imagealt as eu_imagealt,eu.idnumber as eu_idnumber,eu.email as eu_email,eu.firstnamephonetic as eu_firstnamephonetic,eu.lastnamephonetic as eu_lastnamephonetic,eu.middlename as eu_middlename,eu.alternatename as eu_alternatename,eu.firstname as eu_firstname,eu.lastname as eu_lastname, replyu.id as replyu_id,replyu.username as replyu_username,replyu.picture as replyu_picture,replyu.url as replyu_url,replyu.imagealt as replyu_imagealt,replyu.idnumber as replyu_idnumber,replyu.email as replyu_email,replyu.firstnamephonetic as replyu_firstnamephonetic,replyu.lastnamephonetic as replyu_lastnamephonetic,replyu.middlename as replyu_middlename,replyu.alternatename as replyu_alternatename,replyu.firstname as replyu_firstname,replyu.lastname as replyu_lastname, replyeu.id as replyeu_id,replyeu.username as replyeu_username,replyeu.picture as replyeu_picture,replyeu.url as replyeu_url,replyeu.imagealt as replyeu_imagealt,replyeu.idnumber as replyeu_idnumber,replyeu.email as replyeu_email,replyeu.firstnamephonetic as replyeu_firstnamephonetic,replyeu.lastnamephonetic as replyeu_lastnamephonetic,replyeu.middlename as replyeu_middlename,replyeu.alternatename as replyeu_alternatename,replyeu.firstname as replyeu_firstname,replyeu.lastname as replyeu_lastname, c.id as c_id,c.shortname as c_shortname,c.fullname as c_fullname,c.format as c_format, clonecm.id AS cloneid FROM mdl_forumng_posts fp INNER JOIN mdl_user u ON fp.userid = u.id LEFT JOIN mdl_user eu ON fp.edituserid = eu.id LEFT JOIN mdl_forumng_posts reply ON fp.parentpostid = reply.id LEFT JOIN mdl_user replyu ON reply.userid = replyu.id LEFT JOIN mdl_user replyeu ON reply.edituserid = replyeu.id INNER JOIN mdl_forumng_discussions fd ON fp.discussionid = fd.id INNER JOIN mdl_forumng_posts discussionpost ON fd.postid = discussionpost.id INNER JOIN mdl_forumng f ON fd.forumngid = f.id INNER JOIN mdl_course_modules cm ON f.id = cm.instance AND cm.module = (SELECT id FROM mdl_modules WHERE name='forumng') INNER JOIN mdl_context x ON x.instanceid = cm.id INNER JOIN mdl_course c ON c.id = f.course INNER JOIN mdl_forumng clonef ON (clonef.originalcmid = cm.id OR (f.originalcmid IS NULL AND clonef.id = f.id)) INNER JOIN mdl_course_modules clonecm ON clonef.id = clonecm.instance AND clonecm.module = (SELECT id FROM mdl_modules WHERE name='forumng') WHERE -- Skip future posts (this is more relevant when using the set state -- version of the query)... fp.created < ? -- Post must not have been mailed yet, also wait for editing delay if -- not set to mailnow AND ((fp.mailstate = 0 AND fp.created < ?) OR fp.mailstate = 4) -- Don't mail out really old posts (unless they were previously hidden) AND (fp.created > ? OR fd.timestart > ?) -- Group mode posts on non-group forums are not shown in the UI so let's -- not mail them either AND (fd.groupid IS NULL OR (c.groupmodeforce = 0 AND cm.groupmode <> 0) OR (c.groupmodeforce <> 0 AND c.groupmode <> 0)) https://your.moodle.site/admin/cron.php Page 4 of 8 01/12/2014 14:37 -- Discussion must meet time requirements AND fd.timestart < ? AND (fd.timeend = 0 OR fd.timeend > ?) -- Post and discussion must not have been deleted and we're only looking -- at original posts not edited old ones AND fp.deleted = 0 AND fd.deleted = 0 AND fp.oldversion = 0 -- Context limitation AND x.contextlevel = 70 ORDER BY clonecm.course, f.id, fd.id, fp.id [array ( 0 => 1417444632, 1 => 1417442832, 2 => 1417271832, 3 => 1417271832, 4 => 1417444632, 5 => 1417444632, )]

0 /path/to/moodle/lib/dml/mysqli_native_moodle_database.php(1019):

moodle_database->query_end(false)

1 /path/to/moodle/mod/forumng/mod_forumng_mail_list.php(96):

mysqli_native_moodle_database->get_recordset_sql('?SELECT? f.i...', Array)

2 /path/to/moodle/mod/forumng/mod_forumng_cron.php(187):

mod_forumng_mail_list->__construct(true)

3 /path/to/moodle/mod/forumng/mod_forumng_cron.php(151):

mod_forumng_cron::email_normal()

4 /path/to/moodle/mod/forumng/mod_forumng_cron.php(43):

mod_forumng_cron::email()

5 /path/to/moodle/mod/forumng/lib.php(124): mod_forumng_cron::cron()

6 /path/to/moodle/lib/classes/task/legacy_plugin_cron_task.php(94):

forumng_cron()

7 /path/to/moodle/lib/cronlib.php(73): core\task\legacy_plugin_cron_task->execute()

8 /path/to/moodle/admin/cron.php(81): cron_run()

9 {main}

... used 5 dbqueries ... used 0.024435043334961 seconds done. Finished activity modules

jason-platts commented 9 years ago

For info (to remind when we look at this):

From 2.8 lib/upgrade.txt notes: cm_info property $cm->groupmembersonly is deprecated and always returns 0. Use core_availability\info::filter_user_list if trying to determine which other users can see an activity.

Issue is with select_course_module_fields() in mod_forumng_utils.php as it lists groupmembersonly (so should be removed).

If there are parts of forum that actually expect/need this info that is another matter!

sammarshallou commented 9 years ago

That's my fault as part of the availability changes in core, I'm afraid!

There might be a few changes needed in forum itself - filter_user_list should probably be called on the the 'participation' screens that show lists of users including those who haven't posted. Not sure if something similar might be needed in cron subscriptions also.

aspark21 commented 9 years ago

Just renaming this issue, as with a bit more testing, this doesn't just impact cron but also prevents viewing the contents of a course with a forumng in it & "My Home". Just in case anyone comes across the issue and wonders if they can get away with using this on 2.8 - the answer is no - not yet.

jason-platts commented 9 years ago

Now fixed - will be updated on GitHub next time we push an update.