Exemplo n.º 1
0
 */
CCanDo::checkAdmin();
$ds = CSQLDataSource::get("std");
$mode = CValue::get("mode", "check");
$request = "SELECT DISTINCT(d.object_id), d.object_class\r\n            FROM `dossier_medical` d\r\n            WHERE d.`object_id` <> '0'\r\n            AND EXISTS (\r\n              SELECT * FROM `dossier_medical` e\r\n              WHERE e.`object_class` = d.`object_class`\r\n              AND e.`object_id` = d.`object_id`\r\n              AND e.`dossier_medical_id` <> d.`dossier_medical_id`\r\n            );";
$resultats = $ds->loadList($request);
CAppUI::stepAjax("Dossiers à corriger: " . count($resultats), UI_MSG_OK);
if ($mode == "repair") {
    $correction = 0;
    foreach ($resultats as $result) {
        //Dossier de références
        $where = array();
        $where["object_class"] = "= '" . $result['object_class'] . "'";
        $where["object_id"] = "= '" . $result['object_id'] . "'";
        $dossier_ok = new CDossierMedical();
        $dossier_ok->loadObject($where, "dossier_medical_id ASC");
        $dossier_ok->loadRefsAntecedents();
        $dossier_ok->loadRefsEtatsDents();
        $dossier_ok->loadRefsTraitements();
        //Chargement des autres dossiers
        $_dossier = new CDossierMedical();
        $where["dossier_medical_id"] = "!= '" . $dossier_ok->_id . "'";
        $dossiers = $_dossier->loadList($where);
        //Merge des dossiers
        foreach ($dossiers as $dossier) {
            /* @var CDossierMedical $dossier*/
            if ($msg = $dossier_ok->merge(array($dossier))) {
                mbTrace($msg);
            } else {
                $correction++;
            }