Extension ext-user for sub id tracking continued:
[mailer.git] / inc / mysql-manager.php
index 4b02a5fa0d2bfbb5ac55d95560e14be6fb6054e1..bc4a920140c6d047b11ca2785128ddf30a0a7447 100644 (file)
@@ -2011,10 +2011,30 @@ function doGenericAddEntries ($tableName, $columns = array(), $filterFunctions =
        // If all values are okay, continue
        if ($sqlValues[$key] !== false) {
                // Build the SQL query
-               $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`,`', $sqlColumns) . "`) VALUES (" . implode(',', $sqlValues) . ')';
+               $sql = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`,`', $sqlColumns) . "`) VALUES (" . implode(',', $sqlValues) . ')';
 
                // Run the SQL query
-               SQL_QUERY($SQL, __FUNCTION__, __LINE__);
+               SQL_QUERY($sql, __FUNCTION__, __LINE__);
+
+               // Add id
+               setPostRequestElement('id', SQL_INSERTID());
+
+               // Prepare filter data array
+               $filterData = array(
+                       'mode'          => 'add',
+                       'table_name'    => $tableName,
+                       'content'       => postRequestArray(),
+                       'id'            => SQL_INSERTID(),
+                       'subject'       => '',
+                       // @TODO Used generic 'userid' here
+                       'userid_column' => array('userid'),
+                       'raw_userid'    => array('userid'),
+                       'affected'      => SQL_AFFECTEDROWS(),
+                       'sql'           => $sql,
+               );
+
+               // Send "build mail" out
+               runFilterChain('send_build_mail', $filterData);
        } // END - if
 }
 
@@ -2077,13 +2097,19 @@ function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFun
                } // END - foreach
 
                // Finish SQL command
-               $sql = substr($sql, 0, -1) . " WHERE `" . SQL_ESCAPE($idColumn[0]) . "`=" . bigintval($id) . " LIMIT 1";
+               $sql = substr($sql, 0, -1) . " WHERE `" . SQL_ESCAPE($idColumn[0]) . "`=" . bigintval($id);
+               if ((isset($rawUserId[0])) && (isPostRequestElementSet($rawUserId[0])) && (isset($userIdColumn[0]))) {
+                       // Add user id as well
+                       $sql .= ' AND `' . $userIdColumn[0] . '`=' . bigintval(postRequestElement($rawUserId[0]));
+               } // END - if
+               $sql .= " LIMIT 1";
 
                // Run this query
                SQL_QUERY($sql, __FUNCTION__, __LINE__);
 
                // Add affected rows
-               $affected += SQL_AFFECTEDROWS();
+               $edited = SQL_AFFECTEDROWS();
+               $affected += $edited;
 
                // Load all data from that id
                $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
@@ -2096,9 +2122,6 @@ function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFun
                // Fetch the data and merge it into $content
                $content = merge_array($content, SQL_FETCHARRAY($result));
 
-               // Free the result
-               SQL_FREERESULT($result);
-
                // Prepare filter data array
                $filterData = array(
                        'mode'          => 'edit',
@@ -2106,11 +2129,17 @@ function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFun
                        'content'       => $content,
                        'id'            => $id,
                        'subject'       => '',
-                       'userid_column' => $userIdColumn
+                       'userid_column' => $userIdColumn,
+                       'raw_userid'    => $rawUserId,
+                       'affected'      => $edited,
+                       'sql'           => $sql,
                );
 
                // Send "build mail" out
                runFilterChain('send_build_mail', $filterData);
+
+               // Free the result
+               SQL_FREERESULT($result);
        } // END - foreach
 
        // Delete cache?
@@ -2135,6 +2164,51 @@ function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFun
        return $affected;
 }
 
+// Delete rows by given id numbers
+function doGenericDeleteEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $deleteNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
+       // The base SQL command:
+       $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s` IN (%s)";
+
+       // Is a user id provided?
+       if ((isset($rawUserId[0])) && (isPostRequestElementSet($rawUserId[0])) && (isset($userIdColumn[0]))) {
+               // Add user id as well
+               $sql .= ' AND `' . $userIdColumn[0] . '`=' . bigintval(postRequestElement($rawUserId[0]));
+       } // END - if
+
+       // Delete them all
+       $idList = '';
+       foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+               // Is there a userid?
+               if (isPostRequestElementSet($userIdColumn[0])) {
+                       // Load all data from that id
+                       $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
+                               array(
+                                       $tableName[0],
+                                       $idColumn[0],
+                                       $id
+                               ), __FUNCTION__, __LINE__);
+
+                       // Fetch the data
+                       $content = SQL_FETCHARRAY($result);
+
+                       // Free the result
+                       SQL_FREERESULT($result);
+
+                       // Send "build mails" out
+                       sendGenericBuildMails('delete', $tableName, $content, $id, '', $userIdColumn);
+               } // END - if
+
+               // Add id number
+               $idList .= $id . ',';
+       } // END - foreach
+
+       // Run the query
+       SQL_QUERY_ESC($sql, array($tableName[0], $idColumn[0], substr($idList, 0, -1)), __FUNCTION__, __LINE__);
+
+       // Return affected rows
+       return SQL_AFFECTEDROWS();
+}
+
 // Build a special template list
 function doGenericListBuilder ($prefix, $listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId = array('userid')) {
        // $tableName and $idColumn must bove be arrays!