/** * * make index array by the parent */ private static function makeIndexArray(JForm $form) { self::$arrIndexChildren = array(); self::$arrIndexParent = array(); //make parent index - multiple children by parent. This array will be for js output foreach (self::$arrControls as $control) { $parentName = $control["parent"]; $childName = $control["child"]; //get parent and child fields $parentField = self::getFormField($form, $parentName); $childField = self::getFormField($form, $childName); $parentID = $parentField->id; $childID = $childField->id; $arrControl = array(); $arrControl["ctype"] = $control["ctype"]; $arrControl["value"] = $control["value"]; $arrControl["child"] = $childID; if (empty($parentField)) { UniteFunctionsRev::throwError("control parent field: {$parentName} not exists."); } if (empty($childField)) { UniteFunctionsRev::throwError("control child field: {$childField} not exists."); } //add the control to the array if (!isset(self::$arrIndexParent[$parentID])) { self::$arrIndexParent[$parentID] = array(); } self::$arrIndexParent[$parentID][] = $arrControl; } //make children index (multiple parents by one child) foreach (self::$arrControls as $control) { $child = $control["child"]; if (array_key_exists($child, self::$arrIndexChildren) == true) { self::$arrIndexChildren[$child][] = $control; } else { self::$arrIndexChildren[$child] = array($control); } } }