| Línea 47... | Línea 47... | 
          
            | 47 | // Glossary displayformats.
 | 47 | // Glossary displayformats.
 | 
          
            | 48 | define('GLOSSARY_CONTINUOUS', 'continuous');
 | 48 | define('GLOSSARY_CONTINUOUS', 'continuous');
 | 
          
            | 49 | define('GLOSSARY_DICTIONARY', 'dictionary');
 | 49 | define('GLOSSARY_DICTIONARY', 'dictionary');
 | 
          
            | 50 | define('GLOSSARY_FULLWITHOUTAUTHOR', 'fullwithoutauthor');
 | 50 | define('GLOSSARY_FULLWITHOUTAUTHOR', 'fullwithoutauthor');
 | 
          
            | Línea 51... | Línea -... | 
          
            | 51 |  
 | - |   | 
          
            | 52 | require_once(__DIR__ . '/deprecatedlib.php');
 | - |   | 
          
            | 53 |  
 | 51 |  
 | 
          
            | 54 | /// STANDARD FUNCTIONS ///////////////////////////////////////////////////////////
 | 52 | /// STANDARD FUNCTIONS ///////////////////////////////////////////////////////////
 | 
          
            | 55 | /**
 | 53 | /**
 | 
          
            | 56 |  * @global object
 | 54 |  * @global object
 | 
          
            | 57 |  * @param object $glossary
 | 55 |  * @param object $glossary
 | 
          
            | Línea 861... | Línea 859... | 
          
            | 861 |  
 | 859 |  
 | 
          
            | 862 |     return grade_update('mod/glossary', $glossary->course, 'mod', 'glossary', $glossary->id, 0, NULL, array('deleted'=>1));
 | 860 |     return grade_update('mod/glossary', $glossary->course, 'mod', 'glossary', $glossary->id, 0, NULL, array('deleted'=>1));
 | 
          
            | Línea 863... | Línea 861... | 
          
            | 863 | }
 | 861 | }
 | 
          
            | 864 |  
 | - |   | 
          
            | 865 | /**
 | - |   | 
          
            | 866 |  * @deprecated since Moodle 3.8
 | - |   | 
          
            | 867 |  */
 | - |   | 
          
            | 868 | function glossary_scale_used() {
 | - |   | 
          
            | 869 |     throw new coding_exception('glossary_scale_used() can not be used anymore. Plugins can implement ' .
 | - |   | 
          
            | 870 |         '<modname>_scale_used_anywhere, all implementations of <modname>_scale_used are now ignored');
 | - |   | 
          
            | 871 | }
 | - |   | 
          
            | 872 |  
 | 862 |  
 | 
          
            | 873 | /**
 | 863 | /**
 | 
          
            | 874 |  * Checks if scale is being used by any instance of glossary
 | 864 |  * Checks if scale is being used by any instance of glossary
 | 
          
            | 875 |  *
 | 865 |  *
 | 
          
            | 876 |  * This is used to find out if scale used anywhere
 | 866 |  * This is used to find out if scale used anywhere
 | 
          
            | Línea 1365... | Línea 1355... | 
          
            | 1365 |     $icons   = '';
 | 1355 |     $icons   = '';
 | 
          
            | 1366 |     if ($printicons) {
 | 1356 |     if ($printicons) {
 | 
          
            | 1367 |         $icons   = glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode, $hook,'html');
 | 1357 |         $icons   = glossary_print_entry_icons($course, $cm, $glossary, $entry, $mode, $hook,'html');
 | 
          
            | 1368 |     }
 | 1358 |     }
 | 
          
            | 1369 |     if ($aliases || $icons || !empty($entry->rating)) {
 | 1359 |     if ($aliases || $icons || !empty($entry->rating)) {
 | 
          
            | 1370 |         echo '<table>';
 | 1360 |         echo '<table class="table-reboot">';
 | 
          
            | 1371 |         if ( $aliases ) {
 | 1361 |         if ( $aliases ) {
 | 
          
            | 1372 |             $id = "keyword-{$entry->id}";
 | 1362 |             $id = "keyword-{$entry->id}";
 | 
          
            | 1373 |             echo '<tr valign="top"><td class="aliases">' .
 | 1363 |             echo '<tr valign="top"><td class="aliases hstack gap-2">' .
 | 
          
            | 1374 |                 '<label for="' . $id . '">' . get_string('aliases', 'glossary') . ': </label>' .
 | 1364 |                 '<label for="' . $id . '">' . get_string('aliases', 'glossary') . ': </label>' .
 | 
          
            | 1375 |                 $aliases . '</td></tr>';
 | 1365 |                 $aliases . '</td></tr>';
 | 
          
            | 1376 |         }
 | 1366 |         }
 | 
          
            | 1377 |         if ($icons) {
 | 1367 |         if ($icons) {
 | 
          
            | 1378 |             echo '<tr valign="top"><td class="icons">'.$icons.'</td></tr>';
 | 1368 |             echo '<tr valign="top"><td class="icons">'.$icons.'</td></tr>';
 | 
          
            | Línea 1426... | Línea 1416... | 
          
            | 1426 | function  glossary_print_entry_approval($cm, $entry, $mode, $align="right", $insidetable=true) {
 | 1416 | function  glossary_print_entry_approval($cm, $entry, $mode, $align="right", $insidetable=true) {
 | 
          
            | 1427 |     global $CFG, $OUTPUT;
 | 1417 |     global $CFG, $OUTPUT;
 | 
          
            | Línea 1428... | Línea 1418... | 
          
            | 1428 |  
 | 1418 |  
 | 
          
            | 1429 |     if ($mode == 'approval' and !$entry->approved) {
 | 1419 |     if ($mode == 'approval' and !$entry->approved) {
 | 
          
            | 1430 |         if ($insidetable) {
 | 1420 |         if ($insidetable) {
 | 
          
            | 1431 |             echo '<table class="glossaryapproval" align="'.$align.'"><tr><td align="'.$align.'">';
 | 1421 |             echo '<table class="glossaryapproval table-reboot" align="' . $align . '"><tr><td align="' . $align . '">';
 | 
          
            | 1432 |         }
 | 1422 |         }
 | 
          
            | 1433 |         echo $OUTPUT->action_icon(
 | 1423 |         echo $OUTPUT->action_icon(
 | 
          
            | 1434 |             new moodle_url('approve.php', array('eid' => $entry->id, 'mode' => $mode, 'sesskey' => sesskey())),
 | 1424 |             new moodle_url('approve.php', array('eid' => $entry->id, 'mode' => $mode, 'sesskey' => sesskey())),
 | 
          
            | 1435 |             new pix_icon('t/approve', get_string('approve','glossary'), '',
 | 1425 |             new pix_icon('t/approve', get_string('approve','glossary'), '',
 | 
          
            | Línea 1492... | Línea 1482... | 
          
            | 1492 |  
 | 1482 |  
 | 
          
            | 1493 |  
 | 1483 |  
 | 
          
            | Línea 1494... | Línea 1484... | 
          
            | 1494 |     foreach ($searchterms as $searchterm) {
 | 1484 |     foreach ($searchterms as $searchterm) {
 | 
          
            | 1495 |         $i++;
 | 1485 |         $i++;
 | 
          
            | - |   | 1486 |  
 | 
          
            | Línea 1496... | Línea 1487... | 
          
            | 1496 |  
 | 1487 |         // Initially we aren't going to perform NOT LIKE searches, only MSSQL
 | 
          
            | 1497 |         $NOT = false; /// Initially we aren't going to perform NOT LIKE searches, only MSSQL and Oracle
 | 1488 |         // will use it to simulate the "-" operator with LIKE clause.
 | 
          
            | 1498 |                    /// will use it to simulate the "-" operator with LIKE clause
 | 1489 |         $NOT = false;
 | 
          
            | 1499 |  
 | 1490 |  
 | 
          
            | 1500 |     /// Under Oracle and MSSQL, trim the + and - operators and perform
 | 1491 |         // Under MSSQL, trim the + and - operators and perform
 | 
          
            | 1501 |     /// simpler LIKE (or NOT LIKE) queries
 | 1492 |         // simpler LIKE (or NOT LIKE) queries
 | 
          
            | 1502 |         if (!$DB->sql_regex_supported()) {
 | 1493 |         if (!$DB->sql_regex_supported()) {
 | 
          
            | Línea 1832... | Línea 1823... | 
          
            | 1832 |  
 | 1823 |  
 | 
          
            | Línea 1833... | Línea 1824... | 
          
            | 1833 |     glossary_print_alphabet_links($cm, $glossary, $mode, $hook,$sortkey, $sortorder);
 | 1824 |     glossary_print_alphabet_links($cm, $glossary, $mode, $hook,$sortkey, $sortorder);
 | 
          
            | Línea 1834... | Línea 1825... | 
          
            | 1834 |  
 | 1825 |  
 | 
          
            | 1835 |     glossary_print_all_links($cm, $glossary, $mode, $hook);
 | 1826 |     glossary_print_all_links($cm, $glossary, $mode, $hook);
 | 
          
            | 1836 |  
 | 1827 |  
 | 
          
            | 1837 |     glossary_print_sorting_links($cm, $mode, 'CREATION', 'asc');
 | 1828 |     glossary_print_sorting_links($cm, $mode, $sortkey, $sortorder);
 | 
          
            | 1838 | }
 | 1829 | }
 | 
          
            | 1839 | /**
 | 1830 | /**
 | 
          
            | Línea 1912... | Línea 1903... | 
          
            | 1912 |  
 | 1903 |  
 | 
          
            | 1913 |     // Prepare format_string/text options
 | 1904 |     // Prepare format_string/text options
 | 
          
            | 1914 |     $fmtoptions = array(
 | 1905 |     $fmtoptions = array(
 | 
          
            | Línea 1915... | Línea 1906... | 
          
            | 1915 |         'context' => $context);
 | 1906 |         'context' => $context);
 | 
          
            | 1916 |  
 | 1907 |  
 | 
          
            | Línea 1917... | Línea 1908... | 
          
            | 1917 |      echo '<table border="0" width="100%">';
 | 1908 |      echo '<table class="table-reboot" border="0" width="100%">';
 | 
          
            | 1918 |      echo '<tr>';
 | 1909 |      echo '<tr>';
 | 
          
            | 1919 |  
 | 1910 |  
 | 
          
            | Línea 2054... | Línea 2045... | 
          
            | 2054 |     $asc    = get_string("ascending","glossary");
 | 2045 |     $asc    = get_string("ascending","glossary");
 | 
          
            | 2055 |     $desc   = get_string("descending","glossary");
 | 2046 |     $desc   = get_string("descending","glossary");
 | 
          
            | 2056 |     $bopen  = '<b>';
 | 2047 |     $bopen  = '<b>';
 | 
          
            | 2057 |     $bclose = '</b>';
 | 2048 |     $bclose = '</b>';
 | 
          
            | Línea 2058... | Línea 2049... | 
          
            | 2058 |  
 | 2049 |  
 | 
          
            | 2059 |      $neworder = '';
 | 2050 |     $neworder = '';
 | 
          
            | 2060 |      $currentorder = '';
 | 2051 |     $currentorder = '';
 | 
          
            | - |   | 2052 |     $currentsort = '';
 | 
          
            | - |   | 2053 |  
 | 
          
            | - |   | 2054 |     if ($sortkey === '') {
 | 
          
            | - |   | 2055 |         $sortkey = 'CREATION';
 | 
          
            | - |   | 2056 |     }
 | 
          
            | 2061 |      $currentsort = '';
 | 2057 |  
 | 
          
            | 2062 |      if ( $sortorder ) {
 | 2058 |      if ( $sortorder ) {
 | 
          
            | 2063 |          if ( $sortorder == 'asc' ) {
 | 2059 |          if ( $sortorder == 'asc' ) {
 | 
          
            | 2064 |              $currentorder = $asc;
 | 2060 |              $currentorder = $asc;
 | 
          
            | 2065 |              $neworder = '&sortorder=desc';
 | 2061 |              $neworder = '&sortorder=desc';
 | 
          
            | Línea 2079... | Línea 2075... | 
          
            | 2079 |              $newordertitle = $desc;
 | 2075 |              $newordertitle = $desc;
 | 
          
            | 2080 |              $neworder = '&sortorder=desc';
 | 2076 |              $neworder = '&sortorder=desc';
 | 
          
            | 2081 |              $icon = " " . $OUTPUT->pix_icon('asc', $newordertitle, 'glossary');
 | 2077 |              $icon = " " . $OUTPUT->pix_icon('asc', $newordertitle, 'glossary');
 | 
          
            | 2082 |          }
 | 2078 |          }
 | 
          
            | 2083 |      }
 | 2079 |      }
 | 
          
            | 2084 |      $ficon     = '';
 | - |   | 
          
            | 2085 |      $fneworder = '';
 | - |   | 
          
            | 2086 |      $fbtag     = '';
 | - |   | 
          
            | 2087 |      $fendbtag  = '';
 | - |   | 
          
            | 2088 |  
 | - |   | 
          
            | 2089 |      $sicon     = '';
 | - |   | 
          
            | 2090 |      $sneworder = '';
 | - |   | 
          
            | 2091 |  
 | - |   | 
          
            | 2092 |      $sbtag      = '';
 | - |   | 
          
            | 2093 |      $fbtag      = '';
 | - |   | 
          
            | 2094 |      $fendbtag      = '';
 | - |   | 
          
            | 2095 |      $sendbtag      = '';
 | - |   | 
          
            | Línea -... | Línea 2080... | 
          
            | - |   | 2080 |  
 | 
          
            | - |   | 2081 |     $ficon     = '';
 | 
          
            | - |   | 2082 |     $fneworder = '';
 | 
          
            | - |   | 2083 |  
 | 
          
            | - |   | 2084 |     $sicon     = '';
 | 
          
            | - |   | 2085 |     $sneworder = '';
 | 
          
            | - |   | 2086 |  
 | 
          
            | - |   | 2087 |     $sbtag      = '';
 | 
          
            | - |   | 2088 |     $fbtag      = '';
 | 
          
            | - |   | 2089 |     $fendbtag      = '';
 | 
          
            | 2096 |  
 | 2090 |  
 | 
          
            | Línea 2097... | Línea 2091... | 
          
            | 2097 |      $sendbtag  = '';
 | 2091 |     $sendbtag  = '';
 | 
          
            | 2098 |  
 | 2092 |  
 | 
          
            | 2099 |      if ( $sortkey == 'CREATION' or $sortkey == 'FIRSTNAME' ) {
 | 2093 |      if ( $sortkey == 'CREATION' or $sortkey == 'FIRSTNAME' ) {
 | 
          
            | 2100 |          $ficon       = $icon;
 | 2094 |          $ficon       = $icon;
 | 
          
            | Línea 2187... | Línea 2181... | 
          
            | 2187 |  */
 | 2181 |  */
 | 
          
            | 2188 | function glossary_print_dynaentry($courseid, $entries, $displayformat = -1) {
 | 2182 | function glossary_print_dynaentry($courseid, $entries, $displayformat = -1) {
 | 
          
            | 2189 |     global $USER, $CFG, $DB;
 | 2183 |     global $USER, $CFG, $DB;
 | 
          
            | Línea 2190... | Línea 2184... | 
          
            | 2190 |  
 | 2184 |  
 | 
          
            | 2191 |     echo '<div class="boxaligncenter">';
 | 2185 |     echo '<div class="boxaligncenter">';
 | 
          
            | 2192 |     echo '<table class="glossarypopup" cellspacing="0"><tr>';
 | 2186 |     echo '<table class="glossarypopup table-reboot" cellspacing="0"><tr>';
 | 
          
            | 2193 |     echo '<td>';
 | 2187 |     echo '<td>';
 | 
          
            | 2194 |     if ( $entries ) {
 | 2188 |     if ( $entries ) {
 | 
          
            | 2195 |         foreach ( $entries as $entry ) {
 | 2189 |         foreach ( $entries as $entry ) {
 | 
          
            | 2196 |             if (! $glossary = $DB->get_record('glossary', array('id'=>$entry->glossaryid))) {
 | 2190 |             if (! $glossary = $DB->get_record('glossary', array('id'=>$entry->glossaryid))) {
 | 
          
            | Línea 2361... | Línea 2355... | 
          
            | 2361 |                 if ( $entry->approved and $permissiongranted ) {
 | 2355 |                 if ( $entry->approved and $permissiongranted ) {
 | 
          
            | 2362 |                     $co .= glossary_start_tag("ENTRY",3,true);
 | 2356 |                     $co .= glossary_start_tag("ENTRY",3,true);
 | 
          
            | 2363 |                     $co .= glossary_full_tag("CONCEPT",4,false,trim($entry->concept));
 | 2357 |                     $co .= glossary_full_tag("CONCEPT",4,false,trim($entry->concept));
 | 
          
            | 2364 |                     $co .= glossary_full_tag("DEFINITION",4,false,$entry->definition);
 | 2358 |                     $co .= glossary_full_tag("DEFINITION",4,false,$entry->definition);
 | 
          
            | 2365 |                     $co .= glossary_full_tag("FORMAT",4,false,$entry->definitionformat); // note: use old name for BC reasons
 | 2359 |                     $co .= glossary_full_tag("FORMAT",4,false,$entry->definitionformat); // note: use old name for BC reasons
 | 
          
            | - |   | 2360 |                     $co .= glossary_full_tag('DEFINITIONTRUST', 4, false, $entry->definitiontrust);
 | 
          
            | 2366 |                     $co .= glossary_full_tag("USEDYNALINK",4,false,$entry->usedynalink);
 | 2361 |                     $co .= glossary_full_tag("USEDYNALINK",4,false,$entry->usedynalink);
 | 
          
            | 2367 |                     $co .= glossary_full_tag("CASESENSITIVE",4,false,$entry->casesensitive);
 | 2362 |                     $co .= glossary_full_tag("CASESENSITIVE",4,false,$entry->casesensitive);
 | 
          
            | 2368 |                     $co .= glossary_full_tag("FULLMATCH",4,false,$entry->fullmatch);
 | 2363 |                     $co .= glossary_full_tag("FULLMATCH",4,false,$entry->fullmatch);
 | 
          
            | 2369 |                     $co .= glossary_full_tag("TEACHERENTRY",4,false,$entry->teacherentry);
 | 2364 |                     $co .= glossary_full_tag("TEACHERENTRY",4,false,$entry->teacherentry);
 | 
          
            | Línea 2793... | Línea 2788... | 
          
            | 2793 |  * whether the course reset functionality affects the glossary.
 | 2788 |  * whether the course reset functionality affects the glossary.
 | 
          
            | 2794 |  * @param MoodleQuickForm $mform form passed by reference
 | 2789 |  * @param MoodleQuickForm $mform form passed by reference
 | 
          
            | 2795 |  */
 | 2790 |  */
 | 
          
            | 2796 | function glossary_reset_course_form_definition(&$mform) {
 | 2791 | function glossary_reset_course_form_definition(&$mform) {
 | 
          
            | 2797 |     $mform->addElement('header', 'glossaryheader', get_string('modulenameplural', 'glossary'));
 | 2792 |     $mform->addElement('header', 'glossaryheader', get_string('modulenameplural', 'glossary'));
 | 
          
            | - |   | 2793 |     $mform->addElement('static', 'glossarydelete', get_string('delete'));
 | 
          
            | 2798 |     $mform->addElement('checkbox', 'reset_glossary_all', get_string('resetglossariesall','glossary'));
 | 2794 |     $mform->addElement('checkbox', 'reset_glossary_all', get_string('resetglossariesall','glossary'));
 | 
          
            | Línea 2799... | Línea 2795... | 
          
            | 2799 |  
 | 2795 |  
 | 
          
            | 2800 |     $mform->addElement('select', 'reset_glossary_types', get_string('resetglossaries', 'glossary'),
 | 2796 |     $mform->addElement('select', 'reset_glossary_types', get_string('resetglossaries', 'glossary'),
 | 
          
            | 2801 |                        array('main'=>get_string('mainglossary', 'glossary'), 'secondary'=>get_string('secondaryglossary', 'glossary')), array('multiple' => 'multiple'));
 | - |   | 
          
            | 2802 |     $mform->setAdvanced('reset_glossary_types');
 | 2797 |                        array('main'=>get_string('mainglossary', 'glossary'), 'secondary'=>get_string('secondaryglossary', 'glossary')), array('multiple' => 'multiple'));
 | 
          
            | Línea 2803... | Línea 2798... | 
          
            | 2803 |     $mform->disabledIf('reset_glossary_types', 'reset_glossary_all', 'checked');
 | 2798 |     $mform->hideIf('reset_glossary_types', 'reset_glossary_all', 'checked');
 | 
          
            | 2804 |  
 | 2799 |  
 | 
          
            | Línea 2805... | Línea 2800... | 
          
            | 2805 |     $mform->addElement('checkbox', 'reset_glossary_notenrolled', get_string('deletenotenrolled', 'glossary'));
 | 2800 |     $mform->addElement('checkbox', 'reset_glossary_notenrolled', get_string('deletenotenrolled', 'glossary'));
 | 
          
            | 2806 |     $mform->disabledIf('reset_glossary_notenrolled', 'reset_glossary_all', 'checked');
 | 2801 |     $mform->hideIf('reset_glossary_notenrolled', 'reset_glossary_all', 'checked');
 | 
          
            | Línea 2807... | Línea 2802... | 
          
            | 2807 |  
 | 2802 |  
 | 
          
            | 2808 |     $mform->addElement('checkbox', 'reset_glossary_ratings', get_string('deleteallratings'));
 | 2803 |     $mform->addElement('checkbox', 'reset_glossary_ratings', get_string('deleteallratings'));
 | 
          
            | Línea 2809... | Línea 2804... | 
          
            | 2809 |     $mform->disabledIf('reset_glossary_ratings', 'reset_glossary_all', 'checked');
 | 2804 |     $mform->hideIf('reset_glossary_ratings', 'reset_glossary_all', 'checked');
 | 
          
            | 2810 |  
 | 2805 |  
 | 
          
            | 2811 |     $mform->addElement('checkbox', 'reset_glossary_comments', get_string('deleteallcomments'));
 | 2806 |     $mform->addElement('checkbox', 'reset_glossary_comments', get_string('deleteallcomments'));
 | 
          
            | Línea 2812... | Línea 2807... | 
          
            | 2812 |     $mform->disabledIf('reset_glossary_comments', 'reset_glossary_all', 'checked');
 | 2807 |     $mform->hideIf('reset_glossary_comments', 'reset_glossary_all', 'checked');
 | 
          
            | 2813 |  
 | 2808 |  
 | 
          
            | 2814 |     $mform->addElement('checkbox', 'reset_glossary_tags', get_string('removeallglossarytags', 'glossary'));
 | 2809 |     $mform->addElement('checkbox', 'reset_glossary_tags', get_string('removeallglossarytags', 'glossary'));
 | 
          
            | Línea 2859... | Línea 2854... | 
          
            | 2859 | function glossary_reset_userdata($data) {
 | 2854 | function glossary_reset_userdata($data) {
 | 
          
            | 2860 |     global $CFG, $DB;
 | 2855 |     global $CFG, $DB;
 | 
          
            | 2861 |     require_once($CFG->dirroot.'/rating/lib.php');
 | 2856 |     require_once($CFG->dirroot.'/rating/lib.php');
 | 
          
            | Línea 2862... | Línea 2857... | 
          
            | 2862 |  
 | 2857 |  
 | 
          
            | 2863 |     $componentstr = get_string('modulenameplural', 'glossary');
 | 2858 |     $componentstr = get_string('modulenameplural', 'glossary');
 | 
          
            | Línea 2864... | Línea 2859... | 
          
            | 2864 |     $status = array();
 | 2859 |     $status = [];
 | 
          
            | 2865 |  
 | 2860 |  
 | 
          
            | 2866 |     $allentriessql = "SELECT e.id
 | 2861 |     $allentriessql = "SELECT e.id
 | 
          
            | 2867 |                         FROM {glossary_entries} e
 | 2862 |                         FROM {glossary_entries} e
 | 
          
            | Línea 2868... | Línea 2863... | 
          
            | 2868 |                              JOIN {glossary} g ON e.glossaryid = g.id
 | 2863 |                              JOIN {glossary} g ON e.glossaryid = g.id
 | 
          
            | 2869 |                        WHERE g.course = ?";
 | 2864 |                        WHERE g.course = ?";
 | 
          
            | 2870 |  
 | 2865 |  
 | 
          
            | Línea 2871... | Línea 2866... | 
          
            | 2871 |     $allglossariessql = "SELECT g.id
 | 2866 |     $allglossariessql = "SELECT g.id
 | 
          
            | Línea 2872... | Línea 2867... | 
          
            | 2872 |                            FROM {glossary} g
 | 2867 |                            FROM {glossary} g
 | 
          
            | Línea 2873... | Línea 2868... | 
          
            | 2873 |                           WHERE g.course = ?";
 | 2868 |                           WHERE g.course = ?";
 | 
          
            | 2874 |  
 | 2869 |  
 | 
          
            | 2875 |     $params = array($data->courseid);
 | 2870 |     $params = [$data->courseid];
 | 
          
            | 2876 |  
 | 2871 |  
 | 
          
            | Línea 2877... | Línea 2872... | 
          
            | 2877 |     $fs = get_file_storage();
 | 2872 |     $fs = get_file_storage();
 | 
          
            | 2878 |  
 | 2873 |  
 | 
          
            | 2879 |     $rm = new rating_manager();
 | 2874 |     $rm = new rating_manager();
 | 
          
            | Línea 2880... | Línea 2875... | 
          
            | 2880 |     $ratingdeloptions = new stdClass;
 | 2875 |     $ratingdeloptions = new stdClass;
 | 
          
            | 2881 |     $ratingdeloptions->component = 'mod_glossary';
 | 2876 |     $ratingdeloptions->component = 'mod_glossary';
 | 
          
            | 2882 |     $ratingdeloptions->ratingarea = 'entry';
 | 2877 |     $ratingdeloptions->ratingarea = 'entry';
 | 
          
            | 2883 |  
 | 2878 |  
 | 
          
            | Línea 2884... | Línea 2879... | 
          
            | 2884 |     // delete entries if requested
 | 2879 |     // Delete entries if requested.
 | 
          
            | 2885 |     if (!empty($data->reset_glossary_all)
 | 2880 |     if (!empty($data->reset_glossary_all)
 | 
          
            | 2886 |          or (!empty($data->reset_glossary_types) and in_array('main', $data->reset_glossary_types) and in_array('secondary', $data->reset_glossary_types))) {
 | 2881 |          or (!empty($data->reset_glossary_types) and in_array('main', $data->reset_glossary_types) and in_array('secondary', $data->reset_glossary_types))) {
 | 
          
            | 2887 |  
 | 2882 |  
 | 
          
            | 2888 |         $params[] = 'glossary_entry';
 | 2883 |         $params[] = 'glossary_entry';
 | 
          
            | 2889 |         $DB->delete_records_select('comments', "itemid IN ($allentriessql) AND commentarea=?", $params);
 | 2884 |         $DB->delete_records_select('comments', "itemid IN ($allentriessql) AND commentarea=?", $params);
 | 
          
            | 2890 |         $DB->delete_records_select('glossary_alias',    "entryid IN ($allentriessql)", $params);
 | 2885 |         $DB->delete_records_select('glossary_alias',    "entryid IN ($allentriessql)", $params);
 | 
          
            | 2891 |         $DB->delete_records_select('glossary_entries', "glossaryid IN ($allglossariessql)", $params);
 | 2886 |         $DB->delete_records_select('glossary_entries', "glossaryid IN ($allglossariessql)", $params);
 | 
          
            | Línea 2892... | Línea 2887... | 
          
            | 2892 |  
 | 2887 |  
 | 
          
            | 2893 |         // now get rid of all attachments
 | 2888 |         // Now get rid of all attachments.
 | 
          
            | 2894 |         if ($glossaries = $DB->get_records_sql($allglossariessql, $params)) {
 | 2889 |         if ($glossaries = $DB->get_records_sql($allglossariessql, $params)) {
 | 
          
            | Línea 2895... | Línea 2890... | 
          
            | 2895 |             foreach ($glossaries as $glossaryid=>$unused) {
 | 2890 |             foreach ($glossaries as $glossaryid=>$unused) {
 | 
          
            | 2896 |                 if (!$cm = get_coursemodule_from_instance('glossary', $glossaryid)) {
 | 2891 |                 if (!$cm = get_coursemodule_from_instance('glossary', $glossaryid)) {
 | 
          
            | 2897 |                     continue;
 | 2892 |                     continue;
 | 
          
            | Línea 2898... | Línea 2893... | 
          
            | 2898 |                 }
 | 2893 |                 }
 | 
          
            | 2899 |                 $context = context_module::instance($cm->id);
 | 2894 |                 $context = context_module::instance($cm->id);
 | 
          
            | 2900 |                 $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 2895 |                 $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 
          
            | 2901 |  
 | 2896 |  
 | 
          
            | Línea -... | Línea 2897... | 
          
            | - |   | 2897 |                 // Delete ratings.
 | 
          
            | - |   | 2898 |                 $ratingdeloptions->contextid = $context->id;
 | 
          
            | 2902 |                 //delete ratings
 | 2899 |                 $rm->delete_ratings($ratingdeloptions);
 | 
          
            | - |   | 2900 |  
 | 
          
            | - |   | 2901 |                 core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 
          
            | Línea 2903... | Línea 2902... | 
          
            | 2903 |                 $ratingdeloptions->contextid = $context->id;
 | 2902 |             }
 | 
          
            | 2904 |                 $rm->delete_ratings($ratingdeloptions);
 | 2903 |         }
 | 
          
            | 2905 |  
 | 2904 |  
 | 
          
            | Línea 2906... | Línea 2905... | 
          
            | 2906 |                 core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 2905 |         // Remove all grades from gradebook.
 | 
          
            | 2907 |             }
 | 2906 |         if (empty($data->reset_gradebook_grades)) {
 | 
          
            | Línea 2908... | Línea 2907... | 
          
            | 2908 |         }
 | 2907 |             glossary_reset_gradebook($data->courseid);
 | 
          
            | 2909 |  
 | 2908 |         }
 | 
          
            | 2910 |         // remove all grades from gradebook
 | 2909 |  
 | 
          
            | Línea 2932... | Línea 2931... | 
          
            | 2932 |                         continue;
 | 2931 |                         continue;
 | 
          
            | 2933 |                     }
 | 2932 |                     }
 | 
          
            | 2934 |                     $context = context_module::instance($cm->id);
 | 2933 |                     $context = context_module::instance($cm->id);
 | 
          
            | 2935 |                     $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 2934 |                     $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 
          
            | Línea 2936... | Línea 2935... | 
          
            | 2936 |  
 | 2935 |  
 | 
          
            | 2937 |                     //delete ratings
 | 2936 |                     // Delete ratings.
 | 
          
            | 2938 |                     $ratingdeloptions->contextid = $context->id;
 | 2937 |                     $ratingdeloptions->contextid = $context->id;
 | 
          
            | Línea 2939... | Línea 2938... | 
          
            | 2939 |                     $rm->delete_ratings($ratingdeloptions);
 | 2938 |                     $rm->delete_ratings($ratingdeloptions);
 | 
          
            | 2940 |  
 | 2939 |  
 | 
          
            | 2941 |                     core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 2940 |                     core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 
          
            | Línea 2942... | Línea 2941... | 
          
            | 2942 |                 }
 | 2941 |                 }
 | 
          
            | 2943 |             }
 | 2942 |             }
 | 
          
            | 2944 |  
 | 2943 |  
 | 
          
            | 2945 |             // remove all grades from gradebook
 | 2944 |             // Remove all grades from gradebook.
 | 
          
            | Línea -... | Línea 2945... | 
          
            | - |   | 2945 |             if (empty($data->reset_gradebook_grades)) {
 | 
          
            | - |   | 2946 |                 glossary_reset_gradebook($data->courseid, 'main');
 | 
          
            | 2946 |             if (empty($data->reset_gradebook_grades)) {
 | 2947 |             }
 | 
          
            | - |   | 2948 |  
 | 
          
            | - |   | 2949 |             $status[] = [
 | 
          
            | Línea 2947... | Línea 2950... | 
          
            | 2947 |                 glossary_reset_gradebook($data->courseid, 'main');
 | 2950 |                 'component' => $componentstr,
 | 
          
            | 2948 |             }
 | 2951 |                 'item' => get_string('resetglossaries', 'glossary').': '.get_string('mainglossary', 'glossary'),
 | 
          
            | 2949 |  
 | 2952 |                 'error' => false,
 | 
          
            | 2950 |             $status[] = array('component'=>$componentstr, 'item'=>get_string('resetglossaries', 'glossary').': '.get_string('mainglossary', 'glossary'), 'error'=>false);
 | 2953 |             ];
 | 
          
            | 2951 |  
 | 2954 |  
 | 
          
            | 2952 |         } else if (in_array('secondary', $data->reset_glossary_types)) {
 | 2955 |         } else if (in_array('secondary', $data->reset_glossary_types)) {
 | 
          
            | 2953 |             $params[] = 'glossary_entry';
 | 2956 |             $params[] = 'glossary_entry';
 | 
          
            | 2954 |             $DB->delete_records_select('comments', "itemid IN ($secondaryentriessql) AND commentarea=?", $params);
 | 2957 |             $DB->delete_records_select('comments', "itemid IN ($secondaryentriessql) AND commentarea=?", $params);
 | 
          
            | Línea 2955... | Línea 2958... | 
          
            | 2955 |             $DB->delete_records_select('glossary_entries', "glossaryid IN ($secondaryglossariessql)", $params);
 | 2958 |             $DB->delete_records_select('glossary_entries', "glossaryid IN ($secondaryglossariessql)", $params);
 | 
          
            | Línea 2964... | Línea 2967... | 
          
            | 2964 |                         continue;
 | 2967 |                         continue;
 | 
          
            | 2965 |                     }
 | 2968 |                     }
 | 
          
            | 2966 |                     $context = context_module::instance($cm->id);
 | 2969 |                     $context = context_module::instance($cm->id);
 | 
          
            | 2967 |                     $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 2970 |                     $fs->delete_area_files($context->id, 'mod_glossary', 'attachment');
 | 
          
            | Línea 2968... | Línea 2971... | 
          
            | 2968 |  
 | 2971 |  
 | 
          
            | 2969 |                     //delete ratings
 | 2972 |                     // Delete ratings.
 | 
          
            | 2970 |                     $ratingdeloptions->contextid = $context->id;
 | 2973 |                     $ratingdeloptions->contextid = $context->id;
 | 
          
            | Línea 2971... | Línea 2974... | 
          
            | 2971 |                     $rm->delete_ratings($ratingdeloptions);
 | 2974 |                     $rm->delete_ratings($ratingdeloptions);
 | 
          
            | 2972 |  
 | 2975 |  
 | 
          
            | 2973 |                     core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 2976 |                     core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 
          
            | Línea 2974... | Línea 2977... | 
          
            | 2974 |                 }
 | 2977 |                 }
 | 
          
            | 2975 |             }
 | 2978 |             }
 | 
          
            | 2976 |  
 | 2979 |  
 | 
          
            | 2977 |             // remove all grades from gradebook
 | 2980 |             // Remove all grades from gradebook.
 | 
          
            | Línea -... | Línea 2981... | 
          
            | - |   | 2981 |             if (empty($data->reset_gradebook_grades)) {
 | 
          
            | - |   | 2982 |                 glossary_reset_gradebook($data->courseid, 'secondary');
 | 
          
            | 2978 |             if (empty($data->reset_gradebook_grades)) {
 | 2983 |             }
 | 
          
            | - |   | 2984 |  
 | 
          
            | - |   | 2985 |             $status[] = [
 | 
          
            | 2979 |                 glossary_reset_gradebook($data->courseid, 'secondary');
 | 2986 |                 'component' => $componentstr,
 | 
          
            | 2980 |             }
 | 2987 |                 'item' => get_string('resetglossaries', 'glossary').': '.get_string('secondaryglossary', 'glossary'),
 | 
          
            | Línea 2981... | Línea 2988... | 
          
            | 2981 |  
 | 2988 |                 'error' => false,
 | 
          
            | 2982 |             $status[] = array('component'=>$componentstr, 'item'=>get_string('resetglossaries', 'glossary').': '.get_string('secondaryglossary', 'glossary'), 'error'=>false);
 | 2989 |             ];
 | 
          
            | 2983 |         }
 | 2990 |         }
 | 
          
            | 2984 |     }
 | 2991 |     }
 | 
          
            | 2985 |  
 | 2992 |  
 | 
          
            | 2986 |     // remove entries by users not enrolled into course
 | 2993 |     // Remove entries by users not enrolled into course.
 | 
          
            | 2987 |     if (!empty($data->reset_glossary_notenrolled)) {
 | 2994 |     if (!empty($data->reset_glossary_notenrolled)) {
 | 
          
            | Línea 2988... | Línea 2995... | 
          
            | 2988 |         $entriessql = "SELECT e.id, e.userid, e.glossaryid, u.id AS userexists, u.deleted AS userdeleted
 | 2995 |         $entriessql = "SELECT e.id, e.userid, e.glossaryid, u.id AS userexists, u.deleted AS userdeleted
 | 
          
            | 2989 |                          FROM {glossary_entries} e
 | 2996 |                          FROM {glossary_entries} e
 | 
          
            | 2990 |                               JOIN {glossary} g ON e.glossaryid = g.id
 | 2997 |                               JOIN {glossary} g ON e.glossaryid = g.id
 | 
          
            | 2991 |                               LEFT JOIN {user} u ON e.userid = u.id
 | 2998 |                               LEFT JOIN {user} u ON e.userid = u.id
 | 
          
            | 2992 |                         WHERE g.course = ? AND e.userid > 0";
 | 2999 |                         WHERE g.course = ? AND e.userid > 0";
 | 
          
            | 2993 |  
 | 3000 |  
 | 
          
            | 2994 |         $course_context = context_course::instance($data->courseid);
 | 3001 |         $coursecontext = context_course::instance($data->courseid);
 | 
          
            | 2995 |         $notenrolled = array();
 | 3002 |         $notenrolled = [];
 | 
          
            | 2996 |         $rs = $DB->get_recordset_sql($entriessql, $params);
 | 3003 |         $rs = $DB->get_recordset_sql($entriessql, $params);
 | 
          
            | Línea 2997... | Línea 3004... | 
          
            | 2997 |         if ($rs->valid()) {
 | 3004 |         if ($rs->valid()) {
 | 
          
            | 2998 |             foreach ($rs as $entry) {
 | 3005 |             foreach ($rs as $entry) {
 | 
          
            | 2999 |                 if (array_key_exists($entry->userid, $notenrolled) or !$entry->userexists or $entry->userdeleted
 | 3006 |                 if (array_key_exists($entry->userid, $notenrolled) || !$entry->userexists || $entry->userdeleted
 | 
          
            | Línea 3009... | Línea 3016... | 
          
            | 3009 |                         $ratingdeloptions->contextid = $context->id;
 | 3016 |                         $ratingdeloptions->contextid = $context->id;
 | 
          
            | 3010 |                         $rm->delete_ratings($ratingdeloptions);
 | 3017 |                         $rm->delete_ratings($ratingdeloptions);
 | 
          
            | 3011 |                     }
 | 3018 |                     }
 | 
          
            | 3012 |                 }
 | 3019 |                 }
 | 
          
            | 3013 |             }
 | 3020 |             }
 | 
          
            | - |   | 3021 |             $status[] = [
 | 
          
            | - |   | 3022 |                 'component' => $componentstr,
 | 
          
            | 3014 |             $status[] = array('component'=>$componentstr, 'item'=>get_string('deletenotenrolled', 'glossary'), 'error'=>false);
 | 3023 |                 'item' => get_string('deletenotenrolled', 'glossary'),
 | 
          
            | - |   | 3024 |                 'error' => false,
 | 
          
            | - |   | 3025 |             ];
 | 
          
            | 3015 |         }
 | 3026 |         }
 | 
          
            | 3016 |         $rs->close();
 | 3027 |         $rs->close();
 | 
          
            | 3017 |     }
 | 3028 |     }
 | 
          
            | Línea 3018... | Línea 3029... | 
          
            | 3018 |  
 | 3029 |  
 | 
          
            | 3019 |     // remove all ratings
 | 3030 |     // Remove all ratings.
 | 
          
            | 3020 |     if (!empty($data->reset_glossary_ratings)) {
 | 3031 |     if (!empty($data->reset_glossary_ratings)) {
 | 
          
            | 3021 |         //remove ratings
 | 3032 |         // Remove ratings.
 | 
          
            | 3022 |         if ($glossaries = $DB->get_records_sql($allglossariessql, $params)) {
 | 3033 |         if ($glossaries = $DB->get_records_sql($allglossariessql, $params)) {
 | 
          
            | 3023 |             foreach ($glossaries as $glossaryid=>$unused) {
 | 3034 |             foreach ($glossaries as $glossaryid=>$unused) {
 | 
          
            | 3024 |                 if (!$cm = get_coursemodule_from_instance('glossary', $glossaryid)) {
 | 3035 |                 if (!$cm = get_coursemodule_from_instance('glossary', $glossaryid)) {
 | 
          
            | 3025 |                     continue;
 | 3036 |                     continue;
 | 
          
            | 3026 |                 }
 | 3037 |                 }
 | 
          
            | Línea 3027... | Línea 3038... | 
          
            | 3027 |                 $context = context_module::instance($cm->id);
 | 3038 |                 $context = context_module::instance($cm->id);
 | 
          
            | 3028 |  
 | 3039 |  
 | 
          
            | 3029 |                 //delete ratings
 | 3040 |                 // Delete ratings.
 | 
          
            | 3030 |                 $ratingdeloptions->contextid = $context->id;
 | 3041 |                 $ratingdeloptions->contextid = $context->id;
 | 
          
            | 3031 |                 $rm->delete_ratings($ratingdeloptions);
 | 3042 |                 $rm->delete_ratings($ratingdeloptions);
 | 
          
            | Línea 3032... | Línea 3043... | 
          
            | 3032 |             }
 | 3043 |             }
 | 
          
            | 3033 |         }
 | 3044 |         }
 | 
          
            | 3034 |  
 | 3045 |  
 | 
          
            | 3035 |         // remove all grades from gradebook
 | 3046 |         // Remove all grades from gradebook.
 | 
          
            | - |   | 3047 |         if (empty($data->reset_gradebook_grades)) {
 | 
          
            | - |   | 3048 |             glossary_reset_gradebook($data->courseid);
 | 
          
            | 3036 |         if (empty($data->reset_gradebook_grades)) {
 | 3049 |         }
 | 
          
            | - |   | 3050 |         $status[] = [
 | 
          
            | - |   | 3051 |             'component' => $componentstr,
 | 
          
            | 3037 |             glossary_reset_gradebook($data->courseid);
 | 3052 |             'item' => get_string('deleteallratings'),
 | 
          
            | Línea 3038... | Línea 3053... | 
          
            | 3038 |         }
 | 3053 |             'error' => false,
 | 
          
            | 3039 |         $status[] = array('component'=>$componentstr, 'item'=>get_string('deleteallratings'), 'error'=>false);
 | 3054 |         ];
 | 
          
            | 3040 |     }
 | 3055 |     }
 | 
          
            | 3041 |  
 | 3056 |  
 | 
          
            | - |   | 3057 |     // Remove comments.
 | 
          
            | - |   | 3058 |     if (!empty($data->reset_glossary_comments)) {
 | 
          
            | 3042 |     // remove comments
 | 3059 |         $params[] = 'glossary_entry';
 | 
          
            | - |   | 3060 |         $DB->delete_records_select('comments', "itemid IN ($allentriessql) AND commentarea= ? ", $params);
 | 
          
            | - |   | 3061 |         $status[] = [
 | 
          
            | 3043 |     if (!empty($data->reset_glossary_comments)) {
 | 3062 |             'component' => $componentstr,
 | 
          
            | Línea 3044... | Línea 3063... | 
          
            | 3044 |         $params[] = 'glossary_entry';
 | 3063 |             'item' => get_string('deleteallcomments'),
 | 
          
            | 3045 |         $DB->delete_records_select('comments', "itemid IN ($allentriessql) AND commentarea= ? ", $params);
 | 3064 |             'error' => false,
 | 
          
            | 3046 |         $status[] = array('component'=>$componentstr, 'item'=>get_string('deleteallcomments'), 'error'=>false);
 | 3065 |         ];
 | 
          
            | Línea 3057... | Línea 3076... | 
          
            | 3057 |                 $context = context_module::instance($cm->id);
 | 3076 |                 $context = context_module::instance($cm->id);
 | 
          
            | 3058 |                 core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 3077 |                 core_tag_tag::delete_instances('mod_glossary', null, $context->id);
 | 
          
            | 3059 |             }
 | 3078 |             }
 | 
          
            | 3060 |         }
 | 3079 |         }
 | 
          
            | Línea -... | Línea 3080... | 
          
            | - |   | 3080 |  
 | 
          
            | - |   | 3081 |         $status[] = [
 | 
          
            | 3061 |  
 | 3082 |             'component' => $componentstr,
 | 
          
            | - |   | 3083 |             'item' => get_string('removeallglossarytags', 'glossary'),
 | 
          
            | - |   | 3084 |             'error' => false,
 | 
          
            | 3062 |         $status[] = array('component' => $componentstr, 'item' => get_string('tagsdeleted', 'glossary'), 'error' => false);
 | 3085 |         ];
 | 
          
            | Línea 3063... | Línea 3086... | 
          
            | 3063 |     }
 | 3086 |     }
 | 
          
            | 3064 |  
 | 3087 |  
 | 
          
            | 3065 |     /// updating dates - shift may be negative too
 | 3088 |     // Updating dates - shift may be negative too.
 | 
          
            | 3066 |     if ($data->timeshift) {
 | 3089 |     if ($data->timeshift) {
 | 
          
            | 3067 |         // Any changes to the list of dates that needs to be rolled should be same during course restore and course reset.
 | 3090 |         // Any changes to the list of dates that needs to be rolled should be same during course restore and course reset.
 | 
          
            | - |   | 3091 |         // See MDL-9367.
 | 
          
            | - |   | 3092 |         shift_course_mod_dates('glossary', ['assesstimestart', 'assesstimefinish'], $data->timeshift, $data->courseid);
 | 
          
            | 3068 |         // See MDL-9367.
 | 3093 |         $status[] = [
 | 
          
            | - |   | 3094 |             'component' => $componentstr,
 | 
          
            | - |   | 3095 |             'item' => get_string('date'),
 | 
          
            | 3069 |         shift_course_mod_dates('glossary', array('assesstimestart', 'assesstimefinish'), $data->timeshift, $data->courseid);
 | 3096 |             'error' => false,
 | 
          
            | Línea 3070... | Línea 3097... | 
          
            | 3070 |         $status[] = array('component'=>$componentstr, 'item'=>get_string('datechanged'), 'error'=>false);
 | 3097 |         ];
 | 
          
            | 3071 |     }
 | 3098 |     }
 | 
          
            | Línea 3418... | Línea 3445... | 
          
            | 3418 |  * @param  int $from Fetch records from.
 | 3445 |  * @param  int $from Fetch records from.
 | 
          
            | 3419 |  * @param  int $limit Number of records to fetch.
 | 3446 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3420 |  * @param  array $options Accepts:
 | 3447 |  * @param  array $options Accepts:
 | 
          
            | 3421 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3448 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3422 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3449 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3423 |  * @return array The first element being the recordset, the second the number of entries.
 | 3450 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3451 |  *               array has.
 | 
          
            | 3424 |  * @since Moodle 3.1
 | 3452 |  * @since Moodle 3.1
 | 
          
            | 3425 |  */
 | 3453 |  */
 | 
          
            | 3426 | function glossary_get_entries_by_letter($glossary, $context, $letter, $from, $limit, $options = array()) {
 | 3454 | function glossary_get_entries_by_letter($glossary, $context, $letter, $from, $limit, $options = array()) {
 | 
          
            | Línea 3427... | Línea 3455... | 
          
            | 3427 |  
 | 3455 |  
 | 
          
            | 3428 |     $qb = new mod_glossary_entry_query_builder($glossary);
 | - |   | 
          
            | 3429 |     if ($letter != 'ALL' && $letter != 'SPECIAL' && core_text::strlen($letter)) {
 | - |   | 
          
            | 3430 |         $qb->filter_by_concept_letter($letter);
 | - |   | 
          
            | 3431 |     }
 | - |   | 
          
            | 3432 |     if ($letter == 'SPECIAL') {
 | - |   | 
          
            | 3433 |         $qb->filter_by_concept_non_letter();
 | - |   | 
          
            | Línea 3434... | Línea 3456... | 
          
            | 3434 |     }
 | 3456 |     $qb = new mod_glossary_entry_query_builder($glossary);
 | 
          
            | 3435 |  
 | 3457 |  
 | 
          
            | 3436 |     if (!empty($options['includenotapproved']) && has_capability('mod/glossary:approve', $context)) {
 | 3458 |     if (!empty($options['includenotapproved']) && has_capability('mod/glossary:approve', $context)) {
 | 
          
            | 3437 |         $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_ALL);
 | 3459 |         $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_ALL);
 | 
          
            | Línea 3442... | Línea 3464... | 
          
            | 3442 |     $qb->add_field('*', 'entries');
 | 3464 |     $qb->add_field('*', 'entries');
 | 
          
            | 3443 |     $qb->join_user();
 | 3465 |     $qb->join_user();
 | 
          
            | 3444 |     $qb->add_user_fields();
 | 3466 |     $qb->add_user_fields();
 | 
          
            | 3445 |     $qb->order_by('concept', 'entries');
 | 3467 |     $qb->order_by('concept', 'entries');
 | 
          
            | 3446 |     $qb->order_by('id', 'entries', 'ASC'); // Sort on ID to avoid random ordering when entries share an ordering value.
 | 3468 |     $qb->order_by('id', 'entries', 'ASC'); // Sort on ID to avoid random ordering when entries share an ordering value.
 | 
          
            | 3447 |     $qb->limit($from, $limit);
 | - |   | 
          
            | Línea 3448... | Línea 3469... | 
          
            | 3448 |  
 | 3469 |  
 | 
          
            | 3449 |     // Fetching the entries.
 | - |   | 
          
            | 3450 |     $count = $qb->count_records();
 | 3470 |     // Fetching the entries. Those are all entries.
 | 
          
            | Línea -... | Línea 3471... | 
          
            | - |   | 3471 |     $entries = $qb->get_records();
 | 
          
            | - |   | 3472 |  
 | 
          
            | - |   | 3473 |     // Now sorting out the array.
 | 
          
            | - |   | 3474 |     $filteredentries = [];
 | 
          
            | - |   | 3475 |  
 | 
          
            | - |   | 3476 |     if ($letter != 'ALL' && $letter != 'SPECIAL' && core_text::strlen($letter)) {
 | 
          
            | - |   | 3477 |         // Build a new array with the filtered entries.
 | 
          
            | - |   | 3478 |         foreach ($entries as $key => $entry) {
 | 
          
            | - |   | 3479 |             if (strtoupper(substr(format_string($entry->concept), 0, 1)) === strtoupper($letter)) {
 | 
          
            | - |   | 3480 |                 // Add it when starting with the correct letter.
 | 
          
            | - |   | 3481 |                 $filteredentries[$key] = $entry;
 | 
          
            | - |   | 3482 |             }
 | 
          
            | - |   | 3483 |         }
 | 
          
            | - |   | 3484 |         $entries = $filteredentries;
 | 
          
            | - |   | 3485 |     }
 | 
          
            | - |   | 3486 |  
 | 
          
            | - |   | 3487 |     if ($letter == 'SPECIAL') {
 | 
          
            | - |   | 3488 |         // Build a new array with the filtered entries.
 | 
          
            | - |   | 3489 |         foreach ($entries as $key => $entry) {
 | 
          
            | - |   | 3490 |             if (!ctype_alpha(substr(format_string($entry->concept), 0, 1))) {
 | 
          
            | - |   | 3491 |                 // Add it when starting with a non-letter character.
 | 
          
            | - |   | 3492 |                 $filteredentries[$key] = $entry;
 | 
          
            | - |   | 3493 |             }
 | 
          
            | - |   | 3494 |         }
 | 
          
            | - |   | 3495 |         $entries = $filteredentries;
 | 
          
            | - |   | 3496 |     }
 | 
          
            | - |   | 3497 |  
 | 
          
            | - |   | 3498 |     if ($letter == 'ALL') {
 | 
          
            | - |   | 3499 |         // No filtering needed.
 | 
          
            | - |   | 3500 |         $filteredentries = $entries;
 | 
          
            | - |   | 3501 |     }
 | 
          
            | - |   | 3502 |  
 | 
          
            | - |   | 3503 |     // Now sort the array in regard to the current language.
 | 
          
            | - |   | 3504 |     usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 3505 |         return format_string($a->concept) <=> format_string($b->concept);
 | 
          
            | - |   | 3506 |     });
 | 
          
            | - |   | 3507 |  
 | 
          
            | - |   | 3508 |     // Size of the overall array.
 | 
          
            | - |   | 3509 |     $count = count($entries);
 | 
          
            | - |   | 3510 |  
 | 
          
            | - |   | 3511 |     // Now applying limit.
 | 
          
            | - |   | 3512 |     if (isset($limit)) {
 | 
          
            | - |   | 3513 |         if (isset($from)) {
 | 
          
            | - |   | 3514 |             $entries = array_slice($filteredentries, $from, $limit);
 | 
          
            | - |   | 3515 |         } else {
 | 
          
            | - |   | 3516 |             $entries = array_slice($filteredentries);
 | 
          
            | - |   | 3517 |         }
 | 
          
            | - |   | 3518 |     } else {
 | 
          
            | - |   | 3519 |         $entries = $filteredentries;
 | 
          
            | 3451 |     $entries = $qb->get_records();
 | 3520 |     }
 | 
          
            | 3452 |  
 | 3521 |  
 | 
          
            | Línea 3453... | Línea 3522... | 
          
            | 3453 |     return array($entries, $count);
 | 3522 |     return array($entries, $count);
 | 
          
            | 3454 | }
 | 3523 | }
 | 
          
            | Línea 3463... | Línea 3532... | 
          
            | 3463 |  * @param  int $from Fetch records from.
 | 3532 |  * @param  int $from Fetch records from.
 | 
          
            | 3464 |  * @param  int $limit Number of records to fetch.
 | 3533 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3465 |  * @param  array $options Accepts:
 | 3534 |  * @param  array $options Accepts:
 | 
          
            | 3466 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3535 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3467 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3536 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3468 |  * @return array The first element being the recordset, the second the number of entries.
 | 3537 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3538 |  *               array has.
 | 
          
            | 3469 |  * @since Moodle 3.1
 | 3539 |  * @since Moodle 3.1
 | 
          
            | 3470 |  */
 | 3540 |  */
 | 
          
            | 3471 | function glossary_get_entries_by_date($glossary, $context, $order, $sort, $from, $limit, $options = array()) {
 | 3541 | function glossary_get_entries_by_date($glossary, $context, $order, $sort, $from, $limit, $options = array()) {
 | 
          
            | Línea 3472... | Línea 3542... | 
          
            | 3472 |  
 | 3542 |  
 | 
          
            | Línea 3505... | Línea 3575... | 
          
            | 3505 |  * @param  int $from Fetch records from.
 | 3575 |  * @param  int $from Fetch records from.
 | 
          
            | 3506 |  * @param  int $limit Number of records to fetch.
 | 3576 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3507 |  * @param  array $options Accepts:
 | 3577 |  * @param  array $options Accepts:
 | 
          
            | 3508 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3578 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3509 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3579 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3510 |  * @return array The first element being the recordset, the second the number of entries.
 | 3580 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3581 |  *               array has.
 | 
          
            | 3511 |  * @since Moodle 3.1
 | 3582 |  * @since Moodle 3.1
 | 
          
            | 3512 |  */
 | 3583 |  */
 | 
          
            | 3513 | function glossary_get_entries_by_category($glossary, $context, $categoryid, $from, $limit, $options = array()) {
 | 3584 | function glossary_get_entries_by_category($glossary, $context, $categoryid, $from, $limit, $options = array()) {
 | 
          
            | Línea 3514... | Línea 3585... | 
          
            | 3514 |  
 | 3585 |  
 | 
          
            | Línea 3562... | Línea 3633... | 
          
            | 3562 |  * @param  int $from Fetch records from.
 | 3633 |  * @param  int $from Fetch records from.
 | 
          
            | 3563 |  * @param  int $limit Number of records to fetch.
 | 3634 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3564 |  * @param  array $options Accepts:
 | 3635 |  * @param  array $options Accepts:
 | 
          
            | 3565 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3636 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3566 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3637 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3567 |  * @return array The first element being the recordset, the second the number of entries.
 | 3638 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3639 |  *               array has.
 | 
          
            | 3568 |  * @since Moodle 3.1
 | 3640 |  * @since Moodle 3.1
 | 
          
            | 3569 |  */
 | 3641 |  */
 | 
          
            | 3570 | function glossary_get_entries_by_author($glossary, $context, $letter, $field, $sort, $from, $limit, $options = array()) {
 | 3642 | function glossary_get_entries_by_author($glossary, $context, $letter, $field, $sort, $from, $limit, $options = array()) {
 | 
          
            | Línea 3571... | Línea 3643... | 
          
            | 3571 |  
 | 3643 |  
 | 
          
            | Línea 3610... | Línea 3682... | 
          
            | 3610 |  * @param  int $from Fetch records from.
 | 3682 |  * @param  int $from Fetch records from.
 | 
          
            | 3611 |  * @param  int $limit Number of records to fetch.
 | 3683 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3612 |  * @param  array $options Accepts:
 | 3684 |  * @param  array $options Accepts:
 | 
          
            | 3613 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3685 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3614 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3686 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3615 |  * @return array The first element being the recordset, the second the number of entries.
 | 3687 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3688 |  *               array has.
 | 
          
            | 3616 |  * @since Moodle 3.1
 | 3689 |  * @since Moodle 3.1
 | 
          
            | 3617 |  */
 | 3690 |  */
 | 
          
            | 3618 | function glossary_get_entries_by_author_id($glossary, $context, $authorid, $order, $sort, $from, $limit, $options = array()) {
 | 3691 | function glossary_get_entries_by_author_id($glossary, $context, $authorid, $order, $sort, $from, $limit, $options = array()) {
 | 
          
            | Línea 3619... | Línea 3692... | 
          
            | 3619 |  
 | 3692 |  
 | 
          
            | Línea 3655... | Línea 3728... | 
          
            | 3655 |  * @param  int $limit Number of records to fetch.
 | 3728 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3656 |  * @param  int $from Fetch records from.
 | 3729 |  * @param  int $from Fetch records from.
 | 
          
            | 3657 |  * @param  array $options Accepts:
 | 3730 |  * @param  array $options Accepts:
 | 
          
            | 3658 |  *                        - (bool) includenotapproved. When false, includes self even if all of their entries require approval.
 | 3731 |  *                        - (bool) includenotapproved. When false, includes self even if all of their entries require approval.
 | 
          
            | 3659 |  *                          When true, also includes authors only having entries pending approval.
 | 3732 |  *                          When true, also includes authors only having entries pending approval.
 | 
          
            | 3660 |  * @return array The first element being the recordset, the second the number of entries.
 | 3733 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3734 |  *               array has.
 | 
          
            | 3661 |  * @since Moodle 3.1
 | 3735 |  * @since Moodle 3.1
 | 
          
            | 3662 |  */
 | 3736 |  */
 | 
          
            | 3663 | function glossary_get_authors($glossary, $context, $limit, $from, $options = array()) {
 | 3737 | function glossary_get_authors($glossary, $context, $limit, $from, $options = array()) {
 | 
          
            | 3664 |     global $DB, $USER;
 | 3738 |     global $DB, $USER;
 | 
          
            | Línea 3695... | Línea 3769... | 
          
            | 3695 |  * Returns the categories of a glossary.
 | 3769 |  * Returns the categories of a glossary.
 | 
          
            | 3696 |  *
 | 3770 |  *
 | 
          
            | 3697 |  * @param  object $glossary The glossary.
 | 3771 |  * @param  object $glossary The glossary.
 | 
          
            | 3698 |  * @param  int $from Fetch records from.
 | 3772 |  * @param  int $from Fetch records from.
 | 
          
            | 3699 |  * @param  int $limit Number of records to fetch.
 | 3773 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3700 |  * @return array The first element being the recordset, the second the number of entries.
 | 3774 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3775 |  *               array has.
 | 
          
            | 3701 |  * @since Moodle 3.1
 | 3776 |  * @since Moodle 3.1
 | 
          
            | 3702 |  */
 | 3777 |  */
 | 
          
            | 3703 | function glossary_get_categories($glossary, $from, $limit) {
 | 3778 | function glossary_get_categories($glossary, $from, $limit) {
 | 
          
            | 3704 |     global $DB;
 | 3779 |     global $DB;
 | 
          
            | Línea 3733... | Línea 3808... | 
          
            | 3733 |     $conditions = array();
 | 3808 |     $conditions = array();
 | 
          
            | Línea 3734... | Línea 3809... | 
          
            | 3734 |  
 | 3809 |  
 | 
          
            | 3735 |     foreach ($terms as $searchterm) {
 | 3810 |     foreach ($terms as $searchterm) {
 | 
          
            | Línea 3736... | Línea 3811... | 
          
            | 3736 |         $i++;
 | 3811 |         $i++;
 | 
          
            | 3737 |  
 | 3812 |  
 | 
          
            | Línea 3738... | Línea 3813... | 
          
            | 3738 |         $not = false; // Initially we aren't going to perform NOT LIKE searches, only MSSQL and Oracle
 | 3813 |         $not = false; // Initially we aren't going to perform NOT LIKE searches, only MSSQL
 | 
          
            | 3739 |                       // will use it to simulate the "-" operator with LIKE clause.
 | 3814 |                       // will use it to simulate the "-" operator with LIKE clause.
 | 
          
            | 3740 |  
 | 3815 |  
 | 
          
            | Línea 3745... | Línea 3820... | 
          
            | 3745 |             // With fullsearch enabled, look also within definitions.
 | 3820 |             // With fullsearch enabled, look also within definitions.
 | 
          
            | 3746 |             $concat = $DB->sql_concat('ge.concept', "' '", 'ge.definition', "' '", "COALESCE(al.alias, :emptychar{$i})");
 | 3821 |             $concat = $DB->sql_concat('ge.concept', "' '", 'ge.definition', "' '", "COALESCE(al.alias, :emptychar{$i})");
 | 
          
            | 3747 |         }
 | 3822 |         }
 | 
          
            | 3748 |         $params['emptychar' . $i] = '';
 | 3823 |         $params['emptychar' . $i] = '';
 | 
          
            | Línea 3749... | Línea 3824... | 
          
            | 3749 |  
 | 3824 |  
 | 
          
            | 3750 |         // Under Oracle and MSSQL, trim the + and - operators and perform simpler LIKE (or NOT LIKE) queries.
 | 3825 |         // Under MSSQL, trim the + and - operators and perform simpler LIKE (or NOT LIKE) queries.
 | 
          
            | 3751 |         if (!$DB->sql_regex_supported()) {
 | 3826 |         if (!$DB->sql_regex_supported()) {
 | 
          
            | 3752 |             if (substr($searchterm, 0, 1) === '-') {
 | 3827 |             if (substr($searchterm, 0, 1) === '-') {
 | 
          
            | 3753 |                 $not = true;
 | 3828 |                 $not = true;
 | 
          
            | 3754 |             }
 | 3829 |             }
 | 
          
            | Línea 3799... | Línea 3874... | 
          
            | 3799 |  * @param  int $from Fetch records from.
 | 3874 |  * @param  int $from Fetch records from.
 | 
          
            | 3800 |  * @param  int $limit Number of records to fetch.
 | 3875 |  * @param  int $limit Number of records to fetch.
 | 
          
            | 3801 |  * @param  array $options Accepts:
 | 3876 |  * @param  array $options Accepts:
 | 
          
            | 3802 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 3877 |  *                        - (bool) includenotapproved. When false, includes the non-approved entries created by
 | 
          
            | 3803 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 3878 |  *                          the current user. When true, also includes the ones that the user has the permission to approve.
 | 
          
            | 3804 |  * @return array The first element being the array of results, the second the number of entries.
 | 3879 |  * @return array The first element being the recordset (taking into account the limit), the second the number of entries the overall
 | 
          
            | - |   | 3880 |  *               array has.
 | 
          
            | 3805 |  * @since Moodle 3.1
 | 3881 |  * @since Moodle 3.1
 | 
          
            | 3806 |  */
 | 3882 |  */
 | 
          
            | 3807 | function glossary_get_entries_by_search($glossary, $context, $query, $fullsearch, $order, $sort, $from, $limit,
 | 3883 | function glossary_get_entries_by_search($glossary, $context, $query, $fullsearch, $order, $sort, $from, $limit,
 | 
          
            | 3808 |                                         $options = array()) {
 | 3884 |                                         $options = array()) {
 | 
          
            | 3809 |     global $DB, $USER;
 | 3885 |     global $DB, $USER;
 | 
          
            | Línea 3881... | Línea 3957... | 
          
            | 3881 |     } else {
 | 3957 |     } else {
 | 
          
            | 3882 |         $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_SELF);
 | 3958 |         $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_SELF);
 | 
          
            | 3883 |     }
 | 3959 |     }
 | 
          
            | Línea 3884... | Línea 3960... | 
          
            | 3884 |  
 | 3960 |  
 | 
          
            | - |   | 3961 |     $qb->add_field('*', 'entries');
 | 
          
            | 3885 |     $qb->add_field('*', 'entries');
 | 3962 |     $qb->add_field('alias', 'alias');
 | 
          
            | 3886 |     $qb->join_alias();
 | 3963 |     $qb->join_alias();
 | 
          
            | 3887 |     $qb->join_user();
 | 3964 |     $qb->join_user();
 | 
          
            | 3888 |     $qb->add_user_fields();
 | 3965 |     $qb->add_user_fields();
 | 
          
            | Línea 3889... | Línea 3966... | 
          
            | 3889 |     $qb->filter_by_term($term);
 | 3966 |     $qb->filter_by_term($term);
 | 
          
            | 3890 |  
 | 3967 |  
 | 
          
            | 3891 |     $qb->order_by('concept', 'entries');
 | - |   | 
          
            | Línea 3892... | Línea 3968... | 
          
            | 3892 |     $qb->order_by('id', 'entries');     // Sort on ID to avoid random ordering when entries share an ordering value.
 | 3968 |     $qb->order_by('concept', 'entries');
 | 
          
            | 3893 |     $qb->limit($from, $limit);
 | - |   | 
          
            | 3894 |  
 | 3969 |     $qb->order_by('id', 'entries');     // Sort on ID to avoid random ordering when entries share an ordering value.
 | 
          
            | Línea -... | Línea 3970... | 
          
            | - |   | 3970 |  
 | 
          
            | - |   | 3971 |     // Fetching the entries. Those are all entries.
 | 
          
            | - |   | 3972 |     $entries = $qb->get_records();
 | 
          
            | - |   | 3973 |  
 | 
          
            | - |   | 3974 |     // Now sorting out the array.
 | 
          
            | - |   | 3975 |     $filteredentries = [];
 | 
          
            | - |   | 3976 |  
 | 
          
            | - |   | 3977 |     // Now sorting out the array.
 | 
          
            | - |   | 3978 |     foreach ($entries as $key => $entry) {
 | 
          
            | - |   | 3979 |         if (strtoupper(format_string($entry->concept)) === strtoupper($term)) {
 | 
          
            | - |   | 3980 |             // Add it when matching concept or alias.
 | 
          
            | - |   | 3981 |             $filteredentries[$key] = $entry;
 | 
          
            | - |   | 3982 |         }
 | 
          
            | - |   | 3983 |         if ((isset($entry->alias)) && (strtoupper(format_string($entry->alias)) === strtoupper($term))) {
 | 
          
            | - |   | 3984 |             // Add it when matching concept or alias.
 | 
          
            | - |   | 3985 |             $filteredentries[$key] = $entry;
 | 
          
            | - |   | 3986 |         }
 | 
          
            | - |   | 3987 |     }
 | 
          
            | - |   | 3988 |     $entries = $filteredentries;
 | 
          
            | - |   | 3989 |     // Check whether concept or alias match the term.
 | 
          
            | - |   | 3990 |  
 | 
          
            | - |   | 3991 |     // Now sort the array in regard to the current language.
 | 
          
            | - |   | 3992 |     usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 3993 |         return format_string($a->concept) <=> format_string($b->concept);
 | 
          
            | - |   | 3994 |     });
 | 
          
            | - |   | 3995 |  
 | 
          
            | - |   | 3996 |     // Size of the overall array.
 | 
          
            | - |   | 3997 |     $count = count($entries);
 | 
          
            | - |   | 3998 |  
 | 
          
            | - |   | 3999 |     // Now applying limit.
 | 
          
            | - |   | 4000 |     if (isset($limit)) {
 | 
          
            | - |   | 4001 |         if (isset($from)) {
 | 
          
            | - |   | 4002 |             $entries = array_slice($filteredentries, $from, $limit);
 | 
          
            | - |   | 4003 |         } else {
 | 
          
            | - |   | 4004 |             $entries = array_slice($filteredentries);
 | 
          
            | - |   | 4005 |         }
 | 
          
            | 3895 |     // Fetching the entries.
 | 4006 |     } else {
 | 
          
            | 3896 |     $count = $qb->count_records();
 | 4007 |         $entries = $filteredentries;
 | 
          
            | Línea 3897... | Línea 4008... | 
          
            | 3897 |     $entries = $qb->get_records();
 | 4008 |     }
 | 
          
            | 3898 |  
 | 4009 |  
 | 
          
            | Línea 3913... | Línea 4024... | 
          
            | 3913 |  * @since Moodle 3.1
 | 4024 |  * @since Moodle 3.1
 | 
          
            | 3914 |  */
 | 4025 |  */
 | 
          
            | 3915 | function glossary_get_entries_to_approve($glossary, $context, $letter, $order, $sort, $from, $limit) {
 | 4026 | function glossary_get_entries_to_approve($glossary, $context, $letter, $order, $sort, $from, $limit) {
 | 
          
            | Línea 3916... | Línea 4027... | 
          
            | 3916 |  
 | 4027 |  
 | 
          
            | 3917 |     $qb = new mod_glossary_entry_query_builder($glossary);
 | - |   | 
          
            | 3918 |     if ($letter != 'ALL' && $letter != 'SPECIAL' && core_text::strlen($letter)) {
 | - |   | 
          
            | 3919 |         $qb->filter_by_concept_letter($letter);
 | - |   | 
          
            | 3920 |     }
 | - |   | 
          
            | 3921 |     if ($letter == 'SPECIAL') {
 | - |   | 
          
            | 3922 |         $qb->filter_by_concept_non_letter();
 | - |   | 
          
            | Línea 3923... | Línea 4028... | 
          
            | 3923 |     }
 | 4028 |     $qb = new mod_glossary_entry_query_builder($glossary);
 | 
          
            | 3924 |  
 | 4029 |  
 | 
          
            | 3925 |     $qb->add_field('*', 'entries');
 | 4030 |     $qb->add_field('*', 'entries');
 | 
          
            | 3926 |     $qb->join_user();
 | 4031 |     $qb->join_user();
 | 
          
            | - |   | 4032 |     $qb->add_user_fields();
 | 
          
            | - |   | 4033 |     $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_ONLY);
 | 
          
            | - |   | 4034 |  
 | 
          
            | - |   | 4035 |     // Fetching the entries. Those are all non approved entries.
 | 
          
            | - |   | 4036 |     $entries = $qb->get_records();
 | 
          
            | - |   | 4037 |  
 | 
          
            | - |   | 4038 |     // Size of the overall array.
 | 
          
            | - |   | 4039 |     $count = count($entries);
 | 
          
            | - |   | 4040 |  
 | 
          
            | - |   | 4041 |     // If a some filter is set, restrict by that filter.
 | 
          
            | - |   | 4042 |     $filteredentries = [];
 | 
          
            | - |   | 4043 |  
 | 
          
            | - |   | 4044 |     if ($letter != 'ALL' && $letter != 'SPECIAL' && core_text::strlen($letter)) {
 | 
          
            | - |   | 4045 |         // Build a new array with the filtered entries.
 | 
          
            | - |   | 4046 |         foreach ($entries as $key => $entry) {
 | 
          
            | - |   | 4047 |             if (strtoupper(substr(format_string($entry->concept), 0, 1)) === strtoupper($letter)) {
 | 
          
            | - |   | 4048 |                 // Add it when starting with the correct letter.
 | 
          
            | - |   | 4049 |                 $filteredentries[$key] = $entry;
 | 
          
            | - |   | 4050 |             }
 | 
          
            | - |   | 4051 |         }
 | 
          
            | - |   | 4052 |     } else if ($letter == 'SPECIAL') {
 | 
          
            | - |   | 4053 |         // Build a new array with the filtered entries.
 | 
          
            | - |   | 4054 |         foreach ($entries as $key => $entry) {
 | 
          
            | - |   | 4055 |             if (!ctype_alpha(substr(format_string($entry->concept), 0, 1))) {
 | 
          
            | - |   | 4056 |                 // Add it when starting with a non-letter character.
 | 
          
            | - |   | 4057 |                 $filteredentries[$key] = $entry;
 | 
          
            | - |   | 4058 |             }
 | 
          
            | - |   | 4059 |         }
 | 
          
            | - |   | 4060 |     } else {
 | 
          
            | - |   | 4061 |         // No filtering needed (This means CONCEPT).
 | 
          
            | - |   | 4062 |         $filteredentries = $entries;
 | 
          
            | - |   | 4063 |     }
 | 
          
            | 3927 |     $qb->add_user_fields();
 | 4064 |  
 | 
          
            | - |   | 4065 |     // Now sort the array in regard to the current language.
 | 
          
            | - |   | 4066 |     if ($order == 'CREATION') {
 | 
          
            | - |   | 4067 |         if (strcasecmp($sort, 'DESC') === 0) {
 | 
          
            | - |   | 4068 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4069 |                 return $b->timecreated <=> $a->timecreated;
 | 
          
            | - |   | 4070 |             });
 | 
          
            | 3928 |     $qb->filter_by_non_approved(mod_glossary_entry_query_builder::NON_APPROVED_ONLY);
 | 4071 |         } else {
 | 
          
            | - |   | 4072 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4073 |                 return $a->timecreated <=> $b->timecreated;
 | 
          
            | 3929 |     if ($order == 'CREATION') {
 | 4074 |             });
 | 
          
            | - |   | 4075 |         }
 | 
          
            | - |   | 4076 |     } else if ($order == 'UPDATE') {
 | 
          
            | 3930 |         $qb->order_by('timecreated', 'entries', $sort);
 | 4077 |         if (strcasecmp($sort, 'DESC') === 0) {
 | 
          
            | - |   | 4078 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4079 |                 return $b->timemodified <=> $a->timemodified;
 | 
          
            | - |   | 4080 |             });
 | 
          
            | - |   | 4081 |         } else {
 | 
          
            | - |   | 4082 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4083 |                 return $a->timemodified <=> $b->timemodified;
 | 
          
            | 3931 |     } else if ($order == 'UPDATE') {
 | 4084 |             });
 | 
          
            | - |   | 4085 |         }
 | 
          
            | 3932 |         $qb->order_by('timemodified', 'entries', $sort);
 | 4086 |     } else {
 | 
          
            | - |   | 4087 |         // This means CONCEPT.
 | 
          
            | - |   | 4088 |         if (strcasecmp($sort, 'DESC') === 0) {
 | 
          
            | - |   | 4089 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4090 |                 return format_string($b->concept) <=> format_string($a->concept);
 | 
          
            | - |   | 4091 |             });
 | 
          
            | - |   | 4092 |         } else {
 | 
          
            | - |   | 4093 |             usort($filteredentries, function($a, $b) {
 | 
          
            | - |   | 4094 |                 return format_string($a->concept) <=> format_string($b->concept);
 | 
          
            | 3933 |     } else {
 | 4095 |             });
 | 
          
            | 3934 |         $qb->order_by('concept', 'entries', $sort);
 | - |   | 
          
            | 3935 |     }
 | - |   | 
          
            | Línea 3936... | Línea 4096... | 
          
            | 3936 |     $qb->order_by('id', 'entries', $sort); // Sort on ID to avoid random ordering when entries share an ordering value.
 | 4096 |         }
 | 
          
            | - |   | 4097 |     }
 | 
          
            | 3937 |     $qb->limit($from, $limit);
 | 4098 |  
 | 
          
            | 3938 |  
 | 4099 |     // Now applying limit.
 | 
          
            | - |   | 4100 |     if (isset($limit)) {
 | 
          
            | - |   | 4101 |         $count = count($filteredentries);
 | 
          
            | - |   | 4102 |         if (isset($from)) {
 | 
          
            | - |   | 4103 |             $filteredentries = array_slice($filteredentries, $from, $limit);
 | 
          
            | - |   | 4104 |         } else {
 | 
          
            | Línea 3939... | Línea 4105... | 
          
            | 3939 |     // Fetching the entries.
 | 4105 |             $filteredentries = array_slice($filteredentries, 0, $limit);
 | 
          
            | 3940 |     $count = $qb->count_records();
 | 4106 |         }
 | 
          
            | Línea 3941... | Línea 4107... | 
          
            | 3941 |     $entries = $qb->get_records();
 | 4107 |     }
 | 
          
            | 3942 |  
 | 4108 |  
 | 
          
            | 3943 |     return array($entries, $count);
 | 4109 |     return [$filteredentries, $count];
 | 
          
            | Línea 4200... | Línea 4366... | 
          
            | 4200 |  *
 | 4366 |  *
 | 
          
            | 4201 |  * @return array
 | 4367 |  * @return array
 | 
          
            | 4202 |  */
 | 4368 |  */
 | 
          
            | 4203 | function mod_glossary_get_fontawesome_icon_map() {
 | 4369 | function mod_glossary_get_fontawesome_icon_map() {
 | 
          
            | 4204 |     return [
 | 4370 |     return [
 | 
          
            | - |   | 4371 |         'mod_glossary:asc' => 'fa-sort-down',
 | 
          
            | - |   | 4372 |         'mod_glossary:desc' => 'fa-sort-up',
 | 
          
            | 4205 |         'mod_glossary:export' => 'fa-download',
 | 4373 |         'mod_glossary:export' => 'fa-arrow-turn-up',
 | 
          
            | 4206 |         'mod_glossary:minus' => 'fa-minus'
 | 4374 |         'mod_glossary:minus' => 'fa-minus',
 | 
          
            | 4207 |     ];
 | 4375 |     ];
 | 
          
            | 4208 | }
 | 4376 | }
 | 
          
            | Línea 4209... | Línea 4377... | 
          
            | 4209 |  
 | 4377 |  
 | 
          
            | 4210 | /**
 | 4378 | /**
 |