PHPFusion\Forums\Admin\ForumAdminView::prune_forum_view PHP Метод

prune_forum_view() приватный Метод

private prune_forum_view ( )
    private function prune_forum_view()
    {
        global $aidlink;
        if (!isset($_POST['prune_forum']) && (isset($_GET['action']) && $_GET['action'] == "prune") && (isset($_GET['forum_id']) && isnum($_GET['forum_id']))) {
            $result = dbquery("SELECT forum_name FROM " . DB_FORUMS . " WHERE forum_id='" . $_GET['forum_id'] . "' AND forum_cat!='0'");
            if (dbrows($result) > 0) {
                $data = dbarray($result);
                opentable(self::$locale['600'] . ": " . $data['forum_name']);
                echo "<form name='prune_form' method='post' action='" . FUSION_SELF . $aidlink . "&amp;action=prune&amp;forum_id=" . $_GET['forum_id'] . "'>\n";
                echo "<div style='text-align:center'>\n";
                echo self::$locale['601'] . "<br />\n" . self::$locale['602'] . "<br /><br />\n";
                echo self::$locale['603'] . "<select name='prune_time' class='textbox'>\n";
                echo "<option value='7'>1 " . self::$locale['604'] . "</option>\n";
                echo "<option value='14'>2 " . self::$locale['605'] . "</option>\n";
                echo "<option value='30'>1 " . self::$locale['606'] . "</option>\n";
                echo "<option value='60'>2 " . self::$locale['607'] . "</option>\n";
                echo "<option value='90'>3 " . self::$locale['607'] . "</option>\n";
                echo "<option value='120'>4 " . self::$locale['607'] . "</option>\n";
                echo "<option value='150'>5 " . self::$locale['607'] . "</option>\n";
                echo "<option value='180' selected='selected'>6 " . self::$locale['607'] . "</option>\n";
                echo "</select><br /><br />\n";
                echo "<input type='submit' name='prune_forum' value='" . self::$locale['600'] . "' class='button' / onclick=\"return confirm('" . self::$locale['612'] . "');\">\n";
                echo "</div>\n</form>\n";
                closetable();
            }
        } elseif (isset($_POST['prune_forum']) && (isset($_GET['action']) && $_GET['action'] == "prune") && (isset($_GET['forum_id']) && isnum($_GET['forum_id'])) && (isset($_POST['prune_time']) && isnum($_POST['prune_time']))) {
            $result = dbquery("SELECT forum_name FROM " . DB_FORUMS . " WHERE forum_id='" . $_GET['forum_id'] . "' AND forum_cat!='0'");
            if (dbrows($result)) {
                $data = dbarray($result);
                opentable(self::$locale['600'] . ": " . $data['forum_name']);
                echo "<div style='text-align:center'>\n<strong>" . self::$locale['608'] . "</strong></br /></br />\n";
                $prune_time = time() - 86400 * $_POST['prune_time'];
                // delete attachments.
                $result = dbquery("SELECT post_id, post_datestamp FROM " . DB_FORUM_POSTS . " WHERE forum_id='" . $_GET['forum_id'] . "' AND post_datestamp < '" . $prune_time . "'");
                $delattach = 0;
                if (dbrows($result)) {
                    while ($data = dbarray($result)) {
                        // delete all attachments
                        $result2 = dbquery("SELECT attach_name FROM " . DB_FORUM_ATTACHMENTS . " WHERE post_id='" . $data['post_id'] . "'");
                        if (dbrows($result2) != 0) {
                            $delattach++;
                            $attach = dbarray($result2);
                            @unlink(FORUM . "attachments/" . $attach['attach_name']);
                            $result3 = dbquery("DELETE FROM " . DB_FORUM_ATTACHMENTS . " WHERE post_id='" . $data['post_id'] . "'");
                        }
                    }
                }
                // delete posts.
                $result = dbquery("DELETE FROM " . DB_FORUM_POSTS . " WHERE forum_id='" . $_GET['forum_id'] . "' AND post_datestamp < '" . $prune_time . "'");
                echo self::$locale['609'] . mysql_affected_rows() . "<br />";
                echo self::$locale['610'] . $delattach . "<br />";
                // delete follows on threads
                $result = dbquery("SELECT thread_id,thread_lastpost FROM " . DB_FORUM_THREADS . " WHERE  forum_id='" . $_GET['forum_id'] . "' AND thread_lastpost < '" . $prune_time . "'");
                if (dbrows($result)) {
                    while ($data = dbarray($result)) {
                        $result2 = dbquery("DELETE FROM " . DB_FORUM_THREAD_NOTIFY . " WHERE thread_id='" . $data['thread_id'] . "'");
                    }
                }
                // delete threads
                $result = dbquery("DELETE FROM " . DB_FORUM_THREADS . " WHERE forum_id='" . $_GET['forum_id'] . "' AND  thread_lastpost < '" . $prune_time . "'");
                // update last post on forum
                $result = dbquery("SELECT thread_lastpost, thread_lastuser FROM " . DB_FORUM_THREADS . " WHERE forum_id='" . $_GET['forum_id'] . "' ORDER BY thread_lastpost DESC LIMIT 0,1");
                // get last thread_lastpost.
                if (dbrows($result)) {
                    $data = dbarray($result);
                    $result = dbquery("UPDATE " . DB_FORUMS . " SET forum_lastpost='" . $data['thread_lastpost'] . "', forum_lastuser='" . $data['thread_lastuser'] . "' WHERE forum_id='" . $_GET['forum_id'] . "'");
                } else {
                    $result = dbquery("UPDATE " . DB_FORUMS . " SET forum_lastpost='0', forum_lastuser='0' WHERE forum_id='" . $_GET['forum_id'] . "'");
                }
                echo self::$locale['611'] . mysql_affected_rows() . "\n</div>";
                // calculate and update postcount on each specific threads -  this is the remaining.
                $result = dbquery("SELECT COUNT(post_id) AS postcount, thread_id FROM " . DB_FORUM_POSTS . " WHERE forum_id='" . $_GET['forum_id'] . "' GROUP BY thread_id");
                if (dbrows($result)) {
                    while ($data = dbarray($result)) {
                        dbquery("UPDATE " . DB_FORUM_THREADS . " SET thread_postcount='" . $data['postcount'] . "' WHERE thread_id='" . $data['thread_id'] . "'");
                    }
                }
                // calculate and update total combined postcount on all threads to forum
                $result = dbquery("SELECT SUM(thread_postcount) AS postcount, forum_id FROM " . DB_FORUM_THREADS . "\n\t\t\tWHERE forum_id='" . $_GET['forum_id'] . "' GROUP BY forum_id");
                if (dbrows($result)) {
                    while ($data = dbarray($result)) {
                        dbquery("UPDATE " . DB_FORUMS . " SET forum_postcount='" . $data['postcount'] . "' WHERE forum_id='" . $data['forum_id'] . "'");
                    }
                }
                // calculate and update total threads to forum
                $result = dbquery("SELECT COUNT(thread_id) AS threadcount, forum_id FROM " . DB_FORUM_THREADS . "\n\t\t\tWHERE forum_id='" . $_GET['forum_id'] . "' GROUP BY forum_id");
                if (dbrows($result)) {
                    while ($data = dbarray($result)) {
                        dbquery("UPDATE " . DB_FORUMS . " SET forum_threadcount='" . $data['threadcount'] . "' WHERE forum_id='" . $data['forum_id'] . "'");
                    }
                }
                // but users posts...?
                closetable();
            }
        }
    }