<?php

// UI elements
add_sweetcode('pyLink', 'pyLinkHandler', "NP");
add_sweetcode('pyHint', 'pyHintHandler', "N");
// to allow hint="<pre>"
add_sweetcode('pyWarn', 'pyWarnHandler', "NP");
// exercises (and examples)
add_sweetcode('pyScramble', 'pyScrambleHandler', "NP");
add_sweetcode('pyExample', 'pyExampleHandler', "NP");
add_sweetcode('pyBox', 'pyBoxHandler', "NP");
add_sweetcode('pyShort', 'pyShortHandler', "NP");
add_sweetcode('pyMulti', 'pyMultiHandler', "NP");
add_sweetcode('pyMultiScramble', 'pyMultiScrambleHandler', "NP");
// for translation and/or embedding exercises in new places (like mail page)
add_sweetcode('pyRecall', 'pyRecallHandler', true);
function debugEnabled()
{
    return array_key_exists("d", $_GET) || userIsAdmin();
}
function loadMostRecent($slug)
{
    if (!is_user_logged_in()) {
        return NULL;
    }
    global $wpdb;
    $uid = wp_get_current_user()->ID;
    $table_name = $wpdb->prefix . "pb_submissions";
    $sqlcmd = "SELECT usercode FROM {$table_name} WHERE userid = %d AND problem = %s ORDER BY beginstamp DESC LIMIT 1";
    return $wpdb->get_var($wpdb->prepare($sqlcmd, $uid, $slug));
}
<?php

add_shortcode('br', 'printbr');
function printbr($o, $c)
{
    return '<br/>';
}
add_sweetcode('collapsible', 'print_collapsible', true);
function print_collapsible($options, $content)
{
    $caption = $options['caption'];
    $style = "hiding";
    if (array_key_exists('show', $options) || in_array('show', $options)) {
        $style = "showing";
    }
    return "<div class='collapseContain {$style}'>\n<div class='collapseHead'><span class='icon'></span>\n{$caption}\n</div>\n<div class='collapseBody'>" . do_short_and_sweetcode($content) . '</div></div>';
}
add_sweetcode('accordion', 'print_accordion', true);
function print_accordion($options, $content)
{
    return '<div class="accordion">' . do_short_and_sweetcode($content) . '</div>';
}
<?php

add_sweetcode('pyVis', 'pyVisHandler', "NP");
function pyVisHandler($options, $the_content)
{
    $width = getSoft($options, "width", 400);
    $res = ' ';
    if (!array_key_exists("code", $options)) {
        return "pyVis error: code='...' not found";
    }
    $content = $options["code"];
    $content = softSafeDereference($content);
    $content = html_entity_decode(str_replace(" ", ' ', str_replace('<br/>', "\n", $content)));
    $content = trim($content);
    $content = trim($content);
    //  for ($i =0; $i<strlen($content); $i++)
    //  $res .= ' ' . ord($content[$i]);
    //return $res;
    $tag = 'iframe';
    $urlname = 'src';
    //$tag = 'object'; $urlname = 'data'; // doesn't seem to be different
    $url = content_url('plugins/pybox/') . 'OnlinePythonTutor3-cemc/iframe-embed.html#' . 'code=' . urlencode($content) . '&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=' . $width . '&rightStdout=1';
    return "<{$tag} width='100%' height='480' frameborder='0' scrolling='no' {$urlname}='{$url}'></{$tag}>";
}