/**
  * Parses the snippet short code
  * @example [snippet id=123]
  * @example [snippet id=123 version=456]
  */
 public static function parse($arguments, $content = null, $parser = null)
 {
     //Ensure ID is pressent in the arguments
     if (!array_key_exists('id', $arguments)) {
         return '<p><b><i>' . _t('CodeBankShortCode.MISSING_ID_ATTRIBUTE', '_Short Code missing the id attribute') . '</i></b></p>';
     }
     //Fetch Snippet
     $snippet = Snippet::get()->byID(intval($arguments['id']));
     if (empty($snippet) || $snippet === false || $snippet->ID == 0) {
         return '<p><b><i>' . _t('CodeBankShortCode.SNIPPET_NOT_FOUND', '_Snippet not found') . '</i></b></p>';
     }
     //Fetch Text
     $snippetText = $snippet->SnippetText;
     //If the version exists fetch it, and replace the text with that of the version
     if (array_key_exists('version', $arguments)) {
         $version = $snippet->Version(intval($arguments['version']));
         if (empty($version) || $version === false || $version->ID == 0) {
             $snippetText = $version->Text;
         }
     }
     //Load CSS Requirements
     Requirements::css(CB_DIR . '/javascript/external/syntaxhighlighter/themes/shCore.css');
     Requirements::css(CB_DIR . '/javascript/external/syntaxhighlighter/themes/shCoreDefault.css');
     Requirements::css(CB_DIR . '/javascript/external/syntaxhighlighter/themes/shThemeDefault.css');
     //Load JS Requirements
     Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js');
     Requirements::javascript(CB_DIR . '/javascript/external/syntaxhighlighter/brushes/shCore.js');
     Requirements::javascript(CB_DIR . '/javascript/external/syntaxhighlighter/brushes/' . self::getBrushName($snippet->Language()->HighlightCode) . '.js');
     Requirements::javascriptTemplate(CB_DIR . '/javascript/CodeBankShortCode.template.js', array('ID' => $snippet->ID), 'snippet-highlightinit-' . $snippet->ID);
     //Render the snippet
     $obj = new ViewableData();
     return $obj->renderWith('CodeBankShortCode', array('ID' => $snippet->ID, 'Title' => $snippet->getField('Title'), 'Description' => $snippet->getField('Description'), 'SnippetText' => DBField::create_field('Text', $snippetText), 'HighlightCode' => strtolower($snippet->Language()->HighlightCode)));
 }
コード例 #2
0
ファイル: snippet.php プロジェクト: ZerGabriel/cms-1
 /**
  * 
  * @param string $snippet_name
  * @param array $vars
  * @param integer $cache_lifetime
  * @param boolean $cache_by_uri
  * @param array $tags
  * @param boolean $i18n
  * @return void
  */
 public static function render($snippet_name, $vars = NULL, $cache_lifetime = NULL, $cache_by_uri = FALSE, array $tags = array(), $i18n = NULL)
 {
     $view = Snippet::get($snippet_name, $vars);
     if ($view === NULL) {
         return NULL;
     }
     $cache_key = self::_cache_key($snippet_name, $cache_by_uri);
     if (!in_array($snippet_name, $tags)) {
         $tags[] = $snippet_name;
     }
     if (Kohana::$caching === TRUE and $cache_lifetime !== NULL and !Fragment::load($cache_key, (int) $cache_lifetime, $i18n)) {
         echo $view;
         Fragment::save_with_tags((int) $cache_lifetime, $tags);
     } else {
         if ($cache_lifetime === NULL) {
             echo $view;
         }
     }
 }
 /**
  * Performs the search against the snippets in the system
  *
  * @param {string} $keywords Keywords to search for
  * @param {int} $languageID Language to filter to
  * @param {int} $folderID Folder to filter to
  * @return {DataList} Data list pointing to the snippets in the results
  */
 public function doSnippetSearch($keywords, $languageID = false, $folderID = false)
 {
     $list = Snippet::get();
     if (isset($languageID) && !empty($languageID)) {
         $list = $list->filter('LanguageID', intval($languageID));
     }
     if (isset($folderID) && !empty($folderID)) {
         $list = $list->filter('FolderID', intval($folderID));
     }
     if (isset($keywords) && !empty($keywords)) {
         $SQL_val = Convert::raw2sql($keywords);
         if (DB::getConn() instanceof MySQLDatabase) {
             $list = $list->where("MATCH(\"Title\", \"Description\", \"Tags\") AGAINST('" . $SQL_val . "' IN BOOLEAN MODE)");
         } else {
             $list = $list->filterAny(array('Title:PartialMatch' => $SQL_val, 'Description:PartialMatch' => $SQL_val, 'Tags:PartialMatch' => $SQL_val));
         }
     }
     return $list;
 }
 /**
  * Deletes a folder
  * @param {stdClass} $data Data passed from ActionScript
  * @return {array} Standard response base
  */
 public function moveSnippet($data)
 {
     $response = CodeBank_ClientAPI::responseBase();
     //Ensure logged in
     if (!Permission::check('CODE_BANK_ACCESS')) {
         $response['status'] = 'EROR';
         $response['message'] = _t('CodeBankAPI.PERMISSION_DENINED', '_Permission Denied');
         return $response;
     }
     $snippet = Snippet::get()->byID(intval($data->id));
     if (empty($snippet) || $snippet === false || $snippet->ID == 0) {
         $response['status'] = "EROR";
         $response['message'] = _t('CodeBankAPI.SNIPPET_NOT_FOUND', '_Snippet not found');
         return $response;
     }
     if ($data->folderID != 0) {
         $snippetFolder = SnippetFolder::get()->byID(intval($data->folderID));
         if (empty($snippetFolder) || $snippetFolder === false || $snippetFolder->ID == 0) {
             $response['status'] = "EROR";
             $response['message'] = _t('CodeBankAPI.FOLDER_DOES_NOT_EXIST', '_Folder does not exist');
             return $response;
         }
         if ($snippetFolder->LanguageID != $snippet->LanguageID) {
             $response['status'] = "EROR";
             $response['message'] = _t('CodeBankAPI.LANGUAGE_NOT_SAME', '_Folder is not in the same language as the snippet');
             return $response;
         }
     }
     try {
         $snippet->FolderID = $data->folderID;
         $snippet->write();
         $response['status'] = "HELO";
     } catch (Exception $e) {
         $response['status'] = "EROR";
         $response['message'] = "Internal Server error occured";
     }
     return $response;
 }
コード例 #5
0
 /**
  * Handles moving of a snippet when the tree is reordered
  * @param {SS_HTTPRequest} $request HTTP Request
  */
 public function moveSnippet(SS_HTTPRequest $request)
 {
     $snippet = Snippet::get()->byID(intval($request->getVar('ID')));
     if (empty($snippet) || $snippet === false || $snippet->ID == 0) {
         $this->response->setStatusCode(403, _t('CodeBank.SNIPPIT_NOT_EXIST', '_Snippit does not exist'));
         return;
     }
     $parentID = $request->getVar('ParentID');
     if (strpos($parentID, 'language-') !== false) {
         $lang = SnippetLanguage::get()->byID(intval(str_replace('language-', '', $parentID)));
         if (empty($lang) || $lang === false || $lang->ID == 0) {
             $this->response->setStatusCode(403, _t('CodeBank.LANGUAGE_NOT_EXIST', '_Language does not exist'));
             return;
         }
         if ($lang->ID != $snippet->LanguageID) {
             $this->response->setStatusCode(403, _t('CodeBank.CANNOT_MOVE_TO_LANGUAGE', '_You cannot move a snippet to another language'));
             return;
         }
         //Move out of folder
         DB::query('UPDATE "Snippet" SET "FolderID"=0 WHERE "ID"=' . $snippet->ID);
         $this->response->addHeader('X-Status', rawurlencode(_t('CodeBank.SNIPPET_MOVED', '_Snippet moved successfully')));
         return;
     } else {
         if (strpos($parentID, 'folder-') !== false) {
             $folder = SnippetFolder::get()->byID(intval(str_replace('folder-', '', $parentID)));
             if (empty($folder) || $folder === false || $folder->ID == 0) {
                 $this->response->setStatusCode(403, _t('CodeBank.FOLDER_NOT_EXIST', '_Folder does not exist'));
                 return;
             }
             if ($folder->LanguageID != $snippet->LanguageID) {
                 $this->response->setStatusCode(403, _t('CodeBank.CANNOT_MOVE_TO_FOLDER', '_You cannot move a snippet to a folder in another language'));
                 return;
             }
             //Move to folder
             DB::query('UPDATE "Snippet" SET "FolderID"=' . $folder->ID . ' WHERE "ID"=' . $snippet->ID);
             $this->response->addHeader('X-Status', rawurlencode(_t('CodeBank.SNIPPET_MOVED', '_Snippet moved successfully')));
             return;
         }
     }
     $this->response->setStatusCode(403, _t('CodeBank.UNKNOWN_PARENT', '_Unknown Parent'));
 }
</div>
<div class="row">
<div class="col-md-6">
<p class="description"></p>
</div>
<div class="col-md-6">
<a href="" target="_blank" class="btn green_btn preview_btn">Go to Site</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php 
echo Snippet::get('google-analytics');
Javascript::add('public/assets/js/vendor.js', 'frontend', 1);
Javascript::add('public/assets/js/app.js', 'frontend', 2);
Javascript::load();
/*
<div class="loading"></div>
<style rel="stylesheet">
.loading{
background: url('https://dl.dropbox.com/u/23834858/fotos/loading.gif') no-repeat center center rgba(51, 51, 51, 0.82);
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0 auto;
display: block;
コード例 #7
0
ファイル: create.php プロジェクト: richthegeek/Sasshare
<?php

Route::get('documents/create', function () {
    if (!($user = Auth::user())) {
        return array('error' => 'You must be logged in to create a document.');
    }
    $input = Input::all();
    $rules = array('snippet_id' => 'required|exists:snippets,id', 'title' => 'required|max:255', 'syntax' => 'alpha', 'data' => 'required');
    $validated = Validator::make($input, $rules);
    if ($validated->fails()) {
        return array('error' => $validated->errors);
    }
    $snippet = Snippet::get($input['snippet_id']);
    if (isset($snippet->documents[$input['title']])) {
        return array('error' => array('title' => 'This snippet already has a document of that name'));
    }
    if (!isset($input['syntax'])) {
        $input['syntax'] = substr($input['title'], strpos($input['title'], '.') + 1);
    }
    if ($id = Document::create($input['snippet_id'], $input)) {
        return Redirect::to('documents/' . $id);
    }
});
 /**
  * Performs the migration
  */
 public function run($request)
 {
     //Check for tables
     $tables = DB::tableList();
     if (!array_key_exists('languages', $tables) || !array_key_exists('snippits', $tables) || !array_key_exists('snippit_history', $tables) || !array_key_exists('preferences', $tables) || !array_key_exists('settings', $tables) || !array_key_exists('snippit_search', $tables) || !array_key_exists('users', $tables)) {
         echo '<b>' . _t('CodeBankLegacyMigrate.TABLES_NOT_FOUND', '_Could not find Code Bank 2.2 database tables, cannot migrate') . '</b>';
         exit;
     }
     //Ensure Empty
     if (Snippet::get()->Count() > 0) {
         echo '<b>' . _t('CodeBankLegacyMigrate.SNIPPETS_PRESENT', '_Already appears to be snippets present in the database, please start with a clean database, cannot migrate.') . '</b>';
         exit;
     }
     //Increase Timeout, since 30s probably won't be enough in huge databases
     increase_time_limit_to(600);
     //Find Other language
     $plainTextID = SnippetLanguage::get()->filter('Name', 'Other')->first();
     if (empty($plainTextID) || $plainTextID == false || $plainTextID->ID == 0) {
         echo _t('CodeBankLegacyMigrate.OTHER_NOT_FOUND', '_Could not find the Other Language, cannot migrate, please run dev/build first');
         exit;
     } else {
         $plainTextID = $plainTextID->ID;
     }
     //Check for users group
     $usersGroup = Group::get()->filter('Code', 'code-bank-api')->first();
     if (empty($usersGroup) || $usersGroup == false || $usersGroup->ID == 0) {
         //Rollback Transaction
         if (DB::getConn()->supportsTransactions()) {
             DB::getConn()->transactionRollback();
         }
         echo _t('CodeBankLegacyMigrate.GROUP_NOT_FOUND', '_Could not find users group, cannot migrate, please run dev/build first');
         exit;
     }
     //Start Transaction
     if (DB::getConn()->supportsTransactions()) {
         DB::getConn()->transactionStart();
     }
     //Migrate Languages
     echo '<b>' . _t('CodeBankLegacyMigrate.MIGRATE_USER_LANGUAGES', '_Migrating User Languages') . '</b>... ';
     $results = DB::query('SELECT * FROM "languages" WHERE "user_language"=1');
     if ($results->numRecords() > 0) {
         foreach ($results as $row) {
             DB::query('INSERT INTO "SnippetLanguage" ("ClassName","Created", "LastEdited", "Name", "FileExtension", "HighlightCode", "UserLanguage") ' . "VALUES('SnippetLanguage','" . date('Y-m-d H:i:s') . "','" . date('Y-m-d H:i:s') . "','" . Convert::raw2sql($row['language']) . "','" . Convert::raw2sql($row['file_extension']) . "','" . Convert::raw2sql($row['sjhs_code']) . "',1)");
         }
         echo _t('CodeBankLegacyMigrate.DONE', '_Done') . '<br/>';
     } else {
         echo _t('CodeBankLegacyMigrate.NOT_FOUND', '_None Found') . '<br/>';
     }
     //Migrate Users
     echo '<b>' . _t('CodeBankLegacyMigrate.MIGRATE_USERS', '_Migrating Users') . '</b>...';
     $results = DB::query('SELECT * FROM "users"');
     if ($results->numRecords() > 0) {
         foreach ($results as $row) {
             if ($row['deleted'] == true) {
                 echo '<br/><i>' . _t('CodeBankLegacyMigrate.DELETED_MEMBER_SKIP', '_WARNING: Skipping deleted member {username}, deleted members in Code Bank 3 are not supported', array('username' => $row['username'])) . '</i><br/>';
                 continue;
             }
             //Get user heartbeat preference
             $useHeartbeat = DB::query('SELECT "value" FROM "preferences" WHERE "code"=\'heartbeat\' AND "fkUser"=' . $row['id'])->value();
             //Insert User
             $member = Member::get()->filter('Email', Convert::raw2sql($row['username']))->first();
             if (empty($member) || $member === false || $member->ID == 0) {
                 $member = new Member();
                 $member->FirstName = $row['username'];
                 $member->Email = $row['username'];
                 $member->Password = $row['password'];
                 $member->PasswordEncryption = 'sha1';
                 $member->Locale = 'en_US';
                 $member->DateFormat = 'MMM d, yyyy';
                 $member->TimeFormat = 'h:mm:ss a';
                 $member->UseHeartbeat = intval($useHeartbeat);
                 $member->write();
                 DB::query('UPDATE "Member" ' . 'SET "Password"=\'' . substr(base_convert($row['password'], 16, 36), 0, 64) . '\', ' . '"Salt"=NULL ' . 'WHERE "ID"=' . $member->ID);
                 //Add to security group
                 if ($row['username'] == 'admin') {
                     //For admin add to administrators group
                     $member->addToGroupByCode('administrators');
                 } else {
                     //For all others add to code-bank-api
                     $member->addToGroupByCode('code-bank-api');
                 }
             } else {
                 //Add to code-bank-api if not admin
                 if ($row['username'] != 'admin') {
                     $member->addToGroupByCode('code-bank-api');
                 }
                 $member->UseHeartbeat = intval($useHeartbeat);
                 $member->write();
                 echo '<br/><i>' . _t('CodeBankLegacyMigrate.MEMBER_EXISTS', '_WARNING: Member {username} already exists in the database, no changes have been made to this member. If you are unsure of the password please ask an administrator to have it reset or use the forgot password link', array('username' => $row['username'])) . '</i><br/>';
             }
         }
         echo _t('CodeBankLegacyMigrate.DONE', '_Done') . '<br/>';
     } else {
         //Rollback Transaction
         if (DB::getConn()->supportsTransactions()) {
             DB::getConn()->transactionRollback();
         }
         echo _t('CodeBankLegacyMigrate.NO_USERS_FOUND', '_No users found, Code Bank 2.2 appears to have not been properly setup cannot continue with migration');
         exit;
     }
     //Migrate IP Message
     echo '<b>Migrating IP Message</b>...';
     $ipMessage = DB::query('SELECT "value" FROM "settings" WHERE "code"=\'ipMessage\'')->value();
     $config = CodeBankConfig::CurrentConfig();
     $config->IPMessage = $ipMessage;
     $config->write();
     echo _t('CodeBankLegacyMigrate.DONE', '_Done') . '<br/>';
     //Migrate Snippets
     echo '<b>' . _t('CodeBankLegacyMigrate.MIGRATE_SNIPPETS', '_Migrating Snippets') . '</b>...';
     $results = DB::query('SELECT "snippits".*, "languages"."language", "creator"."username" AS "creatorUsername", "lastEditor"."username" AS "lastEditorUsername" ' . 'FROM "snippits" ' . 'INNER JOIN "languages" ON "snippits"."fkLanguage"="languages"."id" ' . 'LEFT JOIN "users" "creator" ON "snippits"."fkCreatorUser"="creator"."id" ' . 'LEFT JOIN "users" "lastEditor" ON "snippits"."fkLastEditUser"="lastEditor"."id"');
     if ($results->numRecords() > 0) {
         foreach ($results as $row) {
             //Get Creator ID
             $creator = Member::get()->filter('Email', Convert::raw2sql($row['creatorUsername']))->first();
             if (!empty($creator) && $creator !== false && $creator->ID != 0) {
                 $creatorID = $creator->ID;
             } else {
                 $creatorID = 0;
             }
             //Get Last Editor ID
             $lastEditor = Member::get()->filter('Email', Convert::raw2sql($row['lastEditorUsername']))->first();
             if (!empty($lastEditor) && $lastEditor !== false && $lastEditor->ID != 0) {
                 $lastEditorID = $lastEditor->ID;
             } else {
                 $lastEditorID = 0;
             }
             //Get Language ID
             $language = SnippetLanguage::get()->filter('Name', Convert::raw2sql($row['language']))->first();
             if (!empty($language) && $language !== false && $language->ID != 0) {
                 $languageID = $language->ID;
             } else {
                 $languageID = $plainTextID;
             }
             //Insert Snippet Info
             DB::query('INSERT INTO "Snippet" ("ID", "ClassName", "Created", "LastEdited", "Title", "Description", "Tags", "LanguageID", "CreatorID", "LastEditorID") ' . "VALUES(" . $row['id'] . ",'Snippet','" . date('Y-m-d H:i:s') . "','" . date('Y-m-d H:i:s') . "','" . Convert::raw2sql($row['title']) . "','" . Convert::raw2sql($row['description']) . "','" . Convert::raw2sql($row['tags']) . "'," . $languageID . "," . $creatorID . "," . $lastEditorID . ")");
             //Get History
             $versions = DB::query('SELECT * FROM "snippit_history" WHERE "fkSnippit"=' . $row['id']);
             foreach ($versions as $version) {
                 DB::query('INSERT INTO "SnippetVersion" ("ClassName", "Created", "LastEdited", "Text", "ParentID") ' . "VALUES('SnippetVersion','" . date('Y-m-d H:i:s', strtotime($version['date'])) . "','" . date('Y-m-d H:i:s', strtotime($version['date'])) . "','" . Convert::raw2sql($version['text']) . "'," . $row['id'] . ")");
             }
         }
         echo _t('CodeBankLegacyMigrate.DONE', '_Done') . '<br/>';
     } else {
         echo _t('CodeBankLegacyMigrate.NO_SNIPPETS_FOUND', '_No snippets found') . '<br/>';
     }
     //Rename tables
     DB::getConn()->renameTable('snippits', '_obsolete_snippits');
     DB::getConn()->renameTable('snippit_search', '_obsolete_snippit_search');
     DB::getConn()->renameTable('snippit_history', '_obsolete_snippit_history');
     DB::getConn()->renameTable('languages', '_obsolete_languages');
     DB::getConn()->renameTable('settings', '_obsolete_settings');
     DB::getConn()->renameTable('preferences', '_obsolete_preferences');
     DB::getConn()->renameTable('users', '_obsolete_users');
     //Complete Transaction
     if (DB::getConn()->supportsTransactions()) {
         DB::getConn()->transactionEnd();
     }
     //Mark Migrated
     touch(ASSETS_PATH . '/.codeBankMigrated');
     echo '<br/><h4>' . _t('CodeBankLegacyMigrate.MIGRATION_COMPLETE', '_Migration Completed') . '</h4>';
     exit;
 }
コード例 #9
0
<?php

// delegate to snippets, so that designers can easily change how things look AND it makes changes more theme agnostic (although this may not be a great thing anyway)
echo Snippet::get('slider', array('items' => $items));
コード例 #10
0
ファイル: index.php プロジェクト: richthegeek/Sasshare
<?php

Route::get('snippets', function () {
    $path = URL::current();
    return array('GET ' . $path . '/list' => 'List the latest snippets', 'GET ' . $path . '/:id' => 'Get information about a specific snippet', 'POST ' . $path . '/vote/:id/up,down' => 'Vote for a snippet', 'POST ' . $path . '/create' => 'Create a new snippet', 'POST ' . $path . '/:id' => 'Update a snippet', 'DELETE ' . $path . '/:id' => 'Delete a snippet');
});
Route::get('snippets/(:any)', array('before' => 'cache', 'after' => 'cache', function ($id) {
    if ($snip = Snippet::get($id)) {
        return $snip;
    }
    return Redirect::error('404');
}));
コード例 #11
0
ファイル: vote.php プロジェクト: richthegeek/Sasshare
<?php

Route::get('snippets/vote/(:num)/(:any)', function ($snippet_id, $direction) {
    if (!($user = Auth::user())) {
        return array('error' => 'You must be logged in to vote');
    }
    if ($direction != 'up' && $direction != 'down') {
        return array('error' => 'Direction must be either "up" or "down"');
    }
    $direction = $direction == 'up' ? 1 : -1;
    # check for an existing vote.
    if ($vote = DB::table('votes')->where('user_id', '=', $user->id)->where('snippet_id', '=', $snippet_id)->first()) {
        if ($vote->direction == $direction) {
            return array('warning' => 'You have already voted for this snippet');
        }
        DB::table('votes')->where('user_id', '=', $user->id)->where('snippet_id', '=', $snippet_id)->update(array('direction' => $direction));
    } else {
        DB::table('votes')->insert(array('user_id' => $user->id, 'snippet_id' => $snippet_id, 'direction' => $direction, 'created' => time()));
    }
    return Snippet::get($snippet_id);
});