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