From c1c06dcfaed59fe4e0023a6952578b043f200d98 Mon Sep 17 00:00:00 2001 From: efalcy <efalcy@afi-sa.fr> Date: Tue, 16 Feb 2016 11:55:05 +0100 Subject: [PATCH] custom field multivalues : find matching in php, not in db --- library/Class/Article.php | 18 +++++++++++------- library/Class/CustomField/ModelValues.php | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/library/Class/Article.php b/library/Class/Article.php index 7edd67e92e7..274ed92286d 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -381,19 +381,16 @@ class ArticleLoader extends Storm_Model_Loader { $cfs = []; foreach($custom_fields as $id => $value) { - $cfs[Class_CustomField::find($id)->getLabel()] = $value; + if (!$cf=Class_CustomField::find($id)) + continue; + $cfs[$cf->getLabel()] = $value; } - Class_CustomField::find($id)->isAValueMatch($value, $article); - - - (new Class_CustomField_ModelValues($article, Class_CustomField::find($id)))->isOneMatching($value) - return array_filter($articles, function ($article) use ($cfs) { foreach($cfs as $name => $value) { - if (!$article->findCustomFieldValueMatching($value)) + if (!$article->findCustomFieldValueMatching($name,$value)) return false; } return true; @@ -586,6 +583,13 @@ class Class_Article extends Storm_Model_Abstract { 'referenced_in' => 'id_notice'])); } + public function findCustomFieldValueMatching($name,$match) { + $value = $this->getCustomField($name); + if (is_array($value)) + return in_array($match, $value); + return ($value === $match); + } + /** * Ne retourne que les traductions des articles donnés diff --git a/library/Class/CustomField/ModelValues.php b/library/Class/CustomField/ModelValues.php index 27b100b3050..d748dff209c 100644 --- a/library/Class/CustomField/ModelValues.php +++ b/library/Class/CustomField/ModelValues.php @@ -78,6 +78,8 @@ class Class_CustomField_ModelValues { public function getFieldValueByName($name) { + if (!$this->_model) + return null; return ($id = $this->_model->getFieldIdByName($name)) ? $this->getFieldValue($id) : null; -- GitLab