@@ -341,7 +341,7 @@ public function updateModule($data)
341341 public function removeModule ($ data )
342342 {
343343 if ($ data ['module_type ' ] !== 'core ' ) {
344- if ($ data ['module_type ' ] === 'apptypes ' ) {
344+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
345345 $ this ->apps ->types ->removeAppType ($ data );
346346 $ this ->addResponse ('Removed app type from DB. Remove files manually... ' );
347347
@@ -800,7 +800,7 @@ protected function getModuleJsonFileLocation(&$data)
800800 ucfirst ($ data ['name ' ]) . '/ ' .
801801 substr ($ data ['module_type ' ], 0 , -1 ) . '.json ' ;
802802 } else {
803- if ($ data ['module_type ' ] === 'apptypes ' ) {
803+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
804804 return $ moduleLocation . 'Install/type.json ' ;
805805 } else if ($ data ['module_type ' ] === 'components ' ) {
806806 $ routeArr = explode ('/ ' , $ data ['route ' ]);
@@ -1332,7 +1332,9 @@ protected function addUpdateComponentMenu($data)
13321332
13331333 public function syncLabels ($ data )
13341334 {
1335- if ($ data ['module_type ' ] === 'apptypes ' ) {
1335+ if (isset ($ data ['module_type ' ]) &&
1336+ $ data ['module_type ' ] === 'apptypes '
1337+ ) {
13361338 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
13371339 } else {
13381340 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
@@ -1389,7 +1391,7 @@ public function getMilestoneLabelIssues($data, $viaGenerateRelease = false)
13891391 $ module = $ data ;
13901392 $ status = 'open ' ;
13911393 } else {
1392- if ($ data ['module_type ' ] === 'apptypes ' ) {
1394+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
13931395 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
13941396 } else {
13951397 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
@@ -1413,6 +1415,32 @@ public function getMilestoneLabelIssues($data, $viaGenerateRelease = false)
14131415 $ status = 'closed ' ;
14141416 }
14151417
1418+ $ currentMilestones = $ this ->syncMilestones ($ data );
1419+
1420+ $ found = false ;
1421+
1422+ if ($ currentMilestones && isset ($ currentMilestones ['milestones ' ])) {
1423+ array_walk ($ currentMilestones ['milestones ' ], function ($ milestone ) use (&$ found , $ data ) {
1424+ if ((int ) $ data ['milestone ' ] !== 0 ) {
1425+ $ milestoneIdentifier = $ milestone ['number ' ] ?? $ milestone ['id ' ];
1426+
1427+ if ((int ) $ milestoneIdentifier === (int ) $ data ['milestone ' ]) {
1428+ $ found = true ;
1429+ }
1430+ } else {
1431+ if ($ milestone ['title ' ] === $ data ['milestone ' ]) {
1432+ $ found = true ;
1433+ }
1434+ }
1435+ });
1436+ }
1437+
1438+ if (!$ found ) {
1439+ $ this ->addResponse ('Error syncing issues as milestone does not exists ' , 1 );
1440+
1441+ return false ;
1442+ }
1443+
14161444 if (!$ this ->latestRelease ) {
14171445 $ since = null ;
14181446 } else {
@@ -1436,7 +1464,7 @@ public function getMilestoneLabelIssues($data, $viaGenerateRelease = false)
14361464 $ data ['label ' ],
14371465 null ,
14381466 null ,
1439- $ data ['milestone ' ],
1467+ ( int ) $ data ['milestone ' ],
14401468 $ since
14411469 ];
14421470 } else if (strtolower ($ this ->apiClientConfig ['provider ' ]) === 'github ' ) {
@@ -1446,7 +1474,7 @@ public function getMilestoneLabelIssues($data, $viaGenerateRelease = false)
14461474 [
14471475 $ this ->apiClientConfig ['org_user ' ],
14481476 strtolower ($ this ->helper ->last (explode ('/ ' , $ module ['repo ' ]))),
1449- $ data ['milestone ' ],
1477+ ( int ) $ data ['milestone ' ],
14501478 $ status ,
14511479 null ,
14521480 null ,
@@ -1458,15 +1486,23 @@ public function getMilestoneLabelIssues($data, $viaGenerateRelease = false)
14581486 ];
14591487 }
14601488
1461- $ issues = $ this ->apiClient ->useMethod ($ collection , $ method , $ args )->getResponse (true );
1489+ try {
1490+ $ issues = $ this ->apiClient ->useMethod ($ collection , $ method , $ args )->getResponse (true );
1491+
1492+ if ($ issues ) {
1493+ $ this ->addResponse ('Issues Synced ' , 0 , ['issues ' => $ issues ]);
14621494
1463- if ( $ issues) {
1464- $ this -> addResponse ( ' Issues Synced ' , 0 , [ ' issues ' => $ issues ]);
1495+ return $ issues;
1496+ }
14651497
1466- return $ issues ;
1498+ $ this ->addResponse ('No issues found with selected milestone/label ' , 1 );
1499+ } catch (\Exception $ e ) {
1500+ $ this ->addResponse ($ e ->getMessage (), 1 );
1501+
1502+ return false ;
14671503 }
14681504
1469- $ this -> addResponse ( ' Error syncing issues or No issues found with selected milestone/label ' , 1 ) ;
1505+ return true ;
14701506 }
14711507
14721508 protected function getReleases ($ module , $ getLatestRelease = false )
@@ -1560,7 +1596,7 @@ public function bumpVersion($data)
15601596 }
15611597
15621598 if (!isset ($ data ['repo ' ])) {
1563- if ($ data ['module_type ' ] === 'apptypes ' ) {
1599+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
15641600 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
15651601 } else {
15661602 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
@@ -1780,7 +1816,7 @@ public function bumpVersion($data)
17801816
17811817 public function syncBranches ($ data )
17821818 {
1783- if ($ data ['module_type ' ] === 'apptypes ' ) {
1819+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
17841820 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
17851821 } else {
17861822 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
@@ -1849,7 +1885,7 @@ public function syncBranches($data)
18491885
18501886 public function syncMilestones ($ data )
18511887 {
1852- if ($ data ['module_type ' ] === 'apptypes ' ) {
1888+ if (isset ( $ data [ ' module_type ' ]) && $ data ['module_type ' ] === 'apptypes ' ) {
18531889 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
18541890 } else {
18551891 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
@@ -1890,9 +1926,9 @@ public function syncMilestones($data)
18901926 }
18911927
18921928 if ($ milestones ) {
1893- $ this ->addResponse ('Labels Synced ' , 0 , ['milestones ' => $ milestones ]);
1929+ $ this ->addResponse ('Milestones Synced ' , 0 , ['milestones ' => $ milestones ]);
18941930
1895- return $ milestones ;
1931+ return [ ' milestones ' => $ milestones] ;
18961932 }
18971933
18981934 $ this ->addResponse ('Error syncing milestones or no milestones configured. ' , 1 );
@@ -1902,6 +1938,7 @@ public function generateRelease($data)
19021938 {
19031939 if ($ data ['module_type ' ] === 'apptypes ' ) {
19041940 $ module = $ this ->apps ->types ->getAppTypeById ($ data ['id ' ]);
1941+ $ module ['module_type ' ] = 'apptypes ' ;
19051942 } else {
19061943 $ module = $ this ->modules ->{$ data ['module_type ' ]}->getById ($ data ['id ' ]);
19071944 }
@@ -1959,16 +1996,15 @@ public function generateRelease($data)
19591996 if (!$ this ->latestRelease ||
19601997 ($ this ->latestRelease && $ data ['mark-as-draft ' ] == 'false ' )
19611998 ) {
1962- $ module ['version ' ] = $ name ;
1963- $ module ['branch ' ] = $ data ['branch ' ];
1964-
19651999 //Check for any open issues against the milestone that was created during draft creation.
19662000 if ($ this ->getMilestoneLabelIssues ($ module , true )) {
19672001 $ this ->addResponse ('Milestone ' . $ module ['version ' ] . ' has a issues open. Please close those issues before generating release. ' , 1 );
19682002
19692003 return false ;
19702004 }
19712005
2006+ $ module ['version ' ] = $ name ;
2007+ $ module ['branch ' ] = $ data ['branch ' ];
19722008 //Check for any open pull request against the branch we have to create release from.
19732009 if (!$ this ->checkPullRequests ($ module )) {
19742010 return false ;
@@ -2147,7 +2183,7 @@ public function generateRelease($data)
21472183 ) {
21482184 $ core = $ this ->core ->core ;
21492185
2150- $ core ['version ' ] = $ data ['version ' ];
2186+ $ core ['version ' ] = $ module ['version ' ];
21512187
21522188 $ this ->core ->update ($ core );
21532189 }
@@ -2165,6 +2201,8 @@ public function generateRelease($data)
21652201 if ($ newMilestone ) {
21662202 $ releaseData = array_merge ($ releaseData , $ newMilestone );
21672203 }
2204+ } else {
2205+ $ this ->closeReleaseMilestone ($ versionData , $ data , $ module , $ repo );
21682206 }
21692207 }
21702208 } catch (\throwable $ e ) {
@@ -2237,6 +2275,58 @@ protected function createReleaseMilestone($versionData, $data, $module, $repo)
22372275 $ this ->addResponse ('Error generating new label ' , 1 );
22382276 }
22392277
2278+ protected function closeReleaseMilestone ($ versionData , $ data , $ module , $ repo )
2279+ {
2280+ if (isset ($ versionData ['newVersion ' ])) {
2281+ $ version = $ versionData ['newVersion ' ];
2282+ } else if (isset ($ versionData ['release ' ])) {
2283+ $ version = $ versionData ['release ' ];
2284+ }
2285+
2286+ $ currentMilestones = $ this ->syncMilestones ($ data );
2287+
2288+ $ found = false ;
2289+
2290+ if ($ currentMilestones && isset ($ currentMilestones ['milestones ' ])) {
2291+ array_walk ($ currentMilestones ['milestones ' ], function ($ milestone ) use (&$ found , $ version ) {
2292+ if ($ milestone ['title ' ] === $ version ) {
2293+ $ found = $ milestone ['number ' ] ?? $ milestone ['id ' ];
2294+ }
2295+ });
2296+ }
2297+
2298+ if ($ found ) {
2299+ if (strtolower ($ this ->apiClientConfig ['provider ' ]) === 'gitea ' ) {
2300+ $ collection = 'IssueApi ' ;
2301+ $ method = 'issueEditMilestone ' ;
2302+ } else if (strtolower ($ this ->apiClientConfig ['provider ' ]) === 'github ' ) {
2303+ $ collection = 'IssuesApi ' ;
2304+ $ method = 'issuesUpdateMilestone ' ;
2305+ }
2306+
2307+ $ args =
2308+ [
2309+ $ this ->apiClientConfig ['org_user ' ],
2310+ strtolower ($ this ->helper ->last (explode ('/ ' , $ repo ))),
2311+ $ found ,
2312+ [
2313+ 'state ' => 'closed ' ,
2314+ ]
2315+ ];
2316+ try {
2317+ $ this ->apiClient ->useMethod ($ collection , $ method , $ args )->getResponse (true );
2318+ } catch (\throwable $ e ) {
2319+ $ this ->addResponse ($ e ->getMessage (), 1 );
2320+
2321+ return false ;
2322+ }
2323+
2324+ return true ;
2325+ }
2326+
2327+ return false ;
2328+ }
2329+
22402330 public function commitBundleJson ($ data )
22412331 {
22422332 $ bundle = $ this ->modules ->bundles ->getById ($ data ['id ' ]);
0 commit comments