-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathupdate_topic.php
More file actions
141 lines (121 loc) · 4.47 KB
/
update_topic.php
File metadata and controls
141 lines (121 loc) · 4.47 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<?php
/**
* Update Topic
*
* Handle Updating the Topic
*
* PHP version 7.2.5
*
* @category Main_App
* @package UnlockED
* @author UnlockedLabs <developers@unlockedlabs.org>
* @license https://www.gnu.org/licenses/gpl.html GPLv3
* @link http://unlockedlabs.org
*/
namespace unlockedlabs\unlocked;
require_once 'session-validation.php';
//ensure admin user (admin is 2 and above)
if (($_SESSION['admin_num'] < 2)) {
die('<h1>Restricted Action!</h1>');
}
// include database and object files
require_once dirname(__FILE__).'/config/core.php';
require_once dirname(__FILE__).'/config/database.php';
require_once dirname(__FILE__).'/objects/topic.php';
require_once dirname(__FILE__).'/objects/users.php';
// instantiate database and topic object
$database = new Database();
$db = $database->getConnection();
$topic = new Topic($db);
$users = new User($db);
// get ID of the topic to be edited
$id = isset($_GET['topic_id']) ? $_GET['topic_id'] : die('ERROR: Topic ID.');
$category_name = isset($_GET['category_name']) ? $_GET['category_name'] : die('ERROR: missing Category Name.');
$topic->id = $id;
// if the form was submitted
if ($_POST) {
// set topic property values
$topic_name = $_POST['topic_name'];
$topic_url = $_POST['topic_url'];
if ((empty($topic_name))) {
echo "<div class='alert alert-danger'>Topic Name cannot be empty.</div>";
} else {
$topic->topic_name = $topic_name;
$topic->topic_url = $topic_url;
// execute the query
if ($topic->update()) {
echo "<div class=\"alert alert-success alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Topic was updated. Please reload the page to see the updated Topic tags. <a href='./index.php'>Reload page now.</a>";
echo "</div>";
} else {
echo "<div class=\"alert alert-danger alert-dismissable\">";
echo "<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">×</button>";
echo "Unable to update topic.";
echo "</div>";
}
}
}
$topic->readOne();
// assign values to object properties
$topic_name = $topic->topic_name;
$topic_url = $topic->topic_url;
?>
<!-- HTML form for updating a topic -->
<div class="card container">
<div class="card-body">
<h3 class="card-title">Edit Topic</h3>
<form id='update-topic-form' action='update_topic.php?topic_id=<?php echo $id; ?>&category_name=<?php echo $category_name; ?>' method='post'>
<div class="form-group">
<label for="topicName">Topic Name</label>
<input type="text" name='topic_name' class="form-control" id="topicName" value="<?php echo $topic_name; ?>" required>
</div>
<div class="form-group">
<label for="topic_url">External Website's URL</label>
<input type="text" name='topic_url' class="form-control" id="topic_url" value="<?php echo $topic_url; ?>" placeholder="Only set this if you are linking to an external site.">
</div>
<button type="submit" class="btn btn-primary">Update Topic</button>
</form>
</div>
</div>
<script>
/*
Immediately invoked function (IIFE).
Executes as soon as js sees it.
Runs in it own scope.
*/
(function(){
$('#update-topic-form').on('submit', function(e) {
//prevent form submission
e.preventDefault();
if (!e.target.topic_name.value.trim()) {
ul.errorSwalAlert("Info Warning!", 'Must Supply Topic Name.');
return false;
}
var $content = $("#content-area-div");
var url = e.target.action;
var serializedForm = $(this).serialize();
$.ajax({
type: 'POST',
url: url,
data: serializedForm,
timeout: 30000,
beforeSend: function() {
$content.html('<div id="load">Loading</div>');
},
complete: function() {
$('#load').remove();
},
success: function(data) {
$content.html(data);
},
error: function(data) {
$content.html(data.responseText);
},
fail : function() {
$content.html('<div id="load">Please try again soon.</div>');
}
});
});
}) ();
</script>