Public Member Functions | Data Fields | Private Member Functions

ilUserDefinedFields Class Reference

Public Member Functions

 _getInstance ()
 fetchFieldIdFromImportId ($a_import_id)
 fetchFieldIdFromName ($a_name)
 getDefinitions ()
 getDefinition ($a_id)
 getVisibleDefinitions ()
 getSearchableDefinitions ()
 getCourseExportableFields ()
 get
 setFieldName ($a_name)
 getFieldName ()
 setFieldType ($a_type)
 getFieldType ()
 setFieldValues ($a_values)
 getFieldValues ()
 enableVisible ($a_visible)
 enabledVisible ()
 enableChangeable ($a_changeable)
 enabledChangeable ()
 enableRequired ($a_required)
 enabledRequired ()
 enableSearchable ($a_searchable)
 enabledSearchable ()
 enableExport ($a_export)
 enabledExport ()
 enableCourseExport ($a_course_export)
 enabledCourseExport ()
 fieldValuesToSelectArray ($a_values)
 validateValues ()
 nameExists ($a_field_name)
 add ()
 delete ($a_id)
 update ($a_id)
 __read ()
 deleteValue ($a_field_id, $a_value_id)
 toXML ()
 addToXML ($xml_writer)
 add user defined field data to xml (using usr dtd)

Data Fields

 $db = null
 $definitions = array()

Private Member Functions

 __construct ()
 Constructor is private -> use getInstance These definition are used e.g in User XML import.

Detailed Description

Definition at line 38 of file class.ilUserDefinedFields.php.


Constructor & Destructor Documentation

ilUserDefinedFields::__construct (  )  [private]

Constructor is private -> use getInstance These definition are used e.g in User XML import.

To avoid instances of this class for every user object during import, it caches this object in a singleton.

Definition at line 51 of file class.ilUserDefinedFields.php.

References __read().

        {
                global $ilDB;

                $this->db =& $ilDB;

                $this->__read();
        }

Here is the call graph for this function:


Member Function Documentation

ilUserDefinedFields::__read (  ) 

Definition at line 360 of file class.ilUserDefinedFields.php.

References $ilSetting, and $res.

Referenced by __construct(), add(), delete(), deleteValue(), and update().

        {
                global $ilSetting;

                $query = "SELECT * FROM user_defined_field_definition ";
                $res = $this->db->query($query);

                $this->definitions = array();
                while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
                {
                        $this->definitions[$row->field_id]['field_id'] = $row->field_id;
                        $this->definitions[$row->field_id]['field_name'] = $row->field_name;
                        $this->definitions[$row->field_id]['field_type'] = $row->field_type;
                        $this->definitions[$row->field_id]['il_id'] = 'il_'.$ilSetting->get('inst_id',0).'_udf_'.$row->field_id;

                        $tmp = unserialize(stripslashes($row->field_values));
                        sort($tmp);
                        $this->definitions[$row->field_id]['field_values'] = $tmp;

                        $this->definitions[$row->field_id]['visible'] = $row->visible;
                        $this->definitions[$row->field_id]['changeable'] = $row->changeable;
                        $this->definitions[$row->field_id]['required'] = $row->required;
                        $this->definitions[$row->field_id]['searchable'] = $row->searchable;
                        $this->definitions[$row->field_id]['export'] = $row->export;
                        $this->definitions[$row->field_id]['course_export'] = $row->course_export;

                }

                return true;
        }

Here is the caller graph for this function:

ilUserDefinedFields::_getInstance (  ) 
ilUserDefinedFields::add (  ) 

Definition at line 295 of file class.ilUserDefinedFields.php.

References __read(), enabledChangeable(), enabledCourseExport(), enabledExport(), enabledRequired(), enabledSearchable(), enabledVisible(), getFieldName(), getFieldType(), and getFieldValues().

        {
                // Add definition entry
                $query = "INSERT INTO user_defined_field_definition ".
                        "SET field_name = ".$this->db->quote($this->getFieldName()).", ".
                        "field_type = ".$this->db->quote($this->getFieldType()).", ".
                        "field_values = '".addslashes(serialize($this->getFieldValues()))."', ".
                        "visible = '".(int) $this->enabledVisible()."', ".
                        "changeable = '".(int) $this->enabledChangeable()."', ".
                        "required = '".(int) $this->enabledRequired()."', ".
                        "searchable = '".(int) $this->enabledSearchable()."', ".
                        "export = '".(int) $this->enabledExport()."', ".
                        "course_export = '".(int) $this->enabledCourseExport()."'";

                $this->db->query($query);

                // add table field in usr_defined_data
                $field_id = $this->db->getLastInsertId();

                $query = "ALTER TABLE usr_defined_data ADD `".(int) $field_id."` TEXT NOT NULL";
                $this->db->query($query);

                $this->__read();

                return true;
        }

Here is the call graph for this function:

ilUserDefinedFields::addToXML ( xml_writer  ) 

add user defined field data to xml (using usr dtd)

Parameters:
 $xml_writer

Definition at line 440 of file class.ilUserDefinedFields.php.

References getDefinitions().

Referenced by toXML().

        {
            $xml_writer->xmlStartTag ("UDFDefinitions");
                foreach($this->getDefinitions() as $definition)
                {
            $attributes = array(
                "Id" => $definition ["il_id"],
                "Type" => $definition["field_type"] == UDF_TYPE_SELECT? "SELECT" : "TEXT",
                "Visible" => $definition["visible"]? "TRUE" : "FALSE",
                "Changeable" => $definition["changeable"]? "TRUE" : "FALSE",
                "Required" => $definition["required"]? "TRUE" : "FALSE",
                "Searchable" => $definition["searchable"]? "TRUE" : "FALSE",
                "CourseExport" => $definition["course_export"]? "TRUE" : "FALSE",
                "Export" => $definition["export"]? "TRUE" : "FALSE",
            );
                    $xml_writer->xmlStartTag ("UDFDefinition", $attributes);
                    $xml_writer->xmlElement('UDFName', null, $definition['field_name']);
                    if ($definition["field_type"] == UDF_TYPE_SELECT ) {
                        $field_values = $definition["field_values"];
                        foreach ($field_values as $field_value)
                        {
                           $xml_writer->xmlElement('UDFValue', null, $field_value);
                        }
                    }
                    $xml_writer->xmlEndTag ("UDFDefinition");
                }
            $xml_writer->xmlEndTag ("UDFDefinitions");

        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilUserDefinedFields::delete ( a_id  ) 

Definition at line 321 of file class.ilUserDefinedFields.php.

References __read().

        {
                // Delete definitions
                $query = "DELETE FROM user_defined_field_definition ".
                        "WHERE field_id = ".$this->db->quote($a_id)." ";
                $this->db->query($query);

                // Delete usr_data entries
                $query = "ALTER TABLE usr_defined_data DROP `".(int) $a_id."`";
                $this->db->query($query);

                $this->__read();

                return true;
        }

Here is the call graph for this function:

ilUserDefinedFields::deleteValue ( a_field_id,
a_value_id 
)

Definition at line 391 of file class.ilUserDefinedFields.php.

References __read(), and getDefinition().

        {
                $definition = $this->getDefinition($a_field_id);

                $counter = 0;
                $new_values = array();
                foreach($definition['field_values'] as $value)
                {
                        if($counter++ != $a_value_id)
                        {
                                $new_values[] = $value;
                        }
                        else
                        {
                                $old_value = $value;
                        }
                }
                $query = "UPDATE user_defined_field_definition ".
                        "SET field_values = '".addslashes(serialize($new_values))."' ".
                        "WHERE field_id = ".$this->db->quote($a_field_id)."";

                $this->db->query($query);

                // Update usr_data
                $query = "UPDATE usr_defined_data ".
                        "SET `".$this->db->quote($a_field_id)."` = '' ".
                        "WHERE `".$this->db->quote($a_field_id)."` = ".$this->db->quote($old_value)."";
                $this->db->query($query);

                // fianally read data
                $this->__read();

                return true;
        }

Here is the call graph for this function:

ilUserDefinedFields::enableChangeable ( a_changeable  ) 

Definition at line 209 of file class.ilUserDefinedFields.php.

        {
                $this->field_changeable = $a_changeable;
        }

ilUserDefinedFields::enableCourseExport ( a_course_export  ) 

Definition at line 241 of file class.ilUserDefinedFields.php.

        {
                $this->field_course_export = $a_course_export;
        }

ilUserDefinedFields::enabledChangeable (  ) 

Definition at line 213 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_changeable;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enabledCourseExport (  ) 

Definition at line 245 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_course_export;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enabledExport (  ) 

Definition at line 237 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_export;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enabledRequired (  ) 

Definition at line 221 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_required;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enabledSearchable (  ) 

Definition at line 229 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_searchable;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enabledVisible (  ) 

Definition at line 205 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_visible;
        }

Here is the caller graph for this function:

ilUserDefinedFields::enableExport ( a_export  ) 

Definition at line 233 of file class.ilUserDefinedFields.php.

        {
                $this->field_export = $a_export;
        }

ilUserDefinedFields::enableRequired ( a_required  ) 

Definition at line 217 of file class.ilUserDefinedFields.php.

        {
                $this->field_required = $a_required;
        }

ilUserDefinedFields::enableSearchable ( a_searchable  ) 

Definition at line 225 of file class.ilUserDefinedFields.php.

        {
                $this->field_searchable = $a_searchable;
        }

ilUserDefinedFields::enableVisible ( a_visible  ) 

Definition at line 201 of file class.ilUserDefinedFields.php.

        {
                $this->field_visible = $a_visible;
        }

ilUserDefinedFields::fetchFieldIdFromImportId ( a_import_id  ) 

Definition at line 71 of file class.ilUserDefinedFields.php.

References $ilSetting.

        {
                global $ilSetting;

                if(!strlen($a_import_id))
                {
                        return 0;
                }
                $parts = explode('_',$a_import_id);

                if($parts[0] != 'il')
                {
                        return 0;
                }
                if($parts[1] != $ilSetting->get('inst_id',0))
                {
                        return 0;
                }
                if($parts[2] != 'udf')
                {
                        return 0;
                }
                if($parts[3])
                {
                        // Check if field exists
                        if(is_array($this->definitions["$parts[3]"]))
                        {
                                return $parts[3];
                        }
                }
                return 0;
        }

ilUserDefinedFields::fetchFieldIdFromName ( a_name  ) 

Definition at line 103 of file class.ilUserDefinedFields.php.

        {
                foreach($this->definitions as $definition)
                {
                        if($definition['field_name'] == $a_name)
                        {
                                return $definition['field_id'];
                        }
                }
                return 0;
        }

ilUserDefinedFields::fieldValuesToSelectArray ( a_values  ) 

Definition at line 251 of file class.ilUserDefinedFields.php.

        {
                foreach($a_values as $value)
                {
                        $values[$value] = $value;
                }
                return $values ? $values : array();
        }

ilUserDefinedFields::getCourseExportableFields (  ) 

get

public

Parameters:
 

Definition at line 156 of file class.ilUserDefinedFields.php.

        {
                foreach($this->definitions as $id => $definition)
                {
                        if($definition['course_export'])
                        {
                                $cexp_definition[$id] = $definition;
                        }
                }
                return $cexp_definition ? $cexp_definition : array();
        }

ilUserDefinedFields::getDefinition ( a_id  ) 

Definition at line 120 of file class.ilUserDefinedFields.php.

Referenced by deleteValue().

        {
                return is_array($this->definitions[$a_id]) ? $this->definitions[$a_id] : array();
        }

Here is the caller graph for this function:

ilUserDefinedFields::getDefinitions (  ) 

Definition at line 115 of file class.ilUserDefinedFields.php.

Referenced by addToXML().

        {
                return $this->definitions ? $this->definitions : array();
        }

Here is the caller graph for this function:

ilUserDefinedFields::getFieldName (  ) 

Definition at line 173 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_name;
        }

Here is the caller graph for this function:

ilUserDefinedFields::getFieldType (  ) 

Definition at line 181 of file class.ilUserDefinedFields.php.

Referenced by add(), and update().

        {
                return $this->field_type;
        }

Here is the caller graph for this function:

ilUserDefinedFields::getFieldValues (  ) 

Definition at line 196 of file class.ilUserDefinedFields.php.

Referenced by add(), update(), and validateValues().

        {
                return $this->field_values ? $this->field_values : array();
        }

Here is the caller graph for this function:

ilUserDefinedFields::getSearchableDefinitions (  ) 

Definition at line 137 of file class.ilUserDefinedFields.php.

        {
                foreach($this->definitions as $id => $definition)
                {
                        if($definition['searchable'])
                        {
                                $searchable_definition[$id] = $definition;
                        }
                }
                return $searchable_definition ? $searchable_definition : array();
        }

ilUserDefinedFields::getVisibleDefinitions (  ) 

Definition at line 125 of file class.ilUserDefinedFields.php.

        {
                foreach($this->definitions as $id => $definition)
                {
                        if($definition['visible'])
                        {
                                $visible_definition[$id] = $definition;
                        }
                }
                return $visible_definition ? $visible_definition : array();
        }

ilUserDefinedFields::nameExists ( a_field_name  ) 

Definition at line 285 of file class.ilUserDefinedFields.php.

References $res.

        {
                $query = "SELECT * FROM user_defined_field_definition ".
                        "WHERE field_name = ".$this->db->quote($a_field_name)." ";

                $res = $this->db->query($query);

                return (bool) $res->numRows();
        }

ilUserDefinedFields::setFieldName ( a_name  ) 

Definition at line 169 of file class.ilUserDefinedFields.php.

        {
                $this->field_name = $a_name;
        }

ilUserDefinedFields::setFieldType ( a_type  ) 

Definition at line 177 of file class.ilUserDefinedFields.php.

        {
                $this->field_type = $a_type;
        }

ilUserDefinedFields::setFieldValues ( a_values  ) 

Definition at line 185 of file class.ilUserDefinedFields.php.

        {
                $this->field_values = array();
                foreach($a_values as $value)
                {
                        if(strlen($value))
                        {
                                $this->field_values[] = $value;
                        }
                }
        }

ilUserDefinedFields::toXML (  ) 

Definition at line 426 of file class.ilUserDefinedFields.php.

References addToXML().

        {
                include_once 'classes/class.ilXmlWriter.php';
                $xml_writer = new ilXmlWriter();

                $this->addToXML ($xml_writer);

                return $xml_writer->xmlDumpMem(false);
        }

Here is the call graph for this function:

ilUserDefinedFields::update ( a_id  ) 

Definition at line 337 of file class.ilUserDefinedFields.php.

References __read(), enabledChangeable(), enabledCourseExport(), enabledExport(), enabledRequired(), enabledSearchable(), enabledVisible(), getFieldName(), getFieldType(), and getFieldValues().

        {
                $query = "UPDATE user_defined_field_definition ".
                        "SET field_name = ".$this->db->quote($this->getFieldName()).", ".
                        "field_type = ".$this->db->quote($this->getFieldType()).", ".
                        "field_values = '".addslashes(serialize($this->getFieldValues()))."', ".
                        "visible = '".(int) $this->enabledVisible()."', ".
                        "changeable = '".(int) $this->enabledChangeable()."', ".
                        "required = '".(int) $this->enabledRequired()."', ".
                        "searchable = '".(int) $this->enabledSearchable()."', ".
                        "export = '".(int) $this->enabledExport()."', ".
                        "course_export = '".(int) $this->enabledCourseExport()."' ".
                        "WHERE field_id = ".$this->db->quote($a_id)." ";

                $this->db->query($query);
                $this->__read();

                return true;
        }

Here is the call graph for this function:

ilUserDefinedFields::validateValues (  ) 

Definition at line 260 of file class.ilUserDefinedFields.php.

References getFieldValues().

        {
                $number = 0;
                $unique = array();
                foreach($this->getFieldValues() as $value)
                {
                        if(!strlen($value))
                        {
                                continue;
                        }
                        $number++;
                        $unique[$value] = $value;
                }

                if(!count($unique))
                {
                        return UDF_NO_VALUES;
                }
                if($number != count($unique))
                {
                        return UDF_DUPLICATE_VALUES;
                }
                return 0;
        }

Here is the call graph for this function:


Field Documentation

ilUserDefinedFields::$db = null

Definition at line 40 of file class.ilUserDefinedFields.php.

ilUserDefinedFields::$definitions = array()

Definition at line 41 of file class.ilUserDefinedFields.php.


The documentation for this class was generated from the following file: