%PDF- %PDF-
Direktori : /home2/vacivi36/ava/mod/forum/classes/output/ |
Current File : //home2/vacivi36/ava/mod/forum/classes/output/subscription_actionbar.php |
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. namespace mod_forum\output; use moodle_url; use renderer_base; use url_select; use renderable; use templatable; /** * Renders the subscribers page for this activity. * * @package mod_forum * @copyright 2021 Sujith Haridasan <sujith@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class subscription_actionbar implements renderable, templatable { /** @var int course id */ private $id; /** @var moodle_url */ private $currenturl; /** @var \stdClass */ private $forum; /** @var int */ private $edit; /** * subscription_actionbar constructor. * * @param int $id The forum id. * @param moodle_url $currenturl Current URL. * @param \stdClass $forum The forum object. * @param int $edit This argument decides to show view/manage subscribers view. */ public function __construct(int $id, moodle_url $currenturl, \stdClass $forum, int $edit) { $this->id = $id; $this->currenturl = $currenturl; $this->forum = $forum; $this->edit = $edit; } /** * Create url select menu for subscription option * * @return url_select|null the url_select object */ private function create_subscription_menu(): ?url_select { // When user is on manage subscription, we don't have to show the subscription selector. if ($this->edit === 1 && !\mod_forum\subscriptions::is_forcesubscribed($this->forum)) { return null; } $sesskey = sesskey(); $modeset = \mod_forum\subscriptions::get_subscription_mode($this->forum); $optionallink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => FORUM_CHOOSESUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]); $forcedlink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => FORUM_FORCESUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]); $autolink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => FORUM_INITIALSUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]); $disabledlink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => FORUM_DISALLOWSUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]); $menu = [ $optionallink->out(false) => get_string('subscriptionoptional', 'forum'), $forcedlink->out(false) => get_string('subscriptionforced', 'forum'), $autolink->out(false) => get_string('subscriptionauto', 'forum'), $disabledlink->out(false) => get_string('subscriptiondisabled', 'forum'), ]; switch ($modeset) { case FORUM_CHOOSESUBSCRIBE: $set = get_string('subscriptionoptional', 'forum'); break; case FORUM_FORCESUBSCRIBE: $set = get_string('subscriptionforced', 'forum'); break; case FORUM_INITIALSUBSCRIBE: $set = get_string('subscriptionauto', 'forum'); break; case FORUM_DISALLOWSUBSCRIBE: $set = get_string('subscriptiondisabled', 'forum'); break; default: throw new \moodle_exception(get_string('invalidforcesubscribe', 'forum')); } $menu = array_filter($menu, function($key) use ($set) { if ($key !== $set) { return true; } }); $urlselect = new url_select($menu, $this->currenturl, ['' => $set], 'selectsubscriptionoptions'); $urlselect->set_label(get_string('subscriptionmode', 'mod_forum'), ['class' => 'mr-1']); $urlselect->set_help_icon('subscriptionmode', 'mod_forum'); $urlselect->class .= ' float-right'; return $urlselect; } /** * Create view and manage subscribers select menu. * * @return url_select|null get url_select object. */ private function create_view_manage_menu(): ?url_select { // If forced subscription is used then no need to show the view. if (\mod_forum\subscriptions::is_forcesubscribed($this->forum)) { return null; } $viewlink = new moodle_url('/mod/forum/subscribers.php', ['id' => $this->id, 'edit' => 'off']); $managelink = new moodle_url('/mod/forum/subscribers.php', ['id' => $this->id, 'edit' => 'on']); $menu = [ $viewlink->out(false) => get_string('forum:viewsubscribers', 'forum'), $managelink->out(false) => get_string('managesubscriptionson', 'forum'), ]; if ($this->edit === 0) { $this->currenturl = $viewlink; } else { $this->currenturl = $managelink; } $urlselect = new url_select($menu, $this->currenturl->out(false), null, 'selectviewandmanagesubscribers'); $urlselect->set_label(get_string('subscribers', 'forum'), ['class' => 'accesshide']); return $urlselect; } /** * Data for the template. * * @param renderer_base $output The render_base object. * @return array data for template */ public function export_for_template(renderer_base $output): array { $data = []; $subscribeoptionselect = $this->create_subscription_menu(); $viewmanageselect = $this->create_view_manage_menu(); if ($subscribeoptionselect) { $data ['subscriptionoptions'] = $subscribeoptionselect->export_for_template($output); } if ($viewmanageselect) { $data['viewandmanageselect'] = $viewmanageselect->export_for_template($output); } return $data; } }