Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa/metoda tworząca nowy post na forum phpBB
phpion
post 24.04.2008, 07:58:32
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
z konieczności napisałem klasę/metodę tworzącą nowy post na forum phpBB. Może komuś się przyda:
  1. <?php
  2. class Helper_Phpbb {
  3. /**
  4.  * Creates new topic for phpBB forum
  5.  * 
  6.  * @access public
  7.  * @static
  8.  * 
  9.  * @param string $title Topic title
  10.  * @param string $content Topic body content
  11.  * @param int $forumId Destination forum
  12.  * @param int $posterId Post author id
  13.  * 
  14.  * @return int Created topic's id. 0 if there were any problems...
  15.  */
  16. static public function createNewTopic($title, $content, $forumId, $posterId) {
  17. $title = mysql_escape_string($title);
  18. $content = mysql_escape_string($content);
  19. $forumId = (int)$forumId;
  20. $poserId = (int)$posterId;
  21.  
  22. mysql_query('START TRANSACTION');
  23.  
  24. // creating new topic
  25. $q = 'INSERT INTO '.TOPICS_TABLE.' SET forum_id='.$forumId.', topic_title="'.$title.'", topic_poster='.$posterId.', topic_time='.time().', topic_views=1, topic_replies=0, topic_status=0, topic_vote=0, topic_type=0, to
  26. ic_first_post_id=0, topic_last_post_id=0, topic_moved_id=0, topic_last_post_uid='.$posterId;
  27. if (!mysql_query($q)) {
  28. mysql_query('ROLLBACK');
  29. return 0;
  30. }
  31.  
  32. $topicId = mysql_insert_id();
  33.  
  34. // creating new post
  35. $q = 'INSERT INTO '.POSTS_TABLE.' SET topic_id='.$topicId.', forum_id='.$forumId.', poster_id='.$posterId.', post_time='.time().', poster_ip="'.encode_ip($_SERVER['REMOTE_ADDR']).'", post_username=NULL, enable_bbcode=1, enable_html=0, enable_smilies=1, ena
    ble_s
  36. g=0, post_edit_time=NULL, post_edit_count=0, raport=0, notice=0';
  37. if (!mysql_query($q)) {
  38. mysql_query('ROLLBACK');
  39. return 0;
  40. }
  41.  
  42. $postId = mysql_insert_id();
  43.  
  44. // creating post content
  45. $q = 'INSERT INTO '.POSTS_TEXT_TABLE.' SET post_id='.$postId.', bbcode_uid="'.make_bbcode_uid2().'", post_subject="'.$title.'", post_text="'.$content.'", mods_notice=NULL';
  46. if (!mysql_query($q)) {
  47. mysql_query('ROLLBACK');
  48. return 0;
  49. }
  50.  
  51. // updating posts table
  52. $q = 'UPDATE '.TOPICS_TABLE.' SET topic_first_post_id='.$postId.', topic_last_post_id='.$postId.' WHERE topic_id='.$topicId.' LIMIT 1';
  53. if (!mysql_query($q)) {
  54. mysql_query('ROLLBACK');
  55. return 0;
  56. }
  57.  
  58. // updating forum statistics
  59. $q = 'UPDATE '.FORUMS_TABLE.' SET forum_posts=forum_posts+1, forum_topics=forum_topics+1, forum_last_post_id='.$postId.' WHERE forum_id='.$forumId.' LIMIT 1';
  60. if (!mysql_query($q)) {
  61. mysql_query('ROLLBACK');
  62. return 0;
  63. }
  64.  
  65. // updating poster statistics
  66. $q = 'UPDATE '.USERS_TABLE.' SET user_posts=user_posts+1 WHERE user_id='.$posterId.' LIMIT 1';
  67. if (!mysql_query($q)) {
  68. mysql_query('ROLLBACK');
  69. return 0;
  70. }
  71.  
  72. mysql_query('COMMIT');
  73.  
  74. return $topicId;
  75. }
  76. }
  77. ?>


pion

PS: Jeśli odpowiedniejszym działem będzie "Algorytmy, klasy, funkcje" proszę o przeniesienie tematu.

Ten post edytował phpion 24.04.2008, 08:04:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
bim2
post 24.04.2008, 18:16:42
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Mhhh, mnie zastanawia tylko po co zamykać to w klasie? smile.gif


--------------------
Go to the top of the page
+Quote Post
phpion
post 24.04.2008, 18:53:34
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Potrzebowałem takowego cacuszka do serwisu, który tworzę. Serwis posiada już forum właśnie phpBB i była konieczność przy dodawaniu niektórych elementów tworzyć równocześnie posty na forum. Ta klasa (a w zasadzie jedna metoda tongue.gif) spełnia tą rolę.
Go to the top of the page
+Quote Post
MMPrime
post 24.04.2008, 19:53:27
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 12
Dołączył: 23.04.2008

Ostrzeżenie: (0%)
-----


Czy czasem phpBB nie ma jeszcze kolumn wyszukiwawczych do których trzeba dodać wyrazy zawarte w poście by wyszukiwarka działała.


--------------------
Go to the top of the page
+Quote Post
l0ud
post 24.04.2008, 19:58:01
Post #5





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Mhm, z tego co widzę to to raczej nadawało by się jako funkcję niż klasę smile.gif Tak czy siak nie jest zbyt samodzielne - co to są za stałe i co to jest make_bbcode_uid2() ? Domyślam się, że to działa tylko wewnątrz phpBB2, albo trzeba coś dołączyć? No i uwzględniłeś tylko bazę mysql - jak już używasz kodu phpbb2 lepiej było użyć wbudowanej klasy do obsługi bazy.


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
phpion
post 24.04.2008, 20:11:14
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(MMPrime @ 24.04.2008, 20:53:27 ) *
Czy czasem phpBB nie ma jeszcze kolumn wyszukiwawczych do których trzeba dodać wyrazy zawarte w poście by wyszukiwarka działała.

Ssss, tego niestety nie sprawdziłem. Dzięki za cynk, sprawdzę.

Cytat(l0ud @ 24.04.2008, 20:58:01 ) *
Mhm, z tego co widzę to to raczej nadawało by się jako funkcję niż klasę smile.gif Tak czy siak nie jest zbyt samodzielne - co to są za stałe i co to jest make_bbcode_uid2() ? Domyślam się, że to działa tylko wewnątrz phpBB2, albo trzeba coś dołączyć? No i uwzględniłeś tylko bazę mysql - jak już używasz kodu phpbb2 lepiej było użyć wbudowanej klasy do obsługi bazy.

Te stałe i ta funkcją są wbudowane w phpBB. Metoda powinna być odpalana we współpracy z plikami forum. Co do uwzględnienia tylko bazy MySQL: szczerze powiedziawszy pisałem to pod konkretną potrzebę i za bardzo się nie patyczkowałem. Dla mnie jest to przydatne i może komuś się przyda - po to dałem to na forum, nie pod ocenę winksmiley.jpg
Go to the top of the page
+Quote Post
Ociu
post 25.04.2008, 09:14:35
Post #7





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Oj, oj, oj!
Nie lepiej sobie stworzyć odpowiedni styl aby forum stało by się wortalem/portalem ? smile.gif
Go to the top of the page
+Quote Post
phpion
post 27.04.2008, 12:35:57
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Ociu @ 25.04.2008, 10:14:35 ) *
Oj, oj, oj!
Nie lepiej sobie stworzyć odpowiedni styl aby forum stało by się wortalem/portalem ? smile.gif

Oi, oi, oi! winksmiley.jpg
To po co jest forum.php.pl? "Nie lepiej sobie stworzyć odpowiedni styl aby forum stało by się wortalem/portalem ? smile.gif"

Raczej nie. Serwis funkcjonuje sobie swoim życiem, a forum swoim. Wrzucając nową grę do serwisu automatycznie tworzony jest wątek na forum, w którym ludzie mogą się wypowiadać na temat tejże gry. Gra jest powiązana z komentarzami na forum i odwrtonie. Wątek na forum powiązany jest z konkretną grą.
Go to the top of the page
+Quote Post
Ociu
post 27.04.2008, 16:09:30
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Cytat(phpion @ 27.04.2008, 13:35:57 ) *
Oi, oi, oi! winksmiley.jpg
To po co jest forum.php.pl? "Nie lepiej sobie stworzyć odpowiedni styl aby forum stało by się wortalem/portalem ? smile.gif"

Ponieważ My nie połączyliśmy bazy danych wortalu z forum, a Ty łączysz smile.gif Pomijam oczywiście sprawy typu "ostatnie 10 tematów".
Go to the top of the page
+Quote Post
phpion
post 27.04.2008, 17:10:05
Post #10





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Gwoli ścisłości: nie ja połączyłem, zastałem system już w takim stanie winksmiley.jpg Myślę, że na tym można zakończyć tego offtopa bo conajmniej jeden z nas (nie będę wskazywał palcem) może dostać warna hehehe.

PS: swoją drogą: można offtopować we własnym temacie? biggrin.gif

-- @ociu
Można, ale dostaniesz pstryczka w ucho


Ten post edytował Ociu 27.04.2008, 19:29:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:46