/**
  * @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;
 }