forked from FMCorz/moodle-block_stash
-
Notifications
You must be signed in to change notification settings - Fork 13
/
trade_edit_new.php
123 lines (100 loc) · 4.27 KB
/
trade_edit_new.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?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/>.
/**
* Trade edit page.
*
* @package block_stash
* @copyright 2017 Adrian Greeve <adriangreeve.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../config.php');
$courseid = required_param('courseid', PARAM_INT);
$id = optional_param('id', '0', PARAM_INT);
$additemdata = optional_param_array('add_item', [], PARAM_INT);
$lossitemdata = optional_param_array('lose_item', [], PARAM_INT);
$hashcode = optional_param('hashcode', null, PARAM_ALPHANUM);
$name = optional_param('title', null, PARAM_TEXT);
$gain = optional_param('gain', null, PARAM_TEXT);
$loss = optional_param('loss', null, PARAM_TEXT);
$stashid = optional_param('stashid', null, PARAM_INT);
require_login($courseid);
$manager = \block_stash\manager::get($courseid);
$manager->require_enabled();
$manager->require_manage();
$context = context_course::instance($courseid);
$url = new moodle_url('/blocks/stash/trade_edit_new.php', array('courseid' => $courseid, 'id' => $id));
$trade = $id ? $manager->get_trade($id) : null;
$tradename = $trade ? format_string($trade->get_name(), true, ['context' => $context]) : '';
if (!empty($additemdata) || !empty($lossitemdata)) {
// Form submission?
require_sesskey();
$tradename = (!empty($name)) ? $name : get_string('tradename', 'block_stash');
$data = new stdClass();
$data->id = $id;
$data->name = $tradename;
$data->gaintitle = (!empty($gain)) ? $gain : get_string('gain', 'block_stash');
$data->losstitle = (!empty($loss)) ? $loss : get_string('loss', 'block_stash');
$data->hashcode = $hashcode;
$data->stashid = $stashid;
$trade = $manager->create_or_update_trade($data);
$tradeitems = $manager->get_trade_items($trade->get_id());
if (!empty($tradeitems)) {
foreach ($tradeitems as $tradeitem) {
$manager->delete_trade_item($tradeitem);
}
}
foreach ($additemdata as $itemid => $quantity) {
$data = new stdClass();
$data->tradeid = $trade->get_id();
$data->itemid = $itemid;
$data->quantity = ($quantity <= 1) ? 1 : $quantity;
$data->gainloss = true;
$manager->create_or_update_tradeitem($data);
}
foreach ($lossitemdata as $itemid => $quantity) {
$data = new stdClass();
$data->tradeid = $trade->get_id();
$data->itemid = $itemid;
$data->quantity = ($quantity <= 1) ? 1 : $quantity;
$data->gainloss = false;
$manager->create_or_update_tradeitem($data);
}
$PAGE->set_url($url);
$url = new moodle_url('/blocks/stash/trade.php', ['courseid' => $courseid]);
redirect($url, get_string('tradecreated', 'block_stash', $tradename));
}
$pagetitle = $trade ? get_string('edittrade', 'block_stash', $tradename) : get_string('addtrade', 'block_stash');
list($title, $subtitle, $returnurl) = \block_stash\page_helper::setup_for_trade($url, $manager, $trade, $pagetitle);
$customdata = [
'persistent' => $trade,
'stash' => $manager->get_stash(),
'manager' => $manager,
];
$renderer = $PAGE->get_renderer('block_stash');
echo $OUTPUT->header();
echo $OUTPUT->heading($title, 2);
echo $renderer->navigation($manager, 'trade');
if (!empty($subtitle)) {
$subtitle = $subtitle . $OUTPUT->help_icon('tradewidget', 'block_stash');
echo $OUTPUT->heading($subtitle, 3);
}
$tradeitemsdata = null;
if ($trade) {
$tradeitemsdata = $manager->get_full_trade_items_data($trade->get_id());
}
$fulltrade = new \block_stash\output\fulltrade($manager->get_stash()->get_id(), $trade, $tradeitemsdata, $courseid);
echo $renderer->render_trade_form($fulltrade);
echo $OUTPUT->footer();