Вход Регистрация
Файл: attach_mod/includes/functions_delete.php
Строк: 74
<?php

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 === && $attach_id_array === && $page === 0)
    {
        return;
    }

    if (
$post_id_array === && $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_idphysical_filenamethumbnail
                    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 
                    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);
        }
    }
}

?>
Онлайн: 1
Реклама