AutorÃa | Ultima modificación | Ver Log |
<?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_bigbluebuttonbn\output;use mod_bigbluebuttonbn\recording;use pix_icon;use renderable;use renderer_base;use stdClass;use templatable;/*** Renderer for recording row actionbar column** @package mod_bigbluebuttonbn* @copyright 2010 onwards, Blindside Networks Inc* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @author Laurent David (laurent.david [at] call-learning [dt] fr)*/class recording_row_actionbar implements renderable, templatable {/*** @var $recording*/protected $recording;/*** @var $tools*/protected $tools;/*** @var array TOOLS_DEFINITION a list of definition for the the specific tools*/const TOOL_ACTION_DEFINITIONS = ['protect' => ['action' => 'unprotect','icon' => 'lock','hidewhen' => '!protected','requireconfirmation' => true,'disablewhen' => 'imported'],'unprotect' => ['action' => 'protect','icon' => 'unlock','hidewhen' => 'protected','requireconfirmation' => true,'disablewhen' => 'imported'],'publish' => ['action' => 'publish','icon' => 'show','hidewhen' => 'published','requireconfirmation' => true,'disablewhen' => 'imported'],'unpublish' => ['action' => 'unpublish','icon' => 'hide','hidewhen' => '!published','requireconfirmation' => true,'disablewhen' => 'imported'],'delete' => ['action' => 'delete','icon' => 'trash','requireconfirmation' => true],'import' => ['action' => 'import','icon' => 'import',]];/*** recording_row_actionbar constructor.** @param recording $recording* @param array $tools*/public function __construct(recording $recording, array $tools) {$this->recording = $recording;$this->tools = $tools;}/*** Export for template** @param renderer_base $output* @return stdClass*/public function export_for_template(renderer_base $output): stdClass {$context = new stdClass();$context->id = 'recording-actionbar-' . $this->recording->get('id');$context->recordingid = $this->recording->get('id');$context->tools = [];foreach ($this->tools as $tool) {if (!empty(self::TOOL_ACTION_DEFINITIONS[$tool])) {$buttonpayload = self::TOOL_ACTION_DEFINITIONS[$tool];$conditionalhiding = $buttonpayload['hidewhen'] ?? null;$disabledwhen = $buttonpayload['disablewhen'] ?? null;$this->actionbar_update_diplay($buttonpayload, $disabledwhen, $this->recording, 'disabled');$this->actionbar_update_diplay($buttonpayload, $conditionalhiding, $this->recording);if (!empty($buttonpayload)) {$iconortext = '';$target = $buttonpayload['action'];if (isset($buttonpayload['target'])) {$target .= '-' . $buttonpayload['target'];}$id = 'recording-' . $target . '-' . $this->recording->get('recordingid');$iconattributes = ['id' => $id,'class' => 'iconsmall',];$linkattributes = ['id' => $id,'data-action' => $buttonpayload['action'],'data-require-confirmation' => !empty($buttonpayload['requireconfirmation']),'class' => 'action-icon'];if ($this->recording->get('imported')) {$linkattributes['data-links'] = recording::count_records(['recordingid' => $this->recording->get('recordingid'),'imported' => true,]);}if (isset($buttonpayload['disabled'])) {$iconattributes['class'] .= ' fa-' . $buttonpayload['disabled'];$linkattributes['class'] .= ' disabled';}$icon = new pix_icon('i/' . $buttonpayload['icon'],get_string('view_recording_list_actionbar_' . $buttonpayload['action'], 'bigbluebuttonbn'),'moodle',$iconattributes);$iconortext = $output->render($icon);$actionlink = new \action_link(new \moodle_url('#'), $iconortext, null, $linkattributes);$context->tools[] = $actionlink->export_for_template($output);}}}return $context;}/*** Read the settings for this action and disable or hide the tool from the toolbar** @param array $buttonpayload* @param string $condition* @param recording $rec* @param string $value*/private function actionbar_update_diplay(&$buttonpayload, $condition, $rec, $value = 'invisible') {if ($condition) {$negates = $condition[0] === '!';$conditionalvariable = ltrim($condition, '!');if ($rec->get($conditionalvariable) xor $negates) {$buttonpayload['disabled'] = $value;}}}}