/** * Get all exporter items items for this exporter * @param array $pa_options available options are: * onlyTopLevel * includeSettingsForm * id_prefix * orderForDeleteCascade * dontIncludeVariables * @return array array of items, keyed by their primary key */ public function getItems($pa_options = array()) { if (!($vn_exporter_id = $this->getPrimaryKey())) { return null; } $vb_include_settings_form = isset($pa_options['includeSettingsForm']) ? (bool) $pa_options['includeSettingsForm'] : false; $vb_only_top_level = isset($pa_options['onlyTopLevel']) ? (bool) $pa_options['onlyTopLevel'] : false; $vb_order_for_delete_cascade = isset($pa_options['orderForDeleteCascade']) ? (bool) $pa_options['orderForDeleteCascade'] : false; $vb_dont_include_vars = caGetOption('dontIncludeVariables', $pa_options); $vs_id_prefix = isset($pa_options['id_prefix']) ? $pa_options['id_prefix'] : ''; $vo_db = $this->getDb(); $va_conditions = array(); if ($vb_only_top_level) { $va_conditions[] = "AND parent_id IS NULL"; } if ($vb_dont_include_vars) { $va_conditions[] = "AND element not like \"_VARIABLE_:%\""; } if ($vb_order_for_delete_cascade) { $vs_order = "parent_id DESC"; } else { $vs_order = "rank ASC"; } $qr_items = $vo_db->query("\n\t\t\tSELECT * FROM ca_data_exporter_items\n\t\t\tWHERE exporter_id = ?\n\t\t\t" . join(" ", $va_conditions) . "\n\t\t\tORDER BY " . $vs_order . "\n\t\t", $vn_exporter_id); $va_items = array(); while ($qr_items->nextRow()) { $va_items[$vn_item_id = $qr_items->get('item_id')] = $qr_items->getRow(); if ($vb_include_settings_form) { $t_item = new ca_data_exporter_items($vn_item_id); $va_items[$vn_item_id]['settings'] = $t_item->getHTMLSettingForm(array('settings' => $t_item->getSettings(), 'id' => "{$vs_id_prefix}_setting_{$vn_item_id}")); } } return $va_items; }