global $database;
$error = '';
// first install configuration table!
$dbConfig = new dbKITcfg(true);
if ($dbConfig->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbConfig->getError());
}
$dbKITcontact = new dbKITcontact(true);
if ($dbKITcontact->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITcontact->getError());
}
$dbKITcontactAddress = new dbKITcontactAddress(true);
if ($dbKITcontactAddress->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITcontactAddress->getError());
}
$dbKITprovider = new dbKITprovider(true);
if ($dbKITprovider->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITprovider->getError());
}
$dbKITmail = new dbKITmail(true);
if ($dbKITmail->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITmail->getError());
}
$dbKITregister = new dbKITregister(true);
if ($dbKITregister->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITregister->getError());
}
// Install tables for newsletter module
$dbKITnewsletterTemplates = new dbKITnewsletterTemplates(true);
if ($dbKITnewsletterTemplates->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITnewsletterTemplates->getError());
 public function __construct($create_tables = false)
 {
     $this->create_tables = $create_tables;
     // use another table prefix?
     if (file_exists(WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/config.json')) {
         $config = json_decode(file_get_contents(WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/config.json'), true);
         if (isset($config['table_prefix'])) {
             self::$table_prefix = $config['table_prefix'];
         }
     }
     parent::__construct();
     $this->setTablePrefix(self::$table_prefix);
     $this->setTableName('mod_kit_provider');
     $this->addFieldDefinition(self::field_id, "INT NOT NULL AUTO_INCREMENT", true);
     $this->addFieldDefinition(self::field_name, "VARCHAR(50) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_identifier, "VARCHAR(50) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_email, "VARCHAR(128) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_remark, "VARCHAR(255) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_smtp_auth, "TINYINT NOT NULL DEFAULT '0'");
     $this->addFieldDefinition(self::field_smtp_host, "VARCHAR(128) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_smtp_user, "VARCHAR(128) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_smtp_pass, "VARCHAR(128) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_relaying, "TINYINT NOT NULL DEFAULT '0'");
     $this->addFieldDefinition(self::field_status, "VARCHAR(30) NOT NULL DEFAULT '" . self::status_active . "'");
     $this->addFieldDefinition(self::field_update_by, "VARCHAR(30) NOT NULL DEFAULT 'SYSTEM'");
     $this->addFieldDefinition(self::field_update_when, "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'");
     // check field definitions
     $this->checkFieldDefinitions();
     // set default timezone
     date_default_timezone_set(CFG_TIME_ZONE);
     // create tables
     if ($this->create_tables) {
         $this->initTables();
     }
 }
require_once WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/initialize.php';
require_once WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/class.mail.php';
require_once WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/class.newsletter.php';
require_once WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/class.cronjob.php';
require_once WB_PATH . '/modules/' . basename(dirname(__FILE__)) . '/class.config.php';
require_once WB_PATH . '/framework/functions.php';
global $database;
global $admin;
$error = '';
$dbKITregister = new dbKITregister();
if (!$dbKITregister->sqlTableExists()) {
    if (!$dbKITregister->sqlCreateTable()) {
        $error .= sprintf('<p>[Upgrade] %s </p>', $dbKITregister->getError());
    }
}
$dbKITprovider = new dbKITprovider();
if (!$dbKITprovider->sqlFieldExists(dbKITprovider::field_identifier)) {
    if (!$dbKITprovider->sqlAlterTableAddField(dbKITprovider::field_identifier, "VARCHAR (50) NOT NULL DEFAULT ''", dbKITprovider::field_name)) {
        $error .= sprintf('<p>[Upgrade] %s </p>', $dbKITprovider->getError());
    }
}
$dbKITcontact = new dbKITcontact();
if (!$dbKITcontact->sqlFieldExists(dbKITcontact::field_newsletter)) {
    if (!$dbKITcontact->sqlAlterTableAddField(dbKITcontact::field_newsletter, "VARCHAR (255) NOT NULL DEFAULT ''", dbKITcontact::field_category)) {
        $error .= sprintf('<p>[Upgrade] %s </p>', $dbKITcontact->getError());
    }
}
// check field_distribution --> #0.29
if (!$dbKITcontact->sqlFieldExists(dbKITcontact::field_distribution)) {
    if (!$dbKITcontact->sqlAlterTableAddField(dbKITcontact::field_distribution, "VARCHAR(255) NOT NULL DEFAULT ''", dbKITcontact::field_newsletter)) {
        $error .= sprintf('<p>[Upgrade] %s </p>', $dbKITcontact->getError());
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbCountries->getError());
    }
}
$dbMemos = new dbKITmemos();
if ($dbMemos->sqlTableExists()) {
    if (!$dbMemos->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbMemos->getError());
    }
}
$dbKITprotocol = new dbKITprotocol();
if ($dbKITprotocol->sqlTableExists()) {
    if (!$dbKITprotocol->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbKITprotocol->getError());
    }
}
$dbKITprovider = new dbKITprovider();
if ($dbKITprovider->sqlTableExists()) {
    if (!$dbKITprovider->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbKITprovider->getError());
    }
}
$dbKITmail = new dbKITmail();
if ($dbKITmail->sqlTableExists()) {
    if (!$dbKITmail->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s </p>', $dbKITmail->getError());
    }
}
$dbKITregister = new dbKITregister();
if ($dbKITregister->sqlTableExists()) {
    if (!$dbKITregister->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s </p>', $dbKITregister->getError());