예제 #1
0
 function main($id, $mode)
 {
     global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $phpbb_ext_gallery;
     $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
     $phpbb_ext_gallery->init();
     $user->add_lang_ext('phpbbgallery/core', array('gallery_acp', 'gallery'));
     //$user->add_lang_ext('phpbbgallery/acpcleanup', 'cleanup');
     $this->tpl_name = 'gallery_cleanup';
     add_form_key('acp_gallery');
     $this->page_title = $user->lang['ACP_GALLERY_CLEANUP'];
     $this->cleanup();
 }
예제 #2
0
 /**
  * Constructor
  */
 public function __construct($album_id, $num_files = 0)
 {
     global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $phpbb_ext_gallery, $phpbb_container, $phpbb_ext_gallery_config, $table_prefix, $images_table, $phpbb_ext_gallery_core_image;
     $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
     $phpbb_ext_gallery->init();
     $phpbb_ext_gallery_config = $phpbb_container->get('phpbbgallery.core.config');
     include_once $phpbb_root_path . 'includes/functions_upload.' . $phpEx;
     $this->upload = new \fileupload();
     //$this->upload = new \phpbbgallery\core\upload\fileupload();
     $this->upload->fileupload('', self::get_allowed_types(), 4 * $phpbb_ext_gallery_config->get('max_filesize'));
     $this->tools = new \phpbbgallery\core\file\file($phpbb_ext_gallery_config->get('gdlib_version'));
     $this->album_id = (int) $album_id;
     $this->file_limit = (int) $num_files;
     $this->username = $user->data['username'];
     // define some table (to do - move it to services)
     $images_table = $table_prefix . 'gallery_images';
     $phpbb_ext_gallery_core_image = $phpbb_container->get('phpbbgallery.core.image');
 }
예제 #3
0
 function main($id, $mode)
 {
     global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $phpbb_ext_gallery, $table_prefix, $phpbb_dispatcher;
     global $request;
     $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
     $phpbb_ext_gallery->init();
     $phpbb_ext_gallery->url->_include('functions_display', 'phpbb');
     $user->add_lang_ext('phpbbgallery/core', array('gallery_acp', 'gallery'));
     $this->tpl_name = 'gallery_main';
     add_form_key('acp_gallery');
     $submode = $request->variable('submode', '');
     switch ($mode) {
         case 'overview':
             $title = 'ACP_GALLERY_OVERVIEW';
             $this->page_title = $user->lang[$title];
             $this->overview();
             break;
         default:
             trigger_error('NO_MODE', E_USER_ERROR);
             break;
     }
 }
예제 #4
0
 function main($id, $mode)
 {
     global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $phpbb_ext_gallery, $phpbb_container, $table_prefix;
     global $phpbb_ext_gallery_core_album, $albums_table, $phpbb_ext_gallery_core_auth, $phpbb_ext_gallery_core_album_display, $images_table;
     global $phpbb_gallery_image, $users_table, $phpbb_ext_gallery_config, $comments_table, $rates_table, $reports_table, $watch_table, $contests_table;
     global $phpbb_ext_gallery_user, $request;
     $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
     $phpbb_ext_gallery->init();
     $phpbb_ext_gallery->url->_include('functions_display', 'phpbb');
     $phpbb_ext_gallery_core_album = $phpbb_container->get('phpbbgallery.core.album');
     $phpbb_ext_gallery_core_auth = $phpbb_container->get('phpbbgallery.core.auth');
     $phpbb_ext_gallery_config = $phpbb_container->get('phpbbgallery.core.config');
     $phpbb_ext_gallery_core_album_display = $phpbb_container->get('phpbbgallery.core.album.display');
     $phpbb_gallery_image = $phpbb_container->get('phpbbgallery.core.image');
     $phpbb_ext_gallery_user = $phpbb_container->get('phpbbgallery.core.user');
     $albums_table = $table_prefix . 'gallery_albums';
     $roles_table = $table_prefix . 'gallery_roles';
     $permissions_table = $table_prefix . 'gallery_permissions';
     $modscache_table = $table_prefix . 'gallery_modscache';
     $contests_table = $table_prefix . 'gallery_contests';
     $users_table = $table_prefix . 'gallery_users';
     $images_table = $table_prefix . 'gallery_images';
     $comments_table = $table_prefix . 'gallery_comments';
     $rates_table = $table_prefix . 'gallery_rates';
     $reports_table = $table_prefix . 'gallery_reports';
     $watch_table = $table_prefix . 'gallery_watch';
     $user->add_lang_ext('phpbbgallery/core', array('gallery', 'gallery_acp', 'gallery_mcp', 'gallery_ucp'));
     $this->tpl_name = 'gallery/ucp_gallery';
     add_form_key('ucp_gallery');
     $mode = $request->variable('mode', 'manage_albums');
     $action = $request->variable('action', '');
     $cancel = isset($_POST['cancel']) ? true : false;
     if ($cancel) {
         $action = '';
     }
     switch ($mode) {
         case 'manage_albums':
             switch ($action) {
                 case 'manage':
                     $title = 'MANAGE_SUBALBUMS';
                     $this->page_title = $user->lang[$title];
                     $this->manage_albums();
                     break;
                 case 'create':
                     $title = 'CREATE_SUBALBUM';
                     $this->page_title = $user->lang[$title];
                     $this->create_album();
                     break;
                 case 'edit':
                     $title = 'EDIT_SUBALBUM';
                     $this->page_title = $user->lang[$title];
                     $this->edit_album();
                     break;
                 case 'delete':
                     $title = 'DELETE_ALBUM';
                     $this->page_title = $user->lang[$title];
                     $this->delete_album();
                     break;
                 case 'move':
                     $this->move_album();
                     break;
                 case 'initialise':
                     $this->initialise_album();
                     break;
                 default:
                     $title = 'UCP_GALLERY_PERSONAL_ALBUMS';
                     $this->page_title = $user->lang[$title];
                     if (!$phpbb_ext_gallery_user->get_data('personal_album_id')) {
                         $this->info();
                     } else {
                         $this->manage_albums();
                     }
                     break;
             }
             break;
         case 'manage_subscriptions':
             $title = 'UCP_GALLERY_WATCH';
             $this->page_title = $user->lang[$title];
             $this->manage_subscriptions();
             break;
     }
 }
예제 #5
0
    function main($id, $mode)
    {
        global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $phpbb_ext_gallery, $request;
        global $phpbb_dispatcher, $table_prefix, $table_name, $phpbb_container, $request, $moderators_table, $permissions_table, $roles_table, $users_table;
        $helper = $phpbb_container->get('controller.helper');
        $pagination = $phpbb_container->get('pagination');
        // Let us define some helpers;
        $albums_table = $table_prefix . 'gallery_albums';
        $contests_table = $table_prefix . 'gallery_contests';
        $tracking_table = $table_prefix . 'gallery_albums_tracking';
        // Init ext gallery
        $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
        $phpbb_ext_gallery->init();
        $user->add_lang_ext('phpbbgallery/core', array('gallery_acp', 'gallery'));
        // Init auth
        //$gallery_cache = new \phpbbgallery\core\cache($cache, $db);
        //$gallery_user = new \phpbbgallery\core\user($db, $phpbb_dispatcher, $table_name);
        $gallery_user = $phpbb_container->get('phpbbgallery.core.user');
        //$phpbb_ext_gallery_core_auth = new \phpbbgallery\core\auth\auth($gallery_cache, $db, $gallery_user, $permissions_table, $roles_table, $users_table);
        $phpbb_ext_gallery_core_auth = $phpbb_container->get('phpbbgallery.core.auth');
        // Init manage albums
        $manage_albums = new \phpbbgallery\core\album\manage($request->variable('user_id', 0), $request->variable('parent_id', 0), $this->u_action);
        // Init album
        $phpbb_ext_gallery_core_album = $phpbb_container->get('phpbbgallery.core.album');
        $phpbb_ext_gallery_core_album_display = $phpbb_container->get('phpbbgallery.core.album.display');
        // Init contest
        $phpbb_gallery_contest = new \phpbbgallery\core\contest();
        $this->tpl_name = 'gallery_albums';
        $this->page_title = 'ACP_GALLERY_MANAGE_ALBUMS';
        $form_key = 'acp_gallery_albums';
        add_form_key($form_key);
        $action = $request->variable('action', '');
        $update = isset($_POST['update']) ? true : false;
        $album_id = $request->variable('a', 0);
        $this->parent_id = $request->variable('parent_id', 0);
        $album_data = $errors = array();
        if ($update && !check_form_key($form_key)) {
            $update = false;
            $errors[] = $user->lang['FORM_INVALID'];
        }
        // Major routines
        if ($update) {
            switch ($action) {
                case 'delete':
                    $action_subalbums = $request->variable('action_subalbums', '');
                    $subalbums_to_id = $request->variable('subalbums_to_id', 0);
                    $action_images = $request->variable('action_images', '');
                    $images_to_id = $request->variable('images_to_id', 0);
                    $errors = $manage_albums->delete_album($album_id, $action_images, $action_subalbums, $images_to_id, $subalbums_to_id);
                    if (sizeof($errors)) {
                        break;
                    }
                    $cache->destroy('sql', $table_prefix . 'gallery_albums');
                    trigger_error($user->lang['ALBUM_DELETED'] . adm_back_link($this->u_action . '&parent_id=' . $this->parent_id));
                    break;
                case 'edit':
                    $album_data = array('album_id' => $album_id);
                    // No break; here
                // No break; here
                case 'add':
                    $album_data += array('parent_id' => $request->variable('album_parent_id', $this->parent_id), 'album_type' => $request->variable('album_type', $phpbb_ext_gallery_core_album::TYPE_UPLOAD), 'type_action' => $request->variable('type_action', ''), 'album_status' => $request->variable('album_status', $phpbb_ext_gallery_core_album::STATUS_OPEN), 'album_parents' => '', 'album_name' => utf8_normalize_nfc($request->variable('album_name', '', true)), 'album_desc' => utf8_normalize_nfc($request->variable('album_desc', '', true)), 'album_desc_uid' => '', 'album_desc_options' => 7, 'album_desc_bitfield' => '', 'album_image' => $request->variable('album_image', ''), 'album_watermark' => $request->variable('album_watermark', false), 'album_sort_key' => $request->variable('album_sort_key', ''), 'album_sort_dir' => $request->variable('album_sort_dir', ''), 'display_subalbum_list' => $request->variable('display_subalbum_list', false), 'display_on_index' => $request->variable('display_on_index', false), 'display_in_rrc' => $request->variable('display_in_rrc', false));
                    /**
                     * Event to send requested data
                     * @event phpbbgallery.core.acp.albums.request_data
                     * @var	string	action		Action we are taking
                     * @var	int		album_id	Album we are doing it to
                     * @var	array	album_data	Album data for the album
                     * @since 1.2.0
                     */
                    $vars = array('action', 'album_id', 'album_data');
                    extract($phpbb_dispatcher->trigger_event('phpbbgallery.core.acp.albums.request_data', compact($vars)));
                    // Categories are not able to be locked...
                    if ($album_data['album_type'] == $phpbb_ext_gallery_core_album::TYPE_CAT) {
                        $album_data['album_status'] = $phpbb_ext_gallery_core_album::STATUS_OPEN;
                    }
                    // Contests need contest_data, freaky... :-O
                    $contest_data = array('contest_start' => $request->variable('contest_start', ''), 'contest_rating' => $request->variable('contest_rating', ''), 'contest_end' => $request->variable('contest_end', ''));
                    // Get data for album description if specified
                    if ($album_data['album_desc']) {
                        generate_text_for_storage($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_bitfield'], $album_data['album_desc_options'], $request->variable('desc_parse_bbcode', false), $request->variable('desc_parse_urls', false), $request->variable('desc_parse_smilies', false));
                    }
                    $errors = $manage_albums->update_album_data($album_data, $contest_data);
                    if (!sizeof($errors)) {
                        $album_perm_from = $request->variable('album_perm_from', 0);
                        // Copy permissions? You do not need permissions for that in the gallery
                        if ($album_perm_from && $album_perm_from != $album_data['album_id']) {
                            // If we edit a album delete current permissions first
                            if ($action == 'edit') {
                                $sql = 'DELETE FROM ' . $table_prefix . 'gallery_permissions
									WHERE perm_album_id = ' . $album_data['album_id'];
                                $db->sql_query($sql);
                                $sql = 'DELETE FROM ' . $table_prefix . 'gallery_modscache
									WHERE album_id = ' . $album_data['album_id'];
                                $db->sql_query($sql);
                            }
                            $sql = 'SELECT *
								FROM ' . $table_prefix . 'gallery_permissions
								WHERE perm_album_id = ' . $album_perm_from;
                            $result = $db->sql_query($sql);
                            $perm_data = array();
                            while ($row = $db->sql_fetchrow($result)) {
                                $perm_data[] = array('perm_role_id' => $row['perm_role_id'], 'perm_album_id' => $album_data['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 ' . $table_prefix . 'gallery_modscache
								WHERE album_id = ' . $album_perm_from;
                            $result = $db->sql_query($sql);
                            while ($row = $db->sql_fetchrow($result)) {
                                $modscache_ary[] = array('album_id' => $album_data['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);
                            $db->sql_multi_insert($table_prefix . 'gallery_permissions', $perm_data);
                            $db->sql_multi_insert($table_prefix . 'gallery_modscache', $modscache_ary);
                        }
                        $cache->destroy('sql', $table_prefix . 'gallery_albums');
                        $cache->destroy('sql', $table_prefix . 'gallery_modscache');
                        $cache->destroy('sql', $table_prefix . 'gallery_permissions');
                        $cache->destroy('_albums');
                        $phpbb_ext_gallery->auth->set_user_permissions('all', '');
                        $acl_url = '&mode=manage&action=v_mask&album_id[]=' . $album_data['album_id'];
                        $message = $action == 'add' ? $user->lang['ALBUM_CREATED'] : $user->lang['ALBUM_UPDATED'];
                        $message .= '<br /><br />' . sprintf($user->lang['REDIRECT_ACL'], '<a href="' . $phpbb_ext_gallery->url->append_sid('admin', 'index', 'i=-phpbbgallery-core-acp-permissions_module' . $acl_url) . '">', '</a>');
                        // Redirect directly to permission settings screen
                        if ($action == 'add' && !$album_perm_from) {
                            meta_refresh(5, $phpbb_ext_gallery->url->append_sid('admin', 'index', 'i=-phpbbgallery-core-acp-permissions_module' . $acl_url));
                        }
                        trigger_error($message . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id));
                    }
                    break;
            }
        }
        switch ($action) {
            case 'move_up':
            case 'move_down':
                if (!$album_id) {
                    trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
                }
                $sql = 'SELECT *
					FROM ' . $table_prefix . "gallery_albums\n\t\t\t\t\tWHERE album_id = {$album_id}";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                if (!$row) {
                    trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
                }
                $move_album_name = $manage_albums->move_album_by($row, $action, 1);
                if ($move_album_name !== false) {
                    $log = $phpbb_container->get('phpbbgallery.core.log');
                    $log->add_log('admin', 'move', $row['album_id'], 0, array('LOG_ALBUM_' . strtoupper($action), $row['album_name'], $move_album_name));
                    $cache->destroy('sql', $table_prefix . 'gallery_albums');
                }
                break;
            case 'sync':
            case 'sync_album':
                if (!$album_id) {
                    trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
                }
                $sql = 'SELECT album_name, album_type
					FROM ' . $table_prefix . "gallery_albums\n\t\t\t\t\tWHERE album_id = {$album_id}";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $db->sql_freeresult($result);
                if (!$row) {
                    trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
                }
                $phpbb_ext_gallery_core_album->update_info($album_id);
                $log = $phpbb_container->get('phpbbgallery.core.log');
                $log->add_log('admin', 'resync', $album_id, 0, array('LOG_ALBUM_SYNC', $row['album_name']));
                $template->assign_var('L_ALBUM_RESYNCED', sprintf($user->lang['ALBUM_RESYNCED'], $row['album_name']));
                break;
            case 'add':
            case 'edit':
                // Show form to create/modify a album
                if ($action == 'edit') {
                    $this->page_title = 'EDIT_ALBUM';
                    $row = $phpbb_ext_gallery_core_album->get_info($album_id);
                    $old_album_type = $row['album_type'];
                    if (!$update) {
                        $album_data = $row;
                    } else {
                        $album_data['left_id'] = $row['left_id'];
                        $album_data['right_id'] = $row['right_id'];
                    }
                    if ($row['album_type'] == $phpbb_ext_gallery_core_album::TYPE_CONTEST) {
                        $contest_data = $phpbb_gallery_contest->get_contest($album_id, 'album');
                    } else {
                        // Default values, 3 days later rate and 7 for the end of the contest
                        $contest_data = array('contest_start' => time(), 'contest_rating' => 3 * 86400, 'contest_end' => 7 * 86400);
                    }
                    // Make sure no direct child albums are able to be selected as parents.
                    $exclude_albums = array();
                    foreach ($phpbb_ext_gallery_core_album_display->get_branch($phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $album_id, 'children') as $row) {
                        $exclude_albums[] = $row['album_id'];
                    }
                    $parents_list = $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $exclude_albums);
                    /*
                    $album_data['album_password_confirm'] = $album_data['album_password'];
                    */
                } else {
                    $this->page_title = 'CREATE_ALBUM';
                    $album_id = $this->parent_id;
                    $parents_list = $phpbb_ext_gallery_core_album->get_albumbox(true, '', $this->parent_id);
                    // Fill album data with default values
                    if (!$update) {
                        $album_data = array('parent_id' => $this->parent_id, 'album_type' => $phpbb_ext_gallery_core_album::TYPE_UPLOAD, 'album_status' => $phpbb_ext_gallery_core_album::STATUS_OPEN, 'album_name' => utf8_normalize_nfc($request->variable('album_name', '', true)), 'album_desc' => '', 'album_image' => '', 'album_watermark' => true, 'album_sort_key' => '', 'album_sort_dir' => '', 'display_subalbum_list' => true, 'display_on_index' => true, 'display_in_rrc' => true);
                        /**
                         * Event to send default data
                         *
                         * @event phpbbgallery.core.acp.albums.default_data
                         * @var	action	action		Action taken
                         * @var	array	album_data	Album data array
                         * @since 1.2.0
                         */
                        $vars = array('action', 'album_data');
                        extract($phpbb_dispatcher->trigger_event('phpbbgallery.core.acp.albums.default_data', compact($vars)));
                        // Default values, 3 days later rate and 7 for the end of the contest
                        $contest_data = array('contest_start' => time(), 'contest_rating' => 3 * 86400, 'contest_end' => 7 * 86400);
                    }
                }
                $album_desc_data = array('text' => $album_data['album_desc'], 'allow_bbcode' => true, 'allow_smilies' => true, 'allow_urls' => true);
                // Parse desciption if specified
                if ($album_data['album_desc']) {
                    if (!isset($album_data['album_desc_uid'])) {
                        // Before we are able to display the preview and plane text, we need to parse our request_var()'d value...
                        $album_data['album_desc_uid'] = '';
                        $album_data['album_desc_bitfield'] = '';
                        $album_data['album_desc_options'] = 0;
                        generate_text_for_storage($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_bitfield'], $album_data['album_desc_options'], $request->variable('desc_allow_bbcode', false), $request->variable('desc_allow_urls', false), $request->variable('desc_allow_smilies', false));
                    }
                    // decode...
                    $album_desc_data = generate_text_for_edit($album_data['album_desc'], $album_data['album_desc_uid'], $album_data['album_desc_options']);
                }
                $album_type_options = '';
                $album_type_ary = array($phpbb_ext_gallery_core_album::TYPE_CAT => 'CAT', $phpbb_ext_gallery_core_album::TYPE_UPLOAD => 'UPLOAD');
                //, $phpbb_ext_gallery_core_album::TYPE_CONTEST => 'CONTEST');
                foreach ($album_type_ary as $value => $lang) {
                    $album_type_options .= '<option value="' . $value . '"' . ($value == $album_data['album_type'] ? ' selected="selected"' : '') . '>' . $user->lang['ALBUM_TYPE_' . $lang] . '</option>';
                }
                $album_sort_key_options = '';
                $album_sort_key_options .= '<option' . (!in_array($album_data['album_sort_key'], array('t', 'n', 'vc', 'u', 'ra', 'r', 'c', 'lc')) ? ' selected="selected"' : '') . " value=''>" . $user->lang['SORT_DEFAULT'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 't' ? ' selected="selected"' : '') . " value='t'>" . $user->lang['TIME'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'n' ? ' selected="selected"' : '') . " value='n'>" . $user->lang['IMAGE_NAME'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'vc' ? ' selected="selected"' : '') . " value='vc'>" . $user->lang['GALLERY_VIEWS'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'u' ? ' selected="selected"' : '') . " value='u'>" . $user->lang['USERNAME'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'ra' ? ' selected="selected"' : '') . " value='ra'>" . $user->lang['RATING'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'r' ? ' selected="selected"' : '') . " value='r'>" . $user->lang['RATES_COUNT'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'c' ? ' selected="selected"' : '') . " value='c'>" . $user->lang['COMMENTS'] . '</option>';
                $album_sort_key_options .= '<option' . ($album_data['album_sort_key'] == 'lc' ? ' selected="selected"' : '') . " value='lc'>" . $user->lang['NEW_COMMENT'] . '</option>';
                $album_sort_dir_options = '';
                $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] != 'd' && $album_data['album_sort_dir'] != 'a' ? ' selected="selected"' : '') . " value=''>" . $user->lang['SORT_DEFAULT'] . '</option>';
                $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] == 'd' ? ' selected="selected"' : '') . " value='d'>" . $user->lang['SORT_DESCENDING'] . '</option>';
                $album_sort_dir_options .= '<option' . ($album_data['album_sort_dir'] == 'a' ? ' selected="selected"' : '') . " value='a'>" . $user->lang['SORT_ASCENDING'] . '</option>';
                $statuslist = '<option value="' . $phpbb_ext_gallery_core_album::STATUS_OPEN . '"' . ($album_data['album_status'] == $phpbb_ext_gallery_core_album::STATUS_OPEN ? ' selected="selected"' : '') . '>' . $user->lang['UNLOCKED'] . '</option><option value="' . $phpbb_ext_gallery_core_album::STATUS_LOCKED . '"' . ($album_data['album_status'] == $phpbb_ext_gallery_core_album::STATUS_LOCKED ? ' selected="selected"' : '') . '>' . $user->lang['LOCKED'] . '</option>';
                $sql = 'SELECT album_id
					FROM ' . $table_prefix . 'gallery_albums
					WHERE album_type = ' . $phpbb_ext_gallery_core_album::TYPE_UPLOAD . '
						AND album_user_id = ' . $phpbb_ext_gallery_core_album::PUBLIC_ALBUM . "\n\t\t\t\t\t\tAND album_id <> {$album_id}";
                $result = $db->sql_query_limit($sql, 1);
                $uploadable_album_exists = false;
                if ($db->sql_fetchrow($result)) {
                    $uploadable_album_exists = true;
                }
                $db->sql_freeresult($result);
                // Subalbum move options
                if ($action == 'edit' && in_array($album_data['album_type'], array($phpbb_ext_gallery_core_album::TYPE_UPLOAD, $phpbb_ext_gallery_core_album::TYPE_CONTEST))) {
                    $subalbums_id = array();
                    $subalbums = $phpbb_ext_gallery_core_album_display->get_branch($phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $album_id, 'children');
                    foreach ($subalbums as $row) {
                        $subalbums_id[] = $row['album_id'];
                    }
                    $albums_list = $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id);
                    if ($uploadable_album_exists) {
                        $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id, $phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $phpbb_ext_gallery_core_album::TYPE_UPLOAD)));
                    }
                    $template->assign_vars(array('S_HAS_SUBALBUMS' => $album_data['right_id'] - $album_data['left_id'] > 1 ? true : false, 'S_ALBUMS_LIST' => $albums_list));
                } else {
                    if ($uploadable_album_exists) {
                        $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $album_id, 0, $phpbb_ext_gallery_core_album::TYPE_UPLOAD)));
                    }
                }
                /*
                if (strlen($album_data['album_password']) == 32)
                {
                	$errors[] = $user->lang['ALBUM_PASSWORD_OLD'];
                }
                */
                $template->assign_vars(array('S_EDIT_ALBUM' => true, 'S_ERROR' => sizeof($errors) ? true : false, 'S_PARENT_ID' => $this->parent_id, 'S_ALBUM_PARENT_ID' => $album_data['parent_id'], 'S_ADD_ACTION' => $action == 'add' ? true : false, 'U_BACK' => $this->u_action . '&amp;parent_id=' . $this->parent_id, 'U_EDIT_ACTION' => $this->u_action . "&amp;parent_id={$this->parent_id}&amp;action={$action}&amp;a={$album_id}", 'L_COPY_PERMISSIONS_EXPLAIN' => $user->lang['COPY_PERMISSIONS_' . strtoupper($action) . '_EXPLAIN'], 'L_TITLE' => $user->lang[$this->page_title], 'ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : '', 'ALBUM_NAME' => $album_data['album_name'], 'ALBUM_IMAGE' => $album_data['album_image'], 'ALBUM_IMAGE_SRC' => $album_data['album_image'] ? $phpbb_ext_gallery->url->path('phpbb') . $album_data['album_image'] : '', 'ALBUM_DESC' => $album_desc_data['text'], 'S_DESC_BBCODE_CHECKED' => $album_desc_data['allow_bbcode'] ? true : false, 'S_DESC_SMILIES_CHECKED' => $album_desc_data['allow_smilies'] ? true : false, 'S_DESC_URLS_CHECKED' => $album_desc_data['allow_urls'] ? true : false, 'S_ALBUM_TYPE_OPTIONS' => $album_type_options, 'S_STATUS_OPTIONS' => $statuslist, 'S_PARENT_OPTIONS' => $parents_list, 'S_ALBUM_OPTIONS' => $phpbb_ext_gallery_core_album->get_albumbox(true, '', $action == 'add' ? $album_data['parent_id'] : false, false, $action == 'edit' ? $album_data['album_id'] : false), 'S_ALBUM_ORIG_UPLOAD' => isset($old_album_type) && $old_album_type == $phpbb_ext_gallery_core_album::TYPE_UPLOAD ? true : false, 'S_ALBUM_ORIG_CAT' => isset($old_album_type) && $old_album_type == $phpbb_ext_gallery_core_album::TYPE_CAT ? true : false, 'S_ALBUM_ORIG_CONTEST' => isset($old_album_type) && $old_album_type == $phpbb_ext_gallery_core_album::TYPE_CONTEST ? true : false, 'S_ALBUM_UPLOAD' => $album_data['album_type'] == $phpbb_ext_gallery_core_album::TYPE_UPLOAD ? true : false, 'S_ALBUM_CAT' => $album_data['album_type'] == $phpbb_ext_gallery_core_album::TYPE_CAT ? true : false, 'S_ALBUM_CONTEST' => $album_data['album_type'] == $phpbb_ext_gallery_core_album::TYPE_CONTEST ? true : false, 'ALBUM_UPLOAD' => $phpbb_ext_gallery_core_album::TYPE_UPLOAD, 'ALBUM_CAT' => $phpbb_ext_gallery_core_album::TYPE_CAT, 'ALBUM_CONTEST' => $phpbb_ext_gallery_core_album::TYPE_CONTEST, 'S_CAN_COPY_PERMISSIONS' => true, 'S_ALBUM_WATERMARK' => $album_data['album_watermark'] ? true : false, 'ALBUM_SORT_KEY_OPTIONS' => $album_sort_key_options, 'ALBUM_SORT_DIR_OPTIONS' => $album_sort_dir_options, 'S_DISPLAY_SUBALBUM_LIST' => $album_data['display_subalbum_list'] ? true : false, 'S_DISPLAY_ON_INDEX' => $album_data['display_on_index'] ? true : false, 'S_DISPLAY_IN_RRC' => $album_data['display_in_rrc'] ? true : false));
                /**
                 * Event after assigning data to templete
                 *
                 * @event phpbbgallery.core.acp.albums.send_to_template
                 * @var	action	action		Action taken
                 * @var	array	album_data	Album data array
                 * @since 1.2.0
                 */
                $vars = array('action', 'album_data');
                extract($phpbb_dispatcher->trigger_event('phpbbgallery.core.acp.albums.send_to_template', compact($vars)));
                return;
                break;
            case 'delete':
                if (!$album_id) {
                    trigger_error($user->lang['NO_ALBUM'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
                }
                $album_data = $phpbb_ext_gallery_core_album->get_info($album_id);
                $subalbums_id = array();
                $subalbums = $phpbb_ext_gallery_core_album_display->get_branch($phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $album_id, 'children');
                foreach ($subalbums as $row) {
                    $subalbums_id[] = $row['album_id'];
                }
                $albums_list = $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id);
                $sql = 'SELECT album_id
					FROM ' . $table_prefix . 'gallery_albums
					WHERE album_type = ' . $phpbb_ext_gallery_core_album::TYPE_UPLOAD . "\n\t\t\t\t\t\tAND album_id <> {$album_id}\n\t\t\t\t\t\tAND album_user_id = " . $phpbb_ext_gallery_core_album::PUBLIC_ALBUM;
                $result = $db->sql_query_limit($sql, 1);
                if ($db->sql_fetchrow($result)) {
                    $template->assign_vars(array('S_MOVE_ALBUM_OPTIONS' => $phpbb_ext_gallery_core_album->get_albumbox(true, '', $album_data['parent_id'], false, $subalbums_id, $phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $phpbb_ext_gallery_core_album::TYPE_UPLOAD)));
                }
                $db->sql_freeresult($result);
                $parent_id = $this->parent_id == $album_id ? 0 : $this->parent_id;
                $template->assign_vars(array('S_DELETE_ALBUM' => true, 'U_ACTION' => $this->u_action . "&amp;parent_id={$parent_id}&amp;action=delete&amp;a=" . $album_id, 'U_BACK' => $this->u_action . '&amp;parent_id=' . $this->parent_id, 'ALBUM_NAME' => $album_data['album_name'], 'S_ALBUM_POST' => in_array($album_data['album_type'], array($phpbb_ext_gallery_core_album::TYPE_UPLOAD, $phpbb_ext_gallery_core_album::TYPE_CONTEST)) ? true : false, 'S_HAS_SUBALBUMS' => $album_data['right_id'] - $album_data['left_id'] > 1 ? true : false, 'S_ALBUMS_LIST' => $albums_list, 'S_ERROR' => sizeof($errors) ? true : false, 'ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : ''));
                return;
                break;
        }
        // Default management page
        if (!$this->parent_id) {
            $navigation = $user->lang['GALLERY_INDEX'];
        } else {
            $navigation = '<a href="' . $this->u_action . '">' . $user->lang['GALLERY_INDEX'] . '</a>';
            $albums_nav = $phpbb_ext_gallery_core_album_display->get_branch($phpbb_ext_gallery_core_album::PUBLIC_ALBUM, $this->parent_id, 'parents', 'descending');
            foreach ($albums_nav as $row) {
                if ($row['album_id'] == $this->parent_id) {
                    $navigation .= ' -&gt; ' . $row['album_name'];
                } else {
                    $navigation .= ' -&gt; <a href="' . $this->u_action . '&amp;parent_id=' . $row['album_id'] . '">' . $row['album_name'] . '</a>';
                }
            }
        }
        // Jumpbox
        $album_box = $phpbb_ext_gallery_core_album->get_albumbox(true, '', $this->parent_id, false, false);
        if ($action == 'sync' || $action == 'sync_album') {
            $template->assign_var('S_RESYNCED', true);
        }
        $sql = 'SELECT *
			FROM ' . $table_prefix . "gallery_albums\n\t\t\tWHERE parent_id = {$this->parent_id}\n\t\t\t\tAND album_user_id = " . $phpbb_ext_gallery_core_album::PUBLIC_ALBUM . '
			ORDER BY left_id';
        $result = $db->sql_query($sql);
        if ($row = $db->sql_fetchrow($result)) {
            do {
                $album_type = $row['album_type'];
                if ($row['album_status'] == $phpbb_ext_gallery_core_album::STATUS_LOCKED) {
                    $folder_image = '<img src="images/icon_folder_lock.gif" alt="' . $user->lang['LOCKED'] . '" />';
                } else {
                    $folder_image = $row['left_id'] + 1 != $row['right_id'] ? '<img src="images/icon_subfolder.gif" alt="' . $user->lang['SUBALBUM'] . '" />' : '<img src="images/icon_folder.gif" alt="' . $user->lang['FOLDER'] . '" />';
                }
                $url = $this->u_action . "&amp;parent_id={$this->parent_id}&amp;a={$row['album_id']}";
                $template->assign_block_vars('albums', array('FOLDER_IMAGE' => $folder_image, 'ALBUM_IMAGE' => $row['album_image'] ? '<img src="' . $phpbb_ext_gallery->url->path('phpbb') . $row['album_image'] . '" alt="" />' : '', 'ALBUM_IMAGE_SRC' => $row['album_image'] ? $phpbb_ext_gallery->url->path('phpbb') . $row['album_image'] : '', 'ALBUM_NAME' => $row['album_name'], 'ALBUM_DESCRIPTION' => generate_text_for_display($row['album_desc'], $row['album_desc_uid'], $row['album_desc_bitfield'], $row['album_desc_options']), 'ALBUM_IMAGES' => $row['album_images'], 'S_ALBUM_POST' => $album_type != $phpbb_ext_gallery_core_album::TYPE_CAT ? true : false, 'U_ALBUM' => $this->u_action . '&amp;parent_id=' . $row['album_id'], 'U_MOVE_UP' => $url . '&amp;action=move_up', 'U_MOVE_DOWN' => $url . '&amp;action=move_down', 'U_EDIT' => $url . '&amp;action=edit', 'U_DELETE' => $url . '&amp;action=delete', 'U_SYNC' => $url . '&amp;action=sync'));
            } while ($row = $db->sql_fetchrow($result));
        } else {
            if ($this->parent_id) {
                $row = $phpbb_ext_gallery_core_album->get_info($this->parent_id);
                $url = $this->u_action . '&amp;parent_id=' . $this->parent_id . '&amp;a=' . $row['album_id'];
                $template->assign_vars(array('S_NO_ALBUMS' => true, 'U_EDIT' => $url . '&amp;action=edit', 'U_DELETE' => $url . '&amp;action=delete', 'U_SYNC' => $url . '&amp;action=sync'));
            }
        }
        $db->sql_freeresult($result);
        $template->assign_vars(array('ERROR_MSG' => sizeof($errors) ? implode('<br />', $errors) : '', 'NAVIGATION' => $navigation, 'ALBUM_BOX' => $album_box, 'U_SEL_ACTION' => $this->u_action, 'U_ACTION' => $this->u_action . '&amp;parent_id=' . $this->parent_id, 'U_PROGRESS_BAR' => $this->u_action . '&amp;action=progress_bar', 'UA_PROGRESS_BAR' => addslashes($this->u_action . '&amp;action=progress_bar')));
    }
 function main($id, $mode)
 {
     global $auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path, $permissions, $phpbb_ext_gallery, $phpbb_container;
     global $phpbb_dispatcher, $table_name, $permissions_table, $roles_table, $users_table, $request;
     $phpbb_ext_gallery = new \phpbbgallery\core\core($auth, $cache, $config, $db, $template, $user, $phpEx, $phpbb_root_path);
     $phpbb_ext_gallery->init();
     // Init auth
     $gallery_cache = new \phpbbgallery\core\cache($cache, $db);
     $gallery_user = new \phpbbgallery\core\user($db, $phpbb_dispatcher, $table_name);
     $phpbb_ext_gallery_core_auth = $phpbb_container->get('phpbbgallery.core.auth');
     $user->add_lang_ext('phpbbgallery/core', array('gallery_acp', '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->variable('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_ext_gallery_core_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'));
     $permissions->p_masks[$phpbb_ext_gallery_core_auth::PUBLIC_ALBUM] = array_merge($permissions->cats[$phpbb_ext_gallery_core_auth::PUBLIC_ALBUM]['i'], $permissions->cats[$phpbb_ext_gallery_core_auth::PUBLIC_ALBUM]['c'], $permissions->cats[$phpbb_ext_gallery_core_auth::PUBLIC_ALBUM]['m'], $permissions->cats[$phpbb_ext_gallery_core_auth::PUBLIC_ALBUM]['misc']);
     $permissions->p_masks_anti[$phpbb_ext_gallery_core_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_ext_gallery_core_auth::OWN_ALBUM] = array('i' => array('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_ext_gallery_core_auth::OWN_ALBUM] = array_merge($permissions->cats[$phpbb_ext_gallery_core_auth::OWN_ALBUM]['i'], $permissions->cats[$phpbb_ext_gallery_core_auth::OWN_ALBUM]['c'], $permissions->cats[$phpbb_ext_gallery_core_auth::OWN_ALBUM]['m'], $permissions->cats[$phpbb_ext_gallery_core_auth::OWN_ALBUM]['misc']);
     $permissions->p_masks_anti[$phpbb_ext_gallery_core_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_ext_gallery_core_auth::PERSONAL_ALBUM] = array('i' => array('i_view', 'i_watermark', 'i_upload', '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'));
     $permissions->p_masks[$phpbb_ext_gallery_core_auth::PERSONAL_ALBUM] = array_merge($permissions->cats[$phpbb_ext_gallery_core_auth::PERSONAL_ALBUM]['i'], $permissions->cats[$phpbb_ext_gallery_core_auth::PERSONAL_ALBUM]['c'], $permissions->cats[$phpbb_ext_gallery_core_auth::PERSONAL_ALBUM]['m'], $permissions->cats[$phpbb_ext_gallery_core_auth::PERSONAL_ALBUM]['misc']);
     $permissions->p_masks_anti[$phpbb_ext_gallery_core_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;
     }
 }