From 32ec5f7602976566d43721db7f03f49e0dc68735 Mon Sep 17 00:00:00 2001 From: Edward Date: Wed, 3 Apr 2019 14:51:27 +0800 Subject: [PATCH] Fix #5837 - Errors on import --- DataObjects/Core_person.php | 4 +-- DataObjects/Core_person_settings.php | 49 +++++++++++++++++++++++++--- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/DataObjects/Core_person.php b/DataObjects/Core_person.php index b72ecbe0..a11f1bd5 100644 --- a/DataObjects/Core_person.php +++ b/DataObjects/Core_person.php @@ -702,9 +702,7 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject 'person_id' => $this->id )); - foreach ($core_person_settings->fetchAll() as $k => $v) { - $aur['core_person_settings'][$v->scope] = $v->toArray(); - } + $aur['core_person_settings'] = $core_person_settings->fetchAll('scope', 'data'); return $aur; } diff --git a/DataObjects/Core_person_settings.php b/DataObjects/Core_person_settings.php index 0dd1ac7e..be3035e4 100644 --- a/DataObjects/Core_person_settings.php +++ b/DataObjects/Core_person_settings.php @@ -20,23 +20,62 @@ class Pman_Core_DataObjects_Core_person_settings extends DB_DataObject function beforeInsert($q, $roo) { - if( - !$roo->authUser || - (!empty($this->person_id) && $this->person_id != $roo->authUser->id) - ) { + if(!$this->hasPermission($roo)) { $roo->jerr('Access Dennied'); } + $o = $this->isExist(); + + if(!empty($o)) { + $oo = clone ($o); + $o->setFrom(array( + 'data' => $this->data + )); + $o->update($oo); + $roo->jok('OK'); + } + } function beforeUpdate($old, $q, $roo) + { + if(!$this->hasPermission($roo)) { + $roo->jerr('Access Dennied'); + } + } + + function beforeDelete($dependants_array, $roo) + { + if(!$this->hasPermission($roo)) { + $roo->jerr('Access Dennied'); + } + } + + function hasPermission($roo) { if( !$roo->authUser || (!empty($this->person_id) && $this->person_id != $roo->authUser->id) ) { - $roo->jerr('Access Dennied'); + return false; + } + + return true; + } + + function isExist() + { + $core_person_settings = DB_DataObject::factory('core_person_settings'); + $core_person_settings->setFrom(array( + 'scope' => $this->scope, + 'person_id' => $this->person_id + )); + + if($core_person_settings->find(true)) { + return $core_person_settings; } + + return false; } } -- 2.39.2