Public Member Functions | Data Fields

ilGroupImportParser Class Reference

Inheritance diagram for ilGroupImportParser:
Collaboration diagram for ilGroupImportParser:

Public Member Functions

 ilGroupImportParser ($a_xml, $a_parent_id)
 Constructor.
 __pushParentId ($a_id)
 __popParentId ()
 __getParentId ()
 setHandlers ($a_xml_parser)
 set event handler should be overwritten by inherited class private
 startParsing ()
 start the parser
 handlerBeginTag ($a_xml_parser, $a_name, $a_attribs)
 handler for begin of element
 handlerEndTag ($a_xml_parser, $a_name)
 handlerCharacterData ($a_xml_parser, $a_data)
 handler for character data
 __save ()
 __saveFolder ()
 __saveFile ()
 __assignMembers ()
 __initGroupObject ()
 __initFolderObject ()
 __initImportFileObject ()
 __initFileObject ()
 __destroyFolderObject ()
 __parseId ($a_id)

Data Fields

 $group_data
 $group_obj
 $parent
 $counter

Detailed Description

Definition at line 37 of file class.ilGroupImportParser.php.


Member Function Documentation

ilGroupImportParser::__assignMembers (  ) 

Definition at line 345 of file class.ilGroupImportParser.php.

References ilSaxParser::$ilias, $user, and __parseId().

Referenced by __save().

        {
                global $ilias,$ilUser;


                $this->group_obj->addMember($ilUser->getId(),$this->group_obj->getDefaultAdminRole());

                // ADMIN
                foreach($this->group_data["admin"] as $user)
                {
                        if($id_data = $this->__parseId($user))
                        {
                                if($id_data['local'] or $id_data['imported'])
                                {
                                        $this->group_obj->addMember($id_data['usr_id'],$this->group_obj->getDefaultAdminRole());
                                }
                        }
                }
                
                // MEMBER
                foreach($this->group_data["member"] as $user)
                {
                        if($id_data = $this->__parseId($user))
                        {
                                if($id_data['local'] or $id_data['imported'])
                                {
                                        $this->group_obj->addMember($id_data['usr_id'],$this->group_obj->getDefaultMemberRole());
                                }
                        }
                }
                return true;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilGroupImportParser::__destroyFolderObject (  ) 

Definition at line 414 of file class.ilGroupImportParser.php.

Referenced by __saveFolder().

        {
                unset($this->folder_obj);
        }

Here is the caller graph for this function:

ilGroupImportParser::__getParentId (  ) 

Definition at line 76 of file class.ilGroupImportParser.php.

Referenced by __save(), __saveFile(), and __saveFolder().

        {
                return $this->parent[count($this->parent) - 1];
        }

Here is the caller graph for this function:

ilGroupImportParser::__initFileObject (  ) 

Definition at line 405 of file class.ilGroupImportParser.php.

Referenced by __saveFile().

        {
                include_once "classes/class.ilObjFile.php";
                
                $this->file_obj =& new ilObjFile();
                
                return true;
        }               

Here is the caller graph for this function:

ilGroupImportParser::__initFolderObject (  ) 

Definition at line 387 of file class.ilGroupImportParser.php.

Referenced by __saveFolder().

        {
                include_once "classes/class.ilObjFolder.php";
                
                $this->folder_obj =& new ilObjFolder();
                
                return true;
        }

Here is the caller graph for this function:

ilGroupImportParser::__initGroupObject (  ) 

Definition at line 378 of file class.ilGroupImportParser.php.

Referenced by __save().

        {
                include_once "classes/class.ilObjGroup.php";
                
                $this->group_obj =& new ilObjGroup();
                
                return true;
        }

Here is the caller graph for this function:

ilGroupImportParser::__initImportFileObject (  ) 

Definition at line 396 of file class.ilGroupImportParser.php.

Referenced by __saveFile().

        {
                include_once "classes/class.ilFileDataImportGroup.php";

                $this->import_file_obj =& new ilFileDataImportGroup();

                return true;
        }

Here is the caller graph for this function:

ilGroupImportParser::__parseId ( a_id  ) 

Definition at line 419 of file class.ilGroupImportParser.php.

References $fields, $id, ilSaxParser::$ilias, ilObjUser::_getImportedUserId(), and ilObjUser::_lookupName().

Referenced by __assignMembers().

        {
                global $ilias;

                $fields = explode('_',$a_id);

                if(!is_array($fields) or
                   $fields[0] != 'il' or
                   !is_numeric($fields[1]) or
                   $fields[2] != 'usr' or
                   !is_numeric($fields[3]))
                {
                        return false;
                }
                if($id = ilObjUser::_getImportedUserId($a_id))
                {
                        return array('imported' => true,
                                                 'local' => false,
                                                 'usr_id' => $id);
                }
                if(($fields[1] == $ilias->getSetting('inst_id',0)) and strlen(ilObjUser::_lookupName($fields[3])))
                {
                        return array('imported' => false,
                                                 'local' => true,
                                                 'usr_id' => $fields[3]);
                }
                return false;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilGroupImportParser::__popParentId (  ) 

Definition at line 70 of file class.ilGroupImportParser.php.

Referenced by handlerEndTag().

        {
                array_pop($this->parent);

                return true;
        }

Here is the caller graph for this function:

ilGroupImportParser::__pushParentId ( a_id  ) 

Definition at line 66 of file class.ilGroupImportParser.php.

Referenced by __save(), __saveFolder(), and ilGroupImportParser().

        {
                $this->parent[] = $a_id;
        }

Here is the caller graph for this function:

ilGroupImportParser::__save (  ) 

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

References __assignMembers(), __getParentId(), __initGroupObject(), and __pushParentId().

Referenced by handlerBeginTag(), and handlerEndTag().

        {
                if($this->group_imported)
                {
                        return true;
                }

                $this->__initGroupObject();
                
                $this->group_obj->setImportId($this->group_data["id"]);
                $this->group_obj->setTitle($this->group_data["title"]);
                $this->group_obj->setDescription($this->group_data["description"]);

                switch($this->group_data['registration_type'])
                {
                        case 'disabled':
                                $flag = 0;
                                break;

                        case 'enabled':
                                $flag = 1;
                                break;

                        case 'password':
                                $flag = 2;
                                break;

                        default:
                                $flag = 0;
                }
                $this->group_obj->setRegistrationFlag($flag);
                // CREATE IT
                $this->group_obj->create();
                $this->group_obj->createReference();
                $this->group_obj->putInTree($this->__getParentId());
                $this->group_obj->initDefaultRoles();


                // SET GROUP SPECIFIC DATA
                switch($this->group_data['registration_type'])
                {
                        case 'disabled':
                                $flag = 0;
                                break;

                        case 'enabled':
                                $flag = 1;
                                break;

                        case 'password':
                                $flag = 2;
                                break;

                        default:
                                $flag = 0;
                }
                $this->group_obj->setRegistrationFlag($flag);
                if($this->group_data['expiration'])
                {
                        $this->group_obj->setExpirationDateTime(date('Y.m.d H:i:s',$this->group_data['expiration']));
                }
                $this->group_obj->setPassword($this->group_data['password']);
                $this->group_obj->__setGroupStatus($this->group_data["type"] == "open" ? 0 : 1);
                
                // ASSIGN ADMINS/MEMBERS
                $this->__assignMembers();

                $this->__pushParentId($this->group_obj->getRefId());

                
                $this->group_imported = true;
        
                return true;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilGroupImportParser::__saveFile (  ) 

Definition at line 317 of file class.ilGroupImportParser.php.

References __getParentId(), __initFileObject(), and __initImportFileObject().

Referenced by handlerBeginTag().

        {
                $this->__initFileObject();

                $this->file_obj->setType("file");
                $this->file_obj->setTitle($this->file["fileName"]);
                $this->file_obj->setFileName($this->file["fileName"]);
                $this->file_obj->create();
                $this->file_obj->createReference();
                $this->file_obj->putInTree($this->__getParentId());
                $this->file_obj->setPermissions($this->__getParentId());

                // COPY FILE
                $this->file_obj->createDirectory();
                
                $this->__initImportFileObject();

                if($this->import_file_obj->findObjectFile($this->file["id"]))
                {
                        $this->file_obj->copy($this->import_file_obj->getObjectFile(),$this->file["fileName"]);
                }

                unset($this->file_obj);
                unset($this->import_file_obj);

                return true;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilGroupImportParser::__saveFolder (  ) 

Definition at line 300 of file class.ilGroupImportParser.php.

References __destroyFolderObject(), __getParentId(), __initFolderObject(), and __pushParentId().

Referenced by handlerEndTag().

        {
                $this->__initFolderObject();

                $this->folder_obj->setTitle($this->folder);
                $this->folder_obj->create();
                $this->folder_obj->createReference();
                $this->folder_obj->putInTree($this->__getParentId());
                $this->folder_obj->initDefaultRoles();

                $this->__pushParentId($this->folder_obj->getRefId());

                $this->__destroyFolderObject();

                return true;
        }

Here is the call graph for this function:

Here is the caller graph for this function:

ilGroupImportParser::handlerBeginTag ( a_xml_parser,
a_name,
a_attribs 
)

handler for begin of element

Definition at line 107 of file class.ilGroupImportParser.php.

References $ilErr, __save(), and __saveFile().

        {
                global $ilErr;

                switch($a_name)
                {
                        // GROUP DATA
                        case "group":
                                #if($a_attribs["exportVersion"] < EXPORT_VERSION)
                                #{
                                #       $ilErr->raiseError("!!! This export Version isn't supported, update your ILIAS 2 installation"
                                #                                          ,$ilErr->WARNING);
                                #}
                                // DEFAULT
                                $this->group_data["admin"] = array();
                                $this->group_data["member"] = array();

                                $this->group_data["type"] = $a_attribs["type"];
                                $this->group_data["id"] = $a_attribs["id"];
                                
                                break;

                        case 'title':
                                break;

                        case "owner":
                                $this->group_data["owner"] = $a_attribs["id"];
                                break;

                        case 'registration':
                                $this->group_data['registration_type'] = $a_attribs['type'];
                                break;

                        case "admin":
                                $this->group_data["admin"][] = $a_attribs["id"];
                                break;

                        case "member":
                                $this->group_data["member"][] = $a_attribs["id"];
                                
                                break;

                        case "folder":
                                // NOW SAVE THE NEW OBJECT (if it hasn't been imported)
                                $this->__save();
                                break;

                        case "file":
                                // NOW SAVE THE NEW OBJECT (if it hasn't been imported)
                                $this->__save();

                                $this->file["fileName"] = $a_attribs["fileName"];
                                $this->file["id"] = $a_attribs["id"];

                                // SAVE IT
                                $this->__saveFile();
                                break;
                }
        }

Here is the call graph for this function:

ilGroupImportParser::handlerCharacterData ( a_xml_parser,
a_data 
)

handler for character data

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

        {
                // i don't know why this is necessary, but
                // the parser seems to convert "&gt;" to ">" and "&lt;" to "<"
                // in character data, but we don't want that, because it's the
                // way we mask user html in our content, so we convert back...
                $a_data = str_replace("<","&lt;",$a_data);
                $a_data = str_replace(">","&gt;",$a_data);

                if(!empty($a_data))
                {
                        $this->cdata .= $a_data;
                }
        }

ilGroupImportParser::handlerEndTag ( a_xml_parser,
a_name 
)

Definition at line 168 of file class.ilGroupImportParser.php.

References __popParentId(), __save(), and __saveFolder().

        {
                switch($a_name)
                {
                        case "title":
                                $this->group_data["title"] = trim($this->cdata);
                                break;

                        case "description":
                                $this->group_data["description"] = trim($this->cdata);
                                break;

                        case 'password':
                                $this->group_data['password'] = trim($this->cdata);
                                break;

                        case 'expiration':
                                $this->group_data['expiration'] = trim($this->cdata);
                                break;
                                
                        case "folder":
                                $this->__popParentId();
                                break;

                        case "folderTitle":
                                $this->folder = trim($this->cdata);
                                $this->__saveFolder();
                                break;

                        case "group":
                                // NOW SAVE THE NEW OBJECT (if it hasn't been imported)
                                $this->__save();
                                break;
                }
                $this->cdata = '';
        }

Here is the call graph for this function:

ilGroupImportParser::ilGroupImportParser ( a_xml,
a_parent_id 
)

Constructor.

Parameters:
string $a_xml_file xml file

public

Definition at line 53 of file class.ilGroupImportParser.php.

References __pushParentId(), ilSaxParser::ilSaxParser(), and ilSaxParser::setXMLContent().

        {
                define('EXPORT_VERSION',2);

                parent::ilSaxParser();
                $this->setXMLContent($a_xml);

                // SET MEMBER VARIABLES
                $this->__pushParentId($a_parent_id);


        }

Here is the call graph for this function:

ilGroupImportParser::setHandlers ( a_xml_parser  ) 

set event handler should be overwritten by inherited class private

Reimplemented from ilSaxParser.

Definition at line 86 of file class.ilGroupImportParser.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');
        }

ilGroupImportParser::startParsing (  ) 

start the parser

Reimplemented from ilSaxParser.

Definition at line 96 of file class.ilGroupImportParser.php.

        {
                parent::startParsing();

                return is_object($this->group_obj) ? $this->group_obj->getRefId() : false;
        }


Field Documentation

ilGroupImportParser::$counter

Definition at line 43 of file class.ilGroupImportParser.php.

ilGroupImportParser::$group_data

Definition at line 39 of file class.ilGroupImportParser.php.

ilGroupImportParser::$group_obj

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

ilGroupImportParser::$parent

Definition at line 42 of file class.ilGroupImportParser.php.


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