Merge branch 'MDL-30975' of git://github.com/ankitagarwal/moodle
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 13 Feb 2012 23:53:09 +0000 (00:53 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 13 Feb 2012 23:53:09 +0000 (00:53 +0100)
20 files changed:
course/renderer.php
filter/data/filter.php
grade/export/grade_export_form.php
lib/ddl/database_manager.php
lib/ddl/mssql_sql_generator.php
lib/ddl/mysql_sql_generator.php
lib/ddl/oracle_sql_generator.php
lib/ddl/postgres_sql_generator.php
lib/ddl/sql_generator.php
lib/ddl/sqlite_sql_generator.php
lib/moodlelib.php
lib/navigationlib.php
mod/data/export.php
mod/data/field/file/field.class.php
mod/data/lib.php
mod/quiz/view.php
mod/resource/lang/en/resource.php
mod/wiki/editors/wiki_editor.php
portfolio/mahara/lang/en/portfolio_mahara.php
theme/styles.php

index 3e9898c..1e1d7ad 100644 (file)
@@ -92,8 +92,8 @@ class core_course_renderer extends plugin_renderer_base {
      */
     protected function course_category_tree_category(stdClass $category, $depth=1) {
         $content = '';
-        $hassubcategories = (count($category->categories)>0);
-        $hascourses = (count($category->courses)>0);
+        $hassubcategories = (isset($category->categories) && count($category->categories)>0);
+        $hascourses = (isset($category->courses) && count($category->courses)>0);
         $classes = array('category');
         if ($category->parent != 0) {
             $classes[] = 'subcategory';
index 60ca85f..451c1d9 100644 (file)
@@ -71,7 +71,7 @@ class filter_data extends moodle_text_filter {
                       JOIN {data_content} dc ON dc.fieldid = df.id AND dc.recordid = dr.id
                      WHERE d.course ' . $coursesql . '
                        AND df.type = \'text\'
-                       AND ' . $DB->sql_compare_text('df.param1', 1) . ' = 1';
+                       AND ' . $DB->sql_compare_text('df.param1', 1) . " = '1'";
 
             if (!$contents = $DB->get_records_sql($sql, $params)) {
                 $nothingtodo = true;
index 540694c..bd6e396 100644 (file)
@@ -115,7 +115,14 @@ class grade_export_form extends moodleform {
 
         if ($grade_items = $gseq->items) {
             $needs_multiselect = false;
+            $canviewhidden = has_capability('moodle/grade:viewhidden', get_context_instance(CONTEXT_COURSE, $COURSE->id));
+
             foreach ($grade_items as $grade_item) {
+                // Is the grade_item hidden? If so, can the user see hidden grade_items?
+                if ($grade_item->is_hidden() && !$canviewhidden) {
+                    continue;
+                }
+
                 if (!empty($features['idnumberrequired']) and empty($grade_item->idnumber)) {
                     $mform->addElement('advcheckbox', 'itemids['.$grade_item->id.']', $grade_item->get_name(), get_string('noidnumber', 'grades'));
                     $mform->hardFreeze('itemids['.$grade_item->id.']');
@@ -124,7 +131,7 @@ class grade_export_form extends moodleform {
                     $mform->setDefault('itemids['.$grade_item->id.']', 1);
                     $needs_multiselect = true;
                 }
-                }
+            }
 
             if ($needs_multiselect) {
                 $this->add_checkbox_controller(1, null, null, 1); // 1st argument is group name, 2nd is link text, 3rd is attributes and 4th is original value
index 13036c9..79afe2b 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
 
 
 /**
- * Database manager instance is responsible for all database structure
- * modifications.
+ * Database manager instance is responsible for all database structure modifications.
  *
  * @package    core
+ * @category   ddl
  * @subpackage ddl
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
 defined('MOODLE_INTERNAL') || die();
 
 /**
- * Database manager instance is responsible for all database structure
- * modifications. It is using db specific generators to find out
- * the correct SQL syntax to do that.
+ * Database manager instance is responsible for all database structure modifications.
+ *
+ * It is using db specific generators to find out the correct SQL syntax to do that.
+ *
+ * @package    core
+ * @category   ddl
+ * @subpackage ddl
+ * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
+ *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
+ *             2008 Petr Skoda                   http://skodak.org
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class database_manager {
 
+    /** @var moodle_database A moodle_database driver speific instance.*/
     protected $mdb;
-    public $generator; // public because XMLDB editor needs to access it
+    /** @var sql_generator A driver specific SQL generator instance. Public because XMLDB editor needs to access it.*/
+    public $generator;
 
     /**
-     * Creates new database manager
-     * @param object moodle_database instance
+     * Creates a new database manager instance.
+     * @param moodle_database $mdb A moodle_database driver specific instance.
+     * @param sql_generator $generator A driver specific SQL generator instance.
      */
     public function __construct($mdb, $generator) {
         global $CFG;
@@ -52,7 +62,7 @@ class database_manager {
     }
 
     /**
-     * Release all resources
+     * Releases all resources
      */
     public function dispose() {
         if ($this->generator) {
@@ -65,10 +75,8 @@ class database_manager {
     /**
      * This function will execute an array of SQL commands.
      *
-     * @exception ddl_exception if error found
-     *
-     * @param array $sqlarr array of sql statements to execute
-     * @return void
+     * @param array $sqlarr Array of sql statements to execute.
+     * @throws ddl_exception This exception is thrown if any error is found.
      */
     protected function execute_sql_arr(array $sqlarr) {
         foreach ($sqlarr as $sql) {
@@ -77,12 +85,10 @@ class database_manager {
     }
 
     /**
-     * Execute a given sql command string
-     *
-     * @exception ddl_exception if error found
+     * Execute a given sql command string.
      *
-     * @param string $command The sql string you wish to be executed.
-     * @return void
+     * @param string $sql The sql string you wish to be executed.
+     * @throws ddl_exception This exception is thrown if any error is found.
      */
     protected function execute_sql($sql) {
         if (!$this->mdb->change_database_structure($sql)) {
@@ -92,10 +98,10 @@ class database_manager {
     }
 
     /**
-     * Given one xmldb_table, check if it exists in DB (true/false)
+     * Given one xmldb_table, check if it exists in DB (true/false).
      *
-     * @param mixed the table to be searched (string name or xmldb_table instance)
-     * @return boolean true/false
+     * @param mixed $table The table to be searched (string name or xmldb_table instance).
+     * @return bool true/false True is a table exists, false otherwise.
      */
     public function table_exists($table) {
         if (!is_string($table) and !($table instanceof xmldb_table)) {
@@ -106,8 +112,8 @@ class database_manager {
 
     /**
      * Reset a sequence to the id field of a table.
-     * @param string $table name of table
-     * @return success
+     * @param string $table Name of table.
+     * @throws ddl_exception|ddl_table_missing_exception Exception thrown upon reset errors.
      */
     public function reset_sequence($table) {
         if (!is_string($table) and !($table instanceof xmldb_table)) {
@@ -127,11 +133,12 @@ class database_manager {
     }
 
     /**
-     * Given one xmldb_field, check if it exists in DB (true/false)
+     * Given one xmldb_field, check if it exists in DB (true/false).
      *
-     * @param mixed the table to be searched (string name or xmldb_table instance)
-     * @param mixed the field to be searched for (string name or xmldb_field instance)
-     * @return boolean true/false
+     * @param mixed $table The table to be searched (string name or xmldb_table instance).
+     * @param mixed $field The field to be searched for (string name or xmldb_field instance).
+     * @return boolean true is exists false otherwise.
+     * @throws ddl_table_missing_exception
      */
     public function field_exists($table, $field) {
     /// Calculate the name of the table
@@ -165,9 +172,10 @@ class database_manager {
      * Given one xmldb_index, the function returns the name of the index in DB
      * of false if it doesn't exist
      *
-     * @param object $xmldb_table table to be searched
-     * @param object $xmldb_index the index to be searched
-     * @return string index name of false
+     * @param xmldb_table $xmldb_table table to be searched
+     * @param xmldb_index $xmldb_index the index to be searched
+     * @return string|bool Index name or false if no indexes are found.
+     * @throws ddl_table_missing_exception Thrown when table is not found.
      */
     public function find_index_name(xmldb_table $xmldb_table, xmldb_index $xmldb_index) {
     /// Calculate the name of the table
@@ -200,11 +208,11 @@ class database_manager {
     }
 
     /**
-     * Given one xmldb_index, check if it exists in DB (true/false)
+     * Given one xmldb_index, check if it exists in DB (true/false).
      *
-     * @param object $xmldb_table the table to be searched
-     * @param object $xmldb_index the index to be searched for
-     * @return boolean true/false
+     * @param xmldb_table $xmldb_table The table to be searched.
+     * @param xmldb_index $xmldb_index The index to be searched for.
+     * @return boolean true id index exists, false otherwise.
      */
     public function index_exists(xmldb_table $xmldb_table, xmldb_index $xmldb_index) {
         if (!$this->table_exists($xmldb_table)) {
@@ -219,11 +227,11 @@ class database_manager {
      * to 1 "enum-like" constraint. So, if more than one is returned, only the first one will be
      * retrieved by this function.
      *
-     * TODO: Moodle 2.1 - Drop find_check_constraint_name()
+     * @todo MDL-31147 Moodle 2.1 - Drop find_check_constraint_name()
      *
-     * @param xmldb_table the table to be searched
-     * @param xmldb_field the field to be searched
-     * @return string check constraint name or false
+     * @param xmldb_table $xmldb_table The table to be searched.
+     * @param xmldb_field $xmldb_field The field to be searched.
+     * @return string|bool check constraint name or false
      */
     public function find_check_constraint_name(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
 
@@ -256,8 +264,8 @@ class database_manager {
      *
      * TODO: Moodle 2.1 - Drop check_constraint_exists()
      *
-     * @param xmldb_table the table
-     * @param xmldb_field the field to be searched for any existing constraint
+     * @param xmldb_table $xmldb_table The table.
+     * @param xmldb_field $xmldb_field The field to be searched for any existing constraint.
      * @return boolean true/false
      */
     public function check_constraint_exists(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -271,9 +279,9 @@ class database_manager {
      * Given one xmldb_key, the function returns the name of the key in DB (if exists)
      * of false if it doesn't exist
      *
-     * @param xmldb_table the table to be searched
-     * @param xmldb_key the key to be searched
-     * @return string key name of false
+     * @param xmldb_table $xmldb_table The table to be searched.
+     * @param xmldb_key $xmldb_key The key to be searched.
+     * @return string key name if found
      */
     public function find_key_name(xmldb_table $xmldb_table, xmldb_key $xmldb_key) {
 
@@ -316,7 +324,7 @@ class database_manager {
     /**
      * This function will delete all tables found in XMLDB file from db
      *
-     * @param $file full path to the XML file to be used
+     * @param string $file Full path to the XML file to be used.
      * @return void
      */
     public function delete_tables_from_xmldb_file($file) {
@@ -354,7 +362,7 @@ class database_manager {
      * and all the associated objects (keys, indexes, constraints, sequences, triggers)
      * will be dropped too.
      *
-     * @param xmldb_table table object (just the name is mandatory)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
      * @return void
      */
     public function drop_table(xmldb_table $xmldb_table) {
@@ -399,7 +407,7 @@ class database_manager {
     /**
      * This function will load one entire XMLDB file and call install_from_xmldb_structure.
      *
-     * @param $file full path to the XML file to be used
+     * @param string $file full path to the XML file to be used
      * @return void
      */
     public function install_from_xmldb_file($file) {
@@ -411,8 +419,8 @@ class database_manager {
     /**
      * This function will load one entire XMLDB file and call install_from_xmldb_structure.
      *
-     * @param $file full path to the XML file to be used
-     * @param $tablename the name of the table.
+     * @param string $file full path to the XML file to be used
+     * @param string $tablename the name of the table.
      * @param bool $cachestructures boolean to decide if loaded xmldb structures can be safely cached
      *             useful for testunits loading the enormous main xml file hundred of times (100x)
      */
@@ -445,7 +453,7 @@ class database_manager {
      * This function will generate all the needed SQL statements, specific for each
      * RDBMS type and, finally, it will execute all those statements against the DB.
      *
-     * @param object $structure xmldb_structure object
+     * @param stdClass $xmldb_structure xmldb_structure object.
      * @return void
      */
     public function install_from_xmldb_structure($xmldb_structure) {
@@ -460,7 +468,7 @@ class database_manager {
      * This function will create the table passed as argument with all its
      * fields/keys/indexes/sequences, everything based in the XMLDB object
      *
-     * @param xmldb_table table object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (full specs are required).
      * @return void
      */
     public function create_table(xmldb_table $xmldb_table) {
@@ -482,7 +490,7 @@ class database_manager {
      * If table already exists ddl_exception will be thrown, please make sure
      * the table name does not collide with existing normal table!
      *
-     * @param xmldb_table table object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (full specs are required).
      * @return void
      */
     public function create_temp_table(xmldb_table $xmldb_table) {
@@ -505,7 +513,7 @@ class database_manager {
      *
      * It is recommended to drop temp table when not used anymore.
      *
-     * @param xmldb_table table object
+     * @param xmldb_table $xmldb_table Table object.
      * @return void
      */
     public function drop_temp_table(xmldb_table $xmldb_table) {
@@ -526,8 +534,8 @@ class database_manager {
      * This function will rename the table passed as argument
      * Before renaming the index, the function will check it exists
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param string new name of the index
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param string $newname New name of the index.
      * @return void
      */
     public function rename_table(xmldb_table $xmldb_table, $newname) {
@@ -563,8 +571,8 @@ class database_manager {
     /**
      * This function will add the field to the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function add_field(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -589,8 +597,8 @@ class database_manager {
     /**
      * This function will drop the field from the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (just the name is mandatory)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function drop_field(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -614,8 +622,8 @@ class database_manager {
     /**
      * This function will change the type of the field in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function change_field_type(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -639,8 +647,8 @@ class database_manager {
     /**
      * This function will change the precision of the field in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function change_field_precision(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -651,8 +659,8 @@ class database_manager {
     /**
      * This function will change the unsigned/signed of the field in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function change_field_unsigned(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -663,8 +671,8 @@ class database_manager {
     /**
      * This function will change the nullability of the field in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function change_field_notnull(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -676,8 +684,8 @@ class database_manager {
      * This function will change the default of the field in the table passed as arguments
      * One null value in the default field means delete the default
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function change_field_default(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -703,8 +711,8 @@ class database_manager {
      *
      * TODO: Moodle 2.1 - Drop drop_enum_from_field()
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field field object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
      * @return void
      */
     public function drop_enum_from_field(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
@@ -733,9 +741,9 @@ class database_manager {
      * This function will rename the field in the table passed as arguments
      * Before renaming the field, the function will check it exists
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_field index object (full specs are required)
-     * @param string new name of the field
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
+     * @param string $newname New name of the field.
      * @return void
      */
     public function rename_field(xmldb_table $xmldb_table, xmldb_field $xmldb_field, $newname) {
@@ -776,7 +784,12 @@ class database_manager {
     /**
      * This function will check, for the given table and field, if there there is any dependency
      * preventing the field to be modified. It's used by all the public methods that perform any
-     * DDL change on fields, throwing one ddl_dependency_exception if dependencies are found
+     * DDL change on fields, throwing one ddl_dependency_exception if dependencies are found.
+     *
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_field $xmldb_field Index object (full specs are required).
+     * @return void
+     * @throws ddl_dependency_exception|ddl_field_missing_exception|ddl_table_missing_exception if dependency not met.
      */
     private function check_field_dependencies(xmldb_table $xmldb_table, xmldb_field $xmldb_field) {
 
@@ -805,8 +818,8 @@ class database_manager {
     /**
      * This function will create the key in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_key index object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_key $xmldb_key Index object (full specs are required).
      * @return void
      */
     public function add_key(xmldb_table $xmldb_table, xmldb_key $xmldb_key) {
@@ -825,8 +838,8 @@ class database_manager {
     /**
      * This function will drop the key in the table passed as arguments
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_key key object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_key $xmldb_key Key object (full specs are required).
      * @return void
      */
     public function drop_key(xmldb_table $xmldb_table, xmldb_key $xmldb_key) {
@@ -845,9 +858,9 @@ class database_manager {
      * This function will rename the key in the table passed as arguments
      * Experimental. Shouldn't be used at all in normal installation/upgrade!
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_key key object (full specs are required)
-     * @param string new name of the key
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_key $xmldb_key key object (full specs are required).
+     * @param string $newname New name of the key.
      * @return void
      */
     public function rename_key(xmldb_table $xmldb_table, xmldb_key $xmldb_key, $newname) {
@@ -869,8 +882,8 @@ class database_manager {
      * This function will create the index in the table passed as arguments
      * Before creating the index, the function will check it doesn't exists
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_index index object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_index $xmldb_intex Index object (full specs are required).
      * @return void
      */
     public function add_index($xmldb_table, $xmldb_intex) {
@@ -896,8 +909,8 @@ class database_manager {
      * This function will drop the index in the table passed as arguments
      * Before dropping the index, the function will check it exists
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_index index object (full specs are required)
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_index $xmldb_intex Index object (full specs are required).
      * @return void
      */
     public function drop_index($xmldb_table, $xmldb_intex) {
@@ -924,9 +937,9 @@ class database_manager {
      * Before renaming the index, the function will check it exists
      * Experimental. Shouldn't be used at all!
      *
-     * @param xmldb_table table object (just the name is mandatory)
-     * @param xmldb_index index object (full specs are required)
-     * @param string new name of the index
+     * @param xmldb_table $xmldb_table Table object (just the name is mandatory).
+     * @param xmldb_index $xmldb_intex Index object (full specs are required).
+     * @param string $newname New name of the index.
      * @return void
      */
     public function rename_index($xmldb_table, $xmldb_intex, $newname) {
index 3c9b41d..fa7cbad 100644 (file)
@@ -20,7 +20,7 @@
  * MSSQL specific SQL code generator.
  *
  * @package    core
- * @subpackage ddl
+ * @subpackage ddl_generator
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
index 3004c76..5f89363 100644 (file)
@@ -20,7 +20,7 @@
  * Mysql specific SQL code generator.
  *
  * @package    core
- * @subpackage ddl
+ * @subpackage ddl_generator
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
index 9450388..80039a5 100644 (file)
@@ -20,7 +20,7 @@
  * Oracle specific SQL code generator.
  *
  * @package    core
- * @subpackage ddl
+ * @subpackage ddl_generator
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
index 5e2a3c8..acde9d2 100644 (file)
@@ -20,7 +20,7 @@
  * PostgreSQL specific SQL code generator.
  *
  * @package    core
- * @subpackage ddl
+ * @subpackage ddl_generator
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
index 203ccf3..f70ab21 100644 (file)
@@ -1,5 +1,4 @@
 <?php
-
 // This file is part of Moodle - http://moodle.org/
 //
 // Moodle is free software: you can redistribute it and/or modify
 
 
 /**
- * This class represent the base generator class where all the
- * needed functions to generate proper SQL are defined.
+ * This class represent the base generator class where all the needed functions to generate proper SQL are defined.
  *
  * The rest of classes will inherit, by default, the same logic.
  * Functions will be overridden as needed to generate correct SQL.
  *
  * @package    core
+ * @category   ddl
  * @subpackage ddl
  * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
  *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
@@ -34,6 +33,13 @@ defined('MOODLE_INTERNAL') || die();
 
 /**
  * Abstract sql generator class, base for all db specific implementations.
+ *
+ * @package    core
+ * @category   ddl
+ * @subpackage ddl
+ * @copyright  1999 onwards Martin Dougiamas     http://dougiamas.com
+ *             2001-3001 Eloy Lafuente (stronk7) http://contiento.com
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 abstract class sql_generator {
 
@@ -42,96 +48,146 @@ abstract class sql_generator {
 /// that, by default, inherit this configuration.
 /// To change any of them, do it in extended classes instead.
 
-    public $quote_string = '"';   // String used to quote names
-
-    public $statement_end = ';'; // String to be automatically added at the end of each statement
+    /** @var string Used to quote names. */
+    public $quote_string = '"';
 
-    public $quote_all    = false; // To decide if we want to quote all the names or only the reserved ones
+    /** @var string To be automatically added at the end of each statement. */
+    public $statement_end = ';';
 
-    public $integer_to_number = false;  // To create all the integers as NUMBER(x) (also called DECIMAL, NUMERIC...)
-    public $float_to_number   = false;  // To create all the floats as NUMBER(x) (also called DECIMAL, NUMERIC...)
+    /** @var bool To decide if we want to quote all the names or only the reserved ones. */
+    public $quote_all    = false;
 
-    public $number_type = 'NUMERIC';    // Proper type for NUMBER(x) in this DB
+    /** @var bool To create all the integers as NUMBER(x) (also called DECIMAL, NUMERIC...). */
+    public $integer_to_number = false;
+    /** @var bool To create all the floats as NUMBER(x) (also called DECIMAL, NUMERIC...). */
+    public $float_to_number   = false;
 
-    public $unsigned_allowed = true;    // To define in the generator must handle unsigned information
-    public $default_for_char = null;      // To define the default to set for NOT NULLs CHARs without default (null=do nothing)
+    /** @var string Proper type for NUMBER(x) in this DB. */
+    public $number_type = 'NUMERIC';
 
-    public $drop_default_value_required = false; //To specify if the generator must use some DEFAULT clause to drop defaults
-    public $drop_default_value = ''; //The DEFAULT clause required to drop defaults
+    /** @var bool To define in the generator must handle unsigned information.*/
+    public $unsigned_allowed = true;
+    /** @var string To define the default to set for NOT NULLs CHARs without default (null=do nothing).*/
+    public $default_for_char = null;
 
-    public $default_after_null = true;  //To decide if the default clause of each field must go after the null clause
+    /** @var bool To specify if the generator must use some DEFAULT clause to drop defaults.*/
+    public $drop_default_value_required = false;
+    /** @var string The DEFAULT clause required to drop defaults.*/
+    public $drop_default_value = '';
 
-    public $specify_nulls = false;  //To force the generator if NULL clauses must be specified. It shouldn't be necessary
-                                 //but some mssql drivers require them or everything is created as NOT NULL :-(
+    /** @var bool To decide if the default clause of each field must go after the null clause.*/
+    public $default_after_null = true;
 
-    public $primary_key_name = null; //To force primary key names to one string (null=no force)
+    /**
+     * @var bool To force the generator if NULL clauses must be specified. It shouldn't be necessary.
+     * note: some mssql drivers require them or everything is created as NOT NULL :-(
+     */
+    public $specify_nulls = false;
 
-    public $primary_keys = true;  // Does the generator build primary keys
-    public $unique_keys = false;  // Does the generator build unique keys
-    public $foreign_keys = false; // Does the generator build foreign keys
+    /** @var string To force primary key names to one string (null=no force).*/
+    public $primary_key_name = null;
 
-    public $drop_primary_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME'; // Template to drop PKs
-                               // with automatic replace for TABLENAME and KEYNAME
+    /** @var bool True if the generator builds primary keys.*/
+    public $primary_keys = true;
+    /** @var bool True if the generator builds unique keys.*/
+    public $unique_keys = false;
+    /** @var bool True if the generator builds foreign keys.*/
+    public $foreign_keys = false;
 
-    public $drop_unique_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME'; // Template to drop UKs
-                               // with automatic replace for TABLENAME and KEYNAME
+    /**
+     * @var string Template to drop PKs.
+     * 'TABLENAME' and 'KEYNAME' will be replaced from this template.
+     */
+    public $drop_primary_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME';
 
-    public $drop_foreign_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME'; // Template to drop FKs
-                               // with automatic replace for TABLENAME and KEYNAME
+    /**
+     * @var string Template to drop UKs.
+     * 'TABLENAME' and 'KEYNAME' will be replaced from this template.
+     */
+    public $drop_unique_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME';
 
-    public $sequence_extra_code = true; //Does the generator need to add extra code to generate the sequence fields
-    public $sequence_name = 'auto_increment'; //Particular name for inline sequences in this generator
-    public $sequence_name_small = false; //Different name for small (4byte) sequences or false if same
-    public $sequence_only = false; //To avoid to output the rest of the field specs, leaving only the name and the sequence_name publiciable
+    /** @var string Template to drop FKs.
+     * 'TABLENAME' and 'KEYNAME' will be replaced from this template.
+     */
+    public $drop_foreign_key = 'ALTER TABLE TABLENAME DROP CONSTRAINT KEYNAME';
+
+    /** @var bool True if the generator needs to add extra code to generate the sequence fields.*/
+    public $sequence_extra_code = true;
+    /** @var string The particular name for inline sequences in this generator.*/
+    public $sequence_name = 'auto_increment';
+    /** @var string|bool Different name for small (4byte) sequences or false if same.*/
+    public $sequence_name_small = false;
+    /**
+     * @var bool To avoid outputting the rest of the field specs, leaving only the name and the sequence_name returned.
+     * @see getFieldSQL()
+     */
+    public $sequence_only = false;
 
-    public $add_table_comments  = true;  // Does the generator need to add code for table comments
+    /** @var bool True if the generator needs to add code for table comments.*/
+    public $add_table_comments  = true;
 
-    public $add_after_clause = false; // Does the generator need to add the after clause for fields
+    /** @var bool True if the generator needs to add the after clause for fields.*/
+    public $add_after_clause = false;
 
-    public $prefix_on_names = true; //Does the generator need to prepend the prefix to all the key/index/sequence/trigger/check names
+    /**
+     * @var bool True if the generator needs to prepend the prefix to all the key/index/sequence/trigger/check names.
+     * @see $prefix
+     */
+    public $prefix_on_names = true;
 
-    public $names_max_length = 30; //Max length for key/index/sequence/trigger/check names (keep 30 for all!)
+    /** @var int Maximum length for key/index/sequence/trigger/check names (keep 30 for all!).*/
+    public $names_max_length = 30;
 
-    public $concat_character = '||'; //Characters to be used as concatenation operator. If not defined
-                                  //MySQL CONCAT function will be used
+    /** @var string Characters to be used as concatenation operator.
+     * If not defined, MySQL CONCAT function will be used.
+     */
+    public $concat_character = '||';
 
-    public $rename_table_sql = 'ALTER TABLE OLDNAME RENAME TO NEWNAME'; //SQL sentence to rename one table, both
-                                  //OLDNAME and NEWNAME are dynamically replaced
+    /** @var string SQL sentence to rename one table, both 'OLDNAME' and 'NEWNAME' keywords are dynamically replaced.*/
+    public $rename_table_sql = 'ALTER TABLE OLDNAME RENAME TO NEWNAME';
 
-    public $drop_table_sql = 'DROP TABLE TABLENAME'; //SQL sentence to drop one table
-                                  //TABLENAME is dynamically replaced
+    /** @var string SQL sentence to drop one table where the 'TABLENAME' keyword is dynamically replaced.*/
+    public $drop_table_sql = 'DROP TABLE TABLENAME';
 
-    public $alter_column_sql = 'ALTER TABLE TABLENAME ALTER COLUMN COLUMNSPECS'; //The SQL template to alter columns
+    /** @var string The SQL template to alter columns where the 'TABLENAME' and 'COLUMNSPECS' keywords are dynamically replaced.*/
+    public $alter_column_sql = 'ALTER TABLE TABLENAME ALTER COLUMN COLUMNSPECS';
 
-    public $alter_column_skip_default = false; //The generator will skip the default clause on alter columns
+    /** @var bool The generator will skip the default clause on alter columns.*/
+    public $alter_column_skip_default = false;
 
-    public $alter_column_skip_type = false; //The generator will skip the type clause on alter columns
+    /** @var bool The generator will skip the type clause on alter columns.*/
+    public $alter_column_skip_type = false;
 
-    public $alter_column_skip_notnull = false; //The generator will skip the null/notnull clause on alter columns
+    /** @var bool The generator will skip the null/notnull clause on alter columns.*/
+    public $alter_column_skip_notnull = false;
 
+    /** @var string SQL sentence to rename one column where 'TABLENAME', 'OLDFIELDNAME' and 'NEWFIELDNAME' keywords are dynamically replaced.*/
     public $rename_column_sql = 'ALTER TABLE TABLENAME RENAME COLUMN OLDFIELDNAME TO NEWFIELDNAME';
-                                  ///TABLENAME, OLDFIELDNAME and NEWFIELDNAME are dyanmically replaced
 
-    public $drop_index_sql = 'DROP INDEX INDEXNAME'; //SQL sentence to drop one index
-                                  //TABLENAME, INDEXNAME are dynamically replaced
+    /** @var string SQL sentence to drop one index where 'TABLENAME', 'INDEXNAME' keywords are dynamically replaced.*/
+    public $drop_index_sql = 'DROP INDEX INDEXNAME';
 
-    public $rename_index_sql = 'ALTER INDEX OLDINDEXNAME RENAME TO NEWINDEXNAME'; //SQL sentence to rename one index
-                                  //TABLENAME, OLDINDEXNAME, NEWINDEXNAME are dynamically replaced
+    /** @var string SQL sentence to rename one index where 'TABLENAME', 'OLDINDEXNAME' and 'NEWINDEXNAME' are dynamically replaced.*/
+    public $rename_index_sql = 'ALTER INDEX OLDINDEXNAME RENAME TO NEWINDEXNAME';
 
-    public $rename_key_sql = 'ALTER TABLE TABLENAME CONSTRAINT OLDKEYNAME RENAME TO NEWKEYNAME'; //SQL sentence to rename one key
-                                  //TABLENAME, OLDKEYNAME, NEWKEYNAME are dynamically replaced
+    /** @var string SQL sentence to rename one key 'TABLENAME', 'OLDKEYNAME' and 'NEWKEYNAME' are dynamically replaced.*/
+    public $rename_key_sql = 'ALTER TABLE TABLENAME CONSTRAINT OLDKEYNAME RENAME TO NEWKEYNAME';
 
-    public $prefix;         // Prefix to be used for all the DB objects
+    /** @var string The prefix to be used for all the DB objects.*/
+    public $prefix;
 
-    public $reserved_words; // List of reserved words (in order to quote them properly)
+    /** @var string List of reserved words (in order to quote them properly).*/
+    public $reserved_words;
 
+    /** @var moodle_database The moodle_database instance.*/
     public $mdb;
-
-    protected $temptables; // Control existing temptables
+    /** @var Control existing temptables.*/
+    protected $temptables;
 
     /**
-     * Creates new sql_generator
-     * @param object moodle_database instance
+     * Creates a new sql_generator.
+     * @param moodle_database $mdb The moodle_database object instance.
+     * @param moodle_temptables $temptables The optional moodle_temptables instance, null by default.
      */
     public function __construct($mdb, $temptables = null) {
         $this->prefix         = $mdb->get_prefix();
@@ -141,14 +197,18 @@ abstract class sql_generator {
     }
 
     /**
-     * Release all resources
+     * Releases all resources.
      */
     public function dispose() {
         $this->mdb = null;
     }
 
     /**
-     * Given one string (or one array), ends it with statement_end
+     * Given one string (or one array), ends it with $statement_end .
+     *
+     * @see $statement_end
+     *
+     * @param array|string $input SQL statement(s).
      */
     public function getEndedStatements($input) {
 
@@ -164,9 +224,9 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table, check if it exists in DB (true/false)
+     * Given one xmldb_table, checks if it exists in DB (true/false).
      *
-     * @param mixed the table to be searched (string name or xmldb_table instance)
+     * @param mixed $table The table to be searched (string name or xmldb_table instance).
      * @return boolean true/false
      */
     public function table_exists($table) {
@@ -185,7 +245,11 @@ abstract class sql_generator {
     }
 
     /**
-     * This function will return the SQL code needed to create db tables and statements
+     * This function will return the SQL code needed to create db tables and statements.
+     *
+     * @param xmldb_structure $xmldb_structure An xmldb_structure instance.
+     *
+     * @see xmldb_structure
      */
     public function getCreateStructureSQL($xmldb_structure) {
         $results = array();
@@ -200,11 +264,14 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table, returns it's correct name, depending of all the parametrization
+     * Given one xmldb_table, this returns it's correct name, depending of all the parameterization.
+     * eg: This appends $prefix to the table name.
+     *
+     * @see $prefix
      *
-     * @param xmldb_table table whose name we want
-     * @param boolean to specify if the name must be quoted (if reserved word, only!)
-     * @return string the correct name of the table
+     * @param xmldb_table $xmldb_table The table whose name we want.
+     * @param boolean $quoted To specify if the name must be quoted (if reserved word, only!).
+     * @return string The correct name of the table.
      */
     public function getTableName(xmldb_table $xmldb_table, $quoted=true) {
     /// Get the name
@@ -220,7 +287,11 @@ abstract class sql_generator {
 
     /**
      * Given one correct xmldb_table, returns the SQL statements
-     * to create it (inside one array)
+     * to create it (inside one array).
+     *
+     * @param xmldb_table $xmldb_table An xmldb_table instance.
+     * @return array An array of SQL statements, starting with the table creation SQL followed
+     * by any of its comments, indexes and sequence creation SQL statements.
      */
     public function getCreateTableSQL($xmldb_table) {
 
@@ -345,7 +416,12 @@ abstract class sql_generator {
 
     /**
      * Given one correct xmldb_index, returns the SQL statements
-     * needed to create it (in array)
+     * needed to create it (in array).
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table instance to create the index on.
+     * @param xmldb_index $xmldb_index The xmldb_index to create.
+     * @return array An array of SQL statements to create the index.
+     * @throws coding_exception Thrown if the xmldb_index does not validate with the xmldb_table.
      */
     public function getCreateIndexSQL($xmldb_table, $xmldb_index) {
         if ($error = $xmldb_index->validateDefinition($xmldb_table)) {
@@ -368,7 +444,17 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one correct xmldb_field, returns the complete SQL line to create it
+     * Given one correct xmldb_field, returns the complete SQL line to create it.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
+     * @param string $skip_type_clause The type clause on alter columns, NULL by default.
+     * @param string $skip_default_clause The default clause on alter columns, NULL by default.
+     * @param string $skip_notnull_clause The null/notnull clause on alter columns, NULL by default.
+     * @param string $specify_nulls_clause To force a specific null clause, NULL by default.
+     * @param bool $specify_field_name Flag to specify fieldname in return.
+     * @return string The field generating SQL statement.
+     * @throws coding_exception Thrown when xmldb_field doesn't validate with the xmldb_table.
      */
     public function getFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL, $specify_nulls_clause = NULL, $specify_field_name = true)  {
         if ($error = $xmldb_field->validateDefinition($xmldb_table)) {
@@ -453,7 +539,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one correct xmldb_key, returns its specs
+     * Given one correct xmldb_key, returns its specs.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_key.
+     * @param xmldb_key $xmldb_key The xmldb_key's specifications requested.
+     * @return string SQL statement about the xmldb_key.
      */
     public function getKeySQL($xmldb_table, $xmldb_key) {
 
@@ -492,6 +582,9 @@ abstract class sql_generator {
 
     /**
      * Give one xmldb_field, returns the correct "default value" for the current configuration
+     *
+     * @param xmldb_field $xmldb_field The field.
+     * @return The default value of the field.
      */
     public function getDefaultValue($xmldb_field) {
 
@@ -529,7 +622,10 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_field, returns the correct "default clause" for the current configuration
+     * Given one xmldb_field, returns the correct "default clause" for the current configuration.
+     *
+     * @param xmldb_field $xmldb_field The xmldb_field.
+     * @return The SQL clause for generating the default value as in $xmldb_field.
      */
     public function getDefaultClause($xmldb_field) {
 
@@ -544,7 +640,11 @@ abstract class sql_generator {
 
     /**
      * Given one correct xmldb_table and the new name, returns the SQL statements
-     * to rename it (inside one array)
+     * to rename it (inside one array).
+     *
+     * @param xmldb_table $xmldb_table The table to rename.
+     * @param string $newname The new name to rename the table to.
+     * @return array SQL statement(s) to rename the table.
      */
     public function getRenameTableSQL($xmldb_table, $newname) {
 
@@ -566,7 +666,10 @@ abstract class sql_generator {
 
     /**
      * Given one correct xmldb_table and the new name, returns the SQL statements
-     * to drop it (inside one array)
+     * to drop it (inside one array).
+     *
+     * @param xmldb_table $xmldb_table The table to drop.
+     * @return array SQL statement(s) for dropping the specified table.
      */
     public function getDropTableSQL($xmldb_table) {
 
@@ -584,7 +687,14 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to add the field to the table
+     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to add the field to the table.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
+     * @param string $skip_type_clause The type clause on alter columns, NULL by default.
+     * @param string $skip_default_clause The default clause on alter columns, NULL by default.
+     * @param string $skip_notnull_clause The null/notnull clause on alter columns, NULL by default.
+     * @return array The SQL statement for adding a field to the table.
      */
     public function getAddFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL) {
 
@@ -612,7 +722,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to drop the field from the table
+     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to drop the field from the table.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
+     * @return array The SQL statement for dropping a field from the table.
      */
     public function getDropFieldSQL($xmldb_table, $xmldb_field) {
 
@@ -629,7 +743,14 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to alter the field in the table
+     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to alter the field in the table.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to create the SQL from.
+     * @param string $skip_type_clause The type clause on alter columns, NULL by default.
+     * @param string $skip_default_clause The default clause on alter columns, NULL by default.
+     * @param string $skip_notnull_clause The null/notnull clause on alter columns, NULL by default.
+     * @return string The field altering SQL statement.
      */
     public function getAlterFieldSQL($xmldb_table, $xmldb_field, $skip_type_clause = NULL, $skip_default_clause = NULL, $skip_notnull_clause = NULL) {
 
@@ -663,7 +784,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to modify the default of the field in the table
+     * Given one xmldb_table and one xmldb_field, return the SQL statements needed to modify the default of the field in the table.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to get the modified default value from.
+     * @return array The SQL statement for modifying the default value.
      */
     public function getModifyDefaultSQL($xmldb_table, $xmldb_field) {
 
@@ -685,7 +810,12 @@ abstract class sql_generator {
 
     /**
      * Given one correct xmldb_field and the new name, returns the SQL statements
-     * to rename it (inside one array)
+     * to rename it (inside one array).
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_field.
+     * @param xmldb_field $xmldb_field The instance of xmldb_field to get the renamed field from.
+     * @param string $newname The new name to rename the field to.
+     * @return array The SQL statements for renaming the field.
      */
     public function getRenameFieldSQL($xmldb_table, $xmldb_field, $newname) {
 
@@ -717,7 +847,11 @@ abstract class sql_generator {
 
     /**
      * Given one xmldb_table and one xmldb_key, return the SQL statements needed to add the key to the table
-     * note that undelying indexes will be added as parametrised by $xxxx_keys and $xxxx_index parameters
+     * note that undelying indexes will be added as parametrised by $xxxx_keys and $xxxx_index parameters.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_key.
+     * @param xmldb_key $xmldb_key The xmldb_key to add.
+     * @return array SQL statement to add the xmldb_key.
      */
     public function getAddKeySQL($xmldb_table, $xmldb_key) {
 
@@ -757,7 +891,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to drop the index from the table
+     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to drop the index from the table.
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_key.
+     * @param xmldb_key $xmldb_key The xmldb_key to drop.
+     * @return array SQL statement to drop the xmldb_key.
      */
     public function getDropKeySQL($xmldb_table, $xmldb_key) {
 
@@ -826,8 +964,12 @@ abstract class sql_generator {
     /**
      * Given one xmldb_table and one xmldb_key, return the SQL statements needed to rename the key in the table
      * Experimental! Shouldn't be used at all!
+     *
+     * @param xmldb_table $xmldb_table The table related to $xmldb_key.
+     * @param xmldb_key $xmldb_key The xmldb_key to rename.
+     * @param string $newname The xmldb_key's new name.
+     * @return array SQL statement to rename the xmldb_key.
      */
-
     public function getRenameKeySQL($xmldb_table, $xmldb_key, $newname) {
 
         $results = array();
@@ -861,7 +1003,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to add the index to the table
+     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to add the index to the table.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table instance to add the index on.
+     * @param xmldb_index $xmldb_index The xmldb_index to add.
+     * @return array An array of SQL statements to add the index.
      */
     public function getAddIndexSQL($xmldb_table, $xmldb_index) {
 
@@ -870,7 +1016,11 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to drop the index from the table
+     * Given one xmldb_table and one xmldb_index, return the SQL statements needed to drop the index from the table.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table instance to drop the index on.
+     * @param xmldb_index $xmldb_index The xmldb_index to drop.
+     * @return array An array of SQL statements to drop the index.
      */
     public function getDropIndexSQL($xmldb_table, $xmldb_index) {
 
@@ -891,6 +1041,11 @@ abstract class sql_generator {
     /**
      * Given one xmldb_table and one xmldb_index, return the SQL statements needed to rename the index in the table
      * Experimental! Shouldn't be used at all!
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table instance to rename the index on.
+     * @param xmldb_index $xmldb_index The xmldb_index to rename.
+     * @param string $newname The xmldb_index's new name.
+     * @return array An array of SQL statements to rename the index.
      */
     function getRenameIndexSQL($xmldb_table, $xmldb_index, $newname) {
     /// Some DB doesn't support index renaming (MySQL) so this can be empty
@@ -914,6 +1069,11 @@ abstract class sql_generator {
      *
      * IMPORTANT: This function must be used to CALCULATE NAMES of objects TO BE CREATED,
      *            NEVER TO GUESS NAMES of EXISTING objects!!!
+     *
+     * @param string $tablename The table name.
+     * @param string $fields A list of comma separated fields.
+     * @param string $suffix A suffix for the object name.
+     * @return string Object's name.
      */
     public function getNameForObject($tablename, $fields, $suffix='') {
 
@@ -985,6 +1145,9 @@ abstract class sql_generator {
     /**
      * Given any string (or one array), enclose it by the proper quotes
      * if it's a reserved word
+     *
+     * @param string|array $input String to quote.
+     * @return Quoted string.
      */
     public function getEncQuoted($input) {
 
@@ -1005,7 +1168,10 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one XMLDB Statement, build the needed SQL insert sentences to execute it
+     * Given one XMLDB Statement, build the needed SQL insert sentences to execute it.
+     *
+     * @param string $statement SQL statement.
+     * @return array Array of sentences in the SQL statement.
      */
     function getExecuteInsertSQL($statement) {
 
@@ -1057,9 +1223,14 @@ abstract class sql_generator {
     }
 
     /**
-     * Given one array of elements, build de proper CONCAT expression, based
+     * Given one array of elements, build the proper CONCAT expression, based
      * in the $concat_character setting. If such setting is empty, then
-     * MySQL's CONCAT function will be used instead
+     * MySQL's CONCAT function will be used instead.
+     *
+     * @param array $elements An array of elements to concatenate.
+     * @return mixed Returns the result of moodle_database::sql_concat() or false.
+     * @uses moodle_database::sql_concat()
+     * @uses call_user_func_array()
      */
     public function getConcatSQL($elements) {
 
@@ -1078,18 +1249,27 @@ abstract class sql_generator {
 
     /**
      * Returns the name (string) of the sequence used in the table for the autonumeric pk
-     * Only some DB have this implemented
+     * Only some DB have this implemented.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table instance.
+     * @return bool Returns the sequence from the DB or false.
      */
     public function getSequenceFromDB($xmldb_table) {
         return false;
     }
 
     /**
-     * Given one object name and it's type (pk, uk, fk, ck, ix, uix, seq, trg)
-     * return if such name is currently in use (true) or no (false)
+     * Given one object name and it's type (pk, uk, fk, ck, ix, uix, seq, trg).
+     *
      * (MySQL requires the whole xmldb_table object to be specified, so we add it always)
-     * (invoked from getNameForObject()
-     * Only some DB have this implemented
+     *
+     * This is invoked from getNameForObject().
+     * Only some DB have this implemented.
+     *
+     * @param string $object_name The object's name to check for.
+     * @param string $type The object's type (pk, uk, fk, ck, ix, uix, seq, trg).
+     * @param string $table_name The table's name to check in
+     * @return bool If such name is currently in use (true) or no (false)
      */
     public function isNameInUse($object_name, $type, $table_name) {
         return false; //For generators not implementing introspection,
@@ -1101,30 +1281,46 @@ abstract class sql_generator {
 
     /**
      * Reset a sequence to the id field of a table.
-     * @param string $table name of table
+     *
+     * @param string $tablename name of table.
      * @return success
      */
     public abstract function getResetSequenceSQL($tablename);
 
     /**
      * Given one correct xmldb_table, returns the SQL statements
-     * to create temporary table (inside one array)
+     * to create temporary table (inside one array).
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @return array SQL statements.
      */
     abstract public function getCreateTempTableSQL($xmldb_table);
 
     /**
-     * Given one correct xmldb_table and the new name, returns the SQL statements
-     * to drop it (inside one array)
+     * Given one correct xmldb_table and the new name, returns the SQL statements.
+     * to drop it (inside one array).
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @return array SQL statements.
      */
     abstract public function getDropTempTableSQL($xmldb_table);
 
     /**
-     * Given one XMLDB Type, length and decimals, returns the DB proper SQL type
+     * Given one XMLDB Type, length and decimals, returns the DB proper SQL type.
+     *
+     * @param int $xmldb_type The xmldb_type defined constant. XMLDB_TYPE_INTEGER and other XMLDB_TYPE_* constants.
+     * @param int $xmldb_length The length of that data type.
+     * @param int $xmldb_decimals The decimal places of precision of the data type.
+     * @return string The DB defined data type.
      */
     public abstract function getTypeSQL($xmldb_type, $xmldb_length=null, $xmldb_decimals=null);
 
     /**
-     * Returns the code (array of statements) needed to execute extra statements on field rename
+     * Returns the code (array of statements) needed to execute extra statements on field rename.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     * @return array Array of extra SQL statements to run with a field being renamed.
      */
     public function getRenameFieldExtraSQL($xmldb_table, $xmldb_field) {
         return array();
@@ -1132,19 +1328,30 @@ abstract class sql_generator {
 
     /**
      * Returns the code (array of statements) needed
-     * to create one sequence for the xmldb_table and xmldb_field passes
+     * to create one sequence for the xmldb_table and xmldb_field passed in.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     * @return array Array of SQL statements to create the sequence.
      */
     public function getCreateSequenceSQL($xmldb_table, $xmldb_field) {
         return array();
     }
 
     /**
-     * Returns the code (array of statements) needed to add one comment to the table
+     * Returns the code (array of statements) needed to add one comment to the table.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @return array Array of SQL statements to add one comment to the table.
      */
     public abstract function getCommentSQL($xmldb_table);
 
     /**
-     * Returns the code (array of statements) needed to execute extra statements on table rename
+     * Returns the code (array of statements) needed to execute extra statements on table rename.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param string $newname The new name for the table.
+     * @return array Array of extra SQL statements to rename a table.
      */
     public function getRenameTableExtraSQL($xmldb_table, $newname) {
         return array();
@@ -1152,6 +1359,9 @@ abstract class sql_generator {
 
     /**
      * Returns the code (array of statements) needed to execute extra statements on table drop
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @return array Array of extra SQL statements to drop a table.
      */
     public function getDropTableExtraSQL($xmldb_table) {
         return array();
@@ -1161,7 +1371,12 @@ abstract class sql_generator {
      * Given one xmldb_table and one xmldb_field, return the SQL statements needed to drop its enum
      * (usually invoked from getModifyEnumSQL()
      *
-     * TODO: Moodle 2.1 - Drop getDropEnumSQL()
+     * Note that this method may be dropped in future.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     *
+     * @todo MDL-31147 Moodle 2.1 - Drop getDropEnumSQL()
      */
     public abstract function getDropEnumSQL($xmldb_table, $xmldb_field);
 
@@ -1169,7 +1384,12 @@ abstract class sql_generator {
      * Given one xmldb_table and one xmldb_field, return the SQL statements needed to drop its default
      * (usually invoked from getModifyDefaultSQL()
      *
-     * TODO: Moodle 2.1 - Drop getDropDefaultSQL()
+     * Note that this method may be dropped in future.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     *
+     * @todo MDL-31147 Moodle 2.1 - Drop getDropDefaultSQL()
      */
     public abstract function getDropDefaultSQL($xmldb_table, $xmldb_field);
 
@@ -1178,27 +1398,37 @@ abstract class sql_generator {
      * constrainst found for that table (or field). Must exist for each DB supported.
      * (usually invoked from find_check_constraint_name)
      *
-     * TODO: Moodle 2.1 - Drop getCheckConstraintsFromDB
+     * Note that this method may be dropped in future.
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     *
+     * @todo MDL-31147 Moodle 2.1 - Drop getCheckConstraintsFromDB
      */
     public abstract function getCheckConstraintsFromDB($xmldb_table, $xmldb_field=null);
 
     /**
      * Given one xmldb_table and one xmldb_field, return the SQL statements needed to add its default
      * (usually invoked from getModifyDefaultSQL()
+     *
+     * @param xmldb_table $xmldb_table The xmldb_table object instance.
+     * @param xmldb_field $xmldb_field The xmldb_field object instance.
+     * @return array Array of SQL statements to create a field's default.
      */
     public abstract function getCreateDefaultSQL($xmldb_table, $xmldb_field);
 
     /**
      * Returns an array of reserved words (lowercase) for this DB
-     * You MUST provide the real list for each DB inside every XMLDB class
-     * @return array of reserved words
+     * You MUST provide the real list for each DB inside every XMLDB class.
+     * @return array An array of database specific reserved words.
+     * @throws coding_exception Thrown if not implemented for the specific DB.
      */
     public static function getReservedWords() {
         throw new coding_exception('getReservedWords() method needs to be overridden in each subclass of sql_generator');
     }
 
     /**
-     * Returns all reserved works in supported databases.
+     * Returns all reserved words in supported databases.
      * Reserved words should be lowercase.
      * @return array ('word'=>array(databases))
      */
@@ -1219,6 +1449,11 @@ abstract class sql_generator {
         return $reserved_words;
     }
 
+    /**
+     * Adds slashes to string.
+     * @param string $s
+     * @return string The escaped string.
+     */
     public function addslashes($s) {
         // do not use php addslashes() because it depends on PHP quote settings!
         $s = str_replace('\\','\\\\',$s);
index d2ba790..d190d07 100644 (file)
@@ -20,7 +20,7 @@
  * Experimental SQLite specific SQL code generator.
  *
  * @package    core
- * @subpackage ddl
+ * @subpackage ddl_generator
  * @copyright  2008 Andrei Bautu
  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
index 9d249dd..c85c053 100644 (file)
@@ -7580,7 +7580,6 @@ function get_core_subsystems() {
             'license'     => NULL,
             'mathslib'    => NULL,
             'message'     => 'message',
-            'message'     => 'message',
             'mimetypes'   => NULL,
             'mnet'        => 'mnet',
             'moodle.org'  => NULL, // the dot is nasty, watch out! should be renamed to moodleorg
index 600298b..e77fcb6 100644 (file)
@@ -1943,7 +1943,8 @@ class global_navigation extends navigation_node {
                 return false;
             }
             // Add a branch for the current user
-            $usernode = $usersnode->add(fullname($user, true), $userviewurl, self::TYPE_USER, null, $user->id);
+            $canseefullname = has_capability('moodle/site:viewfullnames', $coursecontext);
+            $usernode = $usersnode->add(fullname($user, $canseefullname), $userviewurl, self::TYPE_USER, null, $user->id);
 
             if ($this->page->context->contextlevel == CONTEXT_USER && $user->id == $this->page->context->instanceid) {
                 $usernode->make_active();
index e108b4d..e865858 100644 (file)
@@ -84,6 +84,8 @@ if($mform->is_cancelled()) {
     $PAGE->set_title($data->name);
     $PAGE->set_heading($course->fullname);
     echo $OUTPUT->header();
+    $url = new moodle_url('/mod/data/export.php', array('d' => $d));
+    groups_print_activity_menu($cm, $url);
     echo $OUTPUT->heading(format_string($data->name));
 
     // these are for the tab display
@@ -104,7 +106,9 @@ foreach ($formdata as $key => $value) {
     }
 }
 
-$exportdata = data_get_exportdata($data->id, $fields, $selectedfields);
+$currentgroup = groups_get_activity_group($cm);
+
+$exportdata = data_get_exportdata($data->id, $fields, $selectedfields, $currentgroup);
 $count = count($exportdata);
 switch ($formdata['exporttype']) {
     case 'csv':
index bfea754..9e9df3d 100644 (file)
@@ -167,27 +167,29 @@ class data_field_file extends data_field_base {
         $fs->delete_area_files($this->context->id, 'mod_data', 'content', $content->id);
 
         $usercontext = get_context_instance(CONTEXT_USER, $USER->id);
-        $files = $fs->get_area_files($usercontext->id, 'user', 'draft', $value);
+        $files = $fs->get_area_files($usercontext->id, 'user', 'draft', $value, 'timecreated DESC');
 
         if (count($files)<2) {
             // no file
         } else {
-            $count = 0;
             foreach ($files as $draftfile) {
-                $file_record = array('contextid'=>$this->context->id, 'component'=>'mod_data', 'filearea'=>'content', 'itemid'=>$content->id, 'filepath'=>'/');
                 if (!$draftfile->is_directory()) {
-                    $file_record['filename'] = $draftfile->get_filename();
+                    $file_record = array(
+                        'contextid' => $this->context->id,
+                        'component' => 'mod_data',
+                        'filearea' => 'content',
+                        'itemid' => $content->id,
+                        'filepath' => '/',
+                        'filename' => $draftfile->get_filename(),
+                    );
 
-                    $content->content = $draftfile->get_filename();
+                    $content->content = $file_record['filename'];
 
                     $fs->create_file_from_storedfile($file_record, $draftfile);
                     $DB->update_record('data_content', $content);
 
-                    if ($count > 0) {
-                        break;
-                    } else {
-                        $count++;
-                    }
+                    // Break from the loop now to avoid overwriting the uploaded file record
+                    break;
                 }
             }
         }
index 2bee85b..364ad4c 100644 (file)
@@ -2804,9 +2804,11 @@ function data_export_ods($export, $dataname, $count) {
  * @param int $dataid
  * @param array $fields
  * @param array $selectedfields
+ * @param int $currentgroup group ID of the current group. This is used for
+ * exporting data while maintaining group divisions.
  * @return array
  */
-function data_get_exportdata($dataid, $fields, $selectedfields) {
+function data_get_exportdata($dataid, $fields, $selectedfields, $currentgroup=0) {
     global $DB;
 
     $exportdata = array();
@@ -2826,7 +2828,15 @@ function data_get_exportdata($dataid, $fields, $selectedfields) {
     $line = 1;
     foreach($datarecords as $record) {
         // get content indexed by fieldid
-        if( $content = $DB->get_records('data_content', array('recordid'=>$record->id), 'fieldid', 'fieldid, content, content1, content2, content3, content4') ) {
+        if ($currentgroup) {
+            $select = 'SELECT c.fieldid, c.content, c.content1, c.content2, c.content3, c.content4 FROM {data_content} c, {data_records} r WHERE c.recordid = ? AND r.id = c.recordid AND r.groupid = ?';
+            $where = array($record->id, $currentgroup);
+        } else {
+            $select = 'SELECT fieldid, content, content1, content2, content3, content4 FROM {data_content} WHERE recordid = ?';
+            $where = array($record->id);
+        }
+
+        if( $content = $DB->get_records_sql($select, $where) ) {
             foreach($fields as $field) {
                 $contents = '';
                 if(isset($content[$field->field->id])) {
@@ -3144,7 +3154,7 @@ function data_presets_export($course, $cm, $data, $tostorage=false) {
     $presetname = clean_filename($data->name) . '-preset-' . gmdate("Ymd_Hi");
     $exportsubdir = "mod_data/presetexport/$presetname";
     make_temp_directory($exportsubdir);
-    $exportdir = "$CFG->dataroot/$exportsubdir";
+    $exportdir = "$CFG->tempdir/$exportsubdir";
 
     // Assemble "preset.xml":
     $presetxmldata = data_presets_generate_xml($course, $cm, $data);
index 4236cf5..f21f3d9 100644 (file)
@@ -216,13 +216,13 @@ if (!$viewobj->quizhasquestions) {
 
 echo $OUTPUT->header();
 
-// Guests can't do a quiz, so offer them a choice of logging in or going back.
 if (isguestuser()) {
-    echo $output->view_page_guest($course, $quiz, $cm, $context, $infomessages, $viewobj);
+    // Guests can't do a quiz, so offer them a choice of logging in or going back.
+    echo $output->view_page_guest($course, $quiz, $cm, $context, $viewobj->infomessages);
 } else if (!isguestuser() && !($canattempt || $canpreview
           || $viewobj->canreviewmine)) {
     // If they are not enrolled in this course in a good enough role, tell them to enrol.
-    echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $infomessages, $viewobj);
+    echo $output->view_page_notenrolled($course, $quiz, $cm, $context, $viewobj->infomessages);
 } else {
     echo $output->view_page($course, $quiz, $cm, $context, $viewobj);
 }
index 1f908fb..d675cc4 100644 (file)
@@ -80,7 +80,7 @@ $string['popupwidthexplain'] = 'Specifies default width of popup windows.';
 $string['printheading'] = 'Display resource name';
 $string['printheadingexplain'] = 'Display resource name above content? Some display types may not display resource name even if enabled.';
 $string['printintro'] = 'Display resource description';
-$string['printintroexplain'] = 'Display resource description bellow content? Some display types may not display description even if enabled.';
+$string['printintroexplain'] = 'Display resource description below content? Some display types may not display description even if enabled.';
 $string['resourcecontent'] = 'Files and subfolders';
 $string['resourcedetails_sizetype'] = '{$a->size} {$a->type}';
 $string['resource:exportresource'] = 'Export resource';
index d206d14..06a878c 100644 (file)
@@ -74,7 +74,7 @@ function wiki_print_editor_wiki($pageid, $content, $editor, $version = -1, $sect
     echo $OUTPUT->container_end();
 
     echo $OUTPUT->container_start('mdl-align');
-    echo '<form method="post" id="wikiform" action="' . $action . '">';
+    echo '<form method="post" id="mform1" action="' . $action . '">';
     echo $OUTPUT->container(print_textarea(false, 20, 60, 0, 0, "newcontent", $content, 0, true), false, 'wiki_editor');
     echo $OUTPUT->container_start();
     wiki_print_edit_form_default_fields($editor, $pageid, $version, $upload, $deleteuploads);
index fdaf5ad..527eaf6 100644 (file)
@@ -27,7 +27,7 @@ $string['enableleap2a'] = 'Enable Leap2A portfolio support (requires Mahara 1.3
 $string['err_invalidhost'] = 'Invalid MNet host';
 $string['err_invalidhost_help'] = 'This plugin is misconfigured to point to an invalid (or deleted) MNet host.  This plugin relies on Moodle Networking peers with SSO IDP published, SSO_SP subscribed, and portfolio subscribed <b>and</b> published.';
 $string['err_networkingoff'] = 'MNet is off';
-$string['err_networkingoff_help'] = 'MNet is off entirely. Please enable it before trying to configure this pugin.  Any instances of this plugin have been set to not visible until this is fixed - you will need to set them to visible again manully.  They cannot be used until this happens';
+$string['err_networkingoff_help'] = 'MNet is off entirely. Please enable it before trying to configure this plugin.  Any instances of this plugin have been set to not visible until this is fixed - you will need to set them to visible again manully.  They cannot be used until this happens';
 $string['err_nomnetauth'] = 'The MNet authentication plugin is disabled';
 $string['err_nomnetauth_help'] = 'The MNet authentication plugin is disabled, but is required for this service';
 $string['err_nomnethosts'] = 'Relies on MNet';
index 23c5660..5f6fd90 100644 (file)
@@ -83,7 +83,7 @@ require("$CFG->dirroot/lib/setup.php");
 $theme = theme_config::load($themename);
 
 if ($type === 'editor') {
-    $files = $theme->editor_css_files();
+    $cssfiles = $theme->editor_css_files();
     css_store_css($theme, $candidatesheet, $cssfiles);
 } else {
     $css = $theme->css_files();