Правило AlphaUserPoints 1.8.9 снятие баллов за продление объявления в AdsManager 2.9.13

  • 34 Ответов
  • 2481 Просмотров

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

*

Ishti39

 :D Помогите правильно прикрутить правило AUP для доски в функции продления объявления.
Функция:
Спойлер
[свернуть]
Код правила:
Спойлер
[свернуть]

Суть в том, чтобы когда пользователь продлял объявление с него списывались баллы, но если баллов не достаточно, то функция не выполнялась.

P.S.   +  в репу гарантирую. :)
« Последнее редактирование: 24.12.2015, 04:46:10 от Ishti39 »
Учиться учиться и ещё раз учиться

*

NewUsers

Код
<?php
require_once JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
$UserAUP = AlphaUserPointsHelper::getUserInfo( '', JFactory::getUser()->get('id') );
$sum_points = 500;// сумма баллов которые будет списано с пользователя

if($UserAUP->points >= $sum_points)
{
// выполняем метод renewContent();
$this->renewContent();

// и списываем необходимое кол-во баллов
$UserText = 'С Вашего счета было списано <b>'.$sum_points.'</b> баллов!';
AlphaUserPointsHelper::newpoints( 'sysplgaup_renewad', $UserAUP->referreid, "", $UserText, '-'.$sum_points, $UserText);
}
else
{
// выводим сообщение что недостаточно баллов...
}

?>

*

Ishti39

Код
<?php
require_once JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
$UserAUP = AlphaUserPointsHelper::getUserInfo( '', JFactory::getUser()->get('id') );
$sum_points = 500;// сумма баллов которые будет списано с пользователя

if($UserAUP->points >= $sum_points)
{
// выполняем метод renewContent();
$this->renewContent();

// и списываем необходимое кол-во баллов
$UserText = 'С Вашего счета было списано <b>'.$sum_points.'</b> баллов!';
AlphaUserPointsHelper::newpoints( 'sysplgaup_renewad', $UserAUP->referreid, "", $UserText, '-'.$sum_points, $UserText);
}
else
{
// выводим сообщение что недостаточно баллов...
}

?>
Подскажи пожалуйста, куда енто вставить?
Учиться учиться и ещё раз учиться

*

NewUsers

Подскажи пожалуйста, куда енто вставить?

там где вызываешь метод renewContent()
Вместо этой строчки которая вызывает этот метод вставляй этот код....

И не забудь заменить
Код
$this->renewContent();
на правильный код который вызывает этот метод...

*

Ishti39

там где вызываешь метод renewContent()
Вместо этой строчки которая вызывает этот метод вставляй этот код....

И не забудь заменить
Код
$this->renewContent();
на правильный код который вызывает этот метод...
У меня в \components\com_adsmanager\views\details\tmpl в default.php есть вывод текстовой кнопки Продлить объявление, как этот код правильно вмонтировать?

$target = TRoute::_("index.php?option=com_adsmanager&task=renew&catid".$this->content->category."&id=".$this->content->id);
                        echo "<a href='".$target."'>".JText::_('ADSMANAGER_RENEW_CONTENT')."</a>";
            echo "&nbsp;";
Учиться учиться и ещё раз учиться

*

NewUsers

Если ты говоришь что это функция продления renewContent, то ее и ищи где она вызывается...

*

Ishti39

Если ты говоришь что это функция продления renewContent, то ее и ищи где она вызывается...
вот в этом default.php и вызывается или может я что то не то понимаю?
Учиться учиться и ещё раз учиться

*

Ishti39

Если ты говоришь что это функция продления renewContent, то ее и ищи где она вызывается...
есть ещё в файле controller.php:
Спойлер
[свернуть]
Учиться учиться и ещё раз учиться

*

NewUsers

есть ещё в файле controller.php:

Ну вот, начало нашел, теперь найди файл модель ( Путь тебе уже указан, имя будет content.php )
в этом файле найди эту функцию и допиши код который я тебе дал...

Только для начала определи, какой отрезок кода в этой функции выполняет важную для тебя функцию - Продления
Пробуй методом тыка узнать!

*

Ishti39

Ну вот, начало нашел, теперь найди файл модель ( Путь тебе уже указан, имя будет content.php )
в этом файле найди эту функцию и допиши код который я тебе дал...

Только для начала определи, какой отрезок кода в этой функции выполняет важную для тебя функцию - Продления
Пробуй методом тыка узнать!
яж в самом первом посте и прописал эту функцию из этого content.php, надо в неё код правильно прописать AUP, у меня уже само правило создано в админке, там и сумма указана и сообщения указаны
Учиться учиться и ещё раз учиться

*

NewUsers

Какая переменная содержим суммы списанных баллов?

*

Ishti39

Какая переменная содержим суммы списанных баллов?
поставил -40 баллов
Учиться учиться и ещё раз учиться

*

Ishti39

Какая переменная содержим суммы списанных баллов?
смысл то какой, что когда начинает вызываться функция renewContent сначала проверяется код правила AUP, есть ли средства на счету у пользователя, если есть, то они списываются и продолжается дальше выполнятся функция renewContent, если не достаточно средств, то функция не выполняеться и выводиться сообщение
Учиться учиться и ещё раз учиться

*

NewUsers

смысл то какой, что когда начинает вызываться функция renewContent сначала проверяется код правила AUP, есть ли средства на счету у пользователя, если есть, то они списываются и продолжается дальше выполнятся функция renewContent, если не достаточно средств, то функция не выполняеться и выводиться сообщение

попробуй вот так...
Код: php
<?php
   function renewContent($contentid, $ad_duration)
   {
   require_once JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
   $UserAUP = AlphaUserPointsHelper::getUserInfo( '', JFactory::getUser()->get('id') );
   $sum_points = 500;// сумма баллов которые будет списано с пользователя
   
   if($UserAUP->points >= $sum_points)
   {
   $UserText = 'С Вашего счета было списано <b>'.$sum_points.'</b> баллов!';
   $iser_points = AlphaUserPointsHelper::newpoints( 'sysplgaup_renewad', $UserAUP->referreid, "", $UserText, '-'.$sum_points, $UserText);
   
   if($iser_points)
   {
   $this->_db->setQuery( "SELECT expiration_date FROM #__adsmanager_ads WHERE id = ".(int)$contentid);
   $expiration_date = $this->_db->loadResult();
   $time = strtotime($expiration_date);
   if ($time < time())
   {
   $time = time();
   }
   $time = $time + ( $ad_duration * 3600 *24);
   $newdate = date("Y-m-d H:i:s",$time);
   
   $this->_db->setQuery( "UPDATE #__adsmanager_ads SET expiration_date = '$newdate', date_created = NOW(),recall_mail_sent=0,published=1 WHERE id=".(int)$contentid."");//TODO and recall_mail_sent = 1
   $this->_db->query();
   }
   }
   else
   {
   echo 'не хватает баллов!';
   }
   }
?>

*

Ishti39

попробуй вот так...
Код: php
<?php
   function renewContent($contentid, $ad_duration)
   {
   require_once JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
   $UserAUP = AlphaUserPointsHelper::getUserInfo( '', JFactory::getUser()->get('id') );
   $sum_points = 500;// сумма баллов которые будет списано с пользователя
   
   if($UserAUP->points >= $sum_points)
   {
   $UserText = 'С Вашего счета было списано <b>'.$sum_points.'</b> баллов!';
   $iser_points = AlphaUserPointsHelper::newpoints( 'sysplgaup_renewad', $UserAUP->referreid, "", $UserText, '-'.$sum_points, $UserText);
   
   if($iser_points)
   {
   $this->_db->setQuery( "SELECT expiration_date FROM #__adsmanager_ads WHERE id = ".(int)$contentid);
   $expiration_date = $this->_db->loadResult();
   $time = strtotime($expiration_date);
   if ($time < time())
   {
   $time = time();
   }
   $time = $time + ( $ad_duration * 3600 *24);
   $newdate = date("Y-m-d H:i:s",$time);
   
   $this->_db->setQuery( "UPDATE #__adsmanager_ads SET expiration_date = '$newdate', date_created = NOW(),recall_mail_sent=0,published=1 WHERE id=".(int)$contentid."");//TODO and recall_mail_sent = 1
   $this->_db->query();
   }
   }
   else
   {
   echo 'не хватает баллов!';
   }
   }
?>
никакой реакции, только сообщение вылезло, что объявление продлено и всё, дата не обновилась и сумма не списалась :(
Учиться учиться и ещё раз учиться

*

Ishti39

системные сообщения вообще можно не прописывать, они уже прописаны
Учиться учиться и ещё раз учиться

*

Ishti39

функция renewContent без правила AUP работает, я его проверял
Учиться учиться и ещё раз учиться

*

NewUsers

никакой реакции, только сообщение вылезло, что объявление продлено и всё, дата не обновилась и сумма не списалась :(

тогда добавь к условию if($iser_points) если...
Код: php
<?php else
  {
  echo 'проблемы с выполнением правила AUP';
  } ?>

*

NewUsers

никакой реакции, только сообщение вылезло, что объявление продлено и всё, дата не обновилась и сумма не списалась :(

покажи какой код у тебя получился?

*

Ishti39

покажи какой код у тебя получился?
не получается по этому коду, я сейчас вот так вставил:
Спойлер
[свернуть]

объявление продлилось, хотя баллов на счету не хватало, вылезло сообщение:

Системное сообщение

У вас не хватает Баллов!Ваше объявление продлено
Учиться учиться и ещё раз учиться

*

Ishti39

покажи какой код у тебя получился?
Что надо ещё дописать? :(
« Последнее редактирование: 24.12.2015, 13:43:07 от Ishti39 »
Учиться учиться и ещё раз учиться

*

Ishti39

покажи какой код у тебя получился?
:D NewUsers посмотри, что у меня не так получилось  :o
Учиться учиться и ещё раз учиться

*

NewUsers

:D NewUsers посмотри, что у меня не так получилось  :o

Я тебе дал готовый код. Ты знаешь куда его надо вставить...
Посмотри внимательно на свой и мой код...

*

Ishti39

Я тебе дал готовый код. Ты знаешь куда его надо вставить...
Посмотри внимательно на свой и мой код...
NewUsers я не знаю как правильно вставить:
<?php else
         {
            echo 'проблемы с выполнением правила AUP';
         } ?>
я в рнр неособо понимаю и у меня там в content.php с этими знаками <?php....?> не вставляется, можешь полностью с доработками и без этих <?php....?> знаков написать?
Учиться учиться и ещё раз учиться

*

NewUsers

Попробуй!

*

Ishti39

Попробуй!
Написало:Ваше объявление продлено!Дата не изменилась никак, а про баллы вообще тишина  :(
Учиться учиться и ещё раз учиться

*

NewUsers

Создай новое правило для AUP

*

Ishti39

Создай новое правило для AUP
с таким же Уникальным именем функции sysplgaup_renewad?
Учиться учиться и ещё раз учиться

*

NewUsers

с таким же Уникальным именем функции sysplgaup_renewad?

А смысл его тогда создавать, если создашь с таким же именем. Конечно новое пропиши!
Не забудь изменить имя плагина в файле....

*

Ishti39

А смысл его тогда создавать, если создашь с таким же именем. Конечно новое пропиши!
Не забудь изменить имя плагина в файле....

тоже самое  :( ничего не изменилось :'(
Учиться учиться и ещё раз учиться