201 lines
4.6 KiB
PHP
201 lines
4.6 KiB
PHP
<?php
|
|
/**
|
|
* @brief Archived Post Model
|
|
* @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
|
|
* @copyright (c) Invision Power Services, Inc.
|
|
* @license https://www.invisioncommunity.com/legal/standards/
|
|
* @package Invision Community
|
|
* @subpackage Forums
|
|
* @since 24 Jan 2014
|
|
*/
|
|
|
|
namespace IPS\forums\Topic;
|
|
|
|
/* To prevent PHP errors (extending class does not exist) revealing path */
|
|
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
|
{
|
|
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* Post Model
|
|
*/
|
|
class _ArchivedPost extends Post
|
|
{
|
|
/**
|
|
* @brief [ActiveRecord] Multiton Store
|
|
*/
|
|
protected static $multitons;
|
|
|
|
/**
|
|
* @brief Title
|
|
*/
|
|
public static $archiveTitle = 'archivedpost';
|
|
|
|
/**
|
|
* @brief [ActiveRecord] Database Connection
|
|
* @return \IPS\Db
|
|
*/
|
|
public static function db()
|
|
{
|
|
/* Connect to the remote DB if needed */
|
|
if ( \IPS\CIC2 )
|
|
{
|
|
return \IPS\Cicloud\getForumArchiveDb();
|
|
}
|
|
else
|
|
{
|
|
return ( !\IPS\Settings::i()->archive_remote_sql_host ) ? \IPS\Db::i() : \IPS\Db::i( 'archive', array(
|
|
'sql_host' => \IPS\Settings::i()->archive_remote_sql_host,
|
|
'sql_user' => \IPS\Settings::i()->archive_remote_sql_user,
|
|
'sql_pass' => \IPS\Settings::i()->archive_remote_sql_pass,
|
|
'sql_database' => \IPS\Settings::i()->archive_remote_sql_database,
|
|
'sql_port' => \IPS\Settings::i()->archive_sql_port,
|
|
'sql_socket' => \IPS\Settings::i()->archive_sql_socket,
|
|
'sql_tbl_prefix'=> \IPS\Settings::i()->archive_sql_tbl_prefix,
|
|
'sql_utf8mb4' => isset( \IPS\Settings::i()->sql_utf8mb4 ) ? \IPS\Settings::i()->sql_utf8mb4 : FALSE
|
|
) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief [ActiveRecord] Database Table
|
|
*/
|
|
public static $databaseTable = 'forums_archive_posts';
|
|
|
|
/**
|
|
* @brief Database Prefix
|
|
*/
|
|
public static $databasePrefix = 'archive_';
|
|
|
|
/**
|
|
* @brief Database Column Map
|
|
*/
|
|
public static $databaseColumnMap = array(
|
|
'item' => 'topic_id',
|
|
'author' => 'author_id',
|
|
'author_name' => 'author_name',
|
|
'content' => 'content',
|
|
'date' => 'content_date',
|
|
'ip_address' => 'ip_address',
|
|
'edit_time' => 'edit_time',
|
|
'edit_show' => 'append_edit',
|
|
'edit_member_name' => 'edit_name',
|
|
'edit_reason' => 'post_edit_reason',
|
|
'hidden' => 'queued',
|
|
'first' => 'is_first'
|
|
);
|
|
|
|
/**
|
|
* @brief Bitwise values for post_bwoptions field
|
|
*/
|
|
public static $bitOptions = array(
|
|
'bwoptions' => array(
|
|
'bwoptions' => array(
|
|
'best_answer' => 1
|
|
)
|
|
)
|
|
);
|
|
|
|
/**
|
|
* @brief Database Column ID
|
|
*/
|
|
public static $databaseColumnId = 'id';
|
|
|
|
/**
|
|
* Post count for member
|
|
*
|
|
* @param \IPS\Member $member The memner
|
|
* @return int
|
|
*/
|
|
public static function memberPostCount( \IPS\Member $member )
|
|
{
|
|
return static::db()->select( 'COUNT(*)', 'forums_archive_posts', array(
|
|
array( 'archive_author_id=?', $member->member_id ),
|
|
array( \IPS\Db::i()->in( 'archive_forum_id', iterator_to_array( \IPS\Db::i()->select( 'id', 'forums_forums', 'inc_postcount=0' ) ), TRUE ) )
|
|
) )->first();
|
|
}
|
|
|
|
/**
|
|
* Joins (when loading comments)
|
|
*
|
|
* @param \IPS\Content\Item $item The item
|
|
* @return array
|
|
*/
|
|
public static function joins( \IPS\Content\Item $item )
|
|
{
|
|
$return = parent::joins( $item );
|
|
|
|
unset( $return['author'] );
|
|
unset( $return['author_pfields'] );
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Can edit?
|
|
*
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
* @return bool
|
|
*/
|
|
public function canEdit( $member=NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Can hide?
|
|
*
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
* @return bool
|
|
*/
|
|
public function canHide( $member=NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Can unhide?
|
|
*
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
*/
|
|
public function canUnhide( $member=NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Can delete?
|
|
*
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
* @return bool
|
|
*/
|
|
public function canDelete( $member=NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Can split?
|
|
*
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
* @return bool
|
|
*/
|
|
public function canSplit( $member=NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Can react?
|
|
*
|
|
* @note This method is also ran to check if a member can "unrep"
|
|
* @param \IPS\Member|NULL $member The member to check for (NULL for currently logged in member)
|
|
* @return bool
|
|
*/
|
|
public function canReact( \IPS\Member $member = NULL )
|
|
{
|
|
return FALSE;
|
|
}
|
|
} |