PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/xenforo/library/bdApi/ControllerApi/Index.php

https://gitlab.com/billyprice1/bdApi
PHP | 120 lines | 96 code | 20 blank | 4 comment | 11 complexity | 623819d4705e2a887e59a55c641803e0 MD5 | raw file
  1. <?php
  2. class bdApi_ControllerApi_Index extends bdApi_ControllerApi_Abstract
  3. {
  4. public function actionGetIndex()
  5. {
  6. /* @var $session bdApi_Session */
  7. $session = XenForo_Application::getSession();
  8. $visitor = XenForo_Visitor::getInstance();
  9. $systemInfo = array();
  10. if ($session->getOAuthClientId() === '') {
  11. $systemInfo += array(
  12. 'oauth/authorize' => bdApi_Data_Helper_Core::safeBuildApiLink('oauth/authorize', array(), array('oauth_token' => '')),
  13. 'oauth/token' => bdApi_Data_Helper_Core::safeBuildApiLink('oauth/token', array(), array('oauth_token' => '')),
  14. );
  15. }
  16. if ($session->checkScope(bdApi_Model_OAuth2::SCOPE_POST)) {
  17. $systemInfo = array(
  18. // YYYYMMDD and 2 digits number (01-99), allowing maximum 99 revisions/day
  19. 'api_revision' => 2015121801,
  20. 'api_modules' => $this->_getModules(),
  21. );
  22. }
  23. $data = array();
  24. $data['links'] = array(
  25. 'search' => bdApi_Data_Helper_Core::safeBuildApiLink('search'),
  26. 'navigation' => bdApi_Data_Helper_Core::safeBuildApiLink('navigation', array(), array('parent' => 0)),
  27. 'threads/recent' => bdApi_Data_Helper_Core::safeBuildApiLink('threads/recent'),
  28. 'users' => bdApi_Data_Helper_Core::safeBuildApiLink('users'),
  29. );
  30. if ($visitor['user_id'] > 0) {
  31. $data['links']['conversations'] = bdApi_Data_Helper_Core::safeBuildApiLink('conversations');
  32. $data['links']['forums/followed'] = bdApi_Data_Helper_Core::safeBuildApiLink('forums/followed');
  33. $data['links']['notifications'] = bdApi_Data_Helper_Core::safeBuildApiLink('notifications');
  34. $data['links']['threads/followed'] = bdApi_Data_Helper_Core::safeBuildApiLink('threads/followed');
  35. $data['links']['threads/new'] = bdApi_Data_Helper_Core::safeBuildApiLink('threads/new');
  36. $data['links']['users/ignored'] = bdApi_Data_Helper_Core::safeBuildApiLink('users/ignored');
  37. $data['links']['users/me'] = bdApi_Data_Helper_Core::safeBuildApiLink('users', array(
  38. 'user_id' => XenForo_Visitor::getInstance()->toArray()), array('oauth_token' => ''));
  39. if ($visitor->canUpdateStatus()) {
  40. $data['post']['status'] = bdApi_Data_Helper_Core::safeBuildApiLink('users/me/timeline');
  41. }
  42. }
  43. $data['system_info'] = $systemInfo;
  44. return $this->responseData('bdApi_ViewApi_Index', $data);
  45. }
  46. protected function _getModules()
  47. {
  48. $modules = array(
  49. 'forum' => 2015121802,
  50. 'oauth2' => 2015121501,
  51. 'subscription' => 2014092301,
  52. );
  53. $option = bdApi_Data_Helper_Core::safeGetSession()->getOAuthClientOption('allow_search_indexing');
  54. if (!empty($option)) {
  55. $modules['search/indexing'] = 2015091601;
  56. }
  57. return $modules;
  58. }
  59. protected function _getScopeForAction($action)
  60. {
  61. // no scope checking for this controller
  62. return false;
  63. }
  64. public static function getSessionActivityDetailsForList(array $activities)
  65. {
  66. $clientIds = array();
  67. foreach ($activities AS $activity) {
  68. if (!empty($activity['params']['client_id'])) {
  69. $clientIds[] = $activity['params']['client_id'];
  70. }
  71. }
  72. $clients = array();
  73. if (!empty($clientIds)) {
  74. $clientIds = array_unique($clientIds);
  75. /** @var bdApi_Model_Client $clientModel */
  76. $clientModel = XenForo_Model::create('bdApi_Model_Client');
  77. $clients = $clientModel->getClients(array('client_id' => $clientIds));
  78. }
  79. $output = array();
  80. foreach ($activities AS $key => $activity) {
  81. $client = null;
  82. if (!empty($activity['params']['client_id'])
  83. && isset($clients[$activity['params']['client_id']])
  84. ) {
  85. $client = $clients[$activity['params']['client_id']];
  86. }
  87. if (!empty($client)) {
  88. $output[$key] = array(
  89. new XenForo_Phrase('bdapi_using_client'),
  90. $client['name'],
  91. $client['redirect_uri'],
  92. false
  93. );
  94. } else {
  95. $output[$key] = new XenForo_Phrase('viewing_forum_list');
  96. }
  97. }
  98. return $output;
  99. }
  100. }