Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Witam, chciałbym aby materiały dodawane na mój cms automatycznie lądowały w określonym dziale na forum jako nowy temat. Póki co stworzyłem skrypt, który ręcznie wrzuca wymagane dane do tabeli ibf_posts i ibf_topics. To jednak nie wystarcza. Mogę bez przeszkód wyświetlić dodany temat wpisując url z id i nazwą np: http://localhost/forum/topic/8089-moj-news/

Niestety mimo, że to działa temat nie wyświetla się na liście tematów w interesującym mnie dziale. Do jakich jeszcze tabeli muszę wykonać zapytania?

Mój skrypt:

$tytul = $data['title'];
$news = $data['value'];
$seo = form::inlink( $data['title'] );	
$sql = "INSERT INTO `mmorpg_forum`.`ibf_posts` (`pid`, `append_edit`, `edit_time`, `author_id`, `author_name`, `use_sig`, `use_emo`, `ip_address`, `post_date`, `icon_id`, `post`, `queued`, `topic_id`, `post_title`, `new_topic`, `edit_name`, `post_key`, `post_parent`, `post_htmlstate`, `post_edit_reason`) VALUES (NULL, '0', NULL, '9014', 'NewsMan', '1', '0', '178.42.137.254', UNIX_TIMESTAMP(), 0, '$news', '0', '0', NULL, '0', NULL, '0', '0', '1', '')";
$q = mysql_query($sql);
$postid = mysql_insert_id();

$sql = "INSERT INTO `mmorpg_forum`.`ibf_topics` (`tid`, `title`, `description`, `state`, `posts`, `starter_id`, `start_date`, `last_poster_id`, `last_post`, `icon_id`, `starter_name`, `last_poster_name`, `poll_state`, `last_vote`, `views`, `forum_id`, `approved`, `author_mode`, `pinned`, `moved_to`, `total_votes`, `topic_hasattach`, `topic_firstpost`, `topic_queuedposts`, `topic_open_time`, `topic_close_time`, `topic_rating_total`, `topic_rating_hits`, `title_seo`, `seo_last_name`, `seo_first_name`) VALUES (NULL, '$tytul', NULL, 'open', '0', '9014', UNIX_TIMESTAMP(), '9014', $postid, '0', 'NewsMan', 'NewsMan', '0', '0', '0', '15', '1', '1', '0', NULL, '0', '0', '$postid', '0', '0', '0', '0', '0', '$seo', 'newsman', 'newsman')";
$q = mysql_query($sql);
$topicid = mysql_insert_id();

$q = mysql_query("UPDATE ibf_posts SET topic_id = '$topicid' WHERE pid = '$postid ' LIMIT 1");

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

  • Manager
Opublikowano (edytowane)

Oj oj, nie tak. Tylko tak: http://community.invisionpower.com/resources/articles.html/_/ipboard-3x/developer-articles/how-to-add-a-post-to-a-topic-r507 I wtedy o nic więcej nie będziesz musiał się martwić.

Edytowane przez DawPi
To link do dodawaniu odpowiedzi, a nie nowego tematu
  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Dzięki bardzo za odpowiedź. Dla upewnienia jednak zapytam o jeszcze jedną rzecz dotyczącą skryptu z Twojego linka. Temat muszę założyć w ten mój "ręczny" i niezbyt zgrabny sposób by dopiero potem wywołać tamtą funkcję?

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Opublikowano (edytowane)

mam jeszcze jeden problem z wykorzystaniem tych klas wbudowanych w IPB. Bardziej natury samego PHP

Skrypt gdzie chce wywołać procedurę dodania tematu jest np. tutaj: /public/administracja/news/dodaj.php

a forum: /public/forum/

wpisałem

require_once( '.../forum/admin/applications/forums/app_class_forums.php' );

i dostaje błąd

failed to open stream

Edytowane przez Chmarus

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Opublikowano

narazie odpalilem skrypt ze zwyklej sciezki:

<?php

               require_once( 'forum/admin/applications/forums/app_class_forums.php' );
               $appClass       = new app_class_forums( ipsRegistry::instance() );

               /**
                * Get posting class
                */
               require_once( 'forum/admin/applications/forums/sources/classes/post/sources/classes/post/classPost.php' );
               $this->_postClass = new classPost( ipsRegistry::instance() );

               /**
                * Set some data.  The method names give away what we are setting.
                * We are using forum id 1
                */
               $this->_postClass->setIsPreview( false );
               $this->_postClass->setForumData( ipsRegistry::getClass('class_forums')->forum_by_id[ 1 ] );
               $this->_postClass->setForumID( 15 );
               $this->_postClass->setPostContent( "This is the body of the post here" );
               $this->_postClass->setAuthor( 9014 );
               $this->_postClass->setPublished( true );
               $this->_postClass->setSettings( array( 'enableSignature' => 1,
                                                                                          'enableEmoticons' => 1,
                                                                                          'post_htmlstatus' => 0,
                                                                                          'enableTracker'   => 0 ) );
               $this->_postClass->setTopicTitle( "Topic title here!" );

               /**
                * And post it...
                */
               try
               {
                       if ( $this->_postClass->addTopic() === FALSE )
                       {
                               print "Topic could not be posted";
                               exit;
                       }
               }
               catch( Exception $error )
               {
                       print "Topic posting failed: " . $error->getMessage();
                       exit;
               }

               $this->topic = $this->_postClass->getTopicData();
               $this->post  = $this->_postClass->getPostData();

?>

I nic się nie dzieje. Dostaje tylko error:

Incorrect access

You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

  • Manager
Opublikowano

Ee tam, nie czytasz nawet całych tematów, co podaję. Ciebie interesuje kod zaczynając się od tego tekstu:

It is quite trivial to do the same thing from outside of IPB. Here's a small script that I've used to post topics to IPB from outside of IPB. It takes an email address, and using that finds the appropriate IPB account to associate with the posting user.

A nie to, co wyżej, co stosuje się wewnątrz plików IP.Board ( np. we własnych modyfikacjach ).

  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

Ok, ten skrypcik już ładnie działa. Jest jeszcze jeden problem. Mianowicie jak odpalam ten skrypt ze sciezki: public/adminek/news/dodaj to temat nie dodaje się i wyświetla się ekran logowania do PA ipb :P Rozumiem, ze jest to jakas forma zabezpieczenia. Jest jakis sposob na ominiecie tej sytuacji? Ten sam skrypt odpalony z public/ nie daje takich efektów. W najgorszym wypadku będę po prostu do tego pliku curlem przesylal dane i wykonywal skrypt.

Wolalbym jednak tego uniknac i licze, ze istnieje jakies lepsze rozwiazanie.

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Opublikowano

To w takim razie jest to kolejna tajemnica poliszynela :P Ale trudno rozwiązałem to za pomocą CURL.

Jest natomiast kolejny problem. Nie ma polskich znaków w dodawanych treściach:

$data = array('value' => 'To jest przykladowy post', 'title' => 'Piąty  news' );
$post = new Post;
$post->postTopic( array( 'email' => '[email protected]', 'value' => $data['value'], 'tytul' => $data['title'] ) );

Zamiast Piąty news jest: PiäTy news

Baza cała w utf8 i tak dalej...

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Opublikowano

No to ten plik z tym kodem nie ma kodowania utf8.

Niestety właśnie ma :P Próbówałem nawet na początku pliku dodać header z utf8:

header ('Content-type: text/html; charset=utf-8'); 

Można coś jeszcze sprawdzić?

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Opublikowano (edytowane)

To jest to! W tym tkwił problem. W pliku, który przesłałeś jeszcze nazwa tematu nie miała polskich znaków, ale wystarczyło wprowadzić go w sposób analogiczny jak treść posta czyli:

$this->_postClass->setTopicTitle( IPSText::convertCharsets( "Wstawiona Wiadomość", 'UTF-8', IPS_DOC_CHAR_SET ));

Dziękuje bardzo za pomoc :) .

Edytowane przez Chmarus

Forum dyskusyjne dla graczy MMO i MMORPG - www.mmorpg.org.pl/forum - Tutoriale, problemy techniczne, rozmowy o MMORPG

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.