-
Notifications
You must be signed in to change notification settings - Fork 83
Modules
Sergey Yakovlev edited this page Aug 7, 2013
·
4 revisions
Below is a simple example of a Gleez Slider Installer that provides the installation, uninstallation, activation and deactivation of the Gleez Slider Module. Contents of the class is limited only by your imagination. Necessarily only one thing - the exact name of methods. For more information go to Gleez Module API.
<?php defined('SYSPATH') OR die('No direct script access allowed.');
/**
* Slider Installer
*
* @package Gleez\Slider\Installer
* @author Gleez Team
* @version 1.2.0
* @copyright (c) 2011-2013 Gleez Technologies
* @license http://gleezcms.org/license Gleez CMS License
*/
class Slider_Installer extends Slider {
/**
* Install a module
*
* @uses DB::insert
* @uses DB::query
* @uses Module::set_version
* @uses Message::critical
* @uses Cache::instance
* @uses Widgets::install
*/
public static function install()
{
$table = Database::instance()->table_prefix() .'sliders';
try
{
// Create the tables
DB::query(NULL,
"CREATE TABLE {$table} (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
title varchar(60) NOT NULL,
subtitle varchar(255) DEFAULT NULL,
image varchar(255) DEFAULT NULL,
status varchar(20) NOT NULL DEFAULT 'draft',
PRIMARY KEY (id),
UNIQUE KEY src (src)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;"
)
->execute();
try
{
$query = DB::insert('menus', array('title', 'name', 'descp', 'image', 'url', 'params', 'active', 'pid', 'lft', 'rgt', 'lvl', 'scp'))
->values(array('Slider', 'slider', '', 'icon-picture', 'admin/slider', NULL, 1, 2, 25, 26, 2, 2));
// Insert menu item
DB::query(Database::INSERT, $query)->execute();
// Delete menu cache
Cache::instance('menus')->delete_all();
}
catch (Exception $e)
{
Message::critical($e->getMessage());
}
// Install the widget into database during module install
Widgets::install(array('name' => 'slider/show', 'title' => 'Slider'), 'slider');
// Set module version
Module::set_version('slider', Slider::VERSION);
}
catch (Exception $e)
{
Message::critical($e->getMessage());
}
}
/**
* Uninstall a deactivated module
*
* @uses DB::delete
* @uses Widgets::uninstall
* @uses Message::critical
* @uses Cache::instance
* @uses Cache::delete_all
*/
public static function uninstall()
{
try
{
// Remove module
DB::delete('slider')->execute();
// Remove widget
Widgets::uninstall('slider');
// Delete menu cache
Cache::instance('slider')->delete_all();
}
catch (Database_Exception $e)
{
Message::critical($e->getMessage());
}
}
/**
* Activate module
*
* @throws Database_Exception
*
* @uses DB::update
* @uses DB::query
* @uses Cache::instance
* @uses Message::critical
*/
public static function activate()
{
$query = DB::update('menus')->set(array('active' => 1))->where('name', '=', 'slider');
try
{
// Enable menu item
DB::query(Database::UPDATE, $query)->execute();
// Delete menu cache
Cache::instance('menus')->delete_all();
}
catch (Database_Exception $e)
{
Message::critical($e->getMessage());
}
}
/**
* Deactivate module
*
* @uses DB::update
* @uses DB::query
* @uses Cache::instance
* @uses Message::critical
*/
public static function deactivate()
{
$query = DB::update('menus')->set(array('active' => 0))->where('name', '=', 'slider');
try
{
// Disable menu item
DB::query(Database::UPDATE, $query)->execute();
// Delete menu cache
Cache::instance('menus')->delete_all();
}
catch (Database_Exception $e)
{
Message::critical($e->getMessage());
}
}
}