File: /home/retile.ru/public_html/admin/model/extension/module/d_twig_manager.php
<?php
/*
 *  location: admin/model
 */
class ModelExtensionModuleDTwigManager extends Model {
    /**
     Modal functions
     **/
    public function editTheme($store_id, $theme, $route, $code) {
        $this->db->query("DELETE FROM `" . DB_PREFIX . "theme` WHERE store_id = '" . (int)$store_id . "' AND theme = '" . $this->db->escape($theme) . "' AND route = '" . $this->db->escape($route) . "'");
        
        $this->db->query("INSERT INTO `" . DB_PREFIX . "theme` SET store_id = '" . (int)$store_id . "', theme = '" . $this->db->escape($theme) . "', route = '" . $this->db->escape($route) . "', code = '" . $this->db->escape($code) . "', date_added = NOW()");
    }
    public function deleteTheme($theme_id) {
        $this->db->query("DELETE FROM `" . DB_PREFIX . "theme` WHERE theme_id = '" . (int)$theme_id . "'");
    }
    public function getTheme($store_id, $theme, $route) {
        $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "theme` WHERE store_id = '" . (int)$store_id . "' AND theme = '" . $this->db->escape($theme) . "' AND route = '" . $this->db->escape($route) . "'");
        return $query->row;
    }
    
    public function getThemes($start = 0, $limit = 10) {
        if ($start < 0) {
            $start = 0;
        }
        if ($limit < 1) {
            $limit = 10;
        }       
        
        $query = $this->db->query("SELECT *, (SELECT name FROM `" . DB_PREFIX . "store` s WHERE s.store_id = t.store_id) AS store FROM `" . DB_PREFIX . "theme` t ORDER BY t.date_added DESC LIMIT " . (int)$start . "," . (int)$limit);
        return $query->rows;
    }
    
    public function getTotalThemes() {
        $query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "theme`");
        return $query->row['total'];
    }
    public function installDatabase(){
        
        $this->db->query("CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "theme` (
          `theme_id` int(11) NOT NULL AUTO_INCREMENT,
          `store_id` int(11) NOT NULL,
          `theme` varchar(64) NOT NULL,
          `route` varchar(64) NOT NULL,
          `code` mediumtext NOT NULL,
          `date_added` datetime NOT NULL,
          PRIMARY KEY (`theme_id`)
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;");
        $result = $this->db->query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '".DB_DATABASE."' AND TABLE_NAME = '" . DB_PREFIX . "theme' ORDER BY ORDINAL_POSITION")->rows; 
        $columns = array();
        foreach($result as $column){
            $columns[] = $column['COLUMN_NAME'];
        }
        if(in_array('code', $columns)){
             $this->db->query("ALTER TABLE `" . DB_PREFIX . "theme` MODIFY COLUMN `code` mediumtext NOT NULL");
        }
        if(!in_array('date_added', $columns)){
             $this->db->query("ALTER TABLE `" . DB_PREFIX . "theme` ADD `date_added` datetime NOT NULL");
        }
    }
    public function isCompatible(){
        $d_opencart_patch = (file_exists(DIR_SYSTEM.'library/d_shopunity/extension/d_opencart_patch.json'));
        if(!$d_opencart_patch){
            return false;
        }
        $this->load->model('extension/d_opencart_patch/modification');
        $compatibility = $this->model_extension_d_opencart_patch_modification->getModificationByName('d_twig_manager');
        if($compatibility){
            if(!empty($compatibility['status'])){
                return true;
            }
        }
        return false;
    }
    public function installCompatibility(){
        $d_opencart_patch = (file_exists(DIR_SYSTEM.'library/d_shopunity/extension/d_opencart_patch.json'));
        if(!$d_opencart_patch){
            return false;
        }
        if(!$this->isCompatible()){
            $this->load->model('extension/d_opencart_patch/modification');
            $this->model_extension_d_opencart_patch_modification->setModification('d_twig_manager.xml', 0);
            $this->model_extension_d_opencart_patch_modification->setModification('d_twig_manager.xml', 1);
            $this->installDatabase();
            $this->model_extension_d_opencart_patch_modification->refreshCache();
            $this->load->model('extension/d_opencart_patch/url');
            $this->response->redirect($this->model_extension_d_opencart_patch_url->link($this->request->get['route']));
        }
        return true;
    }
    public function uninstallCompatibility(){
        $d_opencart_patch = (file_exists(DIR_SYSTEM.'library/d_shopunity/extension/d_opencart_patch.json'));
        if(!$d_opencart_patch){
            return false;
        }
        $this->load->model('extension/d_opencart_patch/modification');
        $this->model_extension_d_opencart_patch_modification->setModification('d_twig_manager.xml', 0);
        $this->model_extension_d_opencart_patch_modification->refreshCache();
        return true;
    }
        
    /**
     Helper functions
     **/
    /*
    *   Format the link to work with ajax requests
    */
    public function ajax($route, $url = '', $ssl = true){
        return str_replace('&', '&', $this->url->link($route, $url, $ssl));
    }
    public function getSettingValue($key, $store_id = 0) {
        $query = $this->db->query("SELECT value FROM " . DB_PREFIX . "setting WHERE store_id = '" . (int)$store_id . "' AND `key` = '" . $this->db->escape($key) . "'");
        if ($query->num_rows) {
            return $query->row['value'];
        } else {
            return null;    
        }
    }
}
?>