Phoca Gallery nie pozwala na głosowanie na kategorie i na zdjęcia bez zalogowania się użytkownika. Oddane głosy i autorów zapisuje w tabelach a administrator ma możliwość wglądu w takie statystyki.
Pokażę jak można skłonić komponent żeby pozwalał głosować niezalogowanym - Gościom. Po modyfikacji w bazie będzie zapisywane IP Gościa (jeśli użytkownik się nie logował), dlatego powtórne głosowanie na kategorię lub zdjęcie z tego samego IP nie będzie możliwe.
W panelu administratora w podglądzie głosowań nazwa Gościa została zastąpiona jego IP.
Wszystkie standardowe działania PhocaGallery dotyczące użytkowników zalogowanych nie ulegną zmianie.
Opis zmian i podane linie kodu dotyczą wersji 2.5.8, w nawiasie linia kodu dla wersji 2.6.0.Beta.
Ocenianie kategorii
Front
plik components/com_phocagallery/views/category/view.html.php linia 1180 (1363) jest:
Kod PHP:
$tmpl['notregistered'] = true;
zmienić na:
Kod PHP:
if($user->aid == 0)
$tmpl['notregistered'] = false;
ten sam plik linia 1217 (1399) jest:
Kod PHP:
// Already rated?
$tmpl['alreadyrated'] = PhocaGalleryRateCategory::checkUserVote( (int)$id, (int)$user->id );
zmienić na:
Kod PHP:
// Already rated?
////dodane
if(!$user->id) $user->id = (int)str_replace('.','',$_SERVER['REMOTE_ADDR']);
/////koniec dodane
$tmpl['alreadyrated'] = PhocaGalleryRateCategory::checkUserVote( (int)$id, (int)$user->id );
components/com_phocagallery/controllers/category.php linia 512 (462) jest:
Kod PHP:
$model = $this->getModel('category');
zmienić na:
Kod PHP:
$model = $this->getModel('category');
/////dodane
if(!$post['userid']){
$post['userid'] = (int)str_replace('.','',$_SERVER['REMOTE_ADDR']);
}
//////koniec dodane
ten sam plik linia 476 (525) jest:
Kod PHP:
if ($user->aid > 0 && $user->id > 0) {
zmienić na:
Kod PHP:
if (($user->aid > 0 && $user->id > 0) || $user->aid == 0) { //zmiana
Administrator
plik administrator/components/com_phocagallery/models/phocagalleryra.php linia 69 (69) jest:
Kod PHP:
$query = ' SELECT a.*, cc.title AS category, ua.name AS editor, u.id AS ratinguserid, u.username AS ratingusername '
zmienić na:
Kod PHP:
$query = ' SELECT a.*, cc.title AS category, ua.name AS editor, ifnull(u.id,a.userid) AS ratinguserid, ifnull(u.username, a.userid) AS ratingusername '
ten sam plik linia 107 jest:
Kod PHP:
$where[] = 'a.userid = u.id';
zmienić na:
Kod PHP:
$where[] = '(a.userid = u.id OR a.userid>0)';
Ocenianie zdjęć
front
plik components/com_phocagallery/views/detail/view.html.php linia 186 (199) jest:
Kod PHP:
$tmpl['notregisteredimg'] = true;
zmienić na:
Kod PHP:
if($user->aid == 0)
$tmpl['notregisteredimg'] = false;
plik components/com_phocagallery/controllers/detail.php linia 54 (54) jest:
Kod PHP:
$model = $this->getModel('detail');
zmienić na:
Kod PHP:
$model = $this->getModel('detail');
/////dodane
if(!$post['userid']){
$post['userid'] = (int)str_replace('.','',$_SERVER['REMOTE_ADDR']);
}
////// koniec dodane
ten sam plik linia 71 jest
Kod PHP:
if ($user->aid > 0 && $user->id > 0) {
zamienić na
Kod PHP:
if (($user->aid > 0 && $user->id > 0) || $user->aid == 0) {
Administrator
plik administrator/components/com_phocagallery/models/phocagalleryraimg.php linia 63 (63) jest:
Kod PHP:
$query = ' SELECT a.*, cc.title AS categorytitle, cc.id AS categoryid, i.title AS imagetitle, i.id AS imageid, ua.name AS editor, u.id AS ratinguserid, u.username AS ratingusername '
zamienić na:
Kod PHP:
$query = ' SELECT a.*, cc.title AS categorytitle, cc.id AS categoryid, i.title AS imagetitle, i.id AS imageid, ifnull(ua.name, a.userid) AS editor, ifnull(u.id, a.userid) AS ratinguserid, ifnull(u.username, a.userid) AS ratingusername '
ten sam plik linia 98 (98)
Kod PHP:
$where[] = 'a.userid = u.id';
zamienić na:
Kod PHP:
$where[] = '(a.userid = u.id OR a.userid>0)';
Obie modyfikacje dla kategorii i zdjęć funkcjonują niezależnie od siebie, jeśli nie chcemy pozwalać na ocenianie kategorii to opuszczamy tą część modyfikacji.
Powodzenia.