Files
bio-concept-labo/web/modules/cdorderlimit/CleanModule3.php
2019-11-20 07:44:43 +01:00

716 lines
25 KiB
PHP

<?php
/**
* 2013 - 2015 CleanDev
*
* NOTICE OF LICENSE
*
* This file is proprietary and can not be copied and/or distributed
* without the express permission of CleanDev
*
* @author CleanPresta : www.cleanpresta.com <contact@cleanpresta.com>
* @copyright 2013 - 2015 CleanDev.net
* @license You only can use module, nothing more!
*/
class CleanModule3 extends Module
{
protected $_errors = array();
//list of hooks :: array('hook1', 'hook2')
public $hooks = array();
public $new_hooks = array();
// list of new tabs :: array('class1' => 'name1', ...,'class2' => 'name2');
public $tabs = array();
// list of exchanged tab :: array('oldTab1' => 'newTab1', ...,'oldTabn' => 'newTabn');
public $exchanged_tabs = array();
//coping files :: array('name1' => '/path1/',...,'namen' => '/pathn/')
public $files = array();
public $configValues = false; //For configuration values
/**
* getContent form
* 'associative' => true, for associate array key
*/
public $config_form = array();
// create sub dir in dir (element of tab)
public $extra_dir = array();
//retour notice
public $html = '';
//retour notice
public $customerModule = false;
//tab of config elements
public $tab_elts = array();
public $full_description;
public $required_parameters = array();
public function __construct()
{
$this->secure_key = Tools::encrypt($this->name);
$this->need_instance = 0;
$this->bootstrap = true;
$this->trusted = false;
$this->cleanVersion = '3.0.0';
$this->is_configurable = 1;
$this->author = $this->l('CleanDev.net');
$this->ps_versions_compliancy['max'] = _PS_VERSION_;
$this->confirmUninstall = $this->l('Are you sure you want to delete this module? This removes the files and tables related modules.');
parent::__construct();
$this->author = $this->l('CleanDev.net');
$this->defaultLan = (int)Configuration::get('PS_LANG_DEFAULT');
$this->lang = Context::getContext()->language;
$this->shop = Context::getContext()->shop;
$this->context = Context::getContext();
$this->formBoolType = ($this->is_16())?'switch':'radio';
$this->warningDisplay();
}
public function install()
{
$this->_clearCache('*');
return $this->cdManageDb(true) &&
$this->cdManageConfigs(true) &&
$this->cdManageTabs(true) &&
$this->cdManageExchangedTabs(true)&&
$this->cdManageFiles(true) &&
$this->cdManageDir(true) &&
parent::install() &&
$this->cdManageHooks(true) &&
$this->cdClearCache();
}
public function uninstall()
{
$this->_clearCache('*');
return $this->cdManageDb(false) &&
$this->cdManageConfigs(false) &&
$this->cdManageTabs(false) &&
$this->cdManageExchangedTabs(false) &&
$this->cdManageFiles(false) &&
$this->cdManageDir(false) &&
parent::uninstall() &&
$this->cdManageHooks(false) &&
$this->cdClearCache();
}
/*Gestion des tables supplémentaires*/
protected function cdManageDb($install = true)
{
$file = (!$install)?$this->local_path.'sql'.DIRECTORY_SEPARATOR.'uninstall.sql':$this->local_path.'sql'.DIRECTORY_SEPARATOR.'install.sql';
//var_dump($file, file_exists($file), Tools::file_get_contents($file));die();
if (file_exists($file) && ($sql = Tools::file_get_contents($file))) { // pas de fichier, tant mieux!
$sql = str_replace(array('PREFIX_', 'ps_', 'ENGINE_TYPE'), array(_DB_PREFIX_, _DB_PREFIX_, _MYSQL_ENGINE_), $sql);
$sql = preg_split("/;\s*[\r\n]+/", trim($sql));
foreach ($sql as $query) {
if (!Db::getInstance()->execute(trim($query))) {
return false;
}
}
}
return true;
}
/*Gestion de la configuration*/
protected function cdManageConfigs($install = true)
{
if (!empty($this->config_form)) {
if (isset($this->config_form['form'])) {
$this->config_form = array($this->config_form);
}
foreach ($this->config_form as $configs) {
foreach ($configs as $form) {
if (!empty($form['input'])) {
foreach ($form['input'] as $input) {
if (empty($install)) { //désintallation
Configuration::deleteByName($input['name']);
} elseif (!empty($input['default'])) {
if (!empty($input['multiple']) || !empty($input['associative'])) {
/*$input_name = Tools::substr($input['name'], 0, strpos($input['name'],'[')); var_dump($input['default'], $input_name, Tools::getValue($input_name));die();
Configuration::updateValue($input_name, serialize(Tools::getValue($input_name)));*/
} else {
Configuration::updateValue($input['name'], $input['default']);
}
}
}
}
}
}
}
return true;
}
/*Gestion de nouveaux menus*/
protected function cdManageTabs($install = true)
{
if (!empty($this->tabs)) {
foreach ($this->tabs as $elt) {
$id_tab = (int)Tab::getIdFromClassName($elt['class']);
if (!empty($id_tab)) {
$tab = new Tab($id_tab);
}
if ($install) { // installation
if (empty($tab) || !Validate::isLoadedObject($tab))
$tab = new Tab();
$tab->class_name = $elt['class'];
$tab->id_parent = (int)Tab::getIdFromClassName($elt['parent']);
foreach (Language::getLanguages(true) as $lang)
$tab->name[$lang['id_lang']] = $elt['name'];
unset($lang);
$tab->module = $this->name;
$tab->save();
}
elseif (!empty($tab) && Validate::isLoadedObject($tab)) {
return $tab->delete();
}
}
}
return true;
}
/*Gestion de permutation des menus*/
protected function cdManageExchangedTabs($install = true)
{
if (!empty($this->exchanged_tabs)) {
foreach ($this->exchanged_tabs as $old => $new) {
if ($install) { // installation
$tab = new Tab((int)Tab::getIdFromClassName($old));
$tab->class_name = $new;
$tab->module = $this->name;
} else {
$tab = new Tab((int)Tab::getIdFromClassName($new));
$tab->class_name = $old;
$tab->module = '';
}
if (!empty($tab->id)) { // si l'onglet est trouvé
$tab->save();
}
}
}
return true;
}
/*Gestion de du menu*/
protected function cdManageDir($install = true)
{
if (!empty($install)) { //Installation
if (!empty($this->extra_dir)) {
foreach ($this->extra_dir as $val) {
$dir = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$val.DIRECTORY_SEPARATOR.$this->name;
if (!file_exists($dir)) @mkdir($dir, 0777);
}
}
}
return true;
}
protected function cdManageFiles($install = true)
{
if (!empty($this->files)) {
$sep = DIRECTORY_SEPARATOR;
foreach ($this->files as $file => $path) {
$path = str_replace(array('default-bootstrap','/','\\'), array(_THEME_NAME_,$sep,$sep), $path); //ad=>basename(_PS_ADMIN_DIR_)
$src = $this->local_path.'files'.$sep.$file;
$dest = _PS_ROOT_DIR_.$path.$file;
if (!file_exists(dirname($dest))) @mkdir(dirname($dest), 0777); //on cree le dossier s'il n'existe pas.
if (is_writable(dirname($dest))) {
if (empty($install)) { //désintallation
//@unlink($dest); // on supprime le fichier copié
@rename($dest.'.CDBACK', $dest); // on remet le fichier de départ
}
else
{ // installation
@rename($dest, $dest.'.CDBACK'); // on renomme le fichier si existe
if (!Tools::copy($src, $dest)) { // avant de copier le nouveau
throw new Exception(sprintf(Tools::displayError('directory (%s) not writable'), dirname($dest)));
}
}
}
else
throw new Exception(sprintf(Tools::displayError('directory (%s) not writable'), dirname($dest)));
}
}
return true;
}
/*GEstion des hooks*/
protected function cdManageHooks($install = true)
{
if ($install) {
$this->registerHook('header');
$this->registerHook('backOfficeHeader');
foreach ($this->hooks as $hook) {
$this->registerHook($hook);
}
foreach ($this->new_hooks as $hook) {
if (!Hook::getIdByName($hook)) { // create if hook no exist
$newHook = new Hook();
$newHook->name = $hook;
$newHook->title = preg_replace('/(?<=\\w)(?=[A-Z])/'," $1", $hook);
$newHook->description = $newHook->title.' for CleanPresta modules';
$newHook->save();
}
$this->registerHook($hook);
}
} else {
$this->unregisterHook('header');
$this->unregisterHook('backOfficeHeader');
foreach ($this->hooks as $hook) {
$this->unregisterHook($hook);
}
foreach ($this->new_hooks as $hook) {
$newHookId = (int)Hook::getIdByName($hook);
$newHook = new Hook($newHookId);
$newHook->delete();
$this->unregisterHook($hook);
}
}
return true;
}
/*Formulaire de configuration*/
protected function renderForm()
{
if (isset($this->config_form['form'])) {
$this->config_form = array($this->config_form);
}
$helper = new HelperForm();
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->identifier = $this->identifier;
$helper->token = Tools::getAdminTokenLite('AdminModules').'#cdTabConfig';
$helper->table = 'module';
$lang = new Language($this->defaultLan);
$helper->default_form_language = $lang->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0;
$this->fields_form = $this->config_form;
$helper->submit_action = 'submitConf'.$this->name;
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
/*1.5 compliantion*/
$helper->toolbar_scroll = false;
$helper->show_toolbar = false;
$helper->toolbar_btn = $this->initToolbar();
$helper->title = $this->displayName;
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFieldsValues(),
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id
);
return $helper->generateForm($this->fields_form);
}
protected function initToolbar()
{
// on met juste le bouton de validation des formulaires
$this->toolbar_btn['save'] = array(
'href' => '#',
'desc' => $this->l('Save')
);
return $this->toolbar_btn;
}
/*Récupération des valeurs de configuration*/
public function getConfigValues()
{
$configs = array();
$param = $paramLan = '';
$unserialized = array();
if (!empty($this->config_form)) {
if (isset($this->config_form['form'])) {
$this->config_form = array($this->config_form);
}
foreach ($this->config_form as $configs) {
foreach ($configs as $form) {
if (!empty($form['input'])) {
foreach ($form['input'] as $input) {
if (empty($input['lang'])){
if (!empty($input['multiple']) || !empty($input['associative']) || !empty($input['tree']) || ($input['type'] == 'group')) { // unserialized values
$input['name'] = Tools::substr($input['name'], 0, strpos($input['name'],'['));
$unserialized[$input['name']] = $input['name'];
}
$param .= $input['name'].',';
}else{
$paramLan .= $input['name'].',';
}
}
}
}
}
if (!empty($param)) {
$param = trim($param, ', ');
$configs = Configuration::getMultiple(explode(',', $param));
if (!empty($unserialized))
foreach ($unserialized as $val) {
$configs[$val] = Tools::unSerialize($configs[$val]);
}
}
if (!empty($paramLan)) {
$paramLan = trim($paramLan, ', ');
//var_dump($configs, Configuration::getMultiple(explode(',', $paramLan), $this->lang->id));
$configs = array_merge($configs, Configuration::getMultiple(explode(',', $paramLan), $this->lang->id));
}
}
$configs['is_16'] = $this->is_16();
$configs['is_17'] = $this->is_17();
$configs['less_than_16'] = $this->less_than_16();
$configs['less_than_17'] = $this->less_than_17();
$configs['module_path'] = $this->_path;
$configs['module_name'] = $this->name;
return array_change_key_case($configs, CASE_LOWER);
}
/*Assignation des values de configuration des formulaire*/
protected function getConfigFieldsValues()
{
$configTab = array();
if (!empty($this->config_form)) {
if (isset($this->config_form['form'])) {
$this->config_form = array($this->config_form);
}
$languages = Language::getLanguages(false);
foreach ($this->config_form as $configs) {
foreach ($configs as $form) {
foreach ($form['input'] as $input) {
if (!empty($input['lang'])) {
foreach ($languages as $lang) {
$configTab[$input['name']][$lang['id_lang']] = Tools::getValue($input['name'], Configuration::get($input['name'], $lang['id_lang']));
}
}
elseif ($input['type'] == 'group') {
$groups = Group::getGroups($this->context->language->id);
$existGroups = Tools::getValue('groupBox', Tools::unSerialize(Configuration::get($input['name'])));
foreach ($groups as $group) {
$configTab['groupBox_'.$group['id_group']] = Tools::getValue('groupBox_'.$group['id_group'], (!empty($existGroups) && in_array($group['id_group'], $existGroups)));
}
} elseif (!empty($input['multiple']) || !empty($input['associative']) || ($input['type'] == 'categories')) {
$input_name = Tools::substr($input['name'], 0, strpos($input['name'],'['));
$configTab[$input['name']] = Tools::getValue($input_name, Tools::unSerialize(Configuration::get($input_name)));
if (!empty($input['associative']) && count($configTab[$input['name']]) > 0 && !empty($configTab[$input['name']])) {
foreach ($configTab[$input['name']] as $key=>$val) {
$configTab[$input_name.'['.$key.']'] = $val;
}
//unset($configTab[$input['name']]);
}
}
else
$configTab[$input['name']] = Tools::getValue($input['name'], Configuration::get($input['name']));
}
}
}
}//echo'<pre>';print_r($configTab);echo'</pre>';die();
return $configTab;
}
/*Validation du formulaire*/
protected function processForm()
{
if (!empty($this->config_form) && Tools::isSubmit('submitConf'.$this->name)) {
//echo'<pre>';print_r($_POST);echo'</pre>';die();
if (isset($this->config_form['form'])) {
$this->config_form = array($this->config_form);
}
$languages = Language::getLanguages(false);
foreach ($this->config_form as $configs) {
foreach ($configs as $form) {
foreach ($form['input'] as $input) {
$html = (!empty($input['autoload_rte']))?true:false;
if (!empty($input['lang'])) {
$text = array();
foreach ($languages as $lang)
$text[$lang['id_lang']] = Tools::getValue($input['name'].'_'.$lang['id_lang']);
Configuration::updateValue($input['name'], $text, $html);
} elseif ($input['type'] == 'group') {
Configuration::updateValue($input['name'], serialize(Tools::getValue('groupBox')));
} elseif ($input['type'] == 'categories') {
Configuration::updateValue($input['name'], serialize(Tools::getValue($input['name'])));
} elseif (!empty($input['multiple']) || !empty($input['associative'])) {
$input_name = Tools::substr($input['name'], 0, strpos($input['name'],'['));
Configuration::updateValue($input_name, serialize(Tools::getValue($input_name)));
} else if($input['type'] != 'file'){
Configuration::updateValue($input['name'], Tools::getValue($input['name']), $html);
}
}
}
}
return $this->displayConfirmation($this->l('Configuration updated'));
}
return '';
}
public function getContent()
{
if (count($this->config_form) > 0) {
$this->html .= $this->processForm();
if (count($this->tab_elts))
array_unshift($this->tab_elts, array('id'=>'cdTabConfig', 'title'=>$this->l('Settings'), 'content'=>$this->renderForm())); // add config table4
else
$this->tab_elts[] = array('id'=>'cdTabConfig', 'title'=>$this->l('Settings'), 'content'=>$this->renderForm());
}
if(!$this->customerModule){
//adding doc
if (file_exists($this->local_path.'cleanpresta/readme/'.$this->lang->iso_code.'.pdf')) {
$this->context->smarty->assign('readme', _MODULE_DIR_.$this->name.'/cleanpresta/readme/'.$this->lang->iso_code.'.pdf');
} else {
$this->context->smarty->assign('readme', _MODULE_DIR_.$this->name.'/cleanpresta/readme/fr.pdf');
}
//adding log
if (file_exists($this->local_path.'cleanpresta/changelog/'.$this->lang->iso_code.'.txt')) {
$this->context->smarty->assign('change_log', nl2br(Tools::file_get_contents($this->local_path.'cleanpresta/changelog/'.$this->lang->iso_code.'.txt')));
} else {
$this->context->smarty->assign('change_log', nl2br(Tools::file_get_contents($this->local_path.'cleanpresta/changelog/fr.txt')));
}
//features
if (file_exists($this->local_path.'cleanpresta/features/'.$this->lang->iso_code.'.xml'))
$features = $this->local_path.'cleanpresta/features/'.$this->lang->iso_code.'.xml';
else
$features = $this->local_path.'cleanpresta/features/fr.xml';
if (($xml = simplexml_load_file($features)))
$this->context->smarty->assign('features', Tools::jsonDecode(Tools::jsonEncode((array)$xml), 1));
}
if (!$this->is_16()) {
// Clean the code use tpl file for html
$tab = '&tab_module='.$this->tab;
$token_mod = '&token='.Tools::getAdminTokenLite('AdminModules');
$token_pos = '&token='.Tools::getAdminTokenLite('AdminModulesPositions');
$token_trad = '&token='.Tools::getAdminTokenLite('AdminTranslations');
$this->context->smarty->assign(array(
'module_trad' => 'index.php?controller=AdminTranslations'.$token_trad.'&type=modules&lang=',
'module_hook' => 'index.php?controller=AdminModulesPositions'.$token_pos.'&show_modules='.$this->id,
'module_back' => 'index.php?controller=AdminModules'.$token_mod.$tab.'&module_name='.$this->name,
));
// Clean memory
unset($tab, $token_mod, $token_pos, $token_trad);
}
$this->context->smarty->assign(
array(
'module_dir' => $this->_path,
'customer_module' => $this->customerModule,
'reference' => $this->reference,
'is_16' => $this->is_16(),
'is_17' => $this->is_17(),
'current_id_tab' => (int)$this->context->controller->id,
'notice' => $this->html,
'name' => $this->name,
'display_name' => $this->displayName,
'tabConfig' => $this->tab_elts,
'description' => (empty($this->full_description))?$this->description:$this->full_description,
'base_dir' => _PS_BASE_URL_.__PS_BASE_URI__,
'module_name' => $this->name,
'addon_link' => $this->name,
'addon_ratting' => 'http://addons.prestashop.com/contact-community.php?id_product='.$this->addon_id,
'version' => $this->version
)
);
return $this->context->smarty->fetch($this->local_path.'views/templates/admin/configure.tpl');//.$this->context->smarty->fetch($this->local_path.'views/templates/admin/prestui/ps-tags.tpl');
//return $this->context->smarty->fetch($this->local_path.'views/templates/admin/configure.tpl').$this->display(__FILE__, 'views/templates/admin/prestui/ps-tags.tpl');;
}
public function hookDisplayHeader($params)
{
if (!$this->is_16()) { //1.5 compatibility
$this->context->controller->addCSS($this->_path.'css/compatibily16.css', 'all');
}
$this->context->controller->addJS($this->_path.'views/js/'.$this->name.'.js');
$this->context->controller->addCSS($this->_path.'views/css/'.$this->name.'.css', 'all');
}
public function hookDisplayBackOfficeHeader()
{
if (Tools::getValue('configure') == $this->name) {
$this->context->controller->addJquery(); // adding jquery if not exist
if (!$this->is_16()) { //1.5 compatibility
$this->context->controller->addJS($this->_path.'views/js/bootstrap.min.js');
$this->context->controller->addCSS($this->_path.'views/css/bootstrap.min.css', 'all');
$this->context->controller->addCSS($this->_path.'views/css/bootstrap.extend.css', 'all');
$this->context->controller->addCSS($this->_path.'views/css/font-awesome.min.css', 'all');
}
$this->context->controller->addJS($this->_path.'views/js/cleanadmin.js'); //dont rename this file
$this->context->controller->addCSS($this->_path.'views/css/cleanadmin.css', 'all'); //dont rename this file
//$this->context->controller->addJS($this->_path.'views/js/riot+compiler.min.js'); // for prestui
//$this->context->controller->addjQueryPlugin('tagify', null, false); // for prestui
}
//global js
$this->context->controller->addJS($this->_path.'views/js/'.$this->name.'-admin.js');
$this->context->controller->addCSS($this->_path.'views/css/'.$this->name.'-admin.css', 'all');
}
/**
* Tools functions
*/
public function addJsVar($tabVar)
{
$return = '';
foreach ($tabVar as $key => $value) {
switch (gettype($value)) {
case 'string' :
$return .= "var ".$key." = '".$value."';";
break;
case 'boolean' :
case 'integer' :
$return .= 'var '.$key.' = '.(int)$value.';';
break;
case 'float' :
$return .= 'var '.$key.' = '.(float)$value.';';
break;
case 'array' :
case 'object' :
$return .= 'var '.$key.' = ('.Tools::jsonEncode($value).');';
break;
default:
$return .= 'var '.$key.' = '.$value.';';
}
}
return '
<script type="text/javascript"> '.$return.' </script>
';
}
public function createTransactionProductCharge()
{
$chargeExist = false;
if ($productCharge = Configuration::get('CD_TCHARGE_PRODUCT'))
{
if (Db::getInstance()->getValue('SELECT 1 FROM `' . _DB_PREFIX_ . 'product` WHERE id_product = ' . (int) $productCharge)){
$chargeExist = true;
}
}
if (empty($chargeExist)) {//on crée un nouveau produit
$languages = Language::getLanguages(true);
$product = new Product();
$product->active = $product->id_tax_rules_group = $product->available_for_order = $product->show_price = 1;
$product->visibility = 'both';
foreach ($languages as $lan) {
$product->name[$lan['id_lang']] = $this->l('Transaction');
$product->link_rewrite[$lan['id_lang']] = Tools::link_rewrite("transaction").'-'.$lan['id_lang'];
}
$product->reference = "CDTC";
$product->id_category_default = 2;
$product->price = 0;
if ($product->add() && $product->id) {
$group = new AttributeGroup();
foreach ($languages as $lan)
$group->name[$lan['id_lang']] = $group->public_name[$lan['id_lang']] = $this->l('Amount');
$group->group_type = 'select';
if ($group->add() && $group->id) {
Configuration::updateValue('CD_TCHARGE_ATTR', $group->id); // on sauvegarde le groupe d'atribut
$attr = new Attribute();
foreach ($languages as $lan)
$attr->name[$lan['id_lang']] = 0;
$attr->id_attribute_group = $group->id;
if ($attr->add() && $attr->id)
{
$combination = new Combination();
$combination->minimal_quantity = $combination->default_on = 1;
$combination->id_product = $product->id;
$combination->quantity = 99999;
$combination->price = $combination->weight = $combination->ecotax = $combination->quantity = 0;
$combination->available_date = '0000-00-00';
if ($combination->save() && $combination->id) {
if (Db::getInstance()->insert('product_attribute_combination', array('id_product_attribute' => (int) $combination->id, 'id_attribute' => (int) $attr->id))) {
StockAvailable::updateQuantity($product->id, 0, 1);
Configuration::updateValue('CD_TCHARGE_PRODUCT', $product->id);
return true;
}else{
return false;
}
} else{
return false;
}
}
}
} else {
return false;
}
} else {
return true;
}
return false;
}
public function getParamValue($name, $is_array = false)
{
$values = Configuration::get($name);
if ($is_array) {
$values = Tools::unSerialize($values);
$values = !empty($values)?$values:array();
}
return Tools::getValue($name, $values);
}
public function init_var(&$vars, $value = 0)
{
if(empty($var)){
$var = $value;
}
}
public function warningDisplay()
{
if (!empty($this->required_parameters)) {
$param = Configuration::getMultiple($this->required_parameters);
foreach ($this->required_parameters as $rp) {
if (empty($param[$rp])) {
$this->warning = $this->l('Parameter details must be configured before using this module.');
return false;
}
}
}
return true;
}
public function less_than_16()
{
return (version_compare(_PS_VERSION_, '1.6.0', '<') === true)?true:false;
}
public function is_16()
{
return (version_compare(_PS_VERSION_, '1.6.0', '>=') === true)?true:false;
}
public function less_than_17()
{
return (version_compare(_PS_VERSION_, '1.7.0', '<') === true)?true:false;
}
public function is_17()
{
return (version_compare(_PS_VERSION_, '1.7.0', '>=') === true)?true:false;
}
protected function cdClearCache()
{
/*if((bool)(version_compare(_PS_VERSION_, '1.5.0', '>=') === true)){
@unlink(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.'/cache'.DIRECTORY_SEPARATOR.'class_index.php');
}*/
return true;
}
}