private function installExtension()

in 3.0.x-and-above/upload/catalog/model/extension/module/facebook_business.php [218:272]


    private function installExtension($user_group_id = 0) {
        // Install extension
        $extension_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "extension` WHERE `type` = 'module' AND `code` = 'facebook_business'");

        if (!$extension_query->num_rows) {
            $this->db->query("INSERT INTO `" . DB_PREFIX . "extension` SET `type` = 'module', `code` = 'facebook_business'");
        }
        
        // Add custom table
        $this->db->query("
          CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "product_to_facebook` (
            `product_to_facebook_id` INT(11) NOT NULL AUTO_INCREMENT,
            `product_id` INT(11) NOT NULL,
            `google_product_category` int(16) NOT NULL DEFAULT 0,
            `condition` varchar(20) NOT NULL,
            `age_group` varchar(50) NOT NULL,
            `color` varchar(255) NOT NULL,
            `gender` varchar(20) NOT NULL,
            `material` varchar(255) NOT NULL,
            `pattern` varchar(255) NOT NULL,
            PRIMARY KEY (`product_to_facebook_id`)
          ) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;");

        // Delete any existing events first
        $this->db->query("DELETE FROM `" . DB_PREFIX . "event` WHERE `code` = 'facebook_business'");

        // Install events
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/view/common/dashboard/after', `action` = 'extension/module/facebook_business/eventPostViewCommonDashboard', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/view/common/column_left/before', `action` = 'extension/module/facebook_business/eventPreViewCommonColumnLeft', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/view/catalog/product_form/before', `action` = 'extension/module/facebook_business/eventPreViewCatalogProductForm', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/view/catalog/product_form/after', `action` = 'extension/module/facebook_business/eventPostViewCatalogProductForm', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/model/catalog/product/addProduct/after', `action` = 'extension/module/facebook_business/eventPostModelAddProduct', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/model/catalog/product/editProduct/after', `action` = 'extension/module/facebook_business/eventPostModelEditProduct', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/model/catalog/product/copyProduct/after', `action` = 'extension/module/facebook_business/eventPostModelCopyProduct', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'admin/model/catalog/product/deleteProduct/after', `action` = 'extension/module/facebook_business/eventPostModelDeleteProduct', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'catalog/view/common/header/before', `action` = 'extension/module/facebook_business/eventPreViewCommonHeader', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'catalog/view/common/header/after', `action` = 'extension/module/facebook_business/eventPostViewCommonHeader', `sort_order` = '0', `status` = '1'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "event` SET `code` = 'module_facebook_business', `trigger` = 'catalog/controller/checkout/success/before', `action` = 'extension/module/facebook_business/eventPreControllerCheckoutSuccess', `sort_order` = '0', `status` = '1'");

        // Enabling status
        $this->db->query("DELETE FROM `" . DB_PREFIX . "setting` WHERE store_id = '0' AND `code` = 'module_facebook_business'");
        $this->db->query("INSERT INTO `" . DB_PREFIX . "setting` SET store_id = '0', `code` = 'module_facebook_business', `key` = 'module_facebook_business_status', `value` = '1'");

        // Adding permissions for user group
        $user_group_query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "user_group WHERE user_group_id = '" . (int)$user_group_id . "'");

        if ($user_group_query->num_rows) {
            $data = json_decode($user_group_query->row['permission'], true);

            $data['access'][] = 'extension/module/facebook_business';
            $data['modify'][] = 'extension/module/facebook_business';

            $this->db->query("UPDATE " . DB_PREFIX . "user_group SET permission = '" . $this->db->escape(json_encode($data)) . "' WHERE user_group_id = '" . (int)$user_group_id . "'");
        }
    }