MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0777) :  /home/celkcksm/cms.acadevo.in/application/core/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/cms.acadevo.in/application/core/BaseAdminController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');

require_once APPPATH.'third_party/vendor/autoload.php';

use Spatie\ImageOptimizer\OptimizerChainFactory;
use WebPConvert\WebPConvert;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
/**
 * 
 */
class BaseAdminController extends CI_Controller
{
    public $data=array();
    public $permission = array();
    public $login_session_duration = 5;

    function __construct(){

        parent::__construct();

        // $password=password_hash('Superadmin@123', PASSWORD_BCRYPT, array('cost'=>10));

        //$password=password_hash('Nni#2025%$', PASSWORD_BCRYPT, array('cost'=>10));

        //echo $password;die;

        $param=array(
            'key'=>'rzp_test_JOC0wRKpLH1cVW',
            'key_secret'=>'9EzSlxvJbTyQ2Hg0Us5ZX4VD',
            'fetch_type'=>'single',
            'payment_id'=>'pay_K40f7y5OkLCyE1'
        );

        $this->output->set_header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT');
        $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');
        $this->output->set_header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

        date_default_timezone_set('Asia/Kolkata');

        $this->theme->view_type='admin';        

        $link_code= get_link_code();//$this->uri->segment(1,0);

        /*if ($link_code!=='localhost' || $link_code!== '127.0.0.1' || $link_code!=='cloudcampus' || $link_code!=='admin'){
            $initial_db_group='default';
        }else{
            $initial_db_group=$link_code;
        }*/

        $initial_db_group=$link_code;

        //echo $initial_db_group;die;

        $this->data['initial_db_group']=$initial_db_group;

        $system_links=$this->sm->_get_system_links(array('link_code'=>$link_code),TRUE,$initial_db_group);

        //print_obj($system_links);

        $this->data['system_links']=$system_links;

        $base_link_code=(!empty($system_links))?$system_links->link_code:'default';

       //$system_theme=(!empty($system_links))?$system_links->link_theme:'default';

        $system_theme=(!empty($system_links))?$system_links->link_theme:'nt';

        // print_obj($system_links);die;

        if(!empty($system_links)){
            $link_website=$system_links->link_website;
            $link_printing_logo_data=$this->sm->get_file(array('storage_type'=>'college_printing_logo','storage_type_id'=>$system_links->link_inst_id),$base_link_code);

            if($system_links->link_type==='college'){
                $storage_type='college_logo';
            }else if($system_links->link_type==='college_branch'){
                $storage_type='college_branch_logo';
            }
               

            $link_logo_data=$this->sm->get_file(array('storage_type'=>$storage_type,'storage_type_id'=>$system_links->link_inst_id),$base_link_code);

            //print_obj($link_logo_data);die;

            if(!empty($link_printing_logo_data) && !empty($link_printing_logo_data->media_disk_path) && file_exists(FCPATH.$link_printing_logo_data->media_disk_path)){
                $link_printing_logo=base_url($link_printing_logo_data->media_disk_path_relative);
            }else if(!empty($link_logo_data) && !empty($link_logo_data->media_disk_path) && file_exists(FCPATH.$link_logo_data->media_disk_path)){
                $link_printing_logo=base_url($link_logo_data->media_disk_path_relative);
            }
            else{
                $link_printing_logo=base_url('uploads/app/ncriptech_logo.webp');
            }

            if(!empty($link_logo_data) && !empty($link_logo_data->media_disk_path) && file_exists(FCPATH.$link_logo_data->media_disk_path)){
                $link_logo=base_url($link_logo_data->media_disk_path_relative);
            }else{
                $link_logo=base_url('uploads/app/ncriptech_logo_small.webp');
            }

            $college_letter_head_data=$this->sm->get_file(array('storage_type'=>'college_letter_head_image','storage_type_id'=>$system_links->link_inst_id),$base_link_code);

            if(!empty($college_letter_head_data) && is_file(FCPATH.$college_letter_head_data->media_disk_path)){
                $link_letter_head=base_url($college_letter_head_data->media_disk_path_relative);
            }else{
                $link_letter_head='';
            }

            $system_name=ucwords($base_link_code);

            //echo $link_logo;die;

        }else{
            $link_printing_logo=base_url('uploads/app/ncriptech_logo.webp');
            $link_logo=base_url('uploads/app/ncriptech_logo_small.png');
            $link_website='https://cloudcampus.org.in/admin';
            $system_name='Cloudcampus';
        }

       
        $this->data['app_logo']=base_url('uploads/app/cloud-campus-logo.png');
        $this->data['app_favicon']=base_url('uploads/app/favicon.png');

        //echo $link_printing_logo;die;

        $this->theme->initialize(array(
            'theme'            => $system_theme,
            'master'           => 'default',
            'layout'           => 'default',
            'title_sep'        => '-',
            'compress'         => (ENVIRONMENT !== 'development')?true:false,
            'cache_lifetime'   => 0,
            'cdn_enabled'      => false,
            'cdn_server'       => null,
            'site_name'        => $system_name,
            'site_description' => '',
            'site_keywords'    => ''
        ));

        

        $this->data['csrf']=array(
            'name' => $this->security->get_csrf_token_name(),
            'hash' => $this->security->get_csrf_hash()
        );

        $this->data['system_name']=$system_name;

        $this->data['link_printing_logo']=$link_printing_logo;
        
        $this->data['link_code']=$base_link_code;

        $this->data['link_letter_head']=$link_letter_head;

        $this->data['link_website']=$link_website;

        $this->data['base_url']='';//base_url($base_link_code);

        //$this->config->set_item('csrf_exclude_uris',$this->data['base_url'].'/payments/reciept');


        $this->data['no_image']=base_url('uploads/app/no.jpeg');
        $this->data['paytm_image']=base_url('uploads/app/paytm_logo.svg');
        $this->data['razorpay_image']=base_url('uploads/app/razorpay_logo.svg');
        $this->data['phonepe_image']=base_url('uploads/app/PhonePe-Logo.wine.svg');

        $this->data['default_logo_full']=base_url('uploads/app/ncriptech_logo.png');
        $this->data['default_logo_small']=base_url('uploads/app/ncriptech_logo_small.png');

        $this->data['default_profile_image']=base_url('uploads/app/profile-img.png');

        $this->data['link_logo']=$link_logo;

        if(session_userdata('admin_db_group')){
            $sess_subdomain=decode_data(session_userdata('admin_db_group'));
            if($sess_subdomain!='default' && $sess_subdomain!=$link_code){ 
               session_write_close(); // Close current session
                $this->load->library('session'); // Reload session with new database
                $this->data['base_url']=base_url($sess_subdomain);
                redirect($this->data['base_url']);
            }
        }

        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){

            $user_id=decode_data(session_userdata('admin_id'));
            $user_type=session_userdata('admin_type');
            $db_group=decode_data(session_userdata('admin_db_group'));

            //echo $user_id;die;
             
            //echo $user_type;die;

            $userdata=$this->um->get_user(array('user_id'=>$user_id),$user_type,null,$db_group);

            //print_obj($userdata);die;

            $institute_data=check_institute($userdata);
            //print_obj($institute_data);die;
            $inst_id=$institute_data['institute_id'];
            $inst_type=$institute_data['inst_type'];

            if($user_type=='student'){
                $student_profile_photo_file=$this->sm->get_file(array('storage_type'=>'student_profile_photo','storage_type_id'=>$user_id));
                if(!empty($student_profile_photo_file)){
                    if(file_exists(FCPATH.$student_profile_photo_file->media_disk_path)){
                        $profile_photo=base_url($student_profile_photo_file->media_disk_path_relative);
                    }else{
                        $profile_photo=$link_logo;
                    }                    
                }else{
                    $profile_photo=$link_logo;
                } 
            }
            else if($user_type=='institute'){
                $profile_photo=$link_logo;
                $package_data=$this->sm->_get_packages(array('package_id'=>$userdata->user_package_id));

                //print_obj($package_data);

                //$arr=array("admission_module"=>"Admission Module","branch_module"=>"Branch Module","agent_module"=>"Agent Module");

                //echo json_encode($arr);die;

                if(!empty($package_data)){
                    if(!empty($package_data->package_details)){
                        $package_permissions=decode_data($package_data->package_details);
                    }else{
                        $package_permissions=array();
                    }                    
                }else{
                    $package_permissions=array();
                }


                $this->data['institute_can_upload_branch']=$userdata->user_can_add_branch;
                $this->data['user_has_access_hrms']=$institute_data['hrms_access'];


            }else if($user_type=='institute_branch'){
                $this->data['user_has_access_hrms']=$institute_data['hrms_access'];
                $profile_photo=$link_logo;
                $package_data=$this->sm->_get_packages(array('package_id'=>$userdata->user_package_id));
                

                //print_obj($package_data);

                //$arr=array("admission_module"=>"Admission Module","branch_module"=>"Branch Module","agent_module"=>"Agent Module");

                //echo json_encode($arr);die;

                if(!empty($package_data)){
                    if(!empty($package_data->package_details)){
                        $package_permissions=decode_data($package_data->package_details);
                    }else{
                        $package_permissions=array();
                    }                    
                }else{
                    $package_permissions=array();
                }


            }else if($user_type=='employee'){
                $this->data['institute_can_upload_branch']='no';
                $this->data['user_has_access_hrms']='no';
            }
            else{
                $profile_photo=$link_logo;
            }

           

           $this->data['profile_photo']=$profile_photo;
            

            $permissions=array();

            $this->data['userdata']=$userdata;


            if($user_type=='institute'){
                $user_code=$userdata->user_code;
                $inst_id=$userdata->user_id;
                $profile_name=$userdata->user_profile_name;
            }else if($user_type=='institute_branch'){
                $user_code=$userdata->branch_code;
                $inst_id=$userdata->user_id;
                $profile_name=$userdata->branch_name;


            }else if($user_type=='agent'){
                $user_code=$userdata->agent_code;
                $inst_id=$userdata->user_id;
                $profile_name='';
            }else if($user_type=='student'){
                $user_code='';
                $inst_id=$userdata->stu_inst_id;
                $inst_profile=$this->um->get_user(array('user_id'=>$inst_id),'institute');
                $profile_name=$inst_profile->user_profile_name;
                $this->data['admission_data']=$this->adm->get_admission_data(array('admission_stu_id'=>$userdata->user_id),TRUE,$base_link_code);

                // if(empty($admission_data)){

                // }else{
                //     $this->data['admission_data']=$admission_data;
                // }
            }else{
                $user_code='Ncript';
                $inst_id='';
                $profile_name='';
            }

            $this->data['inst_id']=$inst_id;

            $this->data['user_code']=$user_code;
            $this->data['profile_name']=$profile_name;


            $payment_settings_data=$this->sm->get_payment_gateway_settings(array('payment_gateway_inst_id'=>$inst_id,'payment_gateway_status'=>'yes'),FALSE,$base_link_code);

            //print_obj($payment_settings_data);die;

            $gateway_settings=array();

            // if(!empty($payment_settings_data)){
            //     foreach ($payment_settings_data as $key => $value) {
            //         $payment_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'payment_gateway','settings_type_id'=>$value->gateway_id));
            //         $gateway_settings[]=array(
            //             'gateway_id'=>$value->gateway_id,
            //             'gateway'=>$value->gateway_name,
            //             'gateway_image'=>base_url($value->gateway_image),
            //             'gateway_status'=>$value->payment_gateway_status,
            //             'gateway_settings'=>(!empty($payment_settings))?unserialize($payment_settings->settings_value):''
            //         );
            //     }
            // }

            $system_payment_gateways=$this->sm->get_system_payment_gateways(array('gateway_status'=>'active'),FALSE,$base_link_code);

            //print_obj($system_payment_gateways);die;

            foreach ($system_payment_gateways as $key => $value) {
                $inst_payment_gateways_settings=$this->sm->get_payment_gateway_institutes_settings(array('payment_gateway_id'=>$value->gateway_id,'payment_gateway_inst_id'=>$inst_id),TRUE,$base_link_code);
                if(!empty($inst_payment_gateways_settings) && $inst_payment_gateways_settings->payment_gateway_status=='yes'){
                    $payment_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'payment_gateway','settings_type_id'=>$value->gateway_id),TRUE,$base_link_code);
                }

                $gateway_settings[]=array(
                    'gateway_id'=>$value->gateway_id,
                    'gateway'=>$value->gateway_name,
                    'gateway_image'=>base_url($value->gateway_image),
                    'gateway_settings'=>(isset($payment_settings) && !empty($payment_settings))?unserialize($payment_settings->settings_value):''
                );
            }

                


            $this->data['payment_gateway_settings']=$gateway_settings;


            $payment_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'payment_gateway'),TRUE,$base_link_code);

            //print_obj($payment_settings);die;

            if(!empty($payment_settings)){
                $this->data['payment_settings']=unserialize($payment_settings->settings_value);
            }else{
                $this->data['payment_settings']=null;
            }


            $email_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'email_settings'),TRUE,$base_link_code);

            //print_obj($email_settings);die;


            if(!empty($email_settings)){
                $this->data['email_settings']=unserialize($email_settings->settings_value);
                
            }else{
                $this->data['email_settings']=null;
            }

            $booking_fee_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'booking_fee_mandatory'),TRUE,$base_link_code);

            if(!empty($booking_fee_settings)){
                $this->data['booking_fee_settings']=$booking_fee_settings->settings_value;
            }else{
                $this->data['booking_fee_settings']='yes';
            }

            //print_obj($this->data['payment_settings']);die;


            $student_code_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'student_code'),TRUE,$base_link_code);

            if(!empty($student_code_settings)){
                $this->data['student_code_settings']=$student_code_settings->settings_value;
            }else{
                $this->data['student_code_settings']=null;
            }

            $booking_fee_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$inst_id,'settings_type'=>'booking_fee_mandatory'),TRUE,$base_link_code);

            if(!empty($payment_settings) && !empty($email_settings) && !empty($booking_fee_settings) && !empty($student_code_settings)){
                $this->data['auto_open_settings_modal']='hide';
            }else{
                $this->data['auto_open_settings_modal']='show';
            }


            if(!empty($booking_fee_settings) && $booking_fee_settings->settings_value=='yes'){

                if($userdata->user_type=='student'){

                    $seat_booking_data=$this->adm->get_seat_bookings_data(array('institute_payments_seat_bookings.booking_inst_id'=>$inst_id,'institute_payments_seat_bookings.booking_stu_id'=>$userdata->stu_user_id));

                    $this->data['seat_booking_data']=$seat_booking_data;

                    if(!empty($seat_booking_data) && $seat_booking_data->booking_payment_paid=='no'){
                        $this->theme->add_partial('partial_header',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar_closed',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar',$this->data)->add_partial('partial_footer')->add_partial('partial_booking_fee_payment_modal',$this->data);
                    }else{
                        $this->theme->add_partial('partial_header',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar_closed',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar',$this->data)->add_partial('partial_footer');
                    }
                }else{
                    $this->theme->add_partial('partial_header',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar_closed',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar',$this->data)->add_partial('partial_footer')->add_partial('partial_cheques_details_modal')->add_partial('partial_settings_modal',$this->data);
                }
            }else{
                $this->theme->add_partial('partial_header',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar_closed',$this->data)->add_partial('partial_'.$userdata->user_type.'_left_sidebar',$this->data)->add_partial('partial_footer')->add_partial('partial_settings_modal',$this->data); 
            }



        }else{

            $this->theme->theme($system_theme);
        }   
    }


    public function onUploadFiles($param,$db_group=null,$uploader_method='uploader'){

        $document_to_upload     =     $_FILES[$param['file_name']];

        $uploader = new Uploader();

        $file_types=explode(',', $param['file_types']);

        $file_size=isset($param['file_size'])?$param['file_size']:5;

        $file_limit=isset($param['file_limit'])?$param['file_limit']:1;

        $file_type_of=isset($param['file_type_of'])?$param['file_type_of']:'institute';

        $storage_type=$param['file_storage_type'];
        $storage_type_id=$param['file_storage_type_id'];

        if(isset($param['file_storage_dir'])){
          
            $upload_dir=DIR_UPLOADS.$param['file_storage_dir'];

           // print( $upload_dir);
            //die();
            if(!is_dir($upload_dir)){
                @mkdir($upload_dir, 0777,true);
                @chmod($upload_dir, 0777);
                @touch($upload_dir . '/' . 'index.html');
            }
            $upload_dir=$upload_dir.'/';
        }else{
            $upload_dir=DIR_UPLOADS;
        }

        //print_obj($upload_dir);die;
        

        $document_data=array(
            'limit' => $file_limit,
            'maxSize' => $file_size,
            'extensions' => $file_types,
            'required' => true,
            'uploadDir' =>$upload_dir,
            'title' => array('auto', 10),
            'removeFiles' => true,
            'perms' => null,
            'onCheck' => null,
            'onError' => null,
            'onSuccess' =>null ,
            'onUpload' => '',
            'onComplete' => null,
            'onRemove' => ''
        );

        //print_obj($document_data);

        //print_obj($document_to_upload);

        $data = $uploader->upload($document_to_upload, $document_data);
       // print("uploader");
        //print_obj($data );
        //die();

        //print_obj($data);die;
 
        if($data['isComplete']==1 && $data['isSuccess']==1 && $data['hasErrors']==NULL){

            $files = $data['data'];
         //   print("file");
           // print_obj($files);
          //  die();

            $media_mime=implode('/',$files['metas'][0]['type']);

            if(isset($param['file_storage_dir'])){
                $file_relative_path='uploads/'.$param['file_storage_dir'].'/'.$files['metas'][0]['name'];
            }else{
                $file_relative_path='uploads/'.$files['metas'][0]['name'];
            } 

            $pathToImage=$files['metas'][0]['file'];

            //print_obj($param);die;


            if(isset($param['file_resize']) && $param['file_resize']==true){
                $this->load->library('image_lib');
                $config['image_library'] = 'gd2';
                $config['source_image'] = $pathToImage;
                $config['create_thumb'] = TRUE;
                $config['maintain_ratio'] = TRUE;
                $config['width']        = $param['file_resize_width'];
                $config['height']       = $param['file_resize_height'];

                $this->load->library('image_lib', $config);

                $this->image_lib->resize();
            }

            if(isset($param['file_compress']) && $param['file_compress']==true){

                if(in_array($media_mime, array('image/png','image/jpg','image/jpeg'))){
                    $source=$pathToImage;

                    $destination = str_replace('.'.$files['metas'][0]['extension'], '', $source). '.webp';
                    //print_obj($destination);
                    //die();

                    $options = [
                        'converters' => [
                          'cwebp', 'vips', 'imagick', 'gmagick', 'imagemagick', 'graphicsmagick', 'wpc', 'ewww', 'gd'
                        ],

                        // Any available options can be set here, they dribble down to all converters.
                        'metadata' => 'all',

                        // To override for specific converter, you can prefix with converter id:
                        'cwebp-metadata' => 'exif'
                    ];

                    WebPConvert::convert($source, $destination, $options);

                    $file_name=str_replace('.'.$files['metas'][0]['extension'], '.webp', $files['metas'][0]['name']);
                    $file_relative_path=str_replace($files['metas'][0]['name'], $file_name, $file_relative_path);
                    $file_disk_path=$destination;
                    $bytes=filesize($destination);
                    $file_mime='image/webp';
                    if ($bytes >= 1073741824){
                        $bytes = number_format($bytes / 1073741824, 2) . ' GB';
                    }elseif ($bytes >= 1048576){
                        $bytes = number_format($bytes / 1048576, 2) . ' MB';
                    }elseif ($bytes > 0){
                        $bytes = number_format($bytes / 1024, 2) . ' KB';
                    }else{
                        $bytes = '0 bytes';
                    }
                  
                    $file_size2=$bytes;
                    $file_size=filesize($destination);

                    @unlink($source); 
                }else{
                    $media_mime=implode('/',$files['metas'][0]['type']);
                    $file_name=$files['metas'][0]['name'];
                    $file_size2=$files['metas'][0]['size2'];
                    $file_size=$files['metas'][0]['size'];
                    $file_mime=$media_mime;
                }                  
            }else{
                $media_mime=implode('/',$files['metas'][0]['type']);
                $file_name=$files['metas'][0]['name'];
                $file_size2=$files['metas'][0]['size2'];
                $file_size=$files['metas'][0]['size'];
                $file_mime=$media_mime;
            }

            //$file_disk_path=$upload_dir.$file_name;

            $sdata=array(
                'storage_type'=>$storage_type,
                'storage_type_of'=>$file_type_of,
                'storage_type_id'=>$storage_type_id,
                'storage_parent_id'=>(isset($param['file_parent_id']))?$param['file_parent_id']:null,
                'media_disk_path'=>$file_relative_path,
                'media_disk_path_relative'=>$file_relative_path,
                'media_disk_name'=>$file_name,
                'media_org_name'=>$files['metas'][0]['old_name'].'.'.$files['metas'][0]['extension'],
                'media_size'=>$file_size,
                'media_size2'=>$file_size2,
                'media_mime'=>$file_mime,
                'media_uploaded_by'=>$param['file_uploaded_by'],
                'media_uploaded_date'=>date('Y-m-d H:i:s')
            );


            if($param['file_operation_type']=='new'){
                $temp_file_id=$this->sm->store_file($sdata,$db_group); 
            }else if($param['file_operation_type']=='update'){
                $file_found=$this->sm->get_file(array('storage_type'=>$storage_type,'storage_type_id'=>$storage_type_id),$db_group);

                //print_obj($file_logo_found);die;

                if(!empty($file_found)){
                    if(is_file($file_found->media_disk_path)){
                        @unlink($file_found->media_disk_path);
                        $this->sm->update_file($sdata,array('storage_id'=>$file_found->storage_id),$db_group);
                    }

                    $temp_file_id=$file_found->storage_id;
                }else{
                    $temp_file_id=$this->sm->store_file($sdata,$db_group);
                }
            }
             
            return $temp_file_id;

        }else if($data['isComplete']==NuLL && $data['hasErrors']==1 && $data['isSuccess']==NULL){
          return $data['errors'][0][0];
        }else if($data['isComplete']==1 && $data['hasErrors']==1 && $data['isSuccess']==NULL){
          return $data['errors'][0][0];
        }  
    }


    public function onUploadExcelFiles($param){
        $document_to_upload     =     $_FILES[$param['file_name']];

        $uploader = new Uploader();

        $file_types=explode(',', $param['file_types']);

        $file_size=isset($param['file_size'])?$param['file_size']:5;

        $file_limit=isset($param['file_limit'])?$param['file_limit']:1;

        $upload_dir=DIR_UPLOADS.'temp_files/';

        $document_data=array(
            'limit' => $file_limit,
            'maxSize' => $file_size,
            'extensions' => $file_types,
            'required' => true,
            'uploadDir' =>$upload_dir,
            'title' => array('auto', 10),
            'removeFiles' => true,
            'perms' => null,
            'onCheck' => null,
            'onError' => null,
            'onSuccess' =>null ,
            'onUpload' => '',
            'onComplete' => null,
            'onRemove' => ''
        );

        //print_obj($document_data);die;

       

        $data = $uploader->upload($document_to_upload, $document_data);

        if($data['isComplete']==1 && $data['isSuccess']==1 && $data['hasErrors']==NULL){

            $files = $data['data'];

            $file_disk_path=$files['metas'][0]['file'];

            return $file_disk_path;

        }else if($data['isComplete']==NuLL && $data['hasErrors']==1 && $data['isSuccess']==NULL){
          return $data['errors'][0][0];
        }else if($data['isComplete']==1 && $data['hasErrors']==1 && $data['isSuccess']==NULL){
          return $data['errors'][0][0];
        } 
    }


    public function onSendMail($param,$db_group=null)
    {
        $this->config->load('cms_config');
        $this->load->library('email');

            if(isset($param['is_superadmin']) && $param['is_superadmin']==true){
                $protocol=$this->config->item('mail_protocol');
                $smtp_host=$this->config->item('mail_server');
                $smtp_port=$this->config->item('mail_port');
                $smtp_user = $this->config->item('mail_user');
                $smtp_pass=$this->config->item('mail_password');
                $smtp_crypto=$this->config->item('mail_crypt');                
                $mailtype = $param['mail_type'];
                $mail_from=($param['mail_from']='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');              
            }else{
                $_email_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$param['inst_id'],'settings_type'=>'email_settings'),TRUE,$db_group);                

                if(!empty($_email_settings)){
                    $email_settings=unserialize($_email_settings->settings_value);

                    if(!empty($email_settings)){
                        $protocol = $email_settings['MAIL_PROTOCOL'];
                        $smtp_host = $email_settings['MAIL_SERVER'];
                        $smtp_user = $email_settings['MAIL_USER'];
                        $smtp_pass = $email_settings['MAIL_PASSWORD'];
                        $smtp_port = $email_settings['MAIL_PORT'];
                        $smtp_crypto = isset($email_settings['MAIL_CRYPTO']) ? $email_settings['MAIL_CRYPTO'] : $this->config->item('mail_crypt'); // FIXED

                        $mail_from = ($param['mail_from'] == 'webmaster') ? $email_settings['WEBMASTER_EMAIL'] : $email_settings['INFO_EMAIL']; // FIXED
                    }
                    else{
                        $protocol=$this->config->item('mail_protocol');
                        $smtp_host=$this->config->item('mail_server');
                        $smtp_port=$this->config->item('mail_port');
                        $smtp_user = $this->config->item('mail_user');
                        $smtp_pass=$this->config->item('mail_password');
                        $smtp_crypto=$this->config->item('mail_crypt');                
                        $mailtype = $param['mail_type'];
                        $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                    }
                    
                }else{
                    $protocol=$this->config->item('mail_protocol');
                    $smtp_host=$this->config->item('mail_server');
                    $smtp_port=$this->config->item('mail_port');
                    $smtp_user = $this->config->item('mail_user');
                    $smtp_pass=$this->config->item('mail_password');
                    $smtp_crypto=$this->config->item('mail_crypt');                
                    $mailtype = $param['mail_type'];
                    $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                }
            }

            $config = array(
                'protocol' => 'smtp',
                'smtp_host' => $smtp_host,
                'smtp_port' => $smtp_port,
                'smtp_user' => $mail_from,
                'smtp_pass' => $smtp_pass,
                'smtp_crypto'=>'ssl',
                'mailtype'  => $mailtype, 
                'charset'   => $this->config->item('charset'),
                'alt_message' => '',
                'priority'=>'1',
                'validate'=>TRUE,
                'wordwrap'=>TRUE
            );

            
        

        /*$config = array(
            'protocol'  => 'smtp',
            'smtp_host' => 'orion.herosite.pro',
            'smtp_port' => 465,
            'smtp_user' => 'agency@acadevo.in',
            'smtp_pass' => 'CzN{BQI)Xm8K4Y+d',
            'smtp_crypto' => 'ssl',
            'mailtype'  => 'html',
            'charset'   => 'utf-8',
            'newline'   => "\r\n",
            'crlf'      => "\r\n",
            'wordwrap'  => TRUE
        );*/

        $this->email->initialize($config);

        $this->email->from($mail_from, $param['mail_from_name']);
        $this->email->to($param['to_email']);
        $this->email->subject($param['mail_subject']);

        if($param['mail_type']=='html'){
            // Load the email template view
            $message = $this->theme->view($param['mail_view'], $param['mail_data'], TRUE);            
        }else if($param['mail_type']=='text'){
            $message = $param['mail_data'];  
        }
        
        $this->email->message($message);

        $this->email->send();

        //print_obj($this->email->print_debugger(array('headers')));

       if ($this->email->send()) {
            $msg= 'Email sent successfully.';
        } else {
            $msg= 'Email sending failed.<br><pre>' . print_r($this->email->print_debugger(array('headers')), true) . '</pre>';
        }

        return $msg;
    }


    public function onSendMail_v1($param,$db_group=null,$protocol='smtp'){
        $this->load->library('email');
        $this->config->load('cms_config');
        /*if($protocol=='smtp'){                

            if(isset($param['is_superadmin']) && $param['is_superadmin']==true){
                $config['protocol']=$this->config->item('mail_protocol');
                $config['smtp_host']=$this->config->item('mail_server');
                $config['smtp_port']=$this->config->item('mail_port');
                $config['smtp_user'] = $this->config->item('mail_user');
                $config['smtp_pass']=$this->config->item('mail_password');
                $config['smtp_crypto']=$this->config->item('mail_crypt');                
                $config['mailtype'] = $param['mail_type'];
                $mail_from=($param['mail_from']='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');              
            }else{
                $_email_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$param['inst_id'],'settings_type'=>'email_settings'),TRUE,$db_group);                

                if(!empty($_email_settings)){
                    $email_settings=unserialize($_email_settings->settings_value);

                    if(!empty($email_settings)){
                        $config['protocol'] = $email_settings['MAIL_PROTOCOL'];
                        $config['smtp_host'] = $email_settings['MAIL_SERVER'];
                        $config['smtp_user'] = $email_settings['MAIL_USER'];
                        $config['smtp_pass'] = $email_settings['MAIL_PASSWORD'];
                        $config['smtp_port'] = $email_settings['MAIL_PORT'];
                        $config['smtp_crypto'] = isset($email_settings['MAIL_CRYPTO']) ? $email_settings['MAIL_CRYPTO'] : $this->config->item('mail_crypt'); // FIXED

                        $mail_from = ($param['mail_from'] == 'webmaster') ? $email_settings['WEBMASTER_EMAIL'] : $email_settings['INFO_EMAIL']; // FIXED
                    }
                    else{
                        $config['protocol']=$this->config->item('mail_protocol');
                        $config['smtp_host']=$this->config->item('mail_server');
                        $config['smtp_port']=$this->config->item('mail_port');
                        $config['smtp_user'] = $this->config->item('mail_user');
                        $config['smtp_pass']=$this->config->item('mail_password');
                        $config['smtp_crypto']=$this->config->item('mail_crypt');                
                        $config['mailtype'] = $param['mail_type'];
                        $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                    }

                    
                }else{
                    $config['protocol']=$this->config->item('mail_protocol');
                    $config['smtp_host']=$this->config->item('mail_server');
                    $config['smtp_port']=$this->config->item('mail_port');
                    $config['smtp_user'] = $this->config->item('mail_user');
                    $config['smtp_pass']=$this->config->item('mail_password');
                    $config['smtp_crypto']=$this->config->item('mail_crypt');                
                    $config['mailtype'] = $param['mail_type'];
                    $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                }
            }      
        }

        $config['charset'] = 'utf-8';
        $config['newline'] = "\r\n";
        $config['crlf'] = "\r\n";
        $config['wordwrap'] = TRUE;*/

        if($protocol=='smtp'){
            if(isset($param['is_superadmin']) && $param['is_superadmin']==true){
                $protocol=$this->config->item('mail_protocol');
                $smtp_host=$this->config->item('mail_server');
                $smtp_port=$this->config->item('mail_port');
                $smtp_user = $this->config->item('mail_user');
                $smtp_pass=$this->config->item('mail_password');
                $smtp_crypto=$this->config->item('mail_crypt');                
                $mailtype = $param['mail_type'];
                $mail_from=($param['mail_from']='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');              
            }else{
                $_email_settings=$this->sm->get_system_settings(array('settings_inst_id'=>$param['inst_id'],'settings_type'=>'email_settings'),TRUE,$db_group);                

                if(!empty($_email_settings)){
                    $email_settings=unserialize($_email_settings->settings_value);

                    if(!empty($email_settings)){
                        $protocol = $email_settings['MAIL_PROTOCOL'];
                        $smtp_host = $email_settings['MAIL_SERVER'];
                        $smtp_user = $email_settings['MAIL_USER'];
                        $smtp_pass = $email_settings['MAIL_PASSWORD'];
                        $smtp_port = $email_settings['MAIL_PORT'];
                        $smtp_crypto = isset($email_settings['MAIL_CRYPTO']) ? $email_settings['MAIL_CRYPTO'] : $this->config->item('mail_crypt'); // FIXED

                        $mail_from = ($param['mail_from'] == 'webmaster') ? $email_settings['WEBMASTER_EMAIL'] : $email_settings['INFO_EMAIL']; // FIXED
                    }
                    else{
                        $protocol=$this->config->item('mail_protocol');
                        $smtp_host=$this->config->item('mail_server');
                        $smtp_port=$this->config->item('mail_port');
                        $smtp_user = $this->config->item('mail_user');
                        $smtp_pass=$this->config->item('mail_password');
                        $smtp_crypto=$this->config->item('mail_crypt');                
                        $mailtype = $param['mail_type'];
                        $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                    }
                    
                }else{
                    $protocol=$this->config->item('mail_protocol');
                    $smtp_host=$this->config->item('mail_server');
                    $smtp_port=$this->config->item('mail_port');
                    $smtp_user = $this->config->item('mail_user');
                    $smtp_pass=$this->config->item('mail_password');
                    $smtp_crypto=$this->config->item('mail_crypt');                
                    $mailtype = $param['mail_type'];
                    $mail_from=($param['mail_from']=='webmaster')?$this->config->item('webmaster_email'):$this->config->item('info_email');
                }
            }

            $config = array(
                'protocol' => 'smtp',
                'smtp_host' => $smtp_host,
                'smtp_port' => $smtp_port,
                'smtp_user' => $mail_from,
                'smtp_pass' => $smtp_pass,
                'smtp_crypto'=>$smtp_crypto,
                'mailtype'  => $mailtype, 
                'charset'   => $this->config->item('charset'),
                'alt_message' => '',
                'priority'=>'1',
                'validate'=>TRUE,
                'wordwrap'=>TRUE
            );

            //echo '<pre>';print_r($config);

            $this->email->initialize($config);

            if($mail_type=='html'){
                $this->email->set_header('Content-Type', 'text/html');
                $this->email->set_mailtype('html');
            }
        }else{
            if($mail_type=='html'){
                $this->email->set_header('Content-Type', 'text/html');
                $this->email->set_mailtype('html');
            }
        }

        // Initialize the email library with the configuration
        $this->email->initialize($config);
        
        $mail_from_name=$param['mail_from_name'];
        $to_email=$param['to_email'];
        $mail_subject=$param['mail_subject'];            

        $this->email->from($mail_from, $mail_from_name);
        $this->email->to($to_email);
        $this->email->subject($mail_subject);

        if($param['mail_type']=='html'){
            // Load the email template view
            $message = $this->theme->view($param['mail_view'], $param['mail_data'], TRUE);            
        }else if($param['mail_type']=='text'){
            $message = $param['mail_data'];  
        }

        $this->email->set_mailtype($param['mail_type']); // Set the email format to HTML

        //print_obj($param);

        $this->email->message($message);

        $this->email->send();

        //print_obj($this->email->print_debugger(array('headers', 'subject', 'body')));

        if ($this->email->send()) {
            if($param['debug']==TRUE){
                $debug=$this->email->print_debugger(array('headers'));
                $msg=$debug;
                $log_msg=$msg;
            }else if($param['debug']==FALSE){
                $msg='Mail has been sent';
                $log_msg='Mail has been sent to '.$to_email;
            }
        } else {
            if($param['debug']==TRUE){
                $debug=$this->email->print_debugger(array('headers'));

                $msg=$debug;
                $log_msg=$msg;
            }else if($param['debug']==FALSE){
                $msg='There was an error in mail settings.';
                $log_msg=$msg;
            }
        }

        if(isset($param['mail_log']) && $param['mail_log']==true){

            $notify_data=array(
                'notify_inst_id'=>$param['inst_id'],
                'notify_inst_parent_id'=>$param['inst_parent_id'],
                'notify_type'=>$param['notify_type'],
                'notify_type_data'=>$param['notify_type_data'],
                'notify_type_id'=>$param['notify_type_id'],
                'notify_has_attachment'=>$param['notify_has_attachment'],
                'notify_value'=>json_encode($param['mail_data']),
                'notify_status'=>$param['notify_status'],
                'notify_date'=>date('Y-m-d H:i:s')
            );

            $this->sm->store_notification($notify_data);

            $mail_log=array(
                'log_user_type'=>$param['log_user_type'],
                'log_user_id'=>$param['log_user_id'],
                'log_details_type'=>$param['log_type'],
                'log_details'=>$log_msg
            );

            create_log($mail_log);
        }

        

        return $msg;
    }

    public function onSendMail_phpmailer($param, $db_group = null, $protocol = 'smtp') {
        /*require_once APPPATH . 'third_party/PHPMailer/Exception.php';
        require_once APPPATH . 'third_party/PHPMailer/PHPMailer.php';
        require_once APPPATH . 'third_party/PHPMailer/SMTP.php';*/

        $mail = new PHPMailer(true);
        $this->config->load('cms_config');

        try {
            if ($protocol == 'smtp') {
                if (isset($param['is_superadmin']) && $param['is_superadmin'] == true) {
                    $smtpHost = $this->config->item('mail_server');
                    $smtpPort = $this->config->item('mail_port');
                    $smtpUser = $this->config->item('mail_user');
                    $smtpPass = $this->config->item('mail_password');
                    $smtpCrypto = $this->config->item('mail_crypt');
                    $mailFrom = ($param['mail_from'] == 'webmaster') ? $this->config->item('webmaster_email') : $this->config->item('info_email');
                } else {
                    $_email_settings = $this->sm->get_system_settings(['settings_inst_id' => $param['inst_id'], 'settings_type' => 'email_settings'], true, $db_group);
                    if (!empty($_email_settings)) {
                        $email_settings = unserialize($_email_settings->settings_value);
                        if (!empty($email_settings)) {
                            $smtpHost = $email_settings['MAIL_SERVER'];
                            $smtpPort = $email_settings['MAIL_PORT'];
                            $smtpUser = $email_settings['MAIL_USER'];
                            $smtpPass = $email_settings['MAIL_PASSWORD'];
                            $smtpCrypto = isset($email_settings['MAIL_CRYPTO']) ? $email_settings['MAIL_CRYPTO'] : $this->config->item('mail_crypt');
                            $mailFrom = ($param['mail_from'] == 'webmaster') ? $email_settings['WEBMASTER_EMAIL'] : $email_settings['INFO_EMAIL'];
                        } else {
                            $smtpHost = $this->config->item('mail_server');
                            $smtpPort = $this->config->item('mail_port');
                            $smtpUser = $this->config->item('mail_user');
                            $smtpPass = $this->config->item('mail_password');
                            $smtpCrypto = $this->config->item('mail_crypt');
                            $mailFrom = ($param['mail_from'] == 'webmaster') ? $this->config->item('webmaster_email') : $this->config->item('info_email');
                        }
                    } else {
                        $smtpHost = $this->config->item('mail_server');
                        $smtpPort = $this->config->item('mail_port');
                        $smtpUser = $this->config->item('mail_user');
                        $smtpPass = $this->config->item('mail_password');
                        $smtpCrypto = $this->config->item('mail_crypt');
                        $mailFrom = ($param['mail_from'] == 'webmaster') ? $this->config->item('webmaster_email') : $this->config->item('info_email');
                    }
                }

                // PHPMailer SMTP configuration
                $mail->isSMTP();
                $mail->Host = $smtpHost;
                $mail->SMTPAuth = true;
                $mail->Username = $smtpUser;
                $mail->Password = $smtpPass;
                $mail->SMTPSecure = $smtpCrypto; // 'ssl' or 'tls'
                $mail->Port = $smtpPort;
            }

            $mail->CharSet = 'utf-8';
            $mail->setFrom($mailFrom, $param['mail_from_name']);
            $mail->addAddress($param['to_email']);
            $mail->Subject = $param['mail_subject'];

            if ($param['mail_type'] == 'html') {
                $message = $this->theme->view($param['mail_view'], $param['mail_data'], true);
                $mail->isHTML(true);
            } else if ($param['mail_type'] == 'text') {
                $message = $param['mail_data'];
                $mail->isHTML(false);
            }

            $mail->Body = $message;

            if ($mail->send()) {
                if ($param['debug'] == true) {
                    $msg = 'Mail sent successfully (debug mode).';
                    $log_msg = $msg;
                } else {
                    $msg = 'Mail has been sent';
                    $log_msg = 'Mail has been sent to ' . $param['to_email'];
                }
            } else {
                $msg = 'There was an error sending the mail.';
                $log_msg = $msg;
            }
        } catch (Exception $e) {
            if ($param['debug'] == true) {
                $msg = 'Mailer Error: ' . $mail->ErrorInfo;
                $log_msg = $msg;
            } else {
                $msg = 'There was an error in mail settings.';
                $log_msg = $msg;
            }
        }

        // Log if required
        if (isset($param['mail_log']) && $param['mail_log'] == true) {
            $notify_data = [
                'notify_inst_id' => $param['inst_id'],
                'notify_inst_parent_id' => $param['inst_parent_id'],
                'notify_type' => $param['notify_type'],
                'notify_type_data' => $param['notify_type_data'],
                'notify_type_id' => $param['notify_type_id'],
                'notify_has_attachment' => $param['notify_has_attachment'],
                'notify_value' => json_encode($param['mail_data']),
                'notify_status' => $param['notify_status'],
                'notify_date' => date('Y-m-d H:i:s')
            ];

            $this->sm->store_notification($notify_data);

            $mail_log = [
                'log_user_type' => $param['log_user_type'],
                'log_user_id' => $param['log_user_id'],
                'log_details_type' => $param['log_type'],
                'log_details' => $log_msg
            ];

            create_log($mail_log);
        }

        return $msg;
    }

}

MMCT - 2023