Api.php
4.38 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
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Api extends MY_Controller{
public function __construct() {
parent::__construct();
$this->authenticate_admin_user(false);
$admin_data = admin_data();
if(!$this->authenticate_administrator_role($admin_data)){
/*** Guest redirect ***/
$this->admin_user_guest($admin_data);
/*** Support redirect ***/
$this->admin_user_support($admin_data);
}
$this->load->library('form_validation');
}
public function get_flags_for_table(){
$tableOptions = $this->input->get();
$flagManager = new \BTFlags\FlagManager();
$table = array();
$tableOptions['sortBy'] = 'DESC';
if($tableOptions['sortOrder'] && strpos($tableOptions['sortOrder'], '+') === 0){
$tableOptions['sortOrder'] = substr($tableOptions['sortOrder'], 1);
$tableOptions['sortBy'] = 'ASC';
}
$tableOptions['filter'] = isset($tableOptions['filter']) ? $tableOptions['filter'] : '';
$tableOptions['mode'] = isset($_COOKIE['mode']) ? $_COOKIE['mode'] : 'live';
$table['data'] = $flagManager->getAllForTable($tableOptions);
$scope = $this;
$table['total'] = $flagManager->getAllCountForTable($tableOptions);
$table['per_page'] = (int)$tableOptions['perPage'];
$table['current_page'] = (int)$tableOptions['page'];
$table['sort'] = $tableOptions['sortOrder'];
$table['last_page'] = ceil($table['total'] / $table['per_page']);
$table['next_page_url'] = 'api/get_permissions_for_table?page=' . ($tableOptions['page'] + 1);
$table['prev_page_url'] = null;
$table['from'] = (((int)$tableOptions['page'] - 1) * $table['per_page']) + 1;
$table['to'] = ((((int)$tableOptions['page']) * $table['per_page']) < $table['total']) ? ((int)$tableOptions['page']) * $table['per_page'] : $table['total'];
$this->output->set_content_type('application/json');
echo json_encode($table);
die;
}
public function create_flag(){
$requestData = json_decode(file_get_contents('php://input'), true);
$this->form_validation->set_data($requestData);
$this->form_validation->set_rules('name', 'Flag Name', 'required');
$this->form_validation->set_rules('encrypted_name', 'Encrypted Name', 'required');
if($this->form_validation->run() == false){
echo json_encode(['success' => false, 'errors' => array_values($this->form_validation->error_array())]);
die;
}
$flagManager = new \BTFlags\FlagManager();
$created = $flagManager->create($requestData);
if(!$created) die(json_encode(['success' => false, 'errors' => $flagManager->errors()]));
$log_data = array(
'date_created' => ph_time(),
'event' => 'Create Flag',
'description' => 'Flag Name: ' . $requestData['name'],
);
$add_log = insert_admin_log($log_data);
echo json_encode(['success' => true, 'message' => 'Flag successfully created!']);
die;
}
/**
* Update a flag
* @return void
*/
public function update_flag(){
$requestData =json_decode(file_get_contents('php://input'), true);
$this->form_validation->set_data($requestData);
$this->form_validation->set_rules('name', 'Flag Name', 'required');
$this->form_validation->set_rules('encrypted_name', 'Encrypted Name', 'required');
if($this->form_validation->run() == false){
echo json_encode(['success' => false, 'errors' => array_values($this->form_validation->error_array())]);
die;
}
$flagManager = new \BTFlags\FlagManager();
$updated = $flagManager->update($requestData);
if(!$updated) die(json_encode(['success' => false, 'errors' => $flagManager->errors()]));
$log_data = array(
'date_created' => ph_time(),
'event' => 'Update Flag',
'description' => 'Flag Name: ' . $requestData['name'],
);
$add_log = insert_admin_log($log_data);
echo json_encode(['success' => true, 'message' => 'Flag successfully updated!']);
die;
}
/**
* Delete a flag
* @return void
*/
public function delete_flag(){
$requestData = json_decode(file_get_contents('php://input'), true);
$flagManager = new \BTFlags\FlagManager();
$deleted = $flagManager->delete($requestData);
if(!$deleted) die(json_encode(['success' => false, 'errors' => $flagManager->errors()]));
$log_data = array(
'date_created' => ph_time(),
'event' => 'Delete Flag',
'description' => 'Flag Name: ' . $requestData['name'],
);
$add_log = insert_admin_log($log_data);
echo json_encode(['success' => true, 'message' => 'Flag successfully deleted!']);
die;
}
}