Plugin SQL Installation
Plugins may need to create/alter database tables and/or insert/amend data in database tables.
The plugin installer allows two methods for doing this. Using
.sql files containing just sql statements or
using a class based migration system.
Plain SQL Files
Create a plain .sql file called
install.sql with the SQL statements you need for installation. Be sure to make your installation robust in the face of prior partial or failed installs (e.g. use
IF NOT EXISTS,
INSERT IGNORE and so forth).
CREATE TABLE IF NOT EXISTS reward_master ( rewards_products_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, scope INT( 1 ) NOT NULL DEFAULT '0', scope_id INT( 11 ) NOT NULL DEFAULT '0', point_ratio DOUBLE( 15, 4 ) NOT NULL DEFAULT '1', bonus_points DOUBLE( 15, 4 ) NULL, redeem_ratio DOUBLE( 15, 4 ) NULL, redeem_points DOUBLE( 15, 4 ) NULL, UNIQUE unique_id ( scope , scope_id )); INSERT IGNORE INTO reward_master (rewards_products_id ,scope ,scope_id ,point_ratio ,bonus_points, redeem_ratio, redeem_points) VALUES (NULL , '0', '0', '1.0000', NULL, 0.01, NULL);
The sql file should reside in
Warning As Zen Cart currently uses mainly
MyISAM tables, there is no way to safely roll back any
installer sql if an error occurs. Some support for rollback may be added later (using generated migrations).
Note that an uninstall script (called
uninstall.sql) may be placed in the same folder.
SQL Installer Classes
If you have more complex needs when creating schemas or seeding the database, instead of using a plain SQL install file as above, you can use a class based method.
An example of this is provided in the
DisplayLogs plugin, in
zc_plugins/DisplayLogs. The class
ScriptedInstallBase may be extended to permit the execution of complex logic during the install and uninstall process.
The two key methods that must be implemented in a class which extends
executeUninstall, which run the installation and de-installation logic.