34include_once 
'./webservice/soap/classes/class.ilSoapAdministration.php';
 
   40                parent::ilSoapAdministration();
 
   48                if(!$this->__checkSession($sid))
 
   61                $ilLog->write(
"SOAP getObjIdByImportId(): import_id = ".$import_id.
' obj_id = '.$obj_id);
 
   63                return $obj_id ? $obj_id : 
"0";
 
   71                if(!$this->__checkSession($sid))
 
   96                return $new_refs ? $new_refs : array();
 
  104                if(!$this->__checkSession($sid))
 
  119                return $new_refs ? $new_refs : array();
 
  135                if(!$this->__checkSession($sid))
 
  141                if(!count($ref_ids) || !is_array ($ref_ids))
 
  143                        return $this->
__raiseError(
'No reference id(s) given.', 
'Client');
 
  147                if (count($ref_ids)) {
 
  152                                        return $this->
__raiseError(
'Reference ID has to be numeric. Value: '.$ref_id, 
'Client');
 
  157                                        return $this->
__raiseError(
'No object found for reference ID. Value: '.$ref_id, 
'Client');
 
  160                                        return $this->
__raiseError(
'No untrashed reference found for reference ID. Value: '.$ref_id, 
'Client');
 
  162                                $obj_ids[] = $obj_id;
 
  175                if(!$this->__checkSession($sid))
 
  179                if(!is_numeric($a_ref_id))
 
  181                        return $this->
__raiseError(
'No valid reference id given. Please choose an existing reference id of an ILIAS object',
 
  187                        return $this->
__raiseError(
'Cannot create object instance!',
'Server');
 
  193                        return $this->
__raiseError(
"Object with ID $a_ref_id has been deleted.", 
'Client');
 
  196                include_once 
'./webservice/soap/classes/class.ilObjectXMLWriter.php';
 
  199                $xml_writer->enablePermissionCheck(
true);
 
  202                        $xml_writer->setUserId($user_id);
 
  203                        $xml_writer->enableOperations(
true);
 
  205                $xml_writer->setObjects(array($tmp_obj));
 
  206                if($xml_writer->start())
 
  208                        return $xml_writer->getXML();
 
  211                return $this->
__raiseError(
'Cannot create object xml !',
'Server');
 
  219                if(!$this->__checkSession($sid))
 
  223                if(!strlen($a_title))
 
  225                        return $this->
__raiseError(
'No valid query string given.',
 
  229                include_once 
'./Services/Search/classes/class.ilQueryParser.php';
 
  232                $query_parser->setMinWordLength(0,
true);
 
  234                $query_parser->parse();
 
  235                if(!$query_parser->validate())
 
  241                include_once 
'./Services/Search/classes/class.ilObjectSearchFactory.php';
 
  243                include_once 
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
 
  246                #$object_search =& ilObjectSearchFactory::_getObjectSearchInstance($query_parser); 
  247                $object_search->setFields(array(
'title'));
 
  248                $object_search->appendToFilter(
'role');
 
  249                $object_search->appendToFilter(
'rolt');
 
  250                $res =& $object_search->performSearch();
 
  253                        $res->setUserId($user_id);
 
  256                $res->filter(ROOT_FOLDER_ID,
true);
 
  259                foreach(
$res->getUniqueResults() as $entry)
 
  261                        if($entry[
'type'] == 
'role' or $entry[
'type'] == 
'rolt')
 
  279                include_once 
'./webservice/soap/classes/class.ilObjectXMLWriter.php';
 
  282                $xml_writer->enablePermissionCheck(
true);
 
  285                        $xml_writer->setUserId($user_id);
 
  286                        $xml_writer->enableOperations(
true);
 
  288                $xml_writer->setObjects($objs);
 
  289                if($xml_writer->start())
 
  291                        return $xml_writer->getXML();
 
  294                return $this->
__raiseError(
'Cannot create object xml !',
'Server');
 
  302                if(!$this->__checkSession($sid))
 
  306                if(!is_array($types))
 
  308                        return $this->
__raiseError(
'Types must be an array of object types.',
 
  311                if($combination != 
'and' and $combination != 
'or')
 
  313                        return $this->
__raiseError(
'No valid combination given. Must be "and" or "or".',
 
  318                include_once 
'./Services/Search/classes/class.ilSearchSettings.php';
 
  323                        include_once 
'./Services/Search/classes/Lucene/class.ilLuceneQueryParser.php';
 
  325                        $query_parser->parse();
 
  327                        include_once 
'./Services/Search/classes/Lucene/class.ilLuceneSearcher.php';
 
  331                        include_once 
'./Services/Search/classes/Lucene/class.ilLuceneSearchResultFilter.php';
 
  332                        include_once 
'./Services/Search/classes/Lucene/class.ilLucenePathFilter.php';
 
  334                        $filter->setCandidates($searcher->getResult());
 
  337                        $result_ids = $filter->getResults();
 
  340                        foreach ((array) $result_ids as 
$ref_id => $obj_id) {
 
  348                        include_once 
'./Services/Search/classes/Lucene/class.ilLuceneHighlighterResultParser.php';
 
  350                        if($filter->getResultObjIds())
 
  352                                $highlighter = $searcher->highlight($filter->getResultObjIds());
 
  358                        include_once 
'./Services/Search/classes/class.ilQueryParser.php';
 
  361                        #$query_parser->setMinWordLength(3); 
  363                        $query_parser->parse();
 
  364                        if(!$query_parser->validate())
 
  370                        #include_once './Services/Search/classes/class.ilObjectSearchFactory.php'; 
  371                        #$object_search =& ilObjectSearchFactory::_getObjectSearchInstance($query_parser); 
  373                        include_once 
'./Services/Search/classes/Like/class.ilLikeObjectSearch.php';
 
  376                        $object_search->setFilter($types);
 
  378                        $res =& $object_search->performSearch();
 
  381                                $res->setUserId($user_id);
 
  384                        $res->setMaxHits(100);
 
  386                        $res->filter(ROOT_FOLDER_ID,$combination == 
'and' ? 
true : 
false);
 
  390                        foreach(
$res->getUniqueResults() as $entry)
 
  405                include_once 
'./webservice/soap/classes/class.ilObjectXMLWriter.php';
 
  412                        $xml_writer->enableReferences(
false);
 
  413                        $xml_writer->setMode(ilObjectXmlWriter::MODE_SEARCH_RESULT);
 
  414                        $xml_writer->setHighlighter($highlighter);
 
  417                $xml_writer->enablePermissionCheck(
true);
 
  421                        $xml_writer->setUserId($user_id);
 
  422                        $xml_writer->enableOperations(
true);
 
  425                $xml_writer->setObjects($objs);
 
  426                if($xml_writer->start())
 
  428                        #$GLOBALS['ilLog']->write(__METHOD__.': '.$xml_writer->xmlDumpMem(true)); 
  429                        return $xml_writer->getXML();
 
  432                return $this->
__raiseError(
'Cannot create object xml !',
'Server');
 
  440                if(!$this->__checkSession($sid))
 
  451                        return $this->
__raiseError(
'No valid reference id given.',
 
  454                if (intval(
$ref_id) == SYSTEM_FOLDER_ID) {
 
  455                    return $this->
__raiseError(
'No valid reference id given.',
 
  467                include_once 
'./Services/WebServices/FileManager/classes/class.ilFMSettings.php';
 
  468                if(in_array(
'parent', (array) $types))
 
  470                        $objs[] = $target_obj;
 
  474                foreach($tree->getChilds(
$ref_id,
'title') as $child)
 
  476                        if($all or in_array($child[
'type'],$types))
 
  485                include_once 
'./webservice/soap/classes/class.ilObjectXMLWriter.php';
 
  491                        $xml_writer->enableReferences(
false);
 
  494                $xml_writer->enablePermissionCheck(
true);
 
  495                $xml_writer->setObjects($objs);
 
  496                $xml_writer->enableOperations(
true);
 
  499                        $xml_writer->setUserId($user_id);
 
  502        if ($xml_writer->start())
 
  504                        #$GLOBALS['ilLog']->write(__METHOD__.': '.$xml_writer->getXML()); 
  505            return $xml_writer->getXML();
 
  508                return $this->
__raiseError(
'Cannot create object xml !',
'Server');
 
  516                if(!$this->__checkSession($sid))
 
  523                $nodedata = $tree->getNodeData(
$ref_id);
 
  524                $nodearray = $tree->getSubTree($nodedata);
 
  527                $filter = (array) $types;
 
  529                global $objDefinition;
 
  530                foreach($nodearray as $node)
 
  532                        if(!$objDefinition->isAdministrationObject($node[
'type']) && !$objDefinition->isSystemObject($node[
'type']))
 
  534                                if(!in_array($node[
'type'], $filter))
 
  545                include_once 
'./webservice/soap/classes/class.ilObjectXMLWriter.php';
 
  548                $xml_writer->enablePermissionCheck(
true);
 
  549                $xml_writer->setObjects($nodes);
 
  550                $xml_writer->enableOperations(
false);
 
  554                        $xml_writer->setUserId($user_id);
 
  557                if($xml_writer->start())
 
  559                        return $xml_writer->getXML();
 
  562                return $this->
__raiseError(
'Cannot create object xml !', 
'Server');
 
  570                if(!$this->__checkSession($sid))
 
  576                        return $this->
__raiseError(
'No valid xml string given.',
 
  580                global $rbacsystem, $objDefinition,
$ilUser, 
$lng, $ilObjDataCache;
 
  590                        return $this->
__raiseError(
"Parent with ID $a_target_id has been deleted.", 
'Client');
 
  593                $allowed_types = array(
'root',
'cat',
'grp',
'crs',
'fold');
 
  594                if(!in_array($target_obj->getType(),$allowed_types))
 
  596                        return $this->
__raiseError(
'No valid target type. Target must be reference id of "course, group, category or folder"',
 
  600                $allowed_subtypes = $target_obj->getPossibleSubObjects();
 
  602                foreach($allowed_subtypes as 
$row)
 
  604                        if(
$row[
'name'] != 
'rolf')
 
  606                                $allowed[] = 
$row[
'name'];
 
  610                include_once 
'./webservice/soap/classes/class.ilObjectXMLParser.php';
 
  614                        $xml_parser->startParsing();
 
  623                foreach($xml_parser->getObjectData() as $object_data)
 
  632                        if(!in_array($object_data[
'type'],$allowed))
 
  634                                return $this->
__raiseError(
'Objects of type: '.$object_data[
'type'].
' are not allowed to be subobjects of type '.
 
  635                                                                                   $target_obj->getType().
'!',
 
  638                        if(!$rbacsystem->checkAccess(
'create',$a_target_id,$object_data[
'type']))
 
  640                                return $this->
__raiseError(
'No permission to create objects of type '.$object_data[
'type'].
'!',
 
  656                                return $this->
__raiseError(
'An object with import id '.$object_data[
'import_id'].
' already exists!',
 
  661                        $class_name = $objDefinition->getClassName($object_data[
'type']);
 
  662                        $location = $objDefinition->getLocation($object_data[
'type']);
 
  664                        $class_constr = 
"ilObj".$class_name;
 
  665                        require_once(
$location.
"/class.ilObj".$class_name.
".php");
 
  667                        $newObj = 
new $class_constr();
 
  669                        if(isset($object_data[
'owner']) && strlen($object_data[
'owner']))
 
  671                                if((
int)$object_data[
'owner'])
 
  674                                           $ilObjDataCache->lookupType((
int)$object_data[
'owner']) == 
'usr')
 
  676                                                $newObj->setOwner((
int)$object_data[
'owner']);
 
  684                                                $newObj->setOwner((
int)$usr_id);
 
  689                        $newObj->setType($object_data[
'type']);
 
  690                        if(strlen($object_data[
'import_id']))
 
  692                                $newObj->setImportId($object_data[
'import_id']);
 
  694                        $newObj->setTitle($object_data[
'title']);
 
  695                        $newObj->setDescription($object_data[
'description']);
 
  697                        $newObj->createReference();
 
  698                        $newObj->putInTree($a_target_id);
 
  699                        $newObj->setPermissions($a_target_id);
 
  701                        switch($object_data[
'type'])
 
  705                                        $newObj->addMember($object_data[
'owner'] ? $object_data[
'owner'] : 
$ilUser->getId(),
 
  706                                                                           $newObj->getDefaultAdminRole());
 
  716                                        $newObj->createLMTree();
 
  719                                        $newObj->addTranslation($object_data[
"title"],$object_data[
"description"], 
$lng->getLangKey(), 
$lng->getLangKey());
 
  735                if(!$this->__checkSession($sid))
 
  739                if(!is_numeric($a_source_id))
 
  744                if(!is_numeric($a_target_id))
 
  750                global $objDefinition, $rbacsystem, $tree;
 
  763                if(!$objDefinition->allowLink($source_obj->getType()) and 
 
  764                        $source_obj->getType() != 
'cat' and
 
  765                        $source_obj->getType() != 
'crs')
 
  767                        return $this->
__raiseError(
'Linking of object type: '.$source_obj->getType().
' is not allowed',
 
  771                $allowed_subtypes = $target_obj->getPossibleSubObjects();
 
  772                foreach($allowed_subtypes as 
$row)
 
  774                        if(
$row[
'name'] != 
'rolf')
 
  776                                $allowed[] = 
$row[
'name'];
 
  779                if(!in_array($source_obj->getType(),$allowed))
 
  781                        return $this->
__raiseError(
'Objects of type: '.$source_obj->getType().
' are not allowed to be subobjects of type '.
 
  782                                                                           $target_obj->getType().
'!',
 
  787                if(!$rbacsystem->checkAccess(
'create',$target_obj->getRefId(),$source_obj->getType()))
 
  789                        return $this->
__raiseError(
'No permission to create objects of type '.$source_obj->getType().
'!',
 
  792                if(!$rbacsystem->checkAccess(
'delete',$source_obj->getRefId()))
 
  794                        return $this->
__raiseError(
'No permission to link object with id: '.$source_obj->getRefId().
'!',
 
  799                if($source_obj->getType() != 
'cat' and $source_obj->getType() != 
'crs')
 
  802                        $possibleChilds = $tree->getChildsByType($target_obj->getRefId(), $source_obj->getType());
 
  803                        foreach ($possibleChilds as $child) 
 
  805                                if ($child[
"obj_id"] == $source_obj->getId())
 
  806                                        return $this->
__raiseError(
"Object already linked to target.",
"Client");
 
  811                        $new_ref_id = $source_obj->createReference();
 
  812                        $source_obj->putInTree($target_obj->getRefId());
 
  813                        $source_obj->setPermissions($target_obj->getRefId());
 
  815                        return $new_ref_id ? $new_ref_id : 
"0";
 
  819                        switch($source_obj->getType())
 
  822                                        include_once(
'./Modules/CategoryReference/classes/class.ilObjCategoryReference.php');
 
  827                                        include_once(
'./Modules/CourseReference/classes/class.ilObjCourseReference.php');
 
  832                        $new_ref_id = $new_ref->createReference();
 
  834                        $new_ref->putInTree($target_obj->getRefId());
 
  835                        $new_ref->setPermissions($target_obj->getRefId());
 
  837                        $new_ref->setTargetId($source_obj->getId());
 
  840                        return $new_ref_id ? $new_ref_id : 0;
 
  849                if(!$this->__checkSession($sid))
 
  853                if(!is_numeric($reference_id))
 
  858                global $tree, $rbacsystem, $rbacadmin;
 
  862                        return $this->
__raiseError(
'No valid reference id given.',
 
  865                if(!$rbacsystem->checkAccess(
'delete',$del_obj->getRefId()))
 
  867                        return $this->
__raiseError(
'No permission to delete object with id: '.$del_obj->getRefId().
'!',
 
  872                if($tree->isDeleted($reference_id))
 
  874                        return $this->
__raiseError(
'Node already deleted',
'Server');
 
  877                if($del_obj->getType() == 
'rolf')
 
  879                        return $this->
__raiseError(
'Delete is not available for role folders.',
'Client');
 
  882                $subnodes = $tree->getSubtree($tree->getNodeData($reference_id));
 
  883                foreach($subnodes as $subnode)
 
  885                        $rbacadmin->revokePermission($subnode[
"child"]);
 
  889                if(!$tree->saveSubTree($reference_id,
true))
 
  891                        return $this->
__raiseError(
'Node already deleted',
'Client');
 
  902                if(!$this->__checkSession($sid))
 
  906                if(!strlen($import_id))
 
  908                        return $this->
__raiseError(
'No import id given. Aborting!',
 
  911                global $rbacsystem, $tree, 
$ilLog;
 
  916                        return $this->
__raiseError(
'No object found with import id: '.$import_id,
 
  921                $permission_ok = 
false;
 
  924                        if($rbacsystem->checkAccess(
'delete',
$ref_id))
 
  926                                $permission_ok = 
true;
 
  932                        return $this->
__raiseError(
'No permission to delete the object with import id: '.$import_id,
 
  940                        $node_data = $tree->getNodeData(
$ref_id);
 
  941                        $subtree_nodes = $tree->getSubtree($node_data);
 
  943                        foreach($subtree_nodes as $node)
 
  945                                $ilLog->write(
'Soap: removeFromSystemByImportId(). Deleting object with title id: '.$node[
'title']);
 
  947                                if(!is_object($tmp_obj))
 
  949                                        return $this->
__raiseError(
'Cannot create instance of reference id: '.$node[
'ref_id'],
 
  955                        $tree->deleteTree($node_data);
 
  968                if(!$this->__checkSession($sid))
 
  974                        return $this->
__raiseError(
'No valid xml string given.',
 
  978                global $rbacreview, $rbacsystem, 
$lng,$ilAccess;
 
  980                include_once 
'./webservice/soap/classes/class.ilObjectXMLParser.php';
 
  984                        $xml_parser->startParsing();
 
  995                $object_datas = $xml_parser->getObjectData();
 
  996                foreach($object_datas as & $object_data)
 
 1005                        if(!$object_data[
"obj_id"])
 
 1007                                return $this->
__raiseError(
'No obj_id in xml found.', 
'Client');
 
 1009                        elseif ((
int) $object_data[
"obj_id"] == -1 && count($object_data[
"references"])>0)
 
 1013                                foreach ($object_data[
"references"] as $refid) 
 
 1023                                if (!$obj_id_from_refid)
 
 1025                                        return $this->
__raiseError(
'No obj_id found for reference id '.$object_data[
"references"][0], 
'CLIENT_OBJECT_NOT_FOUND');
 
 1029                                        $object_data[
"obj_id"] = $obj_id_from_refid;
 
 1034                        if ($tmp_obj == 
null)
 
 1036                                return $this->
__raiseError(
'No object for id '.$object_data[
'obj_id'].
'!', 
'CLIENT_OBJECT_NOT_FOUND');
 
 1040                                $object_data[
"instance"] = $tmp_obj;
 
 1043                        if($object_data[
'type'] == 
'role')
 
 1045                                $rolf_ids = $rbacreview->getFoldersAssignedToRole($object_data[
'obj_id'],
true);
 
 1046                                $rolf_id = $rolf_ids[0];
 
 1048                                if(!$rbacsystem->checkAccess(
'write',$rolf_id))
 
 1050                                        return $this->
__raiseError(
'No write permission for object with id '.$object_data[
'obj_id'].
'!', 
'Client');
 
 1055                                $permission_ok = 
false;
 
 1058                                        if($ilAccess->checkAccess(
'write',
'',
$ref_id))
 
 1060                                                $permission_ok = 
true;
 
 1066                                        return $this->
__raiseError(
'No write permission for object with id '.$object_data[
'obj_id'].
'!', 
'Client');
 
 1071                if (count ($object_datas) > 0)
 
 1073                        foreach($object_datas as $object_data)
 
 1077                                $tmp_obj = $object_data[
"instance"];
 
 1078                                $tmp_obj->setTitle($object_data[
'title']);
 
 1079                                $tmp_obj->setDescription($object_data[
'description']);
 
 1081                                #$GLOBALS['ilLog']->write(__METHOD__.': type is '. $object_data['type']); 
 1082                                #$GLOBALS['ilLog']->write(__METHOD__.': type is '. $a_xml); 
 1085                                switch ($object_data[
'type']) 
 
 1088                                                $tmp_obj->updateTranslation($object_data[
"title"],$object_data[
"description"], 
$lng->getLangKey(), 
$lng->getLangKey());
 
 1092                                if(strlen($object_data[
'owner']) && is_numeric($object_data[
'owner']))
 
 1094                                    $tmp_obj->setOwner($object_data[
'owner']);
 
 1095                                        $tmp_obj->updateOwner();
 
 1109                if(!$this->__checkSession($sid))
 
 1114                include_once 
'./webservice/soap/classes/class.ilSoapUtils.php';
 
 1115                global $rbacreview, $rbacadmin, $objDefinition, $rbacsystem, 
$lng, 
$ilUser, $tree;
 
 1120                        return $this->
__raiseError(
'No valid source given.', 
'Client');
 
 1126                        return $this->
__raiseError(
'No valid target given.', 
'Client');
 
 1132                        return $this->
__raiseError(
'Object is trashed.', 
'Client');
 
 1137                        return $this->
__raiseError(
'Object is trashed.', 
'Client');
 
 1141                if ($this->
isFault($canAddType)) 
 
 1148                foreach ($possibleChilds as $child) 
 
 1150                        if ($child[
"obj_id"] == 
$ref_id)
 
 1151                                return $this->
__raiseError(
"Object already exists in target.",
"Client");
 
 1157                        return $this->
__raiseError(
"Cannot move object into itself.",
"Client");         
 
 1160                $old_parent = $tree->getParentId(
$ref_id);
 
 1162                $rbacadmin->adjustMovedObjectPermissions(
$ref_id,$old_parent);
 
 1164                include_once(
'./Services/AccessControl/classes/class.ilConditionHandler.php');
 
 1179                if(!$this->__checkSession($sid))
 
 1185                include_once 
'./webservice/soap/classes/class.ilSoapUtils.php';
 
 1186                global $rbacreview, $objDefinition, $rbacsystem, 
$lng, 
$ilUser;
 
 1188                include_once 
'./webservice/soap/classes/class.ilCopyWizardSettingsXMLParser.php';
 
 1191                        $xml_parser->startParsing();
 
 1193                        return $this->
__raiseError($se->getMessage(), 
"Client");
 
 1197                if(!$rbacsystem->checkAccess(
'copy',$xml_parser->getSourceId()))
 
 1199                        return $this->
__raiseError(
"Missing copy permissions for object with reference id ".$xml_parser->getSourceId(), 
'Client');
 
 1203                $source_id = $xml_parser->getSourceId();
 
 1210                        return $this->
__raiseError(
'No valid source given.', 
'Client');
 
 1216                        return $this->
__raiseError(
'No valid target given.', 
'Client');
 
 1221                if ($this->
isFault($canAddType)) 
 
 1227                $options = $xml_parser->getOptions();
 
 1232                        $clientid = substr($sid, strpos($sid, 
"::") + 2);
 
 1233                        $sessionid = str_replace(
"::".$clientid, 
"", $sid);
 
 1235                        $ret = $source_object->cloneAllObject($sessionid, $clientid,
 
 1236                                $source_object_type,
 
 1241                        return $ret[
'ref_id'];
 
 1247                        $wizard_options->saveOwner(
$ilUser->getId());
 
 1248                        $wizard_options->saveRoot($source_id);
 
 1250                        foreach(
$options as $source_id => $option)
 
 1252                                $wizard_options->addEntry($source_id,$option);
 
 1254                        $wizard_options->read();
 
 1257                        $newObject = $source_object->cloneObject($xml_parser->getTargetId(), $copy_id);
 
 1258                        return is_object($newObject) ? $newObject->getRefId() : -1;
 
 1267                if(!$this->__checkSession($sid))
 
 1272                global $ilAccess, $objDefinition, $rbacsystem, 
$lng, 
$ilUser;
 
 1274                if(!$rbacsystem->checkAccess(
'read', 
$ref_id))
 
 1276                        return $this->
__raiseError(
"Missing read permissions for object with reference id ".
$ref_id, 
'Client');
 
 1281                        return $this->
__raiseError(
"Object is in Trash", 
'Client');                     
 
 1284                $items = $tree->getPathFull(
$ref_id);
 
 1286                include_once 
'webservice/soap/classes/class.ilXMLResultSet.php';
 
 1287                include_once 
'webservice/soap/classes/class.ilXMLResultSetWriter.php';
 
 1288                include_once 
'Modules/Course/classes/class.ilCourseXMLWriter.php';
 
 1291                $xmlResultSet->addColumn(
"ref_id");
 
 1292                $xmlResultSet->addColumn(
"type");
 
 1293                $xmlResultSet->addColumn(
"title");
 
 1296                foreach ($items as $item) {
 
 1297                        if ($item[
"ref_id"] == 
$ref_id)
 
 1299                        if ($item[
"title"] == 
"ILIAS" && $item[
"type"] == 
"root")
 
 1301                                $item[
"title"] = 
$lng->txt(
"repository");
 
 1305                        $xmlResultSet->addRow(
$row);
 
 1306                        $row->setValue(
"ref_id", $item[
"ref_id"]);      
 
 1307                        $row->setValue(
"type", $item[
"type"]);
 
 1308                        $row->setValue(
"title", $item[
"title"]);
 
 1311                return $writer->getXML();
 
 1318                global $objDefinition, $rbacsystem;
 
 1320                $allowed_types = array(
'root',
'cat',
'grp',
'crs',
'fold');
 
 1323                        return $this->
__raiseError(
'No valid target type. Target must be reference id of "course, group, category or folder"', 
'Client');
 
 1326                $allowed_subtypes = $objDefinition->getSubObjects(
$target_type);
 
 1329                foreach($allowed_subtypes as 
$row)
 
 1331                        if(
$row[
'name'] != 
'rolf')
 
 1333                                $allowed[] = 
$row[
'name'];
 
 1337                if(!in_array($type, $allowed))
 
 1339                        return $this->
__raiseError(
'Objects of type: '.$type.
' are not allowed to be subobjects of type '.
$target_type.
'!',
'Client');
 
 1341                if(!$rbacsystem->checkAccess(
'create',
$target_id, $type))
 
 1343                        return $this->
__raiseError(
'No permission to create objects of type '.$type.
'!', 
'Client');
 
 1353                if(!isset($a_object_data[
'references']) or !count($a_object_data[
'references']))
 
 1357                if($a_action == 
'create') 
 
 1359                        if(count($a_object_data[
'references']) > 1)
 
 1361                                if(in_array($a_object_data[
'type'],array(
'cat',
'crs',
'grp',
'fold')))
 
 1363                                        return $this->
__raiseError(
"Cannot create references for type ".$a_object_data[
'type'],
 
 1367                        if(count($a_object_data[
'references']) == 1)
 
 1369                                if($a_target_id != $a_object_data[
'references'][0][
'parent_id'])
 
 1371                                        return $this->
__raiseError(
"Cannot create references for type ".$a_object_data[
'type'],
 
 1376                        foreach($a_object_data[
'references'] as $ref_data)
 
 1378                                if(!$ref_data[
'parent_id']) 
 
 1380                                        return $this->
__raiseError(
'Element References: No parent Id given!',
'Client');
 
 1385                                if($this->
isFault($can_add_type))
 
 1387                                        return $can_add_type;
 
 1393                if($a_action == 
'update')
 
 1395                        foreach($a_object_data[
'references'] as $ref_data)
 
 1397                                if(!$ref_data[
'ref_id'])
 
 1399                                        return $this->
__raiseError(
'Element References: No reference id given!',
'Client');
 
 1402                                if(!$ilAccess->checkAccess(
'write',
'',$ref_data[
'ref_id']))
 
 1404                                        return $this->
__raiseError(
'No write permission for object with reference id '.$ref_data[
'ref_id'].
'!', 
'Client');
 
 1416                if(!isset($a_object_data[
'references']) or !count($a_object_data[
'references']))
 
 1421                foreach($a_object_data[
'references'] as $ref_data)
 
 1423                        if(isset($ref_data[
'time_target']) )
 
 1425                                include_once(
'./webservice/soap/classes/class.ilObjectXMLWriter.php');                          
 
 1426                                include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
 
 1430                                $items->toggleChangeable(isset($ref_data[
'time_target'][
'changeable']) ? $ref_data[
'time_target'][
'changeable'] : $old[
'changeable']);
 
 1431                                $items->setTimingStart(isset($ref_data[
'time_target'][
'starting_time']) ? $ref_data[
'time_target'][
'starting_time'] : $old[
'timing_start']);
 
 1432                                $items->setTimingEnd(isset($ref_data[
'time_target'][
'ending_time']) ? $ref_data[
'time_target'][
'ending_time'] : $old[
'timing_end']);
 
 1433                                $items->toggleVisible(isset($ref_data[
'time_target'][
'timing_visibility']) ? $ref_data[
'time_target'][
'timing_visibility'] : $old[
'visible']);
 
 1434                                $items->setSuggestionStart(isset($ref_data[
'time_target'][
'suggestion_start']) ? $ref_data[
'time_target'][
'suggestion_start'] : $old[
'suggestion_start']);
 
 1435                                $items->setSuggestionEnd(isset($ref_data[
'time_target'][
'suggestion_end']) ? $ref_data[
'time_target'][
'suggestion_end'] : $old[
'suggestion_end']);
 
 1436                                $items->setEarliestStart(isset($ref_data[
'time_target'][
'earliest_start']) ? $ref_data[
'time_target'][
'earliest_start'] : $old[
'earliest_start']);
 
 1437                                $items->setLatestEnd(isset($ref_data[
'time_target'][
'latest_end']) ? $ref_data[
'time_target'][
'latest_end'] : $old[
'latest_end']);
 
 1439                                switch($ref_data[
'time_target'][
'timing_type']) 
 
 1442                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_DEACTIVATED.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1447                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_ACTIVATION.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1452                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_PRESETTING.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1456                                $items->update($ref_data[
'ref_id']);
 
 1467                if(!isset($a_object_data[
'references']) or !count($a_object_data[
'references']))
 
 1472                $original_id = $source->getRefId();
 
 1474                foreach($a_object_data[
'references'] as $ref_data)
 
 1476                        $new_ref_id = 
$ref_id = $original_id;
 
 1477                        if($tree->getParentId($original_id) != $ref_data[
'parent_id'])
 
 1480                                $new_ref_id = $source->createReference();
 
 1481                                $source->putInTree($ref_data[
'parent_id']);
 
 1482                                $source->setPermissions($ref_data[
'parent_id']);
 
 1484                        if(isset($ref_data[
'time_target']) )
 
 1486                                include_once(
'./webservice/soap/classes/class.ilObjectXMLWriter.php');
 
 1487                                include_once(
'./Services/Object/classes/class.ilObjectActivation.php');
 
 1489                                if(!isset($ref_data[
'time_target'][
'starting_time']))
 
 1491                                        $ref_data[
'time_target'][
'starting_time'] = time();
 
 1493                                if(!isset($ref_data[
'time_target'][
'ending_time']))
 
 1495                                        $ref_data[
'time_target'][
'ending_time'] = time();
 
 1499                                $items->toggleChangeable($ref_data[
'time_target'][
'changeable']);
 
 1500                                $items->setTimingStart($ref_data[
'time_target'][
'starting_time']);
 
 1501                                $items->setTimingEnd($ref_data[
'time_target'][
'ending_time']);
 
 1502                                $items->toggleVisible($ref_data[
'time_target'][
'timing_visibility']);
 
 1503                                $items->setSuggestionStart($ref_data[
'time_target'][
'suggestion_start']);
 
 1504                                $items->setSuggestionEnd($ref_data[
'time_target'][
'suggestion_end']);
 
 1505                                $items->setEarliestStart($ref_data[
'time_target'][
'earliest_start']);
 
 1506                                $items->setLatestEnd($ref_data[
'time_target'][
'latest_end']);
 
 1508                                switch($ref_data[
'time_target'][
'timing_type']) 
 
 1511                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_DEACTIVATED.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1516                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_ACTIVATION.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1521                                                $ilLog->write(__METHOD__.ilObjectActivation::TIMINGS_PRESETTING.
' '.$ref_data[
'time_target'][
'timing_type']);
 
 1525                                $items->update($new_ref_id);
 
const IL_CRS_ADMIN
Base class for course and group participants.
static _adjustMovedObjectConditions($a_ref_id)
In the moment it is not allowed to create preconditions on objects that are located outside of a cour...
static _allocateCopyId()
Allocate a copy for further entries.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
static getInstance()
Get singleton instance.
Parses result XML from lucene search highlight.
static getInstance($a_user_id)
static getInstance(ilLuceneQueryParser $qp)
Get singleton instance.
static _lookupId($a_user_str)
Lookup id by login.
Class ilObjectActivation.
const TIMINGS_DEACTIVATED
static getItem($a_ref_id)
Get item data.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
getTypeByRefId($a_ref_id, $stop_on_error=true)
get object type by reference id
getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
Exception class for ObjectXMLWriter and ObjectXMLParser.
const TIMING_TEMPORARILY_AVAILABLE
Class ilObject Basic functions for all objects.
static _lookupObjId($a_id)
_isInTrash($a_ref_id)
checks wether object is in trash
static _lookupObjectId($a_ref_id)
lookup object id
_hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
static _getAllReferences($a_id)
get all reference ids of object
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
static _lookupObjIdByImportId($a_import_id)
static _lookupType($a_id, $a_reference=false)
lookup object type
SaxParserException thrown by ilSaxParser if property throwException is set.
__raiseError($a_message, $a_code)
getRefIdsByObjId($sid, $obj_id)
validateReferences($a_action, $a_object_data, $a_target_id=0)
updateReferences($a_object_data)
getPathForRefId($sid, $ref_id)
removeFromSystemByImportId($sid, $import_id)
moveObject($sid, $ref_id, $target_id)
getXMLTree($sid, $ref_id, $types, $user_id)
copyObject($sid, $copy_settings_xml)
copy object in repository $sid session id $settings_xml contains copy wizard settings following ilias...
addReferences($source, $a_object_data)
searchObjects($sid, $types, $key, $combination, $user_id)
getObjIdsByRefIds($sid, $ref_ids)
Returns a array of object ids which match the references id, given by a comma seperated string.
canAddType($type, $target_type, $target_id)
ilSoapObjectAdministration()
getTreeChilds($sid, $ref_id, $types, $user_id)
addReference($sid, $a_source_id, $a_target_id)
updateObjects($sid, $a_xml)
deleteObject($sid, $reference_id)
getObjectsByTitle($sid, $a_title, $user_id)
getObjectByReference($sid, $a_ref_id, $user_id)
getObjIdByImportId($sid, $import_id)
getRefIdsByImportId($sid, $import_id)
addObject($sid, $a_target_id, $a_xml)
static removeItemFromDesktops($a_id)
removes object from all user's desktops @access public
XML Writer for XMLResultSet.
if(!is_array($argv)) $options