Example CMS
From RedBean
A CMS in 42 lines of code
This is an example of how powerful RedBean can be. This example contains a CMS, a content management system written in only 42 lines of code. To run this CMS you only need a valid database connection. After replacing the database information this will just work out-of-the-box: no configurations required, no initial SQL, no XML mappings, no templates, nothing. Just this one file.
<html><head><title>RedBean CMS | Example</title></head><body color='black'>
<h1>CMS Example</h1>
<?php $self = $_SERVER["PHP_SELF"]."?";
require("RedBean/redbean.inc.php");
$toolbox = RedBean_Setup::kickstartDev("mysql:host=localhost;dbname=tutorial");
$r = $toolbox->getRedBean();
if (!$r->load("page",1)->id) {
$page=$r->dispense("page");
$page->title="root";
$r->store($page);
}?>
<?php if(isset($_GET["type"]) && $_GET["type"]=="editpage"){
$page = $r->load("page",$_GET["id"]);?>
<form action="<?=$self?>type=savepage&id=<?=$_GET["id"]; ?>
&pid=<?=$_GET["pid"]; ?>" method="post">
<input type="text" name="title" value="<?= $page->title; ?>" />
<br /><textarea name="intro" ><?= $page->intro; ?></textarea>
<br /><textarea name="body" ><?= $page->body; ?></textarea>
<br /><input type="submit" name="save" value="save" />
</form>
<?php }else{ if(isset($_GET["type"]) && $_GET["type"]=="savepage"){
$parent = $r->load( "page", max($_GET["pid"],1));
$page = $r->load("page", $_GET["id"] );
$page->import($_POST, "title,intro,body");
$r->store($page);
$tree = new RedBean_TreeManager( $toolbox );
$tree->attach( $parent, $page ); }
@$currentparent = $r->load("page",(max($_GET["pid"],1)));
$tree = new RedBean_TreeManager( $toolbox );
$pages = $tree->children( $currentparent );
foreach($pages as $page): ?>
<br /><a href="<?=$self?>type=editpage&id=<?= $page->id; ?>
&pid=<?= $_GET["pid"]; ?>">edit</a>
<a href="<?=$self?>type=overview&pid=<?=$page->id;?>">beneath</a>
<span><?=$page->title?></span>
<br />
<?php endforeach; ?>
<br/>
<?php if (isset($_GET["pid"]) && $_GET["pid"] > 1): ?>
<a href="<?=$self?>type=overview&pid=<?=
$currentparent->parent_id?>">page up</a>
<?php endif; ?>
<a href="<?=$self?>type=editpage&pid=<?=
$currentparent->id?>&id=0">add new page</a>
<?php } ?>
</body></html>
Here is a contributed extension to the CMS that sports some additional features (not tested):
<html> <head> <title>RedBean CMS | Example</title>
</head> <body color='black'> <h1>CMS Example</h1>
<?php $self = $_SERVER["PHP_SELF"]."?";
require("RedBean/redbean.inc.php");
$toolbox = RedBean_Setup::kickstartDev("mysql:host=localhost;dbname=tutorial","root", "ubc123");
$r = $toolbox->getRedBean();
if (!$r->load("page",1)->id) {
$page=$r->dispense("page");
$page->title="root"; $r->store($page);
}
if((isset($_GET["type"]) &&
$_GET["type"]=="deletion")){
$tree = new RedBean_TreeManager( $toolbox );
$pages = $tree->children($r->load("page", $_GET['id']));
foreach($pages as $p){ echo "that post had children which are deleted too: " . $p->id . "<br />";
$r->trash($r->load("page", $p->id)); } echo "posting " . $_GET['id'] . ' was ';
$post = $r->load("page", $_GET["id"]); foreach($post as $key=>$value){
echo "$key: $value<br />"; }
echo "<br />"; $r->trash($r->load("page", $_GET["id"]));
echo "<br />deleted post " . $_GET['id'] . "<br />"; }
if(isset($_GET["type"]) && $_GET["type"]=="editpage"){
$page = $r->load("page",$_GET["id"]); ?> <form action="<?php
echo $self?>type=savepage&id=<?php echo $_GET["id"]; ?>&pid=<?php
echo $_GET["pid"]; ?>" method="post"> <input type="text" name="title" value="<?php
echo $page->title; ?>" /> <br /><textarea name="intro" ><?php
echo $page->intro; ?></textarea> <br /><textarea name="body" ><?php
echo $page->body; ?></textarea> <hr />
<input type="submit" name="save" value="save" /> </form>
<?php }else{ if(isset($_GET["type"])
&& $_GET["type"]=="savepage"){
$parent = $r->load( "page", max($_GET["pid"],1));
$page = $r->load("page", $_GET["id"] ); $page->import($_POST, "title,intro,body");
$r->store($page); $tree = new RedBean_TreeManager( $toolbox );
$tree->attach( $parent, $page ); }
@$currentparent = $r->load("page",(max($_GET["pid"],1)));
$tree = new RedBean_TreeManager( $toolbox );
$pages = $tree->children( $currentparent ); foreach($pages as $page): ?>
<br /> <a href="<?php echo$self?>type=editpage&id=<?php
echo $page->id; ?>&pid=<?php echo $_GET["pid"]; ?>">edit</a>
<a href="<?php echo $self?>type=overview&pid=<?php
echo $page->id;?>">beneath</a> <a href="<?php
echo $self?>type=deletion&id=<?php echo $page->id;?>">delete</a>
<span><?php echo $page->title?></span> <br /> <?php endforeach; ?>
<hr /> <?php if (isset($_GET["pid"]) && $_GET["pid"] > 1): ?>
<a href="<?php echo $self?>type=overview&pid=<?php
echo $currentparent->parent_id?>">page up</a> <?php endif; ?>
<a href="<?php echo $self?>type=editpage&pid=<?php
echo $currentparent->id?>&id=0">add new page</a>
<?php } ?> </body> </html>
<pre>

