0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 3799 Просмотров
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
Поставил данный компонент( AlphaUserPoints Версия 1.5.13), очень понравился. Но при обкатке обнаружил что в некоторые профили не заходит. Либо открывается собственный профиль, либо ошибка типа
Not Found
The requested URL /userinfo/account/swetlana.schepeleva was not found on this server.


пример:
http://www.balezinoinfo.ru/userinfo/account/X-Star
Ошибка вылазит изза символов ".,-"и может еще каких.
может понимаю что скорее всего из-за некрасивых символов типа точки или тире... может можно как то по ID пользователя настроить?
« Последнее редактирование: 25.04.2011, 13:32:27 от kostet7 »
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

oc01

  • Захожу иногда
  • 315
  • 29 / 1
Попробуйте точки после имени заменить на _
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
ткое решение не подходит, так как запречать использовать точку не есть хорошо.
Сейчас мне интересно как ссылку на профиль формировать по ID а не по логину.
нашел код где формируется ссылка:
Код
<?php
if ( $this->params->get( 'show_links_to_users', 1) && $user->id || $this->params->get( 'show_links_to_users', 1) && !$user->id && $this->allowGuestUserViewProfil ){
$profil =  "<a href=\"" . $linktoprofil . "\">" . $row->usr_name . "</a>";
} else $profil = $row->usr_name ;
echo $profil;
?>
</td>
<?php } ?>

но не знаю откуда можно вытащить ID пользователя.
Кто то может знает?
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

oc01

  • Захожу иногда
  • 315
  • 29 / 1
Окончание ссылки прописывается в этой строке
Код
$linktoprofil = getProfileLink( $this->linkToProfile, $_user_info );
Можно в настройках попробовать выставить имя пользователя вместо имени
« Последнее редактирование: 20.04.2011, 13:44:39 от oc01 »
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
но не знаю откуда можно вытащить ID пользователя.
Кто то может знает?
Код: php-brief
$user->id
только ссылка на профиль формируется в др. файле: ...home.../components/com_alphauserpoints/helpers/helpers.php
функция:
Код: php-brief
	function getProfileLink( $profilechoice, $userinfo, $xhtml=true )
« Последнее редактирование: 20.04.2011, 23:25:26 от migus »
"The Lord Of A SandBox"
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
Править ID не пришлось, все гораздо проще.
при отключенном SEO все работает отлично.
В итоге просто отредактировал router.php у AUP
Закомментировав то место где обрабатывается userID а именно
Код
if(isset($query['userid']))
а так же строку
Код
$vars['task'] = $segments[$count-2];
теперь ссылка на профиль выглядит как http://www.balezinoinfo.ru/userinfo/account?userid=4DAD602B3A7EC

Пока вроде работает.
Если что сделал неправильно, то сообщите пожалуйста.
Код
<?php
/*
 * @component AlphaUserPoints
 * @copyright Copyright (C) 2008-2011 Bernard Gilly
 * @license : GNU/GPL
 * @Website : http://www.alphaplug.com
 */

function AlphaUserPointsBuildRoute(&$query)
{
$segments = array();
$db   = & JFactory::getDBO();

if(isset($query['view']))
{
if(empty($query['Itemid'])) {
$segments[] = $query['view'];
}
if($query['view']) {
$segments[] = $query['view'];
}

unset($query['view']);

}

if(isset($query['task']))
{
if($query['task'] == 'detailsmedal') {
$segments[] = $query['task'];
unset($query['task']);
if(isset($query['cid']))
{
$sqlQuery = "SELECT `rank` FROM `#__alpha_userpoints_levelrank`
WHERE `id` = " . $query['cid'] . " LIMIT 1";
$db->setQuery($sqlQuery);
$segments[] = urlencode($db->loadResult());
unset($query['cid']);
}
}
elseif ( $query['task'] == 'downloadactivity' )
{
$segments[] = $query['task'];
unset($query['task']);
}
}

/*if(isset($query['userid']))
{
$sqlQuery = "SELECT u.username " .
"FROM #__users AS u, #__alpha_userpoints AS a " .
"WHERE a.referreid='".$query['userid']."' AND a.userid=u.id LIMIT 1";
$db->setQuery($sqlQuery);
$segments[] = htmlentities($db->loadResult());
unset($query['userid']);
}*/

return $segments;
}

function AlphaUserPointsParseRoute($segments)
{
$vars = array();
$db = & JFactory::getDBO();

// Count route segments
$count = count($segments);

if ( $count ) {

if($segments[0] == 'account') {
$vars['view'] = 'account';
$sqlQuery = "SELECT a.referreid " .
"FROM #__alpha_userpoints AS a, #__users AS u " .
"WHERE u.username='".urldecode($segments[$count-1])."' AND a.userid=u.id LIMIT 1";
$db->setQuery($sqlQuery);
$vars['userid'] = $db->loadResult();
//$vars['task'] = $segments[$count-2];
return $vars;
}

if($segments[0] == 'medals') {
$vars['view'] = 'medals';
$vars['task'] = $segments[$count-2];
$segments[$count-1] = str_replace( '.html', '', $segments[$count-1] );
$sqlQuery = "SELECT `id` FROM `#__alpha_userpoints_levelrank`
WHERE `rank`='" . urldecode($segments[$count-1]). "' LIMIT 1";
$db->setQuery($sqlQuery);
$vars['cid'] = $db->loadResult();
return $vars;
}

if($segments[0] == 'user2userpoints') {
$vars['view'] = 'user2userpoints';
return $vars;
}

if($segments[0] == 'invite') {
$vars['view'] = 'invite';
return $vars;
}

if($segments[0] == 'addressbook') {
$vars['view'] = 'addressbook';
return $vars;
}

if($segments[0] == 'buypoints') {
$vars['view'] = 'buypoints';
return $vars;
}

if($segments[0] == 'users') {
$vars['view'] = 'users';
return $vars;
}

}
}
?>
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Вы использовали referre ID вместо user ID. Это чревато тем, что после смены, например, регистра аккаунтов Joomla или префикса в настройках AUP у вас все сломается.
Что-то меня смущает в вашем решении. Проверьте, как работает в остальных раскладках.
"The Lord Of A SandBox"
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
Пробовал изменить на userid, но что то не получилось.... либо грузится свой профиль, либо матерится...похоже компонент вовсю пользует именно refererid.
а по поводу referre ID, если без SEF то именно он и используется в ссылке на профиль... а в данном примере я отключил обработку referre ID правилами router.php
Пробовал менять префикс на русский и с разным регистром - работает.

конечно использование userid было бы красивее....


« Последнее редактирование: 21.04.2011, 16:33:20 от kostet7 »
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

oc01

  • Захожу иногда
  • 315
  • 29 / 1
В настройках SEF должна быть функция обхода или игнорирования компонента. Попробуйте обойти AUP.
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
изменил снова роутер. Теперь ссылка формируется по ID пользователя в системе.
http://test1.loc/component/alphauserpoints/account/62
Таким образом ошибки из-за недопустимых символов в имени пользователя исключаются.

ошибок вроде не замечено пока. с предыдущими настройками работало не корректно...
в файле router.php изменяем
Код
 $sqlQuery = "SELECT u.username " .
на
Код
$sqlQuery = "SELECT u.id " .
и
Код
"WHERE u.username='".urldecode($segments[$count-1])."' AND a.userid=u.id LIMIT 1";
на
Код
"WHERE u.id='".urldecode($segments[$count-1])."' AND a.userid=u.id LIMIT 1";
весь код файла приведен ниже
Код
<?php
/*
 * @component AlphaUserPoints
 * @copyright Copyright (C) 2008-2011 Bernard Gilly
 * @license : GNU/GPL
 * @Website : http://www.alphaplug.com
 */

function AlphaUserPointsBuildRoute(&$query)
{
$segments = array();
$db  = & JFactory::getDBO();

if(isset($query['view']))
{
if(empty($query['Itemid'])) {
$segments[] = $query['view'];
}
if($query['view']) {
$segments[] = $query['view'];
}

unset($query['view']);

}

if(isset($query['task']))
{
if($query['task'] == 'detailsmedal') {
$segments[] = $query['task'];
unset($query['task']);
if(isset($query['cid']))
{
$sqlQuery = "SELECT `rank` FROM `#__alpha_userpoints_levelrank`
WHERE `id` = " . $query['cid'] . " LIMIT 1";
$db->setQuery($sqlQuery);
$segments[] = urlencode($db->loadResult());
unset($query['cid']);
}
}
elseif ( $query['task'] == 'downloadactivity' )
{
$segments[] = $query['task'];
unset($query['task']);
}
}

if(isset($query['userid']))
{
//$sqlQuery = "SELECT u.username " .
$sqlQuery = "SELECT u.id " .
"FROM #__users AS u, #__alpha_userpoints AS a " .
"WHERE a.referreid='".$query['userid']."' AND a.userid=u.id LIMIT 1";
$db->setQuery($sqlQuery);
$segments[] = urlencode($db->loadResult());
unset($query['userid']);
}

return $segments;
}

function AlphaUserPointsParseRoute($segments)
{
$vars = array();
$db = & JFactory::getDBO();

// Count route segments
$count = count($segments);

if ( $count ) {

if($segments[0] == 'account') {
$vars['view'] = 'account';
$sqlQuery = "SELECT a.referreid " .
"FROM #__alpha_userpoints AS a, #__users AS u " .
//"WHERE u.username='".urldecode($segments[$count-1])."' AND a.userid=u.id LIMIT 1";
"WHERE u.id='".urldecode($segments[$count-1])."' AND a.userid=u.id LIMIT 1";
$db->setQuery($sqlQuery);
$vars['userid'] = $db->loadResult();
$vars['task'] = $segments[$count-2];
return $vars;
}

if($segments[0] == 'medals') {
$vars['view'] = 'medals';
$vars['task'] = $segments[$count-2];
$segments[$count-1] = str_replace( '.html', '', $segments[$count-1] );
$sqlQuery = "SELECT `id` FROM `#__alpha_userpoints_levelrank`
WHERE `rank`='" . urldecode($segments[$count-1]). "' LIMIT 1";
$db->setQuery($sqlQuery);
$vars['cid'] = $db->loadResult();
return $vars;
}

if($segments[0] == 'user2userpoints') {
$vars['view'] = 'user2userpoints';
return $vars;
}

if($segments[0] == 'invite') {
$vars['view'] = 'invite';
return $vars;
}

if($segments[0] == 'addressbook') {
$vars['view'] = 'addressbook';
return $vars;
}

if($segments[0] == 'buypoints') {
$vars['view'] = 'buypoints';
return $vars;
}

if($segments[0] == 'users') {
$vars['view'] = 'users';
return $vars;
}

}
}
?>
Будет работать только со стандартным SEF Joomla
« Последнее редактирование: 31.08.2011, 15:37:44 от kostet7 »
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

artliffe

  • Захожу иногда
  • 128
  • 6 / 0
  • ...акки пчела
Re: Ссылка в профиль по ID пользователя
« Ответ #10 : 31.08.2011, 14:05:30 »
Таже фигня, только это решение не помогает. Пришлось отключить SEF для AlphaUserPoints
Не ломается то, что не работает!
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
Re: Ссылка в профиль по ID пользователя
« Ответ #11 : 31.08.2011, 15:16:52 »
почему не помогает?
проблемы возможны только со сторонними модулями, такими как DWho's Online (модуль "продвинутый" Кто онлайн). По умолчанию они берут имя пользователя.. и их нужно изменять в соответствии с выше изложенным патчем.
А так он не использует имена после изменения роутера. и ошибки быть не должно...
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

artliffe

  • Захожу иногда
  • 128
  • 6 / 0
  • ...акки пчела
Re: Ссылка в профиль по ID пользователя
« Ответ #12 : 31.08.2011, 15:21:27 »
У меня данный модуль не установлен. Может мой SEF компонент не подходит для этих дел?!
sh404SEF Установленная версия   2.2.4.955
Не ломается то, что не работает!
*

kostet7

  • Захожу иногда
  • 53
  • 3 / 0
  • Когда сфоткают нормально, тогда и будет аватар
Re: Ссылка в профиль по ID пользователя
« Ответ #13 : 31.08.2011, 15:35:47 »
этот патч только для стандартного SEF Joomla .
В вашем случает нужно копаться в sh404SEF .
там скорее всего есть плагин(никогда не использовал sh404SEF , потому не уверен), для работы с AlphaUserPoints и в нем уже нужно делать нечто подобное.
А сколько паролей помнишь ты?
Пользуюсь хостингом от Hostland.ru
*

artliffe

  • Захожу иногда
  • 128
  • 6 / 0
  • ...акки пчела
Re: Ссылка в профиль по ID пользователя
« Ответ #14 : 31.08.2011, 15:42:14 »
ааа, теперь понятно... наверное придется ждать пока migus объявится, может он чего знает по этому поводу... у него на сайте всяко какой-то компонент стоит и скорее всего sh404SEF
Не ломается то, что не работает!
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Re: Ссылка в профиль по ID пользователя
« Ответ #15 : 31.08.2011, 18:05:27 »
ааа, теперь понятно... наверное придется ждать пока migus объявится, может он чего знает по этому поводу... у него на сайте всяко какой-то компонент стоит и скорее всего sh404SEF
Ничего сказать по этому вопросу не могу, т.к. sh404SEF не использую... в песочнице используется родной SEF Joomla!® ;)
"The Lord Of A SandBox"
*

artliffe

  • Захожу иногда
  • 128
  • 6 / 0
  • ...акки пчела
Re: Ссылка в профиль по ID пользователя
« Ответ #16 : 01.09.2011, 01:17:01 »
даа, ошибочка вышла...
Не ломается то, что не работает!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как закрыть доступ пользователям в профиль админа?

Автор reject666

Ответов: 5
Просмотров: 1165
Последний ответ 11.10.2016, 21:52:19
от reject666
JomSocail + AlphaUserPoints. Реферальная ссылка.

Автор zedzeal

Ответов: 11
Просмотров: 4631
Последний ответ 03.03.2016, 18:44:49
от smol1988
Реф.ссылка не выводится в СВ

Автор Dusk09

Ответов: 2
Просмотров: 743
Последний ответ 15.09.2015, 20:32:15
от Dusk09
Конструкция (условие) пользователя AUP v2.0.0

Автор Biss

Ответов: 5
Просмотров: 717
Последний ответ 23.06.2015, 00:53:26
от migus
Не работает ссылка "Последняя активность"

Автор Сergei

Ответов: 1
Просмотров: 712
Последний ответ 25.03.2015, 23:50:56
от migus