diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2011-04-17 20:13:07 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2011-04-17 20:13:07 -0400 |
commit | 0077cb99704fe863cf731fc5cab792af2ede96c2 (patch) | |
tree | dd68f44971aa2aee821f588d33b250dcd2fe57e3 /admin/functions.php | |
parent | e8b28c5e910d92cbec3d4baa6e98f025e8418d28 (diff) | |
download | bayonetcms-0077cb99704fe863cf731fc5cab792af2ede96c2.tar.gz |
Backporting retarded amount of changes outside of version control
Diffstat (limited to 'admin/functions.php')
-rw-r--r-- | admin/functions.php | 1124 |
1 files changed, 562 insertions, 562 deletions
diff --git a/admin/functions.php b/admin/functions.php index 9b950c4..5c018a0 100644 --- a/admin/functions.php +++ b/admin/functions.php @@ -1,563 +1,563 @@ -<?php
-/**
- * Bayonet Content Management System
- * Copyright (C) 2008 Joseph Hunkeler
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/**
- * bbcode_format()
- *
- * Modified public domain code from www.phpit.net
- *
- * @param mixed $str
- * @return
- */
-function bbcode_format ($str)
-{
- $str = htmlentities($str);
- $str = strip_tags($str);
- $str = wordwrap($str,100,"\n",true);
-
- $simple_search = array(
- '/\[b\](.*?)\[\/b\]/is',
- '/\[i\](.*?)\[\/i\]/is',
- '/\[u\](.*?)\[\/u\]/is',
- '/\[hr\]/is',
- '/\[pi\](.*?)\[\/pi\]/is',
- '/\[center\](.*?)\[\/center\]/is',
- '/\[title\](.*?)\[\/title\]/is',
- '/\[article\](.*?)\[\/article\]/is',
- '/\[section\](.*?)\[\/section\]/is',
- '/\[code\](.*?)\[\/code\]/is',
- '/\[quote\](.*?)\[\/quote\]/is',
- '/\[quote\=(.*?)\](.*?)\[\/quote\]/is',
- '/\[url\=(.*?)\](.*?)\[\/url\]/is',
- '/\[align\=(.*?)\](.*?)\[\/align\]/is',
- '/\[size\=(.*?)\](.*?)\[\/size\]/is',
- '/\[img\=(.*?)\](.*?)\[\/img\]/is'
- );
-
- $simple_replace = array(
- '<strong>$1</strong>',
- '<em>$1</em>',
- '<u>$1</u>',
- '<hr>',
- '<p style="text-indent:3em;">$1</p>',
- '<center>$1</center>',
- '<h2>$1</h2>',
- '<h3>$1</h3>',
- '<h4>$1</h4>',
- '<blockquote><pre>$1</pre></blockquote>',
- '<blockquote>$1</blockquote>',
- '<i>$1 wrote:</i><br/><blockquote>$2</blockquote>',
- '<a href="$1">$2</a>',
- '<align="$1">$2</align>',
- '<font style="font-size:$1px;">$2</font>',
- '<img src="$1" alt="$2"/>'
- );
-
- $order = array("\r\n", "\n", "\r");
- $replace = "\n<br/>";
-
- $str = preg_replace ($simple_search, $simple_replace, $str);
- $str = str_ireplace($order,$replace,$str);
- return $str;
-}
-
- //BBcode 2 HTML was written by WAY2WEB.net
-
- function BBCode($Text)
- {
- // Replace any html brackets with HTML Entities to prevent executing HTML or script
- // Don't use strip_tags here because it breaks [url] search by replacing & with amp
- $Text = str_replace("<", "<", $Text);
- $Text = str_replace(">", ">", $Text);
-
- // Convert new line chars to html <br /> tags
- $Text = nl2br($Text);
-
- // Set up the parameters for a URL search string
- $URLSearchString = " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'";
- // Set up the parameters for a MAIL search string
- $MAILSearchString = $URLSearchString . " a-zA-Z0-9\.@";
-
- // Perform URL Search
- $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="$1" target="_blank">$1</a>', $Text);
- $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text);
- //$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text);
-
- // Perform MAIL Search
- $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text);
- $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.+?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text);
-
- // Check for bold text
- $Text = preg_replace("(\[b\](.+?)\[\/b])is",'<span class="bold">$1</span>',$Text);
-
- // Check for Italics text
- $Text = preg_replace("(\[i\](.+?)\[\/i\])is",'<span class="italics">$1</span>',$Text);
-
- // Check for Underline text
- $Text = preg_replace("(\[u\](.+?)\[\/u\])is",'<span class="underline">$1</span>',$Text);
-
- // Check for strike-through text
- $Text = preg_replace("(\[s\](.+?)\[\/s\])is",'<span class="strikethrough">$1</span>',$Text);
-
- // Check for over-line text
- $Text = preg_replace("(\[o\](.+?)\[\/o\])is",'<span class="overline">$1</span>',$Text);
-
- // Check for colored text
- $Text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","<span style=\"color: $1\">$2</span>",$Text);
-
- // Check for sized text
- $Text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","<span style=\"font-size: $1px\">$2</span>",$Text);
-
- // Check for list text
- $Text = preg_replace("/\[list\](.+?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text);
- $Text = preg_replace("/\[list=1\](.+?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text);
- $Text = preg_replace("/\[list=i\](.+?)\[\/list\]/s", '<ul class="listlowerroman">$1</ul>' ,$Text);
- $Text = preg_replace("/\[list=I\](.+?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text);
- $Text = preg_replace("/\[list=a\](.+?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text);
- $Text = preg_replace("/\[list=A\](.+?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text);
- $Text = str_replace("[*]", "<li>", $Text);
-
- // Check for font change text
- $Text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text);
-
- // Declare the format for [code] layout
- $CodeLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td class="quotecodeheader"> Code:</td>
- </tr>
- <tr>
- <td class="codebody">$1</td>
- </tr>
- </table>';
- // Check for [code] text
- $Text = preg_replace("/\[code\](.+?)\[\/code\]/is","$CodeLayout", $Text);
- // Declare the format for [php] layout
- $phpLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td class="quotecodeheader"> Code:</td>
- </tr>
- <tr>
- <td class="codebody">$1</td>
- </tr>
- </table>';
- // Check for [php] text
- $Text = preg_replace("/\[php\](.+?)\[\/php\]/is",$phpLayout, $Text);
-
- // Declare the format for [quote] layout
- $QuoteLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
- <tr>
- <td class="quotecodeheader"> Quote:</td>
- </tr>
- <tr>
- <td class="quotebody">$1</td>
- </tr>
- </table>';
-
- // Check for [quote] text
- $Text = preg_replace("/\[quote\](.+?)\[\/quote\]/is","$QuoteLayout", $Text);
-
- // Images
- // [img]pathtoimage[/img]
- $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1">', $Text);
-
- //[img=align]image source[/img]
- $Text = preg_replace("(\[img align\=(.+?)\](.+?)\[\/img\])is","<img src=\"$2\" align=\"$1\" />",$Text);
-
- // [img=widthxheight]image source[/img]
- $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text);
-
- // Alignment
- // [align=type]text[/align]
- $Text = preg_replace("(\[align=(.+?)\](.+?)\[\/align\])is","<div style=\"text-align: $1\">$2</div>",$Text);
-
- return $Text;
- }
-
-function articleHeading($text){
-
- // Set the content-type
- header('Content-type: image/png');
-
- //$text = $_GET['text'];
-
- $im = imagecreatefrompng('images/news_header.png'); // open image
- imagealphablending($im, true); // setting alpha blending on
- imagesavealpha($im, true); // save alphablending setting (important)
-
- // Create some colors
- $black = imagecolorallocate($im, 0, 0, 0);
-
-
- // Replace path by your own font path
- //$font = 'TrajanPro-Regular.otf';
- //$font = 'TrajanPro-Bold.otf';
- $font = 'BrushScriptStd.otf';
- //$font = 'TRATS__.TTF';
- //$text = strtoupper($text);
-
- // Add the text
- imagettftext($im, 18, 0, 0, 17, $black, $font, $text);
-
- // Using imagepng() results in clearer text compared with imagejpeg()
- imagepng($im);
- imagedestroy($im);
-}
-
-function LinkList($array)
-{
- if(!is_array($array))
- {
- ReportError("List was not an array");
- return;
- }
-
- echo "<ul class=\"block\">";
- foreach($array as $text => $link)
- {
- echo "<li><a href=\"$link\">$text</a></li>";
- }
- echo "</ul>";
-}
-
-/**
- * LinkModule()
- *
- * Helper function to link to Bayonet modules.
- *
- * @param mixed $module_name
- * @param mixed $link_name
- * @return
- */
-function LinkModule($module_name,$args = NULL,$link_name)
-{
- return "<a href=\"?load={$module_name}{$args}\">{$link_name}</a>";
-}
-
-/**
- * LinkPage()
- *
- * Helper function to link to Bayonet pages.
- *
- * @param mixed $page_id
- * @param mixed $page_name
- * @return
- */
-function LinkPage($page_id,$page_name)
-{
- return "<a href=\"?load=page&id={$page_id}\">{$page_name}</a>";
-}
-
-/**
- * LinkInternal()
- *
- * Helper function to link to a relative Bayonet path.
- *
- * @param mixed $name
- * @param string $rel_path
- * @param string $file
- * @return
- */
-function LinkInternal($name,$file,$rel_path = "./")
-{
- return "<a href=\"{$rel_path}{$file}\">{$name}</a>";
-}
-
-if(!defined("CALLED_FROM_ADMIN"))
-{
- /**
- * OpenTable()
- *
- * Begins a Bayonet site table.
- *
- * @return
- */
- function OpenTable($width = "100%")
- {
- //width="100%" is important. Otherwise all of our tables will be text width.
- echo "<table width=\"{$width}\" align=\"center\" class=\"cleartable\">\n";
- }
-
- /**
- * CloseTable()
- *
- * Closes a Bayonet site table.
- *
- * @return
- */
- function CloseTable()
- {
- echo "</table>";
- }
-}
-
-function OpenBlock($title = 'New Block')
-{
- OpenTable();
- echo "<div class=\"contentHeading\">{$title}</div>";
- echo "<div class=\"content\">";
-}
-
-function CloseBlock()
-{
- echo "</div>";
- CloseTable();
-}
-/**
- * ReportError()
- *
- * This function should be called in the event that an error has occured.
- *
- * @param mixed $message - automatically logged
- * @return
- */
-function ReportError($message)
-{
- //WriteLog($message,BAYONET_LOG_ERROR);
- OpenTable();
- echo "<tr><th>Error Message</th></tr><tr><td style=\"text-align:center;\">{$message}</td></tr>";
- CloseTable();
-}
-
-/**
- * ReportHack()
- *
- * This function should be called in the event that we are confirming
- * a hacking attempt.
- *
- * @param mixed $message - automatically logged
- * @return void
- */
-function ReportHack($message)
-{
- //WriteLog($message,BAYONET_LOG_HACK);
- OpenTable();
- echo "<tr><th>Hack Attempt</th></tr><tr><td style=\"text-align:center;\">{$message}</td></tr>";
- CloseTable();
-}
-
-
-/**
- * array_dump()
- *
- * Useful against $_POST and $_GET variables, for dumping data to
- * a log file, or to stdout. The return value is a single string,
- * with each array key => value pair delimited by a character.
- * The default character is a pipe -> '|'. It is assumed that if
- * wanted to have a newline character inserted, just replace $spacer
- * with '\n'.
- *
- * @param mixed $array
- * @param string $spacer
- * @return
- */
-function array_dump($array, $spacer = '|')
-{
- $retval = NULL;
- foreach($array as $challenge => $answer)
- {
- $retval .= " $challenge => $answer " . $spacer;
- }
-
- return $retval;
-}
-
-/**
- * WriteLog()
- *
- * This function can be accessed directly, however, anything that is
- * passed to ReportError() or ReportHack(), or decho() will be logged in their
- * appropriate log file.
- *
- * Change made: added checks to see if the log files exist before opening
- *
- * @param mixed $message
- * @param mixed $flag
- * @return
- */
-define('BAYONET_LOG_HACK','bayonet_log_hack');
-define('BAYONET_LOG_ERROR','bayonet_log_error');
-define('BAYONET_LOG_WARN','bayonet_log_warn');
-define('BAYONET_LOG_INFO','bayonet_log_info');
-
-function WriteLog($message,$flag)
-{
- global $config;
- $enabled = $config['logs']['enabled'];
-
- if(!$enabled)
- {
- return false;
- }
-
- $dir = $config['logs']['dir'];
- date_default_timezone_set($config['logs']['timezone']);
- $varstr = array_dump($_GET);
- $type = NULL;
- $ip = $_SERVER['REMOTE_ADDR'];
- $hostname = gethostbyaddr($ip);
- $executed = $_SERVER['PHP_SELF'];
- $timestamp = date('Y-M-d H:i:s T');
-
-
- $message = str_replace("\n",'',$message);
- $message = str_replace("<br>",'',$message);
-
- switch($flag)
- {
- case BAYONET_LOG_HACK:
- if(!file_exists($dir.'hacks.log')){
- break;
- }
- $fp = fopen($dir.'hacks.log','a');
- $type = 'HACK';
- $full_message = "TIMESTAMP: {$timestamp}\n\t\tIP: {$ip}\n\t\tHOSTNAME: {$hostname}\n\t\tACTION: {$type} of {$executed}\n\t\tDEFERRAL: {$message}\n\t\tVAR: ({$varstr})\n\n";
- break;
- case BAYONET_LOG_ERROR:
- if(!file_exists($dir.'error.log')){
- break;
- }
- $fp = fopen($dir.'error.log','a');
- $type = 'ERROR';
- $full_message = "({$timestamp}) - {$type} - {$message} - ({$varstr})\n";
- break;
- case BAYONET_LOG_WARN:
- if(!file_exists($dir.'warn.log')){
- break;
- }
- $fp = fopen($dir.'warn.log','a');
- $type = 'WARN';
- $full_message = "({$timestamp}) - {$type} - {$message} - ({$varstr})\n";
- break;
- case BAYONET_LOG_INFO:
- if(!file_exists($dir.'info.log')){
- break;
- }
- $fp = fopen($dir.'info.log','a');
- $type = 'INFO';
- $full_message = "({$timestamp}) - {$type} - {$message}\n";
- break;
- default:
- echo 'To log something, you need to define a log to write to.<br>';
- return;
- }
- if(file_exists($fp)){
- fwrite($fp,$full_message);
- fclose($fp);
- }else{
- //echo "could not write to file because file does not exist.<br />";
- }
-}
-
-/**
- * UnderConstruction()
- *
- * Displays a site-wide message across the page header.
- *
- * @param mixed $message
- * @param mixed $flag Acceptable flags are BAYONET_SITE, and BAYONET_SECTION
- * @return
- */
-define('BAYONET_SITE','bayonet_site');
-define('BAYONET_SECTION','bayonet_section');
-function UnderConstruction($message = NULL, $flag = BAYONET_SITE)
-{
- $timestamp = date("Y-M-d h:m:s");
- OpenTable();
- switch($flag)
- {
- case BAYONET_SITE:
- echo "<tr><th>Site is currently under construction : $timestamp</th></tr>";
- break;
- case BAYONET_SECTION:
- echo "<tr><th>Section currently under construction : $timestamp</th></tr>";
- }
-
- if(!is_null($message))
- {
- echo "<tr><td><i>$message</i></td></tr>";
- }
-
- CloseTable();
- echo "<br>";
-}
-
-/**
- * GetBlocks()
- *
- * Includes all directories listed in blocks/ and uses the bayonet_blocks
- * MySQL table to determine the order of the blocks displayed.
- *
- * @return
- */
-
-define('BLOCK_LEFT',false);
-define('BLOCK_RIGHT',false);
-
-function GetBlocks($position = BLOCK_LEFT)
-{
- global $config;
- /**
- * I had to reconnect to the database for some fucking reason at this point.
- * I have no idea why, but I was recieving errors telling me that $db was no longer
- * an object. This is/was bullshit.
- */
- $db = new Bayonet_SQL();
- $db->Connect(
- $config['sql']['hostname'],
- $config['sql']['username'],
- $config['sql']['password']
- );
- $db->Select_db($config['sql']['database']);
-
- $result = $db->Query("SELECT * FROM `bayonet_blocks` ORDER BY weight, position");
- $blocks = $db->Fetch($result);
-
- foreach($blocks as $block)
- {
- if($block['position'] == $position && $block['active'] == true)
- {
- $load = 'blocks/'.$block['dir_name'].'/index.php';
- if(file_exists($load))
- {
- OpenBlock($block['title']);
- include $load;
- CloseBlock();
- }
- else
- {
- ReportError("Failed to load block, '{$block['dir_name']}'. Check block config.");
- }
- if($config['blocks']['spacer']) echo "<br />";
- }
- }
-}
-
-/**
- * PageRedirect()
- *
- * performs an http redirect
- *
- * @param $delay
- * @param $link
- */
-function PageRedirect($delay, $link)
-{
- echo "<meta http-equiv=\"Refresh\" content=\"{$delay};url={$link}\">";
-}
+<?php +/** + * Bayonet Content Management System + * Copyright (C) 2008 Joseph Hunkeler + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * bbcode_format() + * + * Modified public domain code from www.phpit.net + * + * @param mixed $str + * @return + */ +function bbcode_format ($str) +{ + $str = htmlentities($str); + $str = strip_tags($str); + $str = wordwrap($str,100,"\n",true); + + $simple_search = array( + '/\[b\](.*?)\[\/b\]/is', + '/\[i\](.*?)\[\/i\]/is', + '/\[u\](.*?)\[\/u\]/is', + '/\[hr\]/is', + '/\[pi\](.*?)\[\/pi\]/is', + '/\[center\](.*?)\[\/center\]/is', + '/\[title\](.*?)\[\/title\]/is', + '/\[article\](.*?)\[\/article\]/is', + '/\[section\](.*?)\[\/section\]/is', + '/\[code\](.*?)\[\/code\]/is', + '/\[quote\](.*?)\[\/quote\]/is', + '/\[quote\=(.*?)\](.*?)\[\/quote\]/is', + '/\[url\=(.*?)\](.*?)\[\/url\]/is', + '/\[align\=(.*?)\](.*?)\[\/align\]/is', + '/\[size\=(.*?)\](.*?)\[\/size\]/is', + '/\[img\=(.*?)\](.*?)\[\/img\]/is' + ); + + $simple_replace = array( + '<strong>$1</strong>', + '<em>$1</em>', + '<u>$1</u>', + '<hr>', + '<p style="text-indent:3em;">$1</p>', + '<center>$1</center>', + '<h2>$1</h2>', + '<h3>$1</h3>', + '<h4>$1</h4>', + '<blockquote><pre>$1</pre></blockquote>', + '<blockquote>$1</blockquote>', + '<i>$1 wrote:</i><br/><blockquote>$2</blockquote>', + '<a href="$1">$2</a>', + '<align="$1">$2</align>', + '<font style="font-size:$1px;">$2</font>', + '<img src="$1" alt="$2"/>' + ); + + $order = array("\r\n", "\n", "\r"); + $replace = "\n<br/>"; + + $str = preg_replace ($simple_search, $simple_replace, $str); + $str = str_ireplace($order,$replace,$str); + return $str; +} + + //BBcode 2 HTML was written by WAY2WEB.net + + function BBCode($Text) + { + // Replace any html brackets with HTML Entities to prevent executing HTML or script + // Don't use strip_tags here because it breaks [url] search by replacing & with amp + $Text = str_replace("<", "<", $Text); + $Text = str_replace(">", ">", $Text); + + // Convert new line chars to html <br /> tags + $Text = nl2br($Text); + + // Set up the parameters for a URL search string + $URLSearchString = " a-zA-Z0-9\:\/\-\?\&\.\=\_\~\#\'"; + // Set up the parameters for a MAIL search string + $MAILSearchString = $URLSearchString . " a-zA-Z0-9\.@"; + + // Perform URL Search + $Text = preg_replace("/\[url\]([$URLSearchString]*)\[\/url\]/", '<a href="$1" target="_blank">$1</a>', $Text); + $Text = preg_replace("(\[url\=([$URLSearchString]*)\](.+?)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text); + //$Text = preg_replace("(\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[/url\])", '<a href="$1" target="_blank">$2</a>', $Text); + + // Perform MAIL Search + $Text = preg_replace("(\[mail\]([$MAILSearchString]*)\[/mail\])", '<a href="mailto:$1">$1</a>', $Text); + $Text = preg_replace("/\[mail\=([$MAILSearchString]*)\](.+?)\[\/mail\]/", '<a href="mailto:$1">$2</a>', $Text); + + // Check for bold text + $Text = preg_replace("(\[b\](.+?)\[\/b])is",'<span class="bold">$1</span>',$Text); + + // Check for Italics text + $Text = preg_replace("(\[i\](.+?)\[\/i\])is",'<span class="italics">$1</span>',$Text); + + // Check for Underline text + $Text = preg_replace("(\[u\](.+?)\[\/u\])is",'<span class="underline">$1</span>',$Text); + + // Check for strike-through text + $Text = preg_replace("(\[s\](.+?)\[\/s\])is",'<span class="strikethrough">$1</span>',$Text); + + // Check for over-line text + $Text = preg_replace("(\[o\](.+?)\[\/o\])is",'<span class="overline">$1</span>',$Text); + + // Check for colored text + $Text = preg_replace("(\[color=(.+?)\](.+?)\[\/color\])is","<span style=\"color: $1\">$2</span>",$Text); + + // Check for sized text + $Text = preg_replace("(\[size=(.+?)\](.+?)\[\/size\])is","<span style=\"font-size: $1px\">$2</span>",$Text); + + // Check for list text + $Text = preg_replace("/\[list\](.+?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text); + $Text = preg_replace("/\[list=1\](.+?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text); + $Text = preg_replace("/\[list=i\](.+?)\[\/list\]/s", '<ul class="listlowerroman">$1</ul>' ,$Text); + $Text = preg_replace("/\[list=I\](.+?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text); + $Text = preg_replace("/\[list=a\](.+?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text); + $Text = preg_replace("/\[list=A\](.+?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text); + $Text = str_replace("[*]", "<li>", $Text); + + // Check for font change text + $Text = preg_replace("(\[font=(.+?)\](.+?)\[\/font\])","<span style=\"font-family: $1;\">$2</span>",$Text); + + // Declare the format for [code] layout + $CodeLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"> + <tr> + <td class="quotecodeheader"> Code:</td> + </tr> + <tr> + <td class="codebody">$1</td> + </tr> + </table>'; + // Check for [code] text + $Text = preg_replace("/\[code\](.+?)\[\/code\]/is","$CodeLayout", $Text); + // Declare the format for [php] layout + $phpLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"> + <tr> + <td class="quotecodeheader"> Code:</td> + </tr> + <tr> + <td class="codebody">$1</td> + </tr> + </table>'; + // Check for [php] text + $Text = preg_replace("/\[php\](.+?)\[\/php\]/is",$phpLayout, $Text); + + // Declare the format for [quote] layout + $QuoteLayout = '<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0"> + <tr> + <td class="quotecodeheader"> Quote:</td> + </tr> + <tr> + <td class="quotebody">$1</td> + </tr> + </table>'; + + // Check for [quote] text + $Text = preg_replace("/\[quote\](.+?)\[\/quote\]/is","$QuoteLayout", $Text); + + // Images + // [img]pathtoimage[/img] + $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1">', $Text); + + //[img=align]image source[/img] + $Text = preg_replace("(\[img align\=(.+?)\](.+?)\[\/img\])is","<img src=\"$2\" align=\"$1\" />",$Text); + + // [img=widthxheight]image source[/img] + $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.+?)\[\/img\]/", '<img src="$3" height="$2" width="$1">', $Text); + + // Alignment + // [align=type]text[/align] + $Text = preg_replace("(\[align=(.+?)\](.+?)\[\/align\])is","<div style=\"text-align: $1\">$2</div>",$Text); + + return $Text; + } + +function articleHeading($text){ + + // Set the content-type + header('Content-type: image/png'); + + //$text = $_GET['text']; + + $im = imagecreatefrompng('images/news_header.png'); // open image + imagealphablending($im, true); // setting alpha blending on + imagesavealpha($im, true); // save alphablending setting (important) + + // Create some colors + $black = imagecolorallocate($im, 0, 0, 0); + + + // Replace path by your own font path + //$font = 'TrajanPro-Regular.otf'; + //$font = 'TrajanPro-Bold.otf'; + $font = 'BrushScriptStd.otf'; + //$font = 'TRATS__.TTF'; + //$text = strtoupper($text); + + // Add the text + imagettftext($im, 18, 0, 0, 17, $black, $font, $text); + + // Using imagepng() results in clearer text compared with imagejpeg() + imagepng($im); + imagedestroy($im); +} + +function LinkList($array) +{ + if(!is_array($array)) + { + ReportError("List was not an array"); + return; + } + + echo "<ul class=\"block\">"; + foreach($array as $text => $link) + { + echo "<li><a href=\"$link\">$text</a></li>"; + } + echo "</ul>"; +} + +/** + * LinkModule() + * + * Helper function to link to Bayonet modules. + * + * @param mixed $module_name + * @param mixed $link_name + * @return + */ +function LinkModule($module_name,$args = NULL,$link_name) +{ + return "<a href=\"?load={$module_name}{$args}\">{$link_name}</a>"; +} + +/** + * LinkPage() + * + * Helper function to link to Bayonet pages. + * + * @param mixed $page_id + * @param mixed $page_name + * @return + */ +function LinkPage($page_id,$page_name) +{ + return "<a href=\"?load=page&id={$page_id}\">{$page_name}</a>"; +} + +/** + * LinkInternal() + * + * Helper function to link to a relative Bayonet path. + * + * @param mixed $name + * @param string $rel_path + * @param string $file + * @return + */ +function LinkInternal($name,$file,$rel_path = "./") +{ + return "<a href=\"{$rel_path}{$file}\">{$name}</a>"; +} + +if(!defined("CALLED_FROM_ADMIN")) +{ + /** + * OpenTable() + * + * Begins a Bayonet site table. + * + * @return + */ + function OpenTable($width = "100%") + { + //width="100%" is important. Otherwise all of our tables will be text width. + echo "<table width=\"{$width}\" align=\"center\" class=\"cleartable\">\n"; + } + + /** + * CloseTable() + * + * Closes a Bayonet site table. + * + * @return + */ + function CloseTable() + { + echo "</table>"; + } +} + +function OpenBlock($title = 'New Block') +{ + OpenTable(); + echo "<div class=\"contentHeading\">{$title}</div>"; + echo "<div class=\"content\">"; +} + +function CloseBlock() +{ + echo "</div>"; + CloseTable(); +} +/** + * ReportError() + * + * This function should be called in the event that an error has occured. + * + * @param mixed $message - automatically logged + * @return + */ +function ReportError($message) +{ + //WriteLog($message,BAYONET_LOG_ERROR); + OpenTable(); + echo "<tr><th>Error Message</th></tr><tr><td style=\"text-align:center;\">{$message}</td></tr>"; + CloseTable(); +} + +/** + * ReportHack() + * + * This function should be called in the event that we are confirming + * a hacking attempt. + * + * @param mixed $message - automatically logged + * @return void + */ +function ReportHack($message) +{ + //WriteLog($message,BAYONET_LOG_HACK); + OpenTable(); + echo "<tr><th>Hack Attempt</th></tr><tr><td style=\"text-align:center;\">{$message}</td></tr>"; + CloseTable(); +} + + +/** + * array_dump() + * + * Useful against $_POST and $_GET variables, for dumping data to + * a log file, or to stdout. The return value is a single string, + * with each array key => value pair delimited by a character. + * The default character is a pipe -> '|'. It is assumed that if + * wanted to have a newline character inserted, just replace $spacer + * with '\n'. + * + * @param mixed $array + * @param string $spacer + * @return + */ +function array_dump($array, $spacer = '|') +{ + $retval = NULL; + foreach($array as $challenge => $answer) + { + $retval .= " $challenge => $answer " . $spacer; + } + + return $retval; +} + +/** + * WriteLog() + * + * This function can be accessed directly, however, anything that is + * passed to ReportError() or ReportHack(), or decho() will be logged in their + * appropriate log file. + * + * Change made: added checks to see if the log files exist before opening + * + * @param mixed $message + * @param mixed $flag + * @return + */ +define('BAYONET_LOG_HACK','bayonet_log_hack'); +define('BAYONET_LOG_ERROR','bayonet_log_error'); +define('BAYONET_LOG_WARN','bayonet_log_warn'); +define('BAYONET_LOG_INFO','bayonet_log_info'); + +function WriteLog($message,$flag) +{ + global $config; + $enabled = $config['logs']['enabled']; + + if(!$enabled) + { + return false; + } + + $dir = $config['logs']['dir']; + date_default_timezone_set($config['logs']['timezone']); + $varstr = array_dump($_GET); + $type = NULL; + $ip = $_SERVER['REMOTE_ADDR']; + $hostname = gethostbyaddr($ip); + $executed = $_SERVER['PHP_SELF']; + $timestamp = date('Y-M-d H:i:s T'); + + + $message = str_replace("\n",'',$message); + $message = str_replace("<br>",'',$message); + + switch($flag) + { + case BAYONET_LOG_HACK: + if(!file_exists($dir.'hacks.log')){ + break; + } + $fp = fopen($dir.'hacks.log','a'); + $type = 'HACK'; + $full_message = "TIMESTAMP: {$timestamp}\n\t\tIP: {$ip}\n\t\tHOSTNAME: {$hostname}\n\t\tACTION: {$type} of {$executed}\n\t\tDEFERRAL: {$message}\n\t\tVAR: ({$varstr})\n\n"; + break; + case BAYONET_LOG_ERROR: + if(!file_exists($dir.'error.log')){ + break; + } + $fp = fopen($dir.'error.log','a'); + $type = 'ERROR'; + $full_message = "({$timestamp}) - {$type} - {$message} - ({$varstr})\n"; + break; + case BAYONET_LOG_WARN: + if(!file_exists($dir.'warn.log')){ + break; + } + $fp = fopen($dir.'warn.log','a'); + $type = 'WARN'; + $full_message = "({$timestamp}) - {$type} - {$message} - ({$varstr})\n"; + break; + case BAYONET_LOG_INFO: + if(!file_exists($dir.'info.log')){ + break; + } + $fp = fopen($dir.'info.log','a'); + $type = 'INFO'; + $full_message = "({$timestamp}) - {$type} - {$message}\n"; + break; + default: + echo 'To log something, you need to define a log to write to.<br>'; + return; + } + if(file_exists($fp)){ + fwrite($fp,$full_message); + fclose($fp); + }else{ + //echo "could not write to file because file does not exist.<br />"; + } +} + +/** + * UnderConstruction() + * + * Displays a site-wide message across the page header. + * + * @param mixed $message + * @param mixed $flag Acceptable flags are BAYONET_SITE, and BAYONET_SECTION + * @return + */ +define('BAYONET_SITE','bayonet_site'); +define('BAYONET_SECTION','bayonet_section'); +function UnderConstruction($message = NULL, $flag = BAYONET_SITE) +{ + $timestamp = date("Y-M-d h:m:s"); + OpenTable(); + switch($flag) + { + case BAYONET_SITE: + echo "<tr><th>Site is currently under construction : $timestamp</th></tr>"; + break; + case BAYONET_SECTION: + echo "<tr><th>Section currently under construction : $timestamp</th></tr>"; + } + + if(!is_null($message)) + { + echo "<tr><td><i>$message</i></td></tr>"; + } + + CloseTable(); + echo "<br>"; +} + +/** + * GetBlocks() + * + * Includes all directories listed in blocks/ and uses the bayonet_blocks + * MySQL table to determine the order of the blocks displayed. + * + * @return + */ + +define('BLOCK_LEFT',false); +define('BLOCK_RIGHT',false); + +function GetBlocks($position = BLOCK_LEFT) +{ + global $config; + /** + * I had to reconnect to the database for some fucking reason at this point. + * I have no idea why, but I was recieving errors telling me that $db was no longer + * an object. This is/was bullshit. + */ + $db = new Bayonet_SQL(); + $db->Connect( + $config['sql']['hostname'], + $config['sql']['username'], + $config['sql']['password'] + ); + $db->Select_db($config['sql']['database']); + + $result = $db->Query("SELECT * FROM `bayonet_blocks` ORDER BY weight, position"); + $blocks = $db->Fetch($result); + + foreach($blocks as $block) + { + if($block['position'] == $position && $block['active'] == true) + { + $load = 'blocks/'.$block['dir_name'].'/index.php'; + if(file_exists($load)) + { + OpenBlock($block['title']); + include $load; + CloseBlock(); + } + else + { + ReportError("Failed to load block, '{$block['dir_name']}'. Check block config."); + } + if($config['blocks']['spacer']) echo "<br />"; + } + } +} + +/** + * PageRedirect() + * + * performs an http redirect + * + * @param $delay + * @param $link + */ +function PageRedirect($delay, $link) +{ + echo "<meta http-equiv=\"Refresh\" content=\"{$delay};url={$link}\">"; +} ?>
\ No newline at end of file |