WordFamilyApiHandler
in package
implements
ApiRoutableInterface
uses
ApiRoutableTrait
Handler for word family/lemma-related API operations.
Provides endpoints for:
- Getting word families by term or lemma
- Listing word families for a language
- Updating status for entire word families
- Getting lemma statistics
Tags
Table of Contents
Interfaces
- ApiRoutableInterface
- Interface for API handlers that participate in route dispatch.
Properties
- $lemmaService : LemmaService|null
Methods
- __construct() : mixed
- Constructor.
- applyFamilyUpdate() : array{success: bool, count: int}
- Apply suggested family update (bulk status change).
- getFamilyUpdateSuggestion() : array{suggestion: string, affected_count: int, term_ids: int[]}
- Get suggestion for updating related word family members after status change.
- getLemmaStatistics() : array<string|int, mixed>
- Get lemma statistics for a language.
- getTermFamily() : array<string|int, mixed>
- Get word family for a term.
- getWordFamilyByLemma() : array<string|int, mixed>
- Get word family by lemma.
- getWordFamilyList() : array{families: array, pagination: array}
- Get paginated list of word families for a language.
- getWordFamilyListFromParams() : array{families: array, pagination: array}
- Get paginated list of word families from query parameters.
- routeDelete() : JsonResponse
- routeGet() : JsonResponse
- Handle a GET request for word families.
- routePost() : JsonResponse
- routePut() : JsonResponse
- updateWordFamilyStatus() : array{success: bool, count?: int, error?: string}
- Update status for all words in a word family.
- frag() : string
- Extract a fragment from the fragments array.
- getLemmaService() : LemmaService
- Get the LemmaService instance.
Properties
$lemmaService
private
LemmaService|null
$lemmaService
= null
Methods
__construct()
Constructor.
public
__construct([LemmaService|null $lemmaService = null ]) : mixed
Parameters
- $lemmaService : LemmaService|null = null
-
Lemma service instance
applyFamilyUpdate()
Apply suggested family update (bulk status change).
public
applyFamilyUpdate(array<string|int, int> $termIds, int $status) : array{success: bool, count: int}
Parameters
- $termIds : array<string|int, int>
-
Term IDs to update
- $status : int
-
New status
Return values
array{success: bool, count: int}getFamilyUpdateSuggestion()
Get suggestion for updating related word family members after status change.
public
getFamilyUpdateSuggestion(int $termId, int $newStatus) : array{suggestion: string, affected_count: int, term_ids: int[]}
Parameters
- $termId : int
-
Term that was updated
- $newStatus : int
-
New status that was set
Return values
array{suggestion: string, affected_count: int, term_ids: int[]}getLemmaStatistics()
Get lemma statistics for a language.
public
getLemmaStatistics(int $langId) : array<string|int, mixed>
Parameters
- $langId : int
-
Language ID
Return values
array<string|int, mixed> —Statistics data
getTermFamily()
Get word family for a term.
public
getTermFamily(int $termId) : array<string|int, mixed>
Returns all words sharing the same lemma with statistics.
Parameters
- $termId : int
-
Term ID
Return values
array<string|int, mixed> —Word family data or error
getWordFamilyByLemma()
Get word family by lemma.
public
getWordFamilyByLemma(int $langId, string $lemmaLc) : array<string|int, mixed>
Parameters
- $langId : int
-
Language ID
- $lemmaLc : string
-
Lowercase lemma
Return values
array<string|int, mixed> —Word family data or error
getWordFamilyList()
Get paginated list of word families for a language.
public
getWordFamilyList(int $langId[, int $page = 1 ][, int $perPage = 50 ][, string $sortBy = 'lemma' ][, string $sortDir = 'asc' ]) : array{families: array, pagination: array}
Parameters
- $langId : int
-
Language ID
- $page : int = 1
-
Page number
- $perPage : int = 50
-
Items per page
- $sortBy : string = 'lemma'
-
Sort field
- $sortDir : string = 'asc'
-
Sort direction
Return values
array{families: array, pagination: array}getWordFamilyListFromParams()
Get paginated list of word families from query parameters.
public
getWordFamilyListFromParams(int $langId[, array<string|int, mixed> $params = [] ]) : array{families: array, pagination: array}
Parameters
- $langId : int
-
Language ID
- $params : array<string|int, mixed> = []
-
Query parameters (page, per_page, sort_by, sort_dir)
Return values
array{families: array, pagination: array}routeDelete()
public
routeDelete(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
- $params : array<string|int, mixed>
Return values
JsonResponserouteGet()
Handle a GET request for word families.
public
routeGet(array<int, string> $fragments, array<string, mixed> $params) : JsonResponse
Routes:
- GET /word-families/stats?language_id=N -> lemma statistics
- GET /word-families?language_id=N&lemma_lc=X -> family by lemma
- GET /word-families?language_id=N -> paginated list
Parameters
- $fragments : array<int, string>
-
URL path segments
- $params : array<string, mixed>
-
Query parameters
Return values
JsonResponseroutePost()
public
routePost(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
- $params : array<string|int, mixed>
Return values
JsonResponseroutePut()
public
routePut(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
- $params : array<string|int, mixed>
Return values
JsonResponseupdateWordFamilyStatus()
Update status for all words in a word family.
public
updateWordFamilyStatus(int $langId, string $lemmaLc, int $status) : array{success: bool, count?: int, error?: string}
Parameters
- $langId : int
-
Language ID
- $lemmaLc : string
-
Lowercase lemma
- $status : int
-
New status
Return values
array{success: bool, count?: int, error?: string}frag()
Extract a fragment from the fragments array.
protected
frag(array<int, string> $fragments, int $index) : string
Parameters
- $fragments : array<int, string>
-
The URL path fragments
- $index : int
-
The index to extract
Return values
string —The fragment at the index, or empty string if not present
getLemmaService()
Get the LemmaService instance.
private
getLemmaService() : LemmaService