wikipoints/controllers/PageController.php

210 lines
5.7 KiB
PHP

<?php
class PageController extends Controller
{
const elementsByPage = 30;
static function actionPoints()
{
self::$layout = 'layouts/page.php';
self::addStyle('/css/style.css?ver=' . App::getConfig('version'));
self::addStyle('/css/pageStyle.css?ver=' . App::getConfig('version'));
self::addScript('/js/jquery-2.1.0.min.js');
self::addScript('/js/jquery-ui-1.10.4.custom.min.js');
self::addScript('/js/bootstrap.min.js');
self::addScript('/js/app.js');
self::addStyle('/css/bootstrap.min.css');
self::addStyle('/css/bootstrap-theme.min.css');
if (!App::$user) {
self::addScript('//ulogin.ru/js/ulogin.js');
}
$notModeratedPoints = $result = array();
// On moderation
if (App::$user && App::$user->isAdmin) {
$param['order'] = 'id DESC';
$param['where'] = '`status` = "moderation"';
$points = Point::model()->getAll($param);
$categories = Category::model()->getAll(array('order' => 'ord ASC'));
foreach ($points as $point) {
$id = $point->id;
$result[$id]['id'] = $point->id;
$result[$id]['name'] = $point->name;
$result[$id]['lat'] = $point->lat;
$result[$id]['lng'] = $point->lng;
$result[$id]['author'] = $point->authorUser->nick;
$result[$id]['categoryId'] = $point->categoryId;
$result[$id]['categoryIcon'] = $categories[$point->categoryId]->icon;
}
$notModeratedPoints = $result;
}
// ------------------------------------------
$param = array();
$param['where'] = '`status` = "published"';
$pointsCount = Point::model()->getCount($param);
$pagesCount = intval(ceil($pointsCount/self::elementsByPage));
$page = isset($_GET['page']) ? abs((int)$_GET['page']) : $pagesCount;
$pages = array();
for ($index = $pagesCount; $index > $pagesCount-3; $index--) {
$pages[$index] = 1;
}
for ($index = 3; $index > 0; $index--) {
$pages[$index] = 1;
}
if ($page > $pagesCount) {
$page = $pagesCount;
} else if ($page < 1) {
$page = 1;
}
$topIndex = ($page+2 > $pagesCount) ? $pagesCount : $page+2;
$bottomIndex = ($page-3 < 1) ? 1 : $page-3;
for ($index = $topIndex; $index > $bottomIndex; $index--) {
$pages[$index] = 1;
}
krsort($pages);
$param = array();
$param['order'] = '`ord` DESC';
if (App::getParam('category')) {
$param['where'] = 'categoryId = ' . (int) App::getParam('category') . ' AND `status` = "published"';
} else if (App::getParam('user')) {
$param['where'] = '`author` = ' . (int) App::getParam('user') . ' AND `status` = "published"';
} else {
$param['where'] = '`status` = "published"';
$param['limit'] = self::elementsByPage;
if($page) {
$param['offset'] = self::elementsByPage * ($pagesCount - $page);
}
}
$points = Point::model()->getAll($param);
$categories = Category::model()->getAll(array('order' => 'ord ASC'));
$result = array();
foreach ($points as $point) {
$id = $point->id;
$result[$id]['id'] = $point->id;
$result[$id]['name'] = $point->name;
$result[$id]['lat'] = $point->lat;
$result[$id]['lng'] = $point->lng;
$result[$id]['img'] = $point->getImg('middle');
$result[$id]['author'] = $point->authorUser->nick;
$result[$id]['categoryId'] = $point->categoryId;
$result[$id]['categoryIcon'] = $categories[$point->categoryId]->icon;
}
App::setConfig('title', App::$defaultTitle);
self::render('pointsTemplate.php', array(
'categories' => $categories,
'points' => $result,
'pointsCount' => $pointsCount,
'page' => $page,
'pagesCount' => $pagesCount,
'pages' => $pages,
'notModeratedPoints' => $notModeratedPoints,
'randomPoint' => Point::model()->getRandom(),
));
}
static function actionPoint()
{
$pointId = (int) App::getParam('id');
if ($pointId) {
App::redirect('/point/'.$pointId, 301);
} else {
App::error404();
}
}
static function actionArticle()
{
$articleId = (int) App::getParam('id');
if ($articleId) {
App::redirect('/article/'.$articleId, 301);
} else {
App::error404();
}
}
static function actionVkpoint()
{
$pointId = (int) App::getParam('id');
if (App::$user && App::$user->isAdmin == 1 && $pointId) {
$point = Point::model()->getByPK($pointId);
if ($point->id == NULL) {
App::error404();
}
$point->descriptionHtml = nl2br($point->description);
$point->name = htmlspecialchars($point->name);
$categories = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true));
$point->description = Helper::replaceLinks($point->description);
self::renderPartial('page/vkPoint.php', array(
'point' => $point,
'photos' => $point->photos,
));
} else {
App::error404();
}
}
static function actionInstapoint()
{
$pointId = (int) App::getParam('id');
if (App::$user && App::$user->isAdmin == 1 && $pointId) {
$point = Point::model()->getByPK($pointId);
if ($point->id == NULL) {
App::error404();
}
$point->descriptionHtml = nl2br($point->description);
$point->name = htmlspecialchars($point->name);
$categories = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true));
$point->description = Helper::replaceLinks($point->description);
self::renderPartial('page/instaPoint.php', array(
'point' => $point,
'photos' => $point->photos,
));
} else {
App::error404();
}
}
static function action404($message)
{
self::$layout = 'layouts/page.php';
self::addStyle('/css/style.css?ver=' . App::getConfig('version'));
self::addStyle('/css/pageStyle.css?ver=' . App::getConfig('version'));
self::addStyle('/css/bootstrap.min.css');
self::addScript('/js/jquery-2.1.0.min.js');
self::addScript('/js/bootstrap.min.js');
App::setConfig('title', App::$defaultTitle);
self::render('error404.php', array(
'randomPoint' => Point::model()->getRandom(),
));
}
}