need custom "photo contest" voting script need custom "photo contest" voting script
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

need custom "photo contest" voting script

Started by djyeo, December 16, 2004, 03:15:16 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

djyeo

Hi,
Will pay to create "photo contest" voting system for my gallery. I created a photo contest album on the main page and I want only the pictures inside this photo contest album to have "vote for this photo" button below every photos so that members can vote for the pictures they like, but only within the "photo contest" album not the others. Rate starts at $50 depending level of difficulty.


Casper

Is the 'contest' album static, i.e., will it always be the same album you run the competition in, or will you continually add new albums for new contests, as the old contest finishes.

In the first case, this will be easy enough to do, with an if/else switch in the rating function.  In the second case, if these albums will be the only ones within the competition category, the same applies, but not if they could be anywhere.
It has been a long time now since I did my little bit here, and have done no coding or any other such stuff since. I'm back to being a noob here

djyeo

Casper,
I will be adding new albums every week as the contest is planned to be held weekly, but the new albums that will be added weekly will be under the same competition category. For example under competition category, I will have new albums every week, example Jan week 1 album, week 2 album and etc.....but these albums will always be under competition category. Please see my site http://www.darwinonline.org there is a photo contest category and the weekly albums will be created under this category. Thanks.

Casper

OK, here's the code.

Open displayimage.php, and find;

function html_rating_box()
{
    global $CONFIG, $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA;
    global $template_image_rating, $lang_rate_pic;

    if (!(USER_CAN_RATE_PICTURES && $CURRENT_ALBUM_DATA['votes'] == 'YES')) return '';


replace it with this;

function html_rating_box()
{
    global $CONFIG, $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA, $HTTP_SERVER_VARS;
    global $template_image_rating, $lang_rate_pic, $cat;

    if (!(USER_CAN_RATE_PICTURES && $CURRENT_ALBUM_DATA['category'] == 2)) return '';


This assumes you keep category '2' as your contest category.
It has been a long time now since I did my little bit here, and have done no coding or any other such stuff since. I'm back to being a noob here

djyeo

Casper,
Thank you very much for the code. It works, but is it possible to add the number of votes under the thumbnails in the album view. For example when I click on week 1, and the album will show the thumbnails and I'd like the number of votes for every picture to be below the thumbnails, probably somewhere below the name of the user who uploaded the picture. Thank you.

btw, my contest album is category 5

foulu

change
$CURRENT_ALBUM_DATA['category'] == 2

to

$CURRENT_ALBUM_DATA['category'] == 5

to make category 5 contest alb

calexcyou

#6
I basically need the same thing , but i have a newer version: here is what i have:

<?php
/*************************
  Coppermine Photo Gallery
  ************************
  Copyright (c) 2003-2005 Coppermine Dev Team
  v1.1 originaly written by Gregory DEMAR

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.
  ********************************************
  Coppermine version: 1.4.2
  $Source: /cvsroot/coppermine/devel/displayimage.php,v $
  $Revision: 1.102 $
  $Author: gaugau $
  $Date: 2005/10/25 01:15:42 $
**********************************************/

define('IN_COPPERMINE'true);
define('DISPLAYIMAGE_PHP'true);
define('INDEX_PHP'true);
//define('SMILIES_PHP', true);

require('include/init.inc.php');

if (!
USER_ID && $CONFIG['allow_unlogged_access'] == 0) {
    $redirect $redirect "login.php";
    header("Location: $redirect");
    exit();
}

if (
$CONFIG['enable_smilies']) include("include/smilies.inc.php");

$breadcrumb '';
$breadcrumb_text '';
$cat_data = array();

if(
$CONFIG['read_exif_data'] ){
        include("include/exif_php.inc.php");
}
if(
$CONFIG['read_iptc_data'] ){
        include("include/iptc.inc.php");
}


/**
 * Local functions definition
 */

# Sanitize the data - to fix the XSS vulnerability - Aditya
function sanitize_data(&$value$key)
{
if (is_array($value)) {
array_walk($value'sanitize_data');
} else {
# sanitize against sql/html injection; trim any nongraphical non-ASCII character:
$value trim(htmlentities(strip_tags(trim($value,"\x7f..\xff\x0..\x1f")),ENT_QUOTES));
}
}
function 
html_picture_menu()
{
    global $lang_display_image_php$CURRENT_PIC_DATA$CURRENT_ALBUM_DATA$CONFIG;

    $mime_content cpg_get_type($CURRENT_PIC_DATA['filename']);
    $picmenu '';

  if (false) { //(!($mime_content['content']=='image')) {
    $picmenu = <<<EOT
     <a href="#" onclick="return MM_openBrWindow('setplayer.php?={$mime_content['extension']}','Set_Player','scrollbars=no,toolbar=no,status=no,resizable=no')" class="admin_menu" >{$lang_display_image_php['set_player']}</a>
EOT;
  }

  if ((USER_ADMIN_MODE && $CURRENT_ALBUM_DATA['category'] == FIRST_USER_CAT USER_ID) || ($CONFIG['users_can_edit_pics'] && $CURRENT_PIC_DATA['owner_id'] == USER_ID && USER_ID != 0) || GALLERY_ADMIN_MODE) {
    $picmenu .= <<<EOT
     <a href="javascript:;" onclick="return MM_openBrWindow('picEditor.php?id={$CURRENT_PIC_DATA['pid']}','Crop_Picture','scrollbars=yes,toolbar=no,status=yes,resizable=yes')" class="admin_menu" >{$lang_display_image_php['crop_pic']}</a> <a href="editOnePic.php?id={$CURRENT_PIC_DATA['pid']}&amp;what=picture"  class="admin_menu">{$lang_display_image_php['edit_pic']}</a> <a href="delete.php?id={$CURRENT_PIC_DATA['pid']}&amp;what=picture"  class="admin_menu" onclick="return confirm('{$lang_display_image_php['confirm_del']}'); return false; ">{$lang_display_image_php['del_pic']}</a>
EOT;
  }

  return $picmenu;
}

// Display picture information
function html_picinfo()
{
    global $CONFIG$CURRENT_PIC_DATA$CURRENT_ALBUM_DATA$THEME_DIR$FAVPICS;
    global $album$lang_picinfo$lang_display_image_php$lang_byte_units$lastup_date_fmt;

    if ($CURRENT_PIC_DATA['owner_id'] && $CURRENT_PIC_DATA['owner_name']) {
        $owner_link '<a href ="profile.php?uid=' $CURRENT_PIC_DATA['owner_id'] . '">' $CURRENT_PIC_DATA['owner_name'] . '</a> ';
    } else {
        $owner_link '';
    }

    if (GALLERY_ADMIN_MODE && $CURRENT_PIC_DATA['pic_raw_ip']) {
        if ($CURRENT_PIC_DATA['pic_hdr_ip']) {
            $ipinfo ' (' $CURRENT_PIC_DATA['pic_hdr_ip'] . '[' $CURRENT_PIC_DATA['pic_raw_ip'] . ']) / ';
        } else {
            $ipinfo ' (' $CURRENT_PIC_DATA['pic_raw_ip'] . ') / ';
        }
    } else {
        if ($owner_link) {
            $ipinfo '/ ';
        } else {
            $ipinfo '';
        }
    }

    $info[$lang_picinfo['Filename']] = htmlspecialchars($CURRENT_PIC_DATA['filename']);
    $info[$lang_picinfo['Album name']] = '<span class="alblink">' $owner_link $ipinfo '<a href="thumbnails.php?album=' $CURRENT_PIC_DATA['aid'] . '">' $CURRENT_ALBUM_DATA['title'] . '</a></span>';

    if ($CURRENT_PIC_DATA['votes'] > 0) {
        if (defined('THEME_HAS_RATING_GRAPHICS')) {
            $prefix $THEME_DIR;
        } else {
            $prefix '';
        }
        if (GALLERY_ADMIN_MODE) {
          $width 800;
          $height 500;
        } else {
          $width 400;
          $height 250;
        }

        $detailsLink $CONFIG['vote_details'] ? ' (<a href="#" onclick="MM_openBrWindow(\'stat_details.php?type=vote&amp;pid='.$CURRENT_PIC_DATA['pid'].'&amp;sort=sdate&amp;dir=&amp;sdate=1&amp;ip=1&amp;rating=1&amp;referer=1&amp;browser=1&amp;os=1\',\'\',\'resizable=yes,width='.$width.',height='.$height.',top=50,left=50,scrollbars=yes\'); return false;">'.$lang_picinfo['details'].'</a>)' '';
        $info[sprintf($lang_picinfo['Rating'], $CURRENT_PIC_DATA['votes'])] = '<img src="' $prefix 'images/rating' round($CURRENT_PIC_DATA['pic_rating'] / 2000) . '.gif" align="middle" alt="" />'.$detailsLink;
    }

    if ($CURRENT_PIC_DATA['keywords'] != "") {
        $info[$lang_picinfo['Keywords']] = '<span class="alblink">' preg_replace("/(\S+)/""<a href=\"thumbnails.php?album=search&amp;search=\\1\">\\1</a>" $CURRENT_PIC_DATA['keywords']) . '</span>';
    }

    for ($i 1$i <= 4$i++) {
        if ($CONFIG['user_field' $i '_name']) {
            if ($CURRENT_PIC_DATA['user' $i] != "") {
                $info[$CONFIG['user_field' $i '_name']] = make_clickable($CURRENT_PIC_DATA['user' $i]);
            }
        }
    }

    $info[$lang_picinfo['File Size']] = ($CURRENT_PIC_DATA['filesize'] > 10240 ? ($CURRENT_PIC_DATA['filesize'] >> 10) . '&nbsp;' $lang_byte_units[1] : $CURRENT_PIC_DATA['filesize'] . '&nbsp;' $lang_byte_units[0]);
    $info[$lang_picinfo['File Size']] = '<span dir="ltr">' $info[$lang_picinfo['File Size']] . '</span>';
    $info[$lang_picinfo['Date Added']] = localised_date($CURRENT_PIC_DATA['ctime'],$lastup_date_fmt);
    $info[$lang_picinfo['Dimensions']] = sprintf($lang_display_image_php['size'], $CURRENT_PIC_DATA['pwidth'], $CURRENT_PIC_DATA['pheight']);
    $detailsLink = ($CURRENT_PIC_DATA['hits'] && $CONFIG['vote_details'] && GALLERY_ADMIN_MODE) ? ' (<a href="#" onclick="MM_openBrWindow(\'stat_details.php?type=hits&amp;pid='.$CURRENT_PIC_DATA['pid'].'&amp;sort=sdate&amp;dir=&amp;sdate=1&amp;ip=1&amp;search_phrase=1&amp;referer=1&amp;browser=1&amp;os=1\',\'\',\'resizable=yes,width=800,height=500,top=50,left=50,scrollbars=yes\'); return false;">'.$lang_picinfo['details'].'</a>)' '';
    $info[$lang_picinfo['Displayed']] = sprintf($lang_display_image_php['views'], $CURRENT_PIC_DATA['hits']);
    $info[$lang_picinfo['Displayed']] .= $detailsLink;

    $path_to_pic $CONFIG['fullpath'] . $CURRENT_PIC_DATA['filepath'] . $CURRENT_PIC_DATA['filename'];

    if ($CONFIG['read_exif_data']) $exif exif_parse_file($path_to_pic);

    if (isset($exif) && is_array($exif)) {
array_walk($exif'sanitize_data');
        $info array_merge($info,$exif);
    }

    if ($CONFIG['read_iptc_data']) $iptc get_IPTC($path_to_pic);

    if (isset($iptc) && is_array($iptc)) {
array_walk($iptc'sanitize_data');
        if (isset($iptc['Title'])) $info[$lang_picinfo['iptcTitle']] = $iptc['Title'];
        if (isset($iptc['Copyright'])) $info[$lang_picinfo['iptcCopyright']] = $iptc['Copyright'];
        if (!empty($iptc['Keywords'])) $info[$lang_picinfo['iptcKeywords']] = implode(' ',$iptc['Keywords']);
        if (isset($iptc['Category'])) $info[$lang_picinfo['iptcCategory']] = $iptc['Category'];
        if (!empty($iptc['SubCategories'])) $info[$lang_picinfo['iptcSubCategories']] = implode(' ',$iptc['SubCategories']);
    }
    // Create the absolute URL for display in info
    $info[$lang_picinfo['URL']] = '<a href="' $CONFIG["ecards_more_pic_target"] . (substr($CONFIG["ecards_more_pic_target"], -1) == '/' '' '/') .basename($_SERVER['PHP_SELF']) . "?pos=-$CURRENT_PIC_DATA[pid]'" >' $CONFIG["ecards_more_pic_target"] . (substr($CONFIG["ecards_more_pic_target"], -1) == '/' '' '/') . basename($_SERVER['PHP_SELF']) . "?pos=-$CURRENT_PIC_DATA[pid]'</a>';
    // with subdomains the variable is $_SERVER["SERVER_NAME"] does not return the right value instead of using a new config variable I reused $CONFIG["ecards_more_pic_target"] no trailing slash in the configure
    // Create the add to fav link
    if (!in_array($CURRENT_PIC_DATA['pid'], $FAVPICS)) {
        $info[$lang_picinfo['addFavPhrase']] = "<a href=\"addfav.php?pid=" $CURRENT_PIC_DATA['pid'] . "\" >" $lang_picinfo['addFav'] . '</a>';
    } else {
        $info[$lang_picinfo['addFavPhrase']] = "<a href=\"addfav.php?pid=" $CURRENT_PIC_DATA['pid'] . "\" >" $lang_picinfo['remFav'] . '</a>';
    }

    /**
     * Filter file information
     */
    $info CPGPluginAPI::filter('file_info',$info);

    return theme_html_picinfo($info);
}

function 
get_subcat_data($parent$level)
{
    global $CONFIG$ALBUM_SET_ARRAY;

    $result cpg_db_query("SELECT cid, name, description FROM {$CONFIG['TABLE_CATEGORIES']} WHERE parent = '$parent'");
    if (mysql_num_rows($result) > 0) {
        $rowset cpg_db_fetch_rowset($result);
        foreach ($rowset as $subcat) {
            $result cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = {$subcat['cid']}");
            $album_count mysql_num_rows($result);
            while ($row mysql_fetch_array($result)) {
                $ALBUM_SET_ARRAY[] = $row['aid'];
            // while
        }
        if ($level 1get_subcat_data($subcat['cid'], $level -1);
    }
}

/**
 * Main code
 */

$pos = isset($_GET['pos']) ? (int)$_GET['pos'] : 0;

/**
 * Hack added by tarique to prevent incorrect picture being seen on last view or last uploaded
 */

$pid = isset($_GET['pid']) ? (int)$_GET['pid'] : 0;

$cat = isset($_GET['cat']) ? (int)$_GET['cat'] : 0;
$album = isset($_GET['album']) ? $_GET['album'] : '';
// Build the album set if required
/*
//disabled by donnoman
if (!is_numeric($album) && $cat) { // Meta albums, we need to restrict the albums to the current category
    if ($cat < 0) {
        $ALBUM_SET .= 'AND aid IN (' . (- $cat) . ') ';
    } else {
        $ALBUM_SET_ARRAY = array();
        if ($cat == USER_GAL_CAT)
            $where = 'category > ' . FIRST_USER_CAT;
        else
            $where = "category = '$cat'";

        $result = cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE $where");
        while ($row = mysql_fetch_array($result)) {
            $ALBUM_SET_ARRAY[] = $row['aid'];
        } // while
        get_subcat_data($cat, $CONFIG['subcat_level']);
        // Treat the album set
        if (count($ALBUM_SET_ARRAY)) {
            $set = '';
            foreach ($ALBUM_SET_ARRAY as $album_id) $set .= ($set == '') ? $album_id : ',' . $album_id;
            $ALBUM_SET .= "AND aid IN ($set) ";
        }
    }
}
//disabled by donnoman
*/
//get_meta_album_set in functions.inc.php will populate the $ALBUM_SET instead; matches $META_ALBUM_SET.
get_meta_album_set($cat,$ALBUM_SET);
$META_ALBUM_SET $ALBUM_SET//displayimage uses $ALBUM_SET but get_pic_data in functions now uses $META_ALBUM_SET

// Retrieve data for the current picture
if ($pos || $pid 0) {
    $pid = ($pos 0) ? -$pos $pid;
    $result cpg_db_query("SELECT aid from {$CONFIG['TABLE_PICTURES']} WHERE pid='$pid$ALBUM_SET LIMIT 1");
    if (mysql_num_rows($result) == 0cpg_die(ERROR$lang_errors['non_exist_ap'], __FILE____LINE__);
    $row mysql_fetch_array($result);
    $album $row['aid'];
    $pic_data get_pic_data($album$pic_count$album_name, -1, -1false);
    for($pos 0$pic_data[$pos]['pid'] != $pid && $pos $pic_count$pos++);
    $pic_data get_pic_data($album$pic_count$album_name$pos1false);
    $CURRENT_PIC_DATA $pic_data[0];

} elseif (isset(
$_GET['pos'])) {
    $pic_data get_pic_data($album$pic_count$album_name$pos1false);
    if ($pic_count == 0) {
        cpg_die(INFORMATION$lang_errors['no_img_to_display'], __FILE____LINE__);
    } elseif (count($pic_data) == && $pos >= $pic_count) {
        $pos $pic_count 1;
        $human_pos $pos 1;
        $pic_data get_pic_data($album$pic_count$album_name$pos1false);
    }
    $CURRENT_PIC_DATA $pic_data[0];
}

// Retrieve data for the current album
if (isset($CURRENT_PIC_DATA)) {
    $result cpg_db_query("SELECT title, comments, votes, category, aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE aid='{$CURRENT_PIC_DATA['aid']}' LIMIT 1");
    if (!mysql_num_rows($result)) cpg_die(CRITICAL_ERRORsprintf($lang_errors['pic_in_invalid_album'], $CURRENT_PIC_DATA['aid']), __FILE____LINE__);
    $CURRENT_ALBUM_DATA mysql_fetch_array($result);

    if (is_numeric($album)) {
        $cat = - $album;
        $actual_cat $CURRENT_ALBUM_DATA['category'];
        breadcrumb($actual_cat$breadcrumb$breadcrumb_text);
        $cat = - $album;
    } else {
        $actual_cat $CURRENT_ALBUM_DATA['category'];
        breadcrumb($actual_cat$breadcrumb$breadcrumb_text);
    }
}

if (isset(
$_GET['fullsize'])) {
    theme_display_fullsize_pic();
    ob_end_flush();
} elseif (isset(
$_GET['slideshow'])) {
    theme_slideshow();
    ob_end_flush();
} else {
    if (!isset($_GET['pos'])) cpg_die(ERROR$lang_errors['non_exist_ap'], __FILE____LINE__);
    $picture_title $CURRENT_PIC_DATA['title'] ? $CURRENT_PIC_DATA['title'] : strtr(preg_replace("/(.+)\..*?\Z/""\\1"htmlspecialchars($CURRENT_PIC_DATA['filename'])), "_"" ");

    $nav_menu theme_html_img_nav_menu();
    $picture theme_html_picture();
    $votes theme_html_rating_box();
    $pic_info html_picinfo();
    $comments theme_html_comments($CURRENT_PIC_DATA['pid']);
    if ($CURRENT_PIC_DATA['keywords']) { $meta_keywords "<meta name=\"keywords\" content=\"".$CURRENT_PIC_DATA['keywords']."\"/>"; }
        $meta_nav .= "<link rel=\"alternate\" type=\"text/xml\" title=\"RSS feed\" href=\"rss.php\" />
        "
;
        $meta_keywords .= $meta_nav;
    pageheader($album_name '/' $picture_title$meta_keywordsfalse);
    // Display Breadcrumbs
    if ($breadcrumb && !(strpos($CONFIG['main_page_layout'],"breadcrumb")===false)) {
        theme_display_breadcrumb($breadcrumb$cat_data);
    }
    // Display Filmstrip if the album is not search
    if ($album != 'search') {
        $film_strip display_film_strip($album, (isset($cat) ? $cat 0), $postrue);
    }
    CPGPluginAPI::filter('post_breadcrumb',null);
    theme_display_image($nav_menu$picture$votes$pic_info$comments$film_strip);
    pagefooter();
    ob_end_flush();
}

?>
[code]

so i need some help, i like to have the same weekly contest....
[/code]

ecto

calexcyou; a good tip: when you post code, put it it between [ code ][ /code ] tags (without spaces) so it won't take up so much space, and it'll be easier for all to see what's code and what's not, and the code will show up like it's looking in the file (lines not being wrapped).

It's also unnecessary to post the code for a whole file (if you didn't change practically the whole file, of course). If you made minor changes, just post the changes.

calexcyou

sorry about that I am new to this ..any help?

ecto

No worries, nobody knows everything from the beginning!

You should edit your last post (with the "Modify" button) and put those code tags in, and also remove the lines you pasted that are not changed from the original file.

calexcyou