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

Komentarze w własnej aplikacji


Przejdź do rozwiązania Rozwiązane przez KoPcIu,

Rekomendowane odpowiedzi

Opublikowano

Witam! Tworzę aplikację pomocy(coś w stylu ticket'ów z możliwością dyskusji z osobą przyjmującą zgłoszenie), niestety mam problem z zaimplementowaniem tam gotowego rozwiązania przygotowanego przez silnik forum.

 

Napotkałem na centrum pomocy: http://www.invisionpower.com/support/guides/_/advanced-and-developers/application/application-extension-comments-r131

 

Oczywiście na starcie napotkałem błąd, jak się okazało wystarczyło dodać:

	public function remapKeys( $type='comment' ) {
		return ( $type == 'comment' ) ? $this->_remap : $this->_parentRemap;
	}

I to jest ogólnie jedyna różnica pomiędzy moją wersja komentarzy, a tą zawartą na stronie(oczywiście poza nazwami). Zastanawia mnie pewien fakt, co oznacza zmienna _parentRemap ? Czy potrzebuję do tego jakąś dodatkową tablę? Jeśli tak to gdzie zdefiniować jej nazwę. Z tego co myślę chodzi tutaj o dane na temat mojego ticketu? Dodatkowo co oznacza w fetchFormatted zmienna $commentParent.

 

Aktualnie po wejściu mam błąd z bazy danych:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Date: Thu, 15 May 2014 12:57:28 +0000
 Error: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') 
 LEFT JOIN pfields_content pc ON ( pc.member_id=m.member_id ) 
 LEFT JOIN pro' at line 1
 IP Address: 178.191.191.248 - /index.php?app=samppanel&module=help&section=view
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 mySQL query error: SELECT c.*,m.member_id as my_member_id, m.*,pc.*,pp.*,rep_index.rep_rating as has_given_rep,rep_cache.rep_points, rep_cache.rep_like_cache FROM comments_tickets c  LEFT JOIN members m ON ( m.member_id=c. ) 
 LEFT JOIN pfields_content pc ON ( pc.member_id=m.member_id ) 
 LEFT JOIN profile_portal pp ON ( pp.pp_member_id=m.member_id ) 
 LEFT JOIN reputation_index rep_index ON ( rep_index.app='samppanel' AND 
						             rep_index.type='' AND 
						             rep_index.type_id=c. AND 
						             rep_index.member_id=25 ) 
 LEFT JOIN reputation_cache rep_cache ON ( rep_cache.app='samppanel' AND rep_cache.type='' AND rep_cache.type_id=c. )   WHERE c.= AND c.=1 ORDER BY c. asc LIMIT 0,10
 .--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
 | File                                                                       | Function                                                                      | Line No.          |
 |----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------|
 | admin/sources/classes/comments/bootstrap.php                               | [classes_comments_renderer].fetch                                             | 214               |
 '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
 | admin/applications_addon/other/samppanel/modules_public/help/view.php      | [classes_comments_renderer].fetchFormatted                                    | 41                |
 '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
 | admin/sources/base/ipsController.php                                       | [public_samppanel_help_view].doExecute                                        | 306               |
 '----------------------------------------------------------------------------+-------------------------------------------------------------------------------+-------------------'
 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Pozdrawiam!

  • Manager
Opublikowano

Zmienna $_parentRemap - każda aplikacja ma różne klucze w bazie danych. Ta zmienna służy do tego, by komentarze były dodawane poprawnie, dla przykładu z galerii:

private $_parentRemap = array(
         'parent_id'   => 'image_id',
         'parent_owner_id' => 'image_member_id',
         'parent_parent_id' => 'image_album_id',
         'parent_title'  => 'image_caption',
         'parent_seo_title' => 'image_caption_seo',
         'parent_date'  => 'image_date'
         );

Lub raporty:

protected $_parentRemap = array( 'parent_id'   => 'id',
          'parent_owner_id' => 'updated_by',
          'parent_parent_id' => 'uid',
          'parent_title'  => 'title',
          'parent_seo_title' => 'seoname',
          'parent_date'  => 'date_created' );

Jak widzisz wszystko sprowadza się do tego, co napisałem wyżej.

 

Błąd masz, bo nie ma zmiennej opisującej ID użytkownika:

LEFT JOIN members m ON ( m.member_id=c.
  • Lubię to 1

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

Czyli myślę dobrze, mają to być dane z tabeli, która zawiera dane o ticket'ach? Bo Twoja odpowiedź nie była do końca jasna.
 
Pytanie jak podać ta zmienna membera? Patrząc na przykłady z raportów nie zauważyłem prawie różnic.
 
Kod mojej aplikacji:

<?php

if ( ! defined( 'IN_IPB' ) ) {
	print "<h1>Niepoprawny dostep</h1>Nie mozesz uzywac tego pliku. Jezeli ostatnio robiles upgrade'a to upewnij sie ze wgrales wszystkie pliki.";
	exit();
}

class comments_samppanel_tickets extends classes_comments_renderer {

	private $_remap = array( 'comment_id'			=> 'app_comment_id',
							 'comment_author_id'	=> 'app_comment_author_id',
							 'comment_author_name'  => 'app_comment_author_name',
							 'comment_text'			=> 'app_comment_text',
							 'comment_ip_address'   => 'app_comment_ip_address',
							 'comment_edit_date'	=> 'app_comment_edit_date',
							 'comment_date'			=> 'app_comment_date',
							 'comment_approved'		=> 'app_comment_approved',
							 'comment_parent_id'	=> 'app_comment_parent_id'
	);

	private $_parentRemap = array( 'parent_id'			=> 'id',
							 	   'parent_owner_id'	=> 'member_id',
								   'parent_parent_id'   => 'ticket_id',
								   'parent_title'		=> 'caption',
								   'parent_seo_title'   => 'caption_seo',
								   'parent_date'		=> 'ticket_date' ); // idate

	/**
	 * Who am I?
	 *
	 * @return	string
	 */
	public function whoAmI ( ) {
		return 'samppanel-tickets';
	}

	public function seoTemplate ( ) {
		return 'view';
	}

	public function table ( ) {
		return 'comments_tickets';
	}

	/**
	 * Fetch parent
	 *
	 * @return	array
	 */
	public function fetchParent ( $id ) {
		$test = $this->DB->buildAndFetch ( array (
				'select'	=> '*',
				'from'		=> 'comments_tickets_index',
				'where'		=> "uid = 1"
		) );
		return $test;
		//return $this->registry->gallery->helper('image')->fetchImage( $id );
	}

	/**
	 * Fetch settings
	 *
	 * @return	array
	 */
	public function settings ( ) {
		// "app=blog&blogid=#{parent_parent_id}&showentry=%s&",
		//return array( 'urls-showParent' => "app=samppanel&image=%s",
		//			  'urls-report'		=> "app=samppanel&module=post&section=mod&do=reportcomment&comment=%s" );
		return array( 'urls-showParent' => "app=samppanel&module=help&section=view&uid=%s",
					  'urls-report'		=> '' );
	}

	public function count( $parent ) {

	}

	public function can( $type, array $array ) {

	}

	/**
	 * Returns remap keys (generic => local)
	 *
	 * @return	array
	 */
	public function remapKeys( $type='comment' ) {
		return ( $type == 'comment' ) ? $this->_remap : $this->_parentRemap;
	}

	/**
	 * Enable reputation?
	 *
	 * @return	string
	 */
	public function reputationEnabled() {
		return false;
	}

}

Wykonanie:

		$test = $this->DB->buildAndFetch ( array (
				'select'	=> '*',
				'from'		=> 'comments_tickets_index',
				'where'		=> "uid = 1"
		) );

		/* Init some data */
		require_once( IPS_ROOT_PATH . 'sources/classes/comments/bootstrap.php' );
		$this->_comments = classes_comments_bootstrap::controller( 'samppanel-tickets' );

		$this->data['comments'] = $this->_comments->fetchFormatted( $test, array( 'offset' => intval( $this->request['st'] ) ) );

Pozdrawiam!

Edytowane przez KoPcIu
  • Rozwiązanie
Opublikowano

Niestety nie ma możliwości edycji, dlatego nowy post.

 

Jak się okazało problem był banalnie prosty... A przez moją głupotę straciłem cały dzień.

 

Jak się okazało pole w bazie to nie UID, a ID i tutaj mamy błąd.

 

ROZWIĄZANY

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ę.