Решил сделать доступ к загрузкам сайта только, когда чего-нибудь пожертвуют (вымогательство) через PayPal.
Не стал разбираться с их API, использовал простую кнопку.
При удачной оплате PayPal отсылает на одну и ту же страницу:
Спасибо за пожертвование, благодаря таким людям, как вы, сайт живет и развивается.
Помимо этой фигни, там стоит заглушка {donate}.
Сделал content plugin. Может есть лучший вариант? PHP только учусь, не судите строго.
Плагин ищет текст {donate} в материале, если есть пишет в базу jdownloads_donate пользователя, IP, дату, проверяя на уникальность. Пишет в cookie был здесь.
Код:
<?php
defined('_JEXEC') or die;
class plgContentDonate extends JPlugin
{
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();
}
public function onContentBeforeDisplay($context, &$row, &$params, $page)
{
if(strstr($row->text, '{donate}')){ //Чтоб не выполнялось во всех материалах, а там где {donate} Может есть другой вариант?
$user = &JFactory::getUser();
if($user->guest){
$username = '';
$usernamesql = '';
}
else{
$username = $user->username;
$usernamesql = ' OR username = "'.$username.'"';
}
$ip=$_SERVER['REMOTE_ADDR'];
$database = &JFactory::getDBO();
$database->setQuery('SELECT username, IP FROM #__jdownloads_donate WHERE IP = "'.$ip.'"'.$usernamesql);
$washere = $database->loadObjectList();
if(!$washere){
$database->setQuery('INSERT INTO #__jdownloads_donate (id, username, IP, date)
VALUES (NULL, "'.$username.'", "'.$ip.'", "'.date("Y-m-d H:i:s").'")');
$database->query();
}
$cookie = setcookie("donate", "1", 0x7FFFFFFF);
$html=''; // Выводить вместо {donate} нечего, а заглушку {donate} убрать надо.
$row->text = str_replace('{donate}', $html, $row->text);
}
return ;
}
}
Вроде все работает. Но может есть лучшее решение?