public function uninstall() { $mod = new Modules(); $mod->getModuleByName('blog'); // remove perms FabriqModules::remove_perms($mod->id); // remove paths $pathmap =& FabriqModules::module('pathmap'); $pathmap->remove_path('blog'); $pathmap->remove_path('blog/create'); $pathmap->remove_path('blog/update/!#'); $pathmap->remove_path('blog/destroy/!#'); $pathmap->remove_path('blog/show/!#'); // delete database table global $db; $sql = "DROP TABLE `fabmod_blog_blogs`;"; $db->query($sql); // uninstall any terms if (FabriqModules::enabled('taxonomy')) { FabriqModules::module('taxonomy')->uninstallMaps('fabmod_blog_blogs'); } // set module as not installed $mod->installed = 0; $mod->update(); }
public function install() { $mod = new Modules(); $mod->getModuleByName('roles'); $perms = array('create roles', 'update roles', 'delete roles', 'manage roles'); $perm_ids = FabriqModules::register_perms($mod->id, $perms); global $db; $sql = "CREATE TABLE IF NOT EXISTS `fabmod_roles_roles` (\n\t\t\t`id` INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t`role` VARCHAR(100) NOT NULL,\n\t\t\t`enabled` TINYINT(1) NOT NULL DEFAULT 1,\n\t\t\t`created` DATETIME NOT NULL,\n\t\t\t`updated` DATETIME NOT NULL,\n\t\t\tPRIMARY KEY (`id`)\n\t\t) ENGINE=INNODB;"; $db->query($sql); $sql = "CREATE TABLE IF NOT EXISTS `fabmod_roles_moduleperms` (\n\t\t\t`id` INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t`permission` INT(11) NOT NULL,\n\t\t\t`role` INT(11) NOT NULL,\n\t\t\t`created` DATETIME NOT NULL,\n\t\t\t`updated` DATETIME NOT NULL,\n\t\t\tPRIMARY KEY (`id`),\n\t\t\tCONSTRAINT `fk_moduleperms_permission` FOREIGN KEY (`permission`) REFERENCES fabmods_perms(id) ON DELETE CASCADE,\n\t\t\tCONSTRAINT `fk_moduleperms_role` FOREIGN KEY (`role`) REFERENCES fabmod_roles_roles(id) ON DELETE CASCADE\n\t\t) ENGINE=INNODB;"; $db->query($sql); // create base roles $role = FabriqModules::new_model('roles', 'Roles'); $role->role = "unauthenticated"; $role->enabled = 1; $role->id = $role->create(); $role = FabriqModules::new_model('roles', 'Roles'); $role->role = "authenticated"; $role->enabled = 1; $role->id = $role->create(); $role = FabriqModules::new_model('roles', 'Roles'); $role->role = "administrator"; $role->enabled = 1; $role->id = $role->create(); // map paths $pathmap =& FabriqModules::module('pathmap'); $pathmap->register_path('fabriqadmin/roles/manage', 'roles', 'index', 'module'); $pathmap->register_path('fabriqadmin/roles/create', 'roles', 'create', 'module'); $pathmap->register_path('fabriqadmin/roles/perms', 'roles', 'perms', 'module'); // set module as installed $mod->installed = 1; $mod->update(); }
public function update_2_1_8() { // update the module version number $mod = new Modules(); $mod->getModuleByName('users'); $mod->versioninstalled = '2.1.8'; $mod->update(); }
public function update_2_1_3() { // update the module version number $mod = new Modules(); $mod->getModuleByName('pathmap'); $mod->versioninstalled = '2.1.3'; $mod->update(); }
public function update_1_5_1() { // update the module version number $mod = new Modules(); $mod->getModuleByName('users'); $mod->versioninstalled = '1.5.1'; $mod->update(); }
public function uninstall() { $mod = new Modules(); $mod->getModuleByName('googleanalytics'); // set module as not installed $mod->installed = 0; $mod->update(); }
public function update_2_3_1() { // update the path(s) for the fabriqupdate module to point to the proper actions $pathmap =& FabriqModules::module('pathmap'); $pathmap->remove_path('fabriqupdates'); $pathmap->register_path('fabriqupdates', 'fabriqinstall', 'fetchUpdates', 'module'); // update the module version number $mod = new Modules(); $mod->getModuleByName('fabriqinstall'); $mod->versioninstalled = '2.3.1'; $mod->update(); }
/** * Check that the fabriqinstall module is installed */ public static function fabriqinstallReady() { // check that the fabriqinstall module is installed if (!FabriqModules::installed('fabriqinstall')) { FabriqModules::register_module('fabriqinstall'); FabriqModules::install('fabriqinstall'); $module = new Modules(); $module->getModuleByName('fabriqinstall'); $module->enabled = 1; $module->update(); Messaging::message('Installed fabriqinstall module', 'success'); } }
/** * Install step 3 * Database configuration details */ protected function install_step3($continue = TRUE) { Fabriq::title('Database configuration'); // go back to site configuration step if the session isn't set if (!isset($_SESSION['FAB_INSTALL_site']) || $_SESSION['FAB_INSTALL_site'] == '') { PathMap::arg(2, 2); $this->install_step2(); } if (isset($_POST['submit'])) { if (strlen(trim($_POST['db'])) == 0) { Messaging::message('You must enter a database name'); } if (strlen(trim($_POST['user'])) == 0) { Messaging::message('You must enter a database user'); } if (strlen(trim($_POST['pwd'])) == 0) { Messaging::message('You must enter a database user password'); } if (strlen(trim($_POST['server'])) == 0) { Messaging::message('You must enter a database server'); } // test database connectivity $mysqli = @mysqli_connect(trim($_POST['server']), trim($_POST['user']), trim($_POST['pwd']), trim($_POST['db'])); if (!$mysqli) { Messaging::message('Error connecting to the database. Please check your database settings and try again.'); } else { mysqli_close($mysqli); } if (!Messaging::has_messages()) { $dbConfig = array('db' => trim($_POST['db']), 'user' => trim($_POST['user']), 'pwd' => trim($_POST['pwd']), 'server' => trim($_POST['server'])); $_SESSION['FAB_INSTALL_db'] = serialize($dbConfig); // write out configuration file $siteConfig = unserialize($_SESSION['FAB_INSTALL_site']); $confFile = 'sites/' . FabriqStack::site() . '/config/config.inc.php'; $fh = fopen($confFile, 'w'); fwrite($fh, "<?php\n"); fwrite($fh, "/**\n"); fwrite($fh, " * @file\n"); fwrite($fh, " * Base config file for a Fabriq app.\n"); fwrite($fh, " */\n\n"); fwrite($fh, "\$_FAPP = array(\n"); fwrite($fh, "\t'title' => \"{$siteConfig['title']}\",\n"); fwrite($fh, "\t'title_pos' => '{$siteConfig['title_pos']}',\n"); fwrite($fh, "\t'title_sep' => \"{$siteConfig['title_sep']}\",\n"); fwrite($fh, "\t'cleanurls' => {$siteConfig['cleanurls']},\n"); fwrite($fh, "\t'cdefault' => 'homepage',\n"); fwrite($fh, "\t'adefault' => 'index',\n"); fwrite($fh, "\t'url' => '{$siteConfig['url']}',\n"); fwrite($fh, "\t'apppath' => '{$siteConfig['apppath']}',\n"); fwrite($fh, "\t'templates' => array(\n"); fwrite($fh, "\t\t'default' => 'application'\n"); fwrite($fh, "\t)\n"); fwrite($fh, ");\n\n"); fwrite($fh, "\$_FDB['default'] = array(\n"); fwrite($fh, "\t'user' => '{$_POST['user']}',\n"); fwrite($fh, "\t'pwd' => '{$_POST['pwd']}',\n"); fwrite($fh, "\t'db' => '{$_POST['db']}',\n"); fwrite($fh, "\t'server' => '{$_POST['server']}'\n"); fwrite($fh, ");\n"); fclose($fh); // write default controller if the file isn't already there // file may exist from being created in a dev environment or this is // a distributed web app $contFile = 'sites/' . FabriqStack::site() . "/app/controllers/homepage.controller.php"; if (!file_exists($contFile)) { $fh = fopen($contFile, 'w'); fwrite($fh, "<?php\n"); fwrite($fh, "class homepage_controller extends Controller {\n"); fwrite($fh, "\tfunction index() {\n"); fwrite($fh, "\t\tFabriq::title('Welcome to {$siteConfig['title']}');\n"); fwrite($fh, "\t}\n"); fwrite($fh, "}\n"); fclose($fh); } // write default action if it doesn't already exist // may already exist from being created in a dev environmentor this is // a distributed web app if (!is_dir('sites/' . FabriqStack::site() . "/app/views/homepage")) { mkdir('sites/' . FabriqStack::site() . "/app/views/homepage"); } $actionFile = 'sites/' . FabriqStack::site() . "/app/views/homepage/index.view.php"; if (!file_exists($actionFile)) { $fh = fopen($actionFile, 'w'); fwrite($fh, "<h1>homepage#index</h1>\n"); fclose($fh); } // create the framework database tables global $db; $db_info = array('server' => trim($_POST['server']), 'user' => trim($_POST['user']), 'pwd' => trim($_POST['pwd']), 'db' => trim($_POST['db'])); $db = new Database($db_info); // install config table $query = "CREATE TABLE IF NOT EXISTS `fabriq_config` (\n\t\t\t\t\t\t`version` VARCHAR(10) NOT NULL,\n\t\t\t\t\t\t`installed` DATETIME NOT NULL,\n\t\t\t\t\t\tPRIMARY KEY (`version`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $db->query($query); $query = "INSERT INTO fabriq_config (version, installed) VALUES (?, ?)"; $db->prepare_cud($query, array($this->installVersion, date('Y-m-d H:i:s'))); // modules table $query = "CREATE TABLE IF NOT EXISTS `fabmods_modules` (\n\t\t\t\t\t\t`id` int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t\t`module` varchar(100) NOT NULL,\n\t\t\t\t\t\t`enabled` tinyint(4) NOT NULL,\n\t\t\t\t\t\t`hasconfigs` tinyint(1) NOT NULL,\n\t\t\t\t\t\t`installed` tinyint(1) NOT NULL,\n\t\t\t\t\t\t`versioninstalled` varchar(20) NOT NULL,\n\t\t\t\t\t\t`description` text NOT NULL,\n\t\t\t\t\t\t`dependson` text,\n\t\t\t\t\t\t`created` datetime NOT NULL,\n\t\t\t\t\t\t`updated` datetime NOT NULL,\n\t\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $db->query($query); // module configs table $query = "CREATE TABLE IF NOT EXISTS `fabmods_module_configs` (\n\t\t\t\t\t\t`id` int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t\t`module` int(11) NOT NULL,\n\t\t\t\t\t\t`var` varchar(100) NOT NULL,\n\t\t\t\t\t\t`val` text NOT NULL,\n\t\t\t\t\t\t`created` datetime NOT NULL,\n\t\t\t\t\t\t`updated` datetime NOT NULL,\n\t\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $db->query($query); // module perms table $query = "CREATE TABLE IF NOT EXISTS `fabmods_perms` (\n\t\t\t\t\t\t`id` int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t\t`permission` varchar(100) NOT NULL,\n\t\t\t\t\t\t`module` int(11) NOT NULL,\n\t\t\t\t\t\t`created` datetime NOT NULL,\n\t\t\t\t\t\t`updated` datetime NOT NULL,\n\t\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $db->query($query); // install the module events table $query = "CREATE TABLE IF NOT EXISTS `fabmods_module_events` (\n\t\t\t\t\t`id` INT(11) NOT NULL AUTO_INCREMENT,\n\t\t\t\t\t`eventModule` VARCHAR(50) NOT NULL,\n\t\t\t\t\t`eventAction` VARCHAR(50) NOT NULL,\n\t\t\t\t\t`eventName` VARCHAR(100) NOT NULL,\n\t\t\t\t\t`handlerModule` VARCHAR(50) NOT NULL,\n\t\t\t\t\t`handlerAction` VARCHAR(50) NOT NULL,\n\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t) ENGINE=InnoDB DEFAULT CHARSET=utf8;"; $db->query($query); if (!isset($_SESSION['FAB_INSTALL_mods_installed'])) { Messaging::message('Configuration file has been written', 'success'); Messaging::message('Core database tables have been created', 'success'); FabriqModules::register_module('pathmap'); FabriqModules::register_module('roles'); FabriqModules::register_module('users'); FabriqModules::register_module('sitemenus'); FabriqModules::register_module('fabriqmodules'); FabriqModules::register_module('fabriqinstall'); FabriqModules::install('pathmap'); $module = new Modules(); $module->getModuleByName('pathmap'); $module->enabled = 1; $module->update(); Messaging::message('Installed pathmap module', 'success'); FabriqModules::install('roles'); $module = new Modules(); $module->getModuleByName('roles'); $module->enabled = 1; $module->update(); Messaging::message('Installed roles module', 'success'); FabriqModules::install('users'); $module = new Modules(); $module->getModuleByName('users'); $module->enabled = 1; $module->update(); Messaging::message('Installed users module', 'success'); FabriqModules::register_module('sitemenus'); FabriqModules::install('sitemenus'); $module = new Modules(); $module->getModuleByName('sitemenus'); $module->enabled = 1; $module->update(); Messaging::message('Installed sitemenus module', 'success'); FabriqModules::register_module('fabriqmodules'); FabriqModules::install('fabriqmodules'); $module = new Modules(); $module->getModuleByName('fabriqmodules'); $module->enabled = 1; $module->update(); Messaging::message('Installed fabriqmodules module', 'success'); FabriqModules::register_module('fabriqinstall'); FabriqModules::install('fabriqinstall'); $module = new Modules(); $module->getModuleByName('fabriqinstall'); $module->enabled = 1; $module->update(); Messaging::message('Installed fabriqinstall module', 'success'); // get admin role and give it all perms so that the admin can actually set // things up $role = FabriqModules::new_model('roles', 'Roles'); $role->getRole('administrator'); $perms = new Perms(); $perms->getAll(); foreach ($perms as $perm) { $modPerm = FabriqModules::new_model('roles', 'ModulePerms'); $modPerm->permission = $perm->id; $modPerm->role = $role->id; $modPerm->create(); } $_SESSION['FAB_INSTALL_mods_installed'] = true; } if ($continue) { // go to next step header("Location: " . PathMap::build_path('fabriqinstall', 'install', 4)); exit; } } FabriqModules::set_var('fabriqinstall', 'submitted', true); } }
public function uninstall() { Fabriq::render('none'); header('Content-type:application/json'); if (FabriqModules::module('roles')->hasRole('administrator')) { $module = new Modules(PathMap::arg(2)); if ($module->module != '') { $module->installed = 0; $module->update(); FabriqModules::uninstall($module->module); echo json_encode(array('success' => true)); } else { echo json_encode(array('success' => false)); } } else { echo json_encode(array('success' => false, 'notLoggedIn' => true)); } }