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 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ URL |
+ ID |
+ author;?> |
+ date;?> |
+ moderate;?> |
+ Spam |
+ action;?> |
+
+
+
+
+ URL |
+ ID |
+ author;?> |
+ date;?> |
+ moderate;?> |
+ Spam |
+ action;?> |
+
+
+
+
+
+
-
-
-
-
-
-
-
\ 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 @@
-
-
-
-
-
- - author;?>
- - ()
- - IP
-
- - DNS
-
- - date;?>
-
-
- - Spam
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file