LimeSurvey 2012 Fund-Raiser

Collected: 5091.81 $
Goal: 50,000.00 $     List of donators »

Please read:

"Help LimeSurvey to advance and stay free and Open Source - for everyone"

A personal letter from Carsten Schmitz, LimeSurvey Lead
(Cached)
Refresh Print

Rebuild the database frontend using CodeIgniter



Outline


During GSoC 2010, a database frontend was developed using CakePHP. Limesurvey has since decided to switch to the CodeIgniter framework. As such, last years work needs to be ported to CodeIgniter. This project has been assigned to Pooja Narula (pnarula?) under the mentorship of Maarten (ttielu) and Pieter-Jan (MrP). The final project has to comply with the API developed last year, changes have to be discussed.

Project Details


Last year, the DBSE was implemented with tables for questions and responses. The responses were stored in section-flat layout (each section having a separate table; link here). This was done in CakePHP, which is based on MVC design pattern. We want to port this implementation to CI, which is also an MVC framework. So the basic structure of the code will remain the same.

In the previous implementation, we had the following Model classes:

DbseSurvey
DbseSurveyMetadata
DbseSection
DbseSectionMetadata
DbseQuestion
DbseQuestionMetadata
DbseModelAnswer
DbseModelAnswerMetadata
DbseQuestionType
DbseResponse
DbseQuestionTypePolicy

The controller had the following components:

DbseSurveyManagementComponent
DbseSectionManagementComponent
DbseQuestionManagementComponent
DbseResponseAccessComponent
DbseModelAnswerManagementComponent
DbseObserverComponent

We also want to implement the various question types. This would involve extending the DbseQuestionTypePolicy for different types of questions.

In the previous implementation, the DbseEngineFactory implements the factory pattern (example: function createEngine returns an engine for the input survey). There is an abstract class defined called DbseEngine which specifies the needed functionality for a database engine, and extended by various engines (in our case by DbseSectionFlatEngine). We also need to port the section-flat implementation to CI.

After the porting of DBSE to CI is done, the task will be to integrate the DBSE with main limesurvey developement stream (the details for this needs to be worked out).

Approach


The whole project will be in following four phases:
  • Understanding and Designing Phase
    • Understanding of the CI framework (various helper functions and classes available; to be done in detail).
    • Understanding the curreent CakePHP implementation.
    • Finalizing the database schemas (both for questions and responses; could be same as previous ones).
    • Final design of the code to be implemented. Class diagram (which will include all the classes and their methods, data members).
  • Implementation Phase: Porting the 'Dbse' folder followed by the section flat layout. This would be followed by the implementation of various question types. (The exact details will depend on the final design).
  • Integration Phase: Integrating the DBSE with the main limesurvey development stream; This would depend on the status of other project(s) for porting LS to CI.
  • Testing Phase: Implementing tests, Overall performance optimization.

Action Plan


The inital milestones are a little later and smaller since Pooja has exams till first week of June.

Timeline Milestone
Till 12 June Completion of the first phase (Understanding and Designing phase).
13 June - 17 June Making controller stubs using CI conventions.
18 June - 26 June Implementing the model classes (question, survey, their metadata etc)and Dbse exceptions module.
27 June - 3 July Implementing the various controller components (question management etc).
4 July - 10 July Implementing the engine factory and the section flat layout.
11 July - 17 July Implement question types.
18 July -24 July Implement Unit Tests.
24 July - 7 Aug Implement Flat Database Layout Engine (and its testing).
8 Aug onwards Overall Testing, Performance, Cleaning up code etc.


Meeting log


The meeting log can be found here: RDFC Project Meeting Log

Comments and suggestions here:text

Contributors to this page: pnarula .
Page last modified on Friday 05 of August, 2011 13:30:05 CEST by pnarula.

User contributed notes

(your email address will not be published)
noteNote
Your comment will have to be approved by the moderator before it is displayed.

Site Language: English

Online users

102 online users

...