{"action":"created","comment":{"url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/comments/215304659","pull_request_review_id":152538250,"id":215304659,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxNTMwNDY1OQ==","diff_hunk":"@@ -0,0 +1,133 @@\n+<?php\n+\n+class CRM_Civicase_Page_ActivityFiles {\n+\n+  /**\n+   * Download all activity files contained in a single zip file.\n+   */\n+  public static function downloadAll() {\n+    $activity = self::getActivityFromRequest();\n+\n+    $zipName = self::getZipName($activity);\n+    $zipDestination = self::getDestinationPath();\n+    $zipFullPath = $zipDestination . '/' . $zipName;\n+    $files = self::getActivityFilePaths($activity['id']);\n+\n+    self::createOrUpdateZipFile($zipFullPath, $files);\n+    self::downloadZipFile($zipFullPath);\n+  }\n+\n+  /**\n+   * Returns the activity specified by the request. In case the request gives\n+   * an invalid activity id it throws a 404 status code.\n+   */\n+  private static function getActivityFromRequest() {\n+    $activityId = CRM_Utils_Array::value('activity_id', $_GET);\n+    self::validateActivityId($activityId);\n+\n+    $activityResult = civicrm_api3('Activity', 'get', ['id' => $activityId]);\n+\n+    if ($activityResult['count'] === 0) {\n+      return self::throw404StatusCode();\n+    }\n+\n+    return CRM_Utils_Array::first($activityResult['values']);\n+  }\n+\n+  /**\n+   * Validates that the activity id was provided. If not, it returns a 404 status code.\n+   *\n+   * @param string|null $activityId\n+   */\n+  private static function validateActivityId($activityId) {\n+    if (empty($activityId)) {\n+      self::throw404StatusCode();\n+    }\n+  }\n+\n+  /**\n+   * Throws a 404 status code and closes the connection.\n+   */\n+  private static function throw404StatusCode() {\n+    http_response_code(404);\n+    CRM_Utils_System::civiExit();\n+  }\n+\n+  /**\n+   * Given an activity, it returns the name for the zip file containing all of\n+   * its files. Ex: 123-department-relocation.zip\n+   *\n+   * @param array $activity\n+   *\n+   * @return string\n+   */\n+  private static function getZipName($activity) {\n+    $activitySlug = CRM_Utils_String::munge($activity['subject'], '-');\n+\n+    return $activity['id'] . '-' . $activitySlug . '.zip';","path":"CRM/Civicase/Page/ActivityFiles.php","position":70,"original_position":67,"commit_id":"5b0135a49e2a05fa6f96274c9ca34f16b3bffef0","original_commit_id":"e6db2d828498ef7d7520d323ab083b1c6181cee3","user":{"login":"igorpavlov","id":3973243,"node_id":"MDQ6VXNlcjM5NzMyNDM=","avatar_url":"https://avatars1.githubusercontent.com/u/3973243?v=4","gravatar_id":"","url":"https://api.github.com/users/igorpavlov","html_url":"https://github.com/igorpavlov","followers_url":"https://api.github.com/users/igorpavlov/followers","following_url":"https://api.github.com/users/igorpavlov/following{/other_user}","gists_url":"https://api.github.com/users/igorpavlov/gists{/gist_id}","starred_url":"https://api.github.com/users/igorpavlov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/igorpavlov/subscriptions","organizations_url":"https://api.github.com/users/igorpavlov/orgs","repos_url":"https://api.github.com/users/igorpavlov/repos","events_url":"https://api.github.com/users/igorpavlov/events{/privacy}","received_events_url":"https://api.github.com/users/igorpavlov/received_events","type":"User","site_admin":false},"body":"Non-tech people do not know what this ID is and they should not. They may think `2-my-photos.zip` that there is a `1-my-photos.zip` somewhere. May be include the timestamp?\r\n\r\nWe also may not need a slag at all.\r\n\r\n`My photos (2018-09-05 12:34:04).zip`","created_at":"2018-09-05T14:55:16Z","updated_at":"2018-09-05T14:55:16Z","html_url":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12#discussion_r215304659","pull_request_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/comments/215304659"},"html":{"href":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12#discussion_r215304659"},"pull_request":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12"}},"in_reply_to_id":215211999},"pull_request":{"url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12","id":213153974,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzMTUzOTc0","html_url":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12","diff_url":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12.diff","patch_url":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12.patch","issue_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/12","number":12,"state":"open","locked":false,"title":"C51-41: Add download all activity files page link","user":{"login":"reneolivo","id":1642119,"node_id":"MDQ6VXNlcjE2NDIxMTk=","avatar_url":"https://avatars1.githubusercontent.com/u/1642119?v=4","gravatar_id":"","url":"https://api.github.com/users/reneolivo","html_url":"https://github.com/reneolivo","followers_url":"https://api.github.com/users/reneolivo/followers","following_url":"https://api.github.com/users/reneolivo/following{/other_user}","gists_url":"https://api.github.com/users/reneolivo/gists{/gist_id}","starred_url":"https://api.github.com/users/reneolivo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/reneolivo/subscriptions","organizations_url":"https://api.github.com/users/reneolivo/orgs","repos_url":"https://api.github.com/users/reneolivo/repos","events_url":"https://api.github.com/users/reneolivo/events{/privacy}","received_events_url":"https://api.github.com/users/reneolivo/received_events","type":"User","site_admin":false},"body":"This PR adds a page link that allows downloading all the files associated with an Activity in a single zip file.\r\n\r\n## How it works\r\n\r\n![pr-after](https://user-images.githubusercontent.com/1642119/45038045-6b4d1c80-b02e-11e8-9626-bb5b0e0e780a.gif)\r\n\r\n## Technical details\r\n\r\nA new page was added that retrieves the files for an activity and groups them in a single zip file that can be downloaded by the users.\r\n\r\nThe structure of the class is divided into the following units:\r\n\r\n### Validating that the activity id was provided\r\n\r\n```php\r\n private static function validateActivityId($activityId) {\r\n    if (empty($activityId)) {\r\n      http_response_code(404);\r\n      CRM_Utils_System::civiExit();\r\n    }\r\n  }\r\n```\r\n\r\n### Get the destination path for the zip file\r\n\r\n```php\r\n  private static function getDestinationPath() {\r\n    $config = CRM_Core_Config::singleton();\r\n\r\n    return $config->customFileUploadDir;\r\n  }\r\n```\r\n\r\n### Getting the files associated to the activity\r\n\r\n```php\r\n  private static function getActivityFilePaths($activityId) {\r\n    $filePaths = [];\r\n    $activityFiles = CRM_Core_BAO_File::getEntityFile('civicrm_activity', $activityId);\r\n\r\n    foreach ($activityFiles as $activityFile) {\r\n      $filePaths[] = $activityFile['fullPath'];\r\n    }\r\n\r\n    return $filePaths;\r\n  }\r\n```\r\n\r\n### Creating the zip file\r\n\r\n```php\r\n  private static function createOrUpdateZipFile($zipFullPath, $filePaths) {\r\n    $zipName = basename($zipFullPath);\r\n    $zip = new ZipArchive();\r\n    $mode = ZipArchive::CREATE | ZipArchive::OVERWRITE;\r\n    $zip->open($zipFullPath, $mode);\r\n\r\n    foreach ($filePaths as $filePath) {\r\n      $zip->addFile($filePath, substr($filePath, strrpos($filePath, '/') + 1));\r\n    }\r\n\r\n    $zip->close();\r\n  }\r\n```\r\n\r\n### Downloading the newly created zip file\r\n\r\n```php\r\n  private static function downloadZipFile($zipFullPath) {\r\n    $zipName = basename($zipFullPath);\r\n\r\n    header('Content-Type: application/zip');\r\n    header('Content-disposition: attachment; filename=' . $zipName);\r\n    header('Content-Length: ' . filesize($zipFullPath));\r\n\r\n    readfile($zipFullPath);\r\n\r\n    CRM_Utils_System::civiExit();\r\n  }\r\n```\r\n\r\n### Zip link\r\n\r\nThe final orchestration to download the zip file is this:\r\n\r\n```php\r\n  public static function downloadAll() {\r\n    $activityId = CRM_Utils_Array::value('activity_id', $_GET);\r\n\r\n    self::validateActivityId($activityId);\r\n\r\n    $zipName = 'activity-' . $activityId . '-files.zip';\r\n    $zipDestination = self::getDestinationPath();\r\n    $zipFullPath = $zipDestination . '/' . $zipName;\r\n    $files = self::getActivityFilePaths($activityId);\r\n\r\n    self::createOrUpdateZipFile($zipFullPath, $files);\r\n    self::downloadZipFile($zipFullPath);\r\n  }\r\n```","created_at":"2018-09-05T02:42:14Z","updated_at":"2018-09-05T14:55:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dc382ba0679fe2e79a4123a22ccd067db61b2fff","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12/commits","review_comments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12/comments","review_comment_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/comments{/number}","comments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/12/comments","statuses_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/statuses/5b0135a49e2a05fa6f96274c9ca34f16b3bffef0","head":{"label":"compucorp:C51-41-download-all-activity-files","ref":"C51-41-download-all-activity-files","sha":"5b0135a49e2a05fa6f96274c9ca34f16b3bffef0","user":{"login":"compucorp","id":2040164,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNDAxNjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/2040164?v=4","gravatar_id":"","url":"https://api.github.com/users/compucorp","html_url":"https://github.com/compucorp","followers_url":"https://api.github.com/users/compucorp/followers","following_url":"https://api.github.com/users/compucorp/following{/other_user}","gists_url":"https://api.github.com/users/compucorp/gists{/gist_id}","starred_url":"https://api.github.com/users/compucorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/compucorp/subscriptions","organizations_url":"https://api.github.com/users/compucorp/orgs","repos_url":"https://api.github.com/users/compucorp/repos","events_url":"https://api.github.com/users/compucorp/events{/privacy}","received_events_url":"https://api.github.com/users/compucorp/received_events","type":"Organization","site_admin":false},"repo":{"id":143011708,"node_id":"MDEwOlJlcG9zaXRvcnkxNDMwMTE3MDg=","name":"uk.co.compucorp.civicase","full_name":"compucorp/uk.co.compucorp.civicase","owner":{"login":"compucorp","id":2040164,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNDAxNjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/2040164?v=4","gravatar_id":"","url":"https://api.github.com/users/compucorp","html_url":"https://github.com/compucorp","followers_url":"https://api.github.com/users/compucorp/followers","following_url":"https://api.github.com/users/compucorp/following{/other_user}","gists_url":"https://api.github.com/users/compucorp/gists{/gist_id}","starred_url":"https://api.github.com/users/compucorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/compucorp/subscriptions","organizations_url":"https://api.github.com/users/compucorp/orgs","repos_url":"https://api.github.com/users/compucorp/repos","events_url":"https://api.github.com/users/compucorp/events{/privacy}","received_events_url":"https://api.github.com/users/compucorp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/compucorp/uk.co.compucorp.civicase","description":"CiviCase Extension","fork":true,"url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase","forks_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/forks","keys_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/keys{/key_id}","collaborators_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/teams","hooks_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/hooks","issue_events_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/events{/number}","events_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/events","assignees_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/assignees{/user}","branches_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/branches{/branch}","tags_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/tags","blobs_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/refs{/sha}","trees_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/trees{/sha}","statuses_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/statuses/{sha}","languages_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/languages","stargazers_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/stargazers","contributors_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/contributors","subscribers_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/subscribers","subscription_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/subscription","commits_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/commits{/sha}","git_commits_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/commits{/sha}","comments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/comments{/number}","issue_comment_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/comments{/number}","contents_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/contents/{+path}","compare_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/compare/{base}...{head}","merges_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/merges","archive_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/downloads","issues_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues{/number}","pulls_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls{/number}","milestones_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/milestones{/number}","notifications_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/labels{/name}","releases_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/releases{/id}","deployments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/deployments","created_at":"2018-07-31T12:33:33Z","updated_at":"2018-08-15T11:40:22Z","pushed_at":"2018-09-05T14:39:08Z","git_url":"git://github.com/compucorp/uk.co.compucorp.civicase.git","ssh_url":"git@github.com:compucorp/uk.co.compucorp.civicase.git","clone_url":"https://github.com/compucorp/uk.co.compucorp.civicase.git","svn_url":"https://github.com/compucorp/uk.co.compucorp.civicase","homepage":null,"size":1600,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":0,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"compucorp:develop","ref":"develop","sha":"5ee95cd8b015cbda225f9001186efc79cdf0a69d","user":{"login":"compucorp","id":2040164,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNDAxNjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/2040164?v=4","gravatar_id":"","url":"https://api.github.com/users/compucorp","html_url":"https://github.com/compucorp","followers_url":"https://api.github.com/users/compucorp/followers","following_url":"https://api.github.com/users/compucorp/following{/other_user}","gists_url":"https://api.github.com/users/compucorp/gists{/gist_id}","starred_url":"https://api.github.com/users/compucorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/compucorp/subscriptions","organizations_url":"https://api.github.com/users/compucorp/orgs","repos_url":"https://api.github.com/users/compucorp/repos","events_url":"https://api.github.com/users/compucorp/events{/privacy}","received_events_url":"https://api.github.com/users/compucorp/received_events","type":"Organization","site_admin":false},"repo":{"id":143011708,"node_id":"MDEwOlJlcG9zaXRvcnkxNDMwMTE3MDg=","name":"uk.co.compucorp.civicase","full_name":"compucorp/uk.co.compucorp.civicase","owner":{"login":"compucorp","id":2040164,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIwNDAxNjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/2040164?v=4","gravatar_id":"","url":"https://api.github.com/users/compucorp","html_url":"https://github.com/compucorp","followers_url":"https://api.github.com/users/compucorp/followers","following_url":"https://api.github.com/users/compucorp/following{/other_user}","gists_url":"https://api.github.com/users/compucorp/gists{/gist_id}","starred_url":"https://api.github.com/users/compucorp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/compucorp/subscriptions","organizations_url":"https://api.github.com/users/compucorp/orgs","repos_url":"https://api.github.com/users/compucorp/repos","events_url":"https://api.github.com/users/compucorp/events{/privacy}","received_events_url":"https://api.github.com/users/compucorp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/compucorp/uk.co.compucorp.civicase","description":"CiviCase Extension","fork":true,"url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase","forks_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/forks","keys_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/keys{/key_id}","collaborators_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/teams","hooks_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/hooks","issue_events_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/events{/number}","events_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/events","assignees_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/assignees{/user}","branches_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/branches{/branch}","tags_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/tags","blobs_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/refs{/sha}","trees_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/trees{/sha}","statuses_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/statuses/{sha}","languages_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/languages","stargazers_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/stargazers","contributors_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/contributors","subscribers_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/subscribers","subscription_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/subscription","commits_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/commits{/sha}","git_commits_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/git/commits{/sha}","comments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/comments{/number}","issue_comment_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/comments{/number}","contents_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/contents/{+path}","compare_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/compare/{base}...{head}","merges_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/merges","archive_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/downloads","issues_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues{/number}","pulls_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls{/number}","milestones_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/milestones{/number}","notifications_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/labels{/name}","releases_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/releases{/id}","deployments_url":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/deployments","created_at":"2018-07-31T12:33:33Z","updated_at":"2018-08-15T11:40:22Z","pushed_at":"2018-09-05T14:39:08Z","git_url":"git://github.com/compucorp/uk.co.compucorp.civicase.git","ssh_url":"git@github.com:compucorp/uk.co.compucorp.civicase.git","clone_url":"https://github.com/compucorp/uk.co.compucorp.civicase.git","svn_url":"https://github.com/compucorp/uk.co.compucorp.civicase","homepage":null,"size":1600,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"agpl-3.0","name":"GNU Affero General Public License v3.0","spdx_id":"AGPL-3.0","url":"https://api.github.com/licenses/agpl-3.0","node_id":"MDc6TGljZW5zZTE="},"forks":0,"open_issues":2,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12"},"html":{"href":"https://github.com/compucorp/uk.co.compucorp.civicase/pull/12"},"issue":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/12"},"comments":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/issues/12/comments"},"review_comments":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12/comments"},"review_comment":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/pulls/12/commits"},"statuses":{"href":"https://api.github.com/repos/compucorp/uk.co.compucorp.civicase/statuses/5b0135a49e2a05fa6f96274c9ca34f16b3bffef0"}},"author_association":"NONE"}}
{"actor":{"display_login":"igorpavlov"}}