From e1a6add7c94d642d9098e747f454e9f6f275e734 Mon Sep 17 00:00:00 2001
From: Paul Nicholls <paul.nicholls@canterbury.ac.nz>
Date: Tue, 17 Aug 2010 14:48:43 +1200
Subject: [PATCH 1/1] MDL-23830 - Regression: addGroupRule no longer works on grouped checkboxes

---
 lib/pear/HTML/QuickForm.php |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/lib/pear/HTML/QuickForm.php b/lib/pear/HTML/QuickForm.php
index 976802a..776a9d9 100644
--- a/lib/pear/HTML/QuickForm.php
+++ b/lib/pear/HTML/QuickForm.php
@@ -1502,17 +1502,31 @@ class HTML_QuickForm extends HTML_Common {
                         $values[] = $this->getSubmitValue($elName);
                     }
                     $result = $registry->validate($rule['type'], $values, $rule['format'], true);
-                } else if ($rule['type'] === 'required' and $this->getElement($target)->_type === 'editor') {
-                    //horrible horrible hack
-                    if (!isset($submitValue['text']) or $submitValue['text'] === '') {
-                        $result = false;
+                } else {
+                    if (isset($rule['group'])) {
+                        $groupelements = $this->getElement($rule['group'])->getElements();
+                        $targetelement = false;
+                        foreach($groupelements as $groupelement) {
+                            if($groupelement->getName() === $target) {
+                                $targetelement = $groupelement;
+                                break;
+                            }
+                        }
                     } else {
-                        $result = true;
+                        $targetelement = $this->getElement($target);
+                    }
+                    if ($rule['type'] === 'required' && $targetelement->_type === 'editor') {
+                        //horrible horrible hack
+                        if (!isset($submitValue['text']) or $submitValue['text'] === '') {
+                            $result = false;
+                        } else {
+                            $result = true;
+                        }
+                    } elseif (is_array($submitValue) && !isset($rule['howmany'])) {
+                        $result = $registry->validate($rule['type'], $submitValue, $rule['format'], true);
+                    } else {
+                        $result = $registry->validate($rule['type'], $submitValue, $rule['format'], false);
                     }
-                } elseif (is_array($submitValue) && !isset($rule['howmany'])) {
-                    $result = $registry->validate($rule['type'], $submitValue, $rule['format'], true);
-                } else {
-                    $result = $registry->validate($rule['type'], $submitValue, $rule['format'], false);
                 }
 
                 if (!$result || (!empty($rule['howmany']) && $rule['howmany'] > (int)$result)) {
-- 
1.7.0.2.msysgit.0

