Cześć! Po raz kolejny problem. Muszę napisać niewielki content plugin do Joomli 2.5.
Mam praktycznie wszystko gotowe. Ale wróćmy do początku, założenia komponentu. W treści wybranych artykułów wstawiamy odpowiednie znaczniki, w tym wypadku: {zaplac_dotpay}coś tam coś tam{/zaplac_dotpay}. W miejsce tego tekstu ma się pojawić odpowiedni formularz (mikropłatności dotpay), po wpisaniu kodu otrzymanego np SMSem z pomocą metody GET następuje sprawdzenie poprawności kodu i jeżeli jest on poprawny, wyświetla się treść, która w oryginale była pomiędzy znacznikami. Wszystko można zobaczyć na stronie głónwej - aptekastatim.pl/portal
Plugin się pięknie instaluje, wszystko ładnie i w ogóle, poza faktem, że nie podmienia tekstu.
Kod:
<?php
// no direct access
function dotpay($artykul, $this_is) {
// podpięcie parametrów pod ładne zmienne - premium SMS
$numer = $this_is->params->get('numer');
$tresc = $this_is->params->get('tresc');
$koszt = $this_is->params->get('koszt');
$siec = $this_is->params->get('siec');
$reg = $this_is->params->get('reg');
$kto = $this_is->params->get('kto');
// podpięcie parametrów pod zmienne - przelew
$koszt_przelew = $this_is->params->get('koszt_przelew');
$reg_przelew = $this_is->params->get('reg_przelew');
// tworzenie formularza
$form = '<div id="dotpay-platnosci">
<div id="premium-sms">
<div class="co"><h3>Premium SMS</h3></div>
<div class="instrukcja">Zyskaj dostęp jednorazowy do wybranego przez Ciebie wzoru. Poprzez wysłanie SMSa o treści ' . $tresc . ' na numer ' . $numer . '.</div>
<div class="formularz"><form name="premium-sms" method="get">Wpisz kod z SMSa:<br /><input type="text" name="kod" /><input type="hidden" name="typ_dotpay" value="sms" /><br /><input type="submit" value="Dostęp" /></div>
<div class="pouczenie">Premium SMS jest usługą dostępną dla sieci: ' . $siec . '<br />Koszt jednej wiadomości: ' . $koszt . '<br /><a href="' . $reg . '" class="a-regulamin">Regulamin usługi"><br />Usługę świadczy ' . $kto . '.<br />Właściciel serwisu: mail@mail.com<br /></div>
</div>
<div id="premium-przelew">
<div class="co"><h3>Kod za przelew</h3></div>
<div class="instrukcja">Zyskaj nieograniczony dostęp do wszystkich wzorów na tydzień.</div>
<div class="formularz"><form name="premium-przelew" method="get">Wpisz kod z SMSa:<br /><input type="text" name="kod" /><input type="hidden" name="typ_dotpay" value="przelew" /><input type="hidden" name="timestamp" value="' . time() . '" /><br /><input type="submit" value="Dostęp" /></div> <div class="pouczenie">Koszt przelewu: ' . $koszt_przelew . '<br /><a href="' . $reg_przelew . '" class="a-regulamin">Regulamin usługi"><br />Usługę świadczy ' . $kto . '.<br />Właściciel serwisu: mail@mail.com<br /></div>
</div>
</div>';
$row->text = preg_replace("^{zaplac_dotpay}.*{/zaplac_dotpay}^", $form, $artykul); }
class plgContentdotpay_platnosci extends JPlugin
{
public function onContentPrepare($context, &$row, &$params, $page = 0)
{
$artykul = $row->text;
// sprawdzenie czy w treści artykułu zawiera się szukana fraza:
// sprawdzenie czy nie został podany kod
if($_GET['kod']) {
// sprawdzenie czy podany kod jest poprawny
$db =& JFactory::getDBO();
$kod = $_GET['kod'];
// sprawdzanie typu kodu
if ($_GET['typ_dotpay'] = 'sms') {
$typ = 'sms';
}
elseif ($_GET['typ_dotpay'] = 'przelew') {
$typ = 'przelew';
}
// sprawdzenie czy kod jest w bazie i jest aktywny
$query = "SELECT * FROM `jos_dotpay_platnosci` WHERE `kod` = '$kod' and `typ` = '$typ'";
$db->setQuery( $query );
$ile = $db->loadObjectList();
// sprawdzenie aktywności kodu
if ($typ == 'przelew') {
if ($ile['czas'] > $_GET['timestamp']) {
$row->text = preg_replace("^{zaplac_dotpay}^", "", $row->text); $row->text = preg_replace("^{/zaplac_dotpay}^", "", $row->text); }
elseif ($ile['czas'] == '0') {
$timestamp = $_GET['timestamp'] + 7*86400;
$qr = "UPDATE `jos_dotpay_platnosci` SET `time` = '$timestamp' WHERE `kod` = '$kod' and `typ` = 'przelew'";
$db->setQuery( $query );
}
else {
if (!empty($ile['czas'])) { $qr = "DELETE FROM `jos_dotpay_platnosci` WHERE `kod` = '$kod'";
$db->setQuery( $query );
}
dotpay($artykul, $this);
}
}
elseif ($typ == 'sms') {
$row->text = preg_replace("^{zaplac_dotpay}^", "", $row->text); $row->text = preg_replace("^{/zaplac_dotpay}^", "", $row->text); $qr = "DELETE FROM `jos_dotpay_platnosci` WHERE `kod` = '$kod'";
$db->setQuery( $query );
}
else {
// podmienienie frazy na prośbę o wpisanie kodu
dotpay($artykul, $this);
}
}
}
else {
// podmienienie frazy na prośbę o wpisanie kodu
dotpay($artykul, $this);
}
}
}
?>