195 lines
6.3 KiB
PHP
195 lines
6.3 KiB
PHP
|
<?php
|
||
|
@define('PENGUINCODER_BASE', dirname(__FILE__));
|
||
|
require PENGUINCODER_BASE . '/lib/base.php';
|
||
|
|
||
|
global $pdata;
|
||
|
|
||
|
// page variables
|
||
|
$actionId = Util::getFormData('actionId');
|
||
|
$id = Util::getFormData('id');
|
||
|
$category = Util::getFormData('category');
|
||
|
$admin = Auth::getAuth('penguincoder:admin');
|
||
|
$adminDelete = Auth::getAuth('penguincoder:admin', PERMS_DELETE);
|
||
|
$goodEntry = true;
|
||
|
|
||
|
// sorting variables, only for list showing and determining which
|
||
|
// direction to fetch the next journal from (previous, next)
|
||
|
// direction is sort direction, either resolves to true (ascending) or
|
||
|
// false (descending)
|
||
|
$direction = Util::getFormData('direction');
|
||
|
if ($direction == '1') {
|
||
|
$direction = true;
|
||
|
} elseif ($direction == '0') {
|
||
|
$direction = false;
|
||
|
} else {
|
||
|
$direction = null;
|
||
|
}
|
||
|
|
||
|
// order is the field to order the entries by, true is date otherwise it
|
||
|
// is defaulted to the entry title
|
||
|
$order = Util::getFormData('order');
|
||
|
if ($order !== 'title') {
|
||
|
$order = 'id';
|
||
|
}
|
||
|
|
||
|
switch ($actionId) {
|
||
|
case 'post':
|
||
|
case 'edit':
|
||
|
require_once PENGUINCODER_BASE . '/lib/DataForm.php';
|
||
|
if (!$admin) {
|
||
|
// only admins can edit
|
||
|
header('Location: ' . Horde::selfUrl());
|
||
|
break;
|
||
|
}
|
||
|
$vars = &Variables::getDefaultVariables();
|
||
|
$vars->set('id', $id);
|
||
|
$vars->set('actionId', $actionId);
|
||
|
$vars->set('category', $category);
|
||
|
$form = &Horde_Form::singleton('PDataForm', &$vars);
|
||
|
if ($form->validate($vars)) {
|
||
|
$vals = array(
|
||
|
'title' => $vars->get('title'),
|
||
|
'info' => $vars->get('info'),
|
||
|
'category' => $vars->get('category'),
|
||
|
'attributes' => serialize(array()),
|
||
|
);
|
||
|
if ($actionId == 'edit') {
|
||
|
$vals['time_modified'] = time();
|
||
|
$result = $pdata->update($id, $vals);
|
||
|
} else {
|
||
|
$vals['time_created'] = time();
|
||
|
$result = $pdata->add($vals);
|
||
|
}
|
||
|
if (is_a($result, 'PEAR_Error')) {
|
||
|
$notification->push(_("There was a problem saving the entry: ") .
|
||
|
$result->getMessage(), 'horde.error');
|
||
|
} else {
|
||
|
$notification->push(_("Success!"), 'horde.success');
|
||
|
$goodEntry = false;
|
||
|
}
|
||
|
} elseif ($actionId == 'edit') {
|
||
|
$entry = $pdata->getById($id);
|
||
|
if (is_a($entry, 'PEAR_Error')) {
|
||
|
$goodEntry = false;
|
||
|
$notification->push(_("There was a problem fetching the data: ") .
|
||
|
$entry->getMessage(), 'horde.error');
|
||
|
} else {
|
||
|
$vars->set('time_created', $entry['time_created']);
|
||
|
$vars->set('category', $entry['category']);
|
||
|
$vars->set('title', $entry['title']);
|
||
|
$vars->set('info', $entry['info']);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case 'show':
|
||
|
// base url for generation later
|
||
|
$baseUrl = Util::addParameter(Horde::selfUrl(), 'actionId', 'show');
|
||
|
$appUrl = Horde::selfUrl();
|
||
|
|
||
|
// get the maximum journal id
|
||
|
$maxJournalId = $pdata->getMaxJournalId();
|
||
|
$minJournalId = $pdata->getMinJournalId();
|
||
|
|
||
|
// if no direction has been specified, then you want this id, fetch it
|
||
|
if (is_null($direction)) {
|
||
|
$entry = $pdata->getById($id);
|
||
|
} elseif ($direction) {
|
||
|
$entry = $pdata->getJournalById($id, '>', 'ASC');
|
||
|
} else {
|
||
|
$entry = $pdata->getJournalById($id, '<', 'DESC');
|
||
|
}
|
||
|
|
||
|
// check the fetched entry
|
||
|
if (is_a($entry, 'PEAR_Error')) {
|
||
|
$goodEntry = false;
|
||
|
$notification->push("There was a problem getting the journal entry: " .
|
||
|
$entry->getMessage(), 'horde.error');
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
if ($direction) {
|
||
|
$direction = 'ASC';
|
||
|
} else {
|
||
|
$direction = 'DESC';
|
||
|
}
|
||
|
$entries = $pdata->getByCategory('Journal', $order, $direction);
|
||
|
if (is_a($entries, 'PEAR_Error')) {
|
||
|
$goodEntry = false;
|
||
|
$notification->push("There was a problem getting the information: " .
|
||
|
$entries->getMessage(), 'horde.error');
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
require PENGUINCODER_TEMPLATES . '/common-header.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/menu/menu.inc';
|
||
|
|
||
|
switch ($actionId) {
|
||
|
case 'post':
|
||
|
case 'edit':
|
||
|
if (!is_null($form)) {
|
||
|
$renderer = &new Horde_Form_Renderer();
|
||
|
if ($goodEntry) {
|
||
|
$form->renderActive($renderer, $vars, Horde::selfUrl(), 'post');
|
||
|
} else {
|
||
|
$form->renderInactive($renderer, $vars, Horde::selfUrl(), 'post');
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case 'show':
|
||
|
$commentcount = $registry->call('forums/numMessages', array(
|
||
|
$entry['id'], 'penguincoder'));
|
||
|
if (is_a($commentcount, 'PEAR_Error')) {
|
||
|
$commentcount = 0;
|
||
|
}
|
||
|
if (!is_a($entry, 'PEAR_Error')) {
|
||
|
require PENGUINCODER_TEMPLATES . '/data/header.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/actions/header.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/actions/main.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/actions/nav.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/actions/admin.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/actions/footer.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/data/data.inc';
|
||
|
require PENGUINCODER_TEMPLATES . '/data/footer.inc';
|
||
|
}
|
||
|
$comments = $registry->call('forums/postMessage', array(
|
||
|
'penguincoder', $entry['id'], 'commentCallback'
|
||
|
));
|
||
|
$threads = $registry->call('forums/renderThreads', array(
|
||
|
$entry['id'], true, 'penguincoder'));
|
||
|
if (is_a($threads, 'PEAR_Error')) {
|
||
|
$threads = $threads->getMessage();
|
||
|
}
|
||
|
if (is_a($comments, 'PEAR_Error')) {
|
||
|
$comments = $comments->getMessage();
|
||
|
}
|
||
|
if (!empty($threads)) {
|
||
|
echo '<br />' . $threads;
|
||
|
}
|
||
|
if (!empty($comments)) {
|
||
|
echo '<br />' . $comments;
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
if (!is_a($entries, 'PEAR_Error') && count($entries)) {
|
||
|
if ($direction == 'DESC') {
|
||
|
$direction = 0;
|
||
|
} else {
|
||
|
$direction = 1;
|
||
|
}
|
||
|
require PENGUINCODER_TEMPLATES . '/journal/listheader.inc';
|
||
|
$style = 'item0';
|
||
|
$counter = 0;
|
||
|
foreach ($entries as $entry) {
|
||
|
if ($style === 'item1') {$style = 'item0';}
|
||
|
else {$style = 'item1';}
|
||
|
include PENGUINCODER_TEMPLATES . '/journal/listentry.inc';
|
||
|
$counter++;
|
||
|
}
|
||
|
include PENGUINCODER_TEMPLATES . '/journal/listfooter.inc';
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
echo '<p> </p>';
|
||
|
require $registry->get('templates', 'horde') . '/common-footer.inc';
|