/** * set list filter string (function is called when user hits filter button) * this function is registered in xajax * @param string $list_title title of list * @param string $filter_str filter string that user has set * @return xajaxResponse every xajax registered function needs to return this object */ function action_set_list_filter($list_title, $filter_str) { global $logging; global $user; global $list_state; global $list_table_configuration; global $user_start_time_array; $logging->info("USER_ACTION " . __METHOD__ . " (user="******", list_title={$list_title}, filter_str={$filter_str})"); # store start time $user_start_time_array[__METHOD__] = microtime(TRUE); # create necessary objects $result = new Result(); $response = new xajaxResponse(); $html_database_table = new HtmlDatabaseTable($list_table_configuration); # check if filter_str is well formed if (str_is_well_formed("filter_str", $filter_str) == FALSE_RETURN_STRING) { set_error_message("filter_form", "below", "ERROR_NOT_WELL_FORMED_STRING", "", "", $response); return $response; } # create list table object $list_table = new ListTable($list_title); if ($list_table->get_is_valid() == FALSE) { $logging->warn("create list object returns false"); $error_message_str = $list_table->get_error_message_str(); $error_log_str = $list_table->get_error_log_str(); $error_str = $list_table->get_error_str(); set_error_message("filter_form", "below", $error_message_str, $error_log_str, $error_str, $response); return $response; } # set filter value $user->get_list_state($list_table->get_table_name()); $list_state->set_filter_str($filter_str); $list_state->set_filter_str_sql(""); $user->set_list_state(); # set content $html_database_table->get_content($list_table, $list_title, "", DATABASETABLE_UNKWOWN_PAGE, $result); $response->custom_response->assign_with_effect(LIST_CSS_NAME_PREFIX . "content_pane", $result->get_result_str()); # check post conditions if (check_postconditions($result, $response) == FALSE) { return $response; } # log total time for this function $logging->info(get_function_time_str(__METHOD__)); return $response; }
/** * check if given definition is correct * @todo remove (obsolete) key indicator from definition (requires an update script) * @param array $definition defintion of current list that is being build * @param $response xajaxResponse response object * @return array returns an empty array when given definition was not correct */ function check_definition($definition, $response) { global $logging; $logging->trace("check definition"); $definition_values = array_values($definition); $definition_keys = array_keys($definition); $new_definition = array(); if (count($definition_values) / 4 < 2) { $logging->warn("list with only one field"); set_error_message($definition_keys[2], "right", "ERROR_NOT_ENOUGH_FIELDS", "", "", $response); return array(); } for ($position = 0; $position < count($definition_values) / 4; $position += 1) { $field_id = $definition_values[$position * 4]; $field_type = $definition_values[$position * 4 + 1]; $field_name = $definition_values[$position * 4 + 2]; $field_options = $definition_values[$position * 4 + 3]; $logging->debug("found field (id=\"" . $field_id . "\" name=" . $field_name . " type=" . $field_type . " options=" . $field_options . ")"); # check if field name has been given if (strlen($field_name) == 0) { $logging->warn("no field name given"); set_error_message($definition_keys[$position * 4 + 2], "right", "ERROR_NO_FIELD_NAME_GIVEN", "", "", $response); return array(); } # check if field name is well formed if (str_is_well_formed("field", $field_name) == FALSE_RETURN_STRING) { set_error_message($definition_keys[$position * 4 + 2], "right", "ERROR_NOT_WELL_FORMED_STRING", "", "", $response); return array(); } # check if field is of type FIELD_TYPE_DEFINITION_SELECTION if ($field_type == FIELD_TYPE_DEFINITION_SELECTION) { # check if options string has been given if (strlen($field_options) == 0) { $logging->warn("no options given"); set_error_message($definition_keys[$position * 4 + 3], "right", "ERROR_NO_FIELD_OPTIONS_GIVEN", "", "", $response); return array(); } # check if options string is well formed if (str_is_well_formed("field", $field_options, 1) == FALSE_RETURN_STRING) { set_error_message($definition_keys[$position * 4 + 3], "right", "ERROR_NOT_WELL_FORMED_SELECTION_STRING", "", "", $response); return array(); } } # copy in field_visible_in_overview $new_field_name = ListTable::_get_db_field_name($field_name); $field_visible_in_overview = COLUMN_SHOW; if ($new_field_name == DB_ID_FIELD_NAME) { $field_visible_in_overview = $field_options; $field_options = ""; } $new_definition[$field_id] = array(ListTable::_get_db_field_name($field_name), $field_type, $field_options, $field_visible_in_overview); } $logging->trace("checked definition"); return $new_definition; }