<?php /** @noinspection DuplicatedCode */
/** @noinspection DuplicatedCode */
/** @noinspection PhpUnhandledExceptionInspection */
/** @noinspection PhpUnusedParameterInspection */
use Eftec\MultiOne\MultiOne;
include __DIR__ . '/../vendor/autoload.php';
MultiOne::Factory(
1000, // every miliseconds
basename(__FILE__), // the url to call
1
)->setMethods(
static function($numWorkers, $payload): array { // the initial call
$_SESSION['USERNAME'] = '(no user)';
$width=$payload['width'];
$height=$payload['height'];
return [
str_repeat('-', $width),
"- Session ID:".session_id(),
"- Write login <username> to change username",
"- Colors: red,green,blue,yellow,magenta,cyan,white and black",
"- Back: bred,bgreen,bblue,byellow,bmagenta,bcyan,bwhite and bblack",
"- others: error (show error),exit(show prompt),ls(list values),clean (clean screen)",
str_repeat('-', $width),];
},
static function($idWorker, $payload): array { // the worker call
$username=$_SESSION['USERNAME']??null;
// it reads the data and reduces to 1.
if($username===null) {
throw new RuntimeException('no user is not set');
}
$line = $payload['line'];
if (strpos($line, 'login ') === 0) {
$_SESSION['USERNAME'] = substr($line, strlen('login '));
$username=$_SESSION['USERNAME']??null;
return MultiOne::msgRun($username . ': ok',$username.'> ');
}
$defaultPrompt=$username.'> ';
if ($line === 'red') {
return MultiOne::msgRun($username . ': <red>Red</red>');
}
$colors=['green','red','blue','yellow','magenta','cyan','white','black'];
$colorsb=['bgreen','bred','bblue','byellow','bmagenta','bcyan','bwhite','bblack'];
if(in_array($line, $colors, true)) {
return MultiOne::msgRun($username . ": <$line>$line</$line>",$defaultPrompt);
}
if(in_array($line, $colorsb, true)) {
return MultiOne::msgRun($username . ": <$line>$line</$line>",$defaultPrompt);
}
switch ($line) {
case 'logout':
$_SESSION['USERNAME'] = '(no user)';
break;
case 'sudo':
return MultiOne::msgRun("<bred><black>no sudo\n</black></bred>",$defaultPrompt);
case 'ls':
return MultiOne::msgRun(
[
$username . ': ' . $payload['line'],
'file1.jpg 233222',
'file2.jpg 233232',
'file3.jpg 545454',
'file4.jpg 566556'
],$defaultPrompt);
case 'error':
return MultiOne::msgError(
null,$defaultPrompt,$username . ': <red>? Error</red>');
case 'clean':
return MultiOne::msgFull($username . ': ' . $payload['line'],$defaultPrompt);
case 'exit':
return MultiOne::msgRun(
$username . ': <green>Do you want to exit?</green>'
, 'Do you want to exit? '); // the new cursor (if none is set then it returns to the default value
}
return MultiOne::msgRun($username . ': ' . $payload['line'],$defaultPrompt);
},
static function($bodies) { // the worker-end call
echo "all worker ended";
}
)->setJSMethods(
"function(nw,json) {
console.log(json);
return json;
}",
"function(nw,response) {
return response;
}")
->setUI()
->setCli('(no user)> ','100%','600px')
->runAuto();
|