/**
     * Initialize the app metadata store, especially the APP_PATH and APP_URL
     *
     * @return AppMetadata
     **/
    public static function createAppMetadata()
    {
        global $secrets;
        // FIXME grown-ups don't program like this
        global $sql;
        // FIXME grown-ups don't program like this
        global $metadata;
        // FIXME grown-ups don't program like this
        global $smarty;
        // FIXME grown-ups don't program like this
        if (AppMetadata::prepareDatabase($sql)) {
            $smarty->addMessage('App metadata database tables created', 'Database tables to store application metadata, which is used to build the
				 <code>config.xml</code> file, have been created in your MySQL database.', NotificationMessage::GOOD);
        } else {
            $smarty->addMessage('App metadata database tables exist', 'Database tables to store application metadata already exist and have not
				 been re-created.');
        }
        $metadata = initAppMetadata();
        $metadata['APP_PATH'] = preg_replace('/\\/classes$/', '', __DIR__);
        $metadata['APP_URL'] = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on' ? 'http://' : 'https://') . $_SERVER['SERVER_NAME'] . preg_replace("|^{$_SERVER['DOCUMENT_ROOT']}(.*)\$|", '$1', $metadata['APP_PATH']);
        $metadata['APP_NAME'] = (string) $secrets->app->name;
        $metadata['APP_ID'] = (string) $secrets->app->id;
        $metadata['CANVAS_INSTANCE_URL_PLACEHOLDER'] = 'https://canvas.instructure.com';
        $smarty->assign('metadata', $metadata);
        $smarty->addMessage('App metadata initialized', 'Basic application metadata has been updated, including APP_PATH and APP_URL', NotificationMessage::GOOD);
        return $metadata;
    }
Esempio n. 2
0
{
    return preg_replace('/[^a-z0-9]+/i', '_', $id);
}
function canvasHackNamespace($id, $javascript)
{
    return preg_replace('/^(\\s*var\\s+)?canvashack\\s*=\\s*{\\n*(.*)};/is', canonicalNamespaceId($id) . ": {\n\$2\n}", $javascript);
}
$canvashacks = array();
$enabledPages = $toolbox->mysql_query("\n    SELECT p.*\n        FROM `pages` AS p\n        INNER JOIN `canvashacks` AS c\n            ON c.`id` = p.`canvashack`\n        WHERE\n            c.`enabled` = TRUE\n        ORDER BY\n            p.`include` DESC\n");
while ($page = $enabledPages->fetch_assoc()) {
    if (!empty($page['url']) && $page['url'] == $location || !empty($page['pattern']) && preg_match($page['pattern'], $location)) {
        if ($page['include']) {
            $canvashacks[$page['canvashack']] = true;
        } else {
            unset($canvashacks[$page['canvashack']]);
        }
    }
}
$css = array();
if (($applicableCSS = $toolbox->mysql_query("\n    SELECT *\n        FROM `css`\n        WHERE\n            `canvashack` = '" . implode("' OR `canvashack` = '", array_keys($canvashacks)) . "'\n")) == false) {
    exit;
}
while ($entry = $applicableCSS->fetch_assoc()) {
    $css[$entry['canvashack']] = shell_exec("php \"{$entry['path']}\" \"{$location}\" 2>&1");
}
foreach ($css as $id => $stylesheet) {
    $plugin = new AppMetadata($toolbox->getMySQL(), $id);
    echo "/* CanvasHack ID {$id} begin */\n";
    echo $plugin->derivedValues($stylesheet);
    echo "\n/* CanvasHack ID {$id} end */\n\n";
}