MMOframework
Pourquoi l'IA Playground Bibliothèques Documentation Rechercher Agence
FR EN
Index

Guide

MMO\client · 1 symbole · générée le 27 Oct 2026

class

Guide

Guide.php:32

The guided tours of the pages, for MMO.guide (src/js/core/Guide.js): a page's tour is the .tour.json written beside its .phtml (declaration.phtml → declaration.tour.json). When a page is rendered, its tour, as the user may see it, is handed to the browser, with the tours the user already went through (their config's guides): the elements' own tours (MMO.guide.add()) need it too.

class MMO\client\Guide extends MMO\core\classes\aModule
Espace de noms
MMO\client
Étend
aModule
- A step the user is not allowed to see is taken out, and so is the whole tour when the user is not allowed to see it, or when no step is left. `allowed` is a scope (`admin.activeEntity`), a scope the user must NOT have (`!admin.activeEntity`), or a list of both, all needed. The user is mmo.oauth's (`\MMO\oauth\user()`), or nobody. - Its `title` and its steps' `title`/`text` are English keys, shown in the user's language ([`I18n`](https://mmoframework.fr/fr/documentation/mmo.core/php/I18n.md#i18n)). - `articleUrl` is added: the url of its `article`, a page of the guides about the same task. Configuration: ```json "MMO\\client\\Guide": {"articles": "guide"} ``` `articles`: the page of the guides (a path of the site's pages), the `?` menu's « All the guides »; none by default.
$tour = Guide::Tour(__DIR__ . '/pages/declaration.phtml', \MMO\oauth\user());

Index

SUFFIXwhat a tour's file adds to its page's name
articles
done
enabled
Allowed($item, $user) static
onDocumentRender($event)Hand the page its tour, at render time: the page is only known once it is routed, after DocumentInit.
script()
Seen($user) static
Tour($page, $user) staticThe tour of a page, as $user may see it.

Constantes1

SUFFIX

what a tour's file adds to its page's name

const SUFFIX = '.tour.json'

Propriétés3

articles

protected ?string $articles = null
Type
null | string

done

protected bool $done = false
Type
bool

enabled

protected bool $enabled = true
Type
bool

Méthodes5

Allowed($item, $user)

staticGuide.php:83
protected static function Allowed(array $item, ?object $user): bool
$itemarray
$usernull | object
retourneboolwhether $user may see it (its allowed)

onDocumentRender($event)

Guide.php:124

Hand the page its tour, at render time: the page is only known once it is routed, after DocumentInit. The page's own document only, once a request: the documents rendered for it (a preview, a mail) have none.

function onDocumentRender(MMO\core\events\DocumentRender $event): void
$eventDocumentRender
retournevoid
lève

script()

Guide.php:104
function script(): ?string
retournenull | stringthe script handing the page its tour and what the user saw; null when there is nothing to say
lève

Seen($user)

staticGuide.php:94
static function Seen(?object $user): array
$usernull | object
retournearraymixed> the tours $user went through or left, by id (their config's guides)

Tour($page, $user)

staticGuide.php:52

The tour of a page, as $user may see it.

static function Tour(string $page, ?object $user = null): ?array
$pagestringthe page's .phtml file
$user = nullnull | objectwho sees it: isAllowed() says their rights, ['config']['guides'] the tours they saw
retournenull | arraynull when the page has no tour, or none for this user
lèvewhen the tour is not valid json: a broken tour is a bug, not a page without help
Membres hérités (48)
ConstantesDéclaré parDescription
ALERTiLogLevelAlert: Action must be taken immediately.
ALLiLogLevelMask for all
ALL_PLUSiLogLeveldebug everything
BACKTRACEiLogLevel
CRITICALiLogLevelCritical: Critical conditions.
DEBUGiLogLevelDebug: Detailed debug information.
DEEPiLogLeveldebug everything with arguments
EMERGENCYiLogLevelEmergency: System is unusable.
ERRORiLogLevelError: Runtime errors that do not require immediate action but should typically be logged and monitored.
ERROR_PLUSiLogLevelMask for all error
FATALiLogLevelMask for all fatal error
INFOiLogLevelInfo: Interesting events.
INFO_PLUSiLogLevelMask for all errors/warning/notices/info
MEMORYiLogLevelinclude backtrace object
NOTICEiLogLevelNotice: Normal but significant events.
NOTICE_PLUSiLogLevelMask for all errors/warning/notices/info
TRACEiLogLevelinclude backtrace as origins
WARNINGiLogLevelWarning: Exceptional occurrences that are not errors.
WARNING_PLUSiLogLevelMask for all errors and warnings
PropriétésDéclaré parDescription
verbosityaModule
MéthodesDéclaré parDescription
alert($message, $context)aModuleAction must be taken immediately.
backtraces($message, $context)aModuleForce-log a message at INFO level together with a full stack trace/memory snapshot (iLogLevel::BACKTRACE), bypassing the verbosity mask entirely (any non-zero verbosity is enough to trigger it).
Configure($config)aModuleMerge $config into this module's configuration in the shared Configuration.
critical($message, $context)aModuleCritical conditions. No-op if CRITICAL is currently filtered out by the verbosity mask.
debug($message, $context)aModuleDetailed debug information.
debugName()aModuleHuman-readable identifier used as the default {origin} in this instance's log messages.
DefaultConfig()aModuleThe config a module starts from before anything loaded via Configuration is merged in.
emergency($message, $context)aModuleSystem is unusable. No-op if EMERGENCY is currently filtered out by the verbosity mask.
error($message, $context)aModuleRuntime errors that do not require immediate action but should typically be logged and monitored.
getVerbosity()aModule
info($message, $context)aModuleInteresting events. No-op if INFO is currently filtered out by the verbosity mask.
Instantiate($config)aModule(Re)create the shared instance immediately, configured with $config merged into the class's existing config.
IsShared()aModule
log($level, $message, $context)aModuleLogs with an arbitrary level.
notice($message, $context)aModuleNormal but significant events.
offsetExists($key)aModule\ArrayAccess::offsetExists -- tells whether $key is a declared property at all, regardless of whether it is currently readable/writable through array access.
offsetGet($key)aModule\ArrayAccess::offsetGet -- reads a property directly, unless it has a #[Serialize(serialize: 'methodName')] attribute, in which case that zero-argument method is called instead (e.g.
offsetSet($key, $value)aModule\ArrayAccess::offsetSet -- sets a property directly, unless it has a #[Serialize(unserialize: 'methodName')] attribute, in which case that method is called with $value instead (e.g.
offsetUnset($key)aModule\ArrayAccess::offsetUnset -- equivalent to $module[$key] = null.
serialize($path, $serializer)aModule\MMO\core\interfaces\iSerializable::serialize -- exports every property (via
setVerbosity($verb)aModuleSet the current verbosity mask, replacing whatever it was before.
Shared()aModuleGet the shared instance, creating (and configuring) it on first call.
testVerbosity($level)aModuleTest whether a given level (or set of levels) is currently enabled by this instance's verbosity mask.
traitUnshare($serialize)aModuleRemove the shared instance, so the next Shared() call creates a fresh one.
unserialize($data, $path, $instances)aModule\MMO\core\interfaces\iSerializable::unserialize -- merges $data onto DefaultConfig, runs it through the (possibly overridden) constructor, then applies each resulting value to its property (via
Unshare($serialize)aModuleLike tSingleton::Unshare, but also disconnects this module's instance from every event it was listening to (via Event::DisconnectListeners) before dropping it.
warning($message, $context)aModuleExceptional occurrences that are not errors.
__construct($config)aModuleprotected constructor, so it is not possible to do new Module(...) called by the serialization process just before being injected with data.