(Cached)
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 LeadRebuild the database frontend using CodeIgniter
Table of contents
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 | |
| 13 June - 17 June | |
| 18 June - 26 June | |
| 27 June - 3 July | |
| 4 July - 10 July | |
| 11 July - 17 July | |
| 18 July -24 July | |
| 24 July - 7 Aug | |
| 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:
Contributors to this page: pnarula
.
Page last modified on Friday 05 of August, 2011 13:30:05 CEST by pnarula.

User contributed notes