<?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/>.

/**
 *
 * @package    enrol_apply
 * @copyright  2016 sudile GbR (http://www.sudile.com)
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 * @author     Johannes Burk <johannes.burk@sudile.com>
 */

defined('MOODLE_INTERNAL') || die();

class enrol_apply_renderer extends plugin_renderer_base {
    public function manage_page($table, $manageurl) {
        echo $this->header();
        echo $this->heading(get_string('confirmusers', 'enrol_apply'));
        echo get_string('confirmusers_desc', 'enrol_apply');
        $this->manage_form($table, $manageurl);
        echo $this->footer();
    }

    public function edit_page($mform) {
        echo $this->header();
        echo $this->heading(get_string('pluginname', 'enrol_apply'));
        $mform->display();
        echo $this->footer();
    }

    public function manage_form($table, $manageurl) {
        echo html_writer::start_tag('form', array(
            'id' => 'enrol_apply_manage_form',
            'method' => 'post',
            'action' => $manageurl->out()));

        $this->manage_table($table);

        if ($table->totalrows > 0) {
            echo html_writer::empty_tag('br');
            echo html_writer::start_tag('div', array('class' => 'formaction'));

            $formactions = array(
                'confirm' => get_string('btnconfirm', 'enrol_apply'),
                'wait' => get_string('btnwait', 'enrol_apply'),
                'cancel' => get_string('btncancel', 'enrol_apply'));
            echo html_writer::tag('label', get_string('withselectedusers'), array('for' => 'formaction'));
            echo html_writer::select($formactions, 'formaction', '', array('' => 'choosedots'), array('id' => 'formaction'));
            echo html_writer::tag('noscript',
                html_writer::empty_tag('input', array('type' => 'submit', get_string('submit'))),
                array('style' => 'display: inline;'));

            echo html_writer::end_tag('div');

            $this->page->requires->js_call_amd('enrol_apply/manage', 'init');
        }
        echo html_writer::end_tag('form');
    }

    public function manage_table($table) {
        $columns = array(
            'checkboxcolumn',
            'course',
            'fullname', // Magic happens here: The column heading will automatically be set.
            'email',
            'applydate',
            'applycomment');
        $headers = array(
            html_writer::checkbox('toggleall', 'toggleall', false, '', array('id' => 'toggleall')),
            get_string('course'),
            'fullname', // Magic happens here: The column heading will automatically be set due to column name 'fullname'.
            get_string('email'),
            get_string('applydate', 'enrol_apply'),
            get_string('comment', 'enrol_apply'));
        $table->define_columns($columns);
        $table->define_headers($headers);

        $table->sortable(true, 'id');

        $table->out(50, true);
    }

    public function application_notification_mail_body(
        $course, $user, $manageurl, $applydescription, $standarduserfields = null, $extrauserfields = null) {

        $body = '<p>'. get_string('coursename', 'enrol_apply') .': '.format_string($course->fullname).'</p>';
        $body .= '<p>'. get_string('applyuser', 'enrol_apply') .': '.$user->firstname.' '.$user->lastname.'</p>';
        $body .= '<p>'. get_string('comment', 'enrol_apply') .': '.$applydescription.'</p>';
        if ($standarduserfields) {
            $body .= '<p><strong>'. get_string('user_profile', 'enrol_apply').'</strong></p>';
            $body .= '<p>'. get_string('firstname') .': '.$standarduserfields->firstname.'</p>';
            $body .= '<p>'. get_string('lastname') .': '.$standarduserfields->lastname.'</p>';
            $body .= '<p>'. get_string('email') .': '.$standarduserfields->email.'</p>';
            $body .= '<p>'. get_string('city') .': '.$standarduserfields->city.'</p>';
            $body .= '<p>'. get_string('country') .': '.$standarduserfields->country.'</p>';
            $body .= '<p>'. get_string('preferredlanguage') .': '.$standarduserfields->lang.'</p>';
            $body .= '<p>'. get_string('description') .': '.$standarduserfields->description_editor['text'].'</p>';

            $body .= '<p>'. get_string('firstnamephonetic') .': '.$standarduserfields->firstnamephonetic.'</p>';
            $body .= '<p>'. get_string('lastnamephonetic') .': '.$standarduserfields->lastnamephonetic.'</p>';
            $body .= '<p>'. get_string('middlename') .': '.$standarduserfields->middlename.'</p>';
            $body .= '<p>'. get_string('alternatename') .': '.$standarduserfields->alternatename.'</p>';
            $body .= '<p>'. get_string('url') .': '.$standarduserfields->url.'</p>';
            $body .= '<p>'. get_string('icqnumber') .': '.$standarduserfields->icq.'</p>';
            $body .= '<p>'. get_string('skypeid') .': '.$standarduserfields->skype.'</p>';
            $body .= '<p>'. get_string('aimid') .': '.$standarduserfields->aim.'</p>';
            $body .= '<p>'. get_string('yahooid') .': '.$standarduserfields->yahoo.'</p>';
            $body .= '<p>'. get_string('msnid') .': '.$standarduserfields->msn.'</p>';
            $body .= '<p>'. get_string('idnumber') .': '.$standarduserfields->idnumber.'</p>';
            $body .= '<p>'. get_string('institution') .': '.$standarduserfields->institution.'</p>';
            $body .= '<p>'. get_string('department') .': '.$standarduserfields->department.'</p>';
            $body .= '<p>'. get_string('phone') .': '.$standarduserfields->phone1.'</p>';
            $body .= '<p>'. get_string('phone2') .': '.$standarduserfields->phone2.'</p>';
            $body .= '<p>'. get_string('address') .': '.$standarduserfields->address.'</p>';
        }

        if ($extrauserfields) {
            foreach ($extrauserfields as $key => $value) {
                $body .= '<p>'. $key .': '.$value.'</p>';
            }
        }

        $body .= '<p>'. html_writer::link($manageurl, get_string('applymanage', 'enrol_apply')).'</p>';

        return $body;
    }
}