public function uninstall() { // check uninstall.php $file = $this->path . '/lib/config/uninstall.php'; if (file_exists($file)) { include $file; } $file_db = $this->path . '/lib/config/db.php'; if (file_exists($file_db)) { $schema = (include $file_db); $model = new waModel(); foreach ($schema as $table => $fields) { $sql = "DROP TABLE IF EXISTS " . $table; $model->exec($sql); } } else { // check plugin.sql $file_sql = $this->path . '/lib/config/plugin.sql'; if (file_exists($file_sql)) { waAppConfig::executeSQL($file_sql, 2); } } // Remove plugin settings $app_settings_model = new waAppSettingsModel(); $sql = "DELETE FROM " . $app_settings_model->getTableName() . "\n WHERE app_id = s:app_id"; $app_settings_model->exec($sql, array('app_id' => $this->app_id . "." . $this->id)); if (!empty($this->info['rights'])) { // Remove rights to plugin $contact_rights_model = new waContactRightsModel(); $sql = "DELETE FROM " . $contact_rights_model->getTableName() . "\n WHERE app_id = s:app_id AND (\n name = '" . $contact_rights_model->escape('plugin.' . $this->id) . "' OR\n name LIKE '" . $contact_rights_model->escape('plugin.' . $this->id) . ".%'\n )"; $contact_rights_model->exec($sql, array('app_id' => $this->app_id)); } // Remove cache of the appliaction waFiles::delete(wa()->getAppCachePath('', $this->app_id)); }