mdApiTest.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php /* <!-- mdApiTest.php -->
  2. <!-- 2004/09/30 -->
  3. <!-- Copyright (C) 2004 rene.haentjens@UGent.be - see metadata/md_funcs.php -->
  4. */
  5. /**
  6. ==============================================================================
  7. * Dokeos Metadata: MD API test and demo
  8. *
  9. * The API allows other Dokeos scripts to define & manipulate metadata
  10. *
  11. * In this example, MD is defined for 'Document.1001', 1002, 1003
  12. *
  13. * @package dokeos.metadata
  14. ==============================================================================
  15. */
  16. require("../md_funcs.php");
  17. define('EID_TYPE', 'Document');
  18. require('../md_' . strtolower(EID_TYPE) . '.php');
  19. // name of the language file that needs to be included
  20. /*
  21. $language_file = 'Whatever';
  22. */
  23. require("../../inc/global.inc.php");
  24. isset($_course) or give_up("Select a course first...");
  25. $is_allowed_to_edit = isset($_user['user_id']) && $is_courseMember && is_allowed_to_edit();
  26. if (!$is_allowed_to_edit) give_up("You're not allowed to edit...");
  27. $mdStore = new mdstore($is_allowed_to_edit); // create table if needed
  28. require(api_get_path(LIBRARY_PATH) . 'xmd.lib.php'); // mds_update_xml_and_mdt
  29. require(api_get_path(LIBRARY_PATH) . 'xht.lib.php'); // mdo_generate_default_xml_metadata
  30. $noPHP_SELF = TRUE;
  31. Display::display_header($nameTools); echo "\n";
  32. // if the language file in use is not 'md_' . EID_TYPE ...
  33. $langMdTitle = 'Default Title (if doc not in DB)';
  34. $langMdDescription = 'Default description (if doc has no comment)';
  35. $langMdCoverage = 'bachelor of engineering';
  36. $langMdCopyright = 'Ghent University';
  37. foreach(array(1001, 1002, 1003) as $eid_id)
  38. {
  39. $mdObj = new mdobject($_course, $eid_id); // see 'md_' . EID_TYPE . '.php'
  40. $eid = $mdObj->mdo_eid;
  41. $titlePath = $mdObj->mdo_dcmap_v['Title']; // no IEEE dependencies here...
  42. if (($mdt_rec = $mdStore->mds_get($eid)) === FALSE)
  43. {
  44. $mdt = $mdObj->mdo_generate_default_xml_metadata();
  45. $xmlDoc = new xmddoc(explode("\n", $mdt));
  46. if (!$xmlDoc->error)
  47. {
  48. echo htmlspecialchars($titlePath), ': ';
  49. $mdTitle = $xmlDoc->xmd_value($titlePath);
  50. if ($mdTitle == $langMdTitle)
  51. {
  52. $mdTitle = EID_TYPE . ' ' . $eid_id;
  53. $xmlDoc->xmd_update($titlePath, $mdTitle);
  54. $mdt = $xmlDoc->xmd_xml();
  55. }
  56. echo htmlspecialchars($mdTitle), ':';
  57. }
  58. $mdStore->mds_put($eid, $mdt, 'mdxmltext', FALSE);
  59. echo '<a href="../index.php?eid=', urlencode($eid), '">',
  60. htmlspecialchars($eid), '</a><br>';
  61. }
  62. }
  63. echo '<br>';
  64. $xmlDoc = new xmddoc(explode("\n", $mdStore->mds_get($eid = EID_TYPE . '.1002')));
  65. if ($xmlDoc->error) give_up($xmlDoc->error);
  66. $mdObj = new mdobject($_course, '1002');
  67. $mda = "~~"; // delete metadata of 'Document.1002'
  68. $mdt = $mdStore->mds_update_xml_and_mdt($mdObj, $xmlDoc, $mda, $eid, $trace);
  69. // note: $xmlDoc and $trace are passed by reference...
  70. $mdObj = new mdobject($_course, '1003');
  71. $xmlDoc = new xmddoc(explode("\n", $mdStore->mds_get($eid = EID_TYPE . '.1003')));
  72. if ($xmlDoc->error) give_up($xmlDoc->error);
  73. $map_lang = 'string/@language';
  74. $dcmap_e_kwplace = 'metadata/lom/general'; $dcmap_e_kwelem = 'keyword';
  75. $dcmap_e_keyword = $dcmap_e_kwplace . '/' . $dcmap_e_kwelem;
  76. $mda = $mdObj->mdo_dcmap_v['Description'] . '=Nouvelle description' .
  77. "\n" . $mdObj->mdo_dcmap_e['Coverage'] . "~" .
  78. "\n" . $dcmap_e_kwplace . '!' . $dcmap_e_kwelem .
  79. "\n" . $dcmap_e_keyword . "[-1]!string=afrique" .
  80. "\n" . $dcmap_e_keyword . "[-1]/" . $map_lang . "=en" .
  81. "\n" . $mdObj->mdo_dcmap_e['Title'] . ',' .
  82. $mdObj->mdo_dcmap_e['Description'] . ',' .
  83. $dcmap_e_keyword . ";" . $map_lang . "=fr" .
  84. ""; // update metadata of 'Document.1003' - see md_funcs
  85. // note we don't go far with IEEE independence...
  86. $mdt = $mdStore->mds_update_xml_and_mdt($mdObj, $xmlDoc, $mda, $eid, $trace);
  87. echo htmlspecialchars($trace), '<br><br>';
  88. // The simplest API calls: store and fetch DC metadata element values:
  89. $mdObj = new mdobject($_course, '1003');
  90. $mdStore->mds_put_dc_elements($mdObj, array('Coverage' => 'broad...', 'Type' => 'aggressive text'));
  91. // Coverage won't work, because that element has been removed above...
  92. $dcelem = $mdStore->mds_get_dc_elements($mdObj);
  93. foreach (array('Identifier', 'Title', 'Language', 'Description', 'Coverage',
  94. 'Type', 'Date', 'Creator', 'Format', 'Rights') as $dce)
  95. {
  96. echo $dce, '= ', htmlspecialchars($dcelem[$dce]), '<br>';
  97. }
  98. echo '<br>';
  99. $mdObj = new mdobject($_course, '1002');
  100. $mdStore->mds_put_dc_elements($mdObj, array('Coverage' => 'broad...'));
  101. $dcelem = $mdStore->mds_get_dc_elements($mdObj);
  102. foreach (array('Identifier', 'Title', 'Language', 'Description', 'Coverage',
  103. 'Type', 'Date', 'Creator', 'Format', 'Rights') as $dce)
  104. {
  105. echo $dce, '= ', htmlspecialchars($dcelem[$dce]), '<br>';
  106. }
  107. echo '<br>';
  108. $mdStore->mds_append(EID_TYPE . '.1001', ' search words');
  109. $mdStore->mds_append(EID_TYPE . '.1001', ' more findable terms');
  110. Display::display_footer();
  111. ?>