tripal_ws.admin.inc 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <?php
  2. /**
  3. * Provide form to store information of other Tripal sites
  4. *
  5. * @param unknown $form
  6. * @param unknown $form_state
  7. */
  8. function tripal_ws_tripal_sites_form($form, &$form_state) {
  9. $form = array();
  10. $values = key_exists('values', $form_state) ? $form_state['values'] : NULL;
  11. $tripal_site = $values ? $values['tripal_site'] : 0;
  12. $results =
  13. db_select('tripal_sites', 'ts')
  14. ->fields('ts')
  15. ->execute();
  16. $headers = array('Name', 'URL', 'Version', 'Description', 'Action');
  17. $rows = array();
  18. while ($site = $results->fetchObject()) {
  19. $rows[] = array(
  20. $site->name,
  21. $site->url,
  22. $site->version,
  23. $site->description,
  24. array(
  25. 'data' => l('Edit', '/admin/tripal/storage/ws/tripal_sites/edit/' . $site->id) . ' | ' .
  26. l('Remove', '/admin/tripal/storage/ws/tripal_sites/remove/' . $site->id),
  27. 'nowrap' => TRUE,
  28. ),
  29. );
  30. }
  31. if (count($rows) == 0) {
  32. $rows[] = array('No configured Tripal site.', array('colspan' => 5));
  33. }
  34. $output = theme('table', array(
  35. 'header' => $headers,
  36. 'rows' => $rows,
  37. ));
  38. $form['table'] = array(
  39. '#markup' => $output
  40. );
  41. return $form;
  42. }
  43. /**
  44. * Provide form to add/edit a Tripal site
  45. *
  46. * @param unknown $form
  47. * @param unknown $form_state
  48. */
  49. function tripal_ws_tripal_sites_edit_form($form, &$form_state, $tripal_site_id = NULL) {
  50. $id = NULL;
  51. $name = '';
  52. $url = '';
  53. $version = '';
  54. $description = '';
  55. if ($tripal_site_id) {
  56. $site = db_select('tripal_sites', 'ts')
  57. ->fields('ts')
  58. ->condition('id', $tripal_site_id)
  59. ->execute()
  60. ->fetchObject();
  61. if (is_object($site)) {
  62. $id = $site->id;
  63. $name = $site->name;
  64. $url = $site->url;
  65. $version = $site->version;
  66. $description = $site->description;
  67. }
  68. }
  69. $form = array();
  70. $form['tripal_site_info']['id'] = array(
  71. '#type' => 'hidden',
  72. '#value' => $id,
  73. );
  74. $form['tripal_site_info']['name'] = array(
  75. '#title' => t('Name'),
  76. '#type' => 'textfield',
  77. '#description' => t('Full name of the Tripal site.'),
  78. '#default_value' => $name,
  79. '#required' => TRUE
  80. );
  81. $form['tripal_site_info']['url'] = array(
  82. '#title' => t('URL'),
  83. '#type' => 'textfield',
  84. '#description' => t('The URL of the Tripal site.'),
  85. '#default_value' => $url,
  86. '#required' => TRUE
  87. );
  88. $form['tripal_site_info']['version'] = array(
  89. '#title' => t('Version'),
  90. '#type' => 'textfield',
  91. '#description' => t('Web services version used by the Tripal site.'),
  92. '#default_value' => $version,
  93. );
  94. $form['tripal_site_info']['description'] = array(
  95. '#title' => t('Description'),
  96. '#type' => 'textarea',
  97. '#default_value' => $description,
  98. );
  99. $form['submit_button'] = array(
  100. '#type' => 'submit',
  101. '#value' => t('Save'),
  102. '#name' => 'save'
  103. );
  104. $form['cancel_button'] = array(
  105. '#type' => 'button',
  106. '#value' => t('Cancel'),
  107. '#name' => 'cancel_button',
  108. '#limit_validation_errors' => array()
  109. );
  110. return $form;
  111. }
  112. /**
  113. * Implements hook_validate()
  114. *
  115. * @param unknown $form
  116. * @param unknown $form_state
  117. */
  118. function tripal_ws_tripal_sites_edit_form_validate($form, &$form_state) {
  119. if (array_key_exists('clicked_button', $form_state)) {
  120. if ($form_state['clicked_button']['#name'] =='cancel_button') {
  121. drupal_goto('/admin/tripal/storage/ws/tripal_sites');
  122. }
  123. // Make sure URL does not already exist
  124. else if ($form_state['clicked_button']['#name'] =='save') {
  125. $url = $form_state['values']['url'];
  126. $check = NULL;
  127. // When updating a record
  128. if ($form_state['values']['id']) {
  129. $check =
  130. db_select('tripal_sites', 'ts')
  131. ->fields('ts', array('id'))
  132. ->condition('url', $url)
  133. ->condition('id', $form_state['values']['id'], '<>')
  134. ->execute()
  135. ->fetchField();
  136. }
  137. // When inserting a record
  138. else {
  139. $check =
  140. db_select('tripal_sites', 'ts')
  141. ->fields('ts', array('id'))
  142. ->condition('url', $url)
  143. ->execute()
  144. ->fetchField();
  145. }
  146. if ($check) {
  147. form_set_error('url', t('The URL is used by another site.'));
  148. }
  149. }
  150. }
  151. }
  152. /**
  153. * Implements hook_submit()
  154. *
  155. * @param unknown $form
  156. * @param unknown $form_state
  157. */
  158. function tripal_ws_tripal_sites_edit_form_submit($form, &$form_state) {
  159. $id = $form_state['values']['id'];
  160. $name = $form_state['values']['name'];
  161. $url = $form_state['values']['url'];
  162. $version = $form_state['values']['version'];
  163. $description = $form_state['values']['description'];
  164. // If there is an 'id' do an update, otherwise do an insert
  165. if ($id) {
  166. db_update('tripal_sites')
  167. ->fields(array(
  168. 'name' => $name,
  169. 'url' => $url,
  170. 'version' => $version,
  171. 'description' => $description
  172. ))
  173. ->condition('id', $id)
  174. ->execute();
  175. drupal_set_message(t('Tripal site \'' . $name . '\' has been updated.'));
  176. }
  177. else {
  178. db_insert('tripal_sites')
  179. ->fields(array(
  180. 'name' => $name,
  181. 'url' => $url,
  182. 'version' => $version,
  183. 'description' => $description
  184. ))
  185. ->execute();
  186. drupal_set_message(t('Tripal site \'' . $name . '\' has been added.'));
  187. }
  188. drupal_goto('/admin/tripal/storage/ws/tripal_sites');
  189. }
  190. /**
  191. * Implements hook_form()
  192. * Reset term used by semantic web
  193. *
  194. * @param $form
  195. * @param $form_state
  196. * @param $table
  197. * @param $column
  198. * @return $form
  199. */
  200. function tripal_ws_tripal_sites_remove_form($form, &$form_state, $id = NULL) {
  201. $name = '';
  202. $record_id = '';
  203. if ($id) {
  204. $site = db_select('tripal_sites', 'ts')
  205. ->fields('ts')
  206. ->condition('id', $id)
  207. ->execute()
  208. ->fetchObject();
  209. if (is_object($site)) {
  210. $record_id = $site->id;
  211. $name = $site->name;
  212. }
  213. }
  214. $form['confirmation'] = array(
  215. '#markup' => 'Really remove the \'' . $name . '\' Tripal site? ',
  216. );
  217. $form['tripal_site_id'] = array(
  218. '#type' => 'value',
  219. '#value' => $record_id
  220. );
  221. $form['tripal_site_name'] = array(
  222. '#type' => 'value',
  223. '#value' => $name
  224. );
  225. $form['submit_button'] = array(
  226. '#type' => 'submit',
  227. '#value' => t('Remove'),
  228. '#name' => 'remove'
  229. );
  230. $form['cancel_button'] = array(
  231. '#type' => 'button',
  232. '#value' => t('Cancel'),
  233. '#name' => 'cancel_button',
  234. '#limit_validation_errors' => array()
  235. );
  236. return $form;
  237. }
  238. /**
  239. * Implements hook_form_validate()
  240. *
  241. * Validate function for resetting the semantic web term
  242. *
  243. * @param unknown $form
  244. * @param unknown $form_state
  245. */
  246. function tripal_ws_tripal_sites_remove_form_validate($form, &$form_state) {
  247. if (array_key_exists('clicked_button', $form_state)) {
  248. if ($form_state['clicked_button']['#name'] =='cancel_button') {
  249. drupal_goto('/admin/tripal/storage/ws/tripal_sites');
  250. }
  251. else if (!$form_state['values']['tripal_site_id']) {
  252. drupal_set_message(t('Invalid Tripal site id'), 'error');
  253. }
  254. }
  255. }
  256. /**
  257. * Implements hook_form_submit()
  258. *
  259. * Submit function for editing the semantic web term
  260. *
  261. * @param unknown $form
  262. * @param unknown $form_state
  263. */
  264. function tripal_ws_tripal_sites_remove_form_submit($form, &$form_state) {
  265. $id = $form_state['values']['tripal_site_id'];
  266. $name = $form_state['values']['tripal_site_name'];
  267. if ($id) {
  268. db_delete('tripal_sites')
  269. ->condition('id', $id)
  270. ->execute();
  271. drupal_set_message('The Tripal site \'' .$name . '\' has been removed.');
  272. }
  273. drupal_goto('/admin/tripal/storage/ws/tripal_sites');
  274. }