public static function update_permissions($group_id, $post_rules, $post_modules) { // if post_modules is empty erase all rules if (!isset($post_modules) or empty($post_modules)) { $perm_to_erase = Permission::where('group_id', '=', $group_id)->delete(); //VERY IMPORTANT return; } // Get the modules id name and roles $modules = \Modules\Model\Module::where_in('id', $post_modules)->get(array('id', 'slug', 'roles')); // If the permission has just one field and it was unckecked // erase it from the permissions table $perm_to_erase = Permission::where_not_in('module_id', $post_modules)->where('group_id', '=', $group_id)->get(); if (isset($perm_to_erase) and !empty($perm_to_erase)) { foreach ($perm_to_erase as $permission) { $permission->delete(); } } unset($perm_to_erase); foreach ($modules as $module) { $permission = Permission::where('group_id', '=', $group_id)->where('module_id', '=', $module->id)->first(); if (empty($permission)) { $permission = new Permission(); $permission->module_id = $module->id; $permission->group_id = $group_id; $permission->module_name = $module->slug; $permission->roles = $module->roles; } $permission->roles = json_decode($permission->roles, true); if ($permission->roles == null) { $permission->roles = json_decode($module->roles, true); } $tmp_permission = $permission->roles; $result = array(); foreach ($tmp_permission as $role) { $tmp['name'] = $role['name']; $tmp['description'] = isset($role['name']) ?: 'No description provided for this role.'; $tmp['slug'] = $role['slug']; if (isset($post_rules[$module->id][$role['slug']])) { $tmp['value'] = true; } else { $tmp['value'] = false; } $result[] = $tmp; } $permissions_result = $permission->roles = json_encode($result); $permission->save(); } }
public function install() { // // EMAIL TEMPLATES // $activation_email = array('name' => 'Activation Email', 'slug' => 'activation', 'description' => 'The email which contains the activation code that is sent to a new user', 'subject' => '{{ settings:site_name }} - Account Activation', 'body' => File::get(dirname(__FILE__) . DS . 'data' . DS . 'activation_template_body.html'), 'lang' => 'en', 'type' => 'html', 'module' => 'registration', 'is_default' => 1, 'is_core' => 1); $at = Email\Model\Template::create($activation_email); $forgotten_password = array('name' => 'Forgotten Password Email', 'slug' => 'forgotten_password', 'description' => 'The email that is sent containing a password reset code', 'subject' => '{{ settings:site_name }} - Forgotten Password', 'body' => File::get(dirname(__FILE__) . DS . 'data' . DS . 'forgotten_template_body.html'), 'lang' => 'en', 'type' => 'html', 'module' => 'registration', 'is_default' => 1, 'is_core' => 1); $fp = Email\Model\Template::create($forgotten_password); $registered = array('name' => 'New User Registered', 'slug' => 'registered', 'description' => 'Email sent to the site contact e-mail when a new user registers', 'subject' => 'A New user registered to {{ settings:site_name }}', 'body' => File::get(dirname(__FILE__) . DS . 'data' . DS . 'registered_template_body.html'), 'lang' => 'en', 'type' => 'html', 'module' => 'registration', 'is_default' => 1, 'is_core' => 1); $re = Email\Model\Template::create($registered); $welcome_email = array('name' => 'Welcome Email', 'slug' => 'welcome_email', 'description' => 'The email that is sent to welcome user after account activation', 'subject' => '{{ settings:site_name }} - Welcome!', 'body' => File::get(dirname(__FILE__) . DS . 'data' . DS . 'welcome_template_body.html'), 'lang' => 'en', 'type' => 'html', 'module' => 'registration', 'is_default' => 1, 'is_core' => 1); $we = Email\Model\Template::create($welcome_email); // // REGISTRATION SETTINGS // $registration_module = \Modules\Model\Module::where_slug('registration')->first(); $conf_email = array('title' => 'Confirmation Email', 'slug' => 'registration_email_template', 'description' => 'If email confirmation is enabled this is the email template that will be sent to the user on signup', 'type' => 'select', 'default' => $at->id, 'value' => $at->id, 'options' => 'func:registration\\get_email_templates', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id); $conf_email = Settings\Model\Setting::create($conf_email); $registration_disabled = array('title' => 'Registration Disabled', 'slug' => 'registration_disabled', 'description' => 'Enables or disable registration into the application', 'type' => 'select', 'default' => 'no', 'value' => 'no', 'options' => '{"yes":"Yes","no":"No"}', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id); $registration_disabled = Settings\Model\Setting::create($registration_disabled); $registration_pwreset_email_template = array('title' => 'Password Reset Email Template', 'slug' => 'registration_pwreset_email_template', 'description' => 'Email template to be used upon password reset', 'type' => 'select', 'default' => $fp->id, 'value' => $fp->id, 'options' => 'func:registration\\get_email_templates', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id); $registration_pwreset_email_template = Settings\Model\Setting::create($registration_pwreset_email_template); $registration_confirmation_required = array('title' => 'Confirmation Required', 'slug' => 'registration_confirmation_required', 'description' => 'User must confirm email to activate account If set to no user will be able to login after signup', 'type' => 'select', 'default' => 'yes', 'value' => 'yes', 'options' => '{"yes":"Yes","no":"No"}', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id); $registration_confirmation_required = Settings\Model\Setting::create($registration_confirmation_required); $registration_admin_new_user = array('title' => 'Admin Registration Email', 'slug' => 'email_admin_on_registration', 'description' => 'Send an email to Admin when a new user registers', 'type' => 'select', 'default' => 'yes', 'value' => 'yes', 'options' => '{"yes":"Yes","no":"No"}', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id, 'order' => '999'); $registration_email_admin_user = Settings\Model\Setting::create($registration_admin_new_user); $admin_registration_email_template = array('title' => 'User Registered Email Template', 'slug' => 'admin_registration_email_template', 'description' => 'Template to be used if the admin registration email is enabled', 'type' => 'select', 'default' => $re->id, 'value' => $re->id, 'options' => 'func:registration\\get_email_templates', 'class' => '', 'section' => '', 'validation' => '', 'is_gui' => 1, 'module_slug' => 'registration', 'module_id' => $registration_module->id); $admin_registration_email = Settings\Model\Setting::create($admin_registration_email_template); // // EMAIL NAVIGATION LINK // $sidebar = Navigation\Model\Group::where_slug('sidebar')->first(); // Add links to sidebar navigation group $sidebar_signup_link = array('title' => 'Sign Up', 'module_id' => $registration_module->id, 'page_id' => '0', 'group_id' => $sidebar->id, 'parent' => '0', 'link_type' => 'uri', 'url' => '', 'uri' => 'signup', 'target' => '', 'order' => '2', 'restricted_to' => '0', 'class' => '', 'is_core' => '1'); $sidebar_link = Navigation\Model\Link::create($sidebar_signup_link); $header = Navigation\Model\Group::where_slug('header')->first(); $header_signup_link = array('title' => 'Sign Up', 'module_id' => $registration_module->id, 'page_id' => '0', 'group_id' => $header->id, 'parent' => '0', 'link_type' => 'uri', 'url' => '', 'uri' => 'signup', 'target' => '', 'order' => '2', 'restricted_to' => '0', 'class' => '', 'is_core' => '1'); $header_link = Navigation\Model\Link::create($header_signup_link); }
public static function disable($module_slug) { $module = Module::make($module_slug); if (!$module->is_valid()) { static::$errors = $module->errors; return false; } $dependencies = $module->has_dependencies(); if (empty($dependencies)) { $db_module = Model\Module::where('slug', '=', $module_slug)->first(); if (isset($db_module) and !empty($db_module)) { $db_module->enabled = 0; $db_module->save(); \Bundle::disable($module_slug); return true; } else { static::$errors->add('installer', 'Module [' . $module_slug . '] must be installed.'); return false; } } else { foreach ($dependencies as $dependency_slug => $module) { static::$errors->add('installer', 'Module [' . $module_slug . '] cannot be disabled. Please disable ' . $dependency_slug . ' module first.'); } return false; } }