-function adminListBuilder ($listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId = array('userid')) {
- // $tableName and $idColumn must bove be arrays!
- if ((!is_array($tableName)) || (count($tableName) != 1)) {
- // $tableName is no array
- reportBug(__FUNCTION__, __LINE__, 'tableName[]=' . gettype($tableName) . '!=array: userIdColumn=' . $userIdColumn);
- } elseif (!is_array($idColumn)) {
- // $idColumn is no array
- reportBug(__FUNCTION__, __LINE__, 'idColumn[]=' . gettype($idColumn) . '!=array: userIdColumn=' . $userIdColumn);
- } elseif ((!is_array($userIdColumn)) || (count($userIdColumn) != 1)) {
- // $tableName is no array
- reportBug(__FUNCTION__, __LINE__, 'userIdColumn[]=' . gettype($userIdColumn) . '!=array: userIdColumn=' . $userIdColumn);
- }
-
- // Init row output
- $OUT = '';
-
- // "Walk" through all entries
- //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'listType=<pre>'.print_r($listType,true).'</pre>,tableName<pre>'.print_r($tableName,true).'</pre>,columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,idColumn=<pre>'.print_r($idColumn,true).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,true).'</pre>,rawUserId=<pre>'.print_r($rawUserId,true).'</pre>');
- foreach (postRequestElement($idColumn[0]) as $id => $selected) {
- // Secure id number
- $id = bigintval($id);
-
- // Get result from a given column array and table name
- $result = SQL_RESULT_FROM_ARRAY($tableName[0], $columns, $idColumn[0], $id, __FUNCTION__, __LINE__);
-
- // Is there one entry?
- if (SQL_NUMROWS($result) == 1) {
- // Load all data
- $content = SQL_FETCHARRAY($result);
-
- // Filter all data
- foreach ($content as $key => $value) {
- // Search index
- $idx = searchXmlArray($key, $columns, 'column');
-
- // Skip any missing entries
- if ($idx === false) {
- // Skip this one
- //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ' - SKIPPED!');
- continue;
- } // END - if
-
- // Is there a userid?
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
- if ($key == $userIdColumn[0]) {
- // Add it again as raw id
- //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
- $content[$userIdColumn[0]] = convertZeroToNull($value);
- $content[$userIdColumn[0] . '_raw'] = $content[$userIdColumn[0]];
- } // END - if
-
- // If the key matches the idColumn variable, we need to temporary remember it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn=' . $idColumn[0] . ',value=' . $value);
- if ($key == $idColumn[0]) {
- /*
- * Found, so remember it securely (to make sure only id
- * numbers can pass, don't use alpha-numerical values!)
- */
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' - set as admin_list_builder_id_value!');
- $GLOBALS['admin_list_builder_id_value'] = bigintval($value);
- } // END - if
-
- // Is there a call-back function and extra-value pair?
- if ((isset($filterFunctions[$idx])) && (isset($extraValues[$idx]))) {
- // Handle the call in external function
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$idx] . ',value=' . $value);
- $content[$key] = handleExtraValues(
- $filterFunctions[$idx],
- $value,
- $extraValues[$idx]
- );
- } elseif ((isset($columns[$idx]['name'])) && (isset($filterFunctions[$columns[$idx]['name']])) && (isset($extraValues[$columns[$idx]['name']]))) {
- // Handle the call in external function
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$columns[$idx]['name']] . ',value=' . $value);
- $content[$key] = handleExtraValues(
- $filterFunctions[$columns[$idx]['name']],
- $value,
- $extraValues[$columns[$idx]['name']]
- );
- }
- } // END - foreach
-
- // Then list it
- $OUT .= loadTemplate(sprintf("admin_%s_%s_row",
- $listType,
- $tableName[0]
- ), true, $content
- );
- } // END - if
-
- // Free the result
- SQL_FREERESULT($result);
- } // END - foreach
-
- // Load master template
- loadTemplate(sprintf("admin_%s_%s",
- $listType,
- $tableName[0]
- ), false, $OUT
- );