diff --git a/application/forms/SyncCheckForm.php b/application/forms/SyncCheckForm.php new file mode 100644 index 00000000..1f2550eb --- /dev/null +++ b/application/forms/SyncCheckForm.php @@ -0,0 +1,65 @@ +rule = $rule; + return $this; + } + + public function setup() + { + $this->submitLabel = $this->translate( + 'Check for changes' + ); + } + + public function onSuccess() + { + if ($this->rule->checkForChanges()) { + $this->setSuccessMessage( + $this->translate(('This Sync Rule would apply new changes')) + ); + $html = ''; + $sum = array('create' => 0, 'modify' => 0, 'delete' => 0); + + // TODO: Preview them? Like "hosta, hostb and 4 more would be... + foreach ($this->rule->getExpectedModifications() as $object) { + if ($object->shouldBeRemoved()) { + $sum['delete']++; + } elseif (! $object->hasBeenLoadedFromDb()) { + $sum['create']++; + } elseif ($object->hasBeenModified()) { + $sum['modify']++; + } + } + + /** + if ($sum['modify'] === 1) { + $html .= $this->translate('One object would be modified' + } elseif ($sum['modify'] > 1) { + } + */ + $html = '
' . print_r($sum, 1) . ''; + + $this->addHtml($html); + } elseif ($this->rule->sync_state === 'in-sync') { + $this->setSuccessMessage( + $this->translate('Nothing would change, this rule is still in sync') + ); + parent::onSuccess(); + } else { + $this->addError($this->translate('Checking this sync rule failed')); + } + + } +} diff --git a/application/forms/SyncRunForm.php b/application/forms/SyncRunForm.php new file mode 100644 index 00000000..9c308304 --- /dev/null +++ b/application/forms/SyncRunForm.php @@ -0,0 +1,46 @@ +rule = $rule; + return $this; + } + + public function setup() + { + $this->submitLabel = $this->translate( + 'Trigger this Sync' + ); + } + + public function onSuccess() + { + $rule = $this->rule; + $changed = $rule->applyChanges(); + + if ($changed) { + $runId = $rule->getCurrentSyncRunId(); + $this->setSuccessMessage( + $this->translate(('Source has successfully been synchronized')) + ); + } elseif ($rule->sync_state === 'in-sync') { + $this->setSuccessMessage( + $this->translate('Nothing changed, rule is in sync') + ); + } else { + $this->addError($this->translate('Synchronization failed')); + } + + parent::onSuccess(); + } +}