public function update()
 {
     if (FabriqModules::module('roles')->requiresPermission('update menus', 'sitemenus')) {
         $menu = FabriqModules::new_model('sitemenus', 'Menus');
         $menu->find(PathMap::arg(2));
         if ($menu->count() > 0 && $menu->menuName != '') {
             Fabriq::title('Update menu');
             FabriqModules::set_var('sitemenus', 'moduleName', $this->name);
             if (isset($_POST['submit'])) {
                 $menu->menuName = trim($_POST[$this->name . '_menuName']);
                 $menu->description = trim($_POST[$this->name . '_description']);
                 if (strlen($menu->menuName) == 0) {
                     Messaging::message('You must provide a menu name');
                 }
                 if (strlen($menu->description) == 0) {
                     $menu->description = NULL;
                 }
                 if (!Messaging::has_messages()) {
                     $menu->update();
                     Messaging::message("Menu \"{$menu->menuName}\" has been updated", 'success');
                     FabriqModules::trigger_event('sitemenus', 'create', 'menu created');
                 }
                 FabriqModules::set_var('sitemenus', 'submitted', true);
             }
         } else {
             Fabriq::title('Menu not found');
         }
         FabriqModules::set_var('sitemenus', 'menu', $menu);
     }
 }
 public function destroy()
 {
     if (FabriqModules::module('roles')->requiresPermission('delete blog posts', 'blog')) {
         $blog = FabriqModules::new_model('blog', 'Blogs');
         $blog->find(PathMap::arg(2));
         if ($blog->title != '') {
             Fabriq::title('Delete entry?');
             FabriqModules::set_var('blog', 'blog', $blog);
             if (isset($_POST['submit'])) {
                 $blog->destroy();
                 FabriqModules::trigger_event($this->name, 'destroy', 'blog entry deleted', $blog);
                 FabriqModules::set_var('blog', 'submitted', true);
             }
         } else {
             FabriqModules::set_var('blog', 'notFound', true);
             Fabriq::title('Blog entry not found');
         }
     }
 }
 public function update()
 {
     Fabriq::render('none');
     if (FabriqModules::module('roles')->requiresPermission('administer users', $this->name)) {
         $user = FabriqModules::new_model('users', 'Users');
         $user->find(PathMap::arg(2));
         $u = null;
         $errors = array();
         $roles = null;
         if ($user->display != '') {
             $ur = FabriqModules::new_model('users', 'UserRoles');
             $ur->getRoles($user->id);
             $uroles = array();
             for ($i = 0; $i < $ur->count(); $i++) {
                 $uroles[] = $ur[$i]->role;
             }
             $r = FabriqModules::new_model('roles', 'Roles');
             $r->getAll();
             $roles = array();
             for ($i = 0; $i < $r->count(); $i++) {
                 if ($r[$i]->role != 'unauthenticated' && $r[$i]->role != 'authenticated') {
                     $roles[] = $r[$i];
                 }
             }
             if (isset($_POST['submit'])) {
                 $user->display = $_POST['display'];
                 $user->email = $_POST['email'];
                 $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($emailPattern, $_POST['email'])) {
                     $errors[] = "email";
                 }
                 if (!preg_match($displayPattern, $_POST['display'])) {
                     $errors[] = "display";
                 }
                 if (count($errors) == 0) {
                     // update roles
                     $toAdd = array();
                     $toRemove = array();
                     for ($i = 0; $i < count($roles); $i++) {
                         if ($_POST['role' . $roles[$i]->id] == 1) {
                             if (!array_key_exists($roles[$i]->id, $ur->roles)) {
                                 $toAdd[] = $roles[$i]->id;
                             }
                         } else {
                             if (array_key_exists($roles[$i]->id, $ur->roles)) {
                                 $toRemove[] = $roles[$i]->id;
                             }
                         }
                     }
                     // add new role assignments
                     for ($i = 0; $i < count($toAdd); $i++) {
                         $ur = FabriqModules::new_model('users', 'UserRoles');
                         $ur->user = $user->id;
                         $ur->role = $toAdd[$i];
                         $ur->create();
                     }
                     // remove unneeded role assignments
                     for ($i = 0; $i < count($toRemove); $i++) {
                         $ur = FabriqModules::new_model('users', 'UserRoles');
                         $ur->getRole($user->id, $toRemove[$i]);
                         $ur->destroy();
                     }
                     // refresh user roles
                     $uroles = FabriqModules::new_model('users', 'UserRoles');
                     $uroles->getRoles($user->id);
                     $user->update();
                     $msg = "User updated";
                     $success = true;
                 } else {
                     $msg = "User could not be updated because of errors";
                     $success = false;
                 }
                 $u = new stdClass();
                 $u->display = $_POST['display'];
                 $u->email = $_POST['email'];
                 $user->encpwd = null;
                 FabriqModules::trigger_event('users', 'update', 'User updated', $user);
             } else {
                 $msg = "User found";
                 $u = new stdClass();
                 $u->display = $user->display;
                 $u->email = $user->email;
                 $success = true;
             }
             $u->id = $user->id;
             $u->roles = $uroles;
         } else {
             $success = false;
             $msg = "User could not be found";
         }
         $notLoggedIn = false;
     } else {
         $success = false;
         $msg = 'User not logged in';
         $errors = null;
         $u = null;
         $notLoggedIn = true;
     }
     header('Content-type:application/json');
     echo json_encode(array('success' => $success, 'msg' => $msg, 'user' => $u, 'errors' => $error, 'notLoggedIn' => $notLoggedIn, 'roles' => $roles));
 }