From d539cc8ca6cf4720e1562d5db51fd56ceae734ae Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 13 Aug 2014 17:15:50 -0500
Subject: [PATCH] search: Fix double creation of dynamic data

---
 include/class.organization.php | 6 +++---
 include/class.search.php       | 4 ++--
 include/class.user.php         | 6 +++---
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/class.organization.php b/include/class.organization.php
index 617c48031..ae6f88784 100644
--- a/include/class.organization.php
+++ b/include/class.organization.php
@@ -116,17 +116,17 @@ class Organization extends OrganizationModel {
         return $of;
     }
 
-    function getDynamicData() {
+    function getDynamicData($create=true) {
         if (!isset($this->_entries)) {
             $this->_entries = DynamicFormEntry::forOrganization($this->id)->all();
-            if (!$this->_entries) {
+            if (!$this->_entries && $create) {
                 $g = OrganizationForm::getInstance($this->id, true);
                 $g->save();
                 $this->_entries[] = $g;
             }
         }
 
-        return $this->_entries;
+        return $this->_entries ?: array();
     }
 
     function getForms($data=null) {
diff --git a/include/class.search.php b/include/class.search.php
index 86957a764..e34d03224 100644
--- a/include/class.search.php
+++ b/include/class.search.php
@@ -126,7 +126,7 @@ class SearchInterface {
 
         case $model instanceof User:
             $cdata = array();
-            foreach ($model->getDynamicData() as $e)
+            foreach ($model->getDynamicData($false) as $e)
                 foreach ($e->getAnswers() as $tag=>$a)
                     if ($tag != 'subject' && ($v = $a->getSearchable()))
                         $cdata[] = $v;
@@ -144,7 +144,7 @@ class SearchInterface {
 
         case $model instanceof Organization:
             $cdata = array();
-            foreach ($model->getDynamicData() as $e)
+            foreach ($model->getDynamicData(false) as $e)
                 foreach ($e->getAnswers() as $a)
                     if ($v = $a->getSearchable())
                         $cdata[] = $v;
diff --git a/include/class.user.php b/include/class.user.php
index 0ec1179fa..18209bae0 100644
--- a/include/class.user.php
+++ b/include/class.user.php
@@ -287,10 +287,10 @@ class User extends UserModel {
         return $uf;
     }
 
-    function getDynamicData() {
+    function getDynamicData($create=true) {
         if (!isset($this->_entries)) {
             $this->_entries = DynamicFormEntry::forClient($this->id)->all();
-            if (!$this->_entries) {
+            if (!$this->_entries && $create) {
                 $g = UserForm::getNewInstance();
                 $g->setClientId($this->id);
                 $g->save();
@@ -298,7 +298,7 @@ class User extends UserModel {
             }
         }
 
-        return $this->_entries;
+        return $this->_entries ?: array();
     }
 
     function getFilterData() {
-- 
GitLab