TP-Docs
HTML5 Icon HTML5 Icon HTML5 Icon
TP on Social Media

Recent

Welcome to TinyPortal. Please login or sign up.

April 19, 2024, 08:41:31 PM

Login with username, password and session length
Members
  • Total Members: 3,885
  • Latest: Growner
Stats
  • Total Posts: 195,165
  • Total Topics: 21,219
  • Online today: 266
  • Online ever: 3,540 (September 03, 2022, 01:38:54 AM)
Users Online
  • Users: 1
  • Guests: 199
  • Total: 200
  • tino

[Block] SMF Gallery Random Picture

Started by Thurnok, December 01, 2006, 09:32:24 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Thurnok

(Note: new features in red)

What it is:
This block displays random, newest, oldest, most/least viewed or commented picture(s) from your SMF Gallery mod inside a block of your choice.  Actually, it displays the thumbnail and links to the full picture.

Type of block:
This is a phpblock.  It can be any block/article position (left/right/center/front/article).  If you use it in a left/right block, you should set the columns to 1.  If you use a center/frontpage/article block, then set the columns to however many you want.

This block snippet can be used in multiple simultaneous blocks using the same or different configuration settings in each without issue.


Features:
  • configurable number of pictures to display
  • sort order to display newest/oldest or most/least pics
  • configurable number of columns to display the pictures in
  • enable title display (if viewer is picture poster, it becomes a link to edit the picture)
  • displayed thumbnail links to full picture from the gallery
  • enable display of picture poster (links to their profile)
  • enable display of date posted
  • enable display of category picture is in (links to that gallery category)
  • enable display of number of views
  • enable display of picture dimensions (width X height)
  • enable display of picture's filesize
  • enable display of picture's description
  • can disallow pictures from various categories
  • can allow pictures only from various categories (disallowed cats override)
  • only displays approved pictures
  • configurable to require allowedTo('smfgallery_view') permission or not for viewing thumbnail
  • display pics posted by a member who's profile you are viewing, in the profile screen (see profile note)
  • display pics posted by members in your buddy list
  • display # of comments with link to picture/comments

    Profile Note: You must enable panels (blocks) for the profile screen via TinyPortal -> Settings -> Panels -> Hide panels when in these sections: -> Profile screen: No

    Buddy List Note: This will work everywhere except under the following condition:
    - you have the option to display profile pics turned on in an SMF Gallery Random Pic block that displays while in the profile screen, and you are currently viewing some member's profile.
    In otherwords, the Profile pics display will override the buddy pics display in that case.  If this same block however, displays on other pages (frontpage, forum, etc) then the buddy pics will display in the block when on those pages!

    See the Admin configuration section in code for each configuration variable.

    ////////////////////////////////////////////////////
    // SMF Gallery Random Picture - ver. 1.8          //
    ////////////////////////////////////////////////////
    //
    // Developed by Thurnok
    // Thurnok -AT- tinyportal .DOT. net
    // November 30, 2006
    //
    // Updated 9/26/2008
    // 1.8
    // - added display # of comments option
    //
    // Used in a TinyPortal phpblock or Article.
    // This block displays random/most/least/newest/oldest picture(s) from
    // the SMF Gallery mod along with other information
    //
    //////////////////////////////////////////////

    global $scripturl, $db_prefix, $modSettings, $boardurl, $ID_MEMBER, $user_info, $context;

    /*
    ****************************************
    ****************************************
    ***    !! Admin Config Section !!    ***
    ****************************************
    ****************************************
    */

    //   *****   LAYOUT OPTIONS   *****
    // how many pictures do you want to show?  0 = all!
    $gal_numpics = 1;

    // use random, or most recent pics?
    // 0 = random, 1 = most recent, 2 = most viewed, 3 = most commented
    $gal_showtype = 0;
    // sort :: 0 = Descending, 1 = Ascending
    $gal_sort = 0;

    // enable profile pics display?
    // 0 = disable, 1 = enable --- if enabled, and you are viewing a member profile, show pics from that member only
    // other options still apply (showtype, sort order, etc)
    $gal_profile = 1;

    // only show pics from buddies?
    // 0 = disable, 1 = enable --- if enabled, will only show pics posted by members in your buddy list
    $gal_buddies = 0;

    // use Normal Size Text, or Small Size Text? (0 = Normal Size, 1 = Small Size)
    $gal_smalltext = 1;

    // put pictures in how many columns?  (1 for left/right block, more for centerblock / article if you wish)
    $gal_columns = 1;

    // information display flags (0 = No, 1 = Yes)
    // display picture title?
    $gal_dispTitle = 1;
    // display membername who posted pic?
    $gal_dispMember = 1;
    // display posted date?
    $gal_dispDate = 1;
    // display category the picture is in?
    $gal_dispCategory = 1;
    // display number of views?
    $gal_dispViews = 1;
    // display dimensions?
    $gal_dispDimensions = 1;
    // display filesize?
    $gal_dispSize = 1;
    // display picture description?
    $gal_dispDescription = 0;
    // display # comments
    $gal_dispNumComments = 0;

    //   *****   SECURITY CONFIGURATION   *****
    // do not allow the following category numbers to be displayed
    // example: $gal_disallowCats = "4,2,7" - don't show categories 2, 4, or 7
    $gal_disallowCats = "";
    // select only from the following cats - leave empty for all - NOTE:($gal_disallowCats overrides)
    // example: $gal_allowCats = "1,3,4" - show only categories 1, 3, and 4
    $gal_allowCats = "";
    // Require the user has allowedTo('smfgallery_view') permission to view random pics thumbnails in block?
    $gal_viewPermission = 1;

    /*
    ****************************************
    ****************************************
    ***  !! END Admin Config Section !!  ***
    ****************************************
    ****************************************
    */

    //###############################################
    //###############################################
    //   You shouldn't change anything below here
    //###############################################
    //###############################################

    if (empty($modSettings['gallery_url'])){
    $modSettings['gallery_url'] = $boardurl . '/gallery/';
    }

    $gal_textclass = empty($gal_smalltext) ? "normaltext" : "smalltext";

    // get this user's buddy list
    $gal_buddylist = implode(",", $user_info['buddies']);

    // prep for our switch routine
    if (empty($gal_showtype))
    $gal_showtype = 0;

    // sort text
    if (empty($gal_sort)){
    $gal_sort_text = 'DESC';
    } else {
    $gal_sort_text = '';
    }

    // are we viewing a member profile and $gal_profile is enabled?
    if (!empty($gal_profile) && strtolower($context['current_action']) == "profile"){
    $gal_member = empty($_GET['u']) ? $ID_MEMBER : $_GET['u'];
    }
    // allow member to view random pic based on security settings
    if (empty($gal_viewPermission) || allowedTo('smfgallery_view')){
    $gal_query = '
    SELECT
    thumbfilename,
    ID_PICTURE,
    ID_MEMBER,
    date,
    title,
    description,
    views,
    filesize,
    height,
    width,
    commenttotal,
    ID_CAT
    FROM '.$db_prefix.'gallery_pic
    WHERE approved = 1
    '.(empty($gal_member) ? (empty($gal_buddies) ? "" : (empty($gal_buddylist) ? "AND ID_MEMBER = NULL " : "AND ID_MEMBER in ($gal_buddylist)")) : "AND ID_MEMBER = $gal_member" ).'
    '.(empty($gal_disallowCats) ? "" : " AND ID_CAT NOT IN ($gal_disallowCats)").'
    '.(empty($gal_allowCats) ? "" : " AND ID_CAT IN ($gal_allowCats)").'
    GROUP BY thumbfilename ';

    switch ($gal_showtype){
    // most/least recent
    case 1:
    $gal_query .= '
    ORDER BY date '.$gal_sort_text;
    break;

    // most/least viewed
    case 2:
    $gal_query .= '
    ORDER BY views '.$gal_sort_text;
    break;

    // most/least commented
    case 3:
    $gal_query .= '
    ORDER BY commenttotal '.$gal_sort_text;
    break;

    default:
    $gal_query .= '
    ORDER BY rand() '.$gal_sort_text;
    break;
    }
    $gal_query .= (empty($_GET['gal_viewall']) && !empty($gal_numpics)) ? ' LIMIT '.$gal_numpics : '';
    $gal_result = mysql_query($gal_query);
    if (!$gal_result){
    // error retrieving information from database
    if (mysql_errno() == 1146){
    echo '<p />Error, no database found!<p />';
    } else {
    echo '<p />MySQL error:'.mysql_error().'<p />';
    }
    } else {
    echo "\n".'<table cellspacing="0" cellpadding="5" border="0" align="center" width="90%">'."\n";

    $gal_colcnt = 1;
    echo " <tr>\n";
    while ($row = mysql_fetch_assoc($gal_result)){
    if ($gal_colcnt > $gal_columns){
    // close out the row and start a new row
    echo " </tr>\n <tr>\n".' <td colspan="'.$gal_columns.'"><hr /></td>'."\n </tr>\n <tr>\n";
    // reset count to column 1
    $gal_colcnt = 1;
    }
    echo ' <td class="'.$gal_textclass.'" align="center">'."\n";
    // display title if enabled, make edit link if viewing user is picture poster
    if (!empty($gal_dispTitle)){
    echo " ".($ID_MEMBER == $row['ID_MEMBER'] ? ('<a href="'.$scripturl.'?action=gallery;sa=edit;id='.$row['ID_PICTURE'].'">'.$row['title'].'</a>') : $row['title'])."<br />\n";
    }
    // display the picture thumbnail and link it to gallery full picture
    echo ' <a href="'.$scripturl.'?action=gallery;sa=view;id='.$row['ID_PICTURE'].'"><img src="'.$modSettings['gallery_url'].$row['thumbfilename'].'" /></a><br />'."\n";
    // display poster's name and posted date if enabled
    if (!empty($gal_dispMember) || !empty($gal_dispDate)){
    echo 'Posted';
    if (!empty($gal_dispMember)){
    // display the membername who posted pic?  need to get name based on ID_MEMBER
    $gal_tmp = mysql_fetch_assoc(mysql_query("SELECT memberName FROM ".$db_prefix."members WHERE ID_MEMBER = ".$row['ID_MEMBER']));
    echo ' by <a href="'.$scripturl.'?action=profile;u='.$row['ID_MEMBER'].'">'.$gal_tmp['memberName'].'</a>';
    }
    if (!empty($gal_dispDate)){
    // display the date it was posted
    echo ' on '.date("d M Y", $row['date']);
    }
    echo "<br />\n";
    }
    // display category if enabled
    if (!empty($gal_dispCategory)){
    // get category name based on category id
    $gal_tmp = mysql_fetch_assoc(mysql_query("SELECT title FROM ".$db_prefix."gallery_cat WHERE ID_CAT = ".$row['ID_CAT']));
    echo '<br />in<br /><a href="'.$scripturl.'?action=gallery;cat='.$row['ID_CAT'].'">'.$gal_tmp['title']."</a><br /><br />\n";
    }
    // display number of views if enabled
    if (!empty($gal_dispViews)){
    echo "Viewed ".$row['views']." times<br />\n";
    }
    // display dimensions if enabled
    if (!empty($gal_dispDimensions)){
    echo $row['width']."w X ".$row['height']."h<br />\n";
    }
    // display filesize if enabled
    if (!empty($gal_dispSize)){
    echo $row['filesize']." bytes<br />\n";
    }
    // display description if enabled
    if (!empty($gal_dispDescription)){
    echo "<br />".$row['description']."<br />\n";
    }
    // display # of comments if enabled
    if (!empty($gal_dispNumComments)){
    echo '<br /><i><a href="'.$scripturl.'?action=gallery;sa=view;id='.$row['ID_PICTURE'].'">'.$row['commenttotal']."</a> comment(s)</i><br />\n";
    }
    echo " </td>\n";
    $gal_colcnt++;
    }
    mysql_free_result($gal_result);
    echo " </tr>\n</table>\n";
    if (!empty($gal_member) && empty($_GET['gal_viewall']))
    echo '<br /><a href="'.$boardurl.'/index.php?action=profile;u='.$gal_member.';gal_viewall=1">View all pics from this member</a>';
    if (!empty($gal_buddies) && empty($_GET['gal_viewall'])){
    // build the link
    $gal_querystring = $context['TPortal']['querystring'];
    $gal_querystring .= empty($gal_querystring) ? 'gal_viewall=1' : ';gal_viewall=1';
    echo '<br /><a href="'.$boardurl.'/index.php?'.$gal_querystring.'">View all pics of buddies</a>';
    }
    }
    } else {
    echo 'Sorry, you do not have permission to view pictures!';
    }

akulion

way out man!! now this is one heck of a well thought out and made block!! you rock! thanks :D

whoesa


Thurnok

Thanks guys...

Quick update - added capability to allow/disallow viewing based on allowedTo('smfgallery_view') permission.

So, you can either have it set so a user is required to have the View SMF Gallery permission in their membergroup, or you can allow members view the random pic (the thumbnail) even if they are not allowed to view the gallery.  They will not be able to view the full picture if that is the case, just the thumbnail in the Random Picture block.

Update in first post.

ladybronwyn

#4
this may be a stupid question.. but do i put this code in a php block or in the .php file itself?



i figured it out :)

G6Cad


Lum-chan

Nifty piece of code but one question: How do I get the size of the text the same as in other LeftBlocks?
Wat do I need to add/change and where as I'm a complete php noobie.

TIA

Lum-chan

pinegr05

Great code Thurnok! 

Could the code be altered to be shown on a front page block to fit the block instead of a thumbnail and fade in and out for each picture.

Once again this is a great block and a testament of the team here at Tinyportal in support of the community.

Thurnok

New version in first post with a small update (no pun intended).

The new version now uses the "smalltext" class (of TP's) by default.  You can use either the "normaltext" or "smalltext" class by changing the new variable in the user config section: $gal_smalltext

$gal_smalltext = 1;  // use TP's "smalltext" class
$gal_smalltext = 0;  // use TP's "normaltext" class

@Lum-chan - get new code, copy/paste - done.

@pinegr05 - There is a slide show block that does something like that already.  It should be in the block code snippets here somewhere.

pinegr05

Thanks Thurnok.  I have been playing with the codes in the admin section and I have put the code in an article.  Makes for a neat team page.

Thanks again!