{"action":"created","comment":{"url":"https://api.github.com/repos/pkp/ojs/pulls/comments/40329401","id":40329401,"diff_hunk":"@@ -94,346 +207,72 @@ function setBreadcrumbs() {\n \t */\n \tfunction display(&$args, &$request) {\n \t\tparent::display($args, $request);\n+\t\t// We need these constants\n+\t\timport('classes.statistics.StatisticsHelper');\n \n-\t\t$journal =& $request->getJournal();\n \t\tif (!Validation::isSiteAdmin()) {\n \t\t\tValidation::redirectLogin();\n \t\t}\n \n \t\t$this->setBreadcrumbs();\n+\t\t$available = $this->getValidReports();\n+\t\t$years = $this->_getYears();\n \t\tif ($request->getUserVar('type')) {\n-\t\t\t$oldStats = (boolean) $request->getUserVar('useOldCounterStats');\n-\t\t\t$year = (string) $request->getUserVar('year');\n \t\t\t$type = (string) $request->getUserVar('type');\n+\t\t\t$errormessage = '';\n \t\t\tswitch ($type) {\n \t\t\t\tcase 'report':\n-\t\t\t\t\t$this->_report($request, $year, $oldStats);\n-\t\t\t\t\tbreak;\n \t\t\t\tcase 'reportxml':\n-\t\t\t\t\t$this->_reportXml($request, $year, $oldStats);\n-\t\t\t\t\tbreak;\n-\t\t\t\tcase 'sushixml':\n-\t\t\t\t\t$this->_sushiXML($oldStats);\n-\t\t\t\t\tbreak;\n-\t\t\t}\n-\t\t} else {\n-\t\t\t$years = $this->_getYears();\n-\t\t\t$legacyYears = $this->_getYears(true);\n-\t\t\t$templateManager =& TemplateManager::getManager();\n-\t\t\t$templateManager->assign('years', $years);\n-\t\t\tif (!empty($legacyYears)) $templateManager->assign('legacyYears', $legacyYears);\n-\t\t\t$templateManager->display($this->getTemplatePath() . 'index.tpl');\n-\t\t}\n-\t}\n-\n-\t/**\n-\t * Generate a report file.\n-\t * @param $request PKPRequest\n-\t * @param $year string\n-\t */\n-\tfunction _report(&$request, $year, $useLegacyStats) {\n-\t\t$journal =& $request->getJournal();\n-\t\tlist($begin, $end) = $this->_getLimitDates($year);\n-\n-\t\theader('content-type: text/comma-separated-values');\n-\t\theader('content-disposition: attachment; filename=counter-' . date('Ymd') . '.csv');\n-\n-\t\t$fp = fopen('php://output', 'wt');\n-\t\tString::fputcsv($fp, array(__('plugins.reports.counter.1a.title1')));\n-\t\tString::fputcsv($fp, array(__('plugins.reports.counter.1a.title2', array('year' => $year))));\n-\t\tString::fputcsv($fp, array()); // FIXME: Criteria should be here?\n-\t\tString::fputcsv($fp, array(__('plugins.reports.counter.1a.dateRun')));\n-\t\tString::fputcsv($fp, array(strftime(\"%Y-%m-%d\")));\n-\n-\t\t$cols = array(\n-\t\t\t\t'',\n-\t\t__('plugins.reports.counter.1a.publisher'),\n-\t\t__('plugins.reports.counter.1a.platform'),\n-\t\t__('plugins.reports.counter.1a.printIssn'),\n-\t\t__('plugins.reports.counter.1a.onlineIssn')\n-\t\t);\n-\t\tfor ($i=1; $i<=12; $i++) {\n-\t\t\t$time = strtotime($year . '-' . $i . '-01');\n-\t\t\tstrftime('%b', $time);\n-\t\t\t$cols[] = strftime('%b-%Y', $time);\n-\t\t}\n-\n-\t\t$cols[] = __('plugins.reports.counter.1a.ytdTotal');\n-\t\t$cols[] = __('plugins.reports.counter.1a.ytdHtml');\n-\t\t$cols[] = __('plugins.reports.counter.1a.ytdPdf');\n-\t\tfputcsv($fp, $cols);\n-\n-\t\t// Display the totals first\n-\t\t$totals = $this->_getMonthlyTotalRange($begin, $end, $useLegacyStats);\n-\t\t$cols = array(\n-\t\t__('plugins.reports.counter.1a.totalForAllJournals'),\n-\t\t\t\t'-', // Publisher\n-\t\t\t\t'', // Platform\n-\t\t\t\t'-',\n-\t\t\t\t'-'\n-\t\t);\n-\t\t$this->_formColumns($cols, $totals);\n-\t\tfputcsv($fp, $cols);\n-\n-\t\t// Get statistics from the log.\n-\t\t$journalDao =& DAORegistry::getDAO('JournalDAO');\n-\t\t$journalIds = $this->_getJournalIds($useLegacyStats);\n-\t\tforeach ($journalIds as $journalId) {\n-\t\t\t$journal =& $journalDao->getById($journalId);\n-\t\t\tif (!$journal) continue;\n-\t\t\t$entries = $this->_getMonthlyLogRange($journalId, $begin, $end, $useLegacyStats);\n-\t\t\t$cols = array(\n-\t\t\t\t$journal->getLocalizedTitle(),\n-\t\t\t\t$journal->getSetting('publisherInstitution'),\n-\t\t\t\t'Open Journal Systems', // Platform\n-\t\t\t\t$journal->getSetting('printIssn'),\n-\t\t\t\t$journal->getSetting('onlineIssn')\n-\t\t\t);\n-\t\t\t$this->_formColumns($cols, $entries);\n-\t\t\tfputcsv($fp, $cols);\n-\t\t\tunset($journal, $entry);\n-\t\t}\n-\n-\t\tfclose($fp);\n-\t}\n-\n-\t/**\n-\t *\n-\t * Counter report in XML\n-\t * @param $request PKPRequest\n-\t * @param $year string\n-\t * @param $useLegacyStats boolean\n-\t */\n-\tfunction _reportXML(&$request, $year, $useLegacyStats) {\n-\t\t$templateManager =& TemplateManager::getManager();\n-\t\tlist($begin, $end) = $this->_getLimitDates($year);\n-\n-\t\t$this->_assignTemplateCounterXML($templateManager, $begin, $end, $useLegacyStats);\n-\t\t$templateManager->display($this->getTemplatePath() . 'reportxml.tpl', 'text/xml');\n-\t}\n-\n-\t/**\n-\t * SUSHI report\n-\t * @param $useLegacyStats boolean\n-\t*/\n-\tfunction _sushiXML($useLegacyStats) {\n-\t\t$templateManager =& TemplateManager::getManager();\n-\n-\t\t$SOAPRequest = file_get_contents('php://input');\n-\n-\t\t// crude handling of namespaces in the input\n-\t\t// FIXME: only the last prefix in the input will be used for each namespace\n-\t\t$soapEnvPrefix='';\n-\t\t$sushiPrefix='';\n-\t\t$counterPrefix='';\n-\n-\t\t$re = '/xmlns:([^=]+)=\"([^\"]+)\"/';\n-\t\tpreg_match_all($re, $SOAPRequest, $mat, PREG_SET_ORDER);\n-\n-\t\tforeach ($mat as $xmlns) {\n-\t\t\t$modURI = $xmlns[2];\n-\t\t\tif ((strrpos($modURI, '/')+1) == strlen($modURI)) $modURI = substr($modURI, 0, -1);\n-\t\t\tswitch ($modURI) {\n-\t\t\t\tcase 'http://schemas.xmlsoap.org/soap/envelope':\n-\t\t\t\t\t$soapEnvPrefix = $xmlns[1];\n-\t\t\t\t\tbreak;\n-\t\t\t\tcase 'http://www.niso.org/schemas/sushi':\n-\t\t\t\t\t$sushiPrefix = $xmlns[1];\n-\t\t\t\t\tbreak;\n-\t\t\t\tcase 'http://www.niso.org/schemas/sushi/counter':\n-\t\t\t\t\t$counterPrefix = $xmlns[1];\n-\t\t\t\t\tbreak;\n-\t\t\t}\n-\t\t}\n-\n-\t\tif (strlen($soapEnvPrefix)>0) $soapEnvPrefix .= ':';\n-\t\tif (strlen($sushiPrefix)>0)   $sushiPrefix .= ':';\n-\t\tif (strlen($counterPrefix)>0) $counterPrefix .= ':';\n-\n-\t\t$parser = new XMLParser();\n-\t\t$tree = $parser->parseText($SOAPRequest);\n-\t\t$parser->destroy(); // is this necessary?\n-\n-\t\tif (!$tree) {\n-\t\t\t$templateManager->assign('Faultcode', 'Client');\n-\t\t\t$templateManager->assign('Faultstring', 'The parser was unable to parse the input.');\n-\t\t\theader(\"HTTP/1.0 500 Internal Server Error\");\n-\t\t\t$templateManager->display($this->getTemplatePath() . 'soaperror.tpl', 'text/xml');\n-\t\t} else {\n-\n-\t\t\t$reportRequestNode = $tree->getChildByName($soapEnvPrefix.'Body')->getChildByName($counterPrefix.'ReportRequest');\n-\n-\t\t\t$requestorID = $reportRequestNode->getChildByName($sushiPrefix.'Requestor')->getChildByName($sushiPrefix.'ID')->getValue();\n-\t\t\t$requestorName = $reportRequestNode->getChildByName($sushiPrefix.'Requestor')->getChildByName($sushiPrefix.'Name')->getValue();\n-\t\t\t$requestorEmail = $reportRequestNode->getChildByName($sushiPrefix.'Requestor')->getChildByName($sushiPrefix.'Email')->getValue();\n-\n-\t\t\t$customerReferenceID = $reportRequestNode->getChildByName($sushiPrefix.'CustomerReference')->getChildByName($sushiPrefix.'ID')->getValue();\n-\n-\t\t\t$reportName = $reportRequestNode->getChildByName($sushiPrefix.'ReportDefinition')->getAttribute('Name');\n-\t\t\t$reportRelease = $reportRequestNode->getChildByName($sushiPrefix.'ReportDefinition')->getAttribute('Release');\n-\n-\t\t\t$usageDateRange = $reportRequestNode->getChildByName($sushiPrefix.'ReportDefinition')->getChildByName($sushiPrefix.'Filters')->getChildByName($sushiPrefix.'UsageDateRange');\n-\t\t\t$usageDateBegin = $usageDateRange->getChildByName($sushiPrefix.'Begin')->getValue();\n-\t\t\t$usageDateEnd = $usageDateRange->getChildByName($sushiPrefix.'End')->getValue();\n-\n-\n-\t\t\t$this->_assignTemplateCounterXML($templateManager, $usageDateBegin, $usageDateEnd, $useLegacyStats);\n-\n-\t\t\t$templateManager->assign('requestorID', $requestorID);\n-\t\t\t$templateManager->assign('requestorName', $requestorName);\n-\t\t\t$templateManager->assign('requestorEmail', $requestorEmail);\n-\t\t\t$templateManager->assign('customerReferenceID', $customerReferenceID);\n-\t\t\t$templateManager->assign('reportName', $reportName);\n-\t\t\t$templateManager->assign('reportRelease', $reportRelease);\n-\t\t\t$templateManager->assign('usageDateBegin', $usageDateBegin);\n-\t\t\t$templateManager->assign('usageDateEnd', $usageDateEnd);\n-\n-\t\t\t$templateManager->assign('templatePath', $this->getTemplatePath());\n-\n-\t\t\t$templateManager->display($this->getTemplatePath() . 'sushixml.tpl', 'text/xml');\n-\t\t}\n-\t}\n-\n-\t/**\n-\t* Internal function to form some of the CSV columns\n-\t*/\n-\tfunction _formColumns(&$cols, $entries) {\n-\t\t$allMonthsTotal = 0;\n-\t\t$currTotal = 0;\n-\t\t$htmlTotal = 0;\n-\t\t$pdfTotal = 0;\n-\t\tfor ($i = 1; $i <= 12; $i++) {\n-\t\t\t$currTotal = 0;\n-\t\t\tforeach ($entries as $entry) {\n-\t\t\t\t$month = (int) substr($entry[STATISTICS_DIMENSION_MONTH], 4, 2);\n-\t\t\t\tif ($i== $month) {\n-\t\t\t\t\t$metric = $entry[STATISTICS_METRIC];\n-\t\t\t\t\t$currTotal += $metric;\n-\t\t\t\t\tif ($entry[STATISTICS_DIMENSION_FILE_TYPE] == STATISTICS_FILE_TYPE_HTML) {\n-\t\t\t\t\t\t$htmlTotal += $metric;\n-\t\t\t\t\t} else if ($entry[STATISTICS_DIMENSION_FILE_TYPE] == STATISTICS_FILE_TYPE_PDF) {\n-\t\t\t\t\t\t$pdfTotal += $metric;\n+\t\t\t\t\t// Legacy COUNTER Release 3\n+\t\t\t\t\timport('plugins.reports.counter.classes.reports.JR1_r3_0');\n+\t\t\t\t\t$r3jr1 = new JR1_r3_0('reports', $this->getName());\n+\t\t\t\t\t$r3jr1->_display($request);\n+\t\t\t\t\treturn;\n+\t\t\t\tcase 'fetch':\n+\t\t\t\t\t// Modern COUNTER Releases\n+\t\t\t\t\t// must provide a release, report, and year parameter\n+\t\t\t\t\tif ($request->getUserVar('release') && $request->getUserVar('report') && $request->getUserVar('year')) {","path":"plugins/reports/counter/CounterReportPlugin.inc.php","position":370,"original_position":370,"commit_id":"7eb59e56579fbee560efa7197abd62b26534b69d","original_commit_id":"7eb59e56579fbee560efa7197abd62b26534b69d","user":{"login":"ctgraham","id":7001322,"avatar_url":"https://avatars.githubusercontent.com/u/7001322?v=3","gravatar_id":"","url":"https://api.github.com/users/ctgraham","html_url":"https://github.com/ctgraham","followers_url":"https://api.github.com/users/ctgraham/followers","following_url":"https://api.github.com/users/ctgraham/following{/other_user}","gists_url":"https://api.github.com/users/ctgraham/gists{/gist_id}","starred_url":"https://api.github.com/users/ctgraham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ctgraham/subscriptions","organizations_url":"https://api.github.com/users/ctgraham/orgs","repos_url":"https://api.github.com/users/ctgraham/repos","events_url":"https://api.github.com/users/ctgraham/events{/privacy}","received_events_url":"https://api.github.com/users/ctgraham/received_events","type":"User","site_admin":false},"body":"Cleaning up.","created_at":"2015-09-24T15:04:34Z","updated_at":"2015-09-24T15:04:34Z","html_url":"https://github.com/pkp/ojs/pull/535#discussion_r40329401","pull_request_url":"https://api.github.com/repos/pkp/ojs/pulls/535","_links":{"self":{"href":"https://api.github.com/repos/pkp/ojs/pulls/comments/40329401"},"html":{"href":"https://github.com/pkp/ojs/pull/535#discussion_r40329401"},"pull_request":{"href":"https://api.github.com/repos/pkp/ojs/pulls/535"}}},"pull_request":{"url":"https://api.github.com/repos/pkp/ojs/pulls/535","id":39592104,"html_url":"https://github.com/pkp/ojs/pull/535","diff_url":"https://github.com/pkp/ojs/pull/535.diff","patch_url":"https://github.com/pkp/ojs/pull/535.patch","issue_url":"https://api.github.com/repos/pkp/ojs/issues/535","number":535,"state":"open","locked":false,"title":"pkp/pkp-lib#739 Create new Release/Report class structure in Counter plugin; Add COUNTER class.","user":{"login":"ctgraham","id":7001322,"avatar_url":"https://avatars.githubusercontent.com/u/7001322?v=3","gravatar_id":"","url":"https://api.github.com/users/ctgraham","html_url":"https://github.com/ctgraham","followers_url":"https://api.github.com/users/ctgraham/followers","following_url":"https://api.github.com/users/ctgraham/following{/other_user}","gists_url":"https://api.github.com/users/ctgraham/gists{/gist_id}","starred_url":"https://api.github.com/users/ctgraham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ctgraham/subscriptions","organizations_url":"https://api.github.com/users/ctgraham/orgs","repos_url":"https://api.github.com/users/ctgraham/repos","events_url":"https://api.github.com/users/ctgraham/events{/privacy}","received_events_url":"https://api.github.com/users/ctgraham/received_events","type":"User","site_admin":false},"body":"This abstracts the counter plugin to allow multiple COUNTER releases and reports.  Release 4.1 of JR1 and AR1 are provided as examples.\r\n\r\nThis provides the foundation for SUSHI-Lite calls via the forthcoming SUSHI-Lite plugin:\r\nhttps://github.com/ulsdevteam/ojs-sushiLite-plugin\r\n","created_at":"2015-07-09T14:56:03Z","updated_at":"2015-09-24T15:04:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"936911c93468c2558be3c3541492cf18d7d4a531","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/pkp/ojs/pulls/535/commits","review_comments_url":"https://api.github.com/repos/pkp/ojs/pulls/535/comments","review_comment_url":"https://api.github.com/repos/pkp/ojs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pkp/ojs/issues/535/comments","statuses_url":"https://api.github.com/repos/pkp/ojs/statuses/7eb59e56579fbee560efa7197abd62b26534b69d","head":{"label":"ulsdevteam:refactor-counter-reports","ref":"refactor-counter-reports","sha":"7eb59e56579fbee560efa7197abd62b26534b69d","user":{"login":"ulsdevteam","id":2464639,"avatar_url":"https://avatars.githubusercontent.com/u/2464639?v=3","gravatar_id":"","url":"https://api.github.com/users/ulsdevteam","html_url":"https://github.com/ulsdevteam","followers_url":"https://api.github.com/users/ulsdevteam/followers","following_url":"https://api.github.com/users/ulsdevteam/following{/other_user}","gists_url":"https://api.github.com/users/ulsdevteam/gists{/gist_id}","starred_url":"https://api.github.com/users/ulsdevteam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ulsdevteam/subscriptions","organizations_url":"https://api.github.com/users/ulsdevteam/orgs","repos_url":"https://api.github.com/users/ulsdevteam/repos","events_url":"https://api.github.com/users/ulsdevteam/events{/privacy}","received_events_url":"https://api.github.com/users/ulsdevteam/received_events","type":"Organization","site_admin":false},"repo":{"id":6031859,"name":"ojs","full_name":"ulsdevteam/ojs","owner":{"login":"ulsdevteam","id":2464639,"avatar_url":"https://avatars.githubusercontent.com/u/2464639?v=3","gravatar_id":"","url":"https://api.github.com/users/ulsdevteam","html_url":"https://github.com/ulsdevteam","followers_url":"https://api.github.com/users/ulsdevteam/followers","following_url":"https://api.github.com/users/ulsdevteam/following{/other_user}","gists_url":"https://api.github.com/users/ulsdevteam/gists{/gist_id}","starred_url":"https://api.github.com/users/ulsdevteam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ulsdevteam/subscriptions","organizations_url":"https://api.github.com/users/ulsdevteam/orgs","repos_url":"https://api.github.com/users/ulsdevteam/repos","events_url":"https://api.github.com/users/ulsdevteam/events{/privacy}","received_events_url":"https://api.github.com/users/ulsdevteam/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ulsdevteam/ojs","description":"Open Journal System","fork":true,"url":"https://api.github.com/repos/ulsdevteam/ojs","forks_url":"https://api.github.com/repos/ulsdevteam/ojs/forks","keys_url":"https://api.github.com/repos/ulsdevteam/ojs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ulsdevteam/ojs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ulsdevteam/ojs/teams","hooks_url":"https://api.github.com/repos/ulsdevteam/ojs/hooks","issue_events_url":"https://api.github.com/repos/ulsdevteam/ojs/issues/events{/number}","events_url":"https://api.github.com/repos/ulsdevteam/ojs/events","assignees_url":"https://api.github.com/repos/ulsdevteam/ojs/assignees{/user}","branches_url":"https://api.github.com/repos/ulsdevteam/ojs/branches{/branch}","tags_url":"https://api.github.com/repos/ulsdevteam/ojs/tags","blobs_url":"https://api.github.com/repos/ulsdevteam/ojs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ulsdevteam/ojs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ulsdevteam/ojs/git/refs{/sha}","trees_url":"https://api.github.com/repos/ulsdevteam/ojs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ulsdevteam/ojs/statuses/{sha}","languages_url":"https://api.github.com/repos/ulsdevteam/ojs/languages","stargazers_url":"https://api.github.com/repos/ulsdevteam/ojs/stargazers","contributors_url":"https://api.github.com/repos/ulsdevteam/ojs/contributors","subscribers_url":"https://api.github.com/repos/ulsdevteam/ojs/subscribers","subscription_url":"https://api.github.com/repos/ulsdevteam/ojs/subscription","commits_url":"https://api.github.com/repos/ulsdevteam/ojs/commits{/sha}","git_commits_url":"https://api.github.com/repos/ulsdevteam/ojs/git/commits{/sha}","comments_url":"https://api.github.com/repos/ulsdevteam/ojs/comments{/number}","issue_comment_url":"https://api.github.com/repos/ulsdevteam/ojs/issues/comments{/number}","contents_url":"https://api.github.com/repos/ulsdevteam/ojs/contents/{+path}","compare_url":"https://api.github.com/repos/ulsdevteam/ojs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ulsdevteam/ojs/merges","archive_url":"https://api.github.com/repos/ulsdevteam/ojs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ulsdevteam/ojs/downloads","issues_url":"https://api.github.com/repos/ulsdevteam/ojs/issues{/number}","pulls_url":"https://api.github.com/repos/ulsdevteam/ojs/pulls{/number}","milestones_url":"https://api.github.com/repos/ulsdevteam/ojs/milestones{/number}","notifications_url":"https://api.github.com/repos/ulsdevteam/ojs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ulsdevteam/ojs/labels{/name}","releases_url":"https://api.github.com/repos/ulsdevteam/ojs/releases{/id}","created_at":"2012-10-01T15:28:38Z","updated_at":"2015-03-06T15:58:49Z","pushed_at":"2015-09-18T18:30:54Z","git_url":"git://github.com/ulsdevteam/ojs.git","ssh_url":"git@github.com:ulsdevteam/ojs.git","clone_url":"https://github.com/ulsdevteam/ojs.git","svn_url":"https://github.com/ulsdevteam/ojs","homepage":"http://pkp.sfu.ca/ojs","size":105518,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"uls-install"}},"base":{"label":"pkp:ojs-dev-2_4","ref":"ojs-dev-2_4","sha":"1f978f66cb6461441b2b71fe42d4d0a70193e557","user":{"login":"pkp","id":130896,"avatar_url":"https://avatars.githubusercontent.com/u/130896?v=3","gravatar_id":"","url":"https://api.github.com/users/pkp","html_url":"https://github.com/pkp","followers_url":"https://api.github.com/users/pkp/followers","following_url":"https://api.github.com/users/pkp/following{/other_user}","gists_url":"https://api.github.com/users/pkp/gists{/gist_id}","starred_url":"https://api.github.com/users/pkp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkp/subscriptions","organizations_url":"https://api.github.com/users/pkp/orgs","repos_url":"https://api.github.com/users/pkp/repos","events_url":"https://api.github.com/users/pkp/events{/privacy}","received_events_url":"https://api.github.com/users/pkp/received_events","type":"Organization","site_admin":false},"repo":{"id":375152,"name":"ojs","full_name":"pkp/ojs","owner":{"login":"pkp","id":130896,"avatar_url":"https://avatars.githubusercontent.com/u/130896?v=3","gravatar_id":"","url":"https://api.github.com/users/pkp","html_url":"https://github.com/pkp","followers_url":"https://api.github.com/users/pkp/followers","following_url":"https://api.github.com/users/pkp/following{/other_user}","gists_url":"https://api.github.com/users/pkp/gists{/gist_id}","starred_url":"https://api.github.com/users/pkp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pkp/subscriptions","organizations_url":"https://api.github.com/users/pkp/orgs","repos_url":"https://api.github.com/users/pkp/repos","events_url":"https://api.github.com/users/pkp/events{/privacy}","received_events_url":"https://api.github.com/users/pkp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pkp/ojs","description":"Open Journal Systems","fork":false,"url":"https://api.github.com/repos/pkp/ojs","forks_url":"https://api.github.com/repos/pkp/ojs/forks","keys_url":"https://api.github.com/repos/pkp/ojs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pkp/ojs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pkp/ojs/teams","hooks_url":"https://api.github.com/repos/pkp/ojs/hooks","issue_events_url":"https://api.github.com/repos/pkp/ojs/issues/events{/number}","events_url":"https://api.github.com/repos/pkp/ojs/events","assignees_url":"https://api.github.com/repos/pkp/ojs/assignees{/user}","branches_url":"https://api.github.com/repos/pkp/ojs/branches{/branch}","tags_url":"https://api.github.com/repos/pkp/ojs/tags","blobs_url":"https://api.github.com/repos/pkp/ojs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pkp/ojs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pkp/ojs/git/refs{/sha}","trees_url":"https://api.github.com/repos/pkp/ojs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pkp/ojs/statuses/{sha}","languages_url":"https://api.github.com/repos/pkp/ojs/languages","stargazers_url":"https://api.github.com/repos/pkp/ojs/stargazers","contributors_url":"https://api.github.com/repos/pkp/ojs/contributors","subscribers_url":"https://api.github.com/repos/pkp/ojs/subscribers","subscription_url":"https://api.github.com/repos/pkp/ojs/subscription","commits_url":"https://api.github.com/repos/pkp/ojs/commits{/sha}","git_commits_url":"https://api.github.com/repos/pkp/ojs/git/commits{/sha}","comments_url":"https://api.github.com/repos/pkp/ojs/comments{/number}","issue_comment_url":"https://api.github.com/repos/pkp/ojs/issues/comments{/number}","contents_url":"https://api.github.com/repos/pkp/ojs/contents/{+path}","compare_url":"https://api.github.com/repos/pkp/ojs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pkp/ojs/merges","archive_url":"https://api.github.com/repos/pkp/ojs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pkp/ojs/downloads","issues_url":"https://api.github.com/repos/pkp/ojs/issues{/number}","pulls_url":"https://api.github.com/repos/pkp/ojs/pulls{/number}","milestones_url":"https://api.github.com/repos/pkp/ojs/milestones{/number}","notifications_url":"https://api.github.com/repos/pkp/ojs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pkp/ojs/labels{/name}","releases_url":"https://api.github.com/repos/pkp/ojs/releases{/id}","created_at":"2009-11-16T21:19:14Z","updated_at":"2015-09-21T21:06:13Z","pushed_at":"2015-09-23T23:21:11Z","git_url":"git://github.com/pkp/ojs.git","ssh_url":"git@github.com:pkp/ojs.git","clone_url":"https://github.com/pkp/ojs.git","svn_url":"https://github.com/pkp/ojs","homepage":"http://pkp.sfu.ca/ojs","size":147762,"stargazers_count":224,"watchers_count":224,"language":"PHP","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":230,"mirror_url":null,"open_issues_count":27,"forks":230,"open_issues":27,"watchers":224,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pkp/ojs/pulls/535"},"html":{"href":"https://github.com/pkp/ojs/pull/535"},"issue":{"href":"https://api.github.com/repos/pkp/ojs/issues/535"},"comments":{"href":"https://api.github.com/repos/pkp/ojs/issues/535/comments"},"review_comments":{"href":"https://api.github.com/repos/pkp/ojs/pulls/535/comments"},"review_comment":{"href":"https://api.github.com/repos/pkp/ojs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pkp/ojs/pulls/535/commits"},"statuses":{"href":"https://api.github.com/repos/pkp/ojs/statuses/7eb59e56579fbee560efa7197abd62b26534b69d"}}}}