Index: openacs-4/packages/acs-core-docs/www/object-system-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v diff -u -N -r1.34 -r1.35 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 27 Oct 2014 16:39:23 -0000 1.34 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 7 Aug 2017 23:47:51 -0000 1.35 @@ -1,5 +1,5 @@ -Object Model Design

Object Model Design

By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

+Object Model Design

Object Model Design

By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

Essentials

Data Model

Object Context and Access Control

Until the implementation of the general permissions system, every OpenACS application had to manage access control to its data separately. Later on, a notion of "scoping" was introduced into the core data model.

"Scope" is a term best explained by example. Consider some -hypothetical rows in the address_book table:

...scopeuser_idgroup_id...
...user123 ...
...group 456...
...public ...

The first row represents an entry in User 123's personal address book, +hypothetical rows in the address_book table:

...scopeuser_idgroup_id...
...user123 ...
...group 456...
...public ...

The first row represents an entry in User 123's personal address book, the second row represents an entry in User Group 456's shared address book, and the third row represents an entry in the site's public address book.

In this way, the scoping columns identify the security context in which a @@ -260,11 +260,11 @@ form:

 
 create table acs_object_types (
-        object_type          varchar(100) not null primary key,
+        object_type          varchar(1000) not null primary key,
         supertype            references acs_object_types (object_type),
         abstract_p           char(1) default 'f' not null
-        pretty_name          varchar(100) not null unique,
-        pretty_plural        varchar(100) not null unique,
+        pretty_name          varchar(1000) not null unique,
+        pretty_plural        varchar(1000) not null unique,
         table_name           varchar(30) not null unique,
         id_column            varchar(30) not null,
         name_method          varchar(30),
@@ -337,7 +337,7 @@
 acs_rel_types. The key parts of this table look like this:

 
 create table acs_rel_types (
-        rel_type        varchar(100) not null
+        rel_type        varchar(1000) not null
                         references acs_object_types(object_type),
         object_type_one not null
                         references acs_object_types (object_type),
@@ -857,5 +857,5 @@
 type mechanism is a bit more complex, but in return it provides functionality
 on par with the old user/groups system in a more general way.

Future Improvements/Areas of Likely Change

Nothing here yet.

Authors

Pete Su generated this document from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies -are his and his alone.

Revision History

Document Revision #Action Taken, NotesWhen?By Whom?
0.1Creation9/09/2000Pete Su
0.2Edited for ACS 4 Beta9/30/2000Kai Wu
0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term -"OM"11/07/2000Pete Su
View comments on this page at openacs.org
+are his and his alone.

Revision History

Document Revision #Action Taken, NotesWhen?By Whom?
0.1Creation9/09/2000Pete Su
0.2Edited for ACS 4 Beta9/30/2000Kai Wu
0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term +"OM"11/07/2000Pete Su