public function __construct($createTables = false)
 {
     $this->createTables = $createTables;
     // 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_newsletter_cfg');
     $this->addFieldDefinition(self::field_id, "INT(11) NOT NULL AUTO_INCREMENT", true);
     $this->addFieldDefinition(self::field_name, "VARCHAR(32) NOT NULL DEFAULT ''");
     $this->addFieldDefinition(self::field_type, "TINYINT UNSIGNED NOT NULL DEFAULT '" . self::type_undefined . "'");
     $this->addFieldDefinition(self::field_value, "VARCHAR(255) NOT NULL DEFAULT ''", false, false, true);
     $this->addFieldDefinition(self::field_label, "VARCHAR(64) NOT NULL DEFAULT 'ed_str_undefined'");
     $this->addFieldDefinition(self::field_description, "VARCHAR(255) NOT NULL DEFAULT 'ed_str_undefined'");
     $this->addFieldDefinition(self::field_status, "TINYINT UNSIGNED NOT NULL DEFAULT '" . self::status_active . "'");
     $this->addFieldDefinition(self::field_update_by, "VARCHAR(32) NOT NULL DEFAULT 'SYSTEM'");
     $this->addFieldDefinition(self::field_update_when, "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00'");
     $this->setIndexFields(array(self::field_name));
     $this->setAllowedHTMLtags('');
     $this->checkFieldDefinitions();
     // Tabelle erstellen
     if ($this->createTables) {
         if (!$this->sqlTableExists()) {
             if (!$this->sqlCreateTable()) {
                 $this->setError(sprintf('[%s - %s] %s', __METHOD__, __LINE__, $this->getError()));
             }
         }
     }
     // Default Werte garantieren
     if ($this->sqlTableExists()) {
         $this->checkConfig();
     }
 }
    $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());
}
$dbKITnewsletterPreview = new dbKITnewsletterPreview(true);
if ($dbKITnewsletterPreview->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITnewsletterPreview->getError());
}
$dbKITnewsletterCfg = new dbKITnewsletterCfg(true);
if ($dbKITnewsletterCfg->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITnewsletterCfg->getError());
}
$dbKITnewsletterArchive = new dbKITnewsletterArchive(true);
if ($dbKITnewsletterArchive->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITnewsletterArchive->getError());
}
$dbKITnewsletterProcess = new dbKITnewsletterProcess(true);
if ($dbKITnewsletterProcess->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbKITnewsletterProcess->getError());
}
$dbCronjobData = new dbCronjobData(true);
if ($dbCronjobData->isError()) {
    $error .= sprintf('<p>[Installation] %s</p>', $dbCronjobData->getError());
}
    }
}
// install tables for newsletter module
$dbKITnewsletterTemplates = new dbKITnewsletterTemplates();
if (!$dbKITnewsletterTemplates->sqlTableExists()) {
    if (!$dbKITnewsletterTemplates->sqlCreateTable()) {
        $error .= sprintf('<p>[Upgrade] %s</p>', $dbKITnewsletterTemplates->getError());
    }
}
$dbKITnewsletterPreview = new dbKITnewsletterPreview();
if (!$dbKITnewsletterPreview->sqlTableExists()) {
    if (!$dbKITnewsletterPreview->sqlCreateTable()) {
        $error .= sprintf('<p>[Upgrade] %s</p>', $dbKITnewsletterPreview->getError());
    }
}
$dbKITnewsletterCfg = new dbKITnewsletterCfg();
if (!$dbKITnewsletterCfg->sqlTableExists()) {
    if (!$dbKITnewsletterCfg->sqlCreateTable()) {
        $error .= sprintf('<p>[Upgrade] %s</p>', $dbKITnewsletterCfg->getError());
    }
}
$dbKITnewsletterArchive = new dbKITnewsletterArchive();
if (!$dbKITnewsletterArchive->sqlTableExists()) {
    if (!$dbKITnewsletterArchive->sqlCreateTable()) {
        $error .= sprintf('<p>[Upgrade] %s</p>', $dbKITnewsletterArchive->getError());
    }
}
// check support for distributions --> #0.29
if (!$dbKITnewsletterArchive->sqlFieldExists(dbKITnewsletterArchive::field_distributions)) {
    if (!$dbKITnewsletterArchive->sqlAlterTableAddField(dbKITnewsletterArchive::field_distributions, "VARCHAR(255) NOT NULL DEFAULT ''", dbKITnewsletterArchive::field_groups)) {
        $error .= sprintf('<p>[Upgrade] %s </p>', $dbKITnewsletterArchive->getError());
        $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());
    }
}
$dbKITnewsletterCfg = new dbKITnewsletterCfg();
if ($dbKITnewsletterCfg->sqlTableExists()) {
    if (!$dbKITnewsletterCfg->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbKITnewsletterCfg->getError());
    }
}
$dbKITnewsletterPreview = new dbKITnewsletterPreview();
if ($dbKITnewsletterPreview->sqlTableExists()) {
    if (!$dbKITnewsletterPreview->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbKITnewsletterPreview->getError());
    }
}
$dbKITnewsletterTemplates = new dbKITnewsletterTemplates();
if ($dbKITnewsletterTemplates->sqlTableExists()) {
    if (!$dbKITnewsletterTemplates->sqlDeleteTable()) {
        $error .= sprintf('<p>[Delete Table] %s</p>', $dbKITnewsletterTemplates->getError());