ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjDlBookGUI.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2009 ILIAS open source, University of Cologne |
7  | |
8  | This program is free software; you can redistribute it and/or |
9  | modify it under the terms of the GNU General Public License |
10  | as published by the Free Software Foundation; either version 2 |
11  | of the License, or (at your option) any later version. |
12  | |
13  | This program is distributed in the hope that it will be useful, |
14  | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16  | GNU General Public License for more details. |
17  | |
18  | You should have received a copy of the GNU General Public License |
19  | along with this program; if not, write to the Free Software |
20  | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21  +-----------------------------------------------------------------------------+
22 */
23 
37 include_once "./Modules/LearningModule/classes/class.ilObjContentObjectGUI.php";
38 include_once "./Modules/LearningModule/classes/class.ilObjDlBook.php";
39 
41 {
47  function ilObjDlBookGUI($a_data,$a_id = 0,$a_call_by_reference = true, $a_prepare_output = true)
48  {
49  $this->type = "dbk";
50  parent::ilObjContentObjectGUI($a_data,$a_id,$a_call_by_reference,$a_prepare_output);
51  # BETTER DO IT HERE THAN IN PARENT CLASS ( PROBLEMS FOR import, create)
52  $this->assignObject();
53 
54  // SAME REASON
55  if($a_id != 0)
56  {
57  $this->lm_tree =& $this->object->getLMTree();
58  }
59  }
60 
61  function assignObject()
62  {
63  include_once("./Modules/LearningModule/classes/class.ilObjDlBook.php");
64 
65  $this->link_params = "ref_id=".$this->ref_id;
66  $this->object =& new ilObjDlBook($this->id, true);
67  }
68 
69 
70  function showCitation($page_xml)
71  {
72  // content style
73  $this->tpl->setCurrentBlock("ContentStyle");
74  $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
75  ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
76  $this->tpl->parseCurrentBlock();
77 
78  // syntax style
79  $this->tpl->setCurrentBlock("SyntaxStyle");
80  $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
82  $this->tpl->parseCurrentBlock();
83 
84  $this->tpl->setVariable("LOCATION_STYLESHEET", ilUtil::getStyleSheetLocation());
85 
86  $parsed_post = $this->__parseCitationPost();
87  if(!count($parsed_post))
88  {
89  $_SESSION["citation_error"] = 1;
90 
91  $this->ctrl->setParameterByClass('illmpresentationgui','frame','maincontent');
92  $this->ctrl->setParameterByClass('illmpresentationgui','obj_id',(int) $_GET['obj_id']);
93  $this->ctrl->redirectByClass('illmpresentationgui','layout');
94  }
95  $tmp_tpl = new ilTemplate("tpl.citation.xsl",true,true,"Modules/LearningModule");
96  $tmp_tpl->setVariable("CITATIONS",$this->lng->txt("cont_citations"));
97 
98  foreach($parsed_post as $key => $data)
99  {
100  $tmp_tpl->setCurrentBlock("citation_row");
101  $tmp_tpl->setVariable("CITATION",$this->__applyCitationText($page_xml,$data["start"],$data["end"]));
102  $tmp_tpl->setVariable("PAGES_ROW",$data["text"]);
103  $tmp_tpl->parseCurrentBlock();
104  }
105  $xsl = $tmp_tpl->get();
106 
107  $this->object->initBibItemObject();
108  $xml = $this->object->bib_obj->getXML();
109  if(empty($xml))
110  {
111  return true;
112  }
113  $args = array( '/_xml' => $xml, '/_xsl' => $xsl );
114  $xh = xslt_create();
115  $params = array ('target_id' => $_SESSION["bib_id"]);
116 
117  $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args, $params);
118 
119  $this->tpl->setCurrentBlock("ilPage");
120  $this->tpl->setVariable("PAGE_CONTENT",$output);
121  $this->tpl->parseCurrentBlock();
122 
123  return true;
124  }
125 
129  function showAbstract($a_target_id)
130  {
131  if(count($_POST["tr_id"]) > 1)
132  {
133  $message = true;
134  $message_text = $this->lng->txt("cont_select_one_translation_warning");
135  $show_full = false;
136  }
137  else if(!$a_target_id and ($_POST["action"] == "show" or $_POST["action"] == "details"))
138  {
139  $message = true;
140  $message_text = $this->lng->txt("cont_select_one_edition");
141  $show_full = false;
142  }
143  else if(is_array($a_target_id) and count($a_target_id) > 1)
144  {
145  $message = true;
146  $message_text = $this->lng->txt("cont_msg_multiple_editions");
147  $show_full = false;
148  }
149  else if(is_array($a_target_id))
150  {
151  $a_target_id = $a_target_id[0];
152  $show_full = true;
153  }
154  else
155  {
156  $a_target_id = 0;
157  $show_full = false;
158  }
159 
160  $this->object->initBibItemObject();
161 
162  // content style
163  $this->tpl->setCurrentBlock("ContentStyle");
164  $this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
165  ilObjStyleSheet::getContentStylePath($this->object->getStyleSheetId()));
166  $this->tpl->parseCurrentBlock();
167 
168  // syntax style
169  $this->tpl->setCurrentBlock("SyntaxStyle");
170  $this->tpl->setVariable("LOCATION_SYNTAX_STYLESHEET",
172  $this->tpl->parseCurrentBlock();
173 
174  $this->tpl->setVariable("LOCATION_STYLESHEET", ilUtil::getStyleSheetLocation());
175  $this->tpl->setCurrentBlock("ilPage");
176 
177  $tmp_tpl = new ilTemplate("tpl.bibliography.xsl",true,true,"Modules/LearningModule");
178  $tmp_tpl->setVariable("TITLE",$this->lng->txt("title"));
179  $tmp_tpl->setVariable("EDITION",$this->lng->txt("cont_edition"));
180  $tmp_tpl->setVariable("AUTHORS",$this->lng->txt("authors"));
181 
182  if($show_full)
183  {
184  $this->ctrl->setParameterByClass("illmpresentationgui", "frame", "maincontent");
185  $action = $this->ctrl->getLinkTargetByClass("illmpresentationgui", "layout");
186  $params = array ('mode' => "view_full",
187  'action' => $action,
188  'target_id' => "$a_target_id");
189 
190  $tmp_tpl->setVariable("BOOKTITLE",$this->lng->txt("cont_booktitle"));
191  $tmp_tpl->setVariable("CROSS_REFERENCE",$this->lng->txt("cont_cross_reference"));
192  $tmp_tpl->setVariable("DETAILS",$this->lng->txt("cont_details"));
193  $tmp_tpl->setVariable("EDITOR",$this->lng->txt("editor"));
194  $tmp_tpl->setVariable("HOW_PUBLISHED",$this->lng->txt("cont_how_published"));
195  $tmp_tpl->setVariable("WHERE_PUBLISHED",$this->lng->txt("cont_where_published"));
196  $tmp_tpl->setVariable("INSTITUTION",$this->lng->txt("institution"));
197  $tmp_tpl->setVariable("JOURNAL",$this->lng->txt("cont_journal"));
198  $tmp_tpl->setVariable("KEYWORD",$this->lng->txt("cont_keyword"));
199  $tmp_tpl->setVariable("PAGES",$this->lng->txt("cont_pages"));
200  $tmp_tpl->setVariable("SCHOOL",$this->lng->txt("cont_school"));
201  $tmp_tpl->setVariable("MONTH",$this->lng->txt("cont_month"));
202  $tmp_tpl->setVariable("PUBLISHER",$this->lng->txt("cont_publisher"));
203  $tmp_tpl->setVariable("SERIES",$this->lng->txt("cont_series"));
204  $tmp_tpl->setVariable("SERIES_TITLE",$this->lng->txt("cont_series_title"));
205  $tmp_tpl->setVariable("SERIES_EDITOR",$this->lng->txt("cont_series_editor"));
206  $tmp_tpl->setVariable("SERIES_VOLUME",$this->lng->txt("cont_series_volume"));
207  $tmp_tpl->setVariable("YEAR",$this->lng->txt("cont_year"));
208  $tmp_tpl->setVariable("ISBN",$this->lng->txt("cont_isbn"));
209  $tmp_tpl->setVariable("URL",$this->lng->txt("cont_url"));
210  }
211  else
212  {
213  $this->ctrl->setParameterByClass("illmpresentationgui", "frame", "maincontent");
214  $action = $this->ctrl->getLinkTargetByClass("illmpresentationgui", "layout");
215  $params = array ('mode' => "view_simple",
216  'action' => $action);
217  $this->ctrl->clearParametersByClass("illmpresentationgui");
218  if($translations = $this->object->getTranslations())
219  {
220  foreach($translations as $tr_id)
221  {
222  $tmp_obj = ilObjectFactory::getInstanceByRefId($tr_id);
223 
224  $tmp_tpl->setCurrentBlock("TRANSLATION_ROW");
225  $tmp_tpl->setVariable("ROW_TITLE",$tmp_obj->getTitle());
226  $tmp_tpl->setVariable("ROW_ID",$tr_id);
227  $tmp_tpl->parseCurrentBlock();
228  unset($tmp_obj);
229  }
230  $tmp_tpl->setCurrentBlock("TRANSLATION");
231  $tmp_tpl->setVariable("TRANSLATION_HEADER",$this->lng->txt("cont_translations"));
232  $tmp_tpl->parseCurrentBlock();
233  }
234  $tmp_tpl->setVariable("DETAILS",$this->lng->txt("cont_details"));
235  $tmp_tpl->setVariable("SHOW",$this->lng->txt("cont_show"));
236  $tmp_tpl->setVariable("SHOW_CITATION",$this->lng->txt("cont_show_citation"));
237  $tmp_tpl->setVariable("GO",$this->lng->txt("go"));
238  }
239 
240  // SHOW MESSAGE
241  if($message)
242  {
243  ilUtil::sendInfo($message_text);
244  }
245  $xsl = $tmp_tpl->get();
246  $xml = $this->object->bib_obj->getXML();
247 
248  if(empty($xml))
249  {
250  return true;
251  }
252  $args = array( '/_xml' => $xml, '/_xsl' => $xsl );
253  $xh = xslt_create();
254 
255 
256  $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args, $params);
257  $this->tpl->setVariable("PAGE_CONTENT",$output);
258 
259  return $output;
260  }
261 
265  function export()
266  {
267  // BASE CLASS objectGUI IS INSTATIATING $this->object
268  #$this->object =& new ilObjDlBook($this->id, true);
269  $this->object->export($_GET["ref_id"]);
270  }
271 
279  function offlineexportform()
280  {
281  $this->tpl->addBlockfile("CONTENT", "offline_content", "tpl.offline_export.html", "Modules/LearningModule");
282  $this->tpl->touchBlock("offline_content");
283 
284  $this->tpl->setVariable("TXT_TYPE","Export-Type");
285 
286  if ($_GET["print"]==1)
287  {
288  $this->tpl->setVariable("TXT_ACTION","Digilib-Book - print");
289  $this->tpl->setVariable("TXT_PRINTEXPORT",$this->lng->txt("Print") );
290  $this->tpl->setVariable("PRINT_CHECKED","checked");
291  $this->tpl->setVariable("EXPORT_TARGET","_blank");
292  }
293  else
294  {
295  $this->tpl->setVariable("TXT_ACTION","Digilib-Book - download");
296  $this->tpl->setVariable("TXT_HTMLEXPORT",$this->lng->txt("HTML export") );
297  $this->tpl->setVariable("TXT_PDFEXPORT",$this->lng->txt("PDF export") );
298  $this->tpl->setVariable("TXT_XMLEXPORT",$this->lng->txt("XML export (only complete book)") );
299  $this->tpl->setVariable("OFFLINE_CHECKED","checked");
300  }
301 
302  $this->tpl->setVariable("TXT_PAGES",$this->lng->txt("Pages") );
303  $this->tpl->setVariable("TXT_PAGESALL",$this->lng->txt("all"));
304  $this->tpl->setVariable("TXT_PAGESCHAPTER",$this->lng->txt("chapter") );
305  if ($_GET["obj_id"] != "") $this->tpl->setVariable("TXT_PAGESPAGE",$this->lng->txt("this page"));
306  $this->tpl->setVariable("TXT_PAGESFROM",$this->lng->txt("pages from") );
307  $this->tpl->setVariable("TXT_PAGESTO",$this->lng->txt("to") );
308 
309  $this->tpl->setVariable("BTN_VALUE",$this->lng->txt("start export") );
310  $this->tpl->setVariable("BTN_C_VALUE",$this->lng->txt("cancel") );
311 
312  $this->ctrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
313  $this->tpl->setVariable("EXPORT_ACTION",
314  $this->ctrl->getLinkTargetByClass("illmpresentationgui", "offlineexport"));
315  $this->ctrl->clearParametersByClass("illmpresentationgui");
316  $this->tpl->show();
317 
318  }
319  function setilCitationMenu()
320  {
321  //
322  }
323 
327  // ok
328  function setilLMMenu()
329  {
330  include_once("./Services/UICore/classes/class.ilTemplate.php");
331 
332  $tpl_menu =& new ilTemplate("tpl.lm_menu.html", true, true, "Modules/LearningModule");
333 
334  $tpl_menu->setCurrentBlock("lm_menu_btn");
335 
336  // menu for abstract page
337  if ($_POST["action"]=="details" && count($_POST["target"])==1)
338  {
339  $this->ctrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
340  $tpl_menu->setVariable("BTN_LINK",
341  $this->ctrl->getLinkTargetByClass("illmpresentationgui", "exportbibinfo"));
342  $tpl_menu->setVariable("BTN_TXT",$this->lng->txt("download"));
343  $tpl_menu->parseCurrentBlock();
344 
345  $this->ctrl->setParameterByClass("illmpresentationgui", "print", "1");
346  $tpl_menu->setVariable("BTN_LINK",
347  $this->ctrl->getLinkTargetByClass("illmpresentationgui", "exportbibinfo"));
348  $tpl_menu->setVariable("BTN_TXT",$this->lng->txt("print"));
349  $tpl_menu->parseCurrentBlock();
350  $this->ctrl->clearParametersByClass("illmpresentationgui");
351  }
352  else
353  {
354  // menu for normal pages
355  $this->ctrl->setParameterByClass("illmpresentationgui", "obj_id", $_GET["obj_id"]);
356  $tpl_menu->setVariable("BTN_LINK",
357  $this->ctrl->getLinkTargetByClass("illmpresentationgui", "offlineexportform"));
358  $tpl_menu->setVariable("BTN_TXT",$this->lng->txt("download"));
359  $tpl_menu->parseCurrentBlock();
360 
361  $this->ctrl->setParameterByClass("illmpresentationgui", "print", "1");
362  $tpl_menu->setVariable("BTN_LINK",
363  $this->ctrl->getLinkTargetByClass("illmpresentationgui", "offlineexportform"));
364  $tpl_menu->setVariable("BTN_TXT",$this->lng->txt("print") );
365  $tpl_menu->parseCurrentBlock();
366 
367  $this->ctrl->clearParametersByClass("illmpresentationgui");
368  }
369  $tpl_menu->setCurrentBlock("btn_row");
370  $tpl_menu->parseCurrentBlock();
371 
372  return $tpl_menu->get();
373 
374  }
375 
376  function properties()
377  {
378  // OVERWRITTEN METHOD, TO ADD TRANSLATIONS
380 
381  // BUTTONS
382  $this->tpl->setVariable("BTN1_NAME","addTranslation");
383  $this->tpl->setVariable("BTN1_TEXT",$this->lng->txt("cont_new_assignment"));
384 
385  if($trs = $this->object->getTranslations())
386  {
387  include_once "./Services/Object/classes/class.ilObjectFactory.php";
388  foreach($trs as $tr)
389  {
390  $tmp_obj = ilObjectFactory::getInstanceByRefId($tr);
391  $this->tpl->setCurrentBlock("TRANSLATION_ROW");
392  $this->tpl->setVariable("ROW_ID",$tr);
393  $this->tpl->setVariable("ROW_TITLE",$tmp_obj->getTitle());
394  $this->tpl->parseCurrentBlock();
395 
396  unset($tmp_obj);
397  }
398  $this->tpl->setVariable("BTN2_NAME","deleteTranslation");
399  $this->tpl->setVariable("BTN2_TEXT",$this->lng->txt("cont_del_assignment"));
400  }
401  $this->tpl->setCurrentBlock("TRANSLATION");
402  $this->tpl->setVariable("TRANSLATION_HEADER",$this->lng->txt("cont_translations"));
403  $this->tpl->parseCurrentBlock();
404  }
405 
406  function addTranslation()
407  {
408  $this->setTabs();
409 
410  // SEARCH CANCELED
411  if(isset($_POST["cancel"]))
412  {
413  $this->ctrl->redirect($this, "properties");
414  exit;
415  }
416  if(isset($_POST["select"]))
417  {
418  if(is_array($_POST["id"]))
419  {
420  foreach($_POST["id"] as $id)
421  {
422  if($id != $this->object->getRefId())
423  {
424  $this->object->addTranslation($id);
425  }
426  }
427  ilUtil::sendSuccess($this->lng->txt("cont_translations_assigned"),true);
428  $this->ctrl->redirect($this, "properties");
429  exit;
430  }
431  }
432  $show_search = true;
433 
434  $this->tpl->addBlockfile("ADM_CONTENT","adm_content","tpl.dbk_search_translation.html","Modules/LearningModule");
435  $this->tpl->setVariable("F_ACTION",
436  $this->ctrl->getLinkTarget($this, "addTranslation"));
437 
438  if($_POST["search_str"])
439  {
440  $result = $this->searchTranslation($_POST["search_str"]);
441 
442  switch(count($result["meta"]))
443  {
444  case 0:
445  ilUtil::sendFailure($this->lng->txt("cont_no_object_found"));
446  break;
447  case 1:
448  if($result["meta"][0]["id"] == $this->object->getRefId())
449  {
450  ilUtil::sendFailure($this->lng->txt("cont_no_assign_itself"));
451  break;
452  }
453  default:
455  $show_search = false;
456  break;
457  }
458  }
459  if($show_search)
460  {
461  $this->lng->loadLanguageModule("search");
462 
463  $this->tpl->setVariable("SEARCH_TXT",$this->lng->txt("cont_insert_search"));
464  $this->tpl->setVariable("SEARCH_ASSIGN_TR",$this->lng->txt("cont_assign_translation"));
465  $this->tpl->setVariable("SEARCH_SEARCH_TERM",$this->lng->txt("search_search_term"));
466  $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("search"));
467  $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
468  }
469 
470  }
471 
472  function deleteTranslation()
473  {
474  if(!$_POST["id"])
475  {
476  ilUtil::sendFailure($this->lng->txt("cont_select_one_translation"));
477  $this->ctrl->redirect($this, "properties");
478  exit;
479  }
480  $this->object->deleteTranslations($_POST["id"]);
481  ilUtil::sendSuccess($this->lng->txt("cont_assignments_deleted"));
482  $this->ctrl->redirect($this, "properties");
483  exit;
484  }
485  // PRIVATE METHODS
486  function showTranslationSelect($a_result)
487  {
488  include_once "./Services/Object/classes/class.ilObjectFactory.php";
489 
490  foreach($a_result["meta"] as $book)
491  {
492  if(!($path = $this->getContextPath($book["id"])))
493  {
494  continue;
495  }
496  $tmp_obj = ilObjectFactory::getInstanceByRefId($book["id"]);
497 
498  $this->tpl->setCurrentBlock("TR_SELECT_ROW");
499  $this->tpl->setVariable("ROW_ID",$book["id"]);
500  $this->tpl->setVariable("ROW_TITLE",$tmp_obj->getTitle());
501  $this->tpl->setVariable("ROW_DESCRIPTION",$tmp_obj->getDescription());
502  $this->tpl->setVariable("ROW_KONTEXT",$path);
503  $this->tpl->parseCurrentBlock();
504 
505  unset($tmp_obj);
506  }
507  $this->tpl->setCurrentBlock("TR_SELECT");
508  $this->tpl->setVariable("SELECT_TXT",$this->lng->txt("cont_select_translation"));
509  $this->tpl->setVariable("SELECT_TITLE",$this->lng->txt("title"));
510  $this->tpl->setVariable("SELECT_DESCRIPTION",$this->lng->txt("description"));
511  $this->tpl->setVariable("SELECT_KONTEXT",$this->lng->txt("context"));
512 
513  $this->tpl->setVariable("BTN1_VALUE",$this->lng->txt("assign"));
514  $this->tpl->setVariable("BTN2_VALUE",$this->lng->txt("cancel"));
515  $this->tpl->parseCurrentBlock();
516 
517  }
518 
519  function searchTranslation($a_search_str)
520  {
521  include_once("./Services/Search/classes/class.ilSearch.php");
522 
523  $search =& new ilSearch($_SESSION["AccountId"]);
524  $search->setPerformUpdate(false);
525  $search->setSearchString($_POST["search_str"]);
526  $search->setCombination("and");
527  $search->setSearchFor(array(0 => 'dbk'));
528  $search->setSearchIn(array('dbk' => 'meta'));
529  $search->setSearchType('new');
530 
531  if($search->validate($message))
532  {
533  $search->performSearch();
534  }
535  else
536  {
537  ilUtil::sendInfo($message,true);
538  $this->ctrl->redirect($this, "addTranslation");
539  exit;
540  }
541  return $search->getResultByType('dbk');
542  }
543 
544  function getContextPath($a_endnode_id, $a_startnode_id = 1)
545  {
546  $path = "";
547 
548  include_once("./Services/Tree/classes/class.ilTree.php");
549 
550  $tree = new ilTree(1);
551 
552  if(!$tree->isInTree($a_startnode_id) or !$tree->isInTree($a_endnode_id))
553  {
554  return '';
555  }
556  $tmpPath = $tree->getPathFull($a_endnode_id, $a_startnode_id);
557 
558  // count -1, to exclude the learning module itself
559  for ($i = 1; $i < (count($tmpPath) - 1); $i++)
560  {
561  if ($path != "")
562  {
563  $path .= " > ";
564  }
565 
566  $path .= $tmpPath[$i]["title"];
567  }
568  return $path;
569  }
570 
571  function __checkCitationPost(&$message)
572  {
573  if(!$_POST["pgt_id"])
574  {
575  $message = "SELECT ONE<br />";
576  return false;
577  }
578  return true;
579  }
580 
582  {
583  if(!is_array($_POST["pgt_id"]))
584  {
585  return array();
586  }
587  foreach($_POST["pgt_id"] as $key => $id)
588  {
589  switch($_POST["ct_option"][$key])
590  {
591  case "single":
592  $output[] = array("text" => $id,
593  "start" => $key,
594  "end" => $key);
595  break;
596  case "f":
597  $output[] = array("text" => $id."f",
598  "start" => $key,
599  "end" => $key);
600  break;
601  case "ff":
602  $output[] = array("text" => $id."ff",
603  "start" => $key,
604  "end" => $key);
605  break;
606  case "from":
607  $start = $id."-";
608  $start_v = $key;
609  break;
610  case "to":
611  if($start)
612  {
613  $output[] = array("text" => $start."".$id,
614  "start" => $start_v,
615  "end" => $key);
616  }
617  unset($start);
618  unset($start_v);
619  break;
620  }
621  }
622  return $output ? $output : array();
623  }
624 
625  function __applyCitationText($page_xml,$a_start,$a_end)
626  {
627  global $tpl;
628 
629  return true;
630 
631  $xsl = file_get_contents($tpl->tplPath."/tpl.citation_paragraph.xsl");
632  $args = array( '/_xml' => $page_xml, '/_xsl' => $xsl );
633  $xh = xslt_create();
634  $params = array ('start_id' => $a_start,
635  'end_id' => $a_end);
636 
637  $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args, $params);
638 
639  return $output;
640  }
641 }
642 
643 ?>