PDA

Zobacz pełną wersję : PhocaGallery jak dodać możliwość głosowania przez niezalogowanych?



Jola
22-11-2009, 03:15
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:

$tmpl['notregistered'] = true;zmienić na:

if($user->aid == 0)
$tmpl['notregistered'] = false;ten sam plik linia 1217 (1399) jest:

// Already rated?
$tmpl['alreadyrated'] = PhocaGalleryRateCategory::checkUserVote( (int)$id, (int)$user->id );zmienić na:

// 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:

$model = $this->getModel('category');
zmienić na:

$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:

if ($user->aid > 0 && $user->id > 0) {zmienić na:

if (($user->aid > 0 && $user->id > 0) || $user->aid == 0) { //zmianaAdministrator
plik administrator/components/com_phocagallery/models/phocagalleryra.php linia 69 (69) jest:

$query = ' SELECT a.*, cc.title AS category, ua.name AS editor, u.id AS ratinguserid, u.username AS ratingusername '
zmienić na:

$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:

$where[] = 'a.userid = u.id';zmienić na:

$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:

$tmpl['notregisteredimg'] = true;zmienić na:
if($user->aid == 0)
$tmpl['notregisteredimg'] = false;plik components/com_phocagallery/controllers/detail.php linia 54 (54) jest:

$model = $this->getModel('detail');
zmienić na:

$model = $this->getModel('detail');
/////dodane
if(!$post['userid']){
$post['userid'] = (int)str_replace('.','',$_SERVER['REMOTE_ADDR']);
}
////// koniec dodaneten sam plik linia 71 jest

if ($user->aid > 0 && $user->id > 0) {zamienić na
if (($user->aid > 0 && $user->id > 0) || $user->aid == 0) {

Administrator
plik administrator/components/com_phocagallery/models/phocagalleryraimg.php linia 63 (63) jest:

$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:

$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)

$where[] = 'a.userid = u.id';zamienić na:

$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.

smx76
10-01-2010, 11:56
chciałem ustawić tylko ocenianie zdjęć i po zastosowaniu się do wszystkich kroków po kliknięciu na przycisk do oceniania zdjęcia wyświetla się komunikat:
Parse error: syntax error, unexpected '=' in /home/yakamozp/public_html/components/com_phocagallery/views/detail/view.html.php on line 188
Więc sprawdzam tą linijkę 188 poprzez edycję pliku w TotCom i jest tam zupełni inna linijka niż ta, w której robiłem zmiany. Posiadam Phcoca wersje
2.6.2.

smx76
10-01-2010, 15:23
zastosowałem się do poleceń, aby osoby niezalogowane mogłyoceniać zdjęcia, ale po kliknięciu na przycisk oceniania zdjęcia pojawia się komunikat:
Parse error: syntax error, unexpected '=' in /home/yakamozp/public_html/components/com_phocagallery/views/detail/view.html.php on line 188 gdzie pod tą linią nic nie modyfikowałem

nevadaking
20-03-2010, 14:41
Szkoda, że nie można w 2.5.8 dołożyć oceniania pojedynczych zdjęć. Podejrzewam, że trzeba by wprowadzić cały zestaw kodów, a na to jeszcze jestem za cienka. A może po prostu jestem blondynką?
Ale dzięki za to rozwiązanie. Jest super. :up: