/** * internal function to get the fields which are in the limits for one where clause in a relationship * @param I2CE_MagicDataNode $whereConfig * @param array $limited_fields array of boolean indexed by the names of the fields */ protected function _getLimitingFields($whereConfig, &$limiting_fields) { if (!$whereConfig instanceof I2CE_MagicDataNode) { I2CE::raiseError("Invalid where clause"); return; } if (!isset($whereConfig->operator)) { return; } if ($whereConfig->operator == 'FIELD_LIMIT') { //see if we have a valid field, if so add it to our list $whereConfig->setIfIsSet($field, 'field'); if ($field && !in_array($field, $limiting_fields)) { $limiting_fields[$field] = true; } } else { if (in_array($whereConfig->operator, self::$operands)) { //go down if (!$whereConfig->is_parent('operand')) { return; } foreach ($whereConfig->operand as $operand => $opConfig) { $this->_getLimitingFields($opConfig, $limiting_fields); } } } //else do nothing }