Version 5.0.0 beta 1

This commit is contained in:
Neo committed 2025-12-19 16:27:35 -08:00
1 parent 25ddeb65d6
commit 15c7beabc5
6736 files changed
+627902 -497943

No files matched your search

+40 -25
View File
@@ -12,59 +12,76 @@
namespace IPS\blog\Entry;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
use IPS\blog\Blog;
use IPS\Db;
use IPS\Http\Url;
use IPS\Member;
use IPS\Node\Model;
use IPS\Theme;
use function defined;
use function get_class;
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
header( ( $_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
}
/**
* Blog Category
*/
class _Category extends \IPS\Node\Model
class Category extends Model
{
/**
* @brief [ActiveRecord] Multiton Store
*/
protected static $multitons;
protected static array $multitons;
/**
* @brief [ActiveRecord] Database Table
*/
public static $databaseTable = 'blog_entry_categories';
public static ?string $databaseTable = 'blog_entry_categories';
/**
* @brief [ActiveRecord] Database Prefix
*/
public static $databasePrefix = 'entry_category_';
public static string $databasePrefix = 'entry_category_';
/**
* @brief [Node] Order Database Column
*/
public static $databaseColumnOrder = 'position';
public static ?string $databaseColumnOrder = 'position';
/**
* @brief [Node] Node Title
*/
public static $nodeTitle = 'blog_entry_categories';
public static string $nodeTitle = 'blog_entry_categories';
/**
* @brief Cached URL
*/
protected $_url = NULL;
protected mixed $_url = NULL;
/**
* Determines if this class can be extended via UI Extension
*
* @var bool
*/
public static bool $canBeExtended = true;
/**
* Get URL
*
* @return \IPS\Http\Url
* @return Url|string|null
*/
public function url()
public function url(): Url|string|null
{
$blog = \IPS\blog\Blog::load( $this->blog_id );
$blog = Blog::load( $this->blog_id );
if( $this->_url === NULL )
{
$this->_url = \IPS\Http\Url::internal( "app=blog&module=blogs&controller=view&id={$blog->id}&cat={$this->id}", 'front', 'blogs_blog_cat', array( $blog->seo_name, $this->seo_name ) );
$this->_url = Url::internal( "app=blog&module=blogs&controller=view&id={$blog->id}&cat={$this->id}", 'front', 'blogs_blog_cat', array( $blog->seo_name, $this->seo_name ) );
}
return $this->_url;
@@ -75,15 +92,15 @@ class _Category extends \IPS\Node\Model
*
* @return string
*/
public function link()
public function link(): string
{
return \IPS\Theme::i()->getTemplate( 'global' )->categoryLink( $this );
return Theme::i()->getTemplate( 'global' )->categoryLink( $this );
}
/**
* Get output for API
*
* @param \IPS\Member|NULL $authorizedMember The member making the API request or NULL for API Key / client_credentials
* @param Member|NULL $authorizedMember The member making the API request or NULL for API Key / client_credentials
* @return array
* @apiresponse int id ID number
* @apiresponse string name Name
@@ -91,31 +108,29 @@ class _Category extends \IPS\Node\Model
* @apiresponse string class Node class
* @apiresponse int position Node order
*/
public function apiOutput( \IPS\Member $authorizedMember = NULL )
public function apiOutput( Member $authorizedMember = NULL ): array
{
$return = array(
return array(
'id' => $this->id,
'name' => $this->name,
'url' => (string) $this->url(),
'class' => \get_class( $this ),
'class' => get_class( $this ),
'position' => $this->position
);
return $return;
}
/**
* [ActiveRecord] Save Changed Columns
*
* @return void
* @return void
*/
public function save()
public function save(): void
{
if( !$this->id )
{
$this->position = \IPS\Db::i()->select( 'MAX(entry_category_position)', 'blog_entry_categories', array( 'entry_category_blog_id=?', $this->blog_id ))->first() + 1;
$this->position = Db::i()->select( 'MAX(entry_category_position)', 'blog_entry_categories', array( 'entry_category_blog_id=?', $this->blog_id ))->first() + 1;
}
return parent::save();
parent::save();
}
}