$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++; } } }