예제 #1
0
 * @link     http://www.mediboard.org
 */
CCanDo::checkAdmin();
/** @var int $step */
$step = CView::get("step", "num default|100000");
/** @var int $offset */
$offset = CView::get("offset", "num default|1");
/** @var bool $execute */
$execute = CView::get("execute", "bool default|0", true);
/** @var bool $auto */
$auto = CView::get("auto", "bool", true);
CView::checkin();
$copies = array(array("CConstantesMedicales", "user_id", "user_id"), array("CConstantesMedicales", "date", "creation_date"), array("CAlert", "date", "creation_date"), array("CCompteRendu", "date", "creation_date"), array("CAntecedent", "user_id", "owner_id"), array("CAntecedent", "date", "creation_date"), array("CTraitement", "user_id", "owner_id"), array("CTraitement", "date", "creation_date"), array("CProductDelivery", "user_id", "preparateur_id"), array("CProductDeliveryTrace", "user_id", "preparateur_id"), array("CRefusDispensation", "user_id", "preparateur_id"));
// Ajout des classes de formulaires
if (CModule::getActive("forms")) {
    $ex_class = new CExClass();
    $ex_class_ids = $ex_class->loadIds();
    foreach ($ex_class_ids as $_id) {
        $copies[] = array("CExObject_{$_id}", "user_id", "owner_id");
        $copies[] = array("CExObject_{$_id}", "date", "datetime_create");
        $copies[] = array("CExObject_{$_id}", "date", function (CSQLDataSource $ds, $log) use($_id) {
            $query = "UPDATE `ex_link`\n                  SET `datetime_create` = ?1,\n                      `owner_id` = ?2\n                  WHERE\n                      `ex_object_id` = ?3 AND\n                      `ex_class_id`  = ?4 AND\n                      `datetime_create` IS NULL;";
            return $ds->prepare($query, $log["date"], $log["user_id"], $log["object_id"], $_id);
        });
    }
}
/**
 * Create user authentication entry
 *
 * @param CSQLDataSource $ds   Data source
 * @param array          $data Data
<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage forms
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkEdit();
$ex_class_id = CValue::get("ex_class_id");
$ex_class = new CExClass();
$ex_class->load($ex_class_id);
$ex_class->loadRefsEvents();
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("ex_class", $ex_class);
$smarty->display("inc_ex_class_events_preview.tpl");
 function checkValue($value)
 {
     return CExClass::compareValues($value, $this->operator, $this->value);
 }
예제 #4
0
    if ($reference_id) {
        $reference->load($reference_id);
    }
} else {
    $reference = null;
}
CExClassField::$_load_lite = true;
CExObject::$_multiple_load = true;
CExObject::$_load_lite = $detail < 2;
$group_id = $group_id ? $group_id : CGroups::loadCurrent()->_id;
$where = array("group_id = '{$group_id}' OR group_id IS NULL");
if ($ex_class_id) {
    $where['ex_class_id'] = "= '{$ex_class_id}'";
}
if (empty(CExClass::$_list_cache)) {
    $ex_class = new CExClass();
    /** @var CExClass[] $ex_classes */
    $ex_classes = $ex_class->loadList($where, "name");
    $categories = CStoredObject::massLoadFwdRef($ex_classes, "category_id");
    $categories = CStoredObject::naturalSort($categories, array("title"));
    $categories = array(new CExClassCategory()) + $categories;
    foreach ($ex_classes as $_ex_class) {
        $_category_id = $_ex_class->category_id ?: 0;
        $categories[$_category_id]->_ref_ex_classes[$_ex_class->_id] = $_ex_class;
    }
    if (!CExObject::$_locales_cache_enabled && $detail > 1) {
        foreach ($ex_classes as $_ex_class) {
            foreach ($_ex_class->loadRefsGroups() as $_group) {
                $_group->loadRefsFields();
                foreach ($_group->_ref_fields as $_field) {
                    $_field->updateTranslation();
예제 #5
0
 * @version  $Revision: 28665 $
 * @link     http://www.mediboard.org
 */
CCanDo::checkEdit();
CStoredObject::$useObjectCache = false;
CApp::setMemoryLimit(1024);
CApp::setTimeLimit(600);
$ex_class_id = CValue::get("ex_class_id");
$concept_search = CValue::get("concept_search");
$date_min = CValue::get("date_min");
$date_max = CValue::get("date_max");
$group_id = CValue::get("group_id");
$limit = 10000;
$group_id = $group_id ? $group_id : CGroups::loadCurrent()->_id;
$where = array("group_id = '{$group_id}' OR group_id IS NULL");
$ex_class = new CExClass();
$ex_class->load($ex_class_id);
foreach ($ex_class->loadRefsGroups() as $_group) {
    $_group->loadRefsFields();
    foreach ($_group->_ref_fields as $_field) {
        $_field->updateTranslation();
    }
}
/** @var CExObject[] $ex_objects */
$ex_objects = array();
$ref_objects_cache = array();
$search = null;
if ($concept_search) {
    $concept_search = stripslashes($concept_search);
    $search = CExConcept::parseSearch($concept_search);
}
    $_count = $_row["total"];
    $_ex_link = new CExLink();
    if (!empty($search)) {
        $_ex_class = new CExClass();
        $_ex_class->load($_ex_class_id);
        if ($use_user_logs) {
            $ljoin["user_log"] = "user_log.object_id = ex_link.ex_object_id AND user_log.object_class = 'CExObject_{$_ex_class_id}'";
        } else {
            $where["ex_link.ex_class_id"] = "= '{$_ex_class_id}'";
        }
        $ljoin_orig = $ljoin;
        $where_orig = $where;
        $where["ex_class.ex_class_id"] = "= '{$_ex_class_id}'";
        $where = array_merge($where, $_ex_class->getWhereConceptSearch($search));
        $ljoin["ex_object_{$_ex_class_id}"] = "ex_object_{$_ex_class_id}.ex_object_id = ex_link.ex_object_id";
        $_count = $_ex_link->countList($where, "ex_link.ex_class_id", $ljoin);
        $where = $where_orig;
        $ljoin = $ljoin_orig;
    }
    if ($_count > 0) {
        $ex_objects_counts[$_ex_class_id] = $_count;
    }
}
$ex_class = new CExClass();
$where = array("ex_class_id" => $ex_class->getDS()->prepareIn(array_keys($ex_objects_counts)));
$ex_classes = $ex_class->loadList($where);
// Création du template
$smarty = new CSmartyDP("modules/forms");
$smarty->assign("ex_objects_counts", $ex_objects_counts);
$smarty->assign("ex_classes", $ex_classes);
$smarty->display("inc_list_ex_object_counts.tpl");
<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage forms
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkEdit();
$ex_class_id = CValue::get("ex_class_id");
$keywords = CValue::get("_ex_field_view");
$exclude_ex_field_id = CValue::get("exclude_ex_field_id");
$ex_class = new CExClass();
$ex_class->load($ex_class_id);
$where = array("ex_class_field_group.ex_class_id" => "= '{$ex_class_id}'");
$ljoin = array("ex_class_field_group" => "ex_class_field_group.ex_class_field_group_id = ex_class_field.ex_group_id");
if ($exclude_ex_field_id) {
    $where["ex_class_field.ex_class_field_id"] = "!= '{$exclude_ex_field_id}'";
}
$ex_field = new CExClassField();
if ($keywords == "") {
    $keywords = "%";
}
$matches = $ex_field->getAutocompleteList($keywords, $where, 200, $ljoin);
$template = $ex_field->getTypedTemplate("autocomplete");
$smarty = new CSmartyDP("modules/system");
$smarty->assign('matches', $matches);
$smarty->assign('field', "ex_class_id");
 /**
  * Check constraint
  *
  * @param CMbObject $object Object
  *
  * @return bool
  */
 function checkConstraint(CMbObject $object)
 {
     $this->completeField("field", "value");
     $this->loadObjectRefs($object);
     $object_field = $this->resolveObjectField($object);
     if (!$object_field) {
         return false;
     }
     /** @var CMbObject $object_fwd */
     $object_fwd = $object_field["object"];
     $field = $object_field["field"];
     // cas ou l'objet retrouvé n'a pas le champ (meta objet avec classe differente)
     if (!isset($object_fwd->_specs[$field]) && $field != "CONNECTED_USER") {
         return false;
     }
     $this->loadObjectRefs($object_fwd);
     if ($field == "CONNECTED_USER") {
         $value = $object_fwd->_guid;
     } else {
         $value = $object_fwd->{$field};
         if ($object_fwd->_specs[$field] instanceof CRefSpec) {
             $_obj = $object_fwd->loadFwdRef($field, true);
             $value = $_obj->_guid;
         }
     }
     $value_comp = $this->value;
     if ($this->operator == "in") {
         $value_comp = $this->getInValues();
     }
     return CExClass::compareValues($value, $this->operator, $value_comp);
 }
 function importObject(DOMElement $element)
 {
     $id = $element->getAttribute("id");
     if (isset($this->imported[$id])) {
         return;
     }
     $this->name_suffix = " (import du " . CMbDT::dateTime() . ")";
     $map_to = isset($this->map[$id]) ? $this->map[$id] : null;
     switch ($element->getAttribute("class")) {
         // --------------------
         case "CExClass":
             $values = self::getValuesFromElement($element);
             $ex_class = new CExClass();
             $ex_class->name = $this->options["ex_class_name"];
             $ex_class->group_id = CGroups::loadCurrent()->_id;
             $ex_class->pixel_positionning = $values["pixel_positionning"];
             $ex_class->native_views = $values["native_views"];
             $ex_class->_dont_create_default_group = true;
             if ($msg = $ex_class->store()) {
                 throw new Exception($msg);
             }
             CAppUI::stepAjax("Formulaire '%s' créé", UI_MSG_OK, $ex_class->name);
             $map_to = $ex_class->_guid;
             break;
             // --------------------
         // --------------------
         case "CExList":
             if ($map_to == "__create__") {
                 /** @var CExList $_ex_list */
                 $_ex_list = $this->getObjectFromElement($element);
                 if ($msg = $_ex_list->store()) {
                     $_ex_list->name .= $this->name_suffix;
                 }
                 if ($msg = $_ex_list->store()) {
                     CAppUI::stepAjax($msg, UI_MSG_WARNING);
                     break;
                 }
                 CAppUI::stepAjax("Liste '%s' créée", UI_MSG_OK, $_ex_list);
                 $_elements = $this->getElementsByFwdRef("CExListItem", "list_id", $id);
                 foreach ($_elements as $_element) {
                     $_list_item = new CExListItem();
                     bindHashToObject(self::getValuesFromElement($_element), $_list_item);
                     $_list_item->list_id = $_ex_list->_id;
                     if ($msg = $_list_item->store()) {
                         CAppUI::stepAjax($msg, UI_MSG_WARNING);
                         break;
                     }
                     CAppUI::stepAjax("Elément de liste '%s' créé", UI_MSG_OK, $_list_item);
                     $_item_id = $_element->getAttribute("id");
                     $this->map[$_item_id] = $_list_item->_guid;
                     $this->imported[$_item_id] = true;
                 }
                 $map_to = $_ex_list->_guid;
             } else {
                 /** @var CExList $ex_list */
                 $ex_list = CStoredObject::loadFromGuid($map_to);
                 $list_items = $ex_list->loadRefItems();
                 foreach ($list_items as $_item) {
                     $this->map[$_item->_guid] = $_item->_guid;
                 }
             }
             break;
             // --------------------
         // --------------------
         case "CExConcept":
             if ($map_to == "__create__") {
                 /** @var CExConcept $_ex_concept */
                 $_ex_concept = $this->getObjectFromElement($element);
                 if ($_ex_concept->ex_list_id) {
                     $_ex_concept->updatePropFromList();
                 }
                 $_ex_concept->prop = $_ex_concept->updateFieldProp($_ex_concept->prop);
                 if ($msg = $_ex_concept->store()) {
                     $_ex_concept->name .= $this->name_suffix;
                 }
                 if ($msg = $_ex_concept->store()) {
                     CAppUI::stepAjax($msg, UI_MSG_WARNING);
                     break;
                 }
                 CAppUI::stepAjax("Concept '%s' créé", UI_MSG_OK, $_ex_concept);
                 $map_to = $_ex_concept->_guid;
             }
             break;
         case "CExClassField":
             /** @var CExClassField $_ex_field */
             $_ex_field = $this->getObjectFromElement($element);
             if ($this->options["ignore_disabled_fields"] && $_ex_field->disabled) {
                 break;
             }
             $_ex_field->_make_unique_name = false;
             // Met à jour default|XXX des champs enum pour garder la bonne référence
             // @FIXME Ne fonctionne pas à cause du fait qu'il y a un concept_id ....
             $_spec_obj = $_ex_field->getSpecObject();
             if ($_spec_obj instanceof CEnumSpec && $_spec_obj->default) {
                 $_new_default = $this->getIdFromGuid($this->map["CExListItem-{$_spec_obj->default}"]);
                 $_ex_field->prop = preg_replace('/ default\\|\\d+/', " default|{$_new_default}", $_ex_field->prop);
             }
             if ($msg = $_ex_field->store()) {
                 CAppUI::stepAjax($msg, UI_MSG_WARNING);
                 break;
             }
             CAppUI::stepAjax("Champ '%s' créé", UI_MSG_OK, $_ex_field);
             $map_to = $_ex_field->_guid;
             break;
             // --------------------
         // --------------------
         case "CExClassFieldGroup":
         case "CExClassFieldSubgroup":
         case "CExClassFieldTranslation":
         case "CExClassMessage":
         case "CExClassHostField":
             $_object = $this->getObjectFromElement($element);
             if ($msg = $_object->store()) {
                 CAppUI::stepAjax($msg, UI_MSG_WARNING);
                 break;
             }
             CAppUI::stepAjax(CAppUI::tr($_object->_class) . " '%s' créé", UI_MSG_OK, $_object);
             $map_to = $_object->_guid;
             break;
         case "CExClassFieldPredicate":
             /** @var CExClassFieldPredicate $_object */
             $_object = $this->getObjectFromElement($element);
             if ($_object->value) {
                 $_field = $_object->loadRefExClassField();
                 if ($_field->getSpecObject() instanceof CEnumSpec) {
                     $this->predicates_to_fix[] = $_object;
                 }
             }
             if ($msg = $_object->store()) {
                 CAppUI::stepAjax($msg, UI_MSG_WARNING);
                 break;
             }
             CAppUI::stepAjax(CAppUI::tr($_object->_class) . " '%s' créé", UI_MSG_OK, $_object);
             $map_to = $_object->_guid;
             break;
         default:
             // Ignore object
             break;
     }
     $this->map[$id] = $map_to;
     $this->imported[$id] = true;
 }
    CAppUI::stepAjax("Objet supprimé", UI_MSG_ERROR);
}
if ($object->_id) {
    $object->loadComplete();
}
// searching for a CExClassEvent
$ex_class_event = new CExClassEvent();
$ex_class_event->host_class = $object->_class;
if ($event_name) {
    $ex_class_event->event_name = $event_name;
}
$ex_class_event->ex_class_id = $ex_class_id;
$ex_class_event->loadMatchingObject();
/** @var CExObject $ex_object */
if (!$ex_object_id) {
    $ex_class = new CExClass();
    $ex_class->load($ex_class_id);
    $ex_objects = $ex_class_event->getExObjectForHostObject($object);
    $ex_object = reset($ex_objects);
    if (!$ex_object) {
        $ex_object = $ex_class->getExObjectInstance();
    }
} else {
    $ex_object = new CExObject($ex_class_id);
}
if ($preview) {
    $ex_object->_preview = true;
}
$creation_date = $ex_object->getCreateDate();
if ($object->_id && $object instanceof CSejour) {
    $object->loadRefCurrAffectation($creation_date);
예제 #11
0
 /**
  * @param CMbObject $object
  *
  * @return CExObject[][]
  */
 static function getExObjectsOf(CMbObject $object)
 {
     CExClassField::$_load_lite = true;
     CExObject::$_multiple_load = true;
     $group_id = CGroups::loadCurrent()->_id;
     $where = array("group_id = '{$group_id}' OR group_id IS NULL");
     if (empty(CExClass::$_list_cache)) {
         $ex_class = new CExClass();
         CExClass::$_list_cache = $ex_class->loadList($where, "name");
         if (!CExObject::$_locales_cache_enabled) {
             foreach (CExClass::$_list_cache as $_ex_class) {
                 foreach ($_ex_class->loadRefsGroups() as $_group) {
                     $_group->loadRefsFields();
                     foreach ($_group->_ref_fields as $_field) {
                         $_field->updateTranslation();
                     }
                 }
             }
         }
     }
     $ex_objects = array();
     $limit = 1;
     $ref_objects_cache = array();
     foreach (CExClass::$_list_cache as $_ex_class_id => $_ex_class) {
         $_ex_object = new CExObject($_ex_class_id);
         $where = array("(reference_class  = '{$object->_class}' AND reference_id  = '{$object->_id}') OR\n         (reference2_class = '{$object->_class}' AND reference2_id = '{$object->_id}') OR\n         (object_class     = '{$object->_class}' AND object_id     = '{$object->_id}')");
         $ljoin = array();
         /** @var CExObject[] $_ex_objects */
         $_ex_objects = $_ex_object->loadList($where, "{$_ex_object->_spec->key} DESC", $limit, null, $ljoin);
         foreach ($_ex_objects as $_ex) {
             $_ex->_ex_class_id = $_ex_class_id;
             $_ex->load();
             $guid = "{$_ex->object_class}-{$_ex->object_id}";
             if (!isset($ref_objects_cache[$guid])) {
                 $_ex->loadTargetObject()->loadComplete();
                 // to get the view
                 $ref_objects_cache[$guid] = $_ex->_ref_object;
             } else {
                 $_ex->_ref_object = $ref_objects_cache[$guid];
             }
             if ($_ex->additional_id) {
                 $_ex->loadRefAdditionalObject();
             }
             $ex_objects[$_ex_class_id][$_ex->_id] = $_ex;
         }
         if (isset($ex_objects[$_ex_class_id])) {
             krsort($ex_objects[$_ex_class_id]);
         }
     }
     ksort($ex_objects);
     return $ex_objects;
 }
예제 #12
0
 while ($current_line = fgetcsv($fp, null, $separator, $enclosure)) {
     $line_number++;
     $current_line = array_map("trim", $current_line);
     $current_line = array_map("reduce_whitespace", $current_line);
     $current_line = array_combine($keys, $current_line);
     foreach ($current_line as $_key => $_value) {
         if (in_array($_key, $multiline) && $_value == "") {
             $current_line[$_key] = $line[$_key];
         }
     }
     $line = $current_line;
     // EX CLASS
     if (empty($line["group_1"]) && empty($line["group_2"]) && $line["field_name"] === CMbString::upper($line["field_name"])) {
         // we assume exclasses are uppercase
         $current_group = null;
         $current_class = new CExClass();
         $class = $line["field_name"];
         $ds = $current_class->_spec->ds;
         $where = array("name" => $ds->prepare("=%", $class));
         $current_class->loadObject($where);
         if (!$current_class->_id) {
             CAppUI::setMsg("Ligne {$line_number} : formulaire non trouvé ({$class})", UI_MSG_WARNING);
         }
         continue;
     }
     // EX CLASS FIELD GROUP
     if (!empty($line["group_1"]) && !empty($current_class->_id)) {
         $current_group = new CExClassFieldGroup();
         $group_name = $line["group_1"];
         $ds = $current_group->_spec->ds;
         $where = array("ex_class_id" => $ds->prepare("=%", $current_class->_id), "name" => $ds->prepare("=%", $group_name));
      $spec = $ex_object->_specs[$field];
    }
  }

  else {
    // A second timpe to get the enum locales
    $spec = @CMbFieldSpecFact::getSpecWithClassName($class, $field, $prop);
  }
}*/
$triggerables_cond = array();
$triggerables_others = array();
if ($context instanceof CExClassField) {
    $context->loadTriggeredData();
    $ex_class = $context->loadRefExClass();
    if (!$ex_class->conditional) {
        $triggerable = new CExClass();
        $group_id = CGroups::loadCurrent()->_id;
        $where = array("group_id" => "= '{$group_id}'");
        $where = array("group_id" => "= '{$group_id}'", "conditional" => "= '1'", $triggerable->_spec->key => "!= '{$ex_class->_id}'");
        // TODO charger les ex_class qui ont un event avec la meme classe que ... quel evenement ???
        $triggerables_cond = $triggerable->loadList($where, "conditional DESC, name");
        $where["conditional"] = "= '0'";
        $triggerables_others = $triggerable->loadList($where, "conditional DESC, name");
    }
    if (!empty($context->concept_id)) {
        if (!empty($context->_ref_concept->_ref_ex_list)) {
            $items_all = array_keys($context->_ref_concept->_ref_ex_list->_ref_items);
        } else {
            $items_all = array_keys($context->_ref_concept->_ref_items);
        }
    }
예제 #14
0
 $current_group = null;
 $line_number = 0;
 while ($current_line = fgetcsv($fp, null, $separator, $enclosure)) {
     $line_number++;
     $current_line = array_map("trim", $current_line);
     $current_line = array_map("reduce_whitespace", $current_line);
     $current_line = array_combine($keys, $current_line);
     foreach ($current_line as $_key => $_value) {
         if (in_array($_key, $multiline) && $_value == "") {
             $current_line[$_key] = $line[$_key];
         }
     }
     $line = $current_line;
     // EX CLASS
     if (empty($line["field_name"]) && empty($line["concept_name"])) {
         $current_class = new CExClass();
         $class = reset($line);
         $ds = $current_class->_spec->ds;
         $where = array("name" => $ds->prepare("=%", $class));
         $current_class->loadObject($where);
         if (!$current_class->_id) {
             $current_class->name = $class;
             $current_class->host_class = "CMbObject";
             $current_class->event = "void";
             $current_class->disabled = 1;
             //$current_class->required = 0;
             $current_class->conditional = stripos($class, "SSQ") !== false ? 1 : 0;
             if ($msg = $current_class->store()) {
                 CAppUI::setMsg("Ligne {$line_number} : {$msg}", UI_MSG_WARNING);
                 continue;
             } else {
예제 #15
0
        $context->loadRefPlageConsult();
        $context->_ref_chir->loadRefFunction();
        break;
    case "CSejour":
        $context->loadRefPraticien()->loadRefFunction();
        break;
    case "COperation":
        $context->loadRefPlageOp();
        $context->loadRefChir()->loadRefFunction();
        break;
    default:
}
// Chargement des formulaires
$group_id = CGroups::loadCurrent()->_id;
$where = array("group_id = '{$group_id}' OR group_id IS NULL");
$ex_class = new CExClass();
CExClass::$_list_cache = $ex_class->loadList($where, "name");
// Loading the events
$ex_classes_creation = array();
$ex_class_events = array();
$_ex_class_creation = array();
foreach (CExClass::$_list_cache as $_ex_class_id => $_ex_class) {
    if (!$_ex_class->conditional) {
        $_ex_class_creation[] = $_ex_class_id;
    }
}
$where = array("ex_class_event.ex_class_id" => CSQLDataSource::get("std")->prepareIn($_ex_class_creation), "ex_class_event.disabled" => "= '0'");
/** @var CExClassEvent[] $ex_class_events_by_ref */
$ex_class_event = new CExClassEvent();
$ex_class_events_by_ref = $ex_class_event->loadList($where);
CStoredObject::massLoadBackRefs($ex_class_events_by_ref, "constraints");