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).

                           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

  • zc_plugins

    • rewardPoints

      • v1.0.0

        • Installer

          • install.sql

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 ScriptedInstallBase are executeInstall and executeUninstall, which run the installation and de-installation logic.

Last modified July 16, 2020 by Scott C Wilson (ae69d8f).