@@ -44,39 +44,38 @@ public function __construct(
4444 * @param int $permissions
4545 * @param int $order
4646 * @param string $version
47+ * @param string|null $defaultAction
4748 * @return FilesActionsMenu|null
4849 */
4950 public function registerFileActionMenu (string $ appId , string $ name , string $ displayName , string $ actionHandler ,
50- string $ icon , string $ mime , int $ permissions , int $ order , string $ version ): ?FilesActionsMenu {
51+ string $ icon , string $ mime , int $ permissions , int $ order , string $ version ,
52+ ?string $ defaultAction = null ): ?FilesActionsMenu {
5153 try {
52- $ fileActionMenu = $ this ->mapper ->findByAppidName ($ appId , $ name );
54+ $ existing = $ this ->mapper ->findByAppidName ($ appId , $ name );
5355 } catch (DoesNotExistException |MultipleObjectsReturnedException |Exception ) {
54- $ fileActionMenu = null ;
56+ $ existing = null ;
5557 }
5658 try {
57- $ newFileActionMenu = new FilesActionsMenu ([
58- 'appid ' => $ appId ,
59- 'name ' => $ name ,
60- 'display_name ' => $ displayName ,
61- 'action_handler ' => ltrim ($ actionHandler , '/ ' ),
62- 'icon ' => ltrim ($ icon , '/ ' ),
63- 'mime ' => $ mime ,
64- 'permissions ' => $ permissions ,
65- 'order ' => $ order ,
66- 'version ' => $ version ,
67- ]);
68- if ($ fileActionMenu !== null ) {
69- $ newFileActionMenu ->setId ($ fileActionMenu ->getId ());
70- }
71- $ fileActionMenu = $ this ->mapper ->insertOrUpdate ($ newFileActionMenu );
59+ $ entity = $ existing ?? new FilesActionsMenu ();
60+ $ entity ->setAppid ($ appId );
61+ $ entity ->setName ($ name );
62+ $ entity ->setDisplayName ($ displayName );
63+ $ entity ->setActionHandler (ltrim ($ actionHandler , '/ ' ));
64+ $ entity ->setIcon (ltrim ($ icon , '/ ' ));
65+ $ entity ->setMime ($ mime );
66+ $ entity ->setPermissions ((string )$ permissions );
67+ $ entity ->setOrder ($ order );
68+ $ entity ->setVersion ($ version );
69+ $ entity ->setDefaultAction ($ defaultAction );
70+ $ result = $ existing === null ? $ this ->mapper ->insert ($ entity ) : $ this ->mapper ->update ($ entity );
7271 $ this ->resetCacheEnabled ();
72+ return $ result ;
7373 } catch (Exception $ e ) {
7474 $ this ->logger ->error (
7575 sprintf ('Failed to register ExApp %s FileActionMenu %s. Error: %s ' , $ appId , $ name , $ e ->getMessage ()), ['exception ' => $ e ]
7676 );
7777 return null ;
7878 }
79- return $ fileActionMenu ;
8079 }
8180
8281 public function unregisterFileActionMenu (string $ appId , string $ name ): ?FilesActionsMenu {
0 commit comments