и так, появились первые результаты.
все измененные файлы прикреплю к посту. А также постараюсь в кратце описать, что и зачем изменил.
Описываю пошагово, кому что будет непонятно, пишим сразу в форум,
1.В БД в таблице
_phocagallery_votes тип поля
userid меняем на varchar(50), до этого оно было int(11). Делается это для того чтобы в него можно было записать ИП юзера.
Кроме того, раз уж полезли в таблицу, предлагаю в таблице
fur_phocagallery_votes_statistics изменить тип поля
count на
int.
Потому что тип эого поля установленный разработчиком ("tinyint(11)"), позволяет проголосовать только 127 юзером, больше голосов он не воспринимает. Эта проблема обсуждалась здесь
http://joomlaforum.ru/index.php/topic,72687.0.html.
2. В файле ваш_сайт/components/com_phocagallery/controllers/category.php
- комментируем строку $user =& JFactory::getUser();, она нам больше не нужна, так мы будем работать не с зареганными юзерами.
-Изменили данные переменной $post['userid'] ранее в нее заносились данные из таблицы зареганных юзеров на сайте, теперь в нее заносится ип юзера.
//$post['userid'] = $user->id;
//вместо ид записываем ип юзера
$post['userid'] = ( phpversion() <= '4.2.1' ? @getenv( 'REMOTE_ADDR' ) : $_SERVER['REMOTE_ADDR'] );
-Комментируем строки которые отвечают залогинился юзер или нет.
//проверяет заголинился юзер или нет, нам не нужно if ($user->aid > 0 && $user->id > 0) {
if(!$model->rate($post)) {
$msg = JText::_('Error Rating Phoca Gallery');
} else {
$msg = JText::_('Phoca Gallery Rated');
}
/* } else {
$mainframe->redirect(JRoute::_('index.php?option=com_user&view=login', false), JText::_("NOT AUTHORISED TO DO ACTION"));
exit;
}*/
3. В файле ваш_сайт/administrator/components/com_phocagallery/libraries/phocagallery/rate/ratecategory.php
-комеентируем оригинальный запрос к БД, и записываем свой
function checkUserVote($catid, $userid) {
$db =& JFactory::getDBO();
/*$query = 'SELECT v.id AS id'
.' FROM #__phocagallery_votes AS v'
.' WHERE v.catid = '. (int)$catid
//.' AND v.userid = '. (int)$userid;
.' AND v.userid = '. $userid;
$db->setQuery($query, 0, 1);
$checkUserVote = $db->loadObject();*/
$query = "SELECT id FROM `#__phocagallery_votes` WHERE `catid` = '$catid' AND `userid` = '$userid'";
$db->setQuery($query);
$checkUserVote = $db->loadObject();
if ($checkUserVote) {
return true;
}
return false;
}
Авторский запрос, не смотря ни на какие манипуляции с ним, так и не захотел работать.
Цель данного запроса считать из таблицы строку которая содержала бы ИП юзера и ИД статьи, если такая строка есть, то получается что юзер за данную статью пытается проголосовать дважды.
3.В файле ваш_сайт/components/com_phocagallery/views/category/tmpl
комментируем строки 18-42 и 52
/* if ($this->tmpl['alreadyrated']) {
echo '<ul class="star-rating">'
.'<li class="current-rating" style="width:'.$this->tmpl['voteswidth'].'px"></li>'
.'<li><span class="star1"></span></li>';
for ($i = 2;$i < 6;$i++) {
echo '<li><span class="stars'.$i.'"></span></li>';
}
echo '</ul>'
.'<p>'.JText::_('You have already rated this category').'</p>';
} else if ($this->tmpl['notregistered']) {
echo '<ul class="star-rating">'
.'<li class="current-rating" style="width:'.$this->tmpl['voteswidth'].'px"></li>'
.'<li><span class="star1"></span></li>';
for ($i = 2;$i < 6;$i++) {
echo '<li><span class="stars'.$i.'"></span></li>';
}
echo '</ul>'
.'<p>'.JText::_('Only registered and logged in user can rate this category').'</p>';
} else {*/
echo '<ul class="star-rating">'
.'<li class="current-rating" style="width:'.$this->tmpl['voteswidth'].'px"></li>'
.'<li><a href="'.$this->tmpl['action'].$amp.'controller=category&task=rate&rating=1&tab='.$this->tmpl['currenttab']['rating'].$this->tmpl['limitstarturl'].'" title="1 '. JText::_('star out of').' 5" class="star1">1</a></li>';
for ($i = 2;$i < 6;$i++) {
echo '<li><a href="'.$this->tmpl['action'].$amp.'controller=category&task=rate&rating='.$i.'&tab='.$this->tmpl['currenttab']['rating'].$this->tmpl['limitstarturl'].'" title="'.$i.' '. JText::_('star out of').' 5" class="stars'.$i.'">'.$i.'</a></li>';
}
echo '</ul>';
// }
?>
Данный код не дает даже попробовать проголосовать если вы не алогинились, вот мы его и комментируем.
об этом уже писалось вот здесь
http://joomlaforum.ru/index.php/topic,52912.0.html.
Так вроде это пока все изменения.
[вложение удалено Администратором]