public function edit($cid, $title) { $cid = (int) $cid; $content = Content::factory($cid); if (!$this->user->can_edit_content($content)) { $this->templatemanager->notify_next("You don't have enough permissions to edit this content!", 'failure'); redirect('administration/dashboard'); } $page = $content->page->limit(1)->get(); $roles = UserRole::factory()->get(); $ctypes = ContentType::factory()->get(); if (!$page->exists()) { show_error("No page exists!"); } /*if (!$content->exists()) { $html = $page->body()->find('div[id='.trim($title).']', 0)->innertext; //var_dump($html); die; $content->div = $title; $content->contents = $html; $content->editor_id = $this->user->id; $content->save(array($page)); }//*/ $divs = $page->get_div_ids(); //$this->templatemanager->assign("css_file", $css_file); $this->templatemanager->assign("content", $content); $this->templatemanager->assign("divs", $divs); $this->templatemanager->assign("page", $page); $this->templatemanager->assign("roles", $roles); $this->templatemanager->assign("types", $ctypes); $suffix = strtolower($content->contenttype->get()->classname); $this->templatemanager->set_title("Edit Content"); $this->templatemanager->show_template("contents_edit_" . $suffix); }
public function permissions_for($id) { //require login if (!$this->loginmanager->is_logged_in()) { redirect($this->loginmanager->login_url); } $role = UserRole::factory((int) $id); $arr = array(); $perms = $role->permission->get(); foreach ($perms as $p) { $arr[] = $p->key; } echo json_encode($arr); }
public function remove($id) { $id = (int) $id; $role = UserRole::factory($id); if ($role->name == 'Administrator') { $this->templatemanager->notify_next(__("You can't remove \"Administrator\" role."), "failure"); redirect('administration/userroles'); } else { if ($this->user->is_related_to($role)) { $this->templatemanager->notify_next(__("You can't remove the role you're in."), "failure"); redirect('administration/userroles'); } else { $role->delete(); $this->templatemanager->notify_next(__("User role is removed successfully."), "success"); redirect('administration/userroles'); } } }
public function add($based_on_page_id = null) { if (!empty($based_on_page_id)) { $oldpage = Page::factory()->get_by_id($based_on_page_id); } else { $oldpage = null; } if (!$this->user->can('add_pages')) { $this->templatemanager->notify_next("You don't have enough permissions to add new page!", 'failure'); redirect('administration/dashboard'); } //$divs = $page->get_div_ids(); //$contents = $page->content->get(); $users = User::factory()->get(); $roles = UserRole::factory()->get(); $this->templatemanager->assign("oldPage", $oldpage); $this->templatemanager->assign("users", $users); $this->templatemanager->assign("roles", $roles); $this->templatemanager->assign("files", File::get_templates()); //$this->templatemanager->assign("divs", $divs); $this->templatemanager->set_title("Add New Page"); $this->templatemanager->show_template("pages_edit"); }
public function save($id = null) { $this->load->helper('email'); if (!empty($id)) { $id = (int) $id; } if (!$this->user->can('manage_users') && $id !== $this->user->id) { $this->templatemanager->notify_next("You are not allowed to edit users!", 'failure'); redirect('administration/dashboard'); } //get user from db (or instantiate new user obj) if (empty($id)) { $user = new User(); } else { $user = User::factory()->get_by_id($id); } $user->name = $this->input->post('name'); if ($this->user->can('manage_users')) { $user->active = (bool) $this->input->post('active'); } //check name if (empty($user->name) || strlen($user->name) < 5) { $this->templatemanager->notify_next(__("Name can not be empty or shorter than 5 characters."), 'failure'); redirect('administration/users/' . (empty($id) ? 'add' : 'edit/' . $id)); } $role_id = $this->input->post('userrole_id'); //get role if ($this->user->can('manage_users') && !empty($role_id)) { $role = UserRole::factory((int) $role_id); } else { $role = $this->user->userrole->get(); } //other data $email = trim($this->input->post('email')); //check e-mail if (!valid_email($email)) { $this->templatemanager->notify_next(__("Entered e-mail address was not valid."), 'failure'); redirect('administration/users/' . (empty($id) ? 'add' : 'edit/' . $id)); } else { $user->email = $email; } //get, check and update password $password = trim($this->input->post('password')); $password2 = trim($this->input->post('password2')); if (empty($id) && empty($password) && empty($password2)) { $this->templatemanager->notify_next(__("When creating new user you must specify his password!"), 'failure'); redirect('administration/users/' . (empty($id) ? 'add' : 'edit/' . $id)); } if (!empty($password)) { if ($password != $password2) { $this->templatemanager->notify_next(__("Passwords differ!"), 'failure'); redirect('administration/users/' . (empty($id) ? 'add' : 'edit/' . $id)); } else { //if ($user->id != 1) $user->password = $password; //else // $this->templatemanager->notify_next("Changing administrator password is disabled in the demo!", 'information'); } } //prepare for upload $config['upload_path'] = './iu-resources/uploads/'; $config['allowed_types'] = 'gif|jpg|png|jpeg'; $config['max_size'] = '512'; $config['max_width'] = '1024'; $config['max_height'] = '1024'; $config['encrypt_name'] = true; $this->load->library('upload', $config); //upload profile picture if (!empty($_FILES['picture']['name'])) { if (!$this->upload->do_upload('picture')) { show_error($this->upload->display_errors()); } else { $data = $this->upload->data(); $im = image_create_from_file($config['upload_path'] . $data['file_name']); $im = image_resize($im, 150); image_to_file($im, $config['upload_path'] . $data['file_name']); $user->picture = $data['file_name']; } } //save user $user->save(array($role)); //save user and role //permissions $perms_arr = $this->input->post('permissions'); $perms = Permission::factory()->where_in('id', $perms_arr)->get(); $user->delete(Permission::factory()->get()->all); $user->save($perms->all); //notify user if ($this->user->id != $id) { $this->templatemanager->notify_next(__("User is saved successfully."), "success"); } else { $this->templatemanager->notify_next(__("Profile is updated successfully."), "success"); } if ($this->loginmanager->is_editor()) { redirect('administration/users'); } //go back to previous page if (empty($_SERVER['HTTP_REFERER'])) { redirect('administration/users'); } else { redirect($_SERVER['HTTP_REFERER']); } }
public function is_editor() { return $this->is_administrator() || $this->has_level(UserRole::factory()->get_by_name('editor')->access_level); }
public function saveadmin() { //we cannot save admin if database config file is empty if (!is_db_conf_empty()) { //if config file exists, load libraries $this->load->database(); $this->load->library('datamapper'); DataMapper::$config['prefix'] = $this->db->dbprefix; } else { redirect("setup/help/database-config-missing"); } //now create the mofo admin $role = UserRole::factory()->where('name', 'Administrator')->limit(1)->get(); $user = new User(); $perms = Permission::factory()->get(); $name = $this->input->post('name'); $email = $this->input->post('email'); if (empty($name)) { $this->saveadmin_error("You need to specify administrator's name."); } else { if (empty($email)) { $this->saveadmin_error("You need to specify administrator's e-mail address."); } else { $user->name = $name; $user->email = $email; $user->active = 1; $password = trim($this->input->post('password')); $password2 = trim($this->input->post('password2')); if (empty($password)) { $this->saveadmin_error("You must enter administrator's password."); } else { if ($password != $password2) { $this->saveadmin_error("Entered passwords differ."); } else { $user->password = $password; $user->save(array($role, $perms->all)); redirect("setup/finish"); } } } } }