TextApiHandler
in package
implements
ApiRoutableInterface
uses
ApiRoutableTrait
Handler for text-related API operations.
Delegates to TextPositionApiHandler, TextAnnotationApiHandler, and TextTermApiHandler for actual logic.
Table of Contents
Interfaces
- ApiRoutableInterface
- Interface for API handlers that participate in route dispatch.
Properties
- $annotationHandler : TextAnnotationApiHandler
- $positionHandler : TextPositionApiHandler
- $termHandler : TextTermApiHandler
Methods
- __construct() : mixed
- editTermForm() : string
- formatArchivedTextsByLanguage() : array<string|int, mixed>
- formatEditTermForm() : array<string|int, mixed>
- formatGetAnnotation() : array<string|int, mixed>
- formatGetPrintItems() : array<string|int, mixed>
- formatGetRecommendedTexts() : array<string|int, mixed>
- formatGetTextScore() : array<string|int, mixed>
- formatGetTextScores() : array<string|int, mixed>
- formatGetWords() : array<string|int, mixed>
- formatMarkAllIgnored() : array<string|int, mixed>
- formatMarkAllWellKnown() : array<string|int, mixed>
- formatSetAnnotation() : array<string|int, mixed>
- formatSetAudioPosition() : array<string|int, mixed>
- formatSetDisplayMode() : array<string|int, mixed>
- formatSetTextPosition() : array<string|int, mixed>
- formatTermTranslations() : array<string|int, mixed>
- formatTextsByLanguage() : array<string|int, mixed>
- getAnnotation() : array<string|int, mixed>
- getPrintItems() : array<string|int, mixed>
- getTermTranslations() : array<string|int, mixed>
- getTranslations() : array<string|int, mixed>
- getWords() : array<string|int, mixed>
- makeTrans() : string
- markAllIgnored() : array<string|int, mixed>
- markAllWellKnown() : array<string|int, mixed>
- routeDelete() : JsonResponse
- routeGet() : JsonResponse
- Handle a GET request for this resource.
- routePost() : JsonResponse
- Handle a POST request for this resource.
- routePut() : JsonResponse
- Handle a PUT request for this resource.
- saveAudioPosition() : void
- saveImprText() : array<string|int, mixed>
- saveImprTextData() : array<string|int, mixed>
- saveTextPosition() : void
- setDisplayMode() : array<string|int, mixed>
- frag() : string
- Extract a fragment from the fragments array.
- formatGetAudio() : JsonResponse
- Handle GET /texts/{id}/audio — the reading screen's media-player config.
- formatGetBookContext() : JsonResponse
- Handle GET /texts/{id}/book-context — the reading screen's chapter nav.
- handleBulkAction() : JsonResponse
- Handle PUT /texts/bulk-action — archive or delete multiple texts.
- handleExtractEpubUrl() : JsonResponse
- Handle Global Digital Library ePUB import requests.
- handleGdlSearch() : JsonResponse
- Handle Global Digital Library search/browse requests.
- handleGutenbergSuggestions() : JsonResponse
- Handle Gutenberg suggestion requests (popular books by language).
- handleLibraryPreview() : JsonResponse
- Handle library preview requests (accurate vocabulary coverage).
- handleLibrarySearch() : JsonResponse
- Handle library search requests.
- handleReaderLevel() : JsonResponse
- Handle reader-level requests (vocabulary size + beginner flag).
- resolveLanguageCode() : string|null
- Resolve a language ID to an ISO 639-1 code for Gutenberg.
Properties
$annotationHandler
private
TextAnnotationApiHandler
$annotationHandler
$positionHandler
private
TextPositionApiHandler
$positionHandler
$termHandler
private
TextTermApiHandler
$termHandler
Methods
__construct()
public
__construct([WordDiscoveryService|null $discoveryService = null ]) : mixed
Parameters
- $discoveryService : WordDiscoveryService|null = null
editTermForm()
public
editTermForm(int $textid) : string
Parameters
- $textid : int
Return values
stringformatArchivedTextsByLanguage()
public
formatArchivedTextsByLanguage(int $langId, array<string|int, mixed> $params) : array<string|int, mixed>
Parameters
- $langId : int
- $params : array<string|int, mixed>
Return values
array<string|int, mixed>formatEditTermForm()
public
formatEditTermForm(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatGetAnnotation()
public
formatGetAnnotation(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatGetPrintItems()
public
formatGetPrintItems(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatGetRecommendedTexts()
public
formatGetRecommendedTexts(int $languageId, array<string|int, mixed> $params) : array<string|int, mixed>
Parameters
- $languageId : int
- $params : array<string|int, mixed>
Return values
array<string|int, mixed>formatGetTextScore()
public
formatGetTextScore(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatGetTextScores()
public
formatGetTextScores(array<string|int, mixed> $textIds) : array<string|int, mixed>
Parameters
- $textIds : array<string|int, mixed>
Return values
array<string|int, mixed>formatGetWords()
public
formatGetWords(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatMarkAllIgnored()
public
formatMarkAllIgnored(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatMarkAllWellKnown()
public
formatMarkAllWellKnown(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>formatSetAnnotation()
public
formatSetAnnotation(int $textId, string $elem, string $data) : array<string|int, mixed>
Parameters
- $textId : int
- $elem : string
- $data : string
Return values
array<string|int, mixed>formatSetAudioPosition()
public
formatSetAudioPosition(int $textId, float $position) : array<string|int, mixed>
Parameters
- $textId : int
- $position : float
Return values
array<string|int, mixed>formatSetDisplayMode()
public
formatSetDisplayMode(int $textId, array<string|int, mixed> $params) : array<string|int, mixed>
Parameters
- $textId : int
- $params : array<string|int, mixed>
Return values
array<string|int, mixed>formatSetTextPosition()
public
formatSetTextPosition(int $textId, int $position) : array<string|int, mixed>
Parameters
- $textId : int
- $position : int
Return values
array<string|int, mixed>formatTermTranslations()
public
formatTermTranslations(string $termLc, int $textId) : array<string|int, mixed>
Parameters
- $termLc : string
- $textId : int
Return values
array<string|int, mixed>formatTextsByLanguage()
public
formatTextsByLanguage(int $langId, array<string|int, mixed> $params) : array<string|int, mixed>
Parameters
- $langId : int
- $params : array<string|int, mixed>
Return values
array<string|int, mixed>getAnnotation()
public
getAnnotation(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>getPrintItems()
public
getPrintItems(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>getTermTranslations()
public
getTermTranslations(string $wordlc, int $textid) : array<string|int, mixed>
Parameters
- $wordlc : string
- $textid : int
Return values
array<string|int, mixed>getTranslations()
public
getTranslations(int $wordId) : array<string|int, mixed>
Parameters
- $wordId : int
Return values
array<string|int, mixed>getWords()
public
getWords(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>makeTrans()
public
makeTrans(int $i, int|null $wid, string $trans, string $word, int $lang) : string
Parameters
- $i : int
- $wid : int|null
- $trans : string
- $word : string
- $lang : int
Return values
stringmarkAllIgnored()
public
markAllIgnored(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>markAllWellKnown()
public
markAllWellKnown(int $textId) : array<string|int, mixed>
Parameters
- $textId : int
Return values
array<string|int, mixed>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 this resource.
public
routeGet(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
-
URL path segments (resource name already consumed)
- $params : array<string|int, mixed>
-
Query parameters
Return values
JsonResponseroutePost()
Handle a POST request for this resource.
public
routePost(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
-
URL path segments (resource name already consumed)
- $params : array<string|int, mixed>
-
POST/JSON body parameters
Return values
JsonResponseroutePut()
Handle a PUT request for this resource.
public
routePut(array<string|int, mixed> $fragments, array<string|int, mixed> $params) : JsonResponse
Parameters
- $fragments : array<string|int, mixed>
-
URL path segments (resource name already consumed)
- $params : array<string|int, mixed>
-
JSON body parameters
Return values
JsonResponsesaveAudioPosition()
public
saveAudioPosition(int $textid, float $audioposition) : void
Parameters
- $textid : int
- $audioposition : float
saveImprText()
public
saveImprText(int $textid, string $elem, object $data) : array<string|int, mixed>
Parameters
- $textid : int
- $elem : string
- $data : object
Return values
array<string|int, mixed>saveImprTextData()
public
saveImprTextData(int $textid, int $line, string $val) : array<string|int, mixed>
Parameters
- $textid : int
- $line : int
- $val : string
Return values
array<string|int, mixed>saveTextPosition()
public
saveTextPosition(int $textid, int $position) : void
Parameters
- $textid : int
- $position : int
setDisplayMode()
public
setDisplayMode(int $textId, int|null $annotations, bool|null $romanization, bool|null $translation) : array<string|int, mixed>
Parameters
- $textId : int
- $annotations : int|null
- $romanization : bool|null
- $translation : bool|null
Return values
array<string|int, mixed>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
formatGetAudio()
Handle GET /texts/{id}/audio — the reading screen's media-player config.
private
formatGetAudio(int $textId) : JsonResponse
Returns the per-text audio source and saved position plus the global
player settings, mirroring what MediaService bakes into the server-rendered
player, so a shell-free client can render the player itself. A 404 is
returned when the text does not exist or is not owned by the caller
(getTextForReading is per-user scoped); a present text with no audio yields
an empty uri.
Parameters
- $textId : int
Return values
JsonResponseformatGetBookContext()
Handle GET /texts/{id}/book-context — the reading screen's chapter nav.
private
formatGetBookContext(int $textId) : JsonResponse
Returns the book/chapter context (titles, chapter index, prev/next text
ids) so a shell-free client can render the prev/next navigation that the
server otherwise bakes into read_desktop.php. The body is { "book": null }
when the text is standalone (not part of a book) — a normal state, not an
error. The underlying query runs under QueryBuilder's per-user scope, so
the context of another user's text is never returned.
Parameters
- $textId : int
Return values
JsonResponsehandleBulkAction()
Handle PUT /texts/bulk-action — archive or delete multiple texts.
private
handleBulkAction(array<string, mixed> $params) : JsonResponse
The JSON counterpart of the legacy mark-action form POST: it calls the same TextFacade methods, which run under QueryBuilder's automatic per-user scope, so a caller can only affect their own texts regardless of the IDs sent. Only the two destructive actions are exposed here; tag / review / reparse stay on the form path. Delivered as JSON so it works against a configurable API base URL (a form POST would hit the page origin, not the chosen server).
Parameters
- $params : array<string, mixed>
-
{ action: "archive"|"delete", ids: int[] }
Return values
JsonResponsehandleExtractEpubUrl()
Handle Global Digital Library ePUB import requests.
private
handleExtractEpubUrl(array<string|int, mixed> $params) : JsonResponse
Downloads the ePUB, extracts its text, and rejects image-only picture books with too little readable content.
Parameters
- $params : array<string|int, mixed>
-
Request parameters (url)
Return values
JsonResponsehandleGdlSearch()
Handle Global Digital Library search/browse requests.
private
handleGdlSearch(array<string|int, mixed> $params) : JsonResponse
An empty query browses the catalog; difficulty tiers come from the client (derived from each book's GDL reading level).
Parameters
- $params : array<string|int, mixed>
-
Request parameters (q, language_id, page)
Return values
JsonResponsehandleGutenbergSuggestions()
Handle Gutenberg suggestion requests (popular books by language).
private
handleGutenbergSuggestions(array<string|int, mixed> $params) : JsonResponse
Parameters
- $params : array<string|int, mixed>
-
Request parameters (language_id, page)
Return values
JsonResponsehandleLibraryPreview()
Handle library preview requests (accurate vocabulary coverage).
private
handleLibraryPreview(array<string|int, mixed> $params) : JsonResponse
Parameters
- $params : array<string|int, mixed>
-
Request parameters (url, language_id)
Return values
JsonResponsehandleLibrarySearch()
Handle library search requests.
private
handleLibrarySearch(array<string|int, mixed> $params) : JsonResponse
Parameters
- $params : array<string|int, mixed>
-
Request parameters (q, language_id, page)
Return values
JsonResponsehandleReaderLevel()
Handle reader-level requests (vocabulary size + beginner flag).
private
handleReaderLevel(array<string|int, mixed> $params) : JsonResponse
Drives beginner-aware ordering of home-page suggestions: beginners see the Global Digital Library's easy readers first, advanced learners see Project Gutenberg first.
Parameters
- $params : array<string|int, mixed>
-
Request parameters (language_id)
Return values
JsonResponseresolveLanguageCode()
Resolve a language ID to an ISO 639-1 code for Gutenberg.
private
resolveLanguageCode(int $languageId) : string|null
Tries LgSourceLang first, then guesses from LgName.
Parameters
- $languageId : int
-
Language ID
Return values
string|null —ISO code or null