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;
 }
Beispiel #3
0
 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);
 }