- <?php
- /***************************************************************************
- * mides.ru
- * -------------------
- ***************************************************************************/
- if ( !defined('IN_PHPBB') )
- {
- die("ERROR!!! THIS FILE PROTECTED. IF YOU SAW THIS REPORT, MEANS HACKERS HERE IS NOTHING TO DO ");
- }
-
- function delete_attachment($post_id_array = 0, $attach_id_array = 0, $page = 0, $user_id = 0)
- {
- global $db;
-
- if ($post_id_array === 0 && $attach_id_array === 0 && $page === 0)
- {
- return;
- }
-
- if ($post_id_array === 0 && $attach_id_array !== 0)
- {
- $post_id_array = array();
-
- if (!is_array($attach_id_array))
- {
- if (strstr($attach_id_array, ', '))
- {
- $attach_id_array = explode(', ', $attach_id_array);
- }
- else if (strstr($attach_id_array, ','))
- {
- $attach_id_array = explode(',', $attach_id_array);
- }
- else
- {
- $attach_id = intval($attach_id_array);
- $attach_id_array = array();
- $attach_id_array[] = $attach_id;
- }
- }
-
- if ($page == PAGE_PRIVMSGS)
- {
- $p_id = 'privmsgs_id';
- }
- else
- {
- $p_id = 'post_id';
- }
-
- $sql = "SELECT $p_id
- FROM " . ATTACHMENTS_TABLE . '
- WHERE attach_id IN (' . implode(', ', $attach_id_array) . ")
- GROUP BY $p_id";
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Could not select ids', '', __LINE__, __FILE__, $sql);
- }
-
- $num_post_list = $db->sql_numrows($result);
-
- if ($num_post_list == 0)
- {
- $db->sql_freeresult($result);
- return;
- }
-
- while ($row = $db->sql_fetchrow($result))
- {
- $post_id_array[] = intval($row[$p_id]);
- }
- $db->sql_freeresult($result);
- }
-
- if (!is_array($post_id_array))
- {
- if (trim($post_id_array) == '')
- {
- return;
- }
-
- if (strstr($post_id_array, ', '))
- {
- $post_id_array = explode(', ', $post_id_array);
- }
- else if (strstr($post_id_array, ','))
- {
- $post_id_array = explode(',', $post_id_array);
- }
- else
- {
- $post_id = intval($post_id_array);
-
- $post_id_array = array();
- $post_id_array[] = $post_id;
- }
- }
-
- if (!sizeof($post_id_array))
- {
- return;
- }
-
- if ($attach_id_array === 0)
- {
- $attach_id_array = array();
-
- if ($page == PAGE_PRIVMSGS)
- {
- $whereclause = 'WHERE privmsgs_id IN (' . implode(', ', $post_id_array) . ')';
- }
- else
- {
- $whereclause = 'WHERE post_id IN (' . implode(', ', $post_id_array) . ')';
- }
-
- $sql = 'SELECT attach_id
- FROM ' . ATTACHMENTS_TABLE . " $whereclause
- GROUP BY attach_id";
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Could not select Attachment Ids', '', __LINE__, __FILE__, $sql);
- }
-
- $num_attach_list = $db->sql_numrows($result);
-
- if ($num_attach_list == 0)
- {
- $db->sql_freeresult($result);
- return;
- }
-
- while ($row = $db->sql_fetchrow($result))
- {
- $attach_id_array[] = (int) $row['attach_id'];
- }
- $db->sql_freeresult($result);
- }
-
- if (!is_array($attach_id_array))
- {
- if (strstr($attach_id_array, ', '))
- {
- $attach_id_array = explode(', ', $attach_id_array);
- }
- else if (strstr($attach_id_array, ','))
- {
- $attach_id_array = explode(',', $attach_id_array);
- }
- else
- {
- $attach_id = intval($attach_id_array);
-
- $attach_id_array = array();
- $attach_id_array[] = $attach_id;
- }
- }
-
- if (!sizeof($attach_id_array))
- {
- return;
- }
-
- if ($page == PAGE_PRIVMSGS)
- {
- $sql_id = 'privmsgs_id';
- if ($user_id)
- {
- $post_id_array_2 = array();
-
- $sql = 'SELECT privmsgs_id, privmsgs_type, privmsgs_to_userid, privmsgs_from_userid
- FROM ' . PRIVMSGS_TABLE . '
- WHERE privmsgs_id IN (' . implode(', ', $post_id_array) . ')';
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Couldn\'t get Privmsgs Type', '', __LINE__, __FILE__, $sql);
- }
-
- while ($row = $db->sql_fetchrow($result))
- {
- $privmsgs_type = $row['privmsgs_type'];
-
- if ($privmsgs_type == PRIVMSGS_READ_MAIL || $privmsgs_type == PRIVMSGS_NEW_MAIL || $privmsgs_type == PRIVMSGS_UNREAD_MAIL)
- {
- if ($row['privmsgs_to_userid'] == $user_id)
- {
- $post_id_array_2[] = $row['privmsgs_id'];
- }
- }
- else if ($privmsgs_type == PRIVMSGS_SENT_MAIL)
- {
- if ($row['privmsgs_from_userid'] == $user_id)
- {
- $post_id_array_2[] = $row['privmsgs_id'];
- }
- }
- else if ($privmsgs_type == PRIVMSGS_SAVED_OUT_MAIL)
- {
- if ($row['privmsgs_from_userid'] == $user_id)
- {
- $post_id_array_2[] = $row['privmsgs_id'];
- }
- }
- else if ($privmsgs_type == PRIVMSGS_SAVED_IN_MAIL)
- {
- if ($row['privmsgs_to_userid'] == $user_id)
- {
- $post_id_array_2[] = $row['privmsgs_id'];
- }
- }
- }
- $db->sql_freeresult($result);
- $post_id_array = $post_id_array_2;
- }
- }
- else
- {
- $sql_id = 'post_id';
- }
-
- if (sizeof($post_id_array) && sizeof($attach_id_array))
- {
- $sql = 'DELETE FROM ' . ATTACHMENTS_TABLE . '
- WHERE attach_id IN (' . implode(', ', $attach_id_array) . ")
- AND $sql_id IN (" . implode(', ', $post_id_array) . ')';
-
- if ( !($db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, $lang['Error_deleted_attachments'], '', __LINE__, __FILE__, $sql);
- }
-
- for ($i = 0; $i < sizeof($attach_id_array); $i++)
- {
- $sql = 'SELECT attach_id
- FROM ' . ATTACHMENTS_TABLE . '
- WHERE attach_id = ' . (int) $attach_id_array[$i];
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Could not select Attachment Ids', '', __LINE__, __FILE__, $sql);
- }
-
- $num_rows = $db->sql_numrows($result);
- $db->sql_freeresult($result);
-
- if ($num_rows == 0)
- {
- $sql = 'SELECT attach_id, physical_filename, thumbnail
- FROM ' . ATTACHMENTS_DESC_TABLE . '
- WHERE attach_id = ' . (int) $attach_id_array[$i];
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Couldn\'t query attach description table', '', __LINE__, __FILE__, $sql);
- }
-
- $num_rows = $db->sql_numrows($result);
-
- if ($num_rows != 0)
- {
- $num_attach = $num_rows;
- $attachments = $db->sql_fetchrowset($result);
- $db->sql_freeresult($result);
-
- // delete attachments
- for ($j = 0; $j < $num_attach; $j++)
- {
- unlink_attach($attachments[$j]['physical_filename']);
-
- if (intval($attachments[$j]['thumbnail']) == 1)
- {
- unlink_attach($attachments[$j]['physical_filename'], MODE_THUMBNAIL);
- }
-
- $sql = 'DELETE FROM ' . ATTACHMENTS_DESC_TABLE . '
- WHERE attach_id = ' . (int) $attachments[$j]['attach_id'];
-
- if ( !($db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, $lang['Error_deleted_attachments'], '', __LINE__, __FILE__, $sql);
- }
- }
- }
- else
- {
- $db->sql_freeresult($result);
- }
- }
- }
- }
-
- if ($page == PAGE_PRIVMSGS)
- {
- for ($i = 0; $i < sizeof($post_id_array); $i++)
- {
- $sql = 'SELECT attach_id
- FROM ' . ATTACHMENTS_TABLE . '
- WHERE privmsgs_id = ' . (int) $post_id_array[$i];
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Couldn\'t query Attachments Table', '', __LINE__, __FILE__, $sql);
- }
-
- $num_rows = $db->sql_numrows($result);
- $db->sql_freeresult($result);
-
- if ($num_rows == 0)
- {
- $sql = 'UPDATE ' . PRIVMSGS_TABLE . ' SET privmsgs_attachment = 0
- WHERE privmsgs_id = ' . $post_id_array[$i];
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Couldn\'t update Private Message Attachment Switch', '', __LINE__, __FILE__, $sql);
- }
- }
- }
- }
- else
- {
- if (sizeof($post_id_array))
- {
- $sql = 'SELECT topic_id
- FROM ' . POSTS_TABLE . '
- WHERE post_id IN (' . implode(', ', $post_id_array) . ')
- GROUP BY topic_id';
-
- if ( !($result = $db->sql_query($sql)) )
- {
- message_die(GENERAL_ERROR, 'Couldn\'t select Topic ID', '', __LINE__, __FILE__, $sql);
- }
-
- while ($row = $db->sql_fetchrow($result))
- {
- attachment_sync_topic($row['topic_id']);
- }
- $db->sql_freeresult($result);
- }
- }
- }
-
- ?>