ÿØÿà JFIF ÿÛ „ ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /var/www/html/adimi/application/modules/addon/controllers/ |
<?php /* * @System : Software Addon Module * @developer : Md.Mamun Khan Sabuj * @E-mail : mamun.sabuj24@gmail.com * @datetime : 10-10-2020 * @version : Version 1.0 */ defined('BASEPATH') or exit('No direct script access allowed'); class Theme extends MX_Controller { private $theme_tbl = 'themes'; private $theme_location = APPPATH.'modules/web/views/themes/'; function __construct() { parent::__construct(); $this->load->model(array('themes_model', 'addons_model')); $this->auth->check_user_auth(); } public function index() { $active_theme = $this->themes_model->get_theme(); $themes = $this->themes_model->get_themes(); $installed_themes = $this->themes_model->get_installed_themes_ids(); $json_theme = $this->addons_model->search_available_themes(); $new_items = []; if(!empty($json_theme)){ $new_items = json_decode($json_theme); } $data = array( 'title' => display('themes'), 'active_theme' => $active_theme, 'themes' => $themes, 'new_items' => $new_items, 'installed' => $installed_themes ); $content = $this->parser->parse('theme/list', $data, true); $this->template_lib->full_admin_html_view($content); } public function active_theme($name) { $this->db->set('status', 1)->where('name', $name)->update('themes'); $this->db->set('status', 0)->where('name !=', $name)->update('themes'); $sdata['message'] = display("theme_active_successfully"); $this->session->set_flashdata($sdata); redirect('addon/theme'); } #------------------------------------ # To upload new theme #------------------------------------ public function upload_new_theme() { $this->form_validation->set_rules('purchase_key', display('purchase_key'), 'trim|required'); $this->form_validation->set_rules('theme_name', display('theme_name'), 'trim|required'); if(empty($_FILES)) { $this->form_validation->set_rules('new_theme', display('upload'), 'trim|required'); } if ($this->form_validation->run() == TRUE) { $purchase_key = trim($this->input->post('purchase_key',TRUE)); $theme_name = trim($this->input->post('theme_name',TRUE)); $getdata = "item=theme&purchase_key=".$purchase_key; // Check purchase key $response = $this->addons_model->verify_zip_upload($getdata); if(!empty($response) && ($response->status == 'valid')) { $filename = $_FILES["new_theme"]["name"]; $source = $_FILES["new_theme"]["tmp_name"]; $type = $_FILES["new_theme"]["type"]; $target_dir = 'application/modules/web/views/themes'; // naming for theme if ($theme_name !== '') { $dir = get_unspace_text(strtolower($theme_name)); $target_dir = 'application/modules/web/views/themes/'; } ini_set('memory_limit', '800M'); ini_set('upload_max_filesize', '800M'); ini_set('post_max_size', '800M'); ini_set('max_input_time', 3600); ini_set('max_execution_time', 3600); $config = array(); $config['upload_path'] = './application/modules/web/views/themes/'; $config['allowed_types'] = '*'; $config['max_size'] = 480000; $config['overwrite'] = FALSE; $config['encrypt_name'] = FALSE; $this->upload->initialize($config); if (!$this->upload->do_upload('new_theme')) { $sdata['exception'] = display("the_theme_has_not_uploaded"); redirect('addon/theme'); } else { $data = array('upload_data' => $this->upload->data()); $name = explode(".", $filename); $zip = new ZipArchive(); $x = $zip->open($source); if ($x === true) { $zip->extractTo($target_dir . '/' . $dir . '/'); // place in the directory with same name $zip->close(); @unlink($target_dir . '/' . $filename); // delete zip file chmod($target_dir . $dir, 0777); //change uploaded file permission $this->themes_model->store($dir); //insert store name into database $sdata['message'] = display("theme_uploaded_successfully"); } else { $sdata['exception'] = display("there_was_a_problem_with_the_upload"); } $this->session->set_flashdata($sdata); redirect('addon/theme'); } }else{ $this->session->set_flashdata('exception',display("invalid_purchase_key")); redirect('addon/theme'); } } $this->index(); } // Unzip Files private function unzip_files($zip_file) { $path = pathinfo( realpath( $zip_file ), PATHINFO_DIRNAME ); $zip = new ZipArchive; $res = $zip->open($zip_file); if ($res === TRUE) { $zip->extractTo( $path ); $zip->close(); } return $res; } // Download Theme public function download_theme(){ $data = array( 'title' => display('themes') ); $content = $this->parser->parse('theme/download',$data,true); $this->template_lib->full_admin_html_view($content); } // Verify Theme Purchase public function verify_theme_download() { $purchase_key = trim($this->input->post('purchase_key',TRUE)); if(!empty($purchase_key)){ $getdata = "item=theme&purchase_key=".$purchase_key; $result = $this->addons_model->purchase_new_theme($getdata); if ($result->status == 'valid') { $filename = "New_theme_".time().'.zip'; $destination = $this->theme_location.$filename; $copydata = copy($result->download_url, $destination); if($copydata) { // unzip files $unzip = $this->unzip_files($destination); if($unzip) { unlink($destination); $tdata = array( 'name' => $result->identity, 'status' => 0 ); $result = $this->db->insert($this->theme_tbl, $tdata); if($result){ $this->session->set_flashdata('message', display('downloaded_successfully')); echo TRUE; exit(); } } } } } $this->session->set_flashdata('error_message', display('failed_try_again')); echo false; } // Recursivly Delete a whole directory private function delete_dir($dirPath) { $dir = opendir($dirPath); while (false !== ($file = readdir($dir))) { if (($file != '.') && ($file != '..')) { if (is_dir($dirPath . '/' . $file)) { $this->delete_dir($dirPath . '/' . $file); } else { unlink($dirPath . '/' . $file); } } } closedir($dir); rmdir($dirPath); return true; } // Theme Delete public function theme_delete() { $theme_name = $this->input->post('theme',TRUE); $result = false; if(!empty($theme_name)){ $result = $this->db->delete('themes', array('name' => $theme_name)); if($result){ $theme_path = $this->theme_location.$theme_name; $this->delete_dir($theme_path); } } echo $result; } }