Файл: InstantSocial/uploud/components/photoblog/frontend.php
Строк: 275
<?php
/******************************************************************************/
// //
// InstantCMS v1.8 //
// http://www.instantcms.ru/ //
// //
// written by InstantCMS Team, 2007-2010 //
// produced by InstantSoft, (www.instantsoft.ru) //
// //
// LICENSED BY GNU/GPL v2 //
// //
/******************************************************************************/
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
function photoblog(){
$inCore = cmsCore::getInstance();
$inDB = cmsDatabase::getInstance();
$inPage = cmsPage::getInstance();
$inUser = cmsUser::getInstance();
$inCore->loadModel('photoblog');
$model = new cms_model_photoblog();
$cfg = $inCore->loadComponentConfig('photoblog');
// Проверяем включен ли компонент
if(!$cfg['component_enabled']) { cmsCore::error404(); }
$premod = $cfg['premod'];
$perpage = $cfg['perpage'];
$do = $inCore->request('do', 'str', 'list');
if ($do== 'list') {
$inPage->setTitle('Фотоблоги');
$inPage->addPathway('Фотоблоги', '/photoblog/');
$inPage->addPathway('Фотоблоги', '/photoblog');
if (!$_SESSION['ph_orderby']) {$_SESSION['ph_orderby'] = 'pubdate'; }
if (!$_SESSION['ph_orderto']) {$_SESSION['ph_orderto'] = 'DESC'; }
$ph_orderby = $_SESSION['ph_orderby'];
$ph_orderto = $_SESSION['ph_orderto'];
$page = $inCore->request('cpage', 'int', 1);
$pages_url = '/photoblog/page-%page%';
$sql = "SELECT *, a.id AS bid, a.hits AS hits, a.pubdate AS pubdate FROM cms_phlog_item a
LEFT JOIN
cms_users c ON a.user_id = c.id
ORDER BY $ph_orderby $ph_orderto LIMIT ".(($page-1)*$perpage).", $perpage";
$result = $inDB->query($sql);
$phlogs=array();
if ($inDB->num_rows($result)){
while($item = $inDB->fetch_assoc($result)){
$item[votes] = $model->getVotingBlock($item[bid]);
$item[comments] = $inCore->getCommentsCount('photoblog', $item[bid]);
$item[photos] = $inDB->get_table('cms_phlog_photos', "phlog_id=$item[bid] LIMIT 6",'image');
$item[c_photo] = $inDB->rows_count('cms_phlog_photos', "phlog_id=$item[bid]");
$pubdate = $model->getPhlogDate($item[pubdate]);
$item[day] = $pubdate[day];
$item[month] = $pubdate[month];
$item[year] = $pubdate[year];
if ($item['editdate']<> '0000-00-00 00:00:00') {
$item['eddate'] = '(Редактировалось: '.$inCore->dateFormat($item['editdate']).')';}
if ($item[photos]) {
$phlogs[]=$item; $count++;}
} }
$count = $inDB->rows_count('cms_phlog_item',"published = 1");
$pages = ceil($count / $perpage);
$pagebar = $inPage->getPagebar($count, $page, $perpage, $pages_url);
$smarty = $inCore->initSmarty('components', 'com_phlog_list.tpl');
$smarty->assign('phlogs', $phlogs);
$smarty->assign('count', $count);
$smarty->assign('pagebar', $pagebar);
$smarty->display('com_phlog_list.tpl');
}
///////////////////////////////////// VIEW ////////////////////////////////////////////////////////////////////////////////
if ($do== 'view') {
$seolink = $inCore->request('seolink', 'str');
if ($seolink) {
$inDB->query("UPDATE cms_phlog_item SET hits = hits + 1 WHERE seolink='{$seolink}'");
$sql = "SELECT *, a.id AS bid FROM cms_phlog_item a
LEFT JOIN
cms_users c ON a.user_id = c.id WHERE a.seolink='{$seolink}' AND a.published = 1 LIMIT 1";
$result = $inDB->query($sql);
if ($inDB->num_rows($result)){
$phlog = $inDB->fetch_assoc($result);
$phlog[content] = $inCore->parseSmiles($phlog[content], true);
$phlog[photos] = $inDB->get_table('cms_phlog_photos', "phlog_id=$phlog[bid] ORDER BY id DESC",'image');
$phlog[c_photo] = $inDB->rows_count('cms_phlog_photos', "phlog_id=$phlog[bid]");
$phlog[votes] = $model->getVotingBlock($phlog[bid]);
$phlog[comments] = $inCore->getCommentsCount('photoblog', $phlog[bid]);
$phlog[is_my] = ($phlog[user_id]<>0 && $phlog[user_id] == $inUser->id);
$pubdate = $model->getPhlogDate($phlog[pubdate]);
$phlog[day] = $pubdate[day];
$phlog[month] = $pubdate[month];
$phlog[year] = $pubdate[year];
if ($phlog['editdate']<> '0000-00-00 00:00:00') {
$phlog['eddate'] = '(Редактировалось: '.$inCore->dateFormat($phlog['editdate']).')';}
} }
if (!$phlog) { cmsCore::error404(); }
$inPage->setTitle($phlog[title]);
$inPage->setDescription('Фотоблоги - '.$phlog['title']);
if ($phlog['metakeys']) { $inPage->setKeywords($phlog['metakeys']); }
$inPage->addPathway('Фотоблоги', '/photoblog');
$inPage->addPathway($phlog['title'], '/photobsdlog/'.$phlog['seolink'].'.html');
$inPage->addPathway();
$smarty = $inCore->initSmarty('components', 'com_phlog_view.tpl');
$smarty->assign('is_admin', $inUser->is_admin);
$smarty->assign('phlog', $phlog);
$smarty->display('com_phlog_view.tpl');
//show user comments
if($inCore->isComponentInstalled('comments') && $phlog[comm]=='1'){
$inCore->includeComments();
comments('photoblog', $phlog[bid]);
}
}
///////////////////////////////////// ADD ////////////////////////////////////////////////////////////////////////////////
if ($do=='add' || $do=='edit') {
$user_id = $inUser->id;
$ph_id = $inCore->request('ph_id', 'int');
if (!$user_id) {
$msg = '<p>Только зарегистрированные пользователи могут создавать фотоблоги!</p>
<p><a href="/login">Пройдите авторизацию</a> или <a href="/registration">зарегистрируйтесь</a>';} else {
if ($do=='edit' && $ph_id) {
$phlog = $inDB->get_fields('cms_phlog_item',"id={$ph_id}",'*');
$phlog[photos] = $inDB->get_table('cms_phlog_photos', "phlog_id={$ph_id} ORDER BY id DESC",'id,image');
$inPage->setTitle($phlog[title].' - Редактировать');
$inPage->addPathway('Фотоблоги','/photoblog/');
$inPage->addPathway('Редактировать', '../'.$phlog['id'].'/edit.html');
$inPage->addPathway();
} else { $inPage->setTitle('Новая запись - Фотоблог');
$inPage->addPathway('Фотоблоги', '/photoblog/');
$inPage->addPathway('Новая запись', '/photoblog/add.html'); $inPage->addPathway('Новая запись', 'add.html');
$inPage->addPathway();
}
}
$bb_toolbar = $inPage->getBBCodeToolbar('description');
$bb_smiles = $inPage->getSmilesPanel('description');
$smarty = $inCore->initSmarty('components', 'com_phlog_add.tpl');
$smarty->assign('msg', $msg);
$smarty->assign('bb_toolbar', $bb_toolbar);
$smarty->assign('bb_smiles', $bb_smiles);
$smarty->assign('phlog', $phlog);
$smarty->display('com_phlog_add.tpl');
if ($inCore->inRequest('confirm')){
$ph_id = $inCore->request('ph_id', 'int');
$title = $inCore->request('title', 'str');
$description = $inCore->request('description', 'html', '');
$description = $inCore->badTagClear($description);
$description = $inDB->escape_string($description);
$metakeys = $inCore->request('metakeys', 'str');
$comm = $inCore->request('comm', 'int');
if (!$premod && $do=='add') {$published = 1;}
if ($title !='' && $description !='') {
$seolink = $model->getPhlogSeoLink(array('id'=>$f_id, 'title'=>$title));
$title = $inDB->escape_string($title);
$title = htmlspecialchars($title);
$metakeys = $inDB->escape_string($metakeys);
if ($inCore->inRequest('update') && $ph_id) {
$sql = "UPDATE cms_phlog_item SET title = '$title', editdate= NOW(),
content = '$description', seolink='$seolink', metakeys='$metakeys', comm=$comm WHERE id = '$ph_id'";
$inDB->query($sql) or die("Ошибка при создании записи!");
$comments_sql = "UPDATE cms_comments
SET target_link = '/photoblog/{$seolink}.html',
target_title = '{$title}'
WHERE target = 'photoblog' AND target_id = {$ph_id}";
$inDB->query($comments_sql);
if ($inCore->inRequest('phototodel')){
$list = $inCore->request('phototodel', 'str');
$photos = explode("-", $list);
foreach ($photos as $item) {
$filename = $inDB->get_field('cms_phlog_photos',"id=$item",'image');
$inDB->query("DELETE FROM cms_phlog_photos WHERE phlog_id = $ph_id AND id = $item");
unlink(PATH.'/images/photoblog/small/'.$filename);
unlink(PATH.'/images/photoblog/medium/'.$filename);
}
}
$inCore->redirect("/photoblog/".$seolink.".html");
} else {
$sql = "INSERT cms_phlog_item (user_id, pubdate, title, content, seolink, metakeys, hits,comm, published )
VALUES ($user_id, NOW(), '$title','$description','$seolink','$metakeys',0,$comm, '$published')";
$inDB->query($sql) or die("Ошибка при создании записи!");
$ph_id = $inDB->get_field('cms_phlog_item',"seolink='$seolink'",'id');
$a_id = $inDB->get_field('cms_actions',"name='add_photoblog'",'id');
if (!$premod) { $a_sql="INSERT INTO cms_actions_log VALUES ('','{$a_id}',NOW(),'{$user_id}','фотоблог','/photoblog/{$seolink}.html','{$ph_id}','фотоблог','/photoblog/{$seolink}.html','0','{$title}','0','0')";
$a_result = $inDB->query($a_sql); }
$inCore->redirect("/photoblog/".$ph_id."/upload.html");
}
}
}
}
///////////////////////////////////// DEL ////////////////////////////////////////////////////////////////////////////////
if ($do=='del') {
$user_id = $inUser->id;
$ph_id = $inCore->request('ph_id', 'int');
if ($ph_id && $user_id) {
$delele = $model->deletePhlog($ph_id);
$inCore->redirect("/photoblog/");
}
else { $inCore->redirectBack();}
}
///////////////////////////////////// UPLOAD ////////////////////////////////////////////////////////////////////////////////
if ($do=='upload') {
if (!$inUser->id) { cmsUser::goToLogin(); }
$inPage->backButton(false);
$ph_id = $inCore->request('ph_id', 'int');
$seolink = $inDB->get_field('cms_phlog_item',"id=$ph_id",'seolink');
$maxup = $cfg['maxup'];
$smarty = $inCore->initSmarty('components', 'com_phlog_upload.tpl');
$smarty->assign('sess_id', session_id());
$smarty->assign('ph_id', $ph_id);
$smarty->assign('maxup', $maxup);
$smarty->assign('seolink', $seolink);
$smarty->display('com_phlog_upload.tpl');
}
///////////////////////////////////// GO_UPLOAD ////////////////////////////////////////////////////////////////////////////////
if ($do=='go_upload'){
if ($inCore->inRequest("PHPSESSID")) {
$sess_id = $inCore->request("PHPSESSID", 'str');
if ($sess_id != session_id()) { session_destroy(); }
session_id($sess_id);
session_start();
}
$user_id = $_SESSION['user']['id'];
$ph_id = $inCore->request('ph_id', 'int');
if (!$user_id) { header("HTTP/1.1 500 Internal Server Error"); exit(0); }
//if(!$model->checkAccess($ph_id, $user_id)) { header("HTTP/1.1 500 Internal Server Error"); exit(0); }
$file = $model->uploadPhoto($ph_id);
if ($file) { $inCore->redirect('/photos/'.$album['id']);}
}
///////////////////////////////////// SET SORT ////////////////////////////////////////////////////////////////////////////////
if ($do=='set_sort'){
$ph_orderby = $inCore->request('orderby', 'str', 'ordering');
$ph_orderto = $inCore->request('orderto', 'str', 'asc');
$_SESSION['ph_orderby'] = $ph_orderby;
$_SESSION['ph_orderto'] = $ph_orderto;
$inCore->redirectBack();
}
//======================================================================================================//
} //function
?>