course)) { error("Course is misconfigured"); } if (! $glossary = get_record("glossary", "id", $cm->instance)) { error("Course module is incorrect"); } require_login($course->id); if (!$cm->visible and !isteacher($course->id)) { notice(get_string("activityiscurrentlyhidden")); } add_to_log($course->id, "glossary", "view", "view.php?id=$cm->id&tab=$tab", "$glossary->id"); /// checking for valid values for sortorder and sortkey if ( $sortorder = strtolower($sortorder) ) { if ($sortorder != 'asc' and $sortorder != 'desc') { $sortorder = ''; } else { $l = ''; $search = ''; } } if ( $sortkey = strtoupper($sortkey) ) { if ($sortkey != 'CREATION' and $sortkey != 'UPDATE') { $sortkey = ''; } } if ( $sortkey or $glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS) { if ( !$sortkey and $glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS) { $sortkey = 'CREATION'; $sortorder = 'asc'; } if ( !$sortorder ) { $sortorder = 'asc'; } } else { $orderby = 'concept ASC'; } // creating matrix of words to search if apply $search = trim(strip_tags($search)); if ($search and !$eid) { $l = ''; $searchterms = explode(' ', $search); // Search for words independently foreach ($searchterms as $key => $searchterm) { if (strlen($searchterm) < 2) { unset($searchterms[$key]); } } $search = trim(implode(' ', $searchterms)); $tab = GLOSSARY_STANDARD_VIEW; } elseif ($eid) { $search = ''; } $alphabet = explode('|', get_string("alphabet","glossary")); if ($l == '' and $search == '' and $sortkey == '' and !$eid) { // if the user is just entering the glossary... if ($tab != GLOSSARY_APPROVAL_VIEW) { $l = $alphabet[0]; } else { $l = 'ALL'; } } elseif ($eid) { $l = ''; } $category = ''; if ($tab == GLOSSARY_CATEGORY_VIEW) { $l = ''; if ($cat > 0) { $category = get_record("glossary_categories", "id", $cat); if (!$category) { $cat = ''; } } } /// Printing the page header if ($course->category) { $navigation = "id\">$course->shortname ->"; } $strglossaries = get_string("modulenameplural", "glossary"); $strglossary = get_string("modulename", "glossary"); $strallcategories = get_string("allcategories", "glossary"); $straddentry = get_string("addentry", "glossary"); $strnoentries = get_string("noentries", "glossary"); $strsearchconcept = get_string("searchconcept", "glossary"); $strsearchindefinition = get_string("searchindefinition", "glossary"); $strsearch = get_string("search"); print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname", "$navigation id>$strglossaries -> $glossary->name", "", "", true, update_module_button($cm->id, $course->id, $strglossary), navmenu($course, $cm)); print_heading($glossary->name); /// Info box if ( $glossary->intro ) { print_simple_box_start('center','70%'); echo format_text($glossary->intro); print_simple_box_end(); } /// Add button if (!isguest()) { if ( isteacher($course->id) or $glossary->studentcanpost ) { $options = array ("id" => "$cm->id"); echo '

'; print_single_button("edit.php", $options, $straddentry); echo '

'; } } echo '

'; /// Search box print_simple_box_start("center", "", $THEME->cellheading); echo '

'; echo '

'; echo ' '; echo ' '; echo ''; echo $strsearchindefinition; echo ''; echo '
'; echo '

'; print_simple_box_end(); /// Tabbed browsing sections echo '

'; $glossary_tCFG->TabTableBGColor = $THEME->cellheading; $glossary_tCFG->ActiveTabColor = $THEME->cellheading; $glossary_tCFG->InactiveTabColor = $THEME->cellcontent2; $glossary_tCFG->InactiveFontColor= $THEME->hidden; $glossary_tCFG->TabTableWidth = "70%"; $glossary_tCFG->TabsPerRow = 4; $glossary_tCFG->TabSeparation = 4; $data[GLOSSARY_STANDARD_VIEW]->link = "view.php?id=$id"; $data[GLOSSARY_STANDARD_VIEW]->caption = get_string("standardview", "glossary"); $data[GLOSSARY_CATEGORY_VIEW]->link = "view.php?id=$id&tab=".GLOSSARY_CATEGORY_VIEW; $data[GLOSSARY_CATEGORY_VIEW]->caption = get_string("categoryview", "glossary"); $data[GLOSSARY_DATE_VIEW]->link = "view.php?id=$id&tab=".GLOSSARY_DATE_VIEW; $data[GLOSSARY_DATE_VIEW]->caption = get_string("dateview", "glossary"); if (isteacher($course->id)) { $data[GLOSSARY_APPROVAL_VIEW]->caption = get_string("waitingapproval", "glossary"); $data[GLOSSARY_APPROVAL_VIEW]->link = ""; $hiddenentries = get_records_select("glossary_entries","glossaryid = $glossary->id and approved = 0"); if ($hiddenentries) { $data[GLOSSARY_APPROVAL_VIEW]->caption .= "
(" . count($hiddenentries) . " " . get_string("entries","glossary") . ")"; $data[GLOSSARY_APPROVAL_VIEW]->link = "view.php?id=$id&tab=".GLOSSARY_APPROVAL_VIEW; } elseif ( $tab == GLOSSARY_APPROVAL_VIEW ) { $tab = GLOSSARY_STANDARD_VIEW; } } elseif ( $tab == GLOSSARY_APPROVAL_VIEW ) { $tab = GLOSSARY_STANDARD_VIEW; } /// printing header of the current tab echo '

'; glossary_print_tabbed_table_start($data, $tab, $glossary_tCFG); switch ($tab) { case GLOSSARY_CATEGORY_VIEW: glossary_print_categories_menu($course, $cm, $glossary, $cat, $category); break; case GLOSSARY_APPROVAL_VIEW: glossary_print_approval_menu($cm, $glossary, $l, $sortkey, $sortorder,$tab); break; case GLOSSARY_DATE_VIEW: if (!$sortkey) { $sortkey = 'UPDATE'; } if (!$sortorder) { $sortorder = 'desc'; } case GLOSSARY_STANDARD_VIEW: default: glossary_print_alphabet_menu($cm, $glossary, $l, $sortkey, $sortorder,$tab); if ($search) { echo "

$strsearch: $search

"; } break; } echo '
'; /// Printing the entries switch ($tab) { case GLOSSARY_CATEGORY_VIEW: if ($cat == GLOSSARY_SHOW_ALL_CATEGORIES) { $sql = "SELECT gec.id gecid, gc.name, gc.id CID, ge.* FROM {$CFG->prefix}glossary_entries ge, {$CFG->prefix}glossary_entries_categories gec, {$CFG->prefix}glossary_categories gc WHERE (ge.glossaryid = '$glossary->id' or ge.sourceglossaryid = '$glossary->id') AND gec.entryid = ge.id AND gc.id = gec.categoryid"; if ( $glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS ) { $sql .= ' ORDER BY gc.name, ge.timecreated'; } else { $sql .= ' ORDER BY gc.name, ge.concept'; } $allentries = get_records_sql($sql); } else { if ( $cat == GLOSSARY_SHOW_NOT_CATEGORISED ) { $allentries = glossary_get_entries_sorted($glossary, '',$orderby); } else { $allentries = glossary_get_entries_by_category($glossary, $cat, '',$orderby); } } $currentcategory = ""; break; case GLOSSARY_APPROVAL_VIEW: $allentries = glossary_get_entries_sorted($glossary, 'approved = 0',$orderby); $currentletter = ''; break; case GLOSSARY_DATE_VIEW: $l = 'ALL'; case GLOSSARY_STANDARD_VIEW: default: if ($search) { // looking for a term $allentries = glossary_search_entries($searchterms, $glossary, $includedefinition); } elseif ($eid) { // looking for an entry $allentries = get_records_select("glossary_entries", "id = $eid"); } elseif ( $l or $sortkey ) { if ($sortkey == 'CREATION') { $orderby = "timecreated $sortorder"; } else { $orderby = "timemodified $sortorder"; } $where = ''; if ($l != 'ALL' and $l != 'SPECIAL') { switch ($CFG->dbtype) { case 'postgres7': $where = 'substr(ucase(concept),1,' . strlen($l) . ') = \'' . strtoupper($l) . '\''; break; case 'mysql': $where = 'left(ucase(concept),' . strlen($l) . ") = '$l'"; break; default: $where = ''; } } $allentries = glossary_get_entries_sorted($glossary, $where,$orderby); } $currentletter = ''; break; } $dumpeddefinitions = 0; if ($allentries) { if ($glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS) { echo '
'; } foreach ($allentries as $entry) { $dumptoscreen = 0; $firstletter = strtoupper(substr(ltrim($entry->concept), 0, strlen($l))); if ($l) { if ($l == 'ALL' or $sortkey == 'CREATION' or $sortkey == 'UPDATE' or $firstletter == $l) { if ($currentletter != $firstletter[0]) { if ($entry->approved or ($USER->id == $entry->userid and !isteacher($course->id)) or $tab == GLOSSARY_APPROVAL_VIEW) { $currentletter = $firstletter[0]; if ($glossary->displayformat == GLOSSARY_FORMAT_SIMPLE) { if ($dumpeddefinitions > 0) { echo '

'; } echo "\n

cellheading2\">"; } if ($l == 'ALL' and $glossary->displayformat != GLOSSARY_FORMAT_CONTINUOUS) { echo "$currentletter"; } if ($glossary->displayformat == GLOSSARY_FORMAT_SIMPLE) { echo '
'; if ($dumpeddefinitions > 0) { echo '
'; } } } } $dumptoscreen = 1; } elseif ($l == 'SPECIAL' and ord($firstletter) != ord('Ñ') and (ord($firstletter) < ord('A') or ord($firstletter) > ord('Z'))) { $dumptoscreen = 1; } } else { if ($tab == GLOSSARY_CATEGORY_VIEW) { if ($category) { // if we are browsing a category $dumptoscreen = 1; } else { if ($cat == GLOSSARY_SHOW_NOT_CATEGORISED) { // Not categorized if (! record_exists("glossary_entries_categories", "entryid", $entry->id)) { $dumptoscreen = 1; } } else { // All categories if ($currentcategory != $entry->CID) { if ($entry->approved or ($USER->id == $entry->userid and !isteacher($course->id)) or $tab == GLOSSARY_APPROVAL_VIEW) { $currentcategory = $entry->CID; if ($glossary->displayformat == GLOSSARY_FORMAT_SIMPLE) { if ($dumpeddefinitions > 0) { echo '

'; } echo "\n

cellheading2\">"; } if ( $glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS ) { echo '
'; } echo "$entry->name"; if ( $glossary->displayformat == GLOSSARY_FORMAT_CONTINUOUS ) { echo '

'; } } } $dumptoscreen = 1; if ($glossary->displayformat == GLOSSARY_FORMAT_SIMPLE) { echo '

'; if ($dumpeddefinitions > 0) { echo '
'; } } $dumptoscreen = 1; } } } else { $dumptoscreen = 1; } } if ($dumptoscreen) { $dumpeddefinitions++; $concept = $entry->concept; $definition = $entry->definition; if ($dumpeddefinitions == 1) { if ($glossary->displayformat == GLOSSARY_FORMAT_SIMPLE) { echo '
'; } } if ($search) { $entry->concept = highlight($search, $concept); $entry->definition = highlight($search, $definition); } glossary_print_entry($course, $cm, $glossary, $entry, $tab, $cat); if ($glossary->displayformat != GLOSSARY_FORMAT_SIMPLE) { echo '

'; } } } } if (! $dumpeddefinitions) { print_simple_box_start("center", "70%", "$THEME->cellheading2"); if (!$search) { echo "

$strnoentries
"; } else { echo '
'; print_string("searchhelp"); echo '
'; } print_simple_box_end(); } else { switch ($glossary->displayformat) { case GLOSSARY_FORMAT_CONTINUOUS: echo '
'; break; case GLOSSARY_FORMAT_SIMPLE: echo '
'; break; } } echo ''; glossary_print_tabbed_table_end(); /// Finish the page print_footer($course); ?>