diff --git a/CRM/Dataprocessor/Utils/Importer.php b/CRM/Dataprocessor/Utils/Importer.php index 99a06d0db49443c4a6ad2d6058b8c68520d264db..87d8b6eae80e53ab057f6f5407cc9b848f821d04 100644 --- a/CRM/Dataprocessor/Utils/Importer.php +++ b/CRM/Dataprocessor/Utils/Importer.php @@ -221,11 +221,27 @@ class CRM_Dataprocessor_Utils_Importer { } // Remove all data processors which are in code or overridden but not imported - $dao = CRM_Core_DAO::executeQuery("SELECT id, name FROM civicrm_data_processor WHERE id NOT IN (".implode($importedIds, ",").") AND status IN (".CRM_Dataprocessor_Status::STATUS_IN_CODE.", ".CRM_Dataprocessor_Status::STATUS_OVERRIDDEN.") AND source_file IS NOT NULL"); + $removeSql = " + SELECT id, name, status + FROM civicrm_data_processor + WHERE status IN (".CRM_Dataprocessor_Status::STATUS_IN_CODE.", ".CRM_Dataprocessor_Status::STATUS_OVERRIDDEN.") + AND source_file IS NOT NULL"; + if (count($importedIds)) { + $removeSql .= " AND id NOT IN (".implode($importedIds, ",").")"; + } + if ($extension) { + $removeSql .= " AND source_file LIKE '".CRM_Utils_Type::escape($extension, 'String')."/data-processors/%'"; + } + $dao = CRM_Core_DAO::executeQuery($removeSql); while ($dao->fetch()) { try { - civicrm_api3('DataProcessor', 'delete', ['id' => $dao->id]); - $return['deleted data processors'][] = $dao->id.": ".$dao->name; + if ($dao->status == CRM_Dataprocessor_Status::STATUS_OVERRIDDEN) { + civicrm_api3('DataProcessor', 'create', array('id' => $dao->id, 'status' => CRM_Dataprocessor_Status::STATUS_IN_DATABASE, 'source_file' => 'null')); + $return['kept data processors'][] = $dao->id.": ".$dao->name; + } else { + civicrm_api3('DataProcessor', 'delete', ['id' => $dao->id]); + $return['deleted data processors'][] = $dao->id . ": " . $dao->name; + } } catch (\Exception $e) { $return['deleted data processors'][] = 'Error: '. $dao->id.": ".$dao->name; } diff --git a/info.xml b/info.xml index f264cb5f1f179a103ab29bcfe864b6f13316f2cd..42c04fccf04ebda21512ad622631be241aa320bd 100644 --- a/info.xml +++ b/info.xml @@ -11,7 +11,7 @@ </maintainer> <urls> <url desc="Main Extension Page">https://lab.civicrm.org/extensions/dataprocessor</url> - <url desc="Documentation">https://lab.civicrm.org/extensions/dataprocessor/README.md</url> + <url desc="Documentation">https://lab.civicrm.org/extensions/dataprocessor/blob/master/README.md</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2019-07-15</releaseDate>