diff --git a/library/Class/Article.php b/library/Class/Article.php index 7edd67e92e78d658c0cdb2eb1338e0eb94e13ed2..274ed92286dcf11843ecaeca9adb807b4a5da2f6 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 27b100b3050b80d71f9ae152a7a8fccb0083502c..d748dff209c58625a47cdb419bf46984dcc4066c 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;