Skocz do zawartości
  • Zarejestruj się

Blog IPSBeyond.pl

  • wpisy
    79
  • komentarzy
    40
  • wyświetleń
    129855

Model komentarzy - jak dodać komentarze do aplikacji

Praktycznie każda aplikacja, którą piszemy, będziemy pisać w przyszłości będzie potrzebować systemu komentarzy. Nie ważne czy jest to aplikacja typu moje trasy, blog, platforma z ogłoszeniami. Zawsze dążymy do tego by użytkownik wchodził w jakąś interakcję z dodaną treścią. Najłatwiej jest to osiągnąć właśnie przez system komentarzy.

Co musimy zrobić?

Aby uruchomić system komentarzy w naszej aplikacji musimy wykonać 3 kroki:

  1. Dodać odpowiedni kod do klasy elementu, który będzie przetrzymywał komentarze
  2. Stworzyć odpowiednią strukturę tabeli
  3. Stworzyć model klasy komentarzy

Ale zacznijmy od początku.

Zmiana w pliku

Opiszę tutaj to na przykładzie jednej z moich aplikacji. Aplikacja znajduje się w przestrzeni nazw IPS\livestreams a elementem (modelem), który będzie przetrzymywać komentarze jest Stream. Zatem Otwieramy plik: /applications/livestreams/sources/Stream/Stream.php i wklejamy w nim wewnątrz klasy:

	/**
	 * @brief	Comment Class
	 */
	public static $commentClass = 'IPS\livestreams\Stream\Comment';

Struktura bazy danych

Tutaj musimy stworzyć dość prostą tabelę a mianowicie:

CREATE TABLE `ibf_livestreams_streams_comments` (
	`comment_id` INT(10) NOT NULL AUTO_INCREMENT,
	`comment_stream_id` INT(10) NOT NULL DEFAULT '0',
	`comment_member_id` MEDIUMINT(8) NOT NULL DEFAULT '0',
	`comment_author` VARCHAR(255) NULL DEFAULT NULL,
	`comment_ip_address` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
	`comment_date` INT(10) NULL DEFAULT NULL,
	`comment_append_edit` TINYINT(1) NULL DEFAULT '0',
	`comment_approved` TINYINT(1) NOT NULL DEFAULT '0',
	`comment_text` MEDIUMTEXT NULL COLLATE 'utf8mb4_unicode_ci',
	`comment_edit_time` INT(10) NOT NULL DEFAULT '0',
	`comment_edit_name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
	PRIMARY KEY (`comment_id`),
	INDEX `comment_parent_id` (`comment_stream_id`),
	INDEX `comment_author_id` (`comment_member_id`)
);

Idąc od początku:

  • comment_id - Id komentarza w bazie
  • comment_stream_id - Id elementu, którego komentarz ma dotyczyć
  • comment_member_id - Id autora komentarza
  • comment_author - Nazwa autora
  • comment_ip_address - Adres IP użytkownika
  • comment_date - Data dodania wpisu
  • comment_approved - Czy komentarz jest zatwierdzony
  • comment_text - Treść komentarza
  • comment_edit_time - Czas, kiedy komentarz był edytowany

Model klasy komentarzy

Plik musi nosić nazwę Comment.php i znajdować się w katalogu /applications/livestreams/sources/Stream/. A jego kod wygląda następująco:

<?php
/**
 * SolutionrDEVs Application
 * (SD) Live Streams
 *
 * @brief       Comment model
 * @author      Dawid Baruch <dawid.baruch@solutiondevs.pl> <a href='http://www.solutiondevs.pl'>SolutionDEVs</a>
 * @copyright   (c) 2005 - 2016 SolutionDEVs
 * @package     SolutionDEVs Apps
 * @subpackage  (SD) Live Streams
 * @link        http://www.solutiondevs.pl
 * @link        http://www.ipsbeyond.pl
 * @since       25 Aug 2016
 * @version     2.0.0
 */

namespace IPS\livestreams\Stream;

/* To prevent PHP errors (extending class does not exist) revealing path */
if( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][ 'SERVER_PROTOCOL' ] ) ? $_SERVER[ 'SERVER_PROTOCOL' ] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * Stream Comment Model
 */
class _Comment extends \IPS\Content\Comment implements \IPS\Content\EditHistory, \IPS\Content\ReportCenter, \IPS\Content\Hideable, \IPS\Content\Reputation, \IPS\Content\Searchable, \IPS\Content\Embeddable
{
	/**
	 * @brief	[ActiveRecord] Multiton Store
	 */
	protected static $multitons;
	
	/**
	 * @brief	[Content\Comment]	Item Class
	 */
	public static $itemClass = 'IPS\livestreams\Stream';
	
	/**
	 * @brief	[ActiveRecord] Database Table
	 */
	public static $databaseTable = 'livestreams_streams_comments';
	
	/**
	 * @brief	[ActiveRecord] Database Prefix
	 */
	public static $databasePrefix = 'comment_';
	
	/**
	 * @brief	Database Column Map
	 */
	public static $databaseColumnMap = array(
		'item'				=> 'stream_id',
		'author'			=> 'member_id',
		'author_name'		=> 'author',
		'content'			=> 'text',
		'date'				=> 'date',
		'ip_address'		=> 'ip_address',
		'edit_time'			=> 'edit_time',
		'edit_member_name'	=> 'edit_name',
		'edit_show'			=> 'append_edit',
		'approved'			=> 'approved'
	);
	
	/**
	 * @brief	Application
	 */
	public static $application = 'livestreams';
	
	/**
	 * @brief	Title
	 */
	public static $title = 'livestreams_streams_comment';
	
	/**
	 * @brief	Icon
	 */
	public static $icon = 'video-camera';
	
	/**
	 * @brief	Reputation Type
	 */
	public static $reputationType = 'comment_id';
	
	/**
	 * @brief	[Content]	Key for hide reasons
	 */
	public static $hideLogKey = 'livestreams-scomment';
	
	/**
	 * Get URL for doing stuff
	 *
	 * @param	string|NULL		$action		Action
	 * @return	\IPS\Http\Url
	 */
	public function url( $action=NULL )
	{
		return parent::url( $action )->setQueryString( 'tab', 'comments' );
	}
}

I ogólnie to tyle, aby dodać komentarze do naszej aplikacji



0 komentarzy


Rekomendowane komentarze

Brak komentarzy do wyświetlenia.

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.