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

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Охота сделать так чтобы за просмотр профиля CB его хозяину начислялись очки.
Прочитал инструкцию на оффсайте разработчиков.

Сделал вот это:
Включил добавление очков за ежедневные входы.(Регистрация и авторизация у меня стоит CB-ровская, Joomla-вская отключена по всем правилам.)

установил плагин, текст ниже:

Код
<?xml version="1.0" encoding="utf-8"?>
<alphauserpoints type="plugin">
    <rule>Count hits for user</rule>
    <description>Adds points when cb profile view</description>
    <component>com_comprofiler</component>
    <plugin_function>plgaup_newhitscbprofile</plugin_function>
    <fixed_points>true</fixed_points>
</alphauserpoints>

Alpha UserPoints позволил установить и включить сей плагин.
Странно но в таблицу базы данных название компонента не занеслось, занес вручную.

Далее в файле /public_html/administrator/components/com_comprofiler/comprofiler.class.php
поискал где идет обновление посещений профиля в базе данных, решил что могу привязаться к выполнению данной функции, код приведен ниже

строка 2843

Код
function _incHits($profileId) {
global $_CB_database;
$_CB_database->setQuery("UPDATE #__comprofiler SET hits=(hits+1) WHERE id=" . (int) $profileId);
if (!$_CB_database->query()) {
echo "<script type=\"text/javascript\"> alert('UpdateHits: ".$_CB_database->getErrorMsg()."');</script>\n";
// exit();
}

}

заменил данный код на

Код
function _incHits($profileId) {
global $_CB_database;
$_CB_database->setQuery("UPDATE #__comprofiler SET hits=(hits+1) WHERE id=" . (int) $profileId);
// Начало. Система получения очков за просмотры профиля.
//*******************************************************
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
$aupid = AlphaUserPointsHelper::getAnyUserReferreID( $profileId );
if ( $aupid )  AlphaUserPointsHelper::newpoints( 'plgaup_hitscbprofile', $aupid);
}
//*******************************************************
// Конец. Система получения очков за просмотры профиля
if (!$_CB_database->query()) {
echo "<script type=\"text/javascript\"> alert('UpdateHits: ".$_CB_database->getErrorMsg()."');</script>\n";
// exit();
}

}

Авторизируюсь на сайте, и одновременно просматриваю статистику в админке.
Так вот за ежедневные входы начисление идет, а вот по моему плагину система не отрабатывает, начисления очков не идет.

Подскажите пожалуйста где ошибка(только не надо говорить что в ДНК  ^-^ )

Заранее благодарен.
« Последнее редактирование: 06.11.2010, 23:23:54 от migus »
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
попробуйте вручную удалить этот плагин и поставить его через интерфейс AUP...
кстати, а вы SEF используете?
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
SEF пока что не использую

Что значит поставить через интерфейс AUP, я его вроде ставил через стандартный интефейс
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
меня смущает, что вы вручную компонент в базу прописывали :dry:
"The Lord Of A SandBox"
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
кажется понял... у вас после хита еще скрипт выполняется для валидации, а апдейт базы позже происходит...
я бы попробовал после этой строки:
Код: php
if ( $needsUpdate ) {
_incHits( $profileId );
тогда очки будут начисляться с учетом тайм - аутов и глюка с первым хитом не должно быть...
« Последнее редактирование: 24.08.2010, 01:14:02 от migus »
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
спасибо, попробую отпишусь
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Как дела? Кажется понял почему правило не установилось, как-то сразу не заметил...
1. попробуйте в XML файле заменить строку:
Код
<component>com_comprofiler</component>
на эту:
Код
<component>comprofiler</component>
2. Удалите сначало правило в AUP админке, а затем посмотрите ваш XML в папке: ...home.../docs/administrator/components/com_alphauserpoints/assets/plugins/
если остался удалите вручную
3. Установите через админку AUP свой XML плагин...
удачи ;)
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Как дела? Кажется понял почему правило не установилось, как-то сразу не заметил...
1. попробуйте в XML файле заменить строку:
Код
<component>com_comprofiler</component>
на эту:
Код
<component>comprofiler</component>
2. Удалите сначало правило в AUP админке, а затем посмотрите ваш XML в папке: ...home.../docs/administrator/components/com_alphauserpoints/assets/plugins/
если остался удалите вручную
3. Установите через админку AUP свой XML плагин...
удачи ;)

спасибо, правило поставилось нормально и отображается в списке правил.

кажется понял... у вас после хита еще скрипт выполняется для валидации, а апдейт базы позже происходит...
я бы попробовал после этой строки:
Код: php
if ( $needsUpdate ) {
_incHits( $profileId );
тогда очки будут начисляться с учетом тайм - аутов и глюка с первым хитом не должно быть...

начисление за просмотр все равно не идет  :(
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
будем искать решение...

У меня вопрос. У вас по-прежнему CB 1.2.2 или уже 1.2.3 стоит?
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
обновился ) юзаю 1.2.3, а есть принципиальные различия?
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
обновился ) юзаю 1.2.3, а есть принципиальные различия?

думаю, что для нашего случая - да... мы же AUP API  внедряем в файлы, а они - изменились
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
ну так что? не получается? >:(
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
ну так что? не получается? >:(

Я еще не пытался - мне пока некогда...
"The Lord Of A SandBox"
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Ну, кажется в заголовке темы можете писать [РЕШЕНО].

Во всяком случае у меня работает... :)

Итак,
1. Заменяете файл из аттача: ...home.../administrator/components/com_comprofiler/comprofiler.class.php
(или анализируете код и правите свой)
2. Устанавливаете плагин правила из аттача, назначаете стоимость (рекомендую 1 балл) и включаете его.
3. Проверяете, как работает и пишете сюда отчет .

NB: Не забудьте сделать бэкап оригинального файла!

P.S. В админке CB Менеджер конфигурации -> Профили надо установить: Минимальный интервал между просмотрами (в минутах), по-умолчанию кажется 60 мин. Чтобы удобно было тестировать - можно, временно установить короткий (например: 1 мин.)

- удачи ;)

[вложение удалено Администратором]
"The Lord Of A SandBox"
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
Ну, кажется в заголовке темы можете писать [РЕШЕНО].

Во всяком случае у меня работает... :)

Итак,
1. Заменяете файл из аттача: ...home.../administrator/components/com_comprofiler/comprofiler.class.php
(или анализируете код и правите свой)
2. Устанавливаете плагин правила из аттача, назначаете стоимость (рекомендую 1 балл) и включаете его.
3. Проверяете, как работает и пишете сюда отчет .

NB: Не забудьте сделать бэкап оригинального файла!

P.S. В админке CB Менеджер конфигурации -> Профили надо установить: Минимальный интервал между просмотрами (в минутах), по-умолчанию кажется 60 мин. Чтобы удобно было тестировать - можно, временно установить короткий (например: 1 мин.)

- удачи ;)

Искренне благодарю за помощь. Все работает. Плюсую дважды!
Надеюсь дальнейшая интеграция на базе выводов, сделанных из примера, рассмотренного в данном посте, пойдет уже проще и быстрее.
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Искренне благодарю за помощь. Все работает. Плюсую дважды!
Надеюсь дальнейшая интеграция на базе выводов, сделанных из примера, рассмотренного в данном посте, пойдет уже проще и быстрее.

Желаю успехов ;)
"The Lord Of A SandBox"
*

tayson72

  • Новичок
  • 2
  • 0 / 0
orsy, А как ты склонения сделал? Балл, баллов?
*

orsy

  • Захожу иногда
  • 400
  • 23 / 1
  • Web-Factor Ukraine
orsy, А как ты склонения сделал? Балл, баллов?

ну вообще-то это не я делал а migus. ну а если подумать то через свитч решается выбором в зависимости от числа.
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
А как ты склонения сделал? Балл, баллов?
Вот формула плюральных форм числительного для русского языка:
Код: php-brief
$plural%10==1 && $plural%100!=11 ? 0 : ($plural%10>=2 && $plural%10<=4 && ($plural%100<10 || $plural%100>=20)? 1 : 2)
- удачи ;)
"The Lord Of A SandBox"
*

siao

  • Захожу иногда
  • 233
  • 4 / 0
замечательный плагин!
но только вот CB у меня 1.7 -)
скажите, файл comprofiler.class.php изменяется только в одном месте?
и код
Код
//insert AUP API *************************************************************
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP)) {
require_once ($api_AUP);
$refid = AlphaUserPointsHelper::getAnyUserReferreID( $viewerId );
$profil = AlphaUserPointsHelper:: getUserInfo ( $refid ) ;
// rule for profile hit
$info = 'За просмотр профиля пользователем: '.( $profil->username ) ;
$aupid = AlphaUserPointsHelper::getAnyUserReferreID( $profileId );
if ( $aupid )  AlphaUserPointsHelper::newpoints('plgaup_hitprofile', $aupid, '', $info);
}
// ****************************************************************************
// End AlphaUserPoints integration for CB Profile hit rule
// Integration by: migus to integrate AlphaUserPoints system CB Profile Hit
// This integration is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// ****************************************************************************
правильно?
он подойдет для СВ1.7?

потому что плагин установился нормально
но активность по этому правилу не считается( хотя он включен и 1 балл назначен)
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Код правильный, просто его надо в соотв. месте вставлять. Сам для CB 1.7 не делал пока. Будет время - посмотрю.
"The Lord Of A SandBox"
*

siao

  • Захожу иногда
  • 233
  • 4 / 0
вставила вобщем-то в то же место, что и в Вашем файле было.

Код
		// but we will update any IP address changes in case of a logged-in user (for guests, the SELECT above is by IP address, so that entry and IP is already same:
if ( ( $currip != $views[0]->lastip ) || $needsUpdate ) {
$query = 'UPDATE ' . $_CB_database->NameQuote( '#__comprofiler_views' )
. "\n SET " . $_CB_database->NameQuote( 'lastview' ). " = NOW()"
. ', ' . $_CB_database->NameQuote( 'lastip' ). " = " . $_CB_database->Quote( $currip )
. ( $needsUpdate ? ', ' . $_CB_database->NameQuote( 'viewscount' ). " = (" . $_CB_database->NameQuote( 'viewscount' ). "+1)" : '' )
. "\n WHERE " . $_CB_database->NameQuote( 'viewer_id' ). " = " . (int) $viewerId
. "\n AND " . $_CB_database->NameQuote( 'profile_id' ). " = " . (int) $profileId
. ( $viewerId == 0 ? "\n AND " . $_CB_database->NameQuote( 'lastip' ). " = " . $_CB_database->Quote( $currip ) : null );
$_CB_database->setQuery( $query );
if ( ! $_CB_database->query() ) {
echo "<script type=\"text/javascript\">alert( 'UpdateViews: " . addslashes( $_CB_database->getErrorMsg() ). "' );</script>\n";
}

if ( $needsUpdate ) {


//insert AUP API *************************************************************
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP)) {
require_once ($api_AUP);
$refid = AlphaUserPointsHelper::getAnyUserReferreID( $viewerId );
$profil = AlphaUserPointsHelper:: getUserInfo ( $refid ) ;
// rule for profile hit
$info = 'За просмотр профиля пользователем: '.( $profil->username ) ;
$aupid = AlphaUserPointsHelper::getAnyUserReferreID( $profileId );
if ( $aupid )  AlphaUserPointsHelper::newpoints('plgaup_hitprofile', $aupid, '', $info);
}
// ****************************************************************************
// End AlphaUserPoints integration for CB Profile hit rule
// Integration by: migus to integrate AlphaUserPoints system CB Profile Hit
// This integration is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// ****************************************************************************

_incHits( $profileId );
}
}
}

}

/**
* Calendars for date fields handler
вот так в Вашем

вот так в моем:
Код
// but we will update any IP address changes in case of a logged-in user (for guests, the SELECT above is by IP address, so that entry and IP is already same:
if ( ( $currip != $views[0]->lastip ) || $needsUpdate ) {
$query = 'UPDATE ' . $_CB_database->NameQuote( '#__comprofiler_views' )
. "\n SET " . $_CB_database->NameQuote( 'lastview' ). " = NOW()"
. ', ' . $_CB_database->NameQuote( 'lastip' ). " = " . $_CB_database->Quote( $currip )
. ( $needsUpdate ? ', ' . $_CB_database->NameQuote( 'viewscount' ). " = (" . $_CB_database->NameQuote( 'viewscount' ). "+1)" : '' )
. "\n WHERE " . $_CB_database->NameQuote( 'viewer_id' ). " = " . (int) $viewerId
. "\n AND " . $_CB_database->NameQuote( 'profile_id' ). " = " . (int) $profileId
. ( $viewerId == 0 ? "\n AND " . $_CB_database->NameQuote( 'lastip' ). " = " . $_CB_database->Quote( $currip ) : null );
$_CB_database->setQuery( $query );
if ( ! $_CB_database->query() ) {
echo "<script type=\"text/javascript\">alert( 'UpdateViews: " . addslashes( $_CB_database->getErrorMsg() ). "' );</script>\n";
}

if ( $needsUpdate ) {


//insert AUP API *************************************************************
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP)) {
require_once ($api_AUP);
$refid = AlphaUserPointsHelper::getAnyUserReferreID( $viewerId );
$profil = AlphaUserPointsHelper:: getUserInfo ( $refid ) ;
// rule for profile hit
$info = 'За просмотр профиля пользователем: '.( $profil->username ) ;
$aupid = AlphaUserPointsHelper::getAnyUserReferreID( $profileId );
if ( $aupid )  AlphaUserPointsHelper::newpoints('plgaup_hitprofile', $aupid, '', $info);
}
// ****************************************************************************
// End AlphaUserPoints integration for CB Profile hit rule
// Integration by: migus to integrate AlphaUserPoints system CB Profile Hit
// This integration is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// ****************************************************************************

_incHits( $profileId );
}
}
}
}

/**
* Calendars for date fields handler
* @package Commu
*

siao

  • Захожу иногда
  • 233
  • 4 / 0
посмотрела сегодня - считает хиты
но почему то не считал хиты за мои просмотры - т.е. я под своим логином просматривала профили пользователей и им в системе плюсы не добавились.
правда у меня логин "суперадминстратора", может поэтому?

(полезный плагин, спасибо!)
*

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Прошу прощения за вопрос чайника...
Код
$plural%10==1 && $plural%100!=11 ? 0 : ($plural%10>=2 && $plural%10<=4 && ($plural%100<10 || $plural%100>=20)? 1 : 2)

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

Phoenix88

  • Захожу иногда
  • 81
  • 3 / 0
  • Нет предела самосовершенствованию
Никто не знает? :(
*

nthanter

  • Захожу иногда
  • 55
  • 1 / 1
Ну, кажется в заголовке темы можете писать [РЕШЕНО].

Во всяком случае у меня работает... :)

Итак,
1. Заменяете файл из аттача: ...home.../administrator/components/com_comprofiler/comprofiler.class.php
(или анализируете код и правите свой)
2. Устанавливаете плагин правила из аттача, назначаете стоимость (рекомендую 1 балл) и включаете его.
3. Проверяете, как работает и пишете сюда отчет .

NB: Не забудьте сделать бэкап оригинального файла!

P.S. В админке CB Менеджер конфигурации -> Профили надо установить: Минимальный интервал между просмотрами (в минутах), по-умолчанию кажется 60 мин. Чтобы удобно было тестировать - можно, временно установить короткий (например: 1 мин.)

- удачи ;)

а можно просто установить плагин без правки кода аттача.. чтобы вывести начисление баллов за хит?
*

Sni10

  • Захожу иногда
  • 110
  • 5 / 0
  • I am a law abiding citizen . . .
Ради всех святых покажите мне хоть в одном из представленных кодов функцию - newhitscbprofile - ? 17 раз перечитал топик ...  3 раза перешерстил мануал по php для чайников про function - но не нашел связи между установленым плагином точнее его частью <plugin_function>plgaup_newhitscbprofile</plugin_function> - с остальныи исполняемым кодом (((
*

migus

  • Moderator
  • 1000
  • 144 / 0
  • OPEN THE BOX
Ради всех святых покажите мне хоть в одном из представленных кодов функцию - newhitscbprofile - ?
Посмотрите на рабочий вариант в приложенном архиве этого сообщения
"The Lord Of A SandBox"
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Редактирование профиля AUP

Автор blessedlive

Ответов: 6
Просмотров: 3600
Последний ответ 24.03.2018, 01:18:35
от ovclub
Начисление баллов за вступление вгруппу

Автор Dusk09

Ответов: 0
Просмотров: 1416
Последний ответ 11.08.2015, 23:58:23
от Dusk09
alpha userpoints ошибка при установке правил 1136

Автор terveg

Ответов: 1
Просмотров: 1865
Последний ответ 29.09.2014, 10:15:37
от migus
Как сделать правило "Загрузить аватар профиля"?

Автор Сergei

Ответов: 1
Просмотров: 1723
Последний ответ 12.05.2014, 15:40:43
от NlCK
plg jcomments alphauserpoints_j25_v3.0.1 - начисление процента баллов

Автор etos

Ответов: 0
Просмотров: 1206
Последний ответ 24.01.2014, 11:49:47
от etos