Bewertete Bilder markieren? Bewertete Bilder markieren?
 

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

Bewertete Bilder markieren?

Started by snoopy1972fc, December 01, 2007, 12:31:27 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

snoopy1972fc

Ist es möglich bei bereits bewerteten Bildern nicht mehr die Möglichkeit zu geben zu bewerten?
Stattdessen würde ich einen Hinweis oder eine andere Grafik anzeigen lassen, das das Bild bereits bewertet wurde.
Meine Mitglieder und ich finden, das das einer der größten Nachteile von Coppermine ist, weil man, wenn man ein bereits bewertetes Bild nochmal bewertet nur einen Fehler mit dem Hinweis, das bereits bewertet wurde angezeigt wird.
Würde das aber sofort angezeigt würde man sich das hin und her ersparen.

lamama

1. nicht drängeln (hab deinen selfquote-only post gelöscht)

2. Ich hab spontan keine Lösung für dein Problem parat, da meine PHP-Kenntnisse begrenzt sind. Es sollte aber möglich sein. Es wird ja bereits irgendwo abgefragt, ob User X das Bild bereits bewertet hat...

3. Der Sinn der Bewertungsfunktion ist, das jeder User jedes Bild einmal bewerten kann. Und aus den Wertungen aller User ein Durchschnitt berechnet wird. Sonst würde ja die Bewertung eines Bildes davon abhängen, ob der erste "Bewerter" das Bild mag oder nicht.

snoopy1972fc

Sorry, wollte nicht drängeln. War ein Versehen.
Ich glaube da wurde eine Kleinigkeit falsch verstanden. Wenn ein und der selbe Benutzer ein Bild bewertet hat wird bei ihm immernoch die Möglichkeit zum Bewerten angezeigt. Das wollte ich weg haben. Für die Anderen Benutzer soll natürlich die Möglichkeit zu bewerten weiterhin bestehen.

Das es möglich ist glaube ich auch, doch auch mit meinen PHP-Kenntnissen schaffe ich das nicht alleine.

lamama

hmmm... welche CPG-Version benutzt du? ich meine, das war mal bei einer ziemlich alten Version möglich (dass ein User ein Bild mehrmals bewertet), sollte es aber mittlerweile nicht mehr sein.

Joachim Müller

Ich glaube, dass Snoopy sich daran stört, dass die Rating-Icons auch für Bilder angezeigt werden, die der Benutzer schon bewertet hat. Wenn er dann noch mal draufklickt bekommt er eine Watsche. Das ist in der Tat nicht so Benutzerfreundliche, mir fällt aber kein einfacher Hack ein.

snoopy1972fc

Quote from: GauGau on December 04, 2007, 08:06:56 AM
Ich glaube, dass Snoopy sich daran stört, dass die Rating-Icons auch für Bilder angezeigt werden, die der Benutzer schon bewertet hat. Wenn er dann noch mal draufklickt bekommt er eine Watsche. Das ist in der Tat nicht so Benutzerfreundliche, mir fällt aber kein einfacher Hack ein.
Ja, genau so ist es.

in themes.inc.php ist folgende Abfrage:
if (!(USER_CAN_RATE_PICTURES && $CURRENT_ALBUM_DATA['votes'] == 'YES')) return '';

Kann man da nicht was einfügen, was aus der Tabelle cpg****_vote eine pid und  user_md5_id abfragt?

snoopy1972fc

Ich denke ich habe die Abfrage gefunden, die ich brauche:
if (!function_exists('theme_html_rating_box')) {  //{THEMES}
function theme_html_rating_box()
{
    global $CONFIG, $CURRENT_PIC_DATA, $CURRENT_ALBUM_DATA, $THEME_DIR;
    global $template_image_rating, $lang_rate_pic;

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

    $votes = $CURRENT_PIC_DATA['votes'] ? sprintf($lang_rate_pic['rating'], round($CURRENT_PIC_DATA['pic_rating'] / 2000, 1), $CURRENT_PIC_DATA['votes']) : $lang_rate_pic['no_votes'];
    $pid = $CURRENT_PIC_DATA['pid'];

    if (defined('THEME_HAS_RATING_GRAPHICS')) {
        $location= $THEME_DIR;
    } else {
        $location= '';
    }

    $params = array('{TITLE}' => $lang_rate_pic['rate_this_pic'],
        '{VOTES}' => $votes,
        '{RATE0}' => "ratepic.php?pic=$pid&rate=0",
        '{RATE1}' => "ratepic.php?pic=$pid&rate=1",
        '{RATE2}' => "ratepic.php?pic=$pid&rate=2",
        '{RATE3}' => "ratepic.php?pic=$pid&rate=3",
        '{RATE4}' => "ratepic.php?pic=$pid&rate=4",
        '{RATE5}' => "ratepic.php?pic=$pid&rate=5",
        '{RUBBISH}' => $lang_rate_pic['rubbish'],
        '{POOR}' => $lang_rate_pic['poor'],
        '{FAIR}' => $lang_rate_pic['fair'],
        '{GOOD}' => $lang_rate_pic['good'],
        '{EXCELLENT}' => $lang_rate_pic['excellent'],
        '{GREAT}' => $lang_rate_pic['great'],
        '{WIDTH}' => $CONFIG['picture_table_width'],
        '{LOCATION}' => $location,        //theme dir or default images directory
        );

Jetzt muss ich nur noch wissen, wie ich folgendes da rein bringe damit die Bewertungsbox nicht angezeigt wird
$sql = "SELECT a.votes as votes_allowed, p.votes as votes, pic_rating, owner_id " . "FROM {$CONFIG['TABLE_PICTURES']} AS p, {$CONFIG['TABLE_ALBUMS']} AS a " . "WHERE p.aid = a.aid AND pid = '$pic' LIMIT 1";
$result = cpg_db_query($sql);
if (!mysql_num_rows($result))  return '';

Kann mir da jemand helfen?

snoopy1972fc

Ich glaube das hier muss da oben rein um die Box nicht anzeigen zu lassen:
// Check if user already rated this picture
$user_md5_id = USER_ID ? md5(USER_ID) : $USER['ID'];
$sql = "SELECT * " . "FROM {$CONFIG['TABLE_VOTES']} " . "WHERE pic_id = '$pic' AND user_md5_id = '$user_md5_id'";
$result = cpg_db_query($sql);

Aber wie?