|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace PRReviewWatcher\Controller; |
|
4
|
|
|
|
|
5
|
|
|
use Silex\Application; |
|
6
|
|
|
use Symfony\Component\HttpFoundation\Request; |
|
7
|
|
|
use GuzzleHttp\Client; |
|
8
|
|
|
|
|
9
|
|
|
class ApiController |
|
10
|
|
|
{ |
|
11
|
|
|
public function createCheckListAction(Request $request, Application $app) |
|
12
|
|
|
{ |
|
13
|
|
|
$repoHook = $request->request->get('pull_request')['head']['repo']['full_name']; |
|
14
|
|
|
$branchHook = $request->request->get('pull_request')['base']['ref']; |
|
15
|
|
|
$numberHook = $request->request->get('number'); |
|
16
|
|
|
$testOpened = $request->request->get('action'); |
|
17
|
|
|
$testStateOpen = $request->request->get('pull_request')['state']; |
|
18
|
|
|
|
|
19
|
|
|
//Creation of a pull request and not an issue. |
|
20
|
|
|
if (($testOpened == 'opened') && ($testStateOpen == 'open')) { |
|
21
|
|
|
$branch = $app['project_repository']->findBranch($repoHook); |
|
22
|
|
|
|
|
23
|
|
|
if (in_array('all', $branch)) { |
|
24
|
|
|
$comment = $app['project_repository']->findComment($repoHook, null); |
|
25
|
|
|
$id = $app['project_repository']->findId($repoHook, null); |
|
26
|
|
|
$token = $app['credential_repository']->findToken($repoHook, null); |
|
27
|
|
|
} |
|
28
|
|
|
elseif (in_array($branchHook, $branch)){ |
|
29
|
|
|
$comment = $app['project_repository']->findComment($repoHook, $branchHook); |
|
30
|
|
|
$id = $app['project_repository']->findId($repoHook, $branchHook); |
|
31
|
|
|
$token = $app['credential_repository']->findToken($repoHook, $branchHook); |
|
32
|
|
|
} |
|
33
|
|
|
|
|
34
|
|
|
if (($comment != null) && ($token != null)) { |
|
35
|
|
|
$content = [ |
|
36
|
|
|
'auth' => [ |
|
37
|
|
|
'token', |
|
38
|
|
|
$token, |
|
|
|
|
|
|
39
|
|
|
] |
|
40
|
|
|
, |
|
41
|
|
|
'json' => [ |
|
42
|
|
|
'body' => $comment, |
|
|
|
|
|
|
43
|
|
|
], |
|
44
|
|
|
]; |
|
45
|
|
|
|
|
46
|
|
|
$url = 'https://api.github.com/repos/' . $repoHook . '/issues/' . $numberHook . '/comments'; |
|
47
|
|
|
$client = new Client(); |
|
48
|
|
|
$client->post($url, $content); |
|
49
|
|
|
|
|
50
|
|
|
$app['project_repository']->incrementNumber($id); |
|
|
|
|
|
|
51
|
|
|
|
|
52
|
|
|
return $app->json($content, 201); |
|
53
|
|
|
} |
|
54
|
|
|
} |
|
55
|
|
|
} |
|
56
|
|
|
} |
|
57
|
|
|
|
If you define a variable conditionally, it can happen that it is not defined for all execution paths.
Let’s take a look at an example:
In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.
Available Fixes
Check for existence of the variable explicitly:
Define a default value for the variable:
Add a value for the missing path: