SAX based XML parser for record import files. More...
Inheritance diagram for ilAdvancedMDRecordParser:
Collaboration diagram for ilAdvancedMDRecordParser:Public Member Functions | |
| __construct ($a_file) | |
| Constructor. | |
| setMode ($a_mode) | |
| set parsing mode | |
| getMode () | |
| get mode | |
| startParsing () | |
| stores xml data in array | |
| setHandlers ($a_xml_parser) | |
| set event handlers | |
Data Fields | |
| const | MODE_UPDATE = 1 |
| const | MODE_INSERT = 2 |
| const | MODE_UPDATE_VALIDATION = 3 |
| const | MODE_INSERT_VALIDATION = 4 |
Protected Member Functions | |
| handlerBeginTag ($a_xml_parser, $a_name, $a_attribs) | |
| Handler for start tags. | |
| handlerEndTag ($a_xml_parser, $a_name) | |
| Handler for end tags. | |
| handlerCharacterData ($a_xml_parser, $a_data) | |
| handler for character data | |
Private Member Functions | |
| initRecordObject ($a_id) | |
| Init record object. | |
| initFieldObject ($a_id) | |
| Init field definition object. | |
| getCurrentRecord () | |
| get current record | |
| getCurrentField () | |
| get current field definition private | |
| extractRecordId ($a_id_string) | |
| Extract id. | |
| appendErrorMessage ($a_msg) | |
| private | |
| storeRecords () | |
| Store Record. | |
Private Attributes | |
| $mode | |
| $fields = array() | |
| $is_error = false | |
| $error_msg = array() | |
SAX based XML parser for record import files.
Definition at line 37 of file class.ilAdvancedMDRecordParser.php.
| ilAdvancedMDRecordParser::__construct | ( | $ | a_file | ) |
Constructor.
public
| string | xml file |
Definition at line 57 of file class.ilAdvancedMDRecordParser.php.
{
parent::__construct($a_file,true);
}
| ilAdvancedMDRecordParser::appendErrorMessage | ( | $ | a_msg | ) | [private] |
private
Definition at line 356 of file class.ilAdvancedMDRecordParser.php.
Referenced by handlerBeginTag().
{
$this->is_error = true;
$this->error_msg[] = $a_msg;
}
Here is the caller graph for this function:| ilAdvancedMDRecordParser::extractRecordId | ( | $ | a_id_string | ) | [private] |
Extract id.
private
Definition at line 336 of file class.ilAdvancedMDRecordParser.php.
References ilAdvancedMDRecord::_lookupRecordIdByImportId().
Referenced by initRecordObject().
{
// first lookup import id
if($record_id = ilAdvancedMDRecord::_lookupRecordIdByImportId($a_id_string))
{
$this->record_exists = true;
return $record_id;
}
return 0;
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilAdvancedMDRecordParser::getCurrentField | ( | ) | [private] |
get current field definition private
Definition at line 324 of file class.ilAdvancedMDRecordParser.php.
Referenced by handlerBeginTag(), and handlerEndTag().
{
return $this->current_field;
}
Here is the caller graph for this function:| ilAdvancedMDRecordParser::getCurrentRecord | ( | ) | [private] |
get current record
private
Definition at line 314 of file class.ilAdvancedMDRecordParser.php.
Referenced by handlerBeginTag(), handlerEndTag(), and storeRecords().
{
return $this->current_record;
}
Here is the caller graph for this function:| ilAdvancedMDRecordParser::getMode | ( | ) |
get mode
public
Definition at line 80 of file class.ilAdvancedMDRecordParser.php.
Referenced by initFieldObject(), initRecordObject(), and storeRecords().
{
return $this->mode;
}
Here is the caller graph for this function:| ilAdvancedMDRecordParser::handlerBeginTag | ( | $ | a_xml_parser, | |
| $ | a_name, | |||
| $ | a_attribs | |||
| ) | [protected] |
Handler for start tags.
protected
Definition at line 121 of file class.ilAdvancedMDRecordParser.php.
References appendErrorMessage(), getCurrentField(), getCurrentRecord(), initFieldObject(), initRecordObject(), ilAdvancedMDFieldDefinition::TYPE_DATE, ilAdvancedMDFieldDefinition::TYPE_SELECT, and ilAdvancedMDFieldDefinition::TYPE_TEXT.
{
switch($a_name)
{
case 'AdvancedMetaDataRecords':
$this->is_error = false;
$this->error_msg = array();
// Nothing to do
break;
case 'Record':
$this->fields = array();
$this->current_field = null;
$this->current_record = null;
if(!strlen($a_attribs['id']) or !isset($a_attribs['active']))
{
$this->appendErrorMessage('Missing XML attribute for element "Record".');
}
if(!$this->initRecordObject($a_attribs['id']))
{
$this->appendErrorMessage('Invalid attribute Id given for element "Record".');
}
$this->getCurrentRecord()->setActive($a_attribs['active']);
$this->getCurrentRecord()->setImportId($a_attribs['id']);
$this->getCurrentRecord()->setAssignedObjectTypes(array());
break;
case 'Title':
break;
case 'Field':
if(!strlen($a_attribs['id']) or !isset($a_attribs['searchable']) or !isset($a_attribs['fieldType']))
{
$this->appendErrorMessage('Missing XML attribute for element "Field".');
}
if(!$this->initFieldObject($a_attribs['id']))
{
$this->appendErrorMessage('Invalid attribute Id given for element "Record".');
}
switch($a_attribs['fieldType'])
{
case 'Select':
$this->getCurrentField()->setFieldType(ilAdvancedMDFieldDefinition::TYPE_SELECT);
break;
case 'Date':
$this->getCurrentField()->setFieldType(ilAdvancedMDFieldDefinition::TYPE_DATE);
break;
case 'Text':
$this->getCurrentField()->setFieldType(ilAdvancedMDFieldDefinition::TYPE_TEXT);
break;
default:
$this->appendErrorMessage('Invalid attribute value given for element "Record::FieldType".');
break;
}
$this->getCurrentField()->setImportId($a_attribs['id']);
$this->getCurrentField()->enableSearchable($a_attribs['searchable'] == 'Yes' ? true : false);
break;
case 'FieldTitle':
case 'FieldDescription':
case 'FieldPosition':
case 'FieldValue':
break;
}
}
Here is the call graph for this function:| ilAdvancedMDRecordParser::handlerCharacterData | ( | $ | a_xml_parser, | |
| $ | a_data | |||
| ) | [protected] |
handler for character data
| resource | $a_xml_parser xml parser | |
| string | $a_data character data |
Definition at line 248 of file class.ilAdvancedMDRecordParser.php.
{
if($a_data != "\n")
{
// Replace multiple tabs with one space
$a_data = preg_replace("/\t+/"," ",$a_data);
$this->cdata .= $a_data;
}
}
| ilAdvancedMDRecordParser::handlerEndTag | ( | $ | a_xml_parser, | |
| $ | a_name | |||
| ) | [protected] |
Handler for end tags.
protected
Definition at line 196 of file class.ilAdvancedMDRecordParser.php.
References getCurrentField(), getCurrentRecord(), and storeRecords().
{
switch($a_name)
{
case 'AdvancedMetaDataRecords':
break;
case 'Record':
$this->storeRecords();
break;
case 'Title':
$this->getCurrentRecord()->setTitle(trim($this->cdata));
break;
case 'Description':
$this->getCurrentRecord()->setDescription(trim($this->cdata));
break;
case 'ObjectType':
$this->getCurrentRecord()->appendAssignedObjectType(trim($this->cdata));
break;
case 'Field':
break;
case 'FieldTitle':
$this->getCurrentField()->setTitle(trim($this->cdata));
break;
case 'FieldDescription':
$this->getCurrentField()->setDescription(trim($this->cdata));
break;
case 'FieldPosition':
$this->getCurrentField()->setPosition((int) trim($this->cdata));
break;
case 'FieldValue':
$this->getCurrentField()->appendFieldValue(trim($this->cdata));
break;
}
$this->cdata = '';
}
Here is the call graph for this function:| ilAdvancedMDRecordParser::initFieldObject | ( | $ | a_id | ) | [private] |
Init field definition object.
private
| string | import id |
Definition at line 289 of file class.ilAdvancedMDRecordParser.php.
References getMode().
Referenced by handlerBeginTag().
{
switch($this->getMode())
{
case self::MODE_INSERT:
case self::MODE_INSERT_VALIDATION:
$this->current_field = new ilAdvancedMDFieldDefinition(0);
$this->fields[] = $this->current_field;
return true;
default:
$this->current_field = ilAdvancedMDRecord::_getInstanceByFieldId($this->extractFieldId($a_id));
return true;
break;
}
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilAdvancedMDRecordParser::initRecordObject | ( | $ | a_id | ) | [private] |
Init record object.
| string | import id private |
Definition at line 266 of file class.ilAdvancedMDRecordParser.php.
References ilAdvancedMDRecord::_getInstanceByRecordId(), extractRecordId(), and getMode().
Referenced by handlerBeginTag().
{
switch($this->getMode())
{
case self::MODE_INSERT:
case self::MODE_INSERT_VALIDATION:
$this->current_record = new ilAdvancedMDRecord(0);
return true;
default:
$this->current_record = ilAdvancedMDRecord::_getInstanceByRecordId($this->extractRecordId($a_id));
return true;
break;
}
}
Here is the call graph for this function:
Here is the caller graph for this function:| ilAdvancedMDRecordParser::setHandlers | ( | $ | a_xml_parser | ) |
set event handlers
| resource | reference to the xml parser private |
Definition at line 109 of file class.ilAdvancedMDRecordParser.php.
{
xml_set_object($a_xml_parser,$this);
xml_set_element_handler($a_xml_parser,'handlerBeginTag','handlerEndTag');
xml_set_character_data_handler($a_xml_parser,'handlerCharacterData');
}
| ilAdvancedMDRecordParser::setMode | ( | $ | a_mode | ) |
set parsing mode
public
| int | MODE_VALIDATION, MODE_UPDATE or MODE_INSERT |
Definition at line 69 of file class.ilAdvancedMDRecordParser.php.
{
$this->mode = $a_mode;
}
| ilAdvancedMDRecordParser::startParsing | ( | ) |
stores xml data in array
| ilSaxParserException |
Definition at line 93 of file class.ilAdvancedMDRecordParser.php.
{
parent::startParsing();
if($this->is_error)
{
include_once('classes/class.ilSaxParserException.php');
throw new ilSaxParserException(implode('<br/>',$this->error_msg));
}
}
| ilAdvancedMDRecordParser::storeRecords | ( | ) | [private] |
Store Record.
private
Definition at line 369 of file class.ilAdvancedMDRecordParser.php.
References getCurrentRecord(), and getMode().
Referenced by handlerEndTag().
{
switch($this->getMode())
{
case self::MODE_INSERT_VALIDATION:
case self::MODE_UPDATE_VALIDATION:
return true;
case self::MODE_INSERT:
$this->getCurrentRecord()->save();
break;
}
foreach($this->fields as $field)
{
$field->setRecordId($this->getCurrentRecord()->getRecordId());
switch($this->getMode())
{
case self::MODE_INSERT:
$field->add();
break;
}
}
}
Here is the call graph for this function:
Here is the caller graph for this function:ilAdvancedMDRecordParser::$error_msg = array() [private] |
Definition at line 49 of file class.ilAdvancedMDRecordParser.php.
ilAdvancedMDRecordParser::$fields = array() [private] |
Definition at line 46 of file class.ilAdvancedMDRecordParser.php.
ilAdvancedMDRecordParser::$is_error = false [private] |
Definition at line 48 of file class.ilAdvancedMDRecordParser.php.
ilAdvancedMDRecordParser::$mode [private] |
Definition at line 44 of file class.ilAdvancedMDRecordParser.php.
| const ilAdvancedMDRecordParser::MODE_INSERT = 2 |
Definition at line 40 of file class.ilAdvancedMDRecordParser.php.
Referenced by ilAdvancedMDSettingsGUI::importRecord().
Definition at line 42 of file class.ilAdvancedMDRecordParser.php.
Referenced by ilAdvancedMDSettingsGUI::importRecord().
| const ilAdvancedMDRecordParser::MODE_UPDATE = 1 |
Definition at line 39 of file class.ilAdvancedMDRecordParser.php.
Definition at line 41 of file class.ilAdvancedMDRecordParser.php.
1.7.1