Вход Регистрация
Файл: apwa/includes/gallery/image/favorite.php
Строк: 50
<?php
/**
*
* @package phpBB Gallery
* @version $Id$
* @copyright (c) 2007 nickvergessen nickvergessen@gmx.de http://www.flying-bits.org
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/

if (!defined('IN_PHPBB'))
{
    exit;
}

class 
phpbb_gallery_image_favorite
{
    
/**
    * Add to favorites
    *
    * @param    mixed    $image_ids        Array or integer with image_id where we delete from the favorites.
    * @param    int        $user_id        If not set, it uses the currents user_id
    */
    
static public function add($image_ids, $user_id = false)
    {
        global 
$db, $user;

        
$image_ids = self::cast_mixed_int2array($image_ids);
        
$user_id = (int) (($user_id) ? $user_id : $user->data['user_id']);

        foreach (
$image_ids as $image_id)
        {
            
$sql_ary = array(
                
'image_id'        => $image_id,
                
'user_id'        => $user_id,
            );
            
$sql = 'INSERT INTO ' . GALLERY_FAVORITES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
            
$db->sql_query($sql);
        }

        
$sql = 'UPDATE ' . GALLERY_IMAGES_TABLE . '
            SET image_favorited = image_favorited + 1
            WHERE ' 
. $db->sql_in_set('image_id', $image_ids);
        
$db->sql_query($sql);
    }

    
/**
    * Remove from favorites
    *
    * @param    mixed    $image_ids        Array or integer with image_id where we delete from the favorites.
    * @param    int        $user_id        If not set, it uses the currents user_id
    */
    
static public function remove($image_ids, $user_id = false)
    {
        global 
$db, $user;

        
$image_ids = self::cast_mixed_int2array($image_ids);
        
$user_id = (int) (($user_id) ? $user_id : $user->data['user_id']);

        
$sql = 'DELETE FROM ' . GALLERY_FAVORITES_TABLE . '
            WHERE user_id = ' 
. $user_id . '
                AND ' 
. $db->sql_in_set('image_id', $image_ids);
        
$db->sql_query($sql);
        
$sql = 'UPDATE ' . GALLERY_IMAGES_TABLE . '
            SET image_favorited = image_favorited - 1
            WHERE ' 
. $db->sql_in_set('image_id', $image_ids);
        
$db->sql_query($sql);
    }

    
/**
    * Delete given image_ids from the favorites
    *
    * @param    mixed    $image_ids        Array or integer with image_id where we delete from the favorites.
    * @param    bool    $reset_votes    Shall we also reset the average? We can save that query, when the images are deleted anyway.
    */
    
static public function delete_favorites($image_ids, $reset_votes = false)
    {
        global 
$db;

        
$image_ids = self::cast_mixed_int2array($image_ids);

        
$sql = 'DELETE FROM ' . GALLERY_FAVORITES_TABLE . '
            WHERE ' 
. $db->sql_in_set('image_id', $image_ids);
        
$result = $db->sql_query($sql);

        if (
$reset_votes)
        {
            
$sql = 'UPDATE ' . GALLERY_IMAGES_TABLE . '
                SET image_favorited = 0
                WHERE ' 
. $db->sql_in_set('image_id', $image_ids);
            
$db->sql_query($sql);
        }
    }

    static public function 
cast_mixed_int2array($ids)
    {
        if (
is_array($ids))
        {
            return 
array_map('intval', $ids);
        }
        else
        {
            return array((int) 
$ids);
        }
    }
}
Онлайн: 2
Реклама