{"action":"created","comment":{"url":"https://api.github.com/repos/sulu-io/sulu/pulls/comments/29571838","id":29571838,"diff_hunk":"@@ -0,0 +1,239 @@\n+<?php\n+/*\n+ * This file is part of the Sulu CMS.\n+ *\n+ * (c) MASSIVE ART WebServices GmbH\n+ *\n+ * This source file is subject to the MIT license that is bundled\n+ * with this source code in the file LICENSE.\n+ */\n+\n+namespace Sulu\\Bundle\\CoreBundle\\Command;\n+\n+use PHPCR\\PropertyType;\n+use PHPCR\\SessionInterface;\n+use Sulu\\Bundle\\SnippetBundle\\Snippet\\SnippetRepository;\n+use Sulu\\Component\\Content\\Block\\BlockPropertyInterface;\n+use Sulu\\Component\\Content\\Block\\BlockPropertyWrapper;\n+use Sulu\\Component\\Content\\Mapper\\ContentMapperInterface;\n+use Sulu\\Component\\Content\\Mapper\\Translation\\TranslatedProperty;\n+use Sulu\\Component\\Content\\Structure;\n+use Sulu\\Component\\Content\\Structure\\Page;\n+use Sulu\\Component\\Localization\\Localization;\n+use Sulu\\Component\\Webspace\\Manager\\WebspaceManagerInterface;\n+use Sulu\\Component\\Webspace\\Webspace;\n+use Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand;\n+use Symfony\\Component\\Console\\Input\\InputArgument;\n+use Symfony\\Component\\Console\\Input\\InputInterface;\n+use Symfony\\Component\\Console\\Input\\InputOption;\n+use Symfony\\Component\\Console\\Output\\OutputInterface;\n+\n+/**\n+ * Upgrades SmartContent to 0.18.0\n+ * @deprecated\n+ */\n+class UpgradeSmartContentOperatorCommand extends ContainerAwareCommand\n+{\n+    /**\n+     * @var WebspaceManagerInterface\n+     */\n+    private $webspaceManager;\n+\n+    /**\n+     * @var SessionInterface\n+     */\n+    private $session;\n+\n+    /**\n+     * @var string\n+     */\n+    private $type = '';\n+\n+    /**\n+     * @var string\n+     */\n+    private $operator = '';\n+\n+    /**\n+     * @var bool\n+     */\n+    private $overwrite = false;\n+\n+    /**\n+     * {@inheritdoc}\n+     */\n+    protected function configure()\n+    {\n+        $this->setName('sulu:upgrade:0.18.0:smart-content-operator')\n+            ->setDescription('Set smart-content operator to given argument of filter type')\n+            ->setHelp(\n+                <<<EOT\n+                The <info>%command.name%</info> command set the <info>operator</info> (and, or)\n+of a filter <info>type</info> (tag, category, etc.) on all smart content fields.\n+\n+    %command.full_name% tag and\n+\n+You can overwrite the existing operator using the <info>overwrite</info> option:\n+\n+    %command.full_name% tag and --overwrite\n+EOT\n+            )\n+            ->addArgument('type', InputArgument::REQUIRED, 'Define filter type')\n+            ->addArgument('operator', InputArgument::REQUIRED, 'Define \"and\" or \"or\" for operator')\n+            ->addOption('overwrite', null, InputOption::VALUE_NONE, 'Overwrite existing operator');\n+    }\n+\n+    protected function execute(InputInterface $input, OutputInterface $output)\n+    {\n+        $this->type = $input->getArgument('type');\n+        $this->operator = $input->getArgument('operator');\n+        $this->overwrite = $input->getOption('overwrite');\n+\n+        $this->session = $this->getContainer()->get('sulu.phpcr.session')->getSession();\n+\n+        /** @var WebspaceManagerInterface $webspaceManager */\n+        $this->webspaceManager = $this->getContainer()->get('sulu_core.webspace.webspace_manager');\n+\n+        /** @var Webspace $webspace */\n+        foreach ($this->webspaceManager->getWebspaceCollection() as $webspace) {\n+            $this->upgradeWebspace($webspace, $output);\n+        }\n+\n+        if ($this->getContainer()->has('sulu_snippet.repository')) {\n+            $output->writeln('<info> Upgrade Snippets: </info>');\n+            foreach ($this->webspaceManager->getAllLocalizations() as $localization) {\n+                $this->upgradeSnippets($output, $localization);\n+            }\n+        }\n+\n+        $this->session->save();\n+    }\n+\n+    private function upgradeWebspace(Webspace $webspace, OutputInterface $output)\n+    {\n+        $output->writeln('<info> Upgrade Webspace: ' . $webspace->getName() . '</info>');\n+        foreach ($webspace->getAllLocalizations() as $localization) {\n+            $output->writeln('  > Upgrade Locale: ' . $localization->getLocalization('-'));\n+\n+            /** @var ContentMapperInterface $contentMapper */\n+            $contentMapper = $this->getContainer()->get('sulu.content.mapper');\n+            $startPage = $contentMapper->loadStartPage($webspace->getKey(), $localization->getLocalization());\n+\n+            $this->upgradeNode($startPage, $localization, $output);\n+            $this->upgradeByParent($startPage, $webspace, $localization, $contentMapper, $output);\n+        }\n+    }\n+\n+    private function upgradeSnippets(OutputInterface $output, Localization $localization)\n+    {\n+        /**\n+         * @var SnippetRepository\n+         */\n+        $snippetRepository = $this->getContainer()->get('sulu_snippet.repository');\n+\n+        foreach ($snippetRepository->getSnippets($localization) as $snippet) {\n+            $this->upgradeNode($snippet, $localization, $output);\n+        }\n+    }\n+\n+    private function upgradeByParent(\n+        Structure $parent,\n+        Webspace $webspace,\n+        Localization $localization,\n+        ContentMapperInterface $contentMapper,\n+        OutputInterface $output\n+    )\n+    {\n+        $pages = $contentMapper->loadByParent(\n+            $parent->getUuid(),\n+            $webspace->getKey(),\n+            $localization->getLocalization(),\n+            1\n+        );\n+\n+        /** @var Page $page */\n+        foreach ($pages as $page) {\n+            $this->upgradeNode($page, $localization, $output, substr_count($page->getPath(), '/'));\n+            $this->upgradeByParent($page, $webspace, $localization, $contentMapper, $output);\n+        }\n+    }\n+\n+    private function upgradeNode(\n+        Structure $structure,\n+        Localization $localization,\n+        OutputInterface $output,\n+        $depth = 0\n+    )\n+    {\n+        foreach ($structure->getProperties(true) as $property) {\n+            if ($property->getContentTypeName() == 'smart_content') {\n+                $transProperty = new TranslatedProperty(\n+                    $property,\n+                    $localization->getLocalization(),\n+                    $this->getContainer()->getParameter('sulu.content.language.namespace')\n+                );\n+                $this->upgradeProperty($structure, $output, $transProperty, $depth);\n+            } else if ($property instanceof BlockPropertyInterface) {\n+                $this->upgradeBlockProperty($structure, $localization, $output, $property, $depth);\n+            }\n+        }\n+    }\n+\n+    private function upgradeBlockProperty(\n+        Structure $structure,\n+        Localization $localization,\n+        OutputInterface $output,\n+        BlockPropertyInterface $property,\n+        $depth\n+    ) {\n+        for ($i = 0; $i < $property->getLength(); $i++) {\n+            $blockProperty = $property->getProperties($i);\n+            foreach ($blockProperty->getChildProperties() as $childProperty) {\n+                if ($childProperty->getContentTypeName() == 'smart_content') {\n+                    $transProperty = new TranslatedProperty(\n+                        new BlockPropertyWrapper(\n+                            $childProperty,\n+                            $property,\n+                            $i\n+                        ),\n+                        $localization->getLocalization(),\n+                        $this->getContainer()->getParameter('sulu.content.language.namespace')\n+                    );\n+                    $this->upgradeProperty($structure, $output, $transProperty, $depth);\n+                }\n+            }\n+        }\n+    }\n+\n+    private function upgradeProperty(\n+        Structure $structure,\n+        OutputInterface $output,\n+        $property,\n+        $depth\n+    )","path":"src/Sulu/Bundle/CoreBundle/Command/UpgradeSmartContentOperatorCommand.php","position":213,"original_position":213,"commit_id":"a1513afec311ad25b22e224994350d7ba81ba39a","original_commit_id":"a1513afec311ad25b22e224994350d7ba81ba39a","user":{"login":"wachterjohannes","id":1464615,"avatar_url":"https://avatars.githubusercontent.com/u/1464615?v=3","gravatar_id":"","url":"https://api.github.com/users/wachterjohannes","html_url":"https://github.com/wachterjohannes","followers_url":"https://api.github.com/users/wachterjohannes/followers","following_url":"https://api.github.com/users/wachterjohannes/following{/other_user}","gists_url":"https://api.github.com/users/wachterjohannes/gists{/gist_id}","starred_url":"https://api.github.com/users/wachterjohannes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wachterjohannes/subscriptions","organizations_url":"https://api.github.com/users/wachterjohannes/orgs","repos_url":"https://api.github.com/users/wachterjohannes/repos","events_url":"https://api.github.com/users/wachterjohannes/events{/privacy}","received_events_url":"https://api.github.com/users/wachterjohannes/received_events","type":"User","site_admin":false},"body":"collapse ) and { in a single line","created_at":"2015-05-04T08:34:41Z","updated_at":"2015-05-04T08:34:41Z","html_url":"https://github.com/sulu-io/sulu/pull/939#discussion_r29571838","pull_request_url":"https://api.github.com/repos/sulu-io/sulu/pulls/939","_links":{"self":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/comments/29571838"},"html":{"href":"https://github.com/sulu-io/sulu/pull/939#discussion_r29571838"},"pull_request":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/939"}}},"pull_request":{"url":"https://api.github.com/repos/sulu-io/sulu/pulls/939","id":31671330,"html_url":"https://github.com/sulu-io/sulu/pull/939","diff_url":"https://github.com/sulu-io/sulu/pull/939.diff","patch_url":"https://github.com/sulu-io/sulu/pull/939.patch","issue_url":"https://api.github.com/repos/sulu-io/sulu/issues/939","number":939,"state":"open","locked":false,"title":"Smart content tags filtering (and, or)","user":{"login":"c00n84","id":841720,"avatar_url":"https://avatars.githubusercontent.com/u/841720?v=3","gravatar_id":"","url":"https://api.github.com/users/c00n84","html_url":"https://github.com/c00n84","followers_url":"https://api.github.com/users/c00n84/followers","following_url":"https://api.github.com/users/c00n84/following{/other_user}","gists_url":"https://api.github.com/users/c00n84/gists{/gist_id}","starred_url":"https://api.github.com/users/c00n84/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c00n84/subscriptions","organizations_url":"https://api.github.com/users/c00n84/orgs","repos_url":"https://api.github.com/users/c00n84/repos","events_url":"https://api.github.com/users/c00n84/events{/privacy}","received_events_url":"https://api.github.com/users/c00n84/received_events","type":"User","site_admin":false},"body":"__Tasks:__\r\n\r\n- [x] test coverage\r\n- [ ] gather feedback for my changes\r\n- [x] added changelog line\r\n- [x] change default value for filter to OR\r\n- [x] added selection for user to choose between OR or AND\r\n- [x] upgrade command\r\n\r\n__Informations:__\r\n\r\n| Q             | A\r\n| ------------- | ---\r\n| Tests pass?   | yes\r\n| Fixed tickets | fixes #496\r\n| BC Breaks     | additional property `tagOperator` with a different default behaviour => TODO add to upgrade.md\r\n| Doc           | none","created_at":"2015-03-21T13:36:58Z","updated_at":"2015-05-04T08:34:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3eb8482ca25fcb31bad845add015604393dba914","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sulu-io/sulu/pulls/939/commits","review_comments_url":"https://api.github.com/repos/sulu-io/sulu/pulls/939/comments","review_comment_url":"https://api.github.com/repos/sulu-io/sulu/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sulu-io/sulu/issues/939/comments","statuses_url":"https://api.github.com/repos/sulu-io/sulu/statuses/a1513afec311ad25b22e224994350d7ba81ba39a","head":{"label":"sulu-io:feature/smart-content-tag-filter-and-or","ref":"feature/smart-content-tag-filter-and-or","sha":"a1513afec311ad25b22e224994350d7ba81ba39a","user":{"login":"sulu-io","id":5717006,"avatar_url":"https://avatars.githubusercontent.com/u/5717006?v=3","gravatar_id":"","url":"https://api.github.com/users/sulu-io","html_url":"https://github.com/sulu-io","followers_url":"https://api.github.com/users/sulu-io/followers","following_url":"https://api.github.com/users/sulu-io/following{/other_user}","gists_url":"https://api.github.com/users/sulu-io/gists{/gist_id}","starred_url":"https://api.github.com/users/sulu-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sulu-io/subscriptions","organizations_url":"https://api.github.com/users/sulu-io/orgs","repos_url":"https://api.github.com/users/sulu-io/repos","events_url":"https://api.github.com/users/sulu-io/events{/privacy}","received_events_url":"https://api.github.com/users/sulu-io/received_events","type":"Organization","site_admin":false},"repo":{"id":13678015,"name":"sulu","full_name":"sulu-io/sulu","owner":{"login":"sulu-io","id":5717006,"avatar_url":"https://avatars.githubusercontent.com/u/5717006?v=3","gravatar_id":"","url":"https://api.github.com/users/sulu-io","html_url":"https://github.com/sulu-io","followers_url":"https://api.github.com/users/sulu-io/followers","following_url":"https://api.github.com/users/sulu-io/following{/other_user}","gists_url":"https://api.github.com/users/sulu-io/gists{/gist_id}","starred_url":"https://api.github.com/users/sulu-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sulu-io/subscriptions","organizations_url":"https://api.github.com/users/sulu-io/orgs","repos_url":"https://api.github.com/users/sulu-io/repos","events_url":"https://api.github.com/users/sulu-io/events{/privacy}","received_events_url":"https://api.github.com/users/sulu-io/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sulu-io/sulu","description":"Sulu 2.0 core bundle & components","fork":false,"url":"https://api.github.com/repos/sulu-io/sulu","forks_url":"https://api.github.com/repos/sulu-io/sulu/forks","keys_url":"https://api.github.com/repos/sulu-io/sulu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sulu-io/sulu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sulu-io/sulu/teams","hooks_url":"https://api.github.com/repos/sulu-io/sulu/hooks","issue_events_url":"https://api.github.com/repos/sulu-io/sulu/issues/events{/number}","events_url":"https://api.github.com/repos/sulu-io/sulu/events","assignees_url":"https://api.github.com/repos/sulu-io/sulu/assignees{/user}","branches_url":"https://api.github.com/repos/sulu-io/sulu/branches{/branch}","tags_url":"https://api.github.com/repos/sulu-io/sulu/tags","blobs_url":"https://api.github.com/repos/sulu-io/sulu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sulu-io/sulu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sulu-io/sulu/git/refs{/sha}","trees_url":"https://api.github.com/repos/sulu-io/sulu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sulu-io/sulu/statuses/{sha}","languages_url":"https://api.github.com/repos/sulu-io/sulu/languages","stargazers_url":"https://api.github.com/repos/sulu-io/sulu/stargazers","contributors_url":"https://api.github.com/repos/sulu-io/sulu/contributors","subscribers_url":"https://api.github.com/repos/sulu-io/sulu/subscribers","subscription_url":"https://api.github.com/repos/sulu-io/sulu/subscription","commits_url":"https://api.github.com/repos/sulu-io/sulu/commits{/sha}","git_commits_url":"https://api.github.com/repos/sulu-io/sulu/git/commits{/sha}","comments_url":"https://api.github.com/repos/sulu-io/sulu/comments{/number}","issue_comment_url":"https://api.github.com/repos/sulu-io/sulu/issues/comments{/number}","contents_url":"https://api.github.com/repos/sulu-io/sulu/contents/{+path}","compare_url":"https://api.github.com/repos/sulu-io/sulu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sulu-io/sulu/merges","archive_url":"https://api.github.com/repos/sulu-io/sulu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sulu-io/sulu/downloads","issues_url":"https://api.github.com/repos/sulu-io/sulu/issues{/number}","pulls_url":"https://api.github.com/repos/sulu-io/sulu/pulls{/number}","milestones_url":"https://api.github.com/repos/sulu-io/sulu/milestones{/number}","notifications_url":"https://api.github.com/repos/sulu-io/sulu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sulu-io/sulu/labels{/name}","releases_url":"https://api.github.com/repos/sulu-io/sulu/releases{/id}","created_at":"2013-10-18T12:57:02Z","updated_at":"2015-05-04T07:16:39Z","pushed_at":"2015-05-04T08:33:45Z","git_url":"git://github.com/sulu-io/sulu.git","ssh_url":"git@github.com:sulu-io/sulu.git","clone_url":"https://github.com/sulu-io/sulu.git","svn_url":"https://github.com/sulu-io/sulu","homepage":"www.sulu.io","size":57021,"stargazers_count":28,"watchers_count":28,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":270,"forks":12,"open_issues":270,"watchers":28,"default_branch":"develop"}},"base":{"label":"sulu-io:develop","ref":"develop","sha":"e41bbef7ed36806808175987c8500db8f1d075a0","user":{"login":"sulu-io","id":5717006,"avatar_url":"https://avatars.githubusercontent.com/u/5717006?v=3","gravatar_id":"","url":"https://api.github.com/users/sulu-io","html_url":"https://github.com/sulu-io","followers_url":"https://api.github.com/users/sulu-io/followers","following_url":"https://api.github.com/users/sulu-io/following{/other_user}","gists_url":"https://api.github.com/users/sulu-io/gists{/gist_id}","starred_url":"https://api.github.com/users/sulu-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sulu-io/subscriptions","organizations_url":"https://api.github.com/users/sulu-io/orgs","repos_url":"https://api.github.com/users/sulu-io/repos","events_url":"https://api.github.com/users/sulu-io/events{/privacy}","received_events_url":"https://api.github.com/users/sulu-io/received_events","type":"Organization","site_admin":false},"repo":{"id":13678015,"name":"sulu","full_name":"sulu-io/sulu","owner":{"login":"sulu-io","id":5717006,"avatar_url":"https://avatars.githubusercontent.com/u/5717006?v=3","gravatar_id":"","url":"https://api.github.com/users/sulu-io","html_url":"https://github.com/sulu-io","followers_url":"https://api.github.com/users/sulu-io/followers","following_url":"https://api.github.com/users/sulu-io/following{/other_user}","gists_url":"https://api.github.com/users/sulu-io/gists{/gist_id}","starred_url":"https://api.github.com/users/sulu-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sulu-io/subscriptions","organizations_url":"https://api.github.com/users/sulu-io/orgs","repos_url":"https://api.github.com/users/sulu-io/repos","events_url":"https://api.github.com/users/sulu-io/events{/privacy}","received_events_url":"https://api.github.com/users/sulu-io/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sulu-io/sulu","description":"Sulu 2.0 core bundle & components","fork":false,"url":"https://api.github.com/repos/sulu-io/sulu","forks_url":"https://api.github.com/repos/sulu-io/sulu/forks","keys_url":"https://api.github.com/repos/sulu-io/sulu/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sulu-io/sulu/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sulu-io/sulu/teams","hooks_url":"https://api.github.com/repos/sulu-io/sulu/hooks","issue_events_url":"https://api.github.com/repos/sulu-io/sulu/issues/events{/number}","events_url":"https://api.github.com/repos/sulu-io/sulu/events","assignees_url":"https://api.github.com/repos/sulu-io/sulu/assignees{/user}","branches_url":"https://api.github.com/repos/sulu-io/sulu/branches{/branch}","tags_url":"https://api.github.com/repos/sulu-io/sulu/tags","blobs_url":"https://api.github.com/repos/sulu-io/sulu/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sulu-io/sulu/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sulu-io/sulu/git/refs{/sha}","trees_url":"https://api.github.com/repos/sulu-io/sulu/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sulu-io/sulu/statuses/{sha}","languages_url":"https://api.github.com/repos/sulu-io/sulu/languages","stargazers_url":"https://api.github.com/repos/sulu-io/sulu/stargazers","contributors_url":"https://api.github.com/repos/sulu-io/sulu/contributors","subscribers_url":"https://api.github.com/repos/sulu-io/sulu/subscribers","subscription_url":"https://api.github.com/repos/sulu-io/sulu/subscription","commits_url":"https://api.github.com/repos/sulu-io/sulu/commits{/sha}","git_commits_url":"https://api.github.com/repos/sulu-io/sulu/git/commits{/sha}","comments_url":"https://api.github.com/repos/sulu-io/sulu/comments{/number}","issue_comment_url":"https://api.github.com/repos/sulu-io/sulu/issues/comments{/number}","contents_url":"https://api.github.com/repos/sulu-io/sulu/contents/{+path}","compare_url":"https://api.github.com/repos/sulu-io/sulu/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sulu-io/sulu/merges","archive_url":"https://api.github.com/repos/sulu-io/sulu/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sulu-io/sulu/downloads","issues_url":"https://api.github.com/repos/sulu-io/sulu/issues{/number}","pulls_url":"https://api.github.com/repos/sulu-io/sulu/pulls{/number}","milestones_url":"https://api.github.com/repos/sulu-io/sulu/milestones{/number}","notifications_url":"https://api.github.com/repos/sulu-io/sulu/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sulu-io/sulu/labels{/name}","releases_url":"https://api.github.com/repos/sulu-io/sulu/releases{/id}","created_at":"2013-10-18T12:57:02Z","updated_at":"2015-05-04T07:16:39Z","pushed_at":"2015-05-04T08:33:45Z","git_url":"git://github.com/sulu-io/sulu.git","ssh_url":"git@github.com:sulu-io/sulu.git","clone_url":"https://github.com/sulu-io/sulu.git","svn_url":"https://github.com/sulu-io/sulu","homepage":"www.sulu.io","size":57021,"stargazers_count":28,"watchers_count":28,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":12,"mirror_url":null,"open_issues_count":270,"forks":12,"open_issues":270,"watchers":28,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/939"},"html":{"href":"https://github.com/sulu-io/sulu/pull/939"},"issue":{"href":"https://api.github.com/repos/sulu-io/sulu/issues/939"},"comments":{"href":"https://api.github.com/repos/sulu-io/sulu/issues/939/comments"},"review_comments":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/939/comments"},"review_comment":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sulu-io/sulu/pulls/939/commits"},"statuses":{"href":"https://api.github.com/repos/sulu-io/sulu/statuses/a1513afec311ad25b22e224994350d7ba81ba39a"}}}}