. /** * The table that displays the templates in a given context. * * @package mod_htmlcert * @copyright 2017 Mark Nelson , Klaus-Uwe Mitterer * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_htmlcert; defined('MOODLE_INTERNAL') || die; global $CFG; require_once($CFG->libdir . '/tablelib.php'); /** * Class for the table that displays the templates in a given context. * * @package mod_htmlcert * @copyright 2017 Mark Nelson , Klaus-Uwe Mitterer * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class manage_templates_table extends \table_sql { /** * @var \context $context */ protected $context; /** * Sets up the table. * * @param \context $context */ public function __construct($context) { parent::__construct('mod_htmlcert_manage_templates_table'); $columns = [ 'name', 'actions' ]; $headers = [ get_string('name'), '' ]; $this->define_columns($columns); $this->define_headers($headers); $this->collapsible(false); $this->sortable(true); $this->context = $context; } /** * Generate the name column. * * @param \stdClass $template * @return string */ public function col_name($template) { return format_string($template->name, true, ['context' => $this->context]); } /** * Generate the actions column. * * @param \stdClass $template * @return string */ public function col_actions($template) { global $OUTPUT; // Link to edit the template. $editlink = new \moodle_url('/mod/htmlcert/edit.php', array('tid' => $template->id)); $editicon = $OUTPUT->action_icon($editlink, new \pix_icon('t/edit', get_string('edit'))); // Link to duplicate the template. $duplicatelink = new \moodle_url('/mod/htmlcert/manage_templates.php', array( 'tid' => $template->id, 'action' => 'duplicate', 'sesskey' => sesskey() ) ); $duplicateicon = $OUTPUT->action_icon($duplicatelink, new \pix_icon('t/copy', get_string('duplicate')), null, array('class' => 'action-icon duplicate-icon')); // Link to delete the template. $deletelink = new \moodle_url('/mod/htmlcert/manage_templates.php', array( 'tid' => $template->id, 'action' => 'delete', 'sesskey' => sesskey() ) ); $deleteicon = $OUTPUT->action_icon($deletelink, new \pix_icon('t/delete', get_string('delete')), null, array('class' => 'action-icon delete-icon')); return $editicon . $duplicateicon . $deleteicon; } /** * Query the reader. * * @param int $pagesize size of page for paginated displayed table. * @param bool $useinitialsbar do you want to use the initials bar. */ public function query_db($pagesize, $useinitialsbar = true) { global $DB; $total = $DB->count_records('htmlcert_templates', array('contextid' => $this->context->id)); $this->pagesize($pagesize, $total); $this->rawdata = $DB->get_records('htmlcert_templates', array('contextid' => $this->context->id), $this->get_sql_sort(), '*', $this->get_page_start(), $this->get_page_size()); // Set initial bars. if ($useinitialsbar) { $this->initialbars($total > $pagesize); } } }