/**
  * Render coupon generator page 5 (including header / footer).
  *
  * @return string
  */
 public function page_coupon_generator_step5()
 {
     // Make sure sessions are still alive.
     generatoroptions::validate_session();
     // Load options.
     $generatoroptions = generatoroptions::from_session();
     // Create form.
     $mform = new \block_coupon\forms\coupon\generator\extra($this->page->url);
     if ($mform->is_cancelled()) {
         generatoroptions::clean_session();
         redirect(new moodle_url('/course/view.php', array('id' => $this->page->course->id)));
     } else {
         if ($data = $mform->get_data()) {
             // Get recipients.
             $generatoroptions->recipients = helper::get_recipients_from_csv($data->coupon_recipients);
             // Now that we've got all information we'll create the coupon objects.
             $generator = new generator();
             $result = $generator->generate_coupons($generatoroptions);
             if ($result !== true) {
                 // Means we've got an error.
                 // Don't know yet what we're gonne do in this situation. Maybe mail to supportuser?
                 echo "<p>An error occured while trying to generate the coupons. Please contact support.</p>";
                 echo "<pre>" . implode("\n", $result) . "</pre>";
                 die;
             }
             // Finish.
             generatoroptions::clean_session();
             redirect(new moodle_url('/my'), get_string('coupons_ready_to_send', 'block_coupon'));
         }
     }
     $out = '';
     $out .= $this->get_coupon_form_page($mform);
     return $out;
 }