title = get_string('blockname','block_glossary_random'); $this->version = 2005010300; } function specialization() { global $CFG; $this->course = get_record('course', 'id', $this->instance->pageid); // load userdefined title and make sure it's never empty if (empty($this->config->title)) { $this->title = get_string('blockname','block_glossary_random'); } else { $this->title = $this->config->title; } if (empty($this->config->glossary)) { return false; } if (!isset($this->config->nexttime)) { $this->config->nexttime = 0; } //check if it's time to put a new entry in cache if (time() > $this->config->nexttime) { // place glossary concept and definition in $pref->cache if (!$numberofentries = count_records('glossary_entries','glossaryid',$this->config->glossary, 'approved',1)) { $this->config->cache = get_string('noentriesyet','block_glossary_random'); parent::instance_config_save($this->config); } switch ($this->config->type) { case BGR_RANDOMLY: $i = rand(1,$numberofentries); $LIMIT = sql_paging_limit($i-1, 1); $SORT = 'ASC'; break; case BGR_NEXTONE: if (isset($this->config->previous)) { $i = $this->config->previous + 1; } else { $i = 1; } if ($i > $numberofentries) { // Loop back to beginning $i = 1; } $LIMIT = sql_paging_limit($i-1, 1); $SORT = 'ASC'; break; default: // BGR_LASTMODIFIED $i = $numberofentries; $LIMIT = 'LIMIT 1'; // The last one $SORT = 'DESC'; break; } if ($entry = get_record_sql(' SELECT concept, definition, format '. ' FROM '.$CFG->prefix.'glossary_entries'. ' WHERE glossaryid = '.$this->config->glossary. ' AND approved = 1 '. 'ORDER BY timemodified '.$SORT.' '.$LIMIT)) { $text = "$entry->concept
"; $text .= format_text($entry->definition, $entry->format); $this->config->nexttime = usergetmidnight(time())+60*60*24*$this->config->refresh; $this->config->previous = $i; } else { $text = get_string('noentriesyet','block_glossary_random'); } // store the text $this->config->cache= $text; parent::instance_config_save($this->config); } } function instance_allow_multiple() { // Are you going to allow multiple instances of each block? // If yes, then it is assumed that the block WILL USE per-instance configuration return true; } function instance_config_print() { global $CFG; if (empty($this->config->nexttime)) { // ... teacher has not yet configured the block, let's put some default values here to explain things $this->config->title = get_string('blockname','block_glossary_random'); $this->config->refresh = 0; $this->config->cache= get_string('notyetconfigured','block_glossary_random'); $this->config->addentry=get_string('addentry', 'block_glossary_random'); $this->config->viewglossary=get_string('viewglossary', 'block_glossary_random'); $this->config->invisible=get_string('invisible', 'block_glossary_random'); } // select glossaries to put in dropdown box ... $glossaries = get_records_select_menu('glossary', 'course='.$this->course->id,'name','id,name'); // and select quotetypes to put in dropdown box $type[0] = get_string('random','block_glossary_random'); $type[1] = get_string('lastmodified','block_glossary_random'); $type[2] = get_string('nextone','block_glossary_random'); $this->config->nexttime = usergetmidnight(time())+24*60*60*$this->config->refresh; // display the form if (is_file($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html')) { print_simple_box_start('center', '', '', 5, 'blockconfigglobal'); include($CFG->dirroot .'/blocks/'. $this->name() .'/config_instance.html'); print_simple_box_end(); } else { notice(get_string('blockconfigbad'), str_replace('blockaction=', 'dummy=', qualified_me())); } return true; } function get_content() { global $USER, $CFG; if (empty($this->config->glossary)) { $this->content->text = get_string('notyetconfigured','block_glossary_random'); $this->content->footer = ''; return $this->content; } if (empty($this->config->cache)) { $this->config->cache = ''; } if ($this->content !== NULL) { return $this->content; } $this->content = new stdClass; $this->content->text = $this->config->cache; // place link to glossary in the footer if the glossary is visible $glossaryid = $this->config->glossary; $glossary=get_record('glossary', 'id', $glossaryid); $studentcanpost = $glossary->studentcanpost; //needed to decide on which footer //Create a temp valid module structure (course,id) $tempmod->course = $this->course->id; $tempmod->id = $glossaryid; //Obtain the visible property from the instance if (instance_is_visible('glossary', $tempmod)) { $cm = get_coursemodule_from_instance('glossary',$glossaryid, $this->course->id) ; if ($studentcanpost) { $footertext = $this->config->addentry; } else { $footertext = $this->config->viewglossary; } $this->content->footer = ''.$footertext.''; // otherwise just place some text, no link } else { $this->content->footer = $this->config->invisible; } return $this->content; } function hide_header() { if (empty($this->config->title)) { return true; } return false; } } ?>