or_composite_id = (int) $a_or_composite_id; } public function getOrCompositeId() { global $ilDB; if (!$this->or_composite_id) { $query = "SELECT MAX(or_composite_id) AS orc FROM il_meta_requirement " . "WHERE rbac_id = " . $ilDB->quote($this->getRBACId()) . " " . "AND obj_id = " . $ilDB->quote($this->getObjId()) . " " . "GROUP BY or_composite_id"; $res = $this->db->query($query); while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { $this->or_composite_id = $row->orc; } ++$this->or_composite_id; } return $this->or_composite_id; } public function &getRequirementIds() { include_once 'Services/Migration/DBUpdate_426/classes/class.ilMDRequirement.php'; return ilMDRequirement::_getIds( $this->getRBACId(), $this->getObjId(), $this->getParentId(), 'meta_technical', $this->getOrCompositeId() ); } public function &getRequirement($a_requirement_id) { include_once 'Services/Migration/DBUpdate_426/classes/class.ilMDRequirement.php'; if (!$a_requirement_id) { return false; } $req = new ilMDRequirement(); $req->setMetaId($a_requirement_id); return $req; } public function &addRequirement() { include_once 'Services/Migration/DBUpdate_426/classes/class.ilMDRequirement.php'; $req = new ilMDRequirement($this->getRBACId(), $this->getObjId(), $this->getObjType()); $req->setParentId($this->getParentId()); $req->setParentType('meta_technical'); $req->setOrCompositeId($this->getOrCompositeId()); return $req; } /* * Overwritten save method, to get new or_composite_id * */ public function save() { echo 'Use ilMDOrcomposite::addRequirement()'; } public function delete() { foreach ($this->getRequirementIds() as $id) { $req = $this->getRequirement($id); $req->delete(); } return true; } /* * XML Export of all meta data * @param object (xml writer) see class.ilMD2XML.php * */ public function toXML(&$writer) { // For all requirements $writer->xmlStartTag('OrComposite'); foreach ($this->getRequirementIds() as $id) { $req = $this->getRequirement($id); $req->toXML($writer); } $writer->xmlEndTag('OrComposite'); } // STATIC public function _getIds($a_rbac_id, $a_obj_id, $a_parent_id, $a_parent_type) { global $ilDB; $query = "SELECT DISTINCT(or_composite_id) AS or_composite_id FROM il_meta_requirement " . "WHERE rbac_id = " . $ilDB->quote($a_rbac_id) . " " . "AND obj_id = " . $ilDB->quote($a_obj_id) . " " . "AND parent_id = " . $ilDB->quote($a_parent_id) . " " . "AND parent_type = " . $ilDB->quote($a_parent_type) . " " . "AND or_composite_id > 0 "; $res = $ilDB->query($query); while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { $ids[] = $row->or_composite_id; } return $ids ? $ids : array(); } }