====== ApiController ======
**Layer:** ''Controller'' · **Source:** ''lib/controller/ApiController.php:26'' (lines 26–444)
----
class ApiController
API Base Controller
Base controller for all API controllers
Provides common functionality for request handling, validation, and authentication
======= Docblock Metadata =======
^ Tag ^ Value ^
| ''@category'' | Controller Class |
| ''@author'' | Blogware Team |
| ''@license'' | MIT |
| ''@version'' | 1.0 |
| ''@since'' | Since Release 1.0 |
======= Inheritance =======
//No parent, interface or trait. This is a root type.//
======= Constants (0) =======
//None.//
======= Properties (5) =======
^ Visibility ^ Type ^ Name ^ Default ^ Line ^
| ''protected'' | ''(untyped)'' | ''$requestData'' | ''[]'' | 31 |
| ''protected'' | ''(untyped)'' | ''$queryParams'' | ''[]'' | 36 |
| ''protected'' | ''(untyped)'' | ''$method'' | '''GET''' | 41 |
| ''protected'' | ''(untyped)'' | ''$headers'' | ''[]'' | 48 |
| ''protected'' | ''(untyped)'' | ''$requiresAuth'' | ''true'' | 53 |
======= Methods (16) =======
^ Visibility ^ Method ^ Summary ^ Line ^
| public | ''__construct()'' | Constructor | 58 |
| protected | ''getHeaders()'' | Get request headers | 84 |
| protected | ''getRequestData()'' | Get request data based on HTTP method | 103 |
| protected | ''validateContentType()'' | Validate Content-Type for write requests | 152 |
| protected | ''getJsonBody()'' | Get JSON body from request | 187 |
| protected | ''authenticate()'' | Authenticate the request | 208 |
| protected | ''isAuthenticated()'' | Check if user is authenticated | 231 |
| protected | ''getUser()'' | Get authenticated user | 243 |
| protected | ''hasPermission()'' | Check if user has permission | 254 |
| protected | ''validateRequired()'' | Validate required fields | 266 |
| protected | ''validateEmail()'' | Validate email format | 288 |
| protected | ''getAppUrl()'' | Get application URL from config | 298 |
| protected | ''sanitize()'' | Sanitize string input | 309 |
| protected | ''getPagination()'' | Get pagination parameters | 324 |
| protected | ''getSorting()'' | Get sorting parameters | 344 |
| public | ''info()'' | API info endpoint | 370 |
======== __construct() ========
public function __construct()
//lines 58–77 (20)//
Constructor
//Takes no parameters.//
======== getHeaders() ========
protected function getHeaders()
//lines 84–96 (13)//
Get request headers
//Takes no parameters.//
**Returns:** ''(none declared)'' — array
======== getRequestData() ========
protected function getRequestData()
//lines 103–138 (36)//
Get request data based on HTTP method
//Takes no parameters.//
**Returns:** ''(none declared)'' — array
======== validateContentType() ========
protected function validateContentType()
//lines 152–180 (29)//
Validate Content-Type for write requests
Enforces application/json Content-Type for POST, PUT, PATCH, DELETE
when a Content-Type header is present and is not a supported form type.
Sends 415 Unsupported Media Type response on mismatch.
Override in child controllers (e.g., MediaApiController for uploads)
to permit multipart/form-data.
//Takes no parameters.//
**Returns:** ''(none declared)'' — void
======== getJsonBody() ========
protected function getJsonBody()
//lines 187–201 (15)//
Get JSON body from request
//Takes no parameters.//
**Returns:** ''(none declared)'' — array|null
======== authenticate() ========
protected function authenticate()
//lines 208–224 (17)//
Authenticate the request
//Takes no parameters.//
**Returns:** ''(none declared)'' — void
======== isAuthenticated() ========
protected function isAuthenticated()
//lines 231–234 (4)//
Check if user is authenticated
//Takes no parameters.//
**Returns:** ''(none declared)'' — bool
======== getUser() ========
protected function getUser()
//lines 243–246 (4)//
Get authenticated user
//Takes no parameters.//
**Returns:** ''(none declared)'' — array|null
======== hasPermission() ========
protected function hasPermission($requiredLevels)
//lines 254–257 (4)//
Check if user has permission
^ Parameter ^ Type ^ Default ^ Description ^
| ''$requiredLevels'' | ''(untyped)'' | //required// | //none// |
**Returns:** ''(none declared)'' — bool
======== validateRequired() ========
protected function validateRequired($data, $required)
//lines 266–280 (15)//
Validate required fields
^ Parameter ^ Type ^ Default ^ Description ^
| ''$data'' | ''(untyped)'' | //required// | Data to validate |
| ''$required'' | ''(untyped)'' | //required// | Required fields |
**Returns:** ''(none declared)'' — array|null Validation errors or null if valid
======== validateEmail() ========
protected function validateEmail($email)
//lines 288–291 (4)//
Validate email format
^ Parameter ^ Type ^ Default ^ Description ^
| ''$email'' | ''(untyped)'' | //required// | //none// |
**Returns:** ''(none declared)'' — bool
======== getAppUrl() ========
protected function getAppUrl()
//lines 298–301 (4)//
Get application URL from config
//Takes no parameters.//
**Returns:** ''(none declared)'' — string
======== sanitize() ========
protected function sanitize($value)
//lines 309–316 (8)//
Sanitize string input
^ Parameter ^ Type ^ Default ^ Description ^
| ''$value'' | ''(untyped)'' | //required// | //none// |
**Returns:** ''(none declared)'' — array|string
======== getPagination() ========
protected function getPagination($params)
//lines 324–335 (12)//
Get pagination parameters
^ Parameter ^ Type ^ Default ^ Description ^
| ''$params'' | ''(untyped)'' | //required// | Query parameters |
**Returns:** ''(none declared)'' — array
======== getSorting() ========
protected function getSorting($params, $allowedFields = [])
//lines 344–361 (18)//
Get sorting parameters
^ Parameter ^ Type ^ Default ^ Description ^
| ''$params'' | ''(untyped)'' | //required// | Query parameters |
| ''$allowedFields'' | ''(untyped)'' | ''[]'' | Allowed sort fields |
**Returns:** ''(none declared)'' — array
======== info() ========
public function info()
//lines 370–443 (74)//
API info endpoint
//Takes no parameters.//
**Returns:** ''(none declared)'' — void
======= Imports =======
^ Alias ^ Fully-qualified name ^
| ''ApiAuth'' | [[scriptlog:lib:core:apiauth|''Scriptlog\Core\ApiAuth'']] |
| ''ApiHelper'' | [[scriptlog:lib:core:apihelper|''Scriptlog\Core\ApiHelper'']] |
| ''ApiHateoas'' | [[scriptlog:lib:core:apihateoas|''Scriptlog\Core\ApiHateoas'']] |
| ''ApiResponse'' | [[scriptlog:lib:core:apiresponse|''Scriptlog\Core\ApiResponse'']] |
----
//This page is generated from source by 'tools/gendoc'. Edits will be overwritten.//