. /** * Describes the plugin tables. * * @copyright 2018 'Valentin Popov' * @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' * @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 */ 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 number $pageSize * @param boolean $useInitialsBar */ 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. */ 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 */ 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 */ public function col_name( $row ) { $link = new moodle_url( self::$editorPage, array( "serviceid" => $row->id, "sesskey" => sesskey() ) ); return html_writer::link( $link, $row->name ); } }