initial commit
This commit is contained in:
commit
1cc4bf3572
254 changed files with 63622 additions and 0 deletions
htdocs/includes
196
htdocs/includes/views.inc.php
Normal file
196
htdocs/includes/views.inc.php
Normal file
|
@ -0,0 +1,196 @@
|
|||
<?php
|
||||
#require_once(BASE_PATH . 'classes/Nibble-Forms/Nibble/NibbleForms/NibbleForm.php');
|
||||
require(BASE_PATH . 'libraries/password_compat/lib/password.php');
|
||||
require(BASE_PATH . 'libraries/FeedWriter/FeedTypes.php');
|
||||
|
||||
class views {
|
||||
public static function home($params) {
|
||||
global $tpl;
|
||||
|
||||
/* #FIXME
|
||||
$tpl->assign('announcement', array(
|
||||
'id' => 1234,
|
||||
'date' => time(),
|
||||
'title' => 'Foo Bar',
|
||||
'abstract' => 'baz',
|
||||
'content' => 'It\'s the text!',
|
||||
'is_important' => false
|
||||
));
|
||||
*/
|
||||
$tpl->display('home.html');
|
||||
}
|
||||
|
||||
public static function create($params) {
|
||||
global $tpl;
|
||||
|
||||
$formdata = array(
|
||||
'name' => array('value' => $_REQUEST['slug']),
|
||||
'uri' => array('value' => $_REQUEST['uri']),
|
||||
'refresh_on_request' => array('checked' => $_REQUEST['refresh'] == 'interval' ? false : true),
|
||||
'interval' => array('value' => $_REQUEST['interval']),
|
||||
'expire' => array('checked' => isset($_REQUEST['expire']) ? true : false,
|
||||
'value' => $_REQUEST['expire_value'],
|
||||
'unit' => $_REQUEST['expire_unit']),
|
||||
'description' => array('value' => $_REQUEST['description']),
|
||||
);
|
||||
|
||||
// Check name (slug)
|
||||
if (isset($_REQUEST['slug'])
|
||||
and preg_match('#^[a-zA-Z0-9_\.+-]+$#', $_REQUEST['slug'])
|
||||
) {
|
||||
// Check URI
|
||||
if (isset($_REQUEST['uri'])
|
||||
and preg_match('#^https?://[a-zA-Z0-9_\.-]+\.[a-zA-Z0-9]{2,}(/.*)?$#', $_REQUEST['uri'])
|
||||
) {
|
||||
// Check refresh
|
||||
if ($_REQUEST['refresh'] == 'request'
|
||||
or ($_REQUEST['refresh'] == 'interval'
|
||||
and $_REQUEST['interval'] >= 900
|
||||
)) {
|
||||
// Check expire
|
||||
if ($_REQUEST['expire'] == false
|
||||
or ($_REQUEST['expire'] == true
|
||||
and intval($_REQUEST['expire_value']) > 0
|
||||
and in_array($_REQUEST['expire_unit'], ['h', 'd', 'w', 'm'])
|
||||
)) {
|
||||
// Check description
|
||||
if (strlen($_REQUEST['description']) < 1000) {
|
||||
// Calculate expiration date, if needed
|
||||
if ($_REQUEST['expire'] == true) {
|
||||
$expireDate = new DateTime();
|
||||
switch ($_REQUEST['expire_unit']) {
|
||||
case 'h':
|
||||
#$expireDate = strtotime('+' . $_REQUEST['expire_value'] . ' hours');
|
||||
$expireString = $expireDate->add(new DateInterval("PT$_REQUEST[expire_value]H"))->format('Y-m-d H:i:s');
|
||||
break;
|
||||
case 'd':
|
||||
#$expireDate = strtotime('+' . $_REQUEST['expire_value'] . ' days');
|
||||
$expireString = $expireDate->add(new DateInterval("P$_REQUEST[expire_value]D"))->format('Y-m-d H:i:s');
|
||||
break;
|
||||
case 'w':
|
||||
#$expireDate = strtotime('+' . $_REQUEST['expire_value'] . ' weeks');
|
||||
$expireString = $expireDate->add(new DateInterval("P$_REQUEST[expire_value]W"))->format('Y-m-d H:i:s');
|
||||
break;
|
||||
case 'm':
|
||||
#$expireDate = strtotime('+' . $_REQUEST['expire_value'] . ' months');
|
||||
$expireString = $expireDate->add(new DateInterval("P$_REQUEST[expire_value]M"))->format('Y-m-d H:i:s');
|
||||
break;
|
||||
}
|
||||
} else $expireString = null;
|
||||
|
||||
if (feeds::create($_REQUEST['slug'],
|
||||
$_REQUEST['uri'],
|
||||
$_REQUEST['refresh'] == 'interval' ? 'true' : 'false',
|
||||
$_REQUEST['interval'],
|
||||
'now',
|
||||
isset($_REQUEST['expire']) ? 'true' : 'false',
|
||||
$expireString,
|
||||
$_REQUEST['password'],
|
||||
$_SERVER['REMOTE_ADDR'],
|
||||
'now'
|
||||
)) {
|
||||
$tpl->assign('title', 'Feedized!');
|
||||
$tpl->assign('feed', $_REQUEST);
|
||||
$tpl->assign('interval_hms', sec2hms($_REQUEST['interval']));
|
||||
if ($_REQUEST['expire'])
|
||||
$tpl->assign('expire_hms', sec2hms($_REQUEST['expire_value']));
|
||||
$tpl->display('created.html');
|
||||
exit();
|
||||
}
|
||||
} else { // erroneous description?
|
||||
$formdata['description']['has_error'] = true;
|
||||
$formdata['description']['error_message'] = 'You description is too long.';
|
||||
}
|
||||
} else { // erroneous expire?
|
||||
$formdata['expire']['has_error'] = true;
|
||||
$formdata['expire']['error_message'] = 'Please enter a valid timespan.';
|
||||
}
|
||||
} else { // erroneous interval?
|
||||
$formdata['interval']['has_error'] = true;
|
||||
$formdata['interval']['error_message'] = 'The request interval must be at least 15 minutes (900 seconds). Why did you even try?';
|
||||
}
|
||||
} else { // erroneous uri?
|
||||
$formdata['uri']['has_error'] = true;
|
||||
$formdata['uri']['error_message'] = 'Please enter a valid URI, like "http://duckduckgo.com/"';
|
||||
}
|
||||
} else { // erroneous name?
|
||||
$formdata['name']['has_error'] = true;
|
||||
$formdata['name']['error_message'] = 'Please enter a valid name for your feed. Allowed characters are: a-z A-Z 0-9 _ . -';
|
||||
}
|
||||
$tpl->assign('form', $formdata);
|
||||
views::home($params);
|
||||
}
|
||||
|
||||
public static function feed($params) {
|
||||
$feedData = feeds::getBySlug($params['slug']);
|
||||
if (!$feedData)
|
||||
return [404, 'feed'];
|
||||
$itemData = feedItems::getAll($feedData['id']);
|
||||
|
||||
$feed = new ATOMFeedWriter();
|
||||
$feed->setTitle($feedData['slug']);
|
||||
$feed->setLink('https://feedizer.tigris.fanir.de/feed/' . $feedData['slug']);
|
||||
$feed->setChannelElement('updated', (new DateTime($itemData[0]['timestamp']))->format(DATE_ATOM));
|
||||
|
||||
foreach ($itemData as $item) {
|
||||
$feedItem = $feed->createNewItem();
|
||||
|
||||
$feedItem->setTitle($feedData['slug']);
|
||||
$feedItem->setLink($feedData['uri']);
|
||||
$feedItem->setDate($item['timestamp']);
|
||||
switch ($params['contentType']) {
|
||||
case 'page':
|
||||
$feedItem->setDescription($item['html']);
|
||||
break;
|
||||
case 'diff':
|
||||
$feedItem->setDescription(nl2br(htmlspecialchars($item['diff'], ENT_XML1 | ENT_SUBSTITUTE | ENT_COMPAT)));
|
||||
break;
|
||||
default: return [404];
|
||||
}
|
||||
$feed->addItem($feedItem);
|
||||
}
|
||||
|
||||
$feed->generateFeed();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static function feedInfo($params) {
|
||||
global $tpl, $md;
|
||||
|
||||
$feed = feeds::getBySlug($params['slug']);
|
||||
|
||||
if (!$feed)
|
||||
return [404, 'feed'];
|
||||
|
||||
#$feed['description'] = $md->transform(htmlspecialchars($feed['description']));
|
||||
|
||||
$tpl->assign('feed', $feed);
|
||||
$tpl->assign('interval_hms', sec2hms($feed['refresh_interval']));
|
||||
|
||||
$tpl->display('feedInfo.html');
|
||||
}
|
||||
|
||||
public static function flatpage($params) {
|
||||
$file = $params['slug'] . '.html';
|
||||
|
||||
if (in_array($file, scandir(BASE_PATH . 'templates/flatpages'))) {
|
||||
global $tpl;
|
||||
$tpl->display('flatpages/' . $file);
|
||||
} else {
|
||||
return [404];
|
||||
}
|
||||
}
|
||||
|
||||
public static function announcement($params) {
|
||||
$ann = announcements::getById($params['id']);
|
||||
|
||||
if ($ann != false) {
|
||||
global $tpl;
|
||||
$tpl->assign('announcement', $ann);
|
||||
$tpl->display('announcement.html');
|
||||
} else {
|
||||
return [404, 'announcement'];
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue