public function perms() { if ($this->requiresPermission('manage roles', $this->name)) { Fabriq::title('Admin | Manage permissions'); FabriqModules::add_css('roles', 'roles'); $perms = new Perms(); $perms->getAll(); $modules = new Modules(); $modules->getEnabled(); $roles = FabriqModules::new_model('roles', 'Roles'); $roles->getRoles(); $modulePerms = FabriqModules::new_model('roles', 'ModulePerms'); $modulePerms->getAll(); $permissions = array(); foreach ($perms as $perm) { $permissions[$perm->id] = array(); foreach ($roles as $role) { if (isset($modulePerms->perms[$perm->id][$role->id])) { $permissions[$perm->id][$role->id] = 1; } else { $permissions[$perm->id][$role->id] = 0; } } } if (isset($_POST['submit'])) { foreach ($perms as $perm) { foreach ($roles as $role) { if (isset($_POST['permission'][$perm->id][$role->id])) { $permissions[$perm->id][$role->id] = 1; // add to database if it's not already set if (!isset($modulePerms->perms[$perm->id][$role->id])) { $p = FabriqModules::new_model('roles', 'ModulePerms'); $p->permission = $perm->id; $p->role = $role->id; $p->id = $p->create(); $modulePerms->perms[$perm->id][$role->id] = $modulePerms->count(); $modulePerms->add($p); } } else { $permissions[$perm->id][$role->id] = 0; // remove from database if it is already set if (isset($modulePerms->perms[$perm->id][$role->id])) { $p = FabriqModules::new_model('roles', 'ModulePerms'); $p->find($modulePerms[$modulePerms->perms[$perm->id][$role->id]]->id); $p->destroy(); $modulePerms->remove($modulePerms->perms[$perm->id][$role->id]); $modulePerms->reindex(); } } } } Messaging::message('Permissions have been updated.', 'success'); } FabriqModules::set_var($this->name, 'perms', $perms); FabriqModules::set_var($this->name, 'modules', $modules); FabriqModules::set_var($this->name, 'roles', $roles); FabriqModules::set_var($this->name, 'permissions', $permissions); } }
public function index() { if (FabriqModules::module('roles')->requiresPermission('administer menus', 'sitemenus')) { $menus = FabriqModules::new_model('sitemenus', 'Menus'); $menus->getAll(); FabriqModules::set_var('sitemenus', 'menus', $menus); Fabriq::title('Manage menus'); Fabriq::fabriq_ui_on(); FabriqModules::add_js('users', 'jquery.validate.min'); FabriqLibs::js_lib('jquery.tmpl.min', 'jquery/plugins'); FabriqModules::add_js('sitemenus', 'sitemenus.index'); FabriqModules::add_css('sitemenus', 'sitemenus'); } }
public function updateAccount() { if (!$this->isLoggedIn()) { header('Location: ' . PathMap::build_path('users', 'login')); exit; } Fabriq::title('Update account'); $user = FabriqModules::new_model('users', 'Users'); $user->find($_SESSION[Fabriq::siteTitle()]['FABMOD_USERS_userid']); if (isset($_POST['submit'])) { $emailPattern = '/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+' . '(\\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i'; $displayPattern = '/([A-z0-9]){6,24}/'; if (!preg_match($displayPattern, $_POST['display'])) { Messaging::message("Display name is invalid"); } if (!preg_match($emailPattern, $_POST['email'])) { Messaging::message("e-mail address is invalid"); } if (!Messaging::has_messages()) { $user->display = $_POST['display']; $user->email = $_POST['email']; $user->update(); $_SESSION[Fabriq::siteTitle()]['FABMOD_USERS_displayname'] = $user->display; $_SESSION[Fabriq::siteTitle()]['FABMOD_USERS_email'] = $user->email; Messaging::message('Account has bee updated', 'success'); } FabriqModules::set_var('users', 'submitted', true); } FabriqModules::set_var('users', 'user', $user); FabriqModules::add_js('users', 'jquery.validate.min'); FabriqModules::add_js('users', 'users-updateAccount'); FabriqModules::add_css('users', 'users-admin'); }
function __construct() { parent::__construct(); global $installed; global $_FAPP; $processing = FabriqStack::processing(); if ($processing->action == 'fetchUpdates') { return; } // make sure that we're good to run the requested action if ($processing->action == 'install' && $installed && PathMap::arg(2) < 4) { header("Location: " . PathMap::build_path($_FAPP['cdefault'], $_FAPP['adefault'])); exit; } else { if ($processing->action == 'install' && $installed && PathMap::arg(2) == 4) { // determine which version is installed if (!isset($_POST['submit'])) { global $db; $query = "SHOW TABLES;"; $db->query($query); $tables = array(); while ($row = $db->result->fetch_array()) { $tables[] = $row[0]; } if (in_array('fabmod_users_users', $tables)) { $query = "SELECT COUNT(*) AS num FROM fabmod_users_users"; $db->query($query); $row = $db->result->fetch_array(); if ($row['num'] > 0) { header("Location: " . PathMap::build_path($_FAPP['cdefault'], $_FAPP['adefault'])); exit; } } } } else { if ($processing->action == 'update') { // figure out what updates are available global $db; $query = "SELECT version FROM fabriq_config ORDER BY installed DESC, version DESC LIMIT 1"; $db->query($query); $data = mysqli_fetch_array($db->result); $this->version = $data['version']; if (!FabriqModules::module('roles')->hasRole('administrator')) { if ($this->version != null) { header('Location: ' . PathMap::build_path('users', 'login', 'fabriqinstall', 'update')); exit; } } } } } // set the install version $this->installVersion = '0.0'; $updates = get_class_methods('fabriqinstall_module'); foreach ($updates as $method) { if (substr($method, 0, 7) == 'update_' && substr($method, 0, 11) != 'update_step') { $version = str_replace('_', '.', str_replace('update_', '', $method)); if ($version > $this->installVersion) { $this->installVersion = $version; } } } // set up display elements Fabriq::empty_css_queue(); FabriqModules::add_css('fabriqinstall', 'fabriqinstall'); FabriqTemplates::template('fabriqinstall'); }