{"action":"created","comment":{"url":"https://api.github.com/repos/opencart/opencart/pulls/comments/37134656","id":37134656,"diff_hunk":"@@ -51,95 +19,153 @@ public function index() {\n \t\t$this->document->setTitle($this->language->get('heading_title'));\n \n \t\tif (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {\n-\t\t\t// Trigger customer pre login event\n-\t\t\t$this->event->trigger('pre.customer.login');\n+\t\t\t$this->processValidPostRequest();\n+\t\t}\n \n-\t\t\t// Unset guest\n-\t\t\tunset($this->session->data['guest']);\n+\t\t$data['breadcrumbs'] = $this->getBreadcrumbs();\n \n-\t\t\t// Restore customers cart\n-\t\t\tif ($this->customer->getCart()) {\n-\t\t\t\tforeach ($this->customer->getCart() as $key => $value) {\n-\t\t\t\t\t$this->cart->add($key, $value);\n-\t\t\t\t}\n-\t\t\t}\n-\t\t\t\n-\t\t\t// Restore customers wish list\n-\t\t\tif ($this->customer->getWishlist()) {\n-\t\t\t\tif (!isset($this->session->data['wishlist'])) {\n-\t\t\t\t\t$this->session->data['wishlist'] = array();\n-\t\t\t\t}\t\t\t\t\n-\t\t\t\t\n-\t\t\t\tforeach ($this->customer->getWishlist() as $product_id) {\n-\t\t\t\t\tif (!in_array($product_id, $this->session->data['wishlist'])) {\n-\t\t\t\t\t\t$this->session->data['wishlist'][] = $product_id;\n-\t\t\t\t\t}\n-\t\t\t\t}\n-\t\t\t}\n-\t\t\t\n-\t\t\t// Default Shipping Address\n-\t\t\t$this->load->model('account/address');\n+\t\t$this->processAdditionalDataParameters($data);\n \n-\t\t\tif ($this->config->get('config_tax_customer') == 'payment') {\n-\t\t\t\t$this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());\n-\t\t\t}\n+\t\tif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/login.tpl')) {\n+\t\t\t$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/login.tpl',  $data));\n+\t\t} else {\n+\t\t\t$this->response->setOutput($this->load->view('default/template/account/login.tpl',  $data));\n+\t\t}\n+\t}\n \n-\t\t\tif ($this->config->get('config_tax_customer') == 'shipping') {\n-\t\t\t\t$this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());\n-\t\t\t}\n-\t\t\t\n-\t\t\t// Add to activity log\n-\t\t\t$this->load->model('account/activity');\n-\n-\t\t\t$activity_data = array(\n-\t\t\t\t'customer_id' => $this->customer->getId(),\n-\t\t\t\t'name'        => $this->customer->getFirstName() . ' ' . $this->customer->getLastName()\n-\t\t\t);\n-\n-\t\t\t$this->model_account_activity->addActivity('login', $activity_data);\n-\t\t\t\n-\t\t\t// Trigger customer post login event\n-\t\t\t$this->event->trigger('post.customer.login');\n-\n-\t\t\t// Added strpos check to pass McAfee PCI compliance test (http://forum.opencart.com/viewtopic.php?f=10&t=12043&p=151494#p151295)\n-\t\t\tif (isset($this->request->post['redirect']) && (strpos($this->request->post['redirect'], $this->config->get('config_url')) !== false || strpos($this->request->post['redirect'], $this->config->get('config_ssl')) !== false)) {\n-\t\t\t\t$this->response->redirect(str_replace('&amp;', '&', $this->request->post['redirect']));\n+\tprotected function validate() {\n+\t\t$this->event->trigger('pre.customer.login');\n+\n+\t\t// Check how many login attempts have been made.\n+\t\t$login_info = $this->model_account_customer->getLoginAttempts($this->request->post['email']);\n+\n+\t\tif ($login_info && ($login_info['total'] >= $this->config->get('config_login_attempts')) && strtotime('-1 hour') < strtotime($login_info['date_modified'])) {\n+\t\t\t$this->error['warning'] = $this->language->get('error_attempts');\n+\t\t}\n+\n+\t\t// Check if customer has been approved.\n+\t\t$customer_info = $this->model_account_customer->getCustomerByEmail($this->request->post['email']);\n+\n+\t\tif ($customer_info && !$customer_info['approved']) {\n+\t\t\t$this->error['warning'] = $this->language->get('error_approved');\n+\t\t}\n+\n+\t\tif (!$this->error) {\n+\t\t\tif (!$this->customer->login($this->request->post['email'],  $this->request->post['password'])) {\n+\t\t\t\t$this->error['warning'] = $this->language->get('error_login');\n+\n+\t\t\t\tif (isset($this->request->post['email']) && !empty($this->request->post['email'])) {\n+\t\t\t\t\t$this->model_account_customer->addLoginAttempt($this->request->post['email']);\n+\t\t\t\t}\n \t\t\t} else {\n-\t\t\t\t$this->response->redirect($this->url->link('account/account', '', 'SSL'));\n+\t\t\t\tif (isset($this->request->post['email']) && !empty($this->request->post['email'])) {\n+\t\t\t\t\t$this->model_account_customer->deleteLoginAttempts($this->request->post['email']);\n+\t\t\t\t}\n \t\t\t}\n \t\t}\n \n-\t\t$data['breadcrumbs'] = array();\n+\t\treturn !$this->error;\n+\t}\n+\n+\t/**\n+\t * @param $data\n+\t */\n+\tprivate function getBreadcrumbs()\n+\t{\n+\t\t$breadcrumbs = array();\n \n-\t\t$data['breadcrumbs'][] = array(\n-\t\t\t'text' => $this->language->get('text_home'),\n+\t\t$breadcrumbs[] = array(\n+\t\t\t'text' => $this->language->get('text_home'), \n \t\t\t'href' => $this->url->link('common/home')\n \t\t);\n \n-\t\t$data['breadcrumbs'][] = array(\n-\t\t\t'text' => $this->language->get('text_account'),\n-\t\t\t'href' => $this->url->link('account/account', '', 'SSL')\n+\t\t$breadcrumbs[] = array(\n+\t\t\t'text' => $this->language->get('text_account'), \n+\t\t\t'href' => $this->url->link('account/account',  '',  'SSL')\n \t\t);\n \n-\t\t$data['breadcrumbs'][] = array(\n-\t\t\t'text' => $this->language->get('text_login'),\n-\t\t\t'href' => $this->url->link('account/login', '', 'SSL')\n+\t\t$breadcrumbs[] = array(\n+\t\t\t'text' => $this->language->get('text_login'), \n+\t\t\t'href' => $this->url->link('account/login',  '',  'SSL')\n \t\t);\n \n-\t\t$data['heading_title'] = $this->language->get('heading_title');\n+\t\treturn $breadcrumbs;\n+\t}\n+\n+\tprivate function overrideAdminLogin() {\n+\t\t$this->customer->logout();\n+\t\t$this->cart->clear();\n+\n+\t\t$vars = 'wishlist, payment_address, payment_method, payment_methods, shipping_address, shipping_method,'\n+\t\t\t. 'shipping_methods, comment, order_id, coupon, reward, voucher, vouchers';\n+\n+\t\t$this->session->unsetVariables($vars);\n+\n+\t\t$customer_info = $this->model_account_customer->getCustomerByToken($this->request->get['token']);\n+\n+\t\tif ($customer_info && $this->customer->login($customer_info['email'], '', true)) {\n+\n+\t\t\t$this->loadDefaultAddress();\n+\n+\t\t\t$this->response->redirect($this->url->link('account/account', '', 'SSL'));\n+\t\t}\n+\t}\n+\n+\tprivate function processValidPostRequest()\n+\t{\n+\t\t$this->event->trigger('pre.customer.login');\n+\n+\t\tunset($this->session->data['guest']);\n \n-\t\t$data['text_new_customer'] = $this->language->get('text_new_customer');\n-\t\t$data['text_register'] = $this->language->get('text_register');\n-\t\t$data['text_register_account'] = $this->language->get('text_register_account');\n-\t\t$data['text_returning_customer'] = $this->language->get('text_returning_customer');\n-\t\t$data['text_i_am_returning_customer'] = $this->language->get('text_i_am_returning_customer');\n-\t\t$data['text_forgotten'] = $this->language->get('text_forgotten');\n+\t\t// Restore customers cart\n+\t\tif ($this->customer->getCart()) {","path":"upload/catalog/controller/account/login.php","position":215,"original_position":215,"commit_id":"f1ca010eba312feb89a6452dc2bf56296bd05721","original_commit_id":"f1ca010eba312feb89a6452dc2bf56296bd05721","user":{"login":"smilesrg","id":576284,"avatar_url":"https://avatars.githubusercontent.com/u/576284?v=3","gravatar_id":"","url":"https://api.github.com/users/smilesrg","html_url":"https://github.com/smilesrg","followers_url":"https://api.github.com/users/smilesrg/followers","following_url":"https://api.github.com/users/smilesrg/following{/other_user}","gists_url":"https://api.github.com/users/smilesrg/gists{/gist_id}","starred_url":"https://api.github.com/users/smilesrg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smilesrg/subscriptions","organizations_url":"https://api.github.com/users/smilesrg/orgs","repos_url":"https://api.github.com/users/smilesrg/repos","events_url":"https://api.github.com/users/smilesrg/events{/privacy}","received_events_url":"https://api.github.com/users/smilesrg/received_events","type":"User","site_admin":false},"body":"This actually can be moved to event","created_at":"2015-08-15T08:49:26Z","updated_at":"2015-08-15T08:49:26Z","html_url":"https://github.com/opencart/opencart/pull/3230#discussion_r37134656","pull_request_url":"https://api.github.com/repos/opencart/opencart/pulls/3230","_links":{"self":{"href":"https://api.github.com/repos/opencart/opencart/pulls/comments/37134656"},"html":{"href":"https://github.com/opencart/opencart/pull/3230#discussion_r37134656"},"pull_request":{"href":"https://api.github.com/repos/opencart/opencart/pulls/3230"}}},"pull_request":{"url":"https://api.github.com/repos/opencart/opencart/pulls/3230","id":41969531,"html_url":"https://github.com/opencart/opencart/pull/3230","diff_url":"https://github.com/opencart/opencart/pull/3230.diff","patch_url":"https://github.com/opencart/opencart/pull/3230.patch","issue_url":"https://api.github.com/repos/opencart/opencart/issues/3230","number":3230,"state":"open","locked":false,"title":"Breaked down login::index() to several methods. Added global variables to templating.","user":{"login":"smilesrg","id":576284,"avatar_url":"https://avatars.githubusercontent.com/u/576284?v=3","gravatar_id":"","url":"https://api.github.com/users/smilesrg","html_url":"https://github.com/smilesrg","followers_url":"https://api.github.com/users/smilesrg/followers","following_url":"https://api.github.com/users/smilesrg/following{/other_user}","gists_url":"https://api.github.com/users/smilesrg/gists{/gist_id}","starred_url":"https://api.github.com/users/smilesrg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smilesrg/subscriptions","organizations_url":"https://api.github.com/users/smilesrg/orgs","repos_url":"https://api.github.com/users/smilesrg/repos","events_url":"https://api.github.com/users/smilesrg/events{/privacy}","received_events_url":"https://api.github.com/users/smilesrg/received_events","type":"User","site_admin":false},"body":"In this PR I did the following:\r\n\r\n* Break login::index() to several methods. This can help to understand what's going on during the login process, also it could be easier to maintain/make changes.\r\n* There is no need to set $data with language strings: language string can be retrieved in the template by calling ```$lng->get('language_string')```. So all code pieces like ```$data['entry_email'] = $this->language->get('entry_email');``` have been removed from controller.\r\n* Also, ```url``` ```load``` and ```request``` services have been added.\r\n* POST variables can be retrieved directly in the template by calling ```$request->post('variable_name', 'default_value');``` or just ```$request->post('variable_name')```\r\nAll code pieces like below have been removed\r\n```php\r\nif (isset($this->request->post['email'])) {\r\n    $data['email'] = $this->request->post['email'];\r\n} else {\r\n\t$data['email'] = '';\r\n}\r\n ```\r\n","created_at":"2015-08-09T12:10:27Z","updated_at":"2015-08-15T08:49:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2245d585ab58833c659093c466e1eba7b21d0ca0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/opencart/opencart/pulls/3230/commits","review_comments_url":"https://api.github.com/repos/opencart/opencart/pulls/3230/comments","review_comment_url":"https://api.github.com/repos/opencart/opencart/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opencart/opencart/issues/3230/comments","statuses_url":"https://api.github.com/repos/opencart/opencart/statuses/f1ca010eba312feb89a6452dc2bf56296bd05721","head":{"label":"forkedcart:master","ref":"master","sha":"f1ca010eba312feb89a6452dc2bf56296bd05721","user":{"login":"forkedcart","id":13658703,"avatar_url":"https://avatars.githubusercontent.com/u/13658703?v=3","gravatar_id":"","url":"https://api.github.com/users/forkedcart","html_url":"https://github.com/forkedcart","followers_url":"https://api.github.com/users/forkedcart/followers","following_url":"https://api.github.com/users/forkedcart/following{/other_user}","gists_url":"https://api.github.com/users/forkedcart/gists{/gist_id}","starred_url":"https://api.github.com/users/forkedcart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forkedcart/subscriptions","organizations_url":"https://api.github.com/users/forkedcart/orgs","repos_url":"https://api.github.com/users/forkedcart/repos","events_url":"https://api.github.com/users/forkedcart/events{/privacy}","received_events_url":"https://api.github.com/users/forkedcart/received_events","type":"Organization","site_admin":false},"repo":{"id":40240311,"name":"opencart","full_name":"forkedcart/opencart","owner":{"login":"forkedcart","id":13658703,"avatar_url":"https://avatars.githubusercontent.com/u/13658703?v=3","gravatar_id":"","url":"https://api.github.com/users/forkedcart","html_url":"https://github.com/forkedcart","followers_url":"https://api.github.com/users/forkedcart/followers","following_url":"https://api.github.com/users/forkedcart/following{/other_user}","gists_url":"https://api.github.com/users/forkedcart/gists{/gist_id}","starred_url":"https://api.github.com/users/forkedcart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forkedcart/subscriptions","organizations_url":"https://api.github.com/users/forkedcart/orgs","repos_url":"https://api.github.com/users/forkedcart/repos","events_url":"https://api.github.com/users/forkedcart/events{/privacy}","received_events_url":"https://api.github.com/users/forkedcart/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/forkedcart/opencart","description":"A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.","fork":true,"url":"https://api.github.com/repos/forkedcart/opencart","forks_url":"https://api.github.com/repos/forkedcart/opencart/forks","keys_url":"https://api.github.com/repos/forkedcart/opencart/keys{/key_id}","collaborators_url":"https://api.github.com/repos/forkedcart/opencart/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/forkedcart/opencart/teams","hooks_url":"https://api.github.com/repos/forkedcart/opencart/hooks","issue_events_url":"https://api.github.com/repos/forkedcart/opencart/issues/events{/number}","events_url":"https://api.github.com/repos/forkedcart/opencart/events","assignees_url":"https://api.github.com/repos/forkedcart/opencart/assignees{/user}","branches_url":"https://api.github.com/repos/forkedcart/opencart/branches{/branch}","tags_url":"https://api.github.com/repos/forkedcart/opencart/tags","blobs_url":"https://api.github.com/repos/forkedcart/opencart/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/forkedcart/opencart/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/forkedcart/opencart/git/refs{/sha}","trees_url":"https://api.github.com/repos/forkedcart/opencart/git/trees{/sha}","statuses_url":"https://api.github.com/repos/forkedcart/opencart/statuses/{sha}","languages_url":"https://api.github.com/repos/forkedcart/opencart/languages","stargazers_url":"https://api.github.com/repos/forkedcart/opencart/stargazers","contributors_url":"https://api.github.com/repos/forkedcart/opencart/contributors","subscribers_url":"https://api.github.com/repos/forkedcart/opencart/subscribers","subscription_url":"https://api.github.com/repos/forkedcart/opencart/subscription","commits_url":"https://api.github.com/repos/forkedcart/opencart/commits{/sha}","git_commits_url":"https://api.github.com/repos/forkedcart/opencart/git/commits{/sha}","comments_url":"https://api.github.com/repos/forkedcart/opencart/comments{/number}","issue_comment_url":"https://api.github.com/repos/forkedcart/opencart/issues/comments{/number}","contents_url":"https://api.github.com/repos/forkedcart/opencart/contents/{+path}","compare_url":"https://api.github.com/repos/forkedcart/opencart/compare/{base}...{head}","merges_url":"https://api.github.com/repos/forkedcart/opencart/merges","archive_url":"https://api.github.com/repos/forkedcart/opencart/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/forkedcart/opencart/downloads","issues_url":"https://api.github.com/repos/forkedcart/opencart/issues{/number}","pulls_url":"https://api.github.com/repos/forkedcart/opencart/pulls{/number}","milestones_url":"https://api.github.com/repos/forkedcart/opencart/milestones{/number}","notifications_url":"https://api.github.com/repos/forkedcart/opencart/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/forkedcart/opencart/labels{/name}","releases_url":"https://api.github.com/repos/forkedcart/opencart/releases{/id}","created_at":"2015-08-05T10:52:00Z","updated_at":"2015-08-05T12:14:19Z","pushed_at":"2015-08-10T05:28:29Z","git_url":"git://github.com/forkedcart/opencart.git","ssh_url":"git@github.com:forkedcart/opencart.git","clone_url":"https://github.com/forkedcart/opencart.git","svn_url":"https://github.com/forkedcart/opencart","homepage":"http://www.opencart.com","size":56184,"stargazers_count":2,"watchers_count":2,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"opencart:master","ref":"master","sha":"f8761251f6ffe3654408ec9bd2a90ac6498d7707","user":{"login":"opencart","id":214225,"avatar_url":"https://avatars.githubusercontent.com/u/214225?v=3","gravatar_id":"","url":"https://api.github.com/users/opencart","html_url":"https://github.com/opencart","followers_url":"https://api.github.com/users/opencart/followers","following_url":"https://api.github.com/users/opencart/following{/other_user}","gists_url":"https://api.github.com/users/opencart/gists{/gist_id}","starred_url":"https://api.github.com/users/opencart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opencart/subscriptions","organizations_url":"https://api.github.com/users/opencart/orgs","repos_url":"https://api.github.com/users/opencart/repos","events_url":"https://api.github.com/users/opencart/events{/privacy}","received_events_url":"https://api.github.com/users/opencart/received_events","type":"Organization","site_admin":false},"repo":{"id":2141186,"name":"opencart","full_name":"opencart/opencart","owner":{"login":"opencart","id":214225,"avatar_url":"https://avatars.githubusercontent.com/u/214225?v=3","gravatar_id":"","url":"https://api.github.com/users/opencart","html_url":"https://github.com/opencart","followers_url":"https://api.github.com/users/opencart/followers","following_url":"https://api.github.com/users/opencart/following{/other_user}","gists_url":"https://api.github.com/users/opencart/gists{/gist_id}","starred_url":"https://api.github.com/users/opencart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opencart/subscriptions","organizations_url":"https://api.github.com/users/opencart/orgs","repos_url":"https://api.github.com/users/opencart/repos","events_url":"https://api.github.com/users/opencart/events{/privacy}","received_events_url":"https://api.github.com/users/opencart/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/opencart/opencart","description":"A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.","fork":false,"url":"https://api.github.com/repos/opencart/opencart","forks_url":"https://api.github.com/repos/opencart/opencart/forks","keys_url":"https://api.github.com/repos/opencart/opencart/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opencart/opencart/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opencart/opencart/teams","hooks_url":"https://api.github.com/repos/opencart/opencart/hooks","issue_events_url":"https://api.github.com/repos/opencart/opencart/issues/events{/number}","events_url":"https://api.github.com/repos/opencart/opencart/events","assignees_url":"https://api.github.com/repos/opencart/opencart/assignees{/user}","branches_url":"https://api.github.com/repos/opencart/opencart/branches{/branch}","tags_url":"https://api.github.com/repos/opencart/opencart/tags","blobs_url":"https://api.github.com/repos/opencart/opencart/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opencart/opencart/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opencart/opencart/git/refs{/sha}","trees_url":"https://api.github.com/repos/opencart/opencart/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opencart/opencart/statuses/{sha}","languages_url":"https://api.github.com/repos/opencart/opencart/languages","stargazers_url":"https://api.github.com/repos/opencart/opencart/stargazers","contributors_url":"https://api.github.com/repos/opencart/opencart/contributors","subscribers_url":"https://api.github.com/repos/opencart/opencart/subscribers","subscription_url":"https://api.github.com/repos/opencart/opencart/subscription","commits_url":"https://api.github.com/repos/opencart/opencart/commits{/sha}","git_commits_url":"https://api.github.com/repos/opencart/opencart/git/commits{/sha}","comments_url":"https://api.github.com/repos/opencart/opencart/comments{/number}","issue_comment_url":"https://api.github.com/repos/opencart/opencart/issues/comments{/number}","contents_url":"https://api.github.com/repos/opencart/opencart/contents/{+path}","compare_url":"https://api.github.com/repos/opencart/opencart/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opencart/opencart/merges","archive_url":"https://api.github.com/repos/opencart/opencart/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opencart/opencart/downloads","issues_url":"https://api.github.com/repos/opencart/opencart/issues{/number}","pulls_url":"https://api.github.com/repos/opencart/opencart/pulls{/number}","milestones_url":"https://api.github.com/repos/opencart/opencart/milestones{/number}","notifications_url":"https://api.github.com/repos/opencart/opencart/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opencart/opencart/labels{/name}","releases_url":"https://api.github.com/repos/opencart/opencart/releases{/id}","created_at":"2011-08-02T07:32:17Z","updated_at":"2015-08-14T21:50:37Z","pushed_at":"2015-08-14T17:50:51Z","git_url":"git://github.com/opencart/opencart.git","ssh_url":"git@github.com:opencart/opencart.git","clone_url":"https://github.com/opencart/opencart.git","svn_url":"https://github.com/opencart/opencart","homepage":"http://www.opencart.com","size":88384,"stargazers_count":1997,"watchers_count":1997,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1925,"mirror_url":null,"open_issues_count":74,"forks":1925,"open_issues":74,"watchers":1997,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opencart/opencart/pulls/3230"},"html":{"href":"https://github.com/opencart/opencart/pull/3230"},"issue":{"href":"https://api.github.com/repos/opencart/opencart/issues/3230"},"comments":{"href":"https://api.github.com/repos/opencart/opencart/issues/3230/comments"},"review_comments":{"href":"https://api.github.com/repos/opencart/opencart/pulls/3230/comments"},"review_comment":{"href":"https://api.github.com/repos/opencart/opencart/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opencart/opencart/pulls/3230/commits"},"statuses":{"href":"https://api.github.com/repos/opencart/opencart/statuses/f1ca010eba312feb89a6452dc2bf56296bd05721"}}}}