MDL-25886 allow user_picture::fields() to be used multiple times within a single...
authorDavid Mudrak <david@moodle.com>
Fri, 7 Jan 2011 01:12:43 +0000 (02:12 +0100)
committerDavid Mudrak <david@moodle.com>
Fri, 7 Jan 2011 01:12:43 +0000 (02:12 +0100)
When user table is joined twice or more within a single query, it is
important to be able to provide aliases to all returned files. This
patch adds optional parameter that, if provided, is used as a prefix
for columns aliases. Does not apply to the 'id' column, use $idalias for
that.

lib/outputcomponents.php

index 4cbd05c..2fb67ff 100644 (file)
@@ -177,9 +177,10 @@ class user_picture implements renderable {
      * @param string $tableprefix name of database table prefix in query
      * @param array $extrafields extra fields to be included in result (do not include TEXT columns because it would break SELECT DISTINCT in MSSQL and ORACLE)
      * @param string $idalias alias of id field
+     * @param string $fieldprefix prefix to add to all columns in their aliases, does not apply to 'id'
      * @return string
      */
-    public static function fields($tableprefix = '', array $extrafields = NULL, $idalias = 'id') {
+    public static function fields($tableprefix = '', array $extrafields = NULL, $idalias = 'id', $fieldprefix = '') {
         if (!$tableprefix and !$extrafields and !$idalias) {
             return implode(',', self::$fields);
         }
@@ -191,7 +192,11 @@ class user_picture implements renderable {
             if ($field === 'id' and $idalias and $idalias !== 'id') {
                 $fields[$field] = "$tableprefix$field AS $idalias";
             } else {
-                $fields[$field] = $tableprefix.$field;
+                if ($fieldprefix and $field !== 'id') {
+                    $fields[$field] = "$tableprefix$field AS $fieldprefix$field";
+                } else {
+                    $fields[$field] = "$tableprefix$field";
+                }
             }
         }
         // add extra fields if not already there