PageRenderTime 51ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/interfaces/admin/components/pages/controllers/settings_connections.php

https://gitlab.com/x33n/platform
PHP | 225 lines | 206 code | 11 blank | 8 comment | 48 complexity | 1f460a0beaf244a6dd0d56525a2bc27b MD5 | raw file
  1. <?php
  2. $page_data_object = new CASHConnection(AdminHelper::getPersistentData('cash_effective_user'));
  3. $settings_types_data = $page_data_object->getConnectionTypes();
  4. $settings_for_user = $page_data_object->getAllConnectionsforUser();
  5. $all_services = array();
  6. $typecount = 1;
  7. foreach ($settings_types_data as $key => $data) {
  8. if ($typecount % 2 == 0) {
  9. $alternating_type = true;
  10. } else {
  11. $alternating_type = false;
  12. }
  13. if (file_exists(ADMIN_BASE_PATH.'/assets/images/settings/' . $key . '.png')) {
  14. $service_has_image = true;
  15. } else {
  16. $service_has_image = false;
  17. }
  18. if (in_array($cash_admin->platform_type, $data['compatibility'])) {
  19. $all_services[] = array(
  20. 'key' => $key,
  21. 'name' => $data['name'],
  22. 'alternating_type' => $alternating_type,
  23. 'service_has_image' => $service_has_image
  24. );
  25. $typecount++;
  26. }
  27. }
  28. $cash_admin->page_data['all_services'] = new ArrayIterator($all_services);
  29. $settings_action = false;
  30. if ($request_parameters) {
  31. $settings_action = $request_parameters[0];
  32. }
  33. $cash_admin->page_data['action_message'] = false;
  34. if ($settings_action) {
  35. switch ($settings_action) {
  36. case 'add':
  37. $settings_type = $request_parameters[1];
  38. $seed_name = $settings_types_data[$settings_type]['seed'];
  39. if ($cash_admin->platform_type == 'single') {
  40. if (!isset($_POST['dosettingsadd'])) {
  41. if (array_key_exists($settings_type, $settings_types_data)) {
  42. $cash_admin->page_data['state_markup'] = '<h4>' . $settings_types_data[$settings_type]['name'] . '</h4><p>' . $settings_types_data[$settings_type]['instructions'] . '</p>';
  43. $cash_admin->page_data['state_markup'] .= '<form method="post" action="">'
  44. . '<input type="hidden" name="dosettingsadd" value="makeitso" />'
  45. . '<input type="hidden" name="settings_type" value="' . $settings_type . '" />'
  46. . '<label for="settings_name">Connection name</label>'
  47. . '<input type="text" id="settings_name" name="settings_name" placeholder="Give It A Name" /><br />';
  48. foreach ($settings_types_data[$settings_type]['dataTypes'][$cash_admin->platform_type] as $key => $data) {
  49. $cash_admin->page_data['state_markup'] .= '<label for="' . $key . '">' . $key . '</label>'
  50. . '<input type="text" id="' . $key . '" name="' . $key . '" placeholder="' . ucfirst($key) . '" />';
  51. }
  52. $cash_admin->page_data['state_markup'] .= '<div class="row_seperator"></div><br />'
  53. . '<div><input class="button" type="submit" value="Add The Connection" /></div>'
  54. . '</form>';
  55. } else {
  56. $cash_admin->page_data['state_markup'] = '<h4>Error</h4><p>The requested setting type could not be found.</p>';
  57. }
  58. } else {
  59. $settings_data_array = array();
  60. foreach ($settings_types_data[$settings_type]['dataTypes'][$cash_admin->platform_type] as $key => $data) {
  61. $settings_data_array[$key] = $_POST[$key];
  62. }
  63. $result = $page_data_object->setSettings(
  64. $_POST['settings_name'],
  65. $_POST['settings_type'],
  66. $settings_data_array
  67. );
  68. if ($result) {
  69. // postConnection hook
  70. if (method_exists($seed_name,'postConnection')) {
  71. $_POST['settings_id'] = $result;
  72. $_POST['user_id'] = $cash_admin->effective_user_id;
  73. $_POST['settings_type'] = $settings_type;
  74. $_POST['settings_name'] = $settings_name;
  75. $seed_name::postConnection($_POST);
  76. }
  77. $cash_admin->page_data['action_message'] = '<strong>Success.</strong> Everything was added successfully. You\'ll see it in your list of connections.';
  78. } else {
  79. $cash_admin->page_data['action_message'] = '<strong>Error.</strong> Something went wrong. Please make sure you\'re using a unique name for this connection. Not only is that just smart, it\'s required.';
  80. }
  81. }
  82. } else {
  83. // oauthy ...oauthish?
  84. $cash_admin->page_data['service_selected'] = true;
  85. if (isset($_POST['dosettingsadd'])) {
  86. // grab the stuff we need from $_POST then strip it out, pass the rest as data to store with the connection
  87. $settings_name = $_POST['settings_name'];
  88. $settings_type = $_POST['settings_type'];
  89. unset($_POST['settings_name'],$_POST['settings_type'],$_POST['dosettingsadd']);
  90. $result = $page_data_object->setSettings(
  91. $settings_name,
  92. $settings_type,
  93. $_POST
  94. );
  95. if ($result) {
  96. // postConnection hook
  97. if (method_exists($seed_name,'postConnection')) {
  98. $_POST['settings_id'] = $result;
  99. $_POST['user_id'] = $cash_admin->effective_user_id;
  100. $_POST['settings_type'] = $settings_type;
  101. $_POST['settings_name'] = $settings_name;
  102. $seed_name::postConnection($_POST);
  103. }
  104. AdminHelper::formSuccess('Success. Connection added. You\'ll see it in your list of connections.','/settings/connections/');
  105. } else {
  106. AdminHelper::formFailure('Error. Something just didn\'t work right.','/settings/connections/');
  107. }
  108. } else {
  109. $finalize = false;
  110. if (isset($request_parameters[2])) {
  111. if ($request_parameters[2] == 'finalize') {
  112. $finalize = true;
  113. }
  114. }
  115. $seed_name = $settings_types_data[$settings_type]['seed'];
  116. if (!$finalize) {
  117. $return_url = rtrim(CASHSystem::getCurrentURL(),'/') . '/finalize';
  118. // PHP <= 5.2 >>>> $cash_admin->page_data['state_markup'] = call_user_func($seed_name . '::getRedirectMarkup', $return_url);
  119. $cash_admin->page_data['state_markup'] = $seed_name::getRedirectMarkup($return_url);
  120. } else {
  121. $connections_base_uri = rtrim(str_replace($request_parameters,'',CASHSystem::getCurrentURL()),'/');
  122. $_REQUEST['connections_base_uri'] = $connections_base_uri;
  123. // PHP <= 5.2 >>>> $cash_admin->page_data['state_markup'] = call_user_func($seed_name . '::handleRedirectReturn', $_REQUEST);
  124. $cash_admin->page_data['state_markup'] = $seed_name::handleRedirectReturn($_REQUEST);
  125. }
  126. }
  127. }
  128. break;
  129. case 'edit':
  130. $connection_id = $request_parameters[1];
  131. $settings_name = $request_parameters[2];
  132. $settings_type = $request_parameters[3];
  133. $settings_details = $page_data_object->getConnectionSettings($connection_id);
  134. if (!isset($_POST['dosettingsedit'])) {
  135. if ($settings_details) {
  136. $cash_admin->page_data['state_markup'] = '<h4>Edit ' . $settings_name . '</h4><p>' . $settings_types_data[$settings_type]['description'] . '</p>'
  137. . '<form method="post" action="">'
  138. . '<input type="hidden" name="dosettingsedit" value="makeitso" />'
  139. . '<input type="hidden" name="connection_id" value="' . $connection_id . '" />'
  140. . '<input type="hidden" name="settings_type" value="' . $settings_type . '" />'
  141. . '<label for="settings_name">Connection name</label>'
  142. . '<input type="text" id="settings_name" name="settings_name" value="' . $settings_name . '" /><br />';
  143. foreach ($settings_types_data[$settings_type]['dataTypes'][$cash_admin->platform_type] as $key => $data) {
  144. $cash_admin->page_data['state_markup'] .= '<label for="' . $key . '">' . $key . '</label>'
  145. . '<input type="text" id="' . $key . '" name="' . $key . '" value="' . $settings_details[$key] . '" />';
  146. }
  147. $cash_admin->page_data['state_markup'] .= '<div class="row_seperator"></div><br />'
  148. . '<div><input class="button" type="submit" value="Edit The Connection" /></div>'
  149. . '</form>';
  150. } else {
  151. $cash_admin->page_data['action_message'] = '<strong>Error.</strong> The requested connection could not be found.';
  152. }
  153. } else {
  154. $settings_data_array = array();
  155. foreach ($settings_types_data[$settings_type]['dataTypes'][$cash_admin->platform_type] as $key => $data) {
  156. $settings_data_array[$key] = $_POST[$key];
  157. }
  158. $result = $page_data_object->setSettings(
  159. $_POST['settings_name'],
  160. $_POST['settings_type'],
  161. $settings_data_array,
  162. $_POST['connection_id']
  163. );
  164. if ($result) {
  165. $cash_admin->page_data['action_message'] = '<strong>Success.</strong> All changed. See connection below.';
  166. } else {
  167. $cash_admin->page_data['action_message'] = '<strong>Error.</strong> Something went wrong.';
  168. }
  169. }
  170. break;
  171. case 'delete':
  172. $connection_id = $request_parameters[1];
  173. $result = $page_data_object->deleteSettings($connection_id);
  174. if ($result) {
  175. AdminHelper::formSuccess('Success. Deleted. Sad.','/');
  176. //$cash_admin->page_data['action_message'] = '<strong>Success.</strong> All gone. Sad.';
  177. } else {
  178. AdminHelper::formFailure('Something went wrong.','/');
  179. //$cash_admin->page_data['action_message'] = '<strong>Error.</strong> Something went wrong.';
  180. }
  181. break;
  182. }
  183. }
  184. if (!$settings_action || isset($_POST['dosettingsadd']) || isset($_POST['dosettingsedit']) || $settings_action == 'delete' ) {
  185. $cash_admin->page_data['state_markup'] = '<h4>Current connections:</h4>'
  186. . '<p>Here are the settings that have already been added:</p>';
  187. $settings_for_user = $page_data_object->getAllConnectionsforUser();
  188. if (is_array($settings_for_user)) {
  189. foreach ($settings_for_user as $key => $data) {
  190. $cash_admin->page_data['state_markup'] .= '<div class="callout">'
  191. . '<h6>' . $data['name'] . '</h6>';
  192. if (array_key_exists($data['type'],$settings_types_data)) {
  193. $cash_admin->page_data['state_markup'] .= '<p><strong>' . $settings_types_data[$data['type']]['name'] . '</strong>';
  194. }
  195. $cash_admin->page_data['state_markup'] .= '&nbsp; <span class="fadedtext nobr">Created: ' . date('M jS, Y',$data['creation_date']) . '</p>';
  196. if ($data['modification_date']) {
  197. $cash_admin->page_data['state_markup'] .= ' (Modified: ' . date('F jS, Y',$data['modification_date']) . ')';
  198. }
  199. $cash_admin->page_data['state_markup'] .= '</span>'
  200. . '<div class="itemnav acation">';
  201. if ($cash_admin->platform_type == 'single') {
  202. $cash_admin->page_data['state_markup'] .= '<a href="' . ADMIN_WWW_BASE_PATH . '/settings/connections/edit/' . $data['id'] . '/' . $data['name'] . '/' . $data['type'] . '/" class="mininav_flush">Edit</a> ';
  203. }
  204. $cash_admin->page_data['state_markup'] .= '<a href="' . ADMIN_WWW_BASE_PATH . '/settings/connections/delete/' . $data['id'] . '/" class="needsconfirmation mininav_flush">Delete</a>'
  205. . '</div>'
  206. . '</div>';
  207. }
  208. } else {
  209. $cash_admin->page_data['state_markup'] .= 'No settings have been added.';
  210. }
  211. }
  212. $cash_admin->page_data['ui_title'] = '';
  213. $cash_admin->setPageContentTemplate('settings_connections');
  214. ?>