Вход Регистрация
Файл: apwa/includes/acp/acp_gallery_permissions.php
Строк: 763
<?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;
}

/**
* @package acp
*/
class acp_gallery_permissions
{
    var 
$u_action;

    function 
main($id$mode)
    {
        global 
$db$template$user$permissions;

        
phpbb_gallery::init();

        
$user->add_lang(array('mods/gallery_acp''mods/gallery'));
        
$this->tpl_name 'gallery_permissions';
        
$this->page_title $user->lang['ALBUM_AUTH_TITLE'];
        
add_form_key('acp_gallery');
        
$submit = (isset($_POST['submit_edit_options'])) ? true : ((isset($_POST['submit_add_options'])) ? true false);
        
$action request_var('action''');

        
/**
        * All our beautiful permissions
        */
        
$permissions->cats['full'] = array(
            
'i'        => array('i_view''i_watermark''i_upload''i_approve''i_edit''i_delete''i_report''i_rate'),
            
'c'        => array('c_read''c_post''c_edit''c_delete'),
            
'm'        => array('m_comments''m_delete''m_edit''m_move''m_report''m_status'),
            
'misc'    => array('a_list''i_count''i_unlimited''a_count''a_unlimited''a_restrict'),
        );
        
$permissions->p_masks['full'] = array_merge($permissions->cats['full']['i'], $permissions->cats['full']['c'], $permissions->cats['full']['m'], $permissions->cats['full']['misc']);

        
// Permissions for the normal albums
        
$permissions->cats[phpbb_gallery_auth::PUBLIC_ALBUM] = array(
            
'i'        => array('i_view''i_watermark''i_upload''i_approve''i_edit''i_delete''i_report''i_rate'),
            
'c'        => array('c_read''c_post''c_edit''c_delete'),
            
'm'        => array('m_comments''m_delete''m_edit''m_move''m_report''m_status'),
            
'misc'    => array('a_list''i_count''i_unlimited'/*, 'a_count', 'a_unlimited', 'a_restrict'*/),
        );
        
$permissions->p_masks[phpbb_gallery_auth::PUBLIC_ALBUM] = array_merge($permissions->cats[phpbb_gallery_auth::PUBLIC_ALBUM]['i'], $permissions->cats[phpbb_gallery_auth::PUBLIC_ALBUM]['c'], $permissions->cats[phpbb_gallery_auth::PUBLIC_ALBUM]['m'], $permissions->cats[phpbb_gallery_auth::PUBLIC_ALBUM]['misc']);
        
$permissions->p_masks_anti[phpbb_gallery_auth::PUBLIC_ALBUM] = array('a_count''a_unlimited''a_restrict');

        
// Permissions for own personal albums
        // Note: we set i_view to 1 as default on storing the permissions
        
$permissions->cats[phpbb_gallery_auth::OWN_ALBUM] = array(
            
'i'        => array(/*'i_view', */'i_watermark''i_upload''i_approve''i_edit''i_delete''i_report''i_rate'),
            
'c'        => array('c_read''c_post''c_edit''c_delete'),
            
'm'        => array('m_comments''m_delete''m_edit''m_move''m_report''m_status'),
            
'misc'    => array('a_list''i_count''i_unlimited''a_count''a_unlimited''a_restrict'),
        );
        
$permissions->p_masks[phpbb_gallery_auth::OWN_ALBUM] = array_merge($permissions->cats[phpbb_gallery_auth::OWN_ALBUM]['i'], $permissions->cats[phpbb_gallery_auth::OWN_ALBUM]['c'], $permissions->cats[phpbb_gallery_auth::OWN_ALBUM]['m'], $permissions->cats[phpbb_gallery_auth::OWN_ALBUM]['misc']);
        
$permissions->p_masks_anti[phpbb_gallery_auth::OWN_ALBUM] = array();// Note: we set i_view to 1 as default, so it's not needed on anti array('i_view');

        // Permissions for personal albums of other users
        // Note: Do !NOT! hide the i_upload. It's used for the moving-permissions
        
$permissions->cats[phpbb_gallery_auth::PERSONAL_ALBUM] = array(
            
'i'        => array('i_view''i_watermark''i_upload'/*'i_approve', 'i_edit', 'i_delete', */'i_report''i_rate'),
            
'c'        => array('c_read''c_post''c_edit''c_delete'),
            
'm'        => array('m_comments''m_delete''m_edit''m_move''m_report''m_status'),
            
'misc'    => array('a_list'/*, 'i_count', 'i_unlimited', 'a_count', 'a_unlimited', 'a_restrict'*/),
        );
        
$permissions->p_masks[phpbb_gallery_auth::PERSONAL_ALBUM] = array_merge($permissions->cats[phpbb_gallery_auth::PERSONAL_ALBUM]['i'], $permissions->cats[phpbb_gallery_auth::PERSONAL_ALBUM]['c'], $permissions->cats[phpbb_gallery_auth::PERSONAL_ALBUM]['m'], $permissions->cats[phpbb_gallery_auth::PERSONAL_ALBUM]['misc']);
        
$permissions->p_masks_anti[phpbb_gallery_auth::PERSONAL_ALBUM] = array('i_approve''i_edit''i_delete''i_count''i_unlimited''a_count''a_unlimited''a_restrict');

        switch (
$mode)
        {
            case 
'manage':
                switch (
$action)
                {
                    case 
'set':
                        
$this->permissions_set();
                    break;

                    case 
'v_mask':
                        if (!
$submit)
                        {
                            
$this->permissions_v_mask();
                        }
                        else
                        {
                            
$this->permissions_p_mask();
                        }
                    break;

                    default:
                        
$this->permissions_c_mask();
                    break;
                }
            break;

            case 
'copy':
                
$this->copy_album_permissions();
            break;

            default:
                
trigger_error('NO_MODE'E_USER_ERROR);
            break;
        }
    }

    function 
permissions_c_mask()
    {
        global 
$cache$template;

        
// Send contants to the template
        
$template->assign_vars(array(
            
'C_OWN_PERSONAL_ALBUMS'    => phpbb_gallery_auth::OWN_ALBUM,
            
'C_PERSONAL_ALBUMS'        => phpbb_gallery_auth::PERSONAL_ALBUM,
        ));

        
$submit = (isset($_POST['submit'])) ? true false;
        
$albums $cache->obtain_album_list();

        
$template->assign_vars(array(
            
'U_ACTION'                    => $this->u_action '&amp;action=v_mask',
            
'S_PERMISSION_C_MASK'        => true,
            
'ALBUM_LIST'                => phpbb_gallery_album::get_albumbox(true''phpbb_gallery_auth::SETTING_PERMISSIONS),
        ));
    }

    function 
permissions_v_mask()
    {
        global 
$cache$db$template$user;
        
$user->add_lang('acp/permissions');

        
$submit = (isset($_POST['submit'])) ? true false;
        
$delete = (isset($_POST['delete'])) ? true false;
        
$album_id request_var('album_id', array(0));
        
$group_id request_var('group_id', array(0));
        
$user_id request_var('user_id', array(0));
        
$p_system request_var('p_system'0);

        if (!
$p_system && !sizeof($album_id))
        {
            
trigger_error('NO_PERMISSIONS_SELECTED'E_USER_WARNING);
        }

        
// Delete permissions
        
if ($delete)
        {
            
// Delete group permissions
            
if (!empty($group_id))
            {
                
// Get the possible outdated p_masks
                
$sql 'SELECT perm_role_id
                    FROM ' 
GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                        AND ' 
$db->sql_in_set('perm_group_id'$group_id);
                
$result $db->sql_query($sql);

                
$outdated_p_masks = array();
                while (
$row $db->sql_fetchrow($result))
                {
                    
$outdated_p_masks[] = $row['perm_role_id'];
                }
                
$db->sql_freeresult($result);

                
// Delete the permissions and moderators
                
$sql 'DELETE FROM ' GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                        AND ' 
$db->sql_in_set('perm_group_id'$group_id);
                
$db->sql_query($sql);
                if (!
$p_system)
                {
                    
// We do not display the moderators on personals so, just on albums
                    
$sql 'DELETE FROM ' GALLERY_MODSCACHE_TABLE '
                        WHERE ' 
$db->sql_in_set('album_id'$album_id) . '
                            AND ' 
$db->sql_in_set('group_id'$group_id);
                    
$db->sql_query($sql);
                }

                
// Check for further usage
                
$sql 'SELECT perm_role_id
                    FROM ' 
GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
$db->sql_in_set('perm_role_id'$outdated_p_masksfalsetrue);
                
$result $db->sql_query($sql);

                
$still_used_p_masks = array();
                while (
$row $db->sql_fetchrow($result))
                {
                    
$still_used_p_masks[] = $row['perm_role_id'];
                }
                
$db->sql_freeresult($result);

                
// Delete the p_masks, which are no longer used
                
$sql 'DELETE FROM ' GALLERY_ROLES_TABLE '
                    WHERE ' 
$db->sql_in_set('role_id'$outdated_p_masksfalsetrue) . '
                        AND ' 
$db->sql_in_set('role_id'$still_used_p_maskstruetrue);
                
$db->sql_query($sql);
            }

            
// Delete user permissions
            
if (!empty($user_id))
            {
                
// Get the possible outdated p_masks
                
$sql 'SELECT perm_role_id
                    FROM ' 
GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                        AND ' 
$db->sql_in_set('perm_user_id'$user_id);
                
$result $db->sql_query($sql);

                
$outdated_p_masks = array();
                while (
$row $db->sql_fetchrow($result))
                {
                    
$outdated_p_masks[] = $row['perm_role_id'];
                }
                
$db->sql_freeresult($result);

                
// Delete the permissions and moderators
                
$sql 'DELETE FROM ' GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                        AND ' 
$db->sql_in_set('perm_user_id'$user_id);
                
$db->sql_query($sql);
                if (!
$p_system)
                {
                    
// We do not display the moderators on personals so, just on albums
                    
$sql 'DELETE FROM ' GALLERY_MODSCACHE_TABLE '
                        WHERE ' 
$db->sql_in_set('album_id'$album_id) . '
                            AND ' 
$db->sql_in_set('user_id'$user_id);
                    
$db->sql_query($sql);
                }

                
// Check for further usage
                
$sql 'SELECT perm_role_id
                    FROM ' 
GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
$db->sql_in_set('perm_role_id'$outdated_p_masksfalsetrue);
                
$result $db->sql_query($sql);

                
$still_used_p_masks = array();
                while (
$row $db->sql_fetchrow($result))
                {
                    
$still_used_p_masks[] = $row['perm_role_id'];
                }
                
$db->sql_freeresult($result);

                
// Delete the p_masks, which are no longer used
                
$sql 'DELETE FROM ' GALLERY_ROLES_TABLE '
                    WHERE ' 
$db->sql_in_set('role_id'$outdated_p_masksfalsetrue) . '
                        AND ' 
$db->sql_in_set('role_id'$still_used_p_maskstruetrue);
                
$db->sql_query($sql);
            }

            
// Only clear if we did something
            
if (!empty($group_id) || !empty($user_id))
            {
                
$cache->destroy('sql'GALLERY_PERMISSIONS_TABLE);
                
$cache->destroy('sql'GALLERY_ROLES_TABLE);
                
$cache->destroy('sql'GALLERY_MODSCACHE_TABLE);
                
phpbb_gallery_auth::set_user_permissions('all''');
            }
        }

        if (!
$p_system)
        {
            
// Get the album names of the selected albums
            
$sql 'SELECT album_name
                FROM ' 
GALLERY_ALBUMS_TABLE '
                WHERE ' 
$db->sql_in_set('album_id'$album_idfalsetrue) . '
                ORDER BY left_id'
;
            
$result $db->sql_query($sql);

            
$a_names = array();
            while (
$row $db->sql_fetchrow($result))
            {
                
$a_names[] = $row['album_name'];
            }
            
$db->sql_freeresult($result);
        }

        
// Get the groups for selected album/p_system
        
$sql_array = array(
            
'SELECT'        => 'g.group_name, g.group_id, g.group_type',
            
'FROM'            => array(GROUPS_TABLE => 'g'),

            
'LEFT_JOIN'        => array(
                array(
                    
'FROM'        => array(GALLERY_PERMISSIONS_TABLE => 'p'),
                    
'ON'        => 'p.perm_group_id = g.group_id',
                ),
            ),

            
'WHERE'            => ((!$p_system) ? $db->sql_in_set('p.perm_album_id'$album_idfalsetrue) : $db->sql_in_set('p.perm_system'$p_systemfalsetrue)),
            
'GROUP_BY'        => 'g.group_id, g.group_type, g.group_name',
        );
        
$sql $db->sql_build_query('SELECT'$sql_array);
        
$result $db->sql_query($sql);

        
$set_groups = array();
        
$s_defined_group_options '';
        while (
$row $db->sql_fetchrow($result))
        {
            
$set_groups[] = $row['group_id'];
            
$s_defined_group_options .= '<option value="' $row['group_id'] . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' $row['group_name']] : $row['group_name']) . '</option>';
        }
        
$db->sql_freeresult($result);

        
// Get the other groups, so that the user can add them
        
$sql 'SELECT group_name, group_id, group_type
            FROM ' 
GROUPS_TABLE '
            WHERE ' 
$db->sql_in_set('group_id'$set_groupstruetrue);
        
$result $db->sql_query($sql);

        
$s_add_group_options '';
        while (
$row $db->sql_fetchrow($result))
        {
            
$s_add_group_options .= '<option value="' $row['group_id'] . '">' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' $row['group_name']] : $row['group_name']) . '</option>';
        }
        
$db->sql_freeresult($result);

        
// Get the users for selected album/p_system
        
$sql_array = array(
            
'SELECT'        => 'u.username, u.user_id',
            
'FROM'            => array(USERS_TABLE => 'u'),

            
'LEFT_JOIN'        => array(
                array(
                    
'FROM'        => array(GALLERY_PERMISSIONS_TABLE => 'p'),
                    
'ON'        => 'p.perm_user_id = u.user_id',
                ),
            ),

            
'WHERE'            => ((!$p_system) ? $db->sql_in_set('p.perm_album_id'$album_idfalsetrue) : $db->sql_in_set('p.perm_system'$p_systemfalsetrue)),
            
'GROUP_BY'        => 'u.user_id, u.username',
        );
        
$sql $db->sql_build_query('SELECT'$sql_array);
        
$result $db->sql_query($sql);

        
$set_users = array();
        
$s_defined_user_options '';
        while (
$row $db->sql_fetchrow($result))
        {
            
$set_users[] = $row['user_id'];
            
$s_defined_user_options .= '<option value="' $row['user_id'] . '">' $row['username'] . '</option>';
        }
        
$db->sql_freeresult($result);

        
// Setting permissions screen
        
$s_hidden_fields build_hidden_fields(array(
            
'album_id'        => $album_id,
            
'p_system'        => $p_system,
        ));

        
$template->assign_vars(array(
            
'S_HIDDEN_FIELDS'            => $s_hidden_fields,
            
'U_ACTION'                    => $this->u_action '&amp;action=v_mask',
            
'S_PERMISSION_V_MASK'        => true,

            
'C_MASKS_NAMES'                => (!$p_system) ? implode(', '$a_names) : (($p_system == phpbb_gallery_auth::OWN_ALBUM) ? $user->lang['OWN_PERSONAL_ALBUMS'] : $user->lang['PERSONAL_ALBUMS']),
            
'L_C_MASKS'                    => $user->lang['ALBUMS'],

            
'S_CAN_SELECT_GROUP'        => true,
            
'S_DEFINED_GROUP_OPTIONS'    => $s_defined_group_options,
            
'S_ADD_GROUP_OPTIONS'        => $s_add_group_options,

            
'S_CAN_SELECT_USER'            => true,
            
'S_DEFINED_USER_OPTIONS'    => $s_defined_user_options,
            
'U_FIND_USERNAME'            => phpbb_gallery_url::append_sid('phpbb''memberlist''mode=searchuser&amp;form=add_user&amp;field=username&amp;select_single=true'),
            
'ANONYMOUS_USER_ID'            => ANONYMOUS,
        ));
    }

    function 
permissions_p_mask()
    {
        global 
$cache$db$permissions$template$user;
        
$user->add_lang('acp/permissions');

        if (!
check_form_key('acp_gallery'))
        {
            
trigger_error('FORM_INVALID');
        }

        
$submit = (isset($_POST['submit'])) ? true false;
        
$delete = (isset($_POST['delete'])) ? true false;
        
$album_id request_var('album_id', array(0));
        
$group_id request_var('group_id', array(0));
        
$user_id request_var('user_id', array(0));
        
$username request_var('username', array(''), true);
        
$usernames request_var('usernames'''true);
        
$p_system request_var('p_system'0);

        
// Map usernames to ids and vice versa
        
if ($usernames)
        {
            
$username explode("n"$usernames);
        }
        unset(
$usernames);

        if (
sizeof($username) && !sizeof($user_id))
        {
            if (!
function_exists('user_get_id_name'))
            {
                
phpbb_gallery_url::_include('functions_user''phpbb');
            }
            
user_get_id_name($user_id$username);

            if (!
sizeof($user_id))
            {
                
trigger_error($user->lang['SELECTED_USER_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
            }
        }
        unset(
$username);

        if (!
sizeof($group_id) && !sizeof($user_id))
        {
            
trigger_error('NO_VICTIM_SELECTED'E_USER_WARNING);
        }
        elseif (
sizeof($group_id))
        {
            
$victim_mode 'group';
            
$victim_id $group_id;
        }
        else
        {
            
$victim_mode 'user';
            
$victim_id $user_id;
        }

        
// Create the loops for the javascript
        
for ($i 0$i sizeof($permissions->cats[$p_system]); $i++)
        {
            
$template->assign_block_vars('c_rows', array());
        }


        if (
$victim_mode == 'group')
        {
            
// Get the group information
            
$sql 'SELECT group_name, group_id, group_type, group_colour
                FROM ' 
GROUPS_TABLE '
                WHERE ' 
$db->sql_in_set('group_id'$victim_id);
            
$result $db->sql_query($sql);

            
$victim_list = array();
            while (
$row $db->sql_fetchrow($result))
            {
                
$row['group_name'] = (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' $row['group_name']] : $row['group_name']);
                
$victim_row = array(
                    
'victim_id'        => $row['group_id'],
                    
'victim_name'    => $row['group_name'],
                    
'victim_colour'    => $row['group_colour'],
                );
                
$victim_list[$row['group_id']] = $victim_row;
            }
            
$db->sql_freeresult($result);
        }
        else
        {
            
// Get the user information
            
$sql 'SELECT username, user_id, user_colour
                FROM ' 
USERS_TABLE '
                WHERE ' 
$db->sql_in_set('user_id'$victim_id);
            
$result $db->sql_query($sql);

            
$victim_list = array();
            while (
$row $db->sql_fetchrow($result))
            {
                
$victim_row = array(
                    
'victim_id'        => $row['user_id'],
                    
'victim_name'    => $row['username'],
                    
'victim_colour'    => $row['user_colour'],
                );
                
$victim_list[$row['user_id']] = $victim_row;
            }
            
$db->sql_freeresult($result);
        }

        
// Fetch the full-permissions-tree
        
$sql 'SELECT perm_role_id, perm_group_id, perm_user_id, perm_album_id
            FROM ' 
GALLERY_PERMISSIONS_TABLE '
            WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                AND ' 
$db->sql_in_set('perm_' $victim_mode '_id'$victim_id);
        
$result $db->sql_query($sql);

        
$p_masks $fetch_roles = array();
        while (
$row $db->sql_fetchrow($result))
        {
            
$fetch_roles[] = $row['perm_role_id'];
            
$p_masks[((!$p_system) ? $row['perm_album_id'] : $p_system)][$row['perm_' $victim_mode '_id']] = $row['perm_role_id'];
        }
        
$db->sql_freeresult($result);

        
// Fetch the roles
        
$roles = array();
        if (!empty(
$fetch_roles))
        {
            
$sql 'SELECT *
                FROM ' 
GALLERY_ROLES_TABLE '
                WHERE ' 
$db->sql_in_set('role_id'$fetch_roles);
            
$result $db->sql_query($sql);

            while (
$row $db->sql_fetchrow($result))
            {
                
$roles[$row['role_id']] = $row;
            }
            
$db->sql_freeresult($result);
        }

        
// Album permissions
        
if (!$p_system)
        {
            
$album_list $cache->obtain_album_list();
            foreach (
$album_id as $album)
            {
                
$album_row $album_list[$album];
                
$template->assign_block_vars('c_mask', array(
                    
'C_MASK_ID'                => $album_row['album_id'],
                    
'C_MASK_NAME'            => $album_row['album_name'],
                    
'INHERIT_C_MASKS'        => $this->inherit_albums($album_list$album_id$album_row['album_id']),
                ));
                foreach (
$victim_id as $victim)
                {
                    
$victim_row $victim_list[$victim];
                    
$template->assign_block_vars('c_mask.v_mask', array(
                        
'VICTIM_ID'                => $victim_row['victim_id'],
                        
'VICTIM_NAME'            => '<span' . (($victim_row['victim_colour']) ? (' style="color: #' $victim_row['victim_colour'] . '"') : '') . '>' $victim_row['victim_name'] . '</span>',
                        
'INHERIT_VICTIMS'        => $this->inherit_victims($album_list$album_id$victim_list$album_row['album_id'], $victim_row['victim_id']),
                    ));
                    
$role_id = (isset($p_masks[$album_row['album_id']][$victim_row['victim_id']])) ? $p_masks[$album_row['album_id']][$victim_row['victim_id']] : 0;
                    foreach (
$permissions->cats[$p_system] as $category => $permission_values)
                    {
                        
$acl_s_never $acl_s_no $acl_s_yes 0;
                        foreach (
$permission_values as $permission)
                        {
                            if (
substr($permission, -66) != '_count')
                            {
                                if (isset(
$roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_YES))
                                {
                                    
$acl_s_yes++;
                                }
                                else if (isset(
$roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NEVER))
                                {
                                    
$acl_s_never++;
                                }
                                else if (isset(
$roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NO))
                                {
                                    
$acl_s_no++;
                                }
                            }
                        }
                        
$template->assign_block_vars('c_mask.v_mask.category', array(
                            
'CAT_NAME'                => $user->lang['PERMISSION_' strtoupper($category)],
                            
'PERM_GROUP_ID'            => $category,
                            
'S_YES'                    => ($acl_s_yes && !$acl_s_never && !$acl_s_no) ? true false,
                            
'S_NEVER'                => ($acl_s_never && !$acl_s_yes && !$acl_s_no) ? true false,
                            
'S_NO'                    => ($acl_s_no && !$acl_s_never && !$acl_s_yes) ? true false,
                        ));
                        foreach (
$permission_values as $permission)
                        {
                            
$template->assign_block_vars('c_mask.v_mask.category.mask', array(
                                
'PERMISSION'            => $user->lang['PERMISSION_' strtoupper($permission)],
                                
'PERMISSION_EXPLAIN'    => (isset($user->lang['PERMISSION_' strtoupper($permission) . '_EXPLAIN'])) ? $user->lang['PERMISSION_' strtoupper($permission) . '_EXPLAIN'] : '',
                                
'S_FIELD_NAME'            => 'setting[' $album_row['album_id'] . '][' $victim_row['victim_id'] . '][' $permission ']',
                                
'S_NO'                    => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NO)) ? true false),
                                
'S_YES'                    => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_YES)) ? true false),
                                
'S_NEVER'                => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NEVER)) ? true false),
                                
'S_VALUE'                => ((isset($roles[$role_id][$permission])) ? $roles[$role_id][$permission] : 0),
                                
'S_COUNT_FIELD'            => (substr($permission, -66) == '_count') ? true false,
                            ));
                        }
                    }
                }
            }
        }
        else
        {
            
$template->assign_block_vars('c_mask', array(
                
'C_MASK_ID'                => $p_system,
                
'C_MASK_NAME'            => (($p_system == phpbb_gallery_auth::OWN_ALBUM) ? $user->lang['OWN_PERSONAL_ALBUMS'] : $user->lang['PERSONAL_ALBUMS']),
            ));
            foreach (
$victim_id as $victim)
            {
                
$victim_row $victim_list[$victim];
                
$template->assign_block_vars('c_mask.v_mask', array(
                    
'VICTIM_ID'                => $victim_row['victim_id'],
                    
'VICTIM_NAME'            => '<span' . (($victim_row['victim_colour']) ? (' style="color: #' $victim_row['victim_colour'] . '"') : '') . '>' $victim_row['victim_name'] . '</span>',
                    
'INHERIT_VICTIMS'        => $this->p_system_inherit_victims($p_system$victim_list$victim_row['victim_id']),
                ));
                
$role_id = (isset($p_masks[$p_system][$victim_row['victim_id']])) ? $p_masks[$p_system][$victim_row['victim_id']] : 0;
                foreach (
$permissions->cats[$p_system] as $category => $permission_values)
                {
                    
$template->assign_block_vars('c_mask.v_mask.category', array(
                        
'CAT_NAME'                => $user->lang['PERMISSION_' strtoupper($category)],
                        
'PERM_GROUP_ID'            => $category,
                    ));
                    foreach (
$permission_values as $permission)
                    {
                        
$template->assign_block_vars('c_mask.v_mask.category.mask', array(
                            
'PERMISSION'            => $user->lang['PERMISSION_' strtoupper($permission)],
                            
'PERMISSION_EXPLAIN'    => (isset($user->lang['PERMISSION_' strtoupper($permission) . '_EXPLAIN'])) ? $user->lang['PERMISSION_' strtoupper($permission) . '_EXPLAIN'] : '',
                            
'S_FIELD_NAME'            => 'setting[' $p_system '][' $victim_row['victim_id'] . '][' $permission ']',
                            
'S_NO'                    => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NO)) ? true false),
                            
'S_YES'                    => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_YES)) ? true false),
                            
'S_NEVER'                => ((isset($roles[$role_id][$permission]) && ($roles[$role_id][$permission] == phpbb_gallery_auth::ACL_NEVER)) ? true false),
                            
'S_VALUE'                => ((isset($roles[$role_id][$permission])) ? $roles[$role_id][$permission] : 0),
                            
'S_COUNT_FIELD'            => (substr($permission, -66) == '_count') ? true false,
                        ));
                    }
                }
            }
        }

        
// Setting permissions screen
        
$s_hidden_fields build_hidden_fields(array(
            
'user_id'        => $user_id,
            
'group_id'        => $group_id,
            
'album_id'        => $album_id,
            
'p_system'        => $p_system,
        ));

        
$template->assign_vars(array(
            
'S_HIDDEN_FIELDS'            => $s_hidden_fields,
            
'U_ACTION'                    => $this->u_action '&amp;action=set',
            
'S_PERMISSION_P_MASK'        => true,
        ));
    }

    function 
permissions_set()
    {
        global 
$cache$db$permissions$template$user;

        
// Send contants to the template
        
$submit = (isset($_POST['submit'])) ? true false;
        
$album_id request_var('album_id', array(0));
        
$group_id request_var('group_id', array(0));
        
$user_id request_var('user_id', array(0));
        
$p_system request_var('p_system'phpbb_gallery_auth::PUBLIC_ALBUM);

        if (!
sizeof($group_id) && !sizeof($user_id))
        {
            
trigger_error('NO_VICTIM_SELECTED'E_USER_WARNING);
        }
        elseif (
sizeof($group_id))
        {
            
$victim_mode 'group';
            
$victim_id $group_id;
        }
        else
        {
            
$victim_mode 'user';
            
$victim_id $user_id;
        }

        if (
$submit)
        {
            if (!
check_form_key('acp_gallery'))
            {
                
trigger_error('FORM_INVALID'E_USER_WARNING);
            }
            
$coal $cache->obtain_album_list();

            
/**
            * Grab the permissions
            *
            * includes/acp/acp_permissions.php says:
            * // We obtain and check $_POST['setting'][$ug_id][$forum_id] directly and not using request_var() because request_var()
            * // currently does not support the amount of dimensions required. ;)
            */
            //        $auth_settings = request_var('setting', array(0 => array(0 => array('' => 0))));
            
$p_mask_count 0;
            
$auth_settings $p_mask_storage $c_mask_storage $v_mask_storage = array();
            foreach (
$_POST['setting'] as $c_mask => $v_sets)
            {
                
$c_mask = (int) $c_mask;
                
$c_mask_storage[] = $c_mask;
                
$auth_settings[$c_mask] = array();
                foreach (
$v_sets as $v_mask => $p_sets)
                {
                    
$v_mask = (int) $v_mask;
                    
$v_mask_storage[] = $v_mask;
                    
$auth_settings[$c_mask][$v_mask] = array();
                    
$is_moderator false;
                    foreach (
$p_sets as $p_mask => $value)
                    {
                        if (!
in_array($p_mask$permissions->p_masks[$p_system]))
                        {
                            
// An admin tried to set a non-existing permission. Hacking attempt?!
                            
trigger_error('HACKING_ATTEMPT'E_USER_WARNING);
                        }
                        
// Casted all values to integer and checked all strings whether they are permissions!
                        // Should be fine than for the .com MOD-Team now =)
                        
$value = (int) $value;
                        if (
substr($p_mask, -66) == '_count')
                        {
                            
$auth_settings[$c_mask][$v_mask][$p_mask] = $value;
                        }
                        else
                        {
                            
$auth_settings[$c_mask][$v_mask][$p_mask] = ($value == ACL_YES) ? phpbb_gallery_auth::ACL_YES : (($value == ACL_NEVER) ? phpbb_gallery_auth::ACL_NEVER phpbb_gallery_auth::ACL_NO);
                            
// Do we have moderators?
                            
if ((substr($p_mask02) == 'm_') && ($value == ACL_YES))
                            {
                                
$is_moderator true;
                            }
                        }
                    }
                    
// Need to set a defaults here: view your own personal album images
                    
if ($p_system == phpbb_gallery_auth::OWN_ALBUM)
                    {
                        
$auth_settings[$c_mask][$v_mask]['i_view'] = phpbb_gallery_auth::ACL_YES;
                    }

                    
$p_mask_storage[$p_mask_count]['p_mask'] = $auth_settings[$c_mask][$v_mask];
                    
$p_mask_storage[$p_mask_count]['is_moderator'] = $is_moderator;
                    
$p_mask_storage[$p_mask_count]['usage'][] = array('c_mask' => $c_mask'v_mask' => $v_mask);
                    
$auth_settings[$c_mask][$v_mask] = $p_mask_count;
                    
$p_mask_count++;
                }
            }
            
/**
            * Inherit the permissions
            */
            
foreach ($_POST['inherit'] as $c_mask => $v_sets)
            {
                
$c_mask = (int) $c_mask;
                foreach (
$v_sets as $v_mask => $i_mask)
                {
                    if ((
$v_mask == 'full') && $i_mask)
                    {
                        
$i_mask = (int) $i_mask;
                        
// Inherit all permissions of an other c_mask
                        
if (isset($auth_settings[$i_mask]))
                        {
                            if (
$this->inherit_albums($coal$c_mask_storage$c_mask$i_mask))
                            {
                                foreach (
$auth_settings[$c_mask] as $v_mask => $p_mask)
                                {
                                    
// You are not able to inherit a later c_mask, so we can remove the p_mask from the storage,
                                    // and just use the same p_mask
                                    
unset($p_mask_storage[$auth_settings[$c_mask][$v_mask]]);
                                    
$auth_settings[$c_mask][$v_mask] = $auth_settings[$i_mask][$v_mask];
                                    
$p_mask_storage[$auth_settings[$c_mask][$v_mask]]['usage'][] = array('c_mask' => $c_mask'v_mask' => $v_mask);
                                }
                                
// We take all permissions of another c_mask, so:
                                
break;
                            }
                            else
                            {
                                
// The choosen option was disabled: Hacking attempt?!
                                
trigger_error('HACKING_ATTEMPT'E_USER_WARNING);
                            }
                        }
                    }
                    elseif (
$i_mask)
                    {
                        
// Inherit permissions of one [c_mask][v_mask]
                        
$v_mask = (int) $v_mask;
                        list(
$ci_mask$vi_mask) = explode("_"$i_mask);
                        
$ci_mask = (int) $ci_mask;
                        
$vi_mask = (int) $vi_mask;
                        if (isset(
$auth_settings[$ci_mask][$vi_mask]))
                        {
                            
$no_hacking_attempt = ((!$p_system) ? $this->inherit_victims($coal$c_mask_storage$v_mask_storage$c_mask$v_mask$ci_mask$vi_mask) : $this->p_system_inherit_victims($p_system$v_mask_storage$v_mask$vi_mask));
                            if (
$no_hacking_attempt)
                            {
                                
// You are not able to inherit a later c_mask, so we can remove the p_mask from the storage,
                                // and just use the same p_mask
                                
if (isset($auth_settings[$c_mask][$v_mask]))
                                {
                                    
// Should exist, but didn't on testing so only do it, when it does exist
                                    
unset($p_mask_storage[$auth_settings[$c_mask][$v_mask]]);
                                }
                                
$auth_settings[$c_mask][$v_mask] = $auth_settings[$ci_mask][$vi_mask];
                                
$p_mask_storage[$auth_settings[$c_mask][$v_mask]]['usage'][] = array('c_mask' => $c_mask'v_mask' => $v_mask);
                            }
                            else
                            {
                                
// The choosen option was disabled: Hacking attempt?!
                                
trigger_error('HACKING_ATTEMPT'E_USER_WARNING);
                            }
                        }
                    }
                }
            }
            unset(
$auth_settings);

            
// Get the possible outdated p_masks
            
$sql 'SELECT perm_role_id
                FROM ' 
GALLERY_PERMISSIONS_TABLE '
                WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                    AND ' 
$db->sql_in_set('perm_' $victim_mode '_id'$v_mask_storage);
            
$result $db->sql_query($sql);

            
$outdated_p_masks = array();
            while (
$row $db->sql_fetchrow($result))
            {
                
$outdated_p_masks[] = $row['perm_role_id'];
            }
            
$db->sql_freeresult($result);

            
// Delete the permissions and moderators
            
$sql 'DELETE FROM ' GALLERY_PERMISSIONS_TABLE '
                WHERE ' 
. ((!$p_system) ? $db->sql_in_set('perm_album_id'$album_id) : $db->sql_in_set('perm_system'$p_system)) . '
                    AND ' 
$db->sql_in_set('perm_' $victim_mode '_id'$v_mask_storage);
            
$db->sql_query($sql);
            if (!
$p_system)
            {
                
$sql 'DELETE FROM ' GALLERY_MODSCACHE_TABLE '
                    WHERE ' 
$db->sql_in_set('album_id'$c_mask_storage) . '
                        AND ' 
$db->sql_in_set($victim_mode '_id'$v_mask_storage);
                
$db->sql_query($sql);
            }

            
// Check for further usage
            
$sql 'SELECT perm_role_id
                FROM ' 
GALLERY_PERMISSIONS_TABLE '
                WHERE ' 
$db->sql_in_set('perm_role_id'$outdated_p_masksfalsetrue);
            
$result $db->sql_query($sql);

            
$still_used_p_masks = array();
            while (
$row $db->sql_fetchrow($result))
            {
                
$still_used_p_masks[] = $row['perm_role_id'];
            }
            
$db->sql_freeresult($result);

            
// Delete the p_masks, which are no longer used
            
$sql 'DELETE FROM ' GALLERY_ROLES_TABLE '
                WHERE ' 
$db->sql_in_set('role_id'$outdated_p_masksfalsetrue) . '
                    AND ' 
$db->sql_in_set('role_id'$still_used_p_maskstruetrue);
            
$db->sql_query($sql);

            
$group_names = array();
            if (!
$p_system)
            {
                if (
$victim_mode == 'group')
                {
                    
// Get group_name's for the GALLERY_MODSCACHE_TABLE
                    
$sql 'SELECT group_id, group_name
                        FROM ' 
GROUPS_TABLE '
                        WHERE ' 
$db->sql_in_set('group_id'$v_mask_storage);
                    
$result $db->sql_query($sql);

                    while (
$row $db->sql_fetchrow($result))
                    {
                        
$victim_names[$row['group_id']] = $row['group_name'];
                    }
                    
$db->sql_freeresult($result);
                }
                else
                {
                    
// Get username's for the GALLERY_MODSCACHE_TABLE
                    
$sql 'SELECT user_id, username
                        FROM ' 
USERS_TABLE '
                        WHERE ' 
$db->sql_in_set('user_id'$v_mask_storage);
                    
$result $db->sql_query($sql);

                    while (
$row $db->sql_fetchrow($result))
                    {
                        
$victim_names[$row['user_id']] = $row['username'];
                    }
                    
$db->sql_freeresult($result);
                }
            }

            
$sql_permissions $sql_moderators = array();
            foreach (
$p_mask_storage as $p_set)
            {
                
// Check whether the p_mask is already in the DB
                
$sql_where '';
                foreach (
$p_set['p_mask'] as $p_mask => $value)
                {
                    
$sql_where .= (($sql_where) ? ' AND ' '') . $p_mask ' = ' $value;
                }
                
// Check back, so we dont give more permissions than the admin wants to
                
$check_permissions_to_default array_diff($permissions->p_masks_anti[$p_system], $p_set['p_mask']);
                foreach (
$check_permissions_to_default as $p_mask)
                {
                    
$sql_where .= (($sql_where) ? ' AND ' '') . $p_mask ' = 0';
                }

                
$role_id 0;
                
$sql 'SELECT role_id
                    FROM ' 
GALLERY_ROLES_TABLE "
                    WHERE 
$sql_where";
                
$result $db->sql_query_limit($sql1);
                
$role_id = (int) $db->sql_fetchfield('role_id');
                
$db->sql_freeresult($result);

                if (!
$role_id)
                {
                    
// Note: Do not collect the roles to insert, to deny doubles and we need the ID!
                    
$sql 'INSERT INTO ' GALLERY_ROLES_TABLE ' ' $db->sql_build_array('INSERT'$p_set['p_mask']);
                    
$db->sql_query($sql);
                    
$role_id $db->sql_nextid();
                }

                foreach (
$p_set['usage'] as $usage)
                {
                    if (!
$p_system)
                    {
                        
$sql_permissions[] = array(
                            
'perm_role_id'                    => $role_id,
                            
'perm_album_id'                    => $usage['c_mask'],
                            
'perm_' $victim_mode '_id'    => $usage['v_mask'],
                        );
                        if (
$p_set['is_moderator'])
                        {
                            if (
$victim_mode == 'group')
                            {
                                
$sql_moderators[] = array(
                                    
'album_id'        => $usage['c_mask'],
                                    
'group_id'        => $usage['v_mask'],
                                    
'group_name'    => $victim_names[$usage['v_mask']],
                                );
                            }
                            else
                            {
                                
$sql_moderators[] = array(
                                    
'album_id'        => $usage['c_mask'],
                                    
'user_id'        => $usage['v_mask'],
                                    
'username'        => $victim_names[$usage['v_mask']],
                                );
                            }
                        }
                    }
                    else
                    {
                        
$sql_permissions[] = array(
                            
'perm_role_id'                    => $role_id,
                            
'perm_system'                    => $usage['c_mask'],
                            
'perm_' $victim_mode '_id'    => $usage['v_mask'],
                        );
                    }
                }
            }
            
$db->sql_multi_insert(GALLERY_PERMISSIONS_TABLE$sql_permissions);
            
$db->sql_multi_insert(GALLERY_MODSCACHE_TABLE$sql_moderators);

            
$cache->destroy('sql'GALLERY_PERMISSIONS_TABLE);
            
$cache->destroy('sql'GALLERY_ROLES_TABLE);
            
$cache->destroy('sql'GALLERY_MODSCACHE_TABLE);
            
phpbb_gallery_auth::set_user_permissions('all''');

            
trigger_error($user->lang['PERMISSIONS_STORED'] . adm_back_link($this->u_action));
        }
        
trigger_error('HACKING_ATTEMPT'E_USER_WARNING);
    }

    
/**
    * Handles copying permissions from one album to others
    */
    
function copy_album_permissions()
    {
        global 
$cache$db$template$user;

        
$submit = isset($_POST['submit']) ? true false;

        if (
$submit)
        {
            
$src request_var('src_album_id'0);
            
$dest request_var('dest_album_ids', array(0));

            
$sql 'SELECT album_id
                FROM ' 
GALLERY_ALBUMS_TABLE '
                WHERE album_id = ' 
$src;
            
$result $db->sql_query($sql);
            
$src = (int) $db->sql_fetchfield('album_id');
            
$db->sql_freeresult($result);

            if (!
$src)
            {
                
trigger_error($user->lang['SELECTED_ALBUM_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
            }

            if (!
sizeof($dest))
            {
                
trigger_error($user->lang['SELECTED_ALBUM_NOT_EXIST'] . adm_back_link($this->u_action), E_USER_WARNING);
            }

            if (
confirm_box(true))
            {
                
$sql 'SELECT *
                    FROM ' 
GALLERY_PERMISSIONS_TABLE '
                    WHERE perm_album_id = ' 
$src;
                
$result $db->sql_query($sql);
                while (
$row $db->sql_fetchrow($result))
                {
                    foreach (
$dest as $album_id)
                    {
                        
$perm_data[] = array(
                            
'perm_role_id'                    => $row['perm_role_id'],
                            
'perm_album_id'                    => $album_id,
                            
'perm_user_id'                    => $row['perm_user_id'],
                            
'perm_group_id'                    => $row['perm_group_id'],
                            
'perm_system'                    => $row['perm_system'],
                        );
                    }
                }
                
$db->sql_freeresult($result);

                
$modscache_ary = array();
                
$sql 'SELECT * FROM ' GALLERY_MODSCACHE_TABLE '
                    WHERE album_id = ' 
$src;
                
$result $db->sql_query($sql);
                while (
$row $db->sql_fetchrow($result))
                {
                    foreach (
$dest as $album_id)
                    {
                        
$modscache_ary[] = array(
                            
'album_id'            => $album_id,
                            
'user_id'            => $row['user_id'],
                            
'username'            => $row['username'],
                            
'group_id'            => $row['group_id'],
                            
'group_name'        => $row['group_name'],
                            
'display_on_index'    => $row['display_on_index'],
                        );
                    }
                }
                
$db->sql_freeresult($result);

                
$sql 'DELETE FROM ' GALLERY_PERMISSIONS_TABLE '
                    WHERE ' 
$db->sql_in_set('perm_album_id'$dest);
                
$db->sql_query($sql);

                
$sql 'DELETE FROM ' GALLERY_MODSCACHE_TABLE '
                    WHERE ' 
$db->sql_in_set('album_id'$dest);
                
$db->sql_query($sql);

                
$db->sql_multi_insert(GALLERY_PERMISSIONS_TABLE$perm_data);
                
$db->sql_multi_insert(GALLERY_MODSCACHE_TABLE$modscache_ary);

                
$cache->destroy('sql'GALLERY_MODSCACHE_TABLE);
                
$cache->destroy('sql'GALLERY_PERMISSIONS_TABLE);
                
phpbb_gallery_auth::set_user_permissions('all''');

                
trigger_error($user->lang['COPY_PERMISSIONS_SUCCESSFUL'] . adm_back_link($this->u_action));
            }
            else
            {
                
$s_hidden_fields = array(
                    
'submit'            => $submit,
                    
'src_album_id'        => $src,
                    
'dest_album_ids'    => $dest,
                );

                
$s_hidden_fields build_hidden_fields($s_hidden_fields);

                
confirm_box(false$user->lang['COPY_PERMISSIONS_CONFIRM'], $s_hidden_fields);
            }
        }

        
$template->assign_vars(array(
            
'S_ALBUM_OPTIONS'        => phpbb_gallery_album::get_albumbox(true''),
            
'S_COPY_PERMISSIONS'    => true,
        ));
    }

    
/**
    * Create the drop-down-options to inherit the c_masks
    * or check, whether the choosen option is valid
    */
    
function inherit_albums($cache_obtain_album_list$allowed_albums$album_id$check_inherit_album 0)
    {
        global 
$user;
        
$disabled false;

        
$return '';
        
$return .= '<option value="0" selected="selected">' $user->lang['NO_INHERIT'] . '</option>';
        foreach (
$cache_obtain_album_list as $album)
        {
            if (
in_array($album['album_id'], $allowed_albums))
            {
                
// We found the requested album: return true!
                
if ($check_inherit_album && ($album['album_id'] == $check_inherit_album))
                {
                    return 
true;
                }
                if (
$album['album_id'] == $album_id)
                {
                    
$disabled true;
                    
// Could we find the requested album so far? No? Hacking attempt?!
                    
if ($check_inherit_album)
                    {
                        return 
false;
                    }
                }
                
$return .= '<option value="' $album['album_id'] . '"';
                if (
$disabled)
                {
                    
$return .= ' disabled="disabled" class="disabled-option"';
                }
                
$return .= '>' $album['album_name'] . '</option>';
            }
        }
        
// Could we not find the requested album even here?
        
if ($check_inherit_album)
        {
            
// Something went really wrong here!
            
return false;
        }
        return 
$return;
    }

    
/**
    * Create the drop-down-options to inherit the v_masks
    * or check, whether the choosen option is valid
    */
    
function inherit_victims($cache_obtain_album_list$allowed_albums$allowed_victims$album_id$victim_id$check_inherit_album 0$check_inherit_victim 0)
    {
        global 
$user;

        
$disabled false;
        
// We submit a "wrong" array on the check (to make it more easy) so we convert it here
        
if ($check_inherit_album && $check_inherit_victim)
        {
            
$converted_victims = array();
            foreach (
$allowed_victims as $victim)
            {
                
$converted_victims[] = array(
                    
'victim_id'        => $victim,
                    
'victim_name'    => '',
                );
            }
            
$allowed_victims $converted_victims;
            unset (
$converted_victims);
        }

        
$return '';
        
$return .= '<option value="0" selected="selected">' $user->lang['NO_INHERIT'] . '</option>';
        foreach (
$cache_obtain_album_list as $album)
        {
            if (
in_array($album['album_id'], $allowed_albums))
            {
                
$return .= '<option value="0" disabled="disabled" class="disabled-option">' $album['album_name'] . '</option>';
                foreach (
$allowed_victims as $victim)
                {
                    
// We found the requested album_group: return true!
                    
if ($check_inherit_album && $check_inherit_victim && (($album['album_id'] == $check_inherit_album) && ($victim['victim_id'] == $check_inherit_victim)))
                    {
                        return 
true;
                    }
                    if ((
$album['album_id'] == $album_id) && ($victim['victim_id'] == $victim_id))
                    {
                        
$disabled true;
                        
// Could we find the requested album_victim so far? No? Hacking attempt?!
                        
if ($check_inherit_album && $check_inherit_victim)
                        {
                            return 
false;
                        }
                    }
                    
$return .= '<option value="' $album['album_id'] . '_' $victim['victim_id'] . '"';
                    if (
$disabled)
                    {
                        
$return .= ' disabled="disabled" class="disabled-option"';
                    }
                    
$return .= '>&nbsp;&nbsp;&nbsp;' $album['album_name'] . ' >>> ' $victim['victim_name'] . '</option>';
                }
            }
        }
        
// Could we not find the requested album_victim even here?
        
if ($check_inherit_album && $check_inherit_victim)
        {
            
// Something went really wrong here!
            
return false;
        }
        return 
$return;
    }

    
/**
    * Create the drop-down-options to inherit the v_masks
    * or check, whether the choosen option is valid
    */
    
function p_system_inherit_victims($p_system$allowed_victims$victim_id$check_inherit_victim 0)
    {
        global 
$user;

        
$disabled false;
        
// We submit a "wrong" array on the check (to make it more easy) so we convert it here
        
if ($check_inherit_victim)
        {
            
$converted_groups = array();
            foreach (
$allowed_victims as $victim)
            {
                
$converted_victims[] = array(
                    
'victim_id'        => $victim,
                    
'victim_name'    => '',
                );
            }
            
$allowed_victims $converted_victims;
            unset (
$converted_victims);
        }

        
$return '';
        
$return .= '<option value="0" selected="selected">' $user->lang['NO_INHERIT'] . '</option>';
        foreach (
$allowed_victims as $victim)
        {
            
// We found the requested {$p_system}_victim: return true!
            
if ($check_inherit_victim && ($victim['victim_id'] == $check_inherit_victim))
            {
                return 
true;
            }
            if (
$victim['victim_id'] == $victim_id)
            {
                
$disabled true;
                
// Could we find the requested {$p_system}_victim so far? No? Hacking attempt?!
                
if ($check_inherit_victim)
                {
                    return 
false;
                }
            }
            
$return .= '<option value="' $p_system '_' $victim['victim_id'] . '"';
            if (
$disabled)
            {
                
$return .= ' disabled="disabled" class="disabled-option"';
            }
            
$return .= '>&nbsp;&nbsp;&nbsp;' . (($p_system == phpbb_gallery_auth::OWN_ALBUM) ? $user->lang['OWN_PERSONAL_ALBUMS'] : $user->lang['PERSONAL_ALBUMS']) . ' >>> ' $victim['victim_name'] . '</option>';
        }
        
// Could we not find the requested {$p_system}_victim even here?
        
if ($check_inherit_victim)
        {
            
// Something went really wrong here!
            
return false;
        }
        return 
$return;
    }
}
Онлайн: 2
Реклама