Skip to content
GitLab
Erkunden
Anmelden
Registrieren
Primärnavigation
Suchen oder aufrufen …
Projekt
Menu
Verwalten
Aktivität
Mitglieder
Labels
Planen
Tickets
12
Ticketübersichten
Meilensteine
Wiki
Code
Merge Requests
0
Repository
Branch
Commits
Tags
Repository-Diagramm
Revisionen vergleichen
Build
Pipelines
Aufgaben
Pipeline-Zeitpläne
Artefakte
Bereitstellung
Releases
Betreiben
Umgebungen
Überwachen
Vorfälle
Service-Desk
Analysieren
Wertschöpfungskettenanalyse
Mitwirkenden-Analyse
CI/CD-Analyse
Repository-Analysen
Hilfe
Hilfe
Support
GitLab-Dokumentation
GitLab-Pläne vergleichen
Community-Forum
Zu GitLab beitragen
Feedback geben
Tastenkürzel
?
Code-Schnipsel
Gruppen
Projekte
Show more breadcrumbs
QUIQQER
Menu
Commits
368065cb
Commit
368065cb
erstellt
vor 2 Jahren
von
Patrick Müller
Dateien durchsuchen
Optionen
Downloads
Einfaches Diff
Merge branch 'dev'
Übergeordnete
8c011fb7
b1b6ded9
No related branches found
Branches enthält Commit
No related tags found
Tags enthält Commit
2 Merge Requests
!19
Dev
,
!18
Feat menu manager improvement
Änderungen
3
Leerzeichenänderungen ausblenden
Inline
Nebeneinander
3 geänderte Dateien
locale.xml
+5
-0
5 Ergänzungen, 0 Löschungen
locale.xml
package.xml
+4
-0
4 Ergänzungen, 0 Löschungen
package.xml
src/QUI/Menu/Rest/Provider.php
+341
-0
341 Ergänzungen, 0 Löschungen
src/QUI/Menu/Rest/Provider.php
werden angezeigt
mit
350 Ergänzungen
und
0 Löschungen
locale.xml
+
5
−
0
Zeige Datei @
368065cb
...
...
@@ -244,6 +244,11 @@
<de>
<![CDATA[Darf Menüs editieren]]>
</de>
<en>
<![CDATA[Is allowed to edit menus]]>
</en>
</locale>
<locale
name=
"provider.Rest.title"
>
<de>
<![CDATA[QUIQQER Menüs REST API]]>
</de>
<en>
<![CDATA[QUIQQER Menus REST API]]>
</en>
</locale>
</groups>
<groups
name=
"quiqqer/menu"
datatype=
"php"
>
...
...
This diff is collapsed.
Zum Erweitern klicken.
package.xml
+
4
−
0
Zeige Datei @
368065cb
...
...
@@ -23,5 +23,9 @@
<license>
<![CDATA[PCSG QL-1.0]]>
</license>
<license>
<![CDATA[GPL-3.0+]]>
</license>
</copyright>
<provider>
<rest
src=
"\QUI\Menu\Rest\Provider"
/>
</provider>
</package>
</quiqqer>
\ No newline at end of file
This diff is collapsed.
Zum Erweitern klicken.
src/QUI/Menu/Rest/Provider.php
0 → 100644
+
341
−
0
Zeige Datei @
368065cb
<?php
namespace
QUI\Menu\Rest
;
use
QUI
;
use
QUI\REST\ProviderInterface
;
use
Psr\Http\Message\ServerRequestInterface
as
RequestInterface
;
use
Psr\Http\Message\ResponseInterface
as
ResponseInterface
;
use
Psr\Http\Message\MessageInterface
;
use
QUI\REST\Server
;
use
QUI\CoreRest\Handler
;
use
Slim\Routing\RouteCollectorProxy
;
use
QUI\Utils\Security\Orthos
;
use
QUI\Menu\Independent\Handler
as
MenuHandler
;
use
QUI\Menu\Independent\Factory
as
MenuFactory
;
/**
* Class Provider
*
* REST API endpoints for QUIQQER Menus.
*/
class
Provider
implements
ProviderInterface
{
/**
* Provider constructor.
*/
public
function
__construct
()
{
if
(
!
\defined
(
'SYSTEM_INTERN'
))
{
\define
(
'SYSTEM_INTERN'
,
1
);
// Session user = System User
}
}
/**
* Registered some REST Api Calls
*
* @param Server $Server
*/
public
function
register
(
Server
$Server
)
{
$Slim
=
$Server
->
getSlim
();
// Register paths
$Slim
->
group
(
'/menus'
,
function
(
RouteCollectorProxy
$RouteCollector
)
{
// CRUD
$RouteCollector
->
post
(
'/create'
,
[
$this
,
'create'
]);
$RouteCollector
->
get
(
'/get'
,
[
$this
,
'get'
]);
$RouteCollector
->
patch
(
'/update'
,
[
$this
,
'update'
]);
$RouteCollector
->
delete
(
'/delete'
,
[
$this
,
'delete'
]);
});
}
/**
* CREATE a new QUIQQER Menu
*
* @param RequestInterface $Request
* @param ResponseInterface $Response
* @return MessageInterface
*/
public
function
create
(
RequestInterface
$Request
,
ResponseInterface
$Response
):
MessageInterface
{
$params
=
$Request
->
getParsedBody
();
$menu
=
[];
$requiredFields
=
[
'title'
,
];
foreach
(
$requiredFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
return
Handler
::
getGenericErrorResponse
(
'Field "'
.
$field
.
'" is missing.'
);
}
$menu
[
$field
]
=
Orthos
::
clear
(
$params
[
$field
]);
}
$optionalFields
=
[
'id'
,
'workingTitle'
,
'data'
];
foreach
(
$optionalFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
continue
;
}
if
(
\is_array
(
$params
[
$field
]))
{
$value
=
Orthos
::
clearArray
(
$params
[
$field
]);
}
else
{
$value
=
Orthos
::
clear
(
$params
[
$field
]);
}
$menu
[
$field
]
=
$value
;
}
try
{
/*
* If the menu has to have a specific ID, we have to make sure that the ID is not taken.
*/
$menuId
=
false
;
if
(
!
empty
(
$menu
[
'id'
]))
{
$menuId
=
(
int
)
$menu
[
'id'
];
try
{
$menu
=
MenuHandler
::
getMenu
(
$menuId
);
}
catch
(
\Exception
$Exception
)
{
QUI\System\Log
::
writeDebugException
(
$Exception
);
$menu
=
false
;
}
if
(
$menu
)
{
throw
new
QUI\Exception
(
'Menu with specific id #'
.
$menuId
.
' cannot be created, since a menu with this id already'
.
' exists.'
);
}
}
$Menu
=
MenuFactory
::
createMenu
();
$newMenuId
=
$Menu
->
getId
();
if
(
$menuId
)
{
QUI
::
getDataBase
()
->
update
(
MenuHandler
::
table
(),
[
'id'
=>
$menuId
,
],
[
'id'
=>
$newMenuId
]
);
$newMenuId
=
$menuId
;
$Menu
=
MenuHandler
::
getMenu
(
$newMenuId
);
}
$Menu
->
setTitle
(
$menu
[
'title'
]);
if
(
!
empty
(
$menu
[
'workingTitle'
]))
{
$Menu
->
setWorkingTitle
(
$menu
[
'workingTitle'
]);
}
if
(
!
empty
(
$menu
[
'data'
]))
{
$Menu
->
setData
(
$menu
[
'data'
]);
}
$Menu
->
save
(
QUI
::
getUsers
()
->
getSystemUser
());
}
catch
(
\Exception
$Exception
)
{
return
Handler
::
getGenericExceptionResponse
(
$Exception
);
}
return
Handler
::
getGenericSuccessResponse
(
'Menu created.'
,
[
'id'
=>
$newMenuId
]
);
}
/**
* GET data of a QUIQQER Menu
*
* @param RequestInterface $Request
* @param ResponseInterface $Response
* @return MessageInterface
*/
public
function
get
(
RequestInterface
$Request
,
ResponseInterface
$Response
):
MessageInterface
{
$params
=
$Request
->
getParsedBody
();
$menu
=
[];
$requiredFields
=
[
'id'
];
foreach
(
$requiredFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
return
Handler
::
getGenericErrorResponse
(
'Field "'
.
$field
.
'" is missing.'
);
}
$menu
[
$field
]
=
Orthos
::
clear
(
$params
[
$field
]);
}
try
{
$Menu
=
MenuHandler
::
getMenu
(
$menu
[
'id'
]);
}
catch
(
\Exception
$Exception
)
{
return
Handler
::
getGenericExceptionResponse
(
$Exception
);
}
return
Handler
::
getGenericSuccessResponse
(
null
,
$Menu
->
toArray
()
);
}
/**
* UPDATE data of a QUIQQER Menu
*
* @param RequestInterface $Request
* @param ResponseInterface $Response
* @return MessageInterface
*/
public
function
update
(
RequestInterface
$Request
,
ResponseInterface
$Response
):
MessageInterface
{
$params
=
$Request
->
getParsedBody
();
$menu
=
[];
$requiredFields
=
[
'id'
];
foreach
(
$requiredFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
return
Handler
::
getGenericErrorResponse
(
'Field "'
.
$field
.
'" is missing.'
);
}
$menu
[
$field
]
=
Orthos
::
clear
(
$params
[
$field
]);
}
$optionalFields
=
[
'title'
,
'workingTitle'
,
'data'
];
foreach
(
$optionalFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
continue
;
}
if
(
\is_array
(
$params
[
$field
]))
{
$value
=
Orthos
::
clearArray
(
$params
[
$field
]);
}
else
{
$value
=
Orthos
::
clear
(
$params
[
$field
]);
}
$menu
[
$field
]
=
$value
;
}
try
{
$Menu
=
MenuHandler
::
getMenu
((
int
)
$menu
[
'id'
]);
if
(
!
empty
(
$menu
[
'title'
]))
{
$Menu
->
setTitle
(
$menu
[
'title'
]);
}
if
(
!
empty
(
$menu
[
'workingTitle'
]))
{
$Menu
->
setWorkingTitle
(
$menu
[
'workingTitle'
]);
}
if
(
!
empty
(
$menu
[
'data'
]))
{
$Menu
->
setData
(
$menu
[
'data'
]);
}
$Menu
->
save
(
QUI
::
getUsers
()
->
getSystemUser
());
}
catch
(
\Exception
$Exception
)
{
QUI\System\Log
::
writeException
(
$Exception
);
return
Handler
::
getGenericExceptionResponse
(
$Exception
);
}
return
Handler
::
getGenericSuccessResponse
(
'Menu #'
.
$menu
[
'id'
]
.
' successfully updated.'
,
$Menu
->
toArray
()
);
}
/**
* DELETE a QUIQQER Site
*
* @param RequestInterface $Request
* @param ResponseInterface $Response
* @return MessageInterface
*/
public
function
delete
(
RequestInterface
$Request
,
ResponseInterface
$Response
):
MessageInterface
{
$params
=
$Request
->
getParsedBody
();
$menu
=
[];
$requiredFields
=
[
'id'
];
foreach
(
$requiredFields
as
$field
)
{
if
(
empty
(
$params
[
$field
]))
{
return
Handler
::
getGenericErrorResponse
(
'Field "'
.
$field
.
'" is missing.'
);
}
$menu
[
$field
]
=
Orthos
::
clear
(
$params
[
$field
]);
}
try
{
MenuFactory
::
deleteMenu
((
int
)
$menu
[
'id'
]);
}
catch
(
\Exception
$Exception
)
{
return
Handler
::
getGenericExceptionResponse
(
$Exception
);
}
return
Handler
::
getGenericSuccessResponse
(
'Menu #'
.
$menu
[
'id'
]
.
' successfully deleted.'
);
}
/**
* Get file containting OpenApi definition for this API.
*
* @return string|false - Absolute file path or false if no definition exists
*/
public
function
getOpenApiDefinitionFile
()
{
return
false
;
}
/**
* Get unique internal API name.
*
* This is required for requesting specific data about an API (i.e. OpenApi definition).
*
* @return string - Only letters; no other characters!
*/
public
function
getName
():
string
{
return
'QuiqqerMenus'
;
}
/**
* Get title of this API.
*
* @param QUI\Locale|null $Locale (optional)
* @return string
*/
public
function
getTitle
(
QUI
\Locale
$Locale
=
null
):
string
{
if
(
empty
(
$Locale
))
{
$Locale
=
QUI
::
getLocale
();
}
return
$Locale
->
get
(
'quiqqer/menu'
,
'provider.Rest.title'
);
}
}
This diff is collapsed.
Zum Erweitern klicken.
Vorschau
0%
Wiederholen
oder
Neue Datei anhängen
.
Abbrechen
You are about to add
0
people
to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Kommentar speichern
Abbrechen
Bitte
registrieren
oder
Anmelden
zum Kommentieren