public function scanForPermission() { $p = new Page(); $permissions = array(); self::scanPermission($p->get_declared_pages(), $permissions); $permissions = array_unique($permissions); asort($permissions); $real_permissions = array_values($permissions); $saved_permission = array(); $sp = PermissionObject::loadAll(); $permissions = array(); foreach ($saved_permission as $t) { $saved_permission[$t->permission_name] = $t->pid; } foreach ($real_permissions as $p) { $permissions[] = $p; $d = new PermissionObject(); $d->loadByName($p); $d->permission_name = $p; if (isset($saved_permission[$p])) { unset($saved_permission[$p]); } $d->save(); } foreach ($saved_permission as $k => $t) { $p = new PermissionObject(); $p->load($t); $p->delete(); } return $permissions; }