Пример #1
0
 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);
 }
Пример #2
0
 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);
 }
Пример #3
0
 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');
         }
     }
 }
Пример #4
0
 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");
 }
Пример #5
0
 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']);
     }
 }
Пример #6
0
 public function is_editor()
 {
     return $this->is_administrator() || $this->has_level(UserRole::factory()->get_by_name('editor')->access_level);
 }
Пример #7
0
 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");
                 }
             }
         }
     }
 }