function processDeletions() { // debug($this->options); $ids = $this->LocalModel->migrationDeletedIds($this->Process->targetInstance); if (!empty($ids)) { if (!empty($this->options['instance']['execeptions']) || !empty($this->options['execeptions']) && $this->options['mode'] != 'exclude') { if ($this->options['mode'] == 'exclude') { $ids = array_diff($ids, $this->options['instance']['execeptions']); } else { $ids = array_intersect($ids, $this->options['instance']['execeptions']); } } if (!empty($ids)) { $remoteModel = Migration::getRemoteModel($this->LocalModel, $this->Process->targetInstance); $dry = MigrationConfig::load('dryRun'); if ($dry) { $this->msg('Delete attempt on ' . $remoteModel->alias . ' for Ids : ' . implode(', ', $ids)); } else { if ($remoteModel->deleteAll(array($remoteModel->alias . '.' . $remoteModel->primaryKey => $ids))) { $this->msg(str_replace('%nb%', count($ids), __('%nb% entries deleted on the remote server', true))); $this->MigrationRemote->deleteAll(array('model' => $this->LocalModel->getFullName(), 'remote_id' => $ids)); } } } } }
function getRemoteId($Model, $localEntry, $targetInstance) { $MR = $this->MigrationRemote; $fullName = $this->getFullName($Model); $settings = $this->settings[$Model->alias]; if (is_numeric($localEntry)) { $local_id = $localEntry; } else { $local_id = $localEntry[$Model->alias][$Model->primaryKey]; } $remoteNode = $MR->find('first', array('conditions' => array($MR->alias . '.model' => $fullName, $MR->alias . '.instance' => $targetInstance, $MR->alias . '.local_id' => $local_id))); if ($remoteNode) { return $remoteNode[$MR->alias]['remote_id']; } if (!empty($settings['mapFields'])) { $remoteModel = Migration::getRemoteModel($Model, $targetInstance); $MapFieldsConds = $this->_remoteEntryMapFieldsConds($Model, $localEntry, $remoteModel); if ($MapFieldsConds) { $remote = $remoteModel->find('first', array('fields' => array($remoteModel->primaryKey), 'conditions' => $MapFieldsConds, 'recursive' => -1)); return $remote[$remoteModel->alias][$remoteModel->primaryKey]; } } $lastSync = $this->getLastSync($Model, $targetInstance); if (!empty($lastSync)) { if (is_numeric($localEntry)) { $localEntry = $Model->find('first', array('conditions' => array($Model->alias . '.' . $Model->primaryKey => $localEntry))); } if (strtotime($localEntry[$Model->alias]['modified']) <= $lastSync) { return $local_id; } } return null; }
function getEntriesStates($Model, $entries, $instance = null) { $ids = array(); if (empty($instance)) { $alias = $Model->alias; } else { $remoteModel = Migration::getRemoteModel($Model, $instance); $alias = $remoteModel->alias; } foreach ($entries as $entry) { $ids[] = $entry[$alias][$Model->primaryKey]; } return $this->getIdsStates($Model->alias, $ids); }
function getRemoteModel() { if (isset($this->_remoteModel)) { return $this->_remoteModel; } return $this->_remoteModel = Migration::getRemoteModel($this->LocalModel, $this->targetInstance); }
function admin_deleted($instance, $modelName, $id) { App::import('Lib', 'Migration.Migration'); $Model = Migration::getLocalModel($modelName); $remoteModel = Migration::getRemoteModel($Model, $instance); $remote = $remoteModel->read(null, $id); $this->set('modelUrlAlias', $Model->getUrlName()); $this->set('modelAlias', $remoteModel->alias); $this->set('remote', $remote); }