chg: [feeds:edit] Improved saving of edits

Fix #7293
pull/7334/head
mokaddem 2021-04-06 14:29:26 +02:00
parent 108d1a3c76
commit 10efa547f4
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
1 changed files with 11 additions and 10 deletions

View File

@ -303,12 +303,14 @@ class FeedsController extends AppController
public function edit($feedId)
{
$this->Feed->id = $feedId;
if (!$this->Feed->exists()) {
$feed = $this->Feed->find('first', [
'recursive' => -1,
'conditions' => ['id' => $feedId]
]);
if (empty($feed)) {
throw new NotFoundException(__('Invalid feed.'));
}
$this->Feed->read();
$this->set('feed', $this->Feed->data);
$this->set('feed', $feed);
$this->loadModel('Event');
$sgs = $this->Event->SharingGroup->fetchAllAuthorised($this->Auth->user(), 'name', 1);
$distributionLevels = $this->Event->distributionLevels;
@ -325,8 +327,8 @@ class FeedsController extends AppController
'fields' => array('id', 'name'),
'order' => 'LOWER(name)'
)));
if (!empty($this->Feed->data['Feed']['settings'])) {
$this->Feed->data['Feed']['settings'] = json_decode($this->Feed->data['Feed']['settings'], true);
if (!empty($feed['Feed']['settings'])) {
$feed['Feed']['settings'] = json_decode($feed['Feed']['settings'], true);
}
if ($this->request->is('post') || $this->request->is('put')) {
if ($this->_isRest()) {
@ -371,11 +373,10 @@ class FeedsController extends AppController
$this->request->data['Feed']['settings']['delimiter'] = ',';
}
$this->request->data['Feed']['settings'] = json_encode($this->request->data['Feed']['settings']);
$fields = array('id', 'name', 'provider', 'enabled', 'caching_enabled','rules', 'url', 'distribution', 'sharing_group_id', 'tag_id', 'fixed_event', 'event_id', 'publish', 'delta_merge', 'source_format', 'override_ids', 'settings', 'input_source', 'delete_local_file', 'lookup_visible', 'headers', 'orgc_id');
$feed = array();
$fields = array('name', 'provider', 'enabled', 'caching_enabled','rules', 'url', 'distribution', 'sharing_group_id', 'tag_id', 'fixed_event', 'event_id', 'publish', 'delta_merge', 'source_format', 'override_ids', 'settings', 'input_source', 'delete_local_file', 'lookup_visible', 'headers', 'orgc_id');
foreach ($fields as $field) {
if (isset($this->request->data['Feed'][$field])) {
$feed[$field] = $this->request->data['Feed'][$field];
$feed['Feed'][$field] = $this->request->data['Feed'][$field];
}
}
$result = $this->Feed->save($feed);
@ -384,7 +385,7 @@ class FeedsController extends AppController
if (file_exists($feedCache)) {
unlink($feedCache);
}
$message = __('Feed added.');
$message = __('Feed updated.');
if ($this->_isRest()) {
$feed = $this->Feed->find('first', array('conditions' => array('Feed.id' => $this->Feed->id), 'recursive' => -1));
return $this->RestResponse->viewData($feed, $this->response->type());