diff --git a/editview.php b/editview.php index bafeca1..9bc541b 100644 --- a/editview.php +++ b/editview.php @@ -61,7 +61,7 @@ $qkeys = preg_grep('/^q/', $keys); // Filter out only the status. $akeys = preg_grep('/^a/', $keys); // Filter out only the assigned updating. - $deckusers = $DB->get_records('flashcard_card', array('flashcardid' => $flashcard->id), 'id', 'DISTINCT userid, userid'); + $deckusers = $DB->get_records('flashcard_card', array('flashcardid' => $flashcard->id), 'id', 'DISTINCT userid, id'); foreach ($qkeys as $qkey) { diff --git a/locallib.php b/locallib.php index 0f595de..32fcc8b 100644 --- a/locallib.php +++ b/locallib.php @@ -212,41 +212,25 @@ function flashcard_get_card_status(&$flashcard) { global $CFG, $DB; // Get decks by card. - $sql = " - SELECT - CONCAT(dd.questiontext, '_', c.deck), - dd.questiontext as question, - COUNT(c.id) as amount, - c.deck AS deck - FROM - {flashcard_deckdata} dd - LEFT JOIN - {flashcard_card} c - ON - c.entryid = dd.id - WHERE - c.flashcardid = ? - GROUP BY - c.deck - "; + if ($CFG->dbtype == 'sqlsrv') { + $sql = "SELECT dd.questiontext + '_' + CAST(c.deck AS NVARCHAR(MAX)), dd.questiontext AS question, COUNT(c.id) AS amount, c.deck AS deck + FROM {flashcard_deckdata} dd LEFT JOIN {flashcard_card} c ON c.entryid = dd.id + WHERE c.flashcardid = ? + GROUP BY c.deck, dd.questiontext, dd.questiontext"; + } + else { + $sql = "SELECT CONCAT(dd.questiontext, '_', c.deck), dd.questiontext AS question, COUNT(c.id) AS amount, c.deck AS deck + FROM {flashcard_deckdata} dd LEFT JOIN {flashcard_card} c ON c.entryid = dd.id + WHERE c.flashcardid = ? + GROUP BY c.deck"; + } $recs = $DB->get_records_sql($sql, array($flashcard->id)); // Get accessed by card. - $sql = " - SELECT - dd.questiontext, - SUM(accesscount) AS accessed - FROM - {flashcard_deckdata} dd - LEFT JOIN - {flashcard_card} c - ON - c.entryid = dd.id - WHERE - c.flashcardid = ? - GROUP BY - c.entryid - "; + $sql = "SELECT dd.questiontext, SUM(accesscount) AS accessed + FROM {flashcard_deckdata} dd LEFT JOIN {flashcard_card} c ON c.entryid = dd.id + WHERE c.flashcardid = ? + GROUP BY c.entryid, dd.questiontext"; $accesses = $DB->get_records_sql($sql, array($flashcard->id)); $cards = array();