} $start = ($pagenumber - 1) * $perpage; $picturebits = ''; $pictures = $vbulletin->db->query_read("\n\t\t\tSELECT SQL_CALC_FOUND_ROWS\n\t\t\t\tuser.*, albumpicture.dateline, albumpicture.albumid, album.title AS albumtitle\n\t\t\t\t" . ($vbulletin->options['avatarenabled'] ? ",avatar.avatarpath, NOT ISNULL(customavatar.userid) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight" : "") . "\n\t\t\t\t,picture.pictureid, picture.extension, picture.filesize, picture.idhash, picture.caption,\n\t\t\t\tpicture.thumbnail_filesize, picture.thumbnail_dateline, picture.thumbnail_width, picture.thumbnail_height\n\t\t\t\t{$hook_query_fields}\n\t\t\tFROM " . TABLE_PREFIX . "picture AS picture\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (picture.userid = user.userid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "albumpicture AS albumpicture ON (albumpicture.pictureid = picture.pictureid)\n\t\t\tLEFT JOIN " . TABLE_PREFIX . "album AS album ON (album.albumid = albumpicture.albumid)\n\t\t\t" . ($vbulletin->options['avatarenabled'] ? "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)" : "") . "\n\t\t\t{$hook_query_joins}\n\t\t\tWHERE picture.state = 'moderation'\n\t\t\t\t{$datecut}\n\t\t\t\t{$hook_query_where}\n\t\t\tORDER BY {$sqlsortfield} {$sqlsortorder}\n\t\t\tLIMIT {$start}, {$perpage}\n\t\t"); list($picturetotal) = $vbulletin->db->query_first("SELECT FOUND_ROWS()", DBARRAY_NUM); if ($start >= $picturetotal) { $pagenumber = ceil($picturetotal / $perpage); } } while ($start >= $picturetotal and $picturetotal); require_once DIR . '/includes/functions_album.php'; $show['picture'] = true; while ($picture = $db->fetch_array($pictures)) { fetch_musername($picture); $picture['albumtitle'] = fetch_word_wrapped_string(fetch_censored_text($picture['albumtitle'])); // $picture contains comment, picture, and album info $pictureinfo = prepare_pictureinfo_thumb($picture, $picture); eval('$picturebits .= "' . fetch_template('moderation_picturebit') . '";'); } $pagenavbits = array("do=viewpics"); if ($perpage != $vbulletin->options['vm_perpage']) { $pagenavbits[] = "pp={$perpage}"; } if ($daysprune != ($vbulletin->userinfo['daysprune'] ? $vbulletin->userinfo['daysprune'] : 30)) { $pagenavbits[] = "daysprune={$daysprune}"; } if ($sortfield != 'dateline') { $pagenavbits[] = "sortfield={$sortfield}"; } if ($vbulletin->GPC['sortorder'] == 'asc') { $pagenavbits[] = 'order=' . $vbulletin->GPC['sortorder']; }
$vbulletin->GPC['pagenumber'] = 1; } $perpage = $vbulletin->options['album_pictures_perpage']; $total_pages = max(ceil($group['rawpicturecount'] / $perpage), 1); // 0 pictures still needs an empty page $pagenumber = $vbulletin->GPC['pagenumber'] > $total_pages ? $total_pages : $vbulletin->GPC['pagenumber']; $start = ($pagenumber - 1) * $perpage; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('group_pictures_query')) ? eval($hook) : false; $pictures_sql = $db->query_read("\n\t\tSELECT picture.pictureid, picture.userid, picture.caption, picture.extension, picture.filesize, picture.idhash,\n\t\t\tpicture.thumbnail_filesize, picture.thumbnail_dateline, picture.thumbnail_width, picture.thumbnail_height,\n\t\t\tsocialgrouppicture.dateline, user.username\n\t\t\t{$hook_query_fields}\n\t\tFROM " . TABLE_PREFIX . "socialgrouppicture AS socialgrouppicture\n\t\tINNER JOIN " . TABLE_PREFIX . "picture AS picture ON (picture.pictureid = socialgrouppicture.pictureid)\n\t\tINNER JOIN " . TABLE_PREFIX . "socialgroupmember AS socialgroupmember ON\n\t\t\t(socialgroupmember.userid = picture.userid AND socialgroupmember.groupid = {$group['groupid']} AND socialgroupmember.type = 'member')\n\t\tLEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.userid = picture.userid)\n\t\t{$hook_query_joins}\n\t\tWHERE socialgrouppicture.groupid = {$group['groupid']}\n\t\t\t{$hook_query_where}\n\t\tORDER BY socialgrouppicture.dateline DESC\n\t\tLIMIT {$start}, {$perpage}\n\t"); // work out the effective picturebit height/width including any borders and paddings; the +4 works around an IE float issue $picturebit_height = $vbulletin->options['album_thumbsize'] + ($usercss ? 0 : $stylevar['cellspacing']) + $stylevar['cellpadding'] * 2 + 4; $picturebit_width = $vbulletin->options['album_thumbsize'] + ($usercss ? 0 : $stylevar['cellspacing']) + $stylevar['cellpadding'] * 2; $picturebits = ''; while ($picture = $db->fetch_array($pictures_sql)) { $picture = prepare_pictureinfo_thumb($picture, $group); ($hook = vBulletinHook::fetch_hook('group_picturebit')) ? eval($hook) : false; eval('$picturebits .= "' . fetch_template('socialgroups_picturebit') . '";'); } $pagenav = construct_page_nav($pagenumber, $perpage, $group['rawpicturecount'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . "do=grouppictures&groupid={$group['groupid']}", ''); $show['add_pictures_link'] = ($group['membertype'] == 'member' and $permissions['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canalbum']); $navbits = array('group.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['social_groups'], 'group.php?' . $vbulletin->session->vars['sessionurl'] . 'groupid=' . $group['groupid'] => $group['name'], '' => $vbphrase['pictures']); $templatename = 'socialgroups_pictures'; } // ####################################################################### if ($_REQUEST['do'] == 'picture') { $vbulletin->input->clean_array_gpc('r', array('pictureid' => TYPE_UINT, 'pagenumber' => TYPE_UINT, 'perpage' => TYPE_UINT, 'commentid' => TYPE_UINT, 'showignored' => TYPE_BOOL)); if (!$vbulletin->userinfo['userid']) { print_no_permission(); } if (!($permissions['albumpermissions'] & $vbulletin->bf_ugp_albumpermissions['canviewalbum']) or !($vbulletin->options['socnet'] & $vbulletin->bf_misc_socnet['enable_albums'] and $vbulletin->options['socnet_groups_albums_enabled'])) {
vB_Bootstrap_Framework::init(); $types = vB_Types::instance(); $attachcache[$comment['pictureowner'] . '-' . $comment['filedataid']] = $attachmultiple->fetch_results("\r\n\t\t\t\ta.userid = {$comment['pictureowner']}\r\n\t\t\t\t\tAND\r\n\t\t\t\ta.filedataid = {$comment['filedataid']}\r\n\t\t\t\t\tAND\r\n\t\t\t\ta.contenttypeid IN (" . intval($types->getContentTypeID('vBForum_Album')) . ", " . intval($types->getContentTypeID('vBForum_SocialGroup')) . ")\r\n\t\t\t"); } if (!($firstpic = reset($attachcache[$comment['pictureowner'] . '-' . $comment['filedataid']]))) { $show['viewableattachment'] = false; $show['picture'] = false; } else { $show['viewableattachment'] = true; $show['picture'] = true; } $comment['pictureowner_name'] = $firstpic['username']; $comment['pictureowner_userid'] = $firstpic['userid']; $comment['caption'] = $firstpic['caption']; // $comment contains comment, picture, and album info $pictureinfo = prepare_pictureinfo_thumb($firstpic); $factory = new vB_Picture_CommentFactory($vbulletin, $bbcode, $pictureinfo); $response_handler = new vB_Picture_Comment_ModeratedView($vbulletin, $factory, $bbcode, $pictureinfo, $comment); $response_handler->cachable = false; $messagebits .= $response_handler->construct(); unset($factory, $response_handler); } $db->free_result($messages); $pagenavbits = array("do=viewpcs"); if ($perpage != $vbulletin->options['vm_perpage']) { $pagenavbits[] = "pp={$perpage}"; } if ($daysprune != ($vbulletin->userinfo['daysprune'] ? $vbulletin->userinfo['daysprune'] : 30)) { $pagenavbits[] = "daysprune={$daysprune}"; } if ($sortfield != 'dateline') {
function do_get_photos() { global $vbulletin, $db, $show, $vbphrase, $foruminfo, $userinfo, $albuminfo, $session, $contenttypeid; if (empty($albuminfo)) { standard_error(fetch_error('invalidid', $vbphrase['album'], $vbulletin->options['contactuslink'])); } if ($vbulletin->GPC['addgroup'] and $albuminfo['userid'] != $vbulletin->userinfo['userid']) { print_no_permission(); } ($hook = vBulletinHook::fetch_hook('album_album')) ? eval($hook) : false; $perpage = 999999; $vbulletin->GPC['pagenumber'] = 1; $input_pagenumber = $vbulletin->GPC['pagenumber']; if (can_moderate(0, 'canmoderatepictures') or $albuminfo['userid'] == $vbulletin->userinfo['userid']) { $totalpictures = $albuminfo['visible'] + $albuminfo['moderation']; } else { $totalpictures = $albuminfo['visible']; } $total_pages = max(ceil($totalpictures / $perpage), 1); // 0 pictures still needs an empty page $pagenumber = $vbulletin->GPC['pagenumber'] > $total_pages ? $total_pages : $vbulletin->GPC['pagenumber']; $start = ($pagenumber - 1) * $perpage; $hook_query_fields = $hook_query_joins = $hook_query_where = ''; ($hook = vBulletinHook::fetch_hook('album_album_query')) ? eval($hook) : false; $pictures = $db->query_read("\n SELECT\n a.attachmentid, a.userid, a.caption, a.dateline, a.state,\n fd.filesize, IF(fd.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, fd.thumbnail_dateline, fd.thumbnail_width, fd.thumbnail_height\n {$hook_query_fields}\n FROM " . TABLE_PREFIX . "attachment AS a\n INNER JOIN " . TABLE_PREFIX . "filedata AS fd ON (fd.filedataid = a.filedataid)\n {$hook_query_joins}\n WHERE\n a.contentid = {$albuminfo['albumid']}\n AND\n a.contenttypeid = " . intval($contenttypeid) . "\n " . ((!can_moderate(0, 'canmoderatepictures') and $albuminfo['userid'] != $vbulletin->userinfo['userid']) ? "AND a.state = 'visible'" : "") . "\n {$hook_query_where}\n ORDER BY a.dateline DESC\n LIMIT {$start}, {$perpage}\n "); // work out the effective picturebit height/width including any borders and paddings; the +4 works around an IE float issue $picturebit_height = $vbulletin->options['album_thumbsize'] + (($usercss ? 0 : $stylevar['cellspacing']) + $stylevar['cellpadding']) * 2 + 4; $picturebit_width = $vbulletin->options['album_thumbsize'] + (($usercss ? 0 : $stylevar['cellspacing']) + $stylevar['cellpadding']) * 2; $out_photos = array(); $picnum = 0; while ($picture = $db->fetch_array($pictures)) { $picture = prepare_pictureinfo_thumb($picture, $albuminfo); if ($picnum % $vbulletin->options['album_pictures_perpage'] == 0) { $show['page_anchor'] = true; $page_anchor = $picnum / $vbulletin->options['album_pictures_perpage'] + 1; } else { $show['page_anchor'] = false; } $picnum++; if ($picture['state'] != 'visible') { continue; } ($hook = vBulletinHook::fetch_hook('album_album_picturebit')) ? eval($hook) : false; $photo_url = "attachment.php?{$session[sessionurl]}attachmentid={$picture['attachmentid']}"; $out_photos[] = array('photoid' => $picture['attachmentid'], 'userid' => $picture['userid'], 'caption' => prepare_utf8_string(strip_tags(fetch_censored_text($picture['caption']))), 'photo_date' => prepare_utf8_string($picture['date'] . ' ' . $picture['time']), 'photo_url' => fr_fix_url($photo_url), 'thumb_url' => fr_fix_url($photo_url . '&thumb=1')); } $show['add_picture_option'] = ($userinfo['userid'] == $vbulletin->userinfo['userid'] and fetch_count_overage($userinfo['userid'], $albuminfo[albumid], $vbulletin->userinfo['permissions']['albummaxpics']) <= 0 and (!$vbulletin->options['album_maxpicsperalbum'] or $totalpictures - $vbulletin->options['album_maxpicsperalbum'] < 0)); if ($albuminfo['state'] == 'private') { $show['personalalbum'] = true; $albumtype = $vbphrase['private_album_paren']; } else { if ($albuminfo['state'] == 'profile') { $show['personalalbum'] = true; $albumtype = $vbphrase['profile_album_paren']; } } $out = array('photos' => $out_photos, 'total_photos' => $totalpictures, 'can_add_photo' => $show['add_picture_option'] ? true : false); return $out; }