diff --git a/include/ajax.forms.php b/include/ajax.forms.php index 169290c945bac96986ef2ef222710691256851b5..fcdc4fbc57b734cb89c955df36cb41dd238fe156 100644 --- a/include/ajax.forms.php +++ b/include/ajax.forms.php @@ -25,6 +25,8 @@ class DynamicFormsAjaxAPI extends AjaxController { } foreach ($topic->getForms() as $form) { + if (!$form->hasAnyVisibleFields()) + continue; ob_start(); $form->getForm($_SESSION[':form-data'])->render(!$client); $html .= ob_get_clean(); diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index 11bb3894c4b5d816c4587f57afaf7d0b38b2b56b..015c2a42ed461518d9760c876c005ef4190ae469 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -125,6 +125,23 @@ class DynamicForm extends VerySimpleModel { } } + function hasAnyVisibleFields($user=false) { + global $thisstaff, $thisclient; + $user = $user ?: $thisstaff ?: $thisclient; + $visible = 0; + $isstaff = $user instanceof Staff; + foreach ($this->getFields() as $F) { + if ($isstaff) { + if ($F->isVisibleToStaff()) + $visible++; + } + elseif ($F->isVisibleToUsers()) { + $visible++; + } + } + return $visible > 0; + } + function instanciate($sort=1) { return DynamicFormEntry::create(array( 'form_id'=>$this->get('id'), 'sort'=>$sort)); diff --git a/include/client/open.inc.php b/include/client/open.inc.php index e29f2b651be929de68e8d50f759e7bef41c28c33..e04c9f6eefcb4e165aa9918e602503281f5c3fcd 100644 --- a/include/client/open.inc.php +++ b/include/client/open.inc.php @@ -82,14 +82,7 @@ if ($info['topicId'] && ($topic=Topic::lookup($info['topicId']))) { </tbody> <tbody id="dynamic-form"> <?php foreach ($forms as $form) { - $hasFields = false; - foreach ($form->getFields() as $f) { - if ($f->isVisibleToUsers()) { - $hasFields = true; - break; - } - } - if (!$hasFields) + if (!$form->hasAnyVisibleFields()) continue; include(CLIENTINC_DIR . 'templates/dynamic-form.tmpl.php'); } ?> diff --git a/include/staff/ticket-open.inc.php b/include/staff/ticket-open.inc.php index e9edb4643ade0c9aa8dbf48f3b3c498c641a4ddc..9591f1794afe9ba08f62db40f9fafb073fb88954 100644 --- a/include/staff/ticket-open.inc.php +++ b/include/staff/ticket-open.inc.php @@ -263,14 +263,7 @@ if ($_POST) <tbody id="dynamic-form"> <?php foreach ($forms as $form) { - $hasFields = false; - foreach ($form->getFields() as $f) { - if ($f->isVisibleToStaff()) { - $hasFields = true; - break; - } - } - if (!$hasFields) + if (!$form->hasAnyVisibleFields()) continue; print $form->getForm()->getMedia(); include(STAFFINC_DIR . 'templates/dynamic-form.tmpl.php');