Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/metadata/md_document.php

195 lines
6.3 KiB

<?php /* <!-- md_document.php for Dokeos metadata/*.php -->
<!-- 2005/09/20 -->
<!-- Copyright (C) 2005 rene.haentjens@UGent.be - see metadata/md_funcs.php -->
*/
/**
==============================================================================
* Dokeos Metadata: class mdobject for Document-type items
*
* @package dokeos.metadata
==============================================================================
*/
class mdobject
{
var $mdo_course;
var $mdo_type;
var $mdo_id;
var $mdo_eid;
var $mdo_dcmap_e;
var $mdo_dcmap_v;
var $mdo_path;
var $mdo_title;
var $mdo_comment;
var $mdo_filetype;
var $mdo_group;
var $mdo_url;
function mdo_define_htt() { return new xhtdoc(<<<EOD
<!-- {-INDEXABLETEXT-} -->
{-V metadata/lom/general/title/string-} txt-sep
{-R metadata/lom/general/keyword C KWTEXT-} txt-sep
{-V metadata/lom/general/description[1]/string-} txt-end
document-type
{-V metadata/lom/lifeCycle/contribute[1]/entity-}
{-V metadata/lom/lifeCycle/contribute[1]/date/dateTime-}
{-V metadata/lom/technical/format-}
<!-- {-KWTEXT-} -->
{-V string-}-kw
<!-- {--} -->
EOD
);
}
function mdo_generate_default_xml_metadata()
{
global $iso639_2_code, $ieee_xml;
$xhtDoc = new xhtdoc($ieee_xml); $_user = api_get_user_info();
if ($xhtDoc->htt_error)
give_up('IEEE XML (metadata/md_funcs): ' . $xhtDoc->htt_error);
$xhtDoc->xht_get_lang = 'get_lang'; $xhtDoc->xht_xmldoc = new xmddoc('');
if ($xhtDoc->xht_xmldoc->error) give_up($xhtDoc->xht_xmldoc->error);
$xhtDoc->xht_param['siteUri'] = make_uri();
$xhtDoc->xht_param['entry'] = $this->mdo_course['sysCode'] .
'.Document.' . $this->mdo_id; // 2005-05-30: path->sysCode
$xhtDoc->xht_param['location'] = api_get_path(WEB_PATH) .
'main/metadata/openobject.php?cidReq=' .
urlencode($this->mdo_course['sysCode']) . '&eid=' .
urlencode($this->mdo_eid);
$xhtDoc->xht_param['mdlang'] = strtolower($iso639_2_code);
$xhtDoc->xht_param['lang'] = strtolower($iso639_2_code);
$xhtDoc->xht_param['title'] =
$this->mdo_title ? $this->mdo_title :
($this->mdo_path ? $this->mdo_path : get_lang('MdTitle'));
$xhtDoc->xht_param['description'] =
$this->mdo_comment ? $this->mdo_comment : get_lang('MdDescription');
$xhtDoc->xht_param['coverage'] = get_lang('MdCoverage');
if (isset($_user))
{
$xhtDoc->xht_param['author'] = "BEGIN:VCARD\\nFN:" .
$_user['firstName']." ".$_user['lastName'] .
"\\nEMAIL:".$_user['mail'] . "\\nEND:VCARD\\n";
}
$xhtDoc->xht_param['dateTime'] = date('Y-m-d');
if ($this->mdo_filetype == 'folder') $format = "inode/directory";
else
{
require_once(api_get_path(LIBRARY_PATH) . 'document.lib.php');
$format = DocumentManager::file_get_mime_type($this->mdo_path);
}
$xhtDoc->xht_param['format'] = $format;
$xhtDoc->xht_param['size'] = (($s = filesize(get_course_path() .
$this->mdo_course['path'] . '/document' . $this->mdo_path))) ? $s : '0';
return $xhtDoc->xht_fill_template('XML');
}
function mdo_add_breadcrump_nav()
{
global $interbreadcrumb, $langFormats;
$regs = array(); // for use with ereg()
$docurl = $_SERVER['PHP_SELF']; // should be .../main/xxx/yyy.php
if (ereg('^(.+[^/\.]+)/[^/\.]+/[^/\.]+.[^/\.]+$', $docurl, $regs))
$docurl = $regs[1] . '/document/document.php';
$interbreadcrumb[]= array ('url' => $docurl,
"name"=> get_lang('MdCallingTool'));
if (($docpath = $this->mdo_path))
{
$docpath = substr($docpath, 0, strrpos($docpath, '/'));
if (strlen($docpath) > 1) $interbreadcrumb[]= array ('url' =>
$docurl . '?curdirpath=' . urlencode($docpath) .
($this->mdo_group ? '&gidReq=' . $this->mdo_group : ''), "name" =>
htmlspecialchars(substr($docpath, strrpos($docpath, '/') + 1)));
}
// Complete assoclist $langFormats from mime types
require_once(api_get_path(LIBRARY_PATH) . 'xht.lib.php');
require_once(api_get_path(LIBRARY_PATH) . 'document.lib.php');
$sep = $langFormats{0} ? $langFormats{0} : ":";
$arrFormats = xht_explode_assoclist($langFormats);
foreach (DocumentManager::file_get_mime_type(TRUE) as $format)
if (!isset($arrFormats[$format]))
$langFormats .= ",, " . $format . $sep . $format;
if (!isset($arrFormats["inode/directory"]))
$langFormats .= ",, inode/directory" . $sep . "inode/directory";
if (substr($langFormats, 0, 3) == ",, ")
$langFormats = $sep . substr($langFormats, 3);
}
function mdobject($_course, $id)
{
global $ieee_dcmap_e, $ieee_dcmap_v; // md_funcs
$this->mdo_course = $_course; $this->mdo_type = 'Document';
$this->mdo_id = $id; $this->mdo_eid = $this->mdo_type . '.' . $id;
$this->mdo_dcmap_e = $ieee_dcmap_e; $this->mdo_dcmap_v = $ieee_dcmap_v;
$document_table = Database::get_course_table(TABLE_DOCUMENT);
if (($docinfo = @mysql_fetch_array(api_sql_query(
"SELECT path,title,comment,filetype FROM $document_table WHERE id='" .
addslashes($id) . "'", __FILE__, __LINE__))))
{
$this->mdo_path = $docinfo['path'];
$this->mdo_title = $docinfo['title'];
$this->mdo_comment = $docinfo['comment'];
$this->mdo_filetype = $docinfo['filetype'];
$this->mdo_group = ''; // 2005-05-30: find group_id, if any
$group_info = Database::get_course_table(TABLE_GROUP);
if (($result = api_sql_query(
"SELECT id,secret_directory FROM $group_info", __FILE__, __LINE__)))
while (($row = mysql_fetch_array($result)))
if (($secdir = $row['secret_directory'] . '/') ==
substr($this->mdo_path, 0, strlen($secdir)))
{
$this->mdo_group = $row['id']; break;
}
// 2005-05-30: use direct URL
$this->mdo_url = api_get_path(WEB_COURSE_PATH) . $_course['path'] .
'/document' . str_replace('%2F', '/', urlencode($this->mdo_path)) .
($this->mdo_group ? '?gidReq=' . $this->mdo_group : '');
}
}
}
?>