12-20-2018, 11:08 AM
A quick update on the new webring program.
The program will have 5 classes of data objects, 2 relational pseudo-object classes, and a couple of classes for composing and caching HTML pages.
The data objects are pretty minimalistic, having just enough properties for the system to function properly. Data objects and their properties:
User
-- id
-- username
-- password
-- question
-- answer
-- joined
-- accessLevel
Notice no e-mail address or other PI is stored here. When users register, they must provide a question and answer to be used to regain access to their account if they forget their password.
WebRing
-- id
-- title
-- description
-- ownerId
The ownerId refers to the user ID who created the webring. When a user is deleted, all of their webrings will be reassigned to the sysop. The sysop cannot be deleted.
Category
-- id
-- title
-- description
-- parentId
The parentId refers to the category that this category is a subcategory of. It will be 0 for top-level categories. If a category is deleted, its subcategories (if it has any) will become subcategories ("children") of its parent category, if it has one. Otherwise, the children of the deleted category will become top-level categories.
Site
-- id
-- title
-- description
-- domain
-- ownerId
When the owner of a site entry is deleted, the entry is transferred to the sysop, same as for WebRing entries.
The relational objects store relationships between data objects.
categoryRel
-- categoryId
-- webringId
The WebRing referred to by webringId is in the Category referred to by categoryId. A WebRing may be in more than one Category. When a WebRing is deleted, all of its category relations are deleted.
siteRel
-- webringId
-- siteId
This works the same way as categoryRel. The referenced Site is a memeber of the referenced WebRing.
The system will use cookies for users to log in and manage their accounts, but there will be no click tracking, nor will the system place tracking cookies or JavaScript on member websites. A sysop could modify the software to do all of that if they want, but I'm not going to make it easy for them.
The program will have 5 classes of data objects, 2 relational pseudo-object classes, and a couple of classes for composing and caching HTML pages.
The data objects are pretty minimalistic, having just enough properties for the system to function properly. Data objects and their properties:
User
-- id
-- username
-- password
-- question
-- answer
-- joined
-- accessLevel
Notice no e-mail address or other PI is stored here. When users register, they must provide a question and answer to be used to regain access to their account if they forget their password.
WebRing
-- id
-- title
-- description
-- ownerId
The ownerId refers to the user ID who created the webring. When a user is deleted, all of their webrings will be reassigned to the sysop. The sysop cannot be deleted.
Category
-- id
-- title
-- description
-- parentId
The parentId refers to the category that this category is a subcategory of. It will be 0 for top-level categories. If a category is deleted, its subcategories (if it has any) will become subcategories ("children") of its parent category, if it has one. Otherwise, the children of the deleted category will become top-level categories.
Site
-- id
-- title
-- description
-- domain
-- ownerId
When the owner of a site entry is deleted, the entry is transferred to the sysop, same as for WebRing entries.
The relational objects store relationships between data objects.
categoryRel
-- categoryId
-- webringId
The WebRing referred to by webringId is in the Category referred to by categoryId. A WebRing may be in more than one Category. When a WebRing is deleted, all of its category relations are deleted.
siteRel
-- webringId
-- siteId
This works the same way as categoryRel. The referenced Site is a memeber of the referenced WebRing.
The system will use cookies for users to log in and manage their accounts, but there will be no click tracking, nor will the system place tracking cookies or JavaScript on member websites. A sysop could modify the software to do all of that if they want, but I'm not going to make it easy for them.