Files
friendshiptours.org/admin/news.php
2015-11-12 19:58:50 -06:00

180 lines
5.0 KiB
PHP

<?php
include '../php/classes/page.php';
include 'functions/func_xml.php';
$page = new Page();
$page->init_user();
# make sure the user is logged in before he has access to the
# admin section
if(!$page->user()->check_role('admin'))
header('Location: login.php?message=1');
$page->attr('title','Administrate FTI: News');
// to make jquery be loaded first
$page->useJSFile('jquery.min.js');
$page->addJSFile('admin.js');
$page->useCSSFile('admin.css');
$page->content('admin/news.php');
$page->layout('admin_layout.php');
$page->menu('admin/menu.php');
# get news posts
$news = xml_get_from_file($FILES['news']);
$newsItems = $news->xpath('newsitem');
$page->data('news',array_reverse($newsItems));
if(isset($_REQUEST['do']))
{
if($_REQUEST['do'] == 'add' || $_REQUEST['do'] == 'edit')
{
$page->addJSFile('admin/textboxbuttons.js');
// this may be changed below, if the news post is not found
$page->content('admin/news.add.edit.php');
if($_GET['do'] == 'edit')
{
$newsItem = FindNewsItem($newsItems,$_GET['id']);
if(!is_null($newsItem))
{
$page->data('newsitem',$newsItem);
$page->data('editing',true);
}
else
{
$page->addError('News post does not exist. Please try again.');
$page->content('admin/news.php');
}
}
}
else if($_REQUEST['do'] == 'delete')
{
$newsItem = FindNewsItem($newsItems,$_GET['id']);
if(!is_null($newsItem))
{
$page->content('admin/news.delete.php');
$page->data('newsitem',$newsItem);
}
else
$page->addError('News post does not exist. Please try again.');
}
else if($_REQUEST['do'] == 'reallyadd')
{
$newItem = $news->addChild('newsitem');
$newItem->addChild('title',stripslashes($_POST['title']));
$newItem->addChild('text',"<![CDATA[".stripslashes($_POST['text'])."]]>");
if(!empty($_POST['title']) && !empty($_POST['text']))
{
$nextId = GetNextId($newsItems);
$newItem->addAttribute('id',$nextId);
if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML())))
{
$page->addMessage('News item added.');
$page->data('news',array_reverse($news->xpath('newsitem')));
}
else
{
$page->addError('Could not add news item. Please try again later.');
$page->data('newsitem',$newItem);
$page->content('admin/news.add.edit.php');
}
}
else
{
$page->addError('Please enter a title and text.');
$page->data('newsitem',$newItem);
$page->content('admin/news.add.edit.php');
}
}
else if($_REQUEST['do'] == 'reallyedit')
{
$newsItemIdx = FindNewsItem($newsItems,$_POST['id'],true);
$page->data('editing',true);
if(!is_null($newsItemIdx))
{
$news->newsitem[$newsItemIdx]->title = stripslashes($_POST['title']);
$news->newsitem[$newsItemIdx]->text = "<![CDATA[".stripslashes($_POST['text'])."]]>";
if(!empty($_POST['title']) && !empty($_POST['text']))
{
if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML())))
$page->addMessage('News item saved.');
else
{
$page->addError('Could not save news item. Please try again later.');
$page->data('newsitem',$news->newsitem[$newsItemIdx]);
$page->content('admin/news.add.edit.php');
}
}
else
{
$page->addError('Please enter a title and text.');
$page->data('newsitem',$news->newsitem[$newsItemIdx]);
$page->content('admin/news.add.edit.php');
}
}
else
$page->addError('News item does not exit. Please try again.');
}
else if($_REQUEST['do'] == 'reallydelete')
{
$newsItemIdx = FindNewsItem($newsItems,$_POST['id'],true);
if(!is_null($newsItemIdx))
{
unset($news->newsitem[$newsItemIdx]);
if(file_put_contents($FILES['news'],xml_fix_cdata($news->asXML())))
{
$page->addMessage('News item deleted.');
$page->data('news',array_reverse($news->xpath('newsitem')));
}
else
{
$page->addError('Could not delete news item. Please try again later.');
$page->data('newsitem',$news->newsitem[$newsItemIdx]);
$page->content('admin/news.delete.php');
}
}
else
$page->addError('News item does not exist. Please try again.');
}
}
$page->process();
################################################################# FindNewsItem #
function FindNewsItem($items, $itemId, $returnIdx = false)
{
for($c = 0; $c < count($items); $c++)
{
if((int)$items[$c]['id'] === (int)$itemId)
if($returnIdx)
return $c;
else
return $items[$c];
}
return NULL;
}
#################################################################### GetNextId #
function GetNextId($items)
{
$largestId = 1;
for($c = 0; $c < count($items); $c++)
{
if($largestId < (int)$items[$c]['id'])
$largestId = (int)$items[$c]['id'];
}
return $largestId + 1;
}
?>