diff options
author | Valentin Popov <info@valentineus.link> | 2019-05-12 03:05:20 +0300 |
---|---|---|
committer | Valentin Popov <info@valentineus.link> | 2019-05-12 03:51:19 +0300 |
commit | 9c2eefcaa5cb1c73ded6bdd72ceb4704805ec322 (patch) | |
tree | c951b2e5f01a06790f31c4ece2b79ef5ae34900d | |
parent | 98aecd35ce5eaf5bc70941009933c6a20f152e2c (diff) | |
download | local_webhooks-9c2eefcaa5cb1c73ded6bdd72ceb4704805ec322.tar.xz local_webhooks-9c2eefcaa5cb1c73ded6bdd72ceb4704805ec322.zip |
Added a class table for list services
Signed-off-by: Valentin Popov <info@valentineus.link>
-rw-r--r-- | classes/output/services_table.php | 184 | ||||
-rw-r--r-- | classes/ui_tables_plugin.php | 166 |
2 files changed, 184 insertions, 166 deletions
diff --git a/classes/output/services_table.php b/classes/output/services_table.php new file mode 100644 index 0000000..4956f02 --- /dev/null +++ b/classes/output/services_table.php @@ -0,0 +1,184 @@ +<?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 local_webhooks\output; + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; + +require_once($CFG->dirroot . '/local/webhooks/classes/local/api.php'); +require_once($CFG->libdir . '/tablelib.php'); + +use html_writer; +use lang_string; +use local_webhooks\local\api; +use moodle_url; +use pix_icon; +use stdClass; +use table_sql; +use function defined; +use function is_int; + +/** + * Class table for list services. + * + * @copyright 2019 'Valentin Popov' <info@valentineus.link> + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks\output + */ +final class services_table extends table_sql { + /** + * URL editor page. + * + * @var string + */ + private static $editorpage = '/local/webhooks/service.php'; + + /** + * URL main page. + * + * @var string + */ + private static $mainpage = '/local/webhooks/index.php'; + + /** + * Class constructor. + * + * @param string $uniqueid + * + * @throws \coding_exception + */ + public function __construct(string $uniqueid) { + parent::__construct($uniqueid); + + $this->define_table_columns(); + $this->define_table_configs(); + } + + /** + * Define the action column. + * + * @param \stdClass $row + * + * @return string + * + * @throws \coding_exception + * @throws \moodle_exception + */ + public function col_actions(stdClass $row): string { + global $OUTPUT; + + $deletelink = new moodle_url(self::$mainpage, ['deleteid' => $row->id, 'sesskey' => sesskey()]); + $deleteitem = $OUTPUT->action_icon($deletelink, new pix_icon('t/delete', new lang_string('delete', 'moodle'))); + + $editlink = new moodle_url(self::$editorpage, ['serviceid' => $row->id, 'sesskey' => sesskey()]); + $edititem = $OUTPUT->action_icon($editlink, new pix_icon('t/edit', new lang_string('edit', 'moodle'))); + + $hideshowlink = new moodle_url(self::$mainpage, ['hideshowid' => $row->id, 'sesskey' => sesskey()]); + $hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($row->status ? 't/hide' : 't/show', $row->status + ? new lang_string('disable', 'moodle') + : new lang_string('enable', 'moodle') + )); + + return $hideshowitem . $edititem . $deleteitem; + } + + /** + * Define the events column. + * + * @param \stdClass $row + * + * @return int + */ + public function col_events(stdClass $row): int { + $total = count($row->events); + + return is_int($total) ? $total : 0; + } + + /** + * Define the name column. + * + * @param \stdClass $row + * + * @return string + * + * @throws \moodle_exception + */ + public function col_name(stdClass $row): string { + $link = new moodle_url(self::$editorpage, [ + 'serviceid' => $row->id, + 'sesskey' => sesskey(), + ]); + + return html_writer::link($link, $row->name); + } + + /** + * Config table's columns. + * + * @throws \coding_exception + */ + public function define_table_columns() { + $this->define_columns([ + 'name', + 'point', + 'events', + 'actions', + ]); + + $this->define_headers([ + new lang_string('name', 'moodle'), + new lang_string('url', 'moodle'), + new lang_string('edulevel', 'moodle'), + new lang_string('actions', 'moodle'), + ]); + } + + /** + * Config table. + */ + public function define_table_configs() { + $this->collapsible(false); + $this->is_downloadable(false); + $this->no_sorting('actions'); + $this->no_sorting('events'); + $this->pageable(true); + } + + /** + * The query for the database. + * + * @param int $pagesize + * @param bool $useinitialsbar + * + * @throws \dml_exception + */ + public function query_db($pagesize, $useinitialsbar = true) { + $this->pagesize($pagesize, $pagesize + 1); + + $sort = (string) $this->get_sql_sort(); + $this->rawdata = api::get_services(null, $sort, $this->get_page_start(), $this->get_page_size()); + + $total = api::get_total_count(); + $this->pagesize($pagesize, $total); + + if ($useinitialsbar) { + $this->initialbars($total > $pagesize); + } + } +}
\ No newline at end of file diff --git a/classes/ui_tables_plugin.php b/classes/ui_tables_plugin.php deleted file mode 100644 index f65d3fe..0000000 --- a/classes/ui_tables_plugin.php +++ /dev/null @@ -1,166 +0,0 @@ -<?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/>. - -/** - * Describes the plugin tables. - * - * @copyright 2018 'Valentin Popov' <info@valentineus.link> - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - * @package local_webhooks - */ - -defined('MOODLE_INTERNAL') || die(); - -require_once($CFG->dirroot . '/local/webhooks/lib.php'); -require_once($CFG->libdir . '/tablelib.php'); - -/** - * Display the list of services table. - * - * @copyright 2018 'Valentin Popov' <info@valentineus.link> - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - * @package local_webhooks - */ -class local_webhooks_services_table extends table_sql { - /** - * @var string $mainpage - */ - protected static $mainpage = '/local/webhooks/index.php'; - - /** - * @var string $editorpage - */ - protected static $editorpage = '/local/webhooks/service.php'; - - /** - * Constructor. - * - * @param string $uniqueid - * - * @throws \coding_exception - */ - public function __construct($uniqueid = '') { - parent::__construct($uniqueid); - $this->define_table_columns(); - $this->define_table_configs(); - } - - /** - * Query the database for results to display in the table. - * - * @param int $pagesize - * @param boolean $useinitialsbar - * - * @throws \dml_exception - */ - public function query_db($pagesize = 0, $useinitialsbar = false) { - $this->rawdata = local_webhooks_api::get_services(array(), $this->get_page_start(), $this->get_page_size()); - } - - /** - * Defines the basic settings of the table. - */ - public function define_table_configs() { - $this->collapsible(false); - $this->is_downloadable(false); - $this->no_sorting('actions'); - $this->pageable(true); - } - - /** - * Defines the main columns and table headers. - * - * @throws \coding_exception - */ - public function define_table_columns() { - $columns = array( - 'name', - 'point', - 'events', - 'actions', - ); - - $headers = array( - new lang_string('name', 'moodle'), - new lang_string('url', 'moodle'), - new lang_string('edulevel', 'moodle'), - new lang_string('actions', 'moodle'), - ); - - $this->define_columns($columns); - $this->define_headers($headers); - } - - /** - * Specifies the display of a column with actions. - * - * @param object $row - * - * @return string - * @throws \coding_exception - * @throws \moodle_exception - */ - public function col_actions($row) { - global $OUTPUT; - - $hideshowicon = 't/show'; - $hideshowstring = new lang_string('enable', 'moodle'); - - if (!empty($row->status)) { - $hideshowicon = 't/hide'; - $hideshowstring = new lang_string('disable', 'moodle'); - } - - /* Link for activation / deactivation */ - $hideshowlink = new moodle_url(self::$mainpage, array('hideshowid' => $row->id, 'sesskey' => sesskey())); - $hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($hideshowicon, $hideshowstring)); - - /* Link for editing */ - $editlink = new moodle_url(self::$editorpage, array('serviceid' => $row->id, 'sesskey' => sesskey())); - $edititem = $OUTPUT->action_icon($editlink, new pix_icon('t/edit', new lang_string('edit', 'moodle'))); - - /* Link to remove */ - $deletelink = new moodle_url(self::$mainpage, array('deleteid' => $row->id, 'sesskey' => sesskey())); - $deleteitem = $OUTPUT->action_icon($deletelink, new pix_icon('t/delete', new lang_string('delete', 'moodle'))); - - return $hideshowitem . $edititem . $deleteitem; - } - - /** - * Specifies the display of a column with events. - * - * @param object $row - * - * @return number - */ - public function col_events($row) { - return count($row->events); - } - - /** - * Specifies the display of the column with the service name. - * - * @param object $row - * - * @return string - * @throws \moodle_exception - */ - public function col_name($row) { - $link = new moodle_url(self::$editorpage, array('serviceid' => $row->id, 'sesskey' => sesskey())); - - return html_writer::link($link, $row->name); - } -}
\ No newline at end of file |