• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

content/classes/class.ilGlossaryTerm.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 
00024 
00033 class ilGlossaryTerm
00034 {
00035         var $ilias;
00036         var $lng;
00037         var $tpl;
00038 
00039         var $id;
00040         var $glossary;
00041         var $term;
00042         var $language;
00043         var $glo_id;
00044         var $import_id;
00045 
00050         function ilGlossaryTerm($a_id = 0)
00051         {
00052                 global $lng, $ilias, $tpl;
00053 
00054                 $this->lng =& $lng;
00055                 $this->ilias =& $ilias;
00056                 $this->tpl =& $tpl;
00057 
00058                 $this->id = $a_id;
00059                 $this->type = "term";
00060                 if ($a_id != 0)
00061                 {
00062                         $this->read();
00063                 }
00064         }
00065 
00069         function read()
00070         {
00071                 $q = "SELECT * FROM glossary_term WHERE id = '".$this->id."'";
00072                 $term_set = $this->ilias->db->query($q);
00073                 $term_rec = $term_set->fetchRow(DB_FETCHMODE_ASSOC);
00074 
00075                 $this->setTerm($term_rec["term"]);
00076                 $this->setImportId($term_rec["import_id"]);
00077                 $this->setLanguage($term_rec["language"]);
00078                 $this->setGlossaryId($term_rec["glo_id"]);
00079 
00080         }
00081 
00089         function _getIdForImportId($a_import_id)
00090         {
00091                 global $ilDB;
00092                 
00093                 $q = "SELECT * FROM glossary_term WHERE import_id = '".$a_import_id."'".
00094                         " ORDER BY create_date DESC LIMIT 1";
00095                 $term_set = $ilDB->query($q);
00096                 while ($term_rec = $term_set->fetchRow(DB_FETCHMODE_ASSOC))
00097                 {
00098                         $glo_id = ilGlossaryTerm::_lookGlossaryID($term_rec["id"]);
00099 
00100                         if (ilObject::_hasUntrashedReference($glo_id))
00101                         {
00102                                 return $term_rec["id"];
00103                         }
00104                 }
00105 
00106                 return 0;
00107         }
00108         
00109         
00117         function _exists($a_id)
00118         {
00119                 global $ilDB;
00120                 
00121                 include_once("content/classes/Pages/class.ilInternalLink.php");
00122                 if (is_int(strpos($a_id, "_")))
00123                 {
00124                         $a_id = ilInternalLink::_extractObjIdOfTarget($a_id);
00125                 }
00126 
00127                 $q = "SELECT * FROM glossary_term WHERE id = '".$a_id."'";
00128                 $obj_set = $ilDB->query($q);
00129                 if ($obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC))
00130                 {
00131                         return true;
00132                 }
00133                 else
00134                 {
00135                         return false;
00136                 }
00137 
00138         }
00139 
00140 
00146         function setId($a_id)
00147         {
00148                 $this->id = $a_id;
00149         }
00150 
00151 
00157         function getId()
00158         {
00159                 return $this->id;
00160         }
00161 
00167         function setGlossary(&$a_glossary)
00168         {
00169                 $this->glossary =& $a_glossary;
00170                 $this->setGlossaryId($a_glossary->getId());
00171         }
00172 
00173 
00179         function setGlossaryId($a_glo_id)
00180         {
00181                 $this->glo_id = $a_glo_id;
00182         }
00183 
00184 
00190         function getGlossaryId()
00191         {
00192                 return $this->glo_id;
00193         }
00194 
00195 
00201         function setTerm($a_term)
00202         {
00203                 $this->term = $a_term;
00204         }
00205 
00206 
00212         function getTerm()
00213         {
00214                 return $this->term;
00215         }
00216 
00217 
00223         function setLanguage($a_language)
00224         {
00225                 $this->language = $a_language;
00226         }
00227 
00232         function getLanguage()
00233         {
00234                 return $this->language;
00235         }
00236 
00237 
00241         function setImportId($a_import_id)
00242         {
00243                 $this->import_id = $a_import_id;
00244         }
00245 
00246 
00250         function getImportId()
00251         {
00252                 return $this->import_id;
00253         }
00254 
00255 
00259         function create()
00260         {
00261                 $q = "INSERT INTO glossary_term (glo_id, term, language, import_id, create_date, last_update)".
00262                         " VALUES ('".$this->getGlossaryId()."', '".ilUtil::prepareDBString($this->term).
00263                         "', '".$this->language."','".$this->getImportId()."',now(), now())";
00264                 $this->ilias->db->query($q);
00265                 $this->setId($this->ilias->db->getLastInsertId());
00266         }
00267 
00268 
00272         function delete()
00273         {
00274                 require_once("content/classes/class.ilGlossaryDefinition.php");
00275                 $defs = ilGlossaryDefinition::getDefinitionList($this->getId());
00276                 foreach($defs as $def)
00277                 {
00278                         $def_obj =& new ilGlossaryDefinition($def["id"]);
00279                         $def_obj->delete();
00280                 }
00281                 $q = "DELETE FROM glossary_term ".
00282                         " WHERE id = '".$this->getId()."'";
00283                 $this->ilias->db->query($q);
00284         }
00285 
00286 
00290         function update()
00291         {
00292                 $q = "UPDATE glossary_term SET ".
00293                         " glo_id = '".$this->getGlossaryId()."', ".
00294                         " term = '".ilUtil::prepareDBString($this->getTerm())."', ".
00295                         " import_id = '".$this->getImportId()."', ".
00296                         " language = '".$this->getLanguage()."', ".
00297                         " last_update = now() ".
00298                         " WHERE id = '".$this->getId()."'";
00299                 $this->ilias->db->query($q);
00300         }
00301 
00305         function _lookGlossaryID($term_id)
00306         {
00307                 global $ilDB;
00308 
00309                 $query = "SELECT * FROM glossary_term WHERE id = '".$term_id."'";
00310                 $obj_set = $ilDB->query($query);
00311                 $obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC);
00312 
00313                 return $obj_rec["glo_id"];
00314         }
00315 
00319         function _lookGlossaryTerm($term_id)
00320         {
00321                 global $ilDB;
00322 
00323                 $query = "SELECT * FROM glossary_term WHERE id = '".$term_id."'";
00324                 $obj_set = $ilDB->query($query);
00325                 $obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC);
00326 
00327                 return $obj_rec["term"];
00328         }
00329         
00333         function _lookLanguage($term_id)
00334         {
00335                 global $ilDB;
00336 
00337                 $query = "SELECT * FROM glossary_term WHERE id = '".$term_id."'";
00338                 $obj_set = $ilDB->query($query);
00339                 $obj_rec = $obj_set->fetchRow(DB_FETCHMODE_ASSOC);
00340 
00341                 return $obj_rec["language"];
00342         }
00343 
00351         function getTermList($a_glo_id, $searchterm="")
00352         {
00353                 global $ilDB;
00354                 
00355                 $terms = array();
00356                 
00357                 $searchterm = (!empty ($searchterm))?" AND term like '$searchterm%'":"";
00358                 
00359                 // meta glossary
00360                 if (is_array($a_glo_id))
00361                 {
00362                         $where = "IN(".implode(",",$a_glo_id).") ";
00363                 }
00364                 else
00365                 {
00366                         $where = "='".$a_glo_id."' ";
00367                 }
00368                 
00369                 $q = "SELECT * FROM glossary_term WHERE glo_id ".$where.$searchterm." ORDER BY language, term";
00370                 $term_set = $ilDB->query($q);
00371 
00372                 while ($term_rec = $term_set->fetchRow(DB_FETCHMODE_ASSOC))
00373                 {
00374                         $terms[] = array("term" => $term_rec["term"],
00375                                 "language" => $term_rec["language"], "id" => $term_rec["id"], "glo_id" => $term_rec["glo_id"]);
00376                 }
00377                 return $terms;
00378         }
00379 
00383         function exportXML(&$a_xml_writer, $a_inst)
00384         {
00385                 //include_once("content/classes/class..php");
00386 
00387                 $attrs = array();
00388                 $attrs["Language"] = $this->getLanguage();
00389                 $attrs["Id"] = "il_".IL_INST_ID."_git_".$this->getId();
00390                 $a_xml_writer->xmlStartTag("GlossaryItem", $attrs);
00391 
00392                 $attrs = array();
00393                 $a_xml_writer->xmlElement("GlossaryTerm", $attrs, $this->getTerm());
00394 
00395                 $defs = ilGlossaryDefinition::getDefinitionList($this->getId());
00396 
00397                 foreach($defs as $def)
00398                 {
00399                         $definition = new ilGlossaryDefinition($def["id"]);
00400                         $definition->exportXML($a_xml_writer, $a_inst);
00401                 }
00402 
00403                 $a_xml_writer->xmlEndTag("GlossaryItem");
00404         }
00405 
00411         function _goto($a_target,$a_type)
00412         {
00413                 global $rbacsystem, $ilErr, $lng;
00414 
00415 
00416                 if ($a_type == "glo")
00417                 {
00418                         include_once 'classes/class.ilSearch.php';
00419                         
00420                         // Added this additional check (ParentConditions) to avoid calls of objects inside e.g courses.
00421                         // Will be replaced in future releases by ilAccess::checkAccess()
00422                         if (!$rbacsystem->checkAccess("read", $a_target) || !ilSearch::_checkParentConditions($a_target))
00423                         {
00424                                 $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
00425                         }
00426                         ilUtil::redirect(
00427                                         "./content/glossary_presentation.php?ref_id=".$a_target);                               
00428                 
00429                 }
00430 
00431                 // determine learning object
00432                 $glo_id = ilGlossaryTerm::_lookGlossaryID ($a_target);//::_lookupContObjID($a_target);
00433 
00434                 // get all references
00435                 $ref_ids = ilObject::_getAllReferences($glo_id);
00436 
00437                 // check read permissions
00438                 foreach ($ref_ids as $ref_id)
00439                 {
00440                         include_once 'classes/class.ilSearch.php';
00441                         
00442                         // Added this additional check (ParentConditions) to avoid calls of objects inside e.g courses.
00443                         // Will be replaced in future releases by ilAccess::checkAccess()
00444                         if ($rbacsystem->checkAccess("read", $ref_id) and ilSearch::_checkParentConditions($ref_id))
00445                         {
00446                                 ilUtil::redirect(
00447                                         "./content/glossary_presentation.php?cmd=listDefinitions&term_id=".$a_target."&ref_id=".$ref_id);                               
00448                         }
00449                 }
00450 
00451                 $ilErr->raiseError($lng->txt("msg_no_perm_read_lm"), $ilErr->FATAL);
00452         }
00453 
00454 
00455 } // END class ilGlossaryTerm
00456 
00457 ?>

Generated on Fri Dec 13 2013 10:18:29 for ILIAS Release_3_5_x_branch .rev 46805 by  doxygen 1.7.1