Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

DB layer 2.0: Difference between revisions

From MoodleDocs
No edit summary
Line 24: Line 24:
* Tasks, bugs and progress tracked in MDL-14679
* Tasks, bugs and progress tracked in MDL-14679
* Due date: June 24th
* Due date: June 24th
== Milestones ==
=== M1: initial commit (due date: May 15th) - HEAD ===
What is done:
:1. API should be stable, tested during conversion of several parts or moodle
:2. $db-> references are gone
:3. direct adodb function calls should be all gone (except auth and enrol)
:4. some functions from dmllib are deprecated/removed
:5. old ddllib function are not used at all now
:6. XMLDB editor should fully work now
:7. BC compatible 100$
=== M2: 4 DBs passing all tests (due date: May 27th) - HEAD ===
:1. mssql and ora related work
:2. use of adodb in enrol and auth plugins
:3. functional unit tests (own-db and multi-db)
:4. logging/profiling/exceptions
:5. xmldb public API refactoring
:6. install
:7. BC compatible 100$
:8. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M2" in the Bug Tracker*.
=== M3: core stuff, pre magic_quotes off tasks (due date: June 24th) - HEAD ===
:1. Needs to be detailed in [[dmllib 2.0 migration docs|dmllib 2.0 migration docs]].
:2. Tasks between May28th and June 11th
:3. API should be available in the [http://phpdocs.moodle.org phpdocs site]
:4. BC compatible 100$
:5. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M3" in the Bug Tracker].
=== M4: big hacking, post magic_quotes off tasks (due date: June 24th) - In parallel with M3 - (HEAD, BRANCH, PATCH??) ===
:1. BREAKAGE with old code.
:2. Documentation finished (Docs (examples, architecture, migration guide...), PHP Docs).
:3. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M4" in the Bug Tracker].
=== M5: Moodle tests using real & mockup dmllib (starting on May 27th...) - In parallel and after M3 and M4 - HEAD ===
:1. Needs good documentation for developers
:2. Will be huge but useful
:3. Always try to be able to run tests from cli script (apart from UI) to be able to execute them daily and report status in some URL (html output).


== Meetings ==
== Meetings ==

Revision as of 23:01, 22 May 2008

Note: This page is a work-in-progress. Feedback and suggested improvements are welcome. Please join the discussion on moodle.org or use the page comments.


Objectives

  • Switch to prepared statements - using placeholders and preparing statements protects against sql injection
  • Remove the need for data to be add/strip slashed all over the place in the code.
  • Enable easier and productive unit tests.

Requirements

  • 100% cross-db
  • OOP implementation:
    • Full abstraction: Hide underlying libraries (adodb, pdo...) and drivers to Moodle developers completely.
    • Make it so that the database object can be subclassed - this means for unit tests that want to test database access, the test framework can override necessary methods
    • support ? and :param parameter types (independently of the param types supported by each driver).
    • global $DB
    • profiling, logging and exceptions
  • Easy to use (consistent and similar to current dmllib 1.0)
  • Easy to migrate (provide documentation and utilities to help on that)
  • Complete unit testing (self)
  • Easy unit testing (moodle - real and mockup)
  • Well documented (PHPDocs + use examples)
  • Tasks, bugs and progress tracked in MDL-14679
  • Due date: June 24th

Milestones

M1: initial commit (due date: May 15th) - HEAD

What is done:

1. API should be stable, tested during conversion of several parts or moodle
2. $db-> references are gone
3. direct adodb function calls should be all gone (except auth and enrol)
4. some functions from dmllib are deprecated/removed
5. old ddllib function are not used at all now
6. XMLDB editor should fully work now
7. BC compatible 100$


M2: 4 DBs passing all tests (due date: May 27th) - HEAD

1. mssql and ora related work
2. use of adodb in enrol and auth plugins
3. functional unit tests (own-db and multi-db)
4. logging/profiling/exceptions
5. xmldb public API refactoring
6. install
7. BC compatible 100$
8. In general everything titled as [http://tracker.moodle.org/browse/MDL-14679 "M2" in the Bug Tracker*.


M3: core stuff, pre magic_quotes off tasks (due date: June 24th) - HEAD

1. Needs to be detailed in dmllib 2.0 migration docs.
2. Tasks between May28th and June 11th
3. API should be available in the phpdocs site
4. BC compatible 100$
5. In general everything titled as "M3" in the Bug Tracker.


M4: big hacking, post magic_quotes off tasks (due date: June 24th) - In parallel with M3 - (HEAD, BRANCH, PATCH??)

1. BREAKAGE with old code.
2. Documentation finished (Docs (examples, architecture, migration guide...), PHP Docs).
3. In general everything titled as "M4" in the Bug Tracker.

M5: Moodle tests using real & mockup dmllib (starting on May 27th...) - In parallel and after M3 and M4 - HEAD

1. Needs good documentation for developers
2. Will be huge but useful
3. Always try to be able to run tests from cli script (apart from UI) to be able to execute them daily and report status in some URL (html output).


Meetings

Ideas