Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Opóźnienie funkcji
Forum PHP.pl > Forum > PHP
kojot0s
Witam,
mam problem takiej natury, iż chce wstawić do pewnej funkcji drugą funkcje. Czy jest możliwość, aby ta funkcja została wykonana, lecz nie zwracała jeszcze wyniku? Chce, aby została zaakceptowana w ramach trzeciej funkcji. Dokładnie to edytuje sktypt przyznawania punktów za dodanie filmu, pkt są przyznawane w trakcie dodania filmu, który jest jeszcze niezaakceptowany. Zależy mi, aby pkt były przyznawane tylko w razie akceptacji filmu.
markonix
Zanim dodasz punkty sprawdź status filmu i wyświetl odpowiedni komunikat.

Nie za dużo to ma wspólnego z opóźnianiem funkcji czy coś, to po prostu zwykłe warunkowanie.
kojot0s
Dzięki, dobry tok myślenia. Jednak jak zrobić by te punkty zostały dodane przy akceptacji filmu (inna fukcja)?
markonix
Pisz troszkę bardziej obrazowo.

Kto i kiedy i jak dodaje punkty?
kojot0s
Wybacz już wszystko wypisuje.

Ta funkcja dodaje video ze skryptu allvideoshare, który dodaje użytkownik i będzie oczekiwało na zaakceptowanie.

  1. function savevideo() {
  2. $mainframe = JFactory::getApplication();
  3. $row = &JTable::getInstance('allvideosharevideos', 'Table');
  4. $cid = JRequest::getVar( 'cid', array(0), '', 'array' );
  5. $id = $cid[0];
  6. $row->load($id);
  7.  
  8.  
  9. // Tutaj dodawane są automatycznie punkty za dodanie video.
  10.  
  11. $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
  12. if ( file_exists($api_AUP))
  13. {
  14. require_once ($api_AUP);
  15. $id = itemid ;
  16. $keyreference = AlphaUserPointsHelper::buildKeyreference('function_name', 'itemid' );
  17. AlphaUserPointsHelper::newpoints( 'plgaup_alladd', '', $keyreference);
  18.  
  19. }
  20. // koniec czesci pkt
  21.  
  22.  
  23.  
  24.  
  25. if(!$row->bind(JRequest::get('post'))) {
  26. JError::raiseError(500, $row->getError());
  27. }
  28.  
  29. jimport( 'joomla.filter.output' );
  30. $row->title = JRequest::getVar('title', '', 'post', 'string', JREQUEST_ALLOWHTML);
  31. $row->title = JString::trim($row->title);
  32. if(!$row->slug) $row->slug = $row->title;
  33. $row->slug = JFilterOutput::stringURLSafe($row->slug);
  34.  
  35. $row->description = JRequest::getVar('description', '', 'post', 'string', JREQUEST_ALLOWHTML);
  36. $row->thirdparty = JRequest::getVar('thirdparty', '', 'post', 'string', JREQUEST_ALLOWRAW);
  37.  
  38.  
  39. [b][center]...[/center][/b]
  40.  
  41.  
  42. }
  43.  
  44. $itemId = '';
  45. if(JRequest::getInt('Itemid')) {
  46. $itemId = '&Itemid=' . JRequest::getInt('Itemid');
  47. }
  48. $link = JRoute::_( 'index.php?option=com_allvideoshare&view=user' . $itemId, false );
  49.  
  50. $mainframe->redirect($link, JText::_('Zapisano'));
  51. }


Potem ja akceptuje video tj. publikuje.
markonix
Przenieś (albo skopiuj a tu zakomentuj) fragment dodający punkty do części gdzie akceptujesz film.
Upewnij się tylko czy argumenty są odpowiednio przekazywane.
kojot0s
A wiesz może jak przekazać taki argument? Chodzi głownie o id użytkownika. Próbowałem w ten sposób właśnie, ale nie potrafie przekazać odpowiednio id i pobierane jest moje id i pkt przyznawane są mi, a nie użytkownikowi który dodał film.
markonix
Musisz pobrać z bazy ID usera na podstawie ID filmu.
kojot0s
To bardzo dobry pomysł. Już nie męcze, ostatnie pytanie. Miałbyś jakiś pomysł jak już pobrane ID zastosować do tego kodu przyznawania pkt?
markonix
Nie za bardzo, funkcje (metody) przy dodawaniu punktów są dla mnie nie jasne.
Albo coś źle skopiowałeś, albo ten FW dla mnie jest zbyt skomplikowany wink.gif
Bo np. $id nigdzie nie jest przekazywane, a poza tym jest nadpisywane stałą?
Jakieś to pokręcone.
d3ut3r
Ten kod dodaje punkty aktualnemu użytkownikowi, zgodnie z tym co jest w dokumentacji (do której czasem warto zajrzeć tongue.gif ) kod przy akceptacji powinien wyglądać tak:

  1. if ( file_exists($api_AUP))
  2. {
  3. require_once ($api_AUP);
  4.  
  5. $aupid = AlphaUserPointsHelper::getAnyUserReferreID( $userID );
  6.  
  7. if ( $aupid ) AlphaUserPointsHelper::newpoints( 'plgaup_alladd', $aupid );
  8. }


Oczywiście $userID to pobrana wartość z bazy danych oznaczająca ID użytkownika któremu chcesz dodać punkty.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.