my local repository broke so all this shit happened, have a nice day

This commit is contained in:
flash 2015-12-02 15:38:40 +01:00
parent af2eefff5d
commit 9aaf4877d9
2476 changed files with 3696 additions and 36242 deletions

0
.gitattributes vendored Executable file → Normal file
View file

0
.gitignore vendored Executable file → Normal file
View file

1
CONTRIBUTORS.md Executable file → Normal file
View file

@ -17,3 +17,4 @@ This is a list of people who have contributed to Sakura and also a list of the l
- [Parsedown](http://parsedown.org/)
- [PHPMailer](https://github.com/PHPMailer/PHPMailer)
- [PayPal API](https://paypal.com/)
- [jBBCode](http://jbbcode.com/)

0
LICENSE Executable file → Normal file
View file

0
README.md Executable file → Normal file
View file

View file

@ -0,0 +1,107 @@
<?php
/*
* BBcode Wrapper
*/
namespace Sakura;
use JBBCode\Parser;
use JBBCode\DefaultCodeDefinitionSet;
use JBBCode\CodeDefinitionBuilder;
/**
* Class BBcode
* @package Sakura
*/
class BBcode
{
// Parser container
private $bbcode;
// Constructor
public function __construct($text = null) {
// Create new parser class
$this->bbcode = new Parser();
// Add the standard definitions
$this->loadStandardCodes();
// Immediately parse the text if set
if ($text != null) {
$this->bbcode->parse($text);
}
}
// Add basic bbcodes
public function loadStandardCodes() {
// Add the standard definitions
$this->bbcode->addCodeDefinitionSet(new DefaultCodeDefinitionSet());
// Header tag
$builder = new CodeDefinitionBuilder('header', '<h2>{param}</h2>');
$this->bbcode->addCodeDefinition($builder->build());
// Strike tag
$builder = new CodeDefinitionBuilder('s', '<del>{param}</del>');
$this->bbcode->addCodeDefinition($builder->build());
// Spoiler tag
$builder = new CodeDefinitionBuilder('spoiler', '<div class="spoiler">{param}</div>');
$this->bbcode->addCodeDefinition($builder->build());
// Box tag
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title">Click to open.</div><div class="spoiler-box-content">{param}</div></div>');
$this->bbcode->addCodeDefinition($builder->build());
// Box tag
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title">{option}</div><div class="spoiler-box-content">{param}</div></div>');
$builder->setUseOption(true);
$this->bbcode->addCodeDefinition($builder->build());
// Quote tag
$builder = new CodeDefinitionBuilder('quote', '<blockquote>{param}</blockquote>');
$this->bbcode->addCodeDefinition($builder->build());
// Quote tag
$builder = new CodeDefinitionBuilder('quote', '<h4>{option} wrote:</h4><blockquote>{param}</blockquote>');
$builder->setUseOption(true);
$this->bbcode->addCodeDefinition($builder->build());
// Add special definitions (PHP files MUST have the same name as the definition class
foreach (glob(ROOT . '_sakura/components/BBcodeDefinitions/*.php') as $ext) {
// Include the class
require_once $ext;
// Clean the file path
$ext = str_replace(ROOT . '_sakura/components/', '', $ext);
$ext = str_replace('.php', '', $ext);
$ext = str_replace('/', '\\', $ext);
// Build the classname
$className = __NAMESPACE__ . '\\' . $ext;
// Add the BBcode definition
$this->bbcode->addCodeDefinition(new $className);
}
}
// Set text
public function text($text) {
$this->bbcode->parse($text);
}
// Get as HTML
public function toHTML() {
return nl2br($this->bbcode->getAsHtml());
}
// Get as BBmarkup
public function toEditor() {
return $this->bbcode->getAsBBCode();
}
// Get as plaintext
public function toPlain() {
return $this->bbcode->getAsText();
}
}

View file

@ -1,65 +0,0 @@
<?php
/*
* BBcode main
*/
namespace Sakura\BBcode;
class BBcode
{
// Text
private $text;
private $seed;
// Contructor
public function __construct($text = "", $seed = '9001')
{
$this->setText($text);
$this->seed = $seed;
}
// Set text
public function setText($text)
{
$this->text = $text;
}
// Convert to storage format
public function toStore()
{
// Create new Store
$store = new Store($this->text, $this->seed);
// Parse
$store = $store->generate();
// And return
return $store;
}
// Convert to HTML
public function toHTML()
{
// Create new Parse
$parse = new Parse($this->text, $this->seed);
// Parse
$parse = $parse->parse();
// And return
return $parse;
}
// Convert to plain text
public function toEditor()
{
// Create new Parse
$parse = new Parse($this->text, $this->seed);
// Parse
$parse = $parse->toEditor();
// And return
return $parse;
}
}

View file

@ -1,178 +0,0 @@
<?php
/*
* BBcode parser
*/
namespace Sakura\BBcode;
use \HTMLPurifier;
use \HTMLPurifier_Config;
use Sakura\Main;
class Parse
{
// Text
private $text;
private $seed;
// Simple bbcodes
private $simple = [
'b' => 'strong',
'i' => 'em',
'u' => 'u',
's' => 'del',
'h' => 'h2',
];
// Advanced bbcodes
private $advanced = [
'spoiler' => '<span class="spoiler">|</span>',
];
public function __construct($text = "", $seed = '9001')
{
$this->setText($text);
$this->seed = $seed;
}
public function setText($text)
{
$this->text = $text;
}
public function parseImage($text)
{
return preg_replace_callback(
"#\[img:{$this->seed}\](?<url>[^[]+)\[/img:{$this->seed}\]#",
function ($i) {
return "<img src=\"{$i['url']}\" alt=\"{$i['url']}\" />";
},
$text
);
}
public function parseList($text)
{
$text = preg_replace("#\[list=\d+:{$this->seed}\]#", '<ol>', $text);
$text = preg_replace("#\[list(=.?)?:{$this->seed}\]#", "<ol class='unordered'>", $text);
$text = preg_replace("#\[/\*(:m)?:{$this->seed}\]\n?#", '</li>', $text);
$text = str_replace("[*:{$this->seed}]", '<li>', $text);
$text = str_replace("[/list:o:{$this->seed}]", '</ol>', $text);
$text = str_replace("[/list:u:{$this->seed}]", '</ol>', $text);
return $text;
}
public function parseCode($text)
{
return preg_replace_callback(
"#[\r|\n]*\[code:{$this->seed}\][\r|\n]*(.*?)[\r|\n]*\[/code:{$this->seed}\][\r|\n]*#s",
function ($c) {
return '<pre class="prettyprint linenums">' . str_replace('<br />', '', $c[1]) . '</pre>';
},
$text
);
}
public function parseQuote($text)
{
$text = preg_replace("#\[quote=&quot;([^:]+)&quot;:{$this->seed}\]#", '<blockquote><h4>\\1 wrote:</h4>', $text);
$text = str_replace("[quote:{$this->seed}]", '<blockquote>', $text);
$text = str_replace("[/quote:{$this->seed}]", '</blockquote>', $text);
return $text;
}
public function parseSimple($text)
{
// Parse all simple tags
foreach ($this->simple as $code => $tag) {
$text = str_replace("[{$code}:{$this->seed}]", "<{$tag}>", $text);
$text = str_replace("[/{$code}:{$this->seed}]", "</{$tag}>", $text);
}
return $text;
}
public function parseAdvanced($text)
{
// Parse all advanced tags
foreach ($this->advanced as $code => $tags) {
$tags = explode('|', $tags);
$text = str_replace("[{$code}:{$this->seed}]", $tags[0], $text);
$text = str_replace("[/{$code}:{$this->seed}]", $tags[1], $text);
}
return $text;
}
public function parseColour($text)
{
$text = preg_replace("#\[color=([^:]+):{$this->seed}\]#", "<span style='color:\\1'>", $text);
$text = str_replace("[/color:{$this->seed}]", '</span>', $text);
return $text;
}
public function parseUrl($text)
{
$text = preg_replace("#\[url:{$this->seed}\](.+?)\[/url:{$this->seed}\]#", "<a rel='nofollow' href='\\1'>\\1</a>", $text);
$text = preg_replace("#\[url=(.+?):{$this->seed}\]#", "<a rel='nofollow' href='\\1'>", $text);
$text = str_replace("[/url:{$this->seed}]", '</a>', $text);
return $text;
}
public function purify($text)
{
$config = HTMLPurifier_Config::createDefault();
$config->set('Cache.SerializerPath', ROOT . 'cache/htmlpurifier');
$config->set('Attr.AllowedRel', ['nofollow']);
$config->set('HTML.Trusted', true);
$def = $config->getHTMLDefinition(true);
$def->addAttribute('img', 'src', 'Text');
$purifier = new HTMLPurifier($config);
return $purifier->purify($text);
}
public function parse()
{
// Get text
$text = $this->text;
$text = $this->parseCode($text);
$text = $this->parseList($text);
$text = $this->parseQuote($text);
$text = $this->parseAdvanced($text);
$text = $this->parseColour($text);
$text = $this->parseImage($text);
$text = $this->parseSimple($text);
$text = $this->parseUrl($text);
$text = Main::parseEmotes($text);
$text = str_replace("\n", '<br />', $text);
//$text = $this->purify($text);
return $text;
}
public function toEditor()
{
$text = $this->text;
$text = str_replace("[/*:m:{$this->seed}]", '', $text);
$text = preg_replace("#\[/list:[ou]:{$this->seed}\]#", '[/list]', $text);
$text = str_replace(":{$this->seed}]", ']', $text);
$text = preg_replace('#<!-- ([emw]) --><a.*?>(.*?)</a><!-- \\1 -->#', '\\2', $text);
return html_entity_decode($text);
}
}

View file

@ -1,225 +0,0 @@
<?php
/*
* BBcode storage format generator/converter
*/
namespace Sakura\BBcode;
use Sakura\Database;
class Store
{
// Text
private $text;
private $seed;
// Special escapes
protected $escapes = [
'[' => '&#91;',
']' => '&#93;',
'.' => '&#46;',
':' => '&#58;',
];
// Spaces
protected $spaces = [
"(^|\s)",
"((?:\.|\))?(?:$|\s|\n|\r))",
];
// Simple bbcodes
protected $simple = [
'b',
'i',
'u',
's',
'h',
'img',
'spoiler',
];
// Constructor
public function __construct($text = "", $seed = "")
{
$this->setText($text);
$this->seed = $seed;
}
// Set text
public function setText($text)
{
$this->text = $text;
}
// Colour tag
public function parseColour($text)
{
return preg_replace(
",\[(color=(?:#[[:xdigit:]]{6}|[[:alpha:]]+))\](.+?)\[(/color)\],",
"[\\1:{$this->seed}]\\2[\\3:{$this->seed}]",
$text
);
}
// Align tag
public function parseAlign($text)
{
return preg_replace(
",\[(align=(?:[[:alpha:]]+))\](.+?)\[(/align)\],",
"[\\1:{$this->seed}]\\2[\\3:{$this->seed}]",
$text
);
}
// Size tag
public function parseSize($text)
{
return preg_replace(
",\[(size=(?:[[:digit:]]+))\](.+?)\[(/size)\],",
"[\\1:{$this->seed}]\\2[\\3:{$this->seed}]",
$text
);
}
// Simple tags
public function parseSimple($text)
{
// Parse all simple tags
foreach ($this->simple as $code) {
$text = preg_replace(
"#\[{$code}](.*?)\[/{$code}\]#s",
"[{$code}:{$this->seed}]\\1[/{$code}:{$this->seed}]",
$text
);
}
return $text;
}
// Code tag
public function parseCode($text)
{
$text = preg_replace_callback(
"#\[code\](((?R)|.)*?)\[/code\]#s",
function ($t) {
$escaped = $this->escape($t[1]);
return "[code:{$this->seed}]{$escaped}[/code:{$this->seed}]";
},
$text
);
return $text;
}
// Quote tag
public function parseQuote($text)
{
$patterns = ["/\[(quote(?:=&quot;.+?&quot;)?)\]/", '[/quote]'];
$counts = [preg_match_all($patterns[0], $text), substr_count($text, $patterns[1])];
$limit = min($counts);
$text = preg_replace($patterns[0], "[\\1:{$this->seed}]", $text, $limit);
$text = preg_replace('/' . preg_quote($patterns[1], '/') . '/', "[/quote:{$this->seed}]", $text, $limit);
return $text;
}
public function parseList($text)
{
$patterns = ["/\[(list(?:=.+?)?)\]/", '[/list]'];
$counts = [preg_match_all($patterns[0], $text), substr_count($text, $patterns[1])];
$limit = min($counts);
$text = str_replace('[*]', "[*:{$this->seed}]", $text);
$text = str_replace('[/*]', '', $text);
$text = preg_replace($patterns[0], "[\\1:{$this->seed}]", $text, $limit);
$text = preg_replace('/' . preg_quote($patterns[1], '/') . '/', "[/list:o:{$this->seed}]", $text, $limit);
return $text;
}
public function parseUrl($text)
{
$urlPattern = '(?:https?|ftp)://.+?';
$text = preg_replace_callback(
"#\[url\]({$urlPattern})\[/url\]#",
function ($m) {
$url = $this->escape($m[1]);
return "[url:{$this->seed}]{$url}[/url:{$this->seed}]";
},
$text
);
$text = preg_replace_callback(
"#\[url=({$urlPattern})\](.+?)\[/url\]#",
function ($m) {
$url = $this->escape($m[1]);
return "[url={$url}:{$this->seed}]{$m[2]}[/url:{$this->seed}]";
},
$text
);
return $text;
}
public function parseLinks($text)
{
// Spaces
$spaces = ["(^|\s)", "((?:\.|\))?(?:$|\s|\n|\r))"];
// HTTP(s), FTP, IRC and osu
$text = preg_replace(
"#{$spaces[0]}((?:https?|ftp|irc|osu)://[^\s]+?){$spaces[1]}#",
"\\1<!-- m --><a href='\\2' rel='nofollow'>\\2</a><!-- m -->\\3",
$text
);
// Prefixed with www.
$text = preg_replace(
"/{$spaces[0]}(www\.[^\s]+){$spaces[1]}/",
"\\1<!-- w --><a href='http://\\2' rel='nofollow'>\\2</a><!-- w -->\\3",
$text
);
// E-mail addresses
$text = preg_replace(
"/{$spaces[0]}([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z-]+){$spaces[1]}/",
"\\1<!-- e --><a href='mailto:\\2' rel='nofollow'>\\2</a><!-- m -->\\3",
$text
);
return $text;
}
// Escapes
public function escape($text)
{
return str_replace(
array_keys($this->escapes),
$this->escapes,
$text
);
}
// Generator
public function generate()
{
$text = htmlentities($this->text);
$text = $this->parseCode($text);
$text = $this->parseQuote($text);
$text = $this->parseList($text);
$text = $this->parseSimple($text);
$text = $this->parseAlign($text);
$text = $this->parseUrl($text);
$text = $this->parseSize($text);
$text = $this->parseColour($text);
$text = $this->parseLinks($text);
return $text;
}
}

View file

@ -0,0 +1,42 @@
<?php
/*
* Text align bbcode
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\Parser;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
class Align extends CodeDefinition {
public function __construct()
{
parent::__construct();
$this->setTagName("align");
$this->setUseOption(true);
}
public function asHtml(ElementNode $el)
{
$alignments = [
'left',
'center',
'right'
];
$content = "";
foreach($el->getChildren() as $child) {
$content .= $child->getAsHTML();
}
$alignment = $el->getAttribute()['align'];
if (!in_array($alignment, $alignments)) {
return $el->getAsBBCode();
}
return '<div style="text-align: ' . $alignment . ';">' . $content . '</div>';
}
}

View file

@ -0,0 +1,23 @@
<?php
/*
* Code bbcode
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\Parser;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
class Code extends CodeDefinition {
public function __construct()
{
parent::__construct();
$this->setTagName("code");
}
public function asHtml(ElementNode $el)
{
return preg_replace("#\n*\[code\]\n*(.*?)\n*\[/code\]\n*#s", '<pre class="code prettyprint linenums">\\1</pre>', $el->getAsBBCode());
}
}

View file

@ -0,0 +1,47 @@
<?php
/*
* List BBcode
* https://gist.github.com/jbowens/5646994
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\Parser;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
/**
* Implements a [list] code definition that provides the following syntax:
*
* [list]
* [*] first item
* [*] second item
* [*] third item
* [/list]
*
*/
class Lists extends CodeDefinition
{
public function __construct()
{
$this->parseContent = true;
$this->useOption = false;
$this->setTagName('list');
$this->nestLimit = -1;
}
public function asHtml(ElementNode $el)
{
$bodyHtml = '';
foreach ($el->getChildren() as $child) {
$bodyHtml .= $child->getAsHTML();
}
$listPieces = explode('[*]', $bodyHtml);
unset($listPieces[0]);
$listPieces = array_map(function($li) {
return '<li>'.$li.'</li>';
}, $listPieces);
return '<ul>'.implode('', $listPieces).'</ul>';
}
}

View file

@ -0,0 +1,39 @@
<?php
/*
* Font size BBcode
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\Parser;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
class Size extends CodeDefinition {
public function __construct()
{
parent::__construct();
$this->setTagName("size");
$this->setUseOption(true);
}
public function asHtml(ElementNode $el)
{
$minSize = 0;
$maxSize = 200;
$content = "";
foreach($el->getChildren() as $child) {
$content .= $child->getAsHTML();
}
$size = $el->getAttribute()['size'];
if ($size < $minSize || $size > $maxSize) {
return $el->getAsBBCode();
}
return '<span style="font-size: ' . ($size / 100) . 'em;">' . $content . '</span>';
}
}

View file

@ -0,0 +1,36 @@
<?php
/*
* YouTube BBcode
* As displayed on this page http://jbbcode.com/docs
*/
namespace Sakura\BBcodeDefinitions;
use JBBCode\Parser;
use JBBCode\CodeDefinition;
use JBBCode\ElementNode;
class YouTube extends CodeDefinition {
public function __construct()
{
parent::__construct();
$this->setTagName("youtube");
}
public function asHtml(ElementNode $el)
{
$content = "";
foreach($el->getChildren() as $child) {
$content .= $child->getAsBBCode();
}
$foundMatch = preg_match('/^([A-z0-9=\-]+?)$/i', $content, $matches);
if(!$foundMatch) {
return $el->getAsBBCode();
} else {
return "<iframe width=\"640\" height=\"390\" src=\"https://www.youtube.com/embed/".$matches[1]."\" frameborder=\"0\" allowfullscreen></iframe>";
}
}
}

0
_sakura/components/Bans.php Executable file → Normal file
View file

0
_sakura/components/Comments.php Executable file → Normal file
View file

0
_sakura/components/Database.php Executable file → Normal file
View file

View file

@ -8,7 +8,7 @@ namespace Sakura\Forum;
use Sakura\Main;
use Sakura\Database;
use Sakura\User;
use Sakura\BBcode\BBcode;
use Sakura\BBcode;
/**
* Class Forums
@ -209,7 +209,7 @@ class Forums
'user' => (new User($post['poster_id'])),
'elapsed' => Main::timeElapsed($post['post_time']),
'is_op' => ($post['poster_id'] == $firstPost['poster_id'] ? '1' : '0'),
'parsed_post' => self::parseMarkUp($post['post_text'], 1, 1),
'parsed_post' => (new BBcode($post['post_text']))->toHTML(),
]);
// Just in case
@ -256,30 +256,6 @@ class Forums
return $post['topic_id'];
}
// Parse different markup flavours
public static function parseMarkUp($text, $mode, $emotes = 1)
{
// Clean string
$text = Main::cleanString($text);
// Parse emotes
if ($emotes) {
$text = Main::parseEmotes($text);
}
// Switch between modes
switch ($mode) {
case 1:
case 2:
return Main::bbParse($text);
case 0:
default:
return $text;
}
}
// Get forum statistics of a user
public static function getUserStats($uid)
{
@ -308,10 +284,6 @@ class Forums
// Check if we're replying to a thread
$getThread = Database::fetch('topics', false, ['topic_id' => [$topic, '=']]);
// Convert the text to storage format
$bbcode = new BBcode($text);
$text = $bbcode->toStore();
// If nothing was returned create a new thread
if (!$getThread) {
// Insert the required data

View file

@ -8,7 +8,7 @@ namespace Sakura\Forum;
use Sakura\Main;
use Sakura\Database;
use Sakura\User;
use Sakura\BBcode\BBcode;
use Sakura\BBcode;
/**
* Class Post
@ -56,9 +56,7 @@ class Post
}
// Parse the markup
$bbcode = new BBcode($this->text);
$this->parsed = $bbcode->toHTML();
$this->parsed = (new BBcode(htmlentities($this->text)))->toHTML();
}
// Time elapsed since creation

0
_sakura/components/Hashing.php Executable file → Normal file
View file

32
_sakura/components/Main.php Executable file → Normal file
View file

@ -37,36 +37,6 @@ class Main
$pd->text($text);
}
// Get bbcodes
public static function getBBcodes()
{
return Database::fetch('bbcodes');
}
// Parse bbcodes
public static function bbParse($text)
{
// Get bbcode regex from the database
$bbcodes = Database::fetch('bbcodes');
// Split the regex
$regex = array_map(function ($arr) {
return $arr['bbcode_regex'];
}, $bbcodes);
// Split the replacement
$replace = array_map(function ($arr) {
return $arr['bbcode_replace'];
}, $bbcodes);
// Do the replacement
$text = preg_replace($regex, $replace, $text);
// Return the parsed text
return $text;
}
// Get emoticons
public static function getEmotes()
{
@ -78,7 +48,7 @@ class Main
{
// Get emoticons from the database
$emotes = Database::fetch('emoticons');
$emotes = self::getEmotes();
// Do the replacements
foreach ($emotes as $emote) {

0
_sakura/components/Manage.php Executable file → Normal file
View file

0
_sakura/components/News.php Executable file → Normal file
View file

0
_sakura/components/Payments.php Executable file → Normal file
View file

0
_sakura/components/Permissions.php Executable file → Normal file
View file

0
_sakura/components/Rank.php Executable file → Normal file
View file

0
_sakura/components/Session.php Executable file → Normal file
View file

0
_sakura/components/Urls.php Executable file → Normal file
View file

10
_sakura/components/User.php Executable file → Normal file
View file

@ -659,13 +659,11 @@ class User
public function signature()
{
return isset($this->data['user_data']['signature']) ?
Main::bbParse(
Main::parseEmotes(
base64_decode(
$this->data['user_data']['signature']
)
(new BBcode(
base64_decode(
$this->data['user_data']['signature']
)
) :
))->toHTML() :
null;
}

0
_sakura/components/Users.php Executable file → Normal file
View file

0
_sakura/components/Whois.php Executable file → Normal file
View file

2
_sakura/composer.json Executable file → Normal file
View file

@ -7,6 +7,6 @@
"phpmailer/phpmailer": "*",
"erusev/parsedown": "*",
"paypal/rest-api-sdk-php": "*",
"ezyang/htmlpurifier": "^4.7"
"jbbcode/jbbcode": "^1.3"
}
}

46
_sakura/composer.lock generated Executable file → Normal file
View file

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "29ea55613191818528056f73ac659e20",
"content-hash": "ce72fbc116b66a47e04e66357ac173ce",
"hash": "796d45b3f4f6323302ad5e3c26545cb3",
"content-hash": "6fb7e8cc79bc78343a4854b1cafe547b",
"packages": [
{
"name": "erusev/parsedown",
@ -47,48 +47,50 @@
"time": "2015-10-04 16:44:32"
},
{
"name": "ezyang/htmlpurifier",
"version": "v4.7.0",
"name": "jbbcode/jbbcode",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
"reference": "ae1828d955112356f7677c465f94f7deb7d27a40"
"url": "https://github.com/jbowens/jBBCode.git",
"reference": "645b6a1c0afa92b7d029d3417ebd8b60a5c578b3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/ae1828d955112356f7677c465f94f7deb7d27a40",
"reference": "ae1828d955112356f7677c465f94f7deb7d27a40",
"url": "https://api.github.com/repos/jbowens/jBBCode/zipball/645b6a1c0afa92b7d029d3417ebd8b60a5c578b3",
"reference": "645b6a1c0afa92b7d029d3417ebd8b60a5c578b3",
"shasum": ""
},
"require": {
"php": ">=5.2"
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"type": "library",
"autoload": {
"psr-0": {
"HTMLPurifier": "library/"
},
"files": [
"library/HTMLPurifier.composer.php"
]
"JBBCode": "."
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL"
"MIT"
],
"authors": [
{
"name": "Edward Z. Yang",
"email": "admin@htmlpurifier.org",
"homepage": "http://ezyang.com"
"name": "Jackson Owens",
"email": "jackson_owens@alumni.brown.edu",
"homepage": "http://jbowens.org/",
"role": "Developer"
}
],
"description": "Standards compliant HTML filter written in PHP",
"homepage": "http://htmlpurifier.org/",
"description": "A lightweight but extensible BBCode parser written in PHP 5.3.",
"homepage": "http://jbbcode.com/",
"keywords": [
"html"
"BB",
"bbcode"
],
"time": "2015-08-05 01:03:42"
"time": "2014-07-06 05:48:20"
},
{
"name": "paypal/rest-api-sdk-php",

0
_sakura/config/cloudflare.ipv4 Executable file → Normal file
View file

0
_sakura/config/cloudflare.ipv6 Executable file → Normal file
View file

0
_sakura/config/config.example.ini Executable file → Normal file
View file

0
_sakura/config/iso3166.json Executable file → Normal file
View file

0
_sakura/config/whois.json Executable file → Normal file
View file

0
_sakura/cron.php Executable file → Normal file
View file

8
_sakura/sakura.php Executable file → Normal file
View file

@ -8,7 +8,7 @@
namespace Sakura;
// Define Sakura version
define('SAKURA_VERSION', '20151125');
define('SAKURA_VERSION', '20151202');
define('SAKURA_VLABEL', 'Eminence');
define('SAKURA_COLOUR', '#6C3082');
define('SAKURA_STABLE', false);
@ -32,6 +32,7 @@ require_once ROOT . '_sakura/vendor/autoload.php';
// Include components
require_once ROOT . '_sakura/components/Bans.php';
require_once ROOT . '_sakura/components/BBcode.php';
require_once ROOT . '_sakura/components/Comments.php';
require_once ROOT . '_sakura/components/Config.php';
require_once ROOT . '_sakura/components/Database.php';
@ -50,9 +51,6 @@ require_once ROOT . '_sakura/components/Urls.php';
require_once ROOT . '_sakura/components/User.php';
require_once ROOT . '_sakura/components/Users.php';
require_once ROOT . '_sakura/components/Whois.php';
require_once ROOT . '_sakura/components/BBcode/BBcode.php';
require_once ROOT . '_sakura/components/BBcode/Parse.php';
require_once ROOT . '_sakura/components/BBcode/Store.php';
require_once ROOT . '_sakura/components/Forum/Forum.php';
require_once ROOT . '_sakura/components/Forum/Forums.php';
require_once ROOT . '_sakura/components/Forum/Post.php';
@ -184,11 +182,9 @@ if (!defined('SAKURA_NO_TPL')) {
if (Config::getConfig('site_closed')) {
// Additional render data
$renderData = array_merge($renderData, [
'page' => [
'message' => Config::getConfig('site_closed_reason'),
],
]);
// Initialise templating engine

0
_sakura/templates/broomcloset/global/master.tpl Executable file → Normal file
View file

0
_sakura/templates/broomcloset/global/restricted.tpl Executable file → Normal file
View file

View file

View file

0
_sakura/templates/broomcloset/pages/index.error.tpl Executable file → Normal file
View file

0
_sakura/templates/broomcloset/template.ini Executable file → Normal file
View file

0
_sakura/templates/htmlEmail.tpl Executable file → Normal file
View file

0
_sakura/templates/mio/elements/newsPost.tpl Executable file → Normal file
View file

0
_sakura/templates/mio/global/footer.tpl Executable file → Normal file
View file

0
_sakura/templates/mio/global/header.tpl Executable file → Normal file
View file

0
_sakura/templates/mio/main/index.tpl Executable file → Normal file
View file

0
_sakura/templates/mio/template.ini Executable file → Normal file
View file

0
_sakura/templates/misaki/elements/newsPost.tpl Executable file → Normal file
View file

View file

0
_sakura/templates/misaki/elements/statsHeader.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/global/information.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/global/master.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/global/notfound.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/main/index.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/main/infopage.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/main/profile.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/main/search.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/main/settings.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/profile/index.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/settings/general.home.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/settings/general.options.tpl Executable file → Normal file
View file

0
_sakura/templates/misaki/template.ini Executable file → Normal file
View file

0
_sakura/templates/yuuno/elements/captcha.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/elements/comment.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/elements/comments.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/elements/indexPanel.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/elements/newsPost.tpl Executable file → Normal file
View file

2
_sakura/templates/yuuno/elements/pagination.tpl Executable file → Normal file
View file

@ -1,4 +1,4 @@
{% set paginationSeparator %}{% if '?' in paginationUrl %}&amp;{% else %}?{% endif %}{% endset %}
{% set paginationSeparator %}{% if '%3F' in paginationUrl|url_encode %}&amp;{% else %}?{% endif %}{% endset %}
{% set paginationPage = get.page|default(1) %}
<div class="pagination{% if paginationClass %} {{ paginationClass }}{% endif %}">

0
_sakura/templates/yuuno/elements/settingsNav.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/forum.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/forumBtns.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/forumEntry.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/index.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/posting.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/topicEntry.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/viewforum.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/forum/viewtopic.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/global/chat.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/global/information.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/global/master.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/global/notfound.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/global/restricted.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/group/index.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/authenticate.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/banned.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/faq.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/forgotpassword.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/index.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/infopage.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/memberlist.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/news.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/premiumcomplete.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/profile.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/report.tpl Executable file → Normal file
View file

0
_sakura/templates/yuuno/main/search.tpl Executable file → Normal file
View file

Some files were not shown because too many files have changed in this diff Show more