Exemplo n.º 1
0
 public function testGet()
 {
     $pw = 'L0ck it up saf3';
     $pt = 'pssst ... đon’t tell anyøne!';
     $encr = AesCtr::encrypt($pt, $pw, 256);
     $this->assertNotEquals($encr, $pw);
     $this->assertNotEquals($encr, $pt);
     $decr = AesCtr::decrypt($encr, $pw, 256);
     $this->assertEquals($decr, $pt);
 }
Exemplo n.º 2
0
 public static function extract($encr, $debug = false)
 {
     global $CFG;
     $pt = \Tsugi\Crypt\AesCtr::decrypt($encr, $CFG->cookiesecret, 256);
     if ($debug) {
         echo "PT2: {$pt}\n";
     }
     $pieces = explode('::', $pt);
     if (count($pieces) != 3) {
         return false;
     }
     if ($pieces[0] != $CFG->cookiepad) {
         return false;
     }
     return array($pieces[1], $pieces[2]);
 }
Exemplo n.º 3
0
    public function renderBadges($allgrades)
    {
        global $CFG;
        echo '<h1>' . $this->lessons->title . "</h1>\n";
        $awarded = array();
        ?>
<ul class="nav nav-tabs">
  <li class="active"><a href="#home" data-toggle="tab" aria-expanded="true">Progress</a></li>
  <li class=""><a href="#profile" data-toggle="tab" aria-expanded="false">Badges Awarded</a></li>
</ul>
<div id="myTabContent" class="tab-content">
  <div class="tab-pane fade active in" id="home">
<?php 
        echo '<table class="table table-striped table-hover "><tbody>' . "\n";
        foreach ($this->lessons->badges as $badge) {
            $threshold = $badge->threshold;
            $count = 0;
            $total = 0;
            $scores = array();
            foreach ($badge->assignments as $resource_link_id) {
                $score = 0;
                if (isset($allgrades[$resource_link_id])) {
                    $score = 100 * $allgrades[$resource_link_id];
                }
                $scores[$resource_link_id] = $score;
                $total = $total + $score;
                $count = $count + 1;
            }
            $max = $count * 100;
            $progress = $max <= 0 ? 100 : intval($total / $max * 100);
            $kind = 'danger';
            if ($progress < 5) {
                $progress = 5;
            }
            if ($progress > 5) {
                $kind = 'warning';
            }
            if ($progress > 50) {
                $kind = 'info';
            }
            if ($progress >= $threshold * 100) {
                $kind = 'success';
                $awarded[] = $badge;
            }
            echo '<tr><td class="info">';
            echo '<i class="fa fa-certificate" aria-hidden="true" style="padding-right: 5px;"></i>';
            echo $badge->title;
            echo '</td><td class="info" style="width: 30%; min-width: 200px;">';
            echo '<div class="progress">';
            echo '<div class="progress-bar progress-bar-' . $kind . '" style="width: ' . $progress . '%"></div>';
            echo '</div>';
            echo "</td></tr>\n";
            foreach ($badge->assignments as $resource_link_id) {
                $score = 0;
                if (isset($allgrades[$resource_link_id])) {
                    $score = 100 * $allgrades[$resource_link_id];
                }
                $progress = intval($score * 100);
                $kind = 'danger';
                if ($progress < 5) {
                    $progress = 5;
                }
                if ($progress > 5) {
                    $kind = 'warning';
                }
                if ($progress > 50) {
                    $kind = 'info';
                }
                if ($progress >= 100) {
                    $kind = 'success';
                }
                $module = $this->getModuleByRlid($resource_link_id);
                $lti = $this->getLtiByRlid($resource_link_id);
                echo '<tr><td>';
                echo '<a href="lessons.php?anchor=' . $module->anchor . '">';
                echo '<i class="fa fa-square-o text-info" aria-hidden="true" style="label label-success; padding-right: 5px;"></i>';
                echo $lti->title . "</a>\n";
                echo '</td><td style="width: 30%; min-width: 200px;">';
                echo '<a href="lessons.php?anchor=' . $module->anchor . '">';
                echo '<div class="progress">';
                echo '<div class="progress-bar progress-bar-' . $kind . '" style="width: ' . $progress . '%"></div>';
                echo '</div>';
                echo '</a>';
                echo "</td></tr>\n";
            }
        }
        echo '</tbody></table>' . "\n";
        ?>
  </div>
  <div class="tab-pane fade" id="profile">
<?php 
        if (count($awarded) < 1) {
            echo "<p>No badges have been awarded yet.</p>";
        } else {
            echo "</ul>\n";
            foreach ($awarded as $badge) {
                echo "<li>";
                $code = basename($badge->image, '.png');
                $decrypted = $_SESSION['id'] . ':' . $code . ':' . $_SESSION['context_id'];
                $encrypted = bin2hex(AesCtr::encrypt($decrypted, $CFG->badge_encrypt_password, 256));
                echo '<a href="badges/images/' . $encrypted . '.png" target="_blank">';
                echo '<img src="badges/images/' . $encrypted . '.png" width="90"></a>';
                echo $badge->title;
                echo "</li>\n";
            }
            echo "</ul>\n";
            ?>
<p>These badges contain the official Open Badge metadata.  You can download the badge and 
put it on your own server, or add the badge to a "badge packpack".  You could validate the badge 
using <a href="http://www.dr-chuck.com/obi-sample/" target="_blank">A simple badge validator</a>.
</p>
<?php 
        }
        ?>
</div>
<?php 
    }