PDA

Zobacz pełną wersję : Alphauserpoints + K2



washingtonplx
29-05-2012, 14:38
Chcę aby po dodaniu nowego artykułu K2 dodawało punkty w alphauserpoints. Szukałem dość długo i znalazłem jedynie darmowe reguły z clever-joomla.com, które działają ale brak w nich reguły przyznającej punkty po dodaniu artykuły. Natrafiłem również na ten wątek (http://alphaplug.com/index.php/forum/38-k2/4968-k2-plugin.html) w jednym z anglojęzycznych for, gdzie ktoś umieścił regułę dodającą punkty po dodaniu artykułu oraz instrukcję.
Główny problem to to że wątek jest z przed 3 lat, a K2 przez ten czas sporo się zmieniło. Według instrukcji muszę umieścić ten kod:
// alphauserpoints - add item $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints '.DS.'helper.php'; if ( file_exists($api_AUP)) { require_once ($api_AUP); AlphaUserPointsHelper::newpoints( 'plgaup_k2' ); } //end alphauserpoints - add item
w pliku components/com_k2/controller.php którego to od 2 lat nie ma już w K2. Próbowałem i udało mi się jedynie umieszczając ten kod w pliku components/com_k2/controllers/item.php w linii 60 dodawać punkty, ale po wyświetleniu formularza edycji artykułu, a nie o to mi chodzi. Jeśli ktoś ma jakiejkolwiek pomysł jak to zrobić byłby wdzięczny

Werian89
29-05-2012, 23:36
Zajrzyj do administrator/components/com_k2/models/item.php i przed "$mainframe->redirect($link, $msg);" (metoda save, około linii 686 w K2 2.5.0) dodawaj kod wg dokumentacji stąd: http://www.alphaplug.com/index.php/products/alphauserpoints.html?start=2 i z linku który sam podałeś.

washingtonplx
30-05-2012, 14:20
Niby działa, ale nie do końca... wstawiłem ten kod przed "$mainframe->redirect($link, $msg);" i dodaje punkty, ale po wciśnięciu "zapisz" (artykuł w K2) wywala błąd "403 - Nie masz wystarczających uprawnień, aby zobaczyć ten zasób." i trzeba się logować od nowa. Artykuł jest dodany poprawnie tak samo przyznane są punkty, ale czemu pojawia się ten błąd to nie mam pojęcia...

Werian89
30-05-2012, 23:44
A spróbuj dostać się do tego pliku XML z pluginu (via FTP) i zamień K2 na com_k2 wg dokumentacji:

http://www.alphaplug.com/images/stories/xml_description.gif

Spróbuj też dodać ten kod po $mainframe->redirect . Przy jakim linku wywala Ci 403?

washingtonplx
31-05-2012, 11:39
Zmieniałem K2 na com_k2 i nadal jest to samo. Błąd wywala mi tylko gdy chcę dodać artykuł z formularza na stronie (/index.php?option=com_k2&view=item&task=add&tmpl=component#), gdy robię to na zapleczu z poziomu admina to wszystko działa dobrze. Próbowałem wcisnąć ten kod gdzie się tylko dało ale zawsze gdy doda punkty to wywali ten błąd i automatycznie wylogowuje się.

Werian89
31-05-2012, 22:42
Wiesz co, olać te ich pluginy, zawsze można napisać kod w PHP i nie bawić się... jako że nie używam Alphauserpoints, musisz pomóc mi w tym aby kod działał, bo piszę z głowy.
Kod dodajemy przed wspominanym "$mainframe->redirect($link, $msg);"



// Najpierw pobierzemy obiekt aktualnego usera:
$user = JFactory::getUser();
if (!$user->guest)
{
// jeśli zarejestrowany - działamy
// połączenie z bazą danych
$db = JFactory::getDBO();
// zapytanie
$query = "UPDATE nazwa_tabeli_alphauserpoints_z_pnuktami SET punkty = punkty + 1 WHERE userid=".$user->id;
$db->setQuery($query);
$db->query();
}


Musisz w bazie danych znaleźć tabelę komponentu Alphauserpoints, gdzie zapisywane są punkty i tak zmodyfikować zapytanie SQL, żeby aktualizowało właśnie punkty użytkownika.
Czyli zmień "punkty" na nazwę kolumny odpowiadającej za punkty oraz nazwa_tabeli_alphauserpoints_z_pnuktami na nazwę tabeli w jakiej masz przypisane punkty do użytkownika . Prawdopodobnie będziesz też musiał zmienić userid z zapytania, na nazwę kolumny wskazującą id użytkowników Joomla (user_id, id_user - nie wiem, sprawdź w tabeli).

washingtonplx
01-06-2012, 17:46
Wielkie dzięki za pomoc w rozwiązaniu problemu! Jak by ktoś chciał to podam kod z odpowiednimi nazwami tabeli


// Najpierw pobierzemy obiekt aktualnego usera:
$user = JFactory::getUser();
if (!$user->guest)
{
// jeśli zarejestrowany - działamy
// połączenie z bazą danych
$db = JFactory::getDBO();
// zapytanie
$query = "UPDATE jos_alpha_userpoints SET points = points + 1 WHERE userid=".$user->id;
$db->setQuery($query);
$db->query();