/** * @see parent::loadFwdRef() * * Required because of the ex_object_id field */ function loadFwdRef($field, $cached = false) { if ($field === "ex_object_id") { $ex_object = new CExObject($this->ex_class_id); $ex_object->load($this->ex_object_id); return $this->_fwd[$field] = $ex_object; } return parent::loadFwdRef($field, $cached); }
$printers = CMediusers::get()->loadRefFunction()->loadBackRefs("printers"); if (count($printers)) { $printer = reset($printers); $printer_id = $printer->_id; } $ex_object->_event_name = $event_name; // Layout grid if ($ex_object->_ref_ex_class->pixel_positionning && !$only_filled) { $grid = null; $out_of_grid = null; $groups = $ex_object->_ref_ex_class->getPixelGrid(); } else { list($grid, $out_of_grid, $groups) = $ex_object->_ref_ex_class->getGrid(); } if ($ex_object_id || $ex_object->_id) { $ex_object->load($ex_object_id); } else { $ex_object->group_id = CGroups::loadCurrent()->_id; } // Host and reference objects $ex_object->setObject($object); if (!$ex_object->_id) { if (!$ex_object->reference_id && !$ex_object->reference_class) { $reference = $ex_class_event->resolveReferenceObject($object, 1); $ex_object->setReferenceObject_1($reference); } if (!$ex_object->reference2_id && !$ex_object->reference2_class) { $reference = $ex_class_event->resolveReferenceObject($object, 2); $ex_object->setReferenceObject_2($reference); } } else {
/** * Counts ExObject stored for the object * * @param CMbObject $object The object to count the ExObjects for * * @return CExObject[][] The list, with ExClass IDs as key and counts as value */ static function loadExObjectsFor(CMbObject $object) { $group_id = CGroups::loadCurrent()->_id; $where = array("group_id = '{$group_id}' OR group_id IS NULL"); $ex_class = new CExClass(); $ex_class_ids = $ex_class->loadIds($where, "name"); $ds = $ex_class->_spec->ds; $where = array("object_class" => $ds->prepare("= %", $object->_class), "object_id" => $ds->prepare("= %", $object->_id)); $ex_objects = array(); foreach ($ex_class_ids as $_ex_class_id) { $_ex_object = new CExObject($_ex_class_id); if ($_ex_object->countList($where) == 0) { continue; } $_list = $_ex_object->loadList($where); if (count($_list) > 0) { foreach ($_list as $_ex_object) { $_ex_object->_ex_class_id = $_ex_class_id; $_ex_object->load(); } $ex_objects[$_ex_class_id] = $_list; } } return $ex_objects; }