You are here

function _cmis_sync_cmis_to_drupal_handle_deletes in CMIS API 6.2

Deletes Drupal nodes referencing to CMIS deleted objects.

Parameters

$repository:

$sync_map_type:

1 call to _cmis_sync_cmis_to_drupal_handle_deletes()
cmis_sync_cron in cmis_sync/cmis_sync.module
Implementation of hook_cron

File

cmis_sync/cmis_sync.module, line 361

Code

function _cmis_sync_cmis_to_drupal_handle_deletes($repository, $sync_map_type, $node_type) {

  // Get node list
  $sync_nodes = array();
  $sync_nodes_query = db_query('SELECT nid, cmis_objectId FROM {cmis_sync_node}');
  while ($sync_node = db_fetch_object($sync_nodes_query)) {
    if (node_load($sync_node->nid)->type == $node_type) {
      $sync_nodes[$sync_node->cmis_objectId] = $sync_node->nid;
    }
  }
  if (count($sync_nodes)) {

    // Identify existing CMIS objects
    $cmis_objects = cmisapi_query($repository, sprintf('SELECT ObjectId FROM %s WHERE ObjectId IN (\'%s\')', $sync_map_type['cmis_type'], join('\',\'', array_keys($sync_nodes))));
    foreach ($cmis_objects as $cmis_object) {
      if (array_key_exists($cmis_object->id, $sync_nodes)) {
        unset($sync_nodes[$cmis_object->id]);
      }
    }

    // Delete CMIS - Drupal reference
    db_query('DELETE FROM {cmis_sync_node} WHERE nid IN (\'%s\')', join('\',\'', array_values($sync_nodes)));

    // Delete Drupal nodes
    foreach ($sync_nodes as $cmis_objectId => $drupal_nid) {
      node_delete($drupal_nid);
    }
  }
}