Skip to end of metadata
Go to start of metadata

Status: Design / Development
We currently have not designed the content access. We are working to define the navigational aspects of the repository and integration of views into ATutor. Once this is implemented, we will begin to consider how content will be added to a repository.


This document outlines development of a content repository module. I am open to any feedback or suggestions regarding requirements, features, or implementation details.

During development we are keeping our module's data layer in a separate database.


We would like to keep the initial requirement set small and then incrementally add features. Below is what we are starting with

  • Administrators have read / write / create / delete permission for repositories
  • Public, Private, Protected will work identical to the way courses function
  • Instructors are 'subscribed' to repositories
  • While viewing a repository, an instructor may copy content from the repository into one of his/her courses
  • Repositories are read only for instructors
  • Repositories are not visible to students at all

Data Layer

In our data layer implementation, we have looked at columns of the following ATutor database tables to guide us.

  • at_courses
  • at_enrollment
  • at_content

We now have the following tables / columns

  • repository
  • repositoryid
  • access
  • created_date
  • title
  • description
  • icon
  • repository_enrollment
  • repository_enrollmentid
  • member_id
  • repositoryid
  • repository_content
  • repository_contentid
  • repositoryid
  • content_parent_id
  • ordering
  • last_modified
  • formatting
  • content_path
  • title
  • text

View Layer

The view is what the user can interact with. Currently we have the following views to support

Admin User

  1. Home Tab View
    1. Add new tab: Repository
    2. Add new section in main content area:: Repositories: Create Repository Subscribe Users
  2. Repository Tab View (new)
  • *# Add similar view that Coruses displays.
    1. *## Results found
      1. Search box
      2. Table with the following columns: Title, Access, Created, Subscribed
      3. Radiobuttons for each row of the table with actions for View, Edit, Backups, and Delete displayed below the table

 Implementation Details

We are using PHP Object Generator (aka POG) to generate database wrappers. During the first couple of implementation iterations, we will only work with wrappers for PHP 5.1 and use the native PDO api. As the module matures, we will try to support PHP 4 by generating those wrappers as well. To get an idea of how to work with POG, follow this link and click on the the submit button. An option to download a zip file with generated code is presented.

PureMVC is a model view controller framework. It is originally developed for Adobe ActionScript and has recently been port to several languages including C#, Java, and PHP. We are still considering to use PureMVC framework for our module development. The port is currently in alpha and there are few precedents available for its use. In my experience (with Flash development) it simplifies and speeds development, especially when more than one developer is involved.

PureMVC PHP Website

About Us 

The company sponsoring this effort is LateNiteLabs. More information about the company can be found at We are currently developing a virtual chemistry lab implemented in Flash and Flex.

  • No labels


  1. hia, this looks exiting! I'm afraid I can't help you much, but for your question about last_cid, it's purpose must be to log the last content page (content id / cid) a user visited, so this user can continue from that page the next time he/she logs in.

    it should be safe to ignore when it comes to dealing with repositories.

  2. last_cid is the content id for the last content page users visited, so they can start where they left off when they were last viewing content. Used in the resume link on MyCourses, and the continue link while in a course, but not viewing content (e.g while in the forum, or blog etc.)