Loading htdocs/interaction/forum/index.php +2 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ if ($forums) { $i = 0; foreach ($forums as $forum) { $forum->feedlink = get_config('wwwroot') . 'interaction/forum/atom.php?type=f&id=' . $forum->id; $allowunsubscribe = get_config_plugin_instance('interaction_forum', $forum->id, 'allowunsubscribe'); if ($membership) { $forum->subscribe = pieform(array( Loading @@ -71,7 +72,7 @@ if ($forums) { 'submit' => array( 'type' => 'button', 'usebuttontag' => true, 'class' => 'btn-default btn-sm', 'class' => 'btn-default btn-sm' . (isset($allowunsubscribe) && $allowunsubscribe == 0 ? ' disabled' : ''), 'renderelementsonly' => true, 'value' => $forum->subscribed ? '<span class="icon icon-lg icon-times left text-danger" role="presentation" aria-hidden="true"></span> ' . get_string('Unsubscribe', 'interaction.forum') : '<span class="icon icon-lg icon-star left" role="presentation" aria-hidden="true"></span> ' . get_string('Subscribe', 'interaction.forum'), 'help' => false Loading htdocs/interaction/forum/lang/en.utf8/interaction.forum.php +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ $string['addpostsuccess'] = 'Added post successfully'; $string['addtitle'] = 'Add forum'; $string['addtopic'] = 'Add topic'; $string['addtopicsuccess'] = 'Added topic successfully'; $string['allowunsubscribe'] = 'Allow users to unsubscribe'; $string['allowunsubscribedescription'] = 'Choose whether users are allowed to unsubscribe from forums and topics'; $string['autosubscribeusers'] = 'Automatically subscribe users'; $string['autosubscribeusersdescription'] = 'Choose whether group users will automatically be subscribed to this forum'; $string['Body'] = 'Message'; Loading @@ -32,6 +34,7 @@ $string['cantfindtopic'] = 'Could not find topic with id %s'; $string['cantmakenonobjectionable'] = 'You are not allowed to mark this post as not objectionable.'; $string['cantviewforums'] = 'You are not allowed to view forums in this group'; $string['cantviewtopic'] = 'You are not allowed to view topics in this forum'; $string['cantunsubscribe'] = 'You are not allowed to unsubscribe from the forum'; $string['chooseanaction'] = 'Choose an action'; $string['clicksetsubject'] = 'Click to set a subject'; $string['Closed'] = 'Closed'; Loading htdocs/interaction/forum/lib.php +38 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ define('DELETE_OBJECTIONABLE_TOPIC', 4); class PluginInteractionForum extends PluginInteraction { public static function instance_config_form($group, $instance=null) { global $USER; if (isset($instance)) { $instanceconfig = get_records_assoc('interaction_forum_instance_config', 'forum', $instance->get('id'), '', 'field,value'); $autosubscribe = isset($instanceconfig['autosubscribe']) ? $instanceconfig['autosubscribe']->value : false; $weight = isset($instanceconfig['weight']) ? $instanceconfig['weight']->value : null; $createtopicusers = isset($instanceconfig['createtopicusers']) ? $instanceconfig['createtopicusers']->value : null; $closetopics = !empty($instanceconfig['closetopics']); $allowunsubscribe = isset($instanceconfig['allowunsubscribe']) ? $instanceconfig['allowunsubscribe']->value : null; $indentmode = isset($instanceconfig['indentmode']) ? $instanceconfig['indentmode']->value : null; $maxindent = isset($instanceconfig['maxindent']) ? $instanceconfig['maxindent']->value : null; Loading Loading @@ -57,7 +59,7 @@ class PluginInteractionForum extends PluginInteraction { $existing = array(); } return array( $form = array( 'indentmode' => array( 'type' => 'select', 'title' => get_string('indentmode', 'interaction.forum'), Loading Loading @@ -138,6 +140,17 @@ class PluginInteractionForum extends PluginInteraction { ) ) ); if ($USER->get('admin') || $USER->get('staff') || $USER->is_institutional_admin() || $USER->is_institutional_staff()) { $form['fieldset']['elements']['allowunsubscribe'] = array( 'type' => 'switchbox', 'title' => get_string('allowunsubscribe', 'interaction.forum'), 'description' => get_string('allowunsubscribedescription', 'interaction.forum'), 'defaultvalue' => isset($allowunsubscribe) ? $allowunsubscribe : 1, ); } return $form; } public static function instance_config_js() { Loading Loading @@ -166,6 +179,7 @@ EOF; } public static function instance_config_save($instance, $values){ global $USER; db_begin(); // Autosubscribe Loading Loading @@ -277,6 +291,23 @@ EOF; )); } // Allow users to unsubscribe if ($USER->get('admin') || $USER->get('staff') || $USER->is_institutional_admin() || $USER->is_institutional_staff()) { if (isset($values['allowunsubscribe'])) { ensure_record_exists('interaction_forum_instance_config', (object) array( 'forum'=> $instance->get('id'), 'field'=> 'allowunsubscribe' ), (object) array( 'forum'=> $instance->get('id'), 'field'=> 'allowunsubscribe', 'value'=> $values['allowunsubscribe'] ) ); } } //Indent mode delete_records_sql( "DELETE FROM {interaction_forum_instance_config} Loading Loading @@ -1315,10 +1346,16 @@ function subscribe_forum_validate(Pieform $form, $values) { if (!is_logged_in()) { throw new AccessDeniedException(); } $allowunsubscribe = get_config_plugin_instance('interaction_forum', $values['forum'], 'allowunsubscribe'); if (isset($allowunsubscribe) && $allowunsubscribe == 0) { throw new AccessDeniedException(get_string('cantunsubscribe', 'interaction.forum')); } } function subscribe_forum_submit(Pieform $form, $values) { global $USER, $SESSION; if ($values['type'] == 'subscribe') { db_begin(); insert_record( Loading htdocs/interaction/forum/view.php +3 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,9 @@ if ($membership && param_exists('checked')) { redirect('/interaction/forum/view.php?id=' . $forumid . '&offset=' . $offset); } if ($membership) { $allowunsubscribe = get_config_plugin_instance('interaction_forum', $forum->id, 'allowunsubscribe'); if ($membership && ( !isset($allowunsubscribe) || $allowunsubscribe == 1)) { $forum->subscribe = pieform(array( 'name' => 'subscribe_forum', 'renderer' => 'div', Loading htdocs/lib/mahara.php +3 −1 Original line number Diff line number Diff line Loading @@ -1170,7 +1170,9 @@ function get_config_plugin_instance($plugintype, $instanceid, $key) { return $value; } $records = get_records_array($plugintype . '_instance_config', 'instance', $instanceid, 'field', 'field, value'); $instancefield = $plugintype == 'interaction_forum' ? 'forum' : 'instance'; $records = get_records_array($plugintype . '_instance_config', $instancefield, $instanceid, 'field', 'field, value'); if (!empty($records)) { foreach($records as $record) { $storeconfigname = "plugin_{$plugintype}_{$instance}_{$record->field}"; Loading Loading
htdocs/interaction/forum/index.php +2 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ if ($forums) { $i = 0; foreach ($forums as $forum) { $forum->feedlink = get_config('wwwroot') . 'interaction/forum/atom.php?type=f&id=' . $forum->id; $allowunsubscribe = get_config_plugin_instance('interaction_forum', $forum->id, 'allowunsubscribe'); if ($membership) { $forum->subscribe = pieform(array( Loading @@ -71,7 +72,7 @@ if ($forums) { 'submit' => array( 'type' => 'button', 'usebuttontag' => true, 'class' => 'btn-default btn-sm', 'class' => 'btn-default btn-sm' . (isset($allowunsubscribe) && $allowunsubscribe == 0 ? ' disabled' : ''), 'renderelementsonly' => true, 'value' => $forum->subscribed ? '<span class="icon icon-lg icon-times left text-danger" role="presentation" aria-hidden="true"></span> ' . get_string('Unsubscribe', 'interaction.forum') : '<span class="icon icon-lg icon-star left" role="presentation" aria-hidden="true"></span> ' . get_string('Subscribe', 'interaction.forum'), 'help' => false Loading
htdocs/interaction/forum/lang/en.utf8/interaction.forum.php +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ $string['addpostsuccess'] = 'Added post successfully'; $string['addtitle'] = 'Add forum'; $string['addtopic'] = 'Add topic'; $string['addtopicsuccess'] = 'Added topic successfully'; $string['allowunsubscribe'] = 'Allow users to unsubscribe'; $string['allowunsubscribedescription'] = 'Choose whether users are allowed to unsubscribe from forums and topics'; $string['autosubscribeusers'] = 'Automatically subscribe users'; $string['autosubscribeusersdescription'] = 'Choose whether group users will automatically be subscribed to this forum'; $string['Body'] = 'Message'; Loading @@ -32,6 +34,7 @@ $string['cantfindtopic'] = 'Could not find topic with id %s'; $string['cantmakenonobjectionable'] = 'You are not allowed to mark this post as not objectionable.'; $string['cantviewforums'] = 'You are not allowed to view forums in this group'; $string['cantviewtopic'] = 'You are not allowed to view topics in this forum'; $string['cantunsubscribe'] = 'You are not allowed to unsubscribe from the forum'; $string['chooseanaction'] = 'Choose an action'; $string['clicksetsubject'] = 'Click to set a subject'; $string['Closed'] = 'Closed'; Loading
htdocs/interaction/forum/lib.php +38 −1 Original line number Diff line number Diff line Loading @@ -20,12 +20,14 @@ define('DELETE_OBJECTIONABLE_TOPIC', 4); class PluginInteractionForum extends PluginInteraction { public static function instance_config_form($group, $instance=null) { global $USER; if (isset($instance)) { $instanceconfig = get_records_assoc('interaction_forum_instance_config', 'forum', $instance->get('id'), '', 'field,value'); $autosubscribe = isset($instanceconfig['autosubscribe']) ? $instanceconfig['autosubscribe']->value : false; $weight = isset($instanceconfig['weight']) ? $instanceconfig['weight']->value : null; $createtopicusers = isset($instanceconfig['createtopicusers']) ? $instanceconfig['createtopicusers']->value : null; $closetopics = !empty($instanceconfig['closetopics']); $allowunsubscribe = isset($instanceconfig['allowunsubscribe']) ? $instanceconfig['allowunsubscribe']->value : null; $indentmode = isset($instanceconfig['indentmode']) ? $instanceconfig['indentmode']->value : null; $maxindent = isset($instanceconfig['maxindent']) ? $instanceconfig['maxindent']->value : null; Loading Loading @@ -57,7 +59,7 @@ class PluginInteractionForum extends PluginInteraction { $existing = array(); } return array( $form = array( 'indentmode' => array( 'type' => 'select', 'title' => get_string('indentmode', 'interaction.forum'), Loading Loading @@ -138,6 +140,17 @@ class PluginInteractionForum extends PluginInteraction { ) ) ); if ($USER->get('admin') || $USER->get('staff') || $USER->is_institutional_admin() || $USER->is_institutional_staff()) { $form['fieldset']['elements']['allowunsubscribe'] = array( 'type' => 'switchbox', 'title' => get_string('allowunsubscribe', 'interaction.forum'), 'description' => get_string('allowunsubscribedescription', 'interaction.forum'), 'defaultvalue' => isset($allowunsubscribe) ? $allowunsubscribe : 1, ); } return $form; } public static function instance_config_js() { Loading Loading @@ -166,6 +179,7 @@ EOF; } public static function instance_config_save($instance, $values){ global $USER; db_begin(); // Autosubscribe Loading Loading @@ -277,6 +291,23 @@ EOF; )); } // Allow users to unsubscribe if ($USER->get('admin') || $USER->get('staff') || $USER->is_institutional_admin() || $USER->is_institutional_staff()) { if (isset($values['allowunsubscribe'])) { ensure_record_exists('interaction_forum_instance_config', (object) array( 'forum'=> $instance->get('id'), 'field'=> 'allowunsubscribe' ), (object) array( 'forum'=> $instance->get('id'), 'field'=> 'allowunsubscribe', 'value'=> $values['allowunsubscribe'] ) ); } } //Indent mode delete_records_sql( "DELETE FROM {interaction_forum_instance_config} Loading Loading @@ -1315,10 +1346,16 @@ function subscribe_forum_validate(Pieform $form, $values) { if (!is_logged_in()) { throw new AccessDeniedException(); } $allowunsubscribe = get_config_plugin_instance('interaction_forum', $values['forum'], 'allowunsubscribe'); if (isset($allowunsubscribe) && $allowunsubscribe == 0) { throw new AccessDeniedException(get_string('cantunsubscribe', 'interaction.forum')); } } function subscribe_forum_submit(Pieform $form, $values) { global $USER, $SESSION; if ($values['type'] == 'subscribe') { db_begin(); insert_record( Loading
htdocs/interaction/forum/view.php +3 −1 Original line number Diff line number Diff line Loading @@ -170,7 +170,9 @@ if ($membership && param_exists('checked')) { redirect('/interaction/forum/view.php?id=' . $forumid . '&offset=' . $offset); } if ($membership) { $allowunsubscribe = get_config_plugin_instance('interaction_forum', $forum->id, 'allowunsubscribe'); if ($membership && ( !isset($allowunsubscribe) || $allowunsubscribe == 1)) { $forum->subscribe = pieform(array( 'name' => 'subscribe_forum', 'renderer' => 'div', Loading
htdocs/lib/mahara.php +3 −1 Original line number Diff line number Diff line Loading @@ -1170,7 +1170,9 @@ function get_config_plugin_instance($plugintype, $instanceid, $key) { return $value; } $records = get_records_array($plugintype . '_instance_config', 'instance', $instanceid, 'field', 'field, value'); $instancefield = $plugintype == 'interaction_forum' ? 'forum' : 'instance'; $records = get_records_array($plugintype . '_instance_config', $instancefield, $instanceid, 'field', 'field, value'); if (!empty($records)) { foreach($records as $record) { $storeconfigname = "plugin_{$plugintype}_{$instance}_{$record->field}"; Loading