HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/dmstechonline/crm.chaitanyahospitalvirar.com/application/controllers/admin/Language.php
<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}

class Language extends Admin_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $this->session->set_userdata('top_menu', 'setup');
        $this->session->set_userdata('sub_menu', 'schsettings/index');
        $this->session->set_userdata('inner_menu', 'language/index');
        $data['title']         = $this->lang->line('language_list');
        $language_result       = $this->language_model->get();
        $selected_lang         = $this->setting_model->get();
        $json_languages        = json_decode($selected_lang[0]['languages']);
        $data['selected_lang'] = $json_languages;
        $data['languagelist']  = $language_result;
        $this->load->view('layout/header', $data);
        $this->load->view('admin/language/languageList', $data);
        $this->load->view('layout/footer', $data);
    }

    public function view($id)
    {
        $data['title']    = $this->lang->line('language_list');
        $language         = $this->language_model->get($id);
        $data['language'] = $language;
        $this->load->view('layout/header', $data);
        $this->load->view('admin/language/sectionShow', $data);
        $this->load->view('layout/footer', $data);
    }

    public function editlanguage()
    {
        $recordid      = $this->input->post('recordid');
        $key_id        = $this->input->post('key_id');
        $languageid    = $this->input->post('langid');
        $pharses_value = $this->input->post('value');
        if ($recordid == 0 && $pharses_value == "") {

        } else if ($recordid > 0) {
            $d = array('id' => $recordid, 'pharses' => $pharses_value, 'lang_id' => $languageid);
            $this->langpharses_model->add($d);
        } else if ($recordid == 0 && $pharses_value != "") {
            $d = array('key_id' => $key_id, 'pharses' => $pharses_value, 'lang_id' => $languageid);
            $this->langpharses_model->add($d);
        }
        $arr = array('status' => 1, 'message' => $this->lang->line('update_message'));
        echo json_encode($arr);
    }

    public function delete($id)
    {
        $selected_lang = $this->customlib->getSessionLanguage();
        $language      = $this->language_model->get($id);
        $name          = $language['language'];
        $data['title'] = $this->lang->line('language_list');

        if ($language['is_deleted'] == "no") {
            $this->session->set_flashdata('msg', '<div class="alert alert-info">' . $this->lang->line('default_language_cannot_be_deleted') . ' </div>');
        } else {
            if ($selected_lang == $id) {
                $this->session->set_flashdata('msg', '<div class="alert alert-info">' . $this->lang->line('you_cannot_delete_your_current_selected_language') . ' </div>');
            } else {
                $this->language_model->remove($id);
                $setting_result = $this->setting_model->get();
                $setting_id     = $setting_result[0]["id"];
                $last_languages = json_decode($setting_result[0]['languages']);
                foreach ($last_languages as $value) {
                    if ($id != $value) {
                        $languages[] = $value;
                    }
                }

                $language_id = json_encode($languages);
                $data        = array('id' => $setting_id, 'languages' => $language_id);
                $this->setting_model->add($data);
                $directory_app_files = APPPATH . '/language/' . $name . '/app_files/';
                $directory_language  = APPPATH . '/language/' . $name . "/";
                if (is_dir($directory_app_files)) {

                    $files = glob($directory_app_files . '*', GLOB_MARK);

                    foreach ($files as $file) {

                        unlink($file);
                    }

                    rmdir($directory_app_files);
                }
                if (is_dir($directory_language)) {

                    $files = glob($directory_language . '*', GLOB_MARK);

                    foreach ($files as $file) {

                        unlink($file);
                    }

                    rmdir($directory_language);
                }
                $this->session->set_flashdata('msg', '<div class="alert alert-success">' . $this->lang->line('language_deleted_successfully') . '</div>');
            }
        }
        redirect('admin/language/index');
    }

    public function create()
    {
        if (!$this->rbac->hasPrivilege('languages', 'can_add')) {
            access_denied();
        }
        $data['title'] = 'Add Language';
        $this->form_validation->set_rules(
            'language', $this->lang->line('language'), array(
                'required',
                array('check_exists', array($this->language_model, 'valid_check_exists')),
            )
        );
        $this->form_validation->set_rules("short_code", $this->lang->line('short_code'), "trim|required|xss_clean");
        $this->form_validation->set_rules("country_code", $this->lang->line('country_code'), "trim|required|xss_clean");

        if ($this->form_validation->run() == false) {
            $msg        = array('language' => form_error('language'), 'short_code' => form_error('short_code'), 'country_code' => form_error('country_code'));
            $json_array = array('status' => 'fail', 'error' => $msg, 'message' => '');
        } else {
            $directory = APPPATH . '/language/' . $this->input->post('language');
            if (!is_dir($directory)) {
                mkdir($directory, 0777);
                $fromDir = APPPATH . '/language/English';
                $this->copydirr($fromDir, $directory, $chmod = 0757, $verbose = false);
            }
            $data = array(
                'language'     => $this->input->post('language'),
                'short_code'   => $this->input->post('short_code'),
                'country_code' => $this->input->post('country_code'),
            );
            $this->language_model->add($data);
            $json_array = array('status' => 'success', 'error' => '', 'message' => $this->lang->line('success_message'));
        }
        echo json_encode($json_array);
    }

    public function addPharses($id)
    {
        $language                 = $this->language_model->get($id);
        $data['title']            = $this->lang->line('edit_Phrases_for') . ' ' . $language['language'];
        $data['lang1']            = $language['language'];
        $language_pharses         = $this->langpharses_model->get($id);
        $data['language_pharses'] = $language_pharses;
        $data['id']               = $id;
        if ($this->input->server('REQUEST_METHOD') == 'POST') {
            $ar = $this->input->post('i[]');
            foreach ($ar as $key => $a) {
                $pharsesid     = $this->input->post('pharsesid' . $a);
                $pharses_value = $this->input->post('pharses' . $a);
                $languageid    = $this->input->post('languageid');
                if ($pharsesid == 0 && $pharses_value == "") {

                } else if ($pharsesid > 0) {
                    $d = array('id' => $pharsesid, 'pharses' => $pharses_value, 'lang_id' => $languageid);
                    $this->langpharses_model->add($d);
                } else if ($pharsesid == 0 && $pharses_value != "") {
                    $d = array('key_id' => $a, 'pharses' => $pharses_value, 'lang_id' => $languageid);
                    $this->langpharses_model->add($d);
                }
            }
            redirect('admin/language/addPharses/' . $languageid);
        } else {
            $this->load->view('layout/header', $data);
            $this->load->view('admin/language/addPharse', $data);
            $this->load->view('layout/footer', $data);
        }
    }

    public function edit($id)
    {
        $data['title']   = $this->lang->line('edit_language');
        $data['id']      = $id;
        $section         = $this->language_model->get($id);
        $data['section'] = $section;
        $this->form_validation->set_rules('section', $this->lang->line('language'), 'trim|required|xss_clean');
        if ($this->form_validation->run() == false) {
            $this->load->view('layout/header', $data);
            $this->load->view('admin/language/sectionEdit', $data);
            $this->load->view('layout/footer', $data);
        } else {
            $data = array(
                'id'      => $id,
                'section' => $this->input->post('section'),
            );
            $this->language_model->add($data);
            $this->session->set_flashdata('msg', '<div class="alert alert-success text-center">' . $this->lang->line('update_message') . '</div>');
            redirect('sections/index');
        }
    }

    public function migratelang()
    {
        $data = array();
        $this->load->library('langconvert');
        $language_pharses = $this->langpharses_model->getByLangAfter(4, 691);
        $language_id      = 90; // change language id.
        $convert_from     = 'en'; //change from langauge
        $convert_to       = 'en'; //change to langauge
        $text             = "";
        end($language_pharses);
        $key_end = key($language_pharses);
        foreach ($language_pharses as $key => $value) {
            $string = $value['pharses'];

            if ($key_end != $key) {
                $text .= $value['id'] . " " . $string . "\n";
            } else {
                $text .= $value['id'] . " " . $string;
            }
        }
        $result      = $this->langconvert->yandexTranslate($convert_from, $convert_to, $text);
        $json_result = json_decode($result);
        $a           = explode("<br />", $json_result->text[0]);
        $array       = array();
        foreach ($a as $a_key => $a_value) {
            preg_match_all('/\d+/', $a_value, $matches);
            $text   = preg_replace('/\d+/u', '', $a_value);
            $key_id = $matches[0];
            $data   = array(
                'lang_id' => $language_id,
                'key_id'  => $key_id[0],
                'pharses' => mb_convert_case(ltrim($text), MB_CASE_TITLE, "UTF-8"),
            );
            $array[] = $data;
        }
        print_r($array);
        exit();
        $this->db->insert_batch('lang_pharses', $array);
        echo $this->lang->line('record_inserted_successfully');
        exit();
    }

    public function form_validation_trans()
    {
        $data         = array();
        $final_data   = array();
        $lang_pharses = array();
        $this->load->library('langconvert');
        $language_pharses = array(array('key' => 'create', 'pharses' => 'create'));
        if (file_exists(FCPATH . "application/language/English/form_validation_lang.php")) {

            $file_content = file(FCPATH . "application/language/English/form_validation_lang.php");
            $newdata      = $file_content;

            for ($i = 1; $i < 33; $i++) {

                $exp     = explode("=", $newdata[$i]);
                $key     = $exp[0];
                $pharses = '';
                if (isset($exp[1])) {
                    $pharses = $exp[1];
                }
                $lang_pharses[$key] = $pharses;
            }
        }

        $language_id  = 90; // change language id.
        $convert_from = 'en'; //change from langauge
        $convert_to   = 'hi'; //change to langauge
        $text         = "";
        end($lang_pharses);
        $key_end = key($lang_pharses);
        foreach ($lang_pharses as $key => $value) {
            $field_replace = str_replace('{field}', '0', $value);
            $param_replace = str_replace('{param}', '9', $field_replace);
            $string        = str_replace(';', '', $param_replace);
            $text .= "+" . $string;
        }
        $result      = $this->langconvert->yandexTranslate($convert_from, $convert_to, $text);
        $json_result = json_decode($result);
        $exp_json    = explode("+", $json_result->text[0]);
        $j           = 0;
        foreach ($lang_pharses as $lkey => $lvalue) {
            if (isset($exp_json[$j + 1])) {
				
                $field_revert = str_replace('0', '{field}', $exp_json[$j + 1]);
                $param_revert = str_replace('9', '{param}', $field_revert);

                $final_data[$lkey] = $param_revert;
            } else {
                $final_data[$lkey] = '';
            }

            $j++;
        }
    }

    public function languagetest()
    {
        $data         = array();
        $final_data   = array();
        $lang_pharses = array();
        $this->load->library('langconvert');
        if (file_exists(FCPATH . "application/language/English/app_files/system_lang.php")) {
            $file_content = file(FCPATH . "application/language/English/app_files/system_lang.php");
            $newdata      = $file_content;

            for ($i = 1; $i < 500; $i++) {

                $exp     = explode("=", $newdata[$i]);
                $key     = $exp[0];
                $pharses = '';
                if (isset($exp[1])) {
                    $pharses = $exp[1];
                }
                $lang_pharses[$key] = $pharses;
            }
        }
        $convert_from = 'en'; //change from langauge
        $convert_to   = 'yi'; //change to langauge
        $text         = "";
        end($lang_pharses);
        $key_end = key($lang_pharses);
        foreach ($lang_pharses as $key => $value) {

            $string = str_replace(';', '', $value);

            $text .= "+" . $string;
        }
        $result      = $this->langconvert->yandexTranslate($convert_from, $convert_to, $text);
        $json_result = json_decode($result);
        $exp_json    = explode("+", $json_result->text[0]);

        $j = 0;
        foreach ($lang_pharses as $lkey => $lvalue) {
            if (isset($exp_json[$j + 1])) {
                $final_data[$lkey] = $exp_json[$j + 1];
            } else {
                
            }

            $j++;
        }
        $this->writeTranslateText($language = 'Yiddish', $final_data);
    }

    public function languagetest2()
    {
        $data         = array();
        $final_data   = array();
        $lang_pharses = array();
        $this->load->library('langconvert');
        $language_pharses = array(array('key' => 'create', 'pharses' => 'create'));
        if (file_exists(FCPATH . "application/language/English/app_files/system_lang.php")) {

            $file_content = file(FCPATH . "application/language/English/app_files/system_lang.php");
            $newdata      = $file_content;
            for ($i = 501; $i < 961; $i++) {

                $exp     = explode("=", $newdata[$i]);
                $key     = $exp[0];
                $pharses = '';
                if (isset($exp[1])) {
                    $pharses = $exp[1];
                }
                $lang_pharses[$key] = $pharses;
            }
        }

        $language_id  = 90; // change language id.
        $convert_from = 'en'; //change from langauge
        $convert_to   = 'yi'; //change to langauge
        $text         = "";
        end($lang_pharses);
        $key_end = key($lang_pharses);
        foreach ($lang_pharses as $key => $value) {

            $string = str_replace(';', '', $value);

            $text .= "+" . $string;
        }
        $result      = $this->langconvert->yandexTranslate($convert_from, $convert_to, $text);
        $json_result = json_decode($result);
        $exp_json    = explode("+", $json_result->text[0]);

        $j = 0;
        foreach ($lang_pharses as $lkey => $lvalue) {
            if (isset($exp_json[$j + 1])) {
                $final_data[$lkey] = $exp_json[$j + 1];
            } else {
                
            }

            $j++;
        }
        $this->updateTranslateText($language = 'Yiddish', $final_data);
    }     

    public function copydirr($fromDir, $toDir, $chmod = 0757, $verbose = false)
    {
        $errors   = array();
        $messages = array();
        if (!is_writable($toDir)) {
            $errors[] = 'target ' . $toDir . ' is not writable';
        }

        if (!is_dir($toDir)) {
            $errors[] = 'target ' . $toDir . ' is not a directory';
        }

        if (!is_dir($fromDir)) {
            $errors[] = 'source ' . $fromDir . ' is not a directory';
        }

        if (!empty($errors)) {
            if ($verbose) {
                foreach ($errors as $err) {
                    echo '<strong>Error</strong>: ' . $err . '<br />';
                }
            }

            return false;
        }

        $exceptions = array('.', '..');
        $handle     = opendir($fromDir);
        while (false !== ($item = readdir($handle))) {
            if (!in_array($item, $exceptions)) {
                //* cleanup for trailing slashes in directories destinations
                $from = str_replace('//', '/', $fromDir . '/' . $item);
                $to   = str_replace('//', '/', $toDir . '/' . $item);
                //*/
                if (is_file($from)) {
                    if (@copy($from, $to)) {
                        chmod($to, $chmod);
                        touch($to, filemtime($from)); // to track last modified time
                        $messages[] = 'File copied from ' . $from . ' to ' . $to;
                    } else {
                        $errors[] = 'cannot copy file from ' . $from . ' to ' . $to;
                    }
                }
                if (is_dir($from)) {
                    if (@mkdir($to)) {
                        chmod($to, $chmod);
                        $messages[] = 'Directory created: ' . $to;
                    } else {
                        $errors[] = 'cannot create directory ' . $to;
                    }
                    $this->copydirr($from, $to, $chmod, $verbose);
                }
            }
        }

        closedir($handle);
        return true;
    }

    public function active_language($language_id)
    {
        $setting_result = $this->setting_model->get();
        $id             = $setting_result[0]["id"];
        $data           = array('id' => $id, 'lang_id' => $language_id);
        $this->setting_model->add($data);
        $this->load->helper('lang');
        set_language($language_id);
        redirect('admin/language');
    }

    public function write_lang_file($language, $writedata)
    {
        if (!is_dir(FCPATH . "application/language/" . $language)) {
            mkdir(FCPATH . "application/language/" . $language);
            mkdir(FCPATH . "application/language/" . $language . "/app_files");
            $my_file = FCPATH . "application/language/" . $language . "/app_files/system_lang.php";
            $handle  = fopen($my_file, 'w') or die('Cannot open file:  ' . $my_file);
            $sta     = '$lang[';
            fwrite($handle, "<?php" . "\n");
            $i  = 0;
            $tr = '"';
            foreach ($writedata as $sakey => $savalue) {
                $data = $sta . "'" . $savalue["key"] . "'] =  " . $tr . $savalue["pharses"] . $tr . ";";
                print_r($data . "<br/>");
                fwrite($handle, $data . "\n");
            }

            fwrite($handle, "?>" . "\n");
            $i++;
        }
        echo $i;
    }

    public function create_language_file()
    {
        $language_result = $this->language_model->get();
        foreach ($language_result as $langkey => $langvalue) {
            $lang_id   = $langvalue["id"];
            $language  = $langvalue["language"];
            $key_query = $this->db->select("*")->order_by("key", "asc")->get("lang_keys");
            $result    = $key_query->result_array();
            $lang_arr  = array();
            $i         = 0;
            foreach ($result as $key => $value) {
                $id                      = $value["id"];
                $key                     = $value["key"];
                $pharses_query           = $this->db->select("*")->where("key_id", $id)->where("lang_id", $lang_id)->get("lang_pharses");
                $lang_pharses_data       = $pharses_query->row_array();
                $pharses                 = $lang_pharses_data["pharses"];
                $lang_arr[$i]["key"]     = $key;
                $lang_arr[$i]["pharses"] = $pharses;
                $i++;
            }
            $this->write_lang_file($language, $lang_arr);
        }
    }

    public function select_language($language_id)
    {
        $this->load->model("setting_model");
        $setting_result = $this->setting_model->get();
        $id             = $setting_result[0]["id"];
        $last_languages = json_decode($setting_result[0]['languages']);
        foreach ($last_languages as $value) {
            $languages[] = $value;
        }
        $languages[] = $language_id;
        $language_id = json_encode($languages);
        $data        = array('id' => $id, 'languages' => $language_id);
        $this->setting_model->add($data);
        $this->load->view('admin/language/languageSwitcher');
    }

    public function unselect_language($language_id)
    {
        $this->load->model("setting_model");
        $setting_result = $this->setting_model->get();
        $id             = $setting_result[0]["id"];
        $last_languages = json_decode($setting_result[0]['languages']);

        foreach ($last_languages as $value) {
            if ($language_id != $value) {
                $languages[] = $value;
            }
        }

        $language_id = json_encode($languages);
        $data        = array('id' => $id, 'languages' => $language_id);
        $this->setting_model->add($data);
        $this->load->view('admin/language/languageSwitcher');
    }

    public function user_language($lang_id)
    {
        $session                                              = $this->session->userdata('hospitaladmin');        
        $id                                                   = $session['id'];
        $data['lang_id']                                      = $lang_id;
        $language_result                                      = $this->language_model->set_userlang($id, $data);
        $id                                                   = $session['id'];        
        $lang_data                                            = $this->language_model->get($lang_id);		
        $this->session->userdata['hospitaladmin']['language'] = array('lang_id' => $lang_id, 'language' => $lang_data['language']);         
        $this->session->userdata['hospitaladmin']['is_rtl']     = $lang_data['is_rtl'];      
        
        set_language($lang_id);
    }

    public function rtl()
    {
        $session= $this->session->userdata('hospitaladmin');      
        $id     = $this->input->post('id');
        $status = $this->input->post('status');
        
        if ($id != '') {
            $data['id']     = $id;
            
            if ($status == 'yes') {
                $is_rtl = "yes";
            } else {
                $is_rtl = "no";
            }
            
            $data['is_rtl'] = $status;
            $this->language_model->add($data);         
            
            if($session['language']['lang_id'] == $id){                      
                $this->session->userdata['hospitaladmin']['is_rtl']     = $is_rtl; 
            }          
           
            echo json_encode(array('status' => '1')); 
            
        } else {
           
            echo json_encode(array('status' => '0'));             
        }
    }

    public function update()
    {
        print_r($_SERVER);
    }
    
    public function defoult_language($lang_id)
    {
        $this->db->set('lang_id', $lang_id); 
        $this->db->update('sch_settings');
        
        $lang_data  = $this->language_model->get($lang_id);
        $this->session->userdata['hospitaladmin']['language'] = array('lang_id' => $lang_id, 'language' => $lang_data['language']);          
        $this->session->userdata['hospitaladmin']['is_rtl']     = $lang_data['is_rtl'];        
    }	
	
}