array())); } // Checks whether the sqls array is initialized function isSqlsInitialized () { return ((isset($GLOBALS['sqls'])) && (is_array($GLOBALS['sqls']))); } // Setter for SQLs array function setSqlsArray ($SQLs) { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'count()='.count($SQLs)); $GLOBALS['sqls'] = (array) $SQLs; } // Remover for SQLs array function unsetSqls () { unset($GLOBALS['sqls']); } // Getter for SQLs array function getSqls () { return $GLOBALS['sqls']; } // Add an SQL to the list function addSql ($sql) { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("sql=%s, count=%d", $sql, countSqls())); array_push($GLOBALS['sqls']['generic'], $sql); } // Merge SQLs together function mergeSqls ($SQLs, $type = '') { // Should we merge full array or partial? if (empty($type)) { // Merge full array (may kill entries) setSqlsArray(merge_array(getSqls(), $SQLs)); } else { // Merge sub array, so get it $array = getSqls(); // Is the sub array there? if (isset($array[$type])) { // Then get it and merge it with the new one $array[$type] = merge_array($array[$type], $SQLs); } else { // Use new array $array[$type] = $SQLs; } // Call again.. mergeSqls($array); } } // Counter for SQLs array function countSqls () { // Default is false $count = '0'; // Is the array there? if (isSqlsInitialized()) { // Then count it $count = count($GLOBALS['sqls']); //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, sprintf("count=%d", $count)); } // END - if // Return it return $count; } // Checks whether the SQLs array is filled function isSqlsValid () { //* DEBUG: */ debugOutput(__FUNCTION__ . ':' . intval(isSqlsInitialized()) . '/' . countSqls() . '/' . getCurrentExtensionName()); return ( ( isSqlsInitialized() ) && ( countSqls() > 0 ) ); } // Generates an updating SQL query from given array function getUpdateSqlFromArray ($array, $tableName, $whereColumn, $whereData, $excludedFields, $multiDimId = NULL) { // Begin SQL query $SQL = 'UPDATE `{?_MYSQL_PREFIX?}_' . $tableName . '` SET '; // Insert all data foreach ($array as $entry => $value) { // Skip login/id entry if (in_array($entry, $excludedFields)) { continue; } // END - if // Is there a non-string (e.g. number, NULL, SQL function or back-tick at the beginning? if (is_null($multiDimId)) { // Handle one-dimensional data if (is_null($value)) { // NULL detected $SQL .= '`' . $entry . '`=NULL,'; } elseif ((substr($value, -2, 2) == '()') || (substr($value, 0, 1) == '`')) { // SQL function needs no ticks (') $SQL .= '`' . $entry . '`=' . SQL_ESCAPE($value) . ','; } elseif ('' . bigintval($value, true, false) . '' == '' . $value . '') { // No need for ticks (') $SQL .= '`' . $entry . '`=' . $value . ','; } else { // Strings need ticks (') around them $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value) . "',"; } } else { // Handle multi-dimensional data if (is_null($value[$multiDimId])) { // NULL detected $SQL .= '`' . $entry . '`=NULL,'; } elseif ((substr($value[$multiDimId], -2, 2) == '()') || (substr($value[$multiDimId], 0, 1) == '`')) { // SQL function needs no ticks (') $SQL .= '`' . $entry . '`=' . SQL_ESCAPE($value[$multiDimId]) . ','; } elseif (('' . bigintval($value[$multiDimId], true, false) . '' == '' . $value[$multiDimId] . '')) { // No need for ticks (') $SQL .= '`' . $entry . '`=' . $value[$multiDimId] . ','; } else { // Strings need ticks (') around them $SQL .= '`' . $entry . "`='" . SQL_ESCAPE($value[$multiDimId]) . "',"; } } } // END - foreach // Remove last 2 chars and finish query $SQL = substr($SQL, 0, -1) . ' WHERE `' . $whereColumn . '`=' . $whereData . ' LIMIT 1'; // Return SQL query return $SQL; } // "Getter" for an "INSERT INTO" SQL query function getInsertSqlFromArray ($array, $tableName) { // Init SQL $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName . '` ( `' . implode('`,`', array_keys(postRequestArray())) . '` ) VALUES ('; // Walk through all entries foreach (postRequestArray() as $key => $value) { // Log debug message //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'tableName=' . $tableName . ',key=' . $key . ',value=' . $value); // Add all entries if (is_null($value)) { // Add NULL $SQL .= 'NULL,'; } elseif (substr($value, -2, 2) == '()') { // SQL function needs no ticks (') $SQL .= SQL_ESCAPE($value) . ','; } elseif ('' . bigintval($value, true, false) . '' == '' . $value . '') { // Number detected, no need for ticks (') $SQL .= bigintval($value) . ','; } elseif ('' . (float) $value . '' == '' . $value . '') { // Float number detected $SQL .= sprintf('%01.5f', $value); } else { // Everything else might be a string, so add ticks around it $SQL .= chr(39) . SQL_ESCAPE($value) . chr(39) . ','; } } // END - foreach // Finish SQL query $SQL = substr($SQL, 0, -1) . ')'; // Return SQL query return $SQL; } // [EOF] ?>