diff --git a/web/ajax.php b/web/ajax.php index 0f187712..fe23108c 100644 --- a/web/ajax.php +++ b/web/ajax.php @@ -159,6 +159,11 @@ if ($ui->smallletters('w', 9, 'get') == 'datatable') { require_once(EASYWIDIR . '/stuff/ajax/datatable_webmasterserver.php'); + // Page comments + } else if ($ui->smallletters('d', 12, 'get') == 'pagecomments' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['cms_pages']) { + + require_once(EASYWIDIR . '/stuff/ajax/datatable_pagecomments.php'); + // Code wise it seems odd, but this way we can get plausible userIDs for following queries up front without having to repeat ourselves } else { diff --git a/web/stuff/admin/page_comments.php b/web/stuff/admin/page_comments.php index 277f0b17..9e59b3db 100644 --- a/web/stuff/admin/page_comments.php +++ b/web/stuff/admin/page_comments.php @@ -103,126 +103,8 @@ if ($ui->w('action', 4, 'post') and !token(true)) { $template_file = $spracheResponse->error_table; } } else { - $query = $sql->prepare("SELECT `seo` FROM `page_settings` WHERE `resellerid`=? LIMIT 1"); - $query->execute(array($reseller_id)); - $seo = $query->fetchColumn(); - $table = array(); - $getParams = ''; - $s = 1; - $m = 1; - if ($ui->id('spam',1, 'get')==1) { - $s = 0; - $getParams='&spam=1'; - $AND="AND `markedSpam`='Y'"; - } else if ($ui->id('mod',1, 'get')==1) { - $m = 0; - $getParams='&mod=1'; - $AND="AND `markedSpam`='N' AND `moderateAccepted`='N'"; - } else { - $AND="AND `markedSpam`='N' AND `moderateAccepted`='Y'"; - } - $query = $sql->prepare("SELECT COUNT(`commentID`) AS `amount` FROM `page_comments` WHERE `resellerID`=? $AND"); - $query->execute(array($reseller_id)); - $colcount = $query->fetchColumn(); - if ($start>$colcount ) { - if (isset($amount)) { - $start = $colcount-$amount; - } else { - $start = $colcount-20; - } - if ($start<0) { - $start = 0; - } - } - $query = $sql->prepare("SELECT COUNT(`commentID`) AS `amount` FROM `page_comments` WHERE `resellerID`=?"); - $query->execute(array($reseller_id)); - $totalCount = $query->fetchColumn(); - $query = $sql->prepare("SELECT COUNT(`commentID`) AS `amount` FROM `page_comments` WHERE `resellerID`=? AND `markedSpam`='N' AND `moderateAccepted`='N'"); - $query->execute(array($reseller_id)); - $moderationExpectedCount = $query->fetchColumn(); - $query = $sql->prepare("SELECT COUNT(`commentID`) AS `amount` FROM `page_comments` WHERE `resellerID`=? AND `markedSpam`='Y'"); - $query->execute(array($reseller_id)); - $spamCount = $query->fetchColumn(); - $next = $start+$amount; - if ($colcount>$next) { - $vor = $start+$amount; - } else { - $vor = $start; - } - $back = $start - $amount; - if ($back>=0){ - $zur = $start - $amount; - } else { - $zur = $start; - } - $o = $ui->st('o', 'get'); - if ($ui->st('o', 'get') == 'dt') { - $orderby = 't.`title` DESC'; - } else if ($ui->st('o', 'get') == 'at') { - $orderby = 't.`title` ASC'; - } else if ($ui->st('o', 'get') == 'dd') { - $orderby = 'c.`date` DESC'; - } else if ($ui->st('o', 'get') == 'ad') { - $orderby = 'c.`date` ASC'; - } else if ($ui->st('o', 'get') == 'dn') { - $orderby = 'c.`authorname` DESC'; - } else if ($ui->st('o', 'get') == 'an') { - $orderby = 'c.`authorname` ASC'; - } else if ($ui->st('o', 'get') == 'ds') { - $orderby = 'c.`markedSpam` DESC'; - } else if ($ui->st('o', 'get') == 'as') { - $orderby = 'c.`markedSpam` ASC'; - } else if ($ui->st('o', 'get') == 'dm') { - $orderby = 'c.`moderateAccepted` DESC'; - } else if ($ui->st('o', 'get') == 'am') { - $orderby = 'c.`moderateAccepted` ASC'; - } else if ($ui->st('o', 'get') == 'di') { - $orderby = 'c.`commentID` DESC'; - } else { - $orderby = 'c.`commentID` ASC'; - } - $query = $sql->prepare("SELECT t.`pageid`,t.`language`,t.`title`,c.`commentID`,c.`date`,c.`authorname`,c.`markedSpam`,c.`spamReason`,c.`moderateAccepted`,c.`comment` FROM `page_comments` c LEFT JOIN `page_pages_text` t ON c.`pageTextID`=t.`id` WHERE c.`resellerID`=? $AND ORDER BY $orderby"); - $query->execute(array($reseller_id)); - while ($row = $query->fetch(PDO::FETCH_ASSOC)) { - if (!isset($titleLanguages[$row['language']])) { - $titleLanguages[$row['language']] = array('page' => getlanguagefile('page', $row['language'],0),'general' => getlanguagefile('general', $row['language'],0)); - } - $commentDate='m.d.Y H:i'; - if ($user_language == 'de') $commentDate='d.m.Y H:i'; - $moderated = $gsprache->no; - if ($row['moderateAccepted'] == 'N') $moderated = $gsprache->yes; - $spam = $gsprache->no; - if ($row['markedSpam'] == 'Y') $spam = $gsprache->yes; - if ($seo== 'N') { - $link = $page_url.'/index.php?site=news&id='.$row['pageid']; - } else { - $link = $page_url. '/' . $row['language'] . '/' . szrp($titleLanguages[$row['language']]['general']->news) . '/' . szrp($row['title']) . '/'; - } - $table[] = array('pageid' => $row['pageid'], 'title' => htmlentities($row['title']),'comment' => htmlentities($row['comment']),'commentID' => $row['commentID'], 'date' => date($commentDate,strtotime($row['date'])),'authorname' => htmlentities($row['authorname']),'moderated' => $moderated,'spam' => $spam,'spamReason' => $row['spamReason'], 'link' => $link); - } - $pageamount = ceil($colcount / $amount); - $link='1'; - } else { - $link .= '&p=0'.$getParams.'">1'; - } - $pages[] = $link; - $i = 2; - while ($i<=$pageamount) { - $selectpage = ($i - 1) * $amount; - if ($start==$selectpage) { - $pages[] = '' . $i . ''; - } else { - $pages[] = '' . $i . ''; - } - $i++; - } - $pages=implode(', ',$pages); + + configureDateTables('-1', '1, "desc"', 'ajax.php?w=datatable&d=pagecomments'); + $template_file = 'admin_page_comments_list.tpl'; } \ No newline at end of file diff --git a/web/stuff/ajax/datatable_pagecomments.php b/web/stuff/ajax/datatable_pagecomments.php new file mode 100644 index 00000000..c7b334ed --- /dev/null +++ b/web/stuff/ajax/datatable_pagecomments.php @@ -0,0 +1,110 @@ + + * + * This file is part of Easy-WI. + * + * Easy-WI is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Easy-WI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more detail + * + * You should have received a copy of the GNU General Public License + * along with Easy-WI. If not, see . + * + * Diese Datei ist Teil von Easy-WI. + * + * Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen + * der GNU General Public License, wie von der Free Software Foundation, + * Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren + * veroeffentlichten Version, weiterverbreiten und/oder modifizieren. + * + * Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber + * OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite + * Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK. + * Siehe die GNU General Public License fuer weitere Detail + * + * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + * Programm erhalten haben. Wenn nicht, siehe . + */ + +if (!defined('AJAXINCLUDED')) { + die('Do not access directly!'); +} + +$query = $sql->prepare("SELECT COUNT(1) AS `amount` FROM `page_comments` WHERE `resellerID`=?"); +$query->execute(array($resellerLockupID)); + +$array['iTotalRecords'] = $query->fetchColumn(); + +if ($sSearch) { + + $toLower = strtolower($sSearch); + + $statusQuery = array(); + + if (strpos(strtolower($gsprache->yes), $toLower) !== false) { + $statusQuery[] = "OR c.`markedSpam`='Y'"; + $statusQuery[] = "OR c.`moderateAccepted`='Y'"; + } + + if (strpos(strtolower($gsprache->no), $toLower) !== false) { + $statusQuery[] = "OR c.`markedSpam`='N'"; + $statusQuery[] = "OR c.`moderateAccepted`='N'"; + } + + $statusQuery = (count($statusQuery) > 0) ? implode(' ', $statusQuery) : ''; + + $query = $sql->prepare("SELECT COUNT(1) AS `amount` FROM `page_comments` c LEFT JOIN `page_pages_text` t ON c.`pageTextID`=t.`id` WHERE c.`resellerID`=:reseller_id AND (t.`title` LIKE :search OR c.`commentID` LIKE :search OR c.`authorname` LIKE :search OR c.`date` LIKE :search {$statusQuery})"); + $query->execute(array(':search' => '%' . $sSearch . '%',':reseller_id' => $resellerLockupID)); + $array['iTotalDisplayRecords'] = $query->fetchColumn(); +} else { + $array['iTotalDisplayRecords'] = $array['iTotalRecords']; +} + +$orderFields = array(0 => 't.`title`', 1 => 'c.`commentID`', 2 => 'c.`authorname`', 3 => 'c.`date`', 4 => 'c.`moderateAccepted`', 5 => 'c.`markedSpam`'); + +if (isset($orderFields[$iSortCol]) and is_array($orderFields[$iSortCol])) { + $orderBy = implode(' ' . $sSortDir . ', ', $orderFields[$iSortCol]) . ' ' . $sSortDir; +} else if (isset($orderFields[$iSortCol]) and !is_array($orderFields[$iSortCol])) { + $orderBy = $orderFields[$iSortCol] . ' ' . $sSortDir; +} else { + $orderBy = 'c.`commentID` DESC'; +} + +$query = $sql->prepare("SELECT `seo` FROM `page_settings` WHERE `resellerid`=? LIMIT 1"); +$query->execute(array($resellerLockupID)); +$seoActive = $query->fetchColumn(); + +if ($sSearch) { + $query = $sql->prepare("SELECT t.`pageid`,t.`language`,t.`title`,c.`commentID`,c.`date`,c.`authorname`,c.`markedSpam`,c.`moderateAccepted` FROM `page_comments` c LEFT JOIN `page_pages_text` t ON c.`pageTextID`=t.`id` WHERE c.`resellerID`=:reseller_id AND (t.`title` LIKE :search OR c.`commentID` LIKE :search OR c.`authorname` LIKE :search OR c.`date` LIKE :search {$statusQuery}) ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array(':search' => '%' . $sSearch . '%', ':reseller_id' => $resellerLockupID)); +} else { + $query = $sql->prepare("SELECT t.`pageid`,t.`language`,t.`title`,c.`commentID`,c.`date`,c.`authorname`,c.`markedSpam`,c.`moderateAccepted` FROM `page_comments` c LEFT JOIN `page_pages_text` t ON c.`pageTextID`=t.`id` WHERE c.`resellerID`=? ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array($resellerLockupID)); +} + +while ($row = $query->fetch(PDO::FETCH_ASSOC)) { + + if (!isset($titleLanguages[$row['language']])) { + $titleLanguages[$row['language']] = array( + 'page' => getlanguagefile('page', $row['language'], 0), + 'general' => getlanguagefile('general', $row['language'], 0) + ); + } + + $moderated = ($row['moderateAccepted'] == 'N') ? $gsprache->yes : $gsprache->no; + $spam = ($row['markedSpam'] == 'Y') ? $gsprache->yes : $gsprache->no; + $link = ($seoActive == 'N') ? $page_url . '/index.php?site=news&id=' . $row['pageid'] : $page_url . '/' . $row['language'] . '/' . szrp($titleLanguages[$row['language']]['general']->news) . '/' . szrp($row['title']) . '/'; + + $array['aaData'][] = array('' . $row['title'] . '', $row['commentID'], $row['authorname'], $row['date'], (string) $moderated, (string) $spam, returnButton($template_to_use, 'ajax_admin_buttons_dl.tpl', 'pc', 'dl', $row['commentID'], $gsprache->del) . ' ' . returnButton($template_to_use, 'ajax_admin_buttons_md.tpl', 'pc', 'md', $row['commentID'], $gsprache->mod)); +} \ No newline at end of file diff --git a/web/template/default/admin/admin_page_comments_list.tpl b/web/template/default/admin/admin_page_comments_list.tpl index 030a4953..b74abdb1 100644 --- a/web/template/default/admin/admin_page_comments_list.tpl +++ b/web/template/default/admin/admin_page_comments_list.tpl @@ -1,59 +1,45 @@ -
-
- +
+

comments;?>

+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
URLIDauthor;?>date;?>moderate;?>Spamaction;?>
URLIDauthor;?>date;?>moderate;?>Spamaction;?>
+
+
+
-
-
-
-

Total ()

- &o=&spam=">Spam ()id('spam',1,'get')==1) echo ' ';?>, - &o=&mod=">moderate;?> ()id('mod',1,'get')==1) echo ' ';?> -
-
-
-
- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
&p=&o=">URL&p=&o=">author;?>&p=&o=">ID&p=&o=">date;?>&p=&o=">moderate;?>&p=&o=">Spamdel;?>mod;?>
-
-
\ No newline at end of file + \ No newline at end of file diff --git a/web/template/default/admin/admin_page_comments_md.tpl b/web/template/default/admin/admin_page_comments_md.tpl index 9a3271fe..b0932d37 100644 --- a/web/template/default/admin/admin_page_comments_md.tpl +++ b/web/template/default/admin/admin_page_comments_md.tpl @@ -1,71 +1,97 @@ -
-
- +
+

comments;?>

+ +
+ +
+ + +
+
+
+ +
+ + + + +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + + +
+
+
-
-
-
-
-
author;?>
-
()
-
IP
-
-
DNS
-
-
date;?>
-
- -
Spam
-
- -
-
-
-
-
-
- - -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
\ No newline at end of file + \ No newline at end of file