assign('type', $type); $page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1; $template->assign('page', $page); $comment_id = isset($_REQUEST['comment_id']) ? $_REQUEST['comment_id'] : 0; $template->assign('comment_id', $comment_id); if(isset($_GET['photos_commentable'])) { $photos_commentable = $_GET['photos_commentable']==1 ? 1 : 0; $dbr = Database::$content->prepare("UPDATE ".Database::$db_settings['settings_table']." SET value=:value WHERE name='photos_commentable'"); $dbr->bindParam(':value', $photos_commentable, PDO::PARAM_INT); $dbr->execute(); header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type=1'); exit; } if(isset($_GET['edit'])) { $dbr = Database::$entries->prepare("SELECT id, name, email_hp, comment FROM ".Database::$db_settings['comment_table']." WHERE id=:id LIMIT 1"); $dbr->bindParam(':id', $_GET['edit'], PDO::PARAM_INT); $dbr->execute(); $data = $dbr->fetch(); if(isset($data['id'])) { $comment['id'] = $data['id']; $comment['name'] = htmlspecialchars($data['name']); $comment['email_hp'] = htmlspecialchars($data['email_hp']); $comment['comment'] = htmlspecialchars($data['comment']); $template->assign('comment', $comment); $action = 'edit'; } else { $action = 'invalid_request'; } } if(isset($_POST['edit_submit'])) { $name = isset($_POST['name']) ? trim($_POST['name']) : ''; $email_hp = isset($_POST['email_hp']) ? trim($_POST['email_hp']) : ''; $comment = isset($_POST['comment']) ? trim($_POST['comment']) : ''; $id = isset($_POST['id']) ? intval($_POST['id']) : 0; $dbr = Database::$entries->prepare("UPDATE ".Database::$db_settings['comment_table']." SET name=:name, email_hp=:email_hp, comment=:comment WHERE id=:id"); $dbr->bindParam(':id', $id, PDO::PARAM_INT); $dbr->bindParam(':name', $name, PDO::PARAM_STR); $dbr->bindParam(':email_hp', $email_hp, PDO::PARAM_STR); $dbr->bindParam(':comment', $comment, PDO::PARAM_STR); $dbr->execute(); if(isset($cache) && $cache->autoClear) $cache->clear(); header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type.'&comment_id='.$comment_id.'&page='.$page); exit; } if(isset($_GET['delete'])) { $dbr = Database::$entries->prepare("DELETE FROM ".Database::$db_settings['comment_table']." WHERE id=:id"); $dbr->bindParam(':id', $_GET['delete'], PDO::PARAM_INT); $dbr->execute(); if(isset($cache) && $cache->autoClear) $cache->clear(); header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type.'&comment_id='.$comment_id.'&page='.$page); exit; } if(isset($_GET['report_spam'])) { $dbr = Database::$entries->prepare("SELECT id, time, name, comment FROM ".Database::$db_settings['comment_table']." WHERE id=:id LIMIT 1"); $dbr->bindParam(':id', $_GET['report_spam'], PDO::PARAM_INT); $dbr->execute(); $data = $dbr->fetch(); if(isset($data['id'])) { $comment['id'] = $data['id']; $comment['name'] = htmlspecialchars($data['name']); $comment['time'] = $data['time']; $comment['comment'] = htmlspecialchars($data['comment']); $template->assign('comment', $comment); } $action = 'report_spam'; } if(isset($_POST['report_as_spam']) || isset($_POST['report_as_spam_and_delete'])) { if($settings['akismet_key']!='' && $settings['akismet_entry_check']==1) { $dbr = Database::$entries->prepare("SELECT id, name, email_hp, comment FROM ".Database::$db_settings['comment_table']." WHERE id=:id LIMIT 1"); $dbr->bindParam(':id', $_POST['id'], PDO::PARAM_INT); $dbr->execute(); $data = $dbr->fetch(); if(isset($data['id'])) { #$comment['id'] = $data['id']; $comment['author'] = $data['name']; if($data['email_hp'] != '') { if(preg_match("/^[^@]+@.+\.\D{2,5}$/", $data['email_hp'])) { $comment['email'] = $data['email_hp']; } else { $comment['website'] = $data['email_hp']; } } $comment['body'] = $data['comment']; $akismet = new Akismet(BASE_URL, $settings['akismet_key'], $comment); if(!$akismet->errorsExist()) { $akismet->submitSpam(); } if(isset($_POST['report_as_spam_and_delete'])) { $dbr = Database::$entries->prepare("DELETE FROM ".Database::$db_settings['comment_table']." WHERE id=:id"); $dbr->bindParam(':id', $_POST['id'], PDO::PARAM_INT); $dbr->execute(); if(isset($cache) && $cache->autoClear) $cache->clear(); } } } header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type.'&comment_id='.$comment_id.'&page='.$page); exit; } if(isset($_POST['delete_checked'])) { if(isset($_POST['checked']) && is_array($_POST['checked'])) { $dbr = Database::$entries->prepare("SELECT id, name, comment FROM ".Database::$db_settings['comment_table']." WHERE id=:id ORDER BY comment_id ASC"); $dbr->bindParam(':id', $checked_id, PDO::PARAM_INT); $i=0; #Database::$entries->beginTransaction(); foreach($_POST['checked'] as $checked_id) { $dbr->execute(); $data = $dbr->fetch(); $comments[$i]['id'] = $data['id']; $comments[$i]['name'] = htmlspecialchars($data['name']); $comments[$i]['comment'] = htmlspecialchars($data['comment']); if(mb_strlen($comments[$i]['comment'],CHARSET) > 50) $comments[$i]['comment'] = mb_substr($comments[$i]['comment'],0,47,CHARSET).'...'; ++$i; } #Database::$entries->commit(); if(isset($comments)) { $template->assign('comments',$comments); $action = 'delete_checked'; } } } if(isset($_POST['delete_all_comments'])) { $action = 'delete_all_comments'; } if(isset($_POST['delete_all_comments_page'])) { if($comment_id>0) { $dbr = Database::$content->query("SELECT title FROM ".Database::$db_settings['pages_table']." WHERE id=:id"); $dbr->bindParam(':id', $comment_id, PDO::PARAM_INT); $dbr->execute(); $data = $dbr->fetch(); if(isset($data['title'])) { $template->assign('page', htmlspecialchars($data['title'])); $action = 'delete_all_comments_page'; } } } if(isset($_POST['delete_checked_confirmed'])) { if(isset($_POST['checked_ids_confirmed']) && is_array($_POST['checked_ids_confirmed'])) { $dbr = Database::$entries->prepare("DELETE FROM ".Database::$db_settings['comment_table']." WHERE id=:id"); $dbr->bindParam(':id', $delete_id, PDO::PARAM_INT); Database::$entries->beginTransaction(); foreach($_POST['checked_ids_confirmed'] as $delete_id) { $dbr->execute(); } Database::$entries->commit(); if(isset($cache) && $cache->autoClear) $cache->clear(); } header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type.'&page='.$page); exit; } if(isset($_POST['delete_all_comments_confirmed'])) { $dbr = Database::$entries->prepare("DELETE FROM ".Database::$db_settings['comment_table']." WHERE type=:type"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->execute(); if(isset($cache) && $cache->autoClear) $cache->clear(); header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type); exit; } if(isset($_POST['delete_all_comments_page_confirmed'])) { $dbr = Database::$entries->prepare("DELETE FROM ".Database::$db_settings['comment_table']." WHERE type=:type AND comment_id=:comment_id"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->bindParam(':comment_id', $_POST['comment_id'], PDO::PARAM_INT); Database::$entries->beginTransaction(); $dbr->execute(); if(isset($cache) && $cache->autoClear) $cache->clear(); header('Location: '.BASE_URL.ADMIN_DIR.'index.php?mode=comments&type='.$type); exit; } switch($action) { case 'main': // count comments: if($comment_id==0) { $dbr = Database::$entries->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['comment_table']." WHERE type=:type"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->execute(); $comment_count = $dbr->fetchColumn(); } else { $dbr = Database::$entries->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['comment_table']." WHERE type=:type AND comment_id=:comment_id"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->bindParam(':comment_id', $comment_id, PDO::PARAM_INT); $dbr->execute(); $comment_count = $dbr->fetchColumn(); // no comments to item, switch to all items: if($comment_count==0) { $comment_id=0; $dbr = Database::$entries->prepare("SELECT COUNT(*) FROM ".Database::$db_settings['comment_table']." WHERE type=:type"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->execute(); $comment_count = $dbr->fetchColumn(); } } // pages: $pages = ceil($comment_count / $settings['admin_entries_per_page']); if($page < 1) $page=1; if($page > $pages && $page != 1) $page = $pages; $template->assign('page', $page); #$pagination = pagination($pages,$page,3,true); $template->assign('pagination',pagination($pages,$page,3,true)); // get $comment_ids of all comments: $dbr = Database::$entries->prepare("SELECT DISTINCT comment_id FROM ".Database::$db_settings['comment_table']." WHERE type=:type ORDER BY comment_id ASC"); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->execute(); while($data = $dbr->fetch()) { $comment_ids[] = $data['comment_id']; } // get ids, pages, titles etc. of commented items: if(isset($comment_ids)) { $comment_ids_list = implode(',',$comment_ids); if($type==0) { $dbr = Database::$content->query("SELECT id, page, title FROM ".Database::$db_settings['pages_table']." WHERE id IN (".$comment_ids_list.")"); while($data = $dbr->fetch()) { $items[$data['id']]['page'] = htmlspecialchars($data['page']); $items[$data['id']]['title'] = htmlspecialchars($data['title']); } } else { $dbr = Database::$content->query("SELECT id, photo_thumbnail, photo_normal, title FROM ".Database::$db_settings['photo_table']." WHERE id IN (".$comment_ids_list.")"); while($data = $dbr->fetch()) { $items[$data['id']]['page'] = htmlspecialchars($data['title']); $items[$data['id']]['title'] = htmlspecialchars($data['title']); $items[$data['id']]['photo_thumbnail'] = htmlspecialchars($data['photo_thumbnail']); $items[$data['id']]['photo_normal'] = htmlspecialchars($data['photo_normal']); } } } if(isset($items)) { asort($items); $template->assign('items', $items); } // get comments: if($comment_id==0) { $dbr = Database::$entries->prepare("SELECT id, comment_id, time, name, email_hp, comment, ip FROM ".Database::$db_settings['comment_table']." WHERE type=:type ORDER BY id DESC LIMIT ".$settings['admin_entries_per_page']." OFFSET ".(($page-1)*$settings['admin_entries_per_page'])); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->execute(); } else { $dbr = Database::$entries->prepare("SELECT id, comment_id, time, name, email_hp, comment, ip FROM ".Database::$db_settings['comment_table']." WHERE type=:type AND comment_id=:comment_id ORDER BY id DESC LIMIT ".$settings['admin_entries_per_page']." OFFSET ".(($page-1)*$settings['admin_entries_per_page'])); $dbr->bindParam(':type', $type, PDO::PARAM_INT); $dbr->bindParam(':comment_id', $comment_id, PDO::PARAM_INT); $dbr->execute(); } $i=0; while($data = $dbr->fetch()) { #$item_ids[] = $data['comment_id']; $comments[$i]['id'] = $data['id']; $comments[$i]['comment_id'] = $data['comment_id']; $comments[$i]['time'] = $data['time']; $comments[$i]['name'] = htmlspecialchars($data['name']); if($data['email_hp']) { if(preg_match("/^[^@]+@.+\.\D{2,5}$/", $data['email_hp'])) { $comments[$i]['email_hp'] = 'mailto:'.htmlspecialchars($data['email_hp']); } else { $comments[$i]['email_hp'] = add_http_if_no_protocol(htmlspecialchars($data['email_hp'])); } } $comments[$i]['comment'] = htmlspecialchars($data['comment']); if($settings['comment_remove_blank_lines']==1) { $entry_array = explode("\n", $comments[$i]['comment']); $comment = ''; foreach($entry_array as $entry_line) { $entry_line = trim($entry_line); if($entry_line!='') $comment .= $entry_line."\n"; } $comments[$i]['comment'] = $comment; } $comments[$i]['comment'] = nl2br($comments[$i]['comment']); $comments[$i]['ip'] = htmlspecialchars($data['ip']); ++$i; } if(isset($comments)) { $template->assign('comments', $comments); } if(isset($item_titles)) { asort($item_titles); $template->assign('item_titles', $item_titles); } if($comment_id!=0) { if($type==0) $localization->replacePlaceholder('page', $items[$comment_id]['title'], 'delete_all_comments_page'); else $localization->replacePlaceholder('photo', $items[$comment_id]['title'], 'delete_all_comments_photo'); } if($type==1) { if($settings['photos_commentable']==1) $localization->replaceLink('index.php?mode=comments&type=1&photos_commentable=0', 'photo_comments_enabled'); if($settings['photos_commentable']==0) $localization->replaceLink('index.php?mode=comments&type=1&photos_commentable=1', 'photo_comments_disabled'); } $template->assign('subtitle', Localization::$lang['comments']); $template->assign('subtemplate', 'comments.inc.tpl'); break; case 'edit': $template->assign('subtitle', Localization::$lang['edit_comment']); $template->assign('subtemplate', 'comments_edit.inc.tpl'); break; case 'delete_checked': $template->assign('subtitle', Localization::$lang['delete_comments']); $template->assign('subtemplate', 'comments_delete.inc.tpl'); break; case 'delete_all_comments': $template->assign('subtitle', Localization::$lang['delete_comments']); $template->assign('subtemplate', 'comments_delete_all.inc.tpl'); break; case 'delete_all_comments_page': $template->assign('subtitle', Localization::$lang['delete_comments']); $template->assign('subtemplate', 'comments_delete_all_page.inc.tpl'); break; case 'report_spam': $template->assign('subtitle', Localization::$lang['report_spam']); $template->assign('subtemplate', 'comments_report_spam.inc.tpl'); break; } } ?>