tripal_project.admin.inc 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. function tripal_project_administration_description_page () {
  3. $output = '';
  4. return $output;
  5. }
  6. function tripal_project_configuration_page () {
  7. $output = '';
  8. $output .= drupal_get_form('tripal_project_sync_projects_form');
  9. return $output;
  10. }
  11. function tripal_project_sync_projects_form ($form_state = NULL) {
  12. $form = array();
  13. $form['sync'] = array(
  14. '#type' => 'fieldset',
  15. '#title' => 'Sync Projects'
  16. );
  17. $form['sync']['description'] = array(
  18. '#type' => 'item',
  19. '#value' => 'Many of the details for projects are stored in chado. Often other tripal '
  20. .'modules may create projects as a means of grouping data together. Sync\'ing projects '
  21. .'in chado created drupal pages (known as nodes) which display the data to priviledged users.'
  22. );
  23. $form['sync']['submit'] = array(
  24. '#type' => 'submit',
  25. '#value' => 'Sync All Projects',
  26. );
  27. return $form;
  28. }
  29. function tripal_project_sync_projects_form_submit ($form, &$form_state) {
  30. global $user;
  31. //sync'ing is done by a tripal_job that is added here
  32. $job_id = tripal_add_job('Sync Projects', 'tripal_project',
  33. 'tripal_project_sync_all_projects', array(), $user->uid);
  34. }
  35. function tripal_project_sync_all_projects () {
  36. //retrieve all projects in drupal
  37. $resource = db_query('SELECT project_id FROM {chado_project}');
  38. $drupal_projects = array();
  39. while ($r = db_fetch_object($resource)) {
  40. $drupal_projects[$r->project_id] = $r->project_id;
  41. }
  42. // retrieve all projects in chado
  43. $chado_projects = array();
  44. $previous_db = tripal_db_set_active('chado');
  45. $resource = db_query('SELECT project_id FROM project');
  46. tripal_db_set_active($previous_db);
  47. while ($r = db_fetch_object($resource)) {
  48. // if not already in drupal add to list to be sync'd
  49. if (!isset($drupal_projects[$r->project_id])) {
  50. $chado_projects[$r->project_id] = $r->project_id;
  51. }
  52. }
  53. print 'Number of Projects to Sync: '.sizeof($chado_projects)."\n";
  54. foreach ($chado_projects as $project_id) {
  55. $project = tripal_core_chado_select('project',array('name','description'),array('project_id'=>$project_id));
  56. // create node
  57. $new_node = new stdClass();
  58. $new_node->type = 'chado_project';
  59. $new_node->uid = $user->uid;
  60. $new_node->title = $project[0]->name;
  61. $new_node->project_id = $project_id;
  62. $new_node->description = $project[0]->description;
  63. node_validate($new_node);
  64. $errors = form_get_errors();
  65. if(!$errors){
  66. $node = node_submit($new_node);
  67. node_save($node);
  68. if($node->nid){
  69. print "Added ".$project[0]->name." (Node ID:".$node->nid.")\n";
  70. }
  71. } else {
  72. print "Failed to insert project: ".$project[0]->name."\n";
  73. print "Errors: ".print_r($errors, TRUE)."\n";
  74. }
  75. }
  76. }