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
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
/*
* @author : Creativeitem
* date : 7 October, 2018
* Academy
* http://codecanyon.net/user/Creativeitem
* http://ictlife.vn
*/
class Updater extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->library('session');
/*cache control*/
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
$this->output->set_header('Pragma: no-cache');
}
/***default functin, redirects to login page if no admin logged in yet***/
public function index()
{
if ($this->session->userdata('admin_login') != 1)
redirect(site_url('login'), 'refresh');
if ($this->session->userdata('admin_login') == 1)
redirect(site_url('admin/dashboard'), 'refresh');
}
/***** UPDATE PRODUCT *****/
function update($task = '', $purchase_code = '')
{
if ($this->session->userdata('admin_login') != 1)
redirect(base_url(), 'refresh');
// Create update directory.
$dir = 'update';
if (!is_dir($dir))
mkdir($dir, 0777, true);
$zipped_file_name = $_FILES["file_name"]["name"];
$path = 'update/' . $zipped_file_name;
move_uploaded_file($_FILES["file_name"]["tmp_name"], $path);
// Unzip uploaded update file and remove zip file.
$zip = new ZipArchive;
$res = $zip->open($path);
if ($res === TRUE) {
$zip->extractTo('update');
$zip->close();
unlink($path);
}
$unzipped_file_name = substr($zipped_file_name, 0, -4);
$str = file_get_contents('./update/' . $unzipped_file_name . '/update_config.json');
$json = json_decode($str, true);
// Run php modifications
require './update/' . $unzipped_file_name . '/update_script.php';
// Create new directories.
if (!empty($json['directory'])) {
foreach ($json['directory'] as $directory) {
if (!is_dir($directory['name']))
mkdir($directory['name'], 0777, true);
}
}
// Create/Replace new files.
if (!empty($json['files'])) {
foreach ($json['files'] as $file)
copy($file['root_directory'], $file['update_directory']);
}
$this->session->set_flashdata('flash_message', get_phrase('product_updated_successfully'));
redirect(site_url('admin/system_settings'));
}
}