Example #1
0
function gwolle_gb_ajax_callback()
{
    if (function_exists('current_user_can') && !current_user_can('moderate_comments')) {
        echo "error";
        die;
    }
    check_ajax_referer('gwolle_gb_ajax', 'security');
    if (isset($_POST['id'])) {
        $id = intval($_POST['id']);
    }
    if (isset($_POST['setter'])) {
        $setter = strval($_POST['setter']);
    }
    if (isset($id) && $id > 0 && isset($setter) && strlen($setter) > 0) {
        $entry = new gwolle_gb_entry();
        $result = $entry->load($id);
        if (!$result) {
            echo "error, no such entry.";
            die;
        }
        switch ($setter) {
            case 'uncheck':
                if ($entry->get_ischecked() == 1) {
                    $entry->set_ischecked(false);
                    $result = $entry->save();
                    if ($result) {
                        $response = "uncheck";
                        gwolle_gb_add_log_entry($entry->get_id(), 'entry-unchecked');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
            case 'check':
                if ($entry->get_ischecked() == 0) {
                    $entry->set_ischecked(true);
                    $user_id = get_current_user_id();
                    // returns 0 if no current user
                    $entry->set_checkedby($user_id);
                    $result = $entry->save();
                    if ($result) {
                        $response = "check";
                        gwolle_gb_add_log_entry($entry->get_id(), 'entry-checked');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
            case 'unspam':
                if ($entry->get_isspam() == 1) {
                    $entry->set_isspam(false);
                    $result = $entry->save();
                    if ($result) {
                        $response = "unspam";
                        gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-not-spam');
                        gwolle_gb_akismet($entry, 'submit-ham');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
            case 'spam':
                if ($entry->get_isspam() == 0) {
                    $entry->set_isspam(true);
                    $result = $entry->save();
                    if ($result) {
                        $response = "spam";
                        gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-spam');
                        gwolle_gb_akismet($entry, 'submit-spam');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
            case 'untrash':
                if ($entry->get_istrash() == 1) {
                    $entry->set_istrash(false);
                    $result = $entry->save();
                    if ($result) {
                        $response = "untrash";
                        gwolle_gb_add_log_entry($entry->get_id(), 'entry-untrashed');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
            case 'trash':
                if ($entry->get_istrash() == 0) {
                    $entry->set_istrash(true);
                    $result = $entry->save();
                    if ($result) {
                        $response = "trash";
                        gwolle_gb_add_log_entry($entry->get_id(), 'entry-trashed');
                    } else {
                        $response = "error";
                    }
                } else {
                    $response = "nochange";
                }
                break;
        }
    } else {
        $response = "error";
    }
    gwolle_gb_clear_cache();
    echo $response;
    die;
    // this is required to return a proper result
}
Example #2
0
function gwolle_gb_page_entries()
{
    if (function_exists('current_user_can') && !current_user_can('moderate_comments')) {
        die(__('Cheatin’ uh?', GWOLLE_GB_TEXTDOMAIN));
    }
    if (!get_option('gwolle_gb_version')) {
        // FIXME: do this on activation
        gwolle_gb_installSplash();
    } else {
        $gwolle_gb_errors = '';
        $gwolle_gb_messages = '';
        if (isset($_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'entries') {
            $action = '';
            if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'check' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'check') {
                $action = 'check';
            } else {
                if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'uncheck' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'uncheck') {
                    $action = 'uncheck';
                } else {
                    if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'spam' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'spam') {
                        $action = 'spam';
                    } else {
                        if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'no-spam' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'no-spam') {
                            $action = 'no-spam';
                        } else {
                            if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'akismet' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'akismet') {
                                $action = 'akismet';
                            } else {
                                if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'trash' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'trash') {
                                    $action = 'trash';
                                } else {
                                    if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'untrash' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'untrash') {
                                        $action = 'untrash';
                                    } else {
                                        if (isset($_POST['massEditAction1']) && $_POST['massEditAction1'] == 'remove' || isset($_POST['massEditAction2']) && $_POST['massEditAction2'] == 'remove') {
                                            $action = 'remove';
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if ($action != '') {
                // Initialize variables to generate messages with
                $entries_handled = 0;
                $entries_not_handled = 0;
                $akismet_spam = 0;
                $akismet_not_spam = 0;
                $akismet_already_spam = 0;
                $akismet_already_not_spam = 0;
                /* Handle the $_POST entries */
                foreach (array_keys($_POST) as $postElementName) {
                    if (strpos($postElementName, 'check') > -1 && !strpos($postElementName, '-all-') && $_POST[$postElementName] == 'on') {
                        $entry_id = str_replace('check-', '', $postElementName);
                        $entry_id = intval($entry_id);
                        if (isset($entry_id) && $entry_id > 0) {
                            $entry = new gwolle_gb_entry();
                            $result = $entry->load($entry_id);
                            if ($result) {
                                if ($action == 'check') {
                                    if ($entry->get_ischecked() == 0) {
                                        $entry->set_ischecked(true);
                                        $user_id = get_current_user_id();
                                        // returns 0 if no current user
                                        $entry->set_checkedby($user_id);
                                        gwolle_gb_add_log_entry($entry->get_id(), 'entry-checked');
                                        $result = $entry->save();
                                        if ($result) {
                                            $entries_handled++;
                                        } else {
                                            $entries_not_handled++;
                                        }
                                    } else {
                                        $entries_not_handled++;
                                    }
                                } else {
                                    if ($action == 'uncheck') {
                                        if ($entry->get_ischecked() == 1) {
                                            $entry->set_ischecked(false);
                                            $user_id = get_current_user_id();
                                            // returns 0 if no current user
                                            $entry->set_checkedby($user_id);
                                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-unchecked');
                                            $result = $entry->save();
                                            if ($result) {
                                                $entries_handled++;
                                            } else {
                                                $entries_not_handled++;
                                            }
                                        } else {
                                            $entries_not_handled++;
                                        }
                                    } else {
                                        if ($action == 'spam') {
                                            if ($entry->get_isspam() == 0) {
                                                $entry->set_isspam(true);
                                                if (get_option('gwolle_gb-akismet-active', 'false') == 'true') {
                                                    gwolle_gb_akismet($entry, 'submit-spam');
                                                }
                                                gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-spam');
                                                $result = $entry->save();
                                                if ($result) {
                                                    $entries_handled++;
                                                } else {
                                                    $entries_not_handled++;
                                                }
                                            } else {
                                                $entries_not_handled++;
                                            }
                                        } else {
                                            if ($action == 'no-spam') {
                                                if ($entry->get_isspam() == 1) {
                                                    $entry->set_isspam(false);
                                                    if (get_option('gwolle_gb-akismet-active', 'false') == 'true') {
                                                        gwolle_gb_akismet($entry, 'submit-ham');
                                                    }
                                                    gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-not-spam');
                                                    $result = $entry->save();
                                                    if ($result) {
                                                        $entries_handled++;
                                                    } else {
                                                        $entries_not_handled++;
                                                    }
                                                } else {
                                                    $entries_not_handled++;
                                                }
                                            } else {
                                                if ($action == 'akismet') {
                                                    /* Check for spam and set accordingly */
                                                    if (get_option('gwolle_gb-akismet-active', 'false') == 'true') {
                                                        $isspam = gwolle_gb_akismet($entry, 'comment-check');
                                                        if ($isspam) {
                                                            // Returned true, so considered spam
                                                            if ($entry->get_isspam() == 0) {
                                                                $entry->set_isspam(true);
                                                                gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-spam');
                                                                $result = $entry->save();
                                                                if ($result) {
                                                                    $akismet_spam++;
                                                                } else {
                                                                    $akismet_not_spam++;
                                                                }
                                                            } else {
                                                                $akismet_already_spam++;
                                                            }
                                                        } else {
                                                            if ($entry->get_isspam() == 1) {
                                                                $entry->set_isspam(false);
                                                                gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-not-spam');
                                                                $result = $entry->save();
                                                                if ($result) {
                                                                    $akismet_not_spam++;
                                                                } else {
                                                                    $akismet_spam++;
                                                                }
                                                            } else {
                                                                $akismet_already_not_spam++;
                                                            }
                                                        }
                                                    }
                                                } else {
                                                    if ($action == 'trash') {
                                                        if ($entry->get_istrash() == 0) {
                                                            $entry->set_istrash(true);
                                                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-trashed');
                                                            $result = $entry->save();
                                                            if ($result) {
                                                                $entries_handled++;
                                                            } else {
                                                                $entries_not_handled++;
                                                            }
                                                        } else {
                                                            $entries_not_handled++;
                                                        }
                                                    } else {
                                                        if ($action == 'untrash') {
                                                            if ($entry->get_istrash() == 1) {
                                                                $entry->set_istrash(false);
                                                                gwolle_gb_add_log_entry($entry->get_id(), 'entry-untrashed');
                                                                $result = $entry->save();
                                                                if ($result) {
                                                                    $entries_handled++;
                                                                } else {
                                                                    $entries_not_handled++;
                                                                }
                                                            } else {
                                                                $entries_not_handled++;
                                                            }
                                                        } else {
                                                            if ($action == 'remove') {
                                                                $result = $entry->delete();
                                                                if ($result) {
                                                                    $entries_handled++;
                                                                } else {
                                                                    $entries_not_handled++;
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            } else {
                                // no result on load()
                                $entries_not_handled++;
                            }
                        } else {
                            // entry_id is not set or not > 0
                            $entries_not_handled++;
                        }
                    }
                    // no entry with the check-'entry_id' input, continue
                }
                // foreach
                /* Construct Message */
                if ($action == 'check') {
                    if ($entries_handled == 1) {
                        $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry checked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                    } else {
                        if ($entries_handled > 1) {
                            $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries checked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                        } else {
                            $gwolle_gb_messages .= '<p>' . __('No entries checked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                        }
                    }
                } else {
                    if ($action == 'uncheck') {
                        if ($entries_handled == 1) {
                            $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry unchecked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                        } else {
                            if ($entries_handled > 1) {
                                $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries unchecked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                            } else {
                                $gwolle_gb_messages .= '<p>' . __('No entries unchecked.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                            }
                        }
                    } else {
                        if ($action == 'spam') {
                            if ($entries_handled == 1) {
                                $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry marked as spam and submitted to Akismet as spam (if Akismet was enabled).', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                            } else {
                                if ($entries_handled > 1) {
                                    $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries marked as spam and submitted to Akismet as spam (if Akismet was enabled).', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                } else {
                                    $gwolle_gb_messages .= '<p>' . __('No entries marked as spam.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                }
                            }
                        } else {
                            if ($action == 'no-spam') {
                                if ($entries_handled == 1) {
                                    $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry marked as not spam and submitted to Akismet as ham (if Akismet was enabled).', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                } else {
                                    if ($entries_handled > 1) {
                                        $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries marked as not spam and submitted to Akismet as ham (if Akismet was enabled).', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    } else {
                                        $gwolle_gb_messages .= '<p>' . __('No entries marked as not spam.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    }
                                }
                            } else {
                                if ($action == 'akismet') {
                                    if ($akismet_spam == 1) {
                                        $gwolle_gb_messages .= '<p>' . $akismet_spam . " " . __('entry considered spam and marked as such.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    } else {
                                        if ($akismet_spam > 1) {
                                            $gwolle_gb_messages .= '<p>' . $akismet_spam . " " . __('entries considered spam and marked as such.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                        }
                                    }
                                    if ($akismet_not_spam == 1) {
                                        $gwolle_gb_messages .= '<p>' . $akismet_not_spam . " " . __('entry not considered spam and marked as such.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    } else {
                                        if ($akismet_not_spam > 1) {
                                            $gwolle_gb_messages .= '<p>' . $akismet_not_spam . " " . __('entries not considered spam and marked as such.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                        }
                                    }
                                    if ($akismet_already_spam == 1) {
                                        $gwolle_gb_messages .= '<p>' . $akismet_already_spam . " " . __('entry already considered spam and not changed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    } else {
                                        if ($akismet_already_spam > 1) {
                                            $gwolle_gb_messages .= '<p>' . $akismet_already_spam . " " . __('entries already considered spam and not changed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                        }
                                    }
                                    if ($akismet_already_not_spam == 1) {
                                        $gwolle_gb_messages .= '<p>' . $akismet_already_not_spam . " " . __('entry already considered not spam and not changed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                    } else {
                                        if ($akismet_already_not_spam > 1) {
                                            $gwolle_gb_messages .= '<p>' . $akismet_already_not_spam . " " . __('entries already considered not spam and not changed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                        }
                                    }
                                } else {
                                    if ($action == 'trash') {
                                        if ($entries_handled == 1) {
                                            $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry moved to trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                        } else {
                                            if ($entries_handled > 1) {
                                                $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries moved to trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                            } else {
                                                $gwolle_gb_messages .= '<p>' . __('No entries moved to trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                            }
                                        }
                                    } else {
                                        if ($action == 'untrash') {
                                            if ($entries_handled == 1) {
                                                $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry recovered from trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                            } else {
                                                if ($entries_handled > 1) {
                                                    $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries recovered from trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                                } else {
                                                    $gwolle_gb_messages .= '<p>' . __('No entries recovered from trash.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                                }
                                            }
                                        } else {
                                            if ($action == 'remove') {
                                                if ($entries_handled == 1) {
                                                    $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entry removed permanently.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                                } else {
                                                    if ($entries_handled > 1) {
                                                        $gwolle_gb_messages .= '<p>' . $entries_handled . " " . __('entries removed permanently.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                                    } else {
                                                        $gwolle_gb_messages .= '<p>' . __('No entries permanently removed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (isset($_POST['delete_all']) || isset($_POST['delete_all2'])) {
                // Delete all entries in spam or trash
                if (isset($_POST['show']) && in_array($_POST['show'], array('spam', 'trash'))) {
                    $delstatus = $_POST['show'];
                    $deleted = gwolle_gb_del_entries($delstatus);
                    if ($deleted == 1) {
                        $gwolle_gb_messages .= '<p>' . $deleted . " " . __('entry removed permanently.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                    } else {
                        if ($deleted > 1) {
                            $gwolle_gb_messages .= '<p>' . $deleted . " " . __('entries removed permanently.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                        } else {
                            $gwolle_gb_messages .= '<p>' . __('No entries permanently removed.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
                        }
                    }
                }
            }
        }
        // Get entry counts
        $count = array();
        $count['checked'] = gwolle_gb_get_entry_count(array('checked' => 'checked', 'trash' => 'notrash', 'spam' => 'nospam'));
        $count['unchecked'] = gwolle_gb_get_entry_count(array('checked' => 'unchecked', 'trash' => 'notrash', 'spam' => 'nospam'));
        $count['spam'] = gwolle_gb_get_entry_count(array('spam' => 'spam'));
        $count['trash'] = gwolle_gb_get_entry_count(array('trash' => 'trash'));
        $count['all'] = gwolle_gb_get_entry_count(array('all' => 'all'));
        $show = isset($_REQUEST['show']) && in_array($_REQUEST['show'], array('checked', 'unchecked', 'spam', 'trash')) ? $_REQUEST['show'] : 'all';
        $entries_per_page = get_option('gwolle_gb-entries_per_page', 20);
        // If Akimet has not been activated yet and the user is looking at the spam tell him to activate Akismet.
        if ($show == 'spam' && get_option('gwolle_gb-akismet-active', 'false') != 'true') {
            $gwolle_gb_messages .= '<p>' . __('Please activate Akismet if you want to battle spam.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
        }
        // Check if the requested page number is an integer > 0
        $pageNum = isset($_REQUEST['pageNum']) && $_REQUEST['pageNum'] && (int) $_REQUEST['pageNum'] > 0 ? (int) $_REQUEST['pageNum'] : 1;
        // Pagination: Calculate the number of pages.
        $countPages = ceil($count[$show] / $entries_per_page);
        if ($pageNum > $countPages) {
            $pageNum = 1;
            // page doesnot exist, return to first page
        }
        // Calculate Query
        if ($pageNum == 1 && $count[$show] > 0) {
            $mysqlFirstRow = 0;
        } elseif ($count[$show] == 0) {
            $mysqlFirstRow = 0;
        } else {
            $firstEntryNum = ($pageNum - 1) * $entries_per_page + 1;
            $mysqlFirstRow = $firstEntryNum - 1;
        }
        // Get the entries
        if ($show == 'checked') {
            $entries = gwolle_gb_get_entries(array('num_entries' => $entries_per_page, 'offset' => $mysqlFirstRow, 'checked' => 'checked', 'trash' => 'notrash', 'spam' => 'nospam'));
        } else {
            if ($show == 'unchecked') {
                $entries = gwolle_gb_get_entries(array('num_entries' => $entries_per_page, 'offset' => $mysqlFirstRow, 'checked' => 'unchecked', 'trash' => 'notrash', 'spam' => 'nospam'));
            } else {
                if ($show == 'spam') {
                    $entries = gwolle_gb_get_entries(array('num_entries' => $entries_per_page, 'offset' => $mysqlFirstRow, 'spam' => 'spam'));
                } else {
                    if ($show == 'trash') {
                        $entries = gwolle_gb_get_entries(array('num_entries' => $entries_per_page, 'offset' => $mysqlFirstRow, 'trash' => 'trash'));
                    } else {
                        $entries = gwolle_gb_get_entries(array('num_entries' => $entries_per_page, 'offset' => $mysqlFirstRow, 'all' => 'all'));
                    }
                }
            }
        }
        ?>

		<div class="wrap gwolle_gb">
			<div id="icon-gwolle-gb"><br /></div>
			<h1><?php 
        _e('Guestbook entries', GWOLLE_GB_TEXTDOMAIN);
        ?>
</h1>

			<?php 
        if ($gwolle_gb_messages) {
            echo '
					<div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' . $gwolle_gb_messages . '</div>';
        }
        // FIXME: add a searchform someday?
        ?>

			<form name="gwolle_gb_entries" id="gwolle_gb_entries" action="" method="POST" accept-charset="UTF-8">

				<input type="hidden" name="gwolle_gb_page" value="entries" />
				<!-- the following fields give us some information we're going to use processing the mass edit -->
				<input type="hidden" name="pageNum" value="<?php 
        echo $pageNum;
        ?>
">
				<input type="hidden" name="entriesOnThisPage" value="<?php 
        echo count($entries);
        ?>
">
				<input type="hidden" name="show" value="<?php 
        echo $show;
        ?>
">

				<ul class="subsubsub">
					<li><a href='admin.php?page=<?php 
        echo GWOLLE_GB_FOLDER;
        ?>
/entries.php' <?php 
        if ($show == 'all') {
            echo 'class="current"';
        }
        ?>
>
						<?php 
        _e('All', GWOLLE_GB_TEXTDOMAIN);
        ?>
 <span class="count">(<?php 
        echo $count['all'];
        ?>
)</span></a> |
					</li>
					<li><a href='admin.php?page=<?php 
        echo GWOLLE_GB_FOLDER;
        ?>
/entries.php&amp;show=checked' <?php 
        if ($show == 'checked') {
            echo 'class="current"';
        }
        ?>
>
						<?php 
        _e('Unlocked', GWOLLE_GB_TEXTDOMAIN);
        ?>
 <span class="count">(<?php 
        echo $count['checked'];
        ?>
)</span></a> |
					</li>
					<li><a href='admin.php?page=<?php 
        echo GWOLLE_GB_FOLDER;
        ?>
/entries.php&amp;show=unchecked' <?php 
        if ($show == 'unchecked') {
            echo 'class="current"';
        }
        ?>
><?php 
        _e('New', GWOLLE_GB_TEXTDOMAIN);
        ?>
 <span class="count">(<?php 
        echo $count['unchecked'];
        ?>
)</span></a> |
					</li>
					<li><a href='admin.php?page=<?php 
        echo GWOLLE_GB_FOLDER;
        ?>
/entries.php&amp;show=spam' <?php 
        if ($show == 'spam') {
            echo 'class="current"';
        }
        ?>
><?php 
        _e('Spam', GWOLLE_GB_TEXTDOMAIN);
        ?>
 <span class="count">(<?php 
        echo $count['spam'];
        ?>
)</span></a> |
					</li>
					<li><a href='admin.php?page=<?php 
        echo GWOLLE_GB_FOLDER;
        ?>
/entries.php&amp;show=trash' <?php 
        if ($show == 'trash') {
            echo 'class="current"';
        }
        ?>
><?php 
        _e('Trash', GWOLLE_GB_TEXTDOMAIN);
        ?>
 <span class="count">(<?php 
        echo $count['trash'];
        ?>
)</span></a>
					</li>
				</ul>

				<div class="tablenav">
					<div class="alignleft actions">
						<?php 
        $massEditControls_select = '<select name="massEditAction1">';
        $massEditControls = '<option value="-1" selected="selected">' . __('Mass edit actions', GWOLLE_GB_TEXTDOMAIN) . '</option>';
        if ($show == 'trash') {
            $massEditControls .= '
								<option value="untrash">' . __('Recover from trash', GWOLLE_GB_TEXTDOMAIN) . '</option>
								<option value="remove">' . __('Remove permanently', GWOLLE_GB_TEXTDOMAIN) . '</option>';
        } else {
            if ($show != 'checked') {
                $massEditControls .= '<option value="check">' . __('Mark as checked', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            }
            if ($show != 'unchecked') {
                $massEditControls .= '<option value="uncheck">' . __('Mark as not checked', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            }
            if ($show != 'spam') {
                $massEditControls .= '<option value="spam">' . __('Mark as spam', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            }
            $massEditControls .= '<option value="no-spam">' . __('Mark as not spam', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            if (get_option('gwolle_gb-akismet-active', 'false') == 'true') {
                $massEditControls .= '<option value="akismet">' . __('Check with Akismet', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            }
            $massEditControls .= '<option value="trash">' . __('Move to trash', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            if ($show == 'spam') {
                $massEditControls .= '<option value="remove">' . __('Remove permanently', GWOLLE_GB_TEXTDOMAIN) . '</option>';
            }
        }
        $massEditControls .= '</select>';
        $massEditControls .= '<input type="submit" value="' . esc_attr__('Apply', GWOLLE_GB_TEXTDOMAIN) . '" name="doaction" id="doaction" class="button-secondary action" />';
        $empty_button = '';
        if ($show == 'spam') {
            $empty_button = '<input type="submit" name="delete_all" id="delete_all" class="button apply" value="' . esc_attr__('Empty Spam', GWOLLE_GB_TEXTDOMAIN) . '"  />';
        } else {
            if ($show == 'trash') {
                $empty_button = '<input type="submit" name="delete_all" id="delete_all" class="button apply" value="' . esc_attr__('Empty Trash', GWOLLE_GB_TEXTDOMAIN) . '"  />';
            }
        }
        // Only show controls when there are entries
        if (is_array($entries) && !empty($entries)) {
            echo $massEditControls_select . $massEditControls . $empty_button;
        }
        ?>
					</div>

					<?php 
        $pagination = gwolle_gb_pagination_admin($pageNum, $countPages, $count, $show);
        echo $pagination;
        ?>
				</div>

				<div>
					<table class="widefat">
						<thead>
							<tr>
								<th scope="col" class="manage-column column-cb check-column"><input name="check-all-top" id="check-all-top" type="checkbox"></th>
								<th scope="col"><?php 
        _e('ID', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<?php 
        if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') {
            ?>
									<th scope="col">&nbsp;</th><!-- this is the icon-column -->
								<?php 
        }
        ?>
								<th scope="col"><?php 
        _e('Date', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Author', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Entry (excerpt)', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Action', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
							</tr>
						</thead>

						<tfoot>
							<tr>
								<th scope="col" class="manage-column column-cb check-column"><input name="check-all-bottom" id="check-all-bottom" type="checkbox"></th>
								<th scope="col"><?php 
        _e('ID', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<?php 
        if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') {
            ?>
									<th scope="col">&nbsp;</th><!-- this is the icon-column -->
								<?php 
        }
        ?>
								<th scope="col"><?php 
        _e('Date', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Author', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Entry (excerpt)', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
								<th scope="col"><?php 
        _e('Action', GWOLLE_GB_TEXTDOMAIN);
        ?>
</th>
							</tr>
						</tfoot>


						<tbody>
							<?php 
        $rowOdd = true;
        $html_output = '';
        if (!is_array($entries) || empty($entries)) {
            $colspan = get_option('gwolle_gb-showEntryIcons', 'true') === 'true' ? 7 : 6;
            $html_output .= '
									<tr>
										<td colspan="' . $colspan . '" align="center">
											<strong>' . __('No entries found.', GWOLLE_GB_TEXTDOMAIN) . '</strong>
										</td>
									</tr>';
        } else {
            foreach ($entries as $entry) {
                // rows have a different color.
                if ($rowOdd) {
                    $rowOdd = false;
                    $class = ' alternate';
                } else {
                    $rowOdd = true;
                    $class = '';
                }
                // Attach 'spam' to class if the entry is spam
                if ($entry->get_isspam() === 1) {
                    $class .= ' spam';
                } else {
                    $class .= ' nospam';
                }
                // Attach 'trash' to class if the entry is in trash
                if ($entry->get_istrash() === 1) {
                    $class .= ' trash';
                } else {
                    $class .= ' notrash';
                }
                // Attach 'checked/unchecked' to class
                if ($entry->get_ischecked() === 1) {
                    $class .= ' checked';
                } else {
                    $class .= ' unchecked';
                }
                // Attach 'visible/invisible' to class
                if ($entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0) {
                    $class .= ' invisible';
                } else {
                    $class .= ' visible';
                }
                // Add admin-entry class to an entry from an admin
                $author_id = $entry->get_author_id();
                $is_moderator = gwolle_gb_is_moderator($author_id);
                if ($is_moderator) {
                    $class .= ' admin-entry';
                }
                // Checkbox and ID columns
                $html_output .= '
										<tr id="entry_' . $entry->get_id() . '" class="entry ' . $class . '">
											<td class="check">
												<input name="check-' . $entry->get_id() . '" id="check-' . $entry->get_id() . '" type="checkbox">
											</td>
											<td class="id">' . $entry->get_id() . '</td>';
                // Optional Icon column where CSS is being used to show them or not
                if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') {
                    $html_output .= '
											<td class="entry-icons">
												<span class="visible-icon"></span>
												<span class="invisible-icon"></span>
												<span class="spam-icon"></span>
												<span class="trash-icon"></span>
												<span class="gwolle_gb_ajax"></span>
											</td>';
                }
                // Date column
                $html_output .= '
										<td class="entry-date">' . date_i18n(get_option('date_format'), $entry->get_datetime()) . ', ' . date_i18n(get_option('time_format'), $entry->get_datetime()) . '</td>';
                // Author column
                $author_name_html = gwolle_gb_get_author_name_html($entry);
                $html_output .= '
										<td class="entry-author-name"><span class="author-name">' . $author_name_html . '</span><br />' . '<span class="author-email">' . $entry->get_author_email() . '</span>' . '</td>';
                // Excerpt column
                $html_output .= '
										<td class="entry-content">
											<label for="check-' . $entry->get_id() . '">';
                $entry_content = gwolle_gb_get_excerpt($entry->get_content(), 17);
                if (get_option('gwolle_gb-showSmilies', 'true') === 'true') {
                    $entry_content = convert_smilies($entry_content);
                }
                $html_output .= $entry_content . '</label>
										</td>';
                // Actions column
                $html_output .= '
										<td class="gwolle_gb_actions">
											<span class="gwolle_gb_edit">
												<a href="admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id() . '" title="' . __('Edit entry', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Edit', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_check">&nbsp;|&nbsp;
												<a id="check_' . $entry->get_id() . '" href="#" class="vim-a" title="' . __('Check entry', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Check', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_uncheck">&nbsp;|&nbsp;
												<a id="uncheck_' . $entry->get_id() . '" href="#" class="vim-u" title="' . __('Uncheck entry', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Uncheck', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_spam">&nbsp;|&nbsp;
												<a id="spam_' . $entry->get_id() . '" href="#" class="vim-s vim-destructive" title="' . __('Mark entry as spam.', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Spam', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_unspam">&nbsp;|&nbsp;
												<a id="unspam_' . $entry->get_id() . '" href="#" class="vim-a" title="' . __('Mark entry as not-spam.', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Not spam', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_trash">&nbsp;|&nbsp;
												<a id="trash_' . $entry->get_id() . '" href="#" class="vim-d vim-destructive" title="' . __('Move entry to trash.', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Trash', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_untrash">&nbsp;|&nbsp;
												<a id="untrash_' . $entry->get_id() . '" href="#" class="vim-d" title="' . __('Recover entry from trash.', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Untrash', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
											<span class="gwolle_gb_ajax">&nbsp;|&nbsp;
												<a id="ajax_' . $entry->get_id() . '" href="#" class="ajax vim-d vim-destructive" title="' . __('Please wait...', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Wait...', GWOLLE_GB_TEXTDOMAIN) . '</a>
											</span>
										</td>
									</tr>';
            }
        }
        echo $html_output;
        ?>
						</tbody>
					</table>
				</div>

				<div class="tablenav">
					<div class="alignleft actions">
						<?php 
        $massEditControls_select = '<select name="massEditAction2">';
        $empty_button = '';
        if ($show == 'spam') {
            $empty_button = '<input type="submit" name="delete_all2" id="delete_all2" class="button apply" value="' . esc_attr__('Empty Spam', GWOLLE_GB_TEXTDOMAIN) . '"  />';
        } else {
            if ($show == 'trash') {
                $empty_button = '<input type="submit" name="delete_all2" id="delete_all2" class="button apply" value="' . esc_attr__('Empty Trash', GWOLLE_GB_TEXTDOMAIN) . '"  />';
            }
        }
        // Only show controls when there are entries
        if (is_array($entries) && !empty($entries)) {
            echo $massEditControls_select . $massEditControls . $empty_button;
        }
        ?>
					</div>

					<?php 
        echo $pagination;
        ?>

				</div>

			</form>

		</div>

		<?php 
    }
}
Example #3
0
function gwolle_gb_page_import()
{
    global $wpdb;
    $gwolle_gb_errors = '';
    $gwolle_gb_messages = '';
    //if ( WP_DEBUG ) { echo "_POST: "; var_dump($_POST); }
    if (function_exists('current_user_can') && !current_user_can('manage_options')) {
        die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
    }
    if (isset($_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'gwolle_gb_import') {
        if (isset($_POST['start_import_dms'])) {
            // Import all entries from DMSGuestbook
            // Does the table of DMSGuestbook exist?
            $sql = "\n\t\t\t\tSHOW\n\t\t\t\tTABLES\n\t\t\t\tLIKE '" . $wpdb->prefix . "dmsguestbook'";
            $foundTables = $wpdb->get_results($sql, ARRAY_A);
            if (isset($foundTables[0]) && in_array($wpdb->prefix . 'dmsguestbook', $foundTables[0])) {
                $result = $wpdb->get_results("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\t`name`,\n\t\t\t\t\t\t`email`,\n\t\t\t\t\t\t`url`,\n\t\t\t\t\t\t`date`,\n\t\t\t\t\t\t`ip`,\n\t\t\t\t\t\t`message`,\n\t\t\t\t\t\t`spam`,\n\t\t\t\t\t\t`additional`,\n\t\t\t\t\t\t`flag`\n\t\t\t\t\tFROM\n\t\t\t\t\t\t" . $wpdb->prefix . "dmsguestbook\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\tdate ASC\n\t\t\t\t\t", ARRAY_A);
                if (is_array($result) && !empty($result)) {
                    $saved = 0;
                    foreach ($result as $entry_data) {
                        /* New Instance of gwolle_gb_entry. */
                        $entry = new gwolle_gb_entry();
                        /* Set the data in the instance */
                        $entry->set_isspam($entry_data["spam"]);
                        $entry->set_ischecked(true);
                        $entry->set_istrash($entry_data["flag"]);
                        $entry->set_content($entry_data["message"]);
                        $entry->set_datetime($entry_data["date"]);
                        $entry->set_author_name($entry_data["name"]);
                        $entry->set_author_email($entry_data["email"]);
                        $entry->set_author_ip($entry_data["ip"]);
                        $entry->set_author_website($entry_data["url"]);
                        /* Save the instance */
                        $save = $entry->save();
                        if ($save) {
                            // We have been saved to the Database
                            gwolle_gb_add_log_entry($entry->get_id(), 'imported-from-dmsguestbook');
                            $saved++;
                        }
                    }
                    if ($saved == 0) {
                        $gwolle_gb_errors = 'error';
                        $gwolle_gb_messages .= '<p>' . __("I'm sorry, but I wasn't able to import entries from DMSGuestbook successfully.", 'gwolle-gb') . '</p>';
                    } else {
                        if ($saved == 1) {
                            $gwolle_gb_messages .= '<p>' . __("1 entry imported successfully from DMSGuestbook.", 'gwolle-gb') . '</p>';
                        } else {
                            if ($saved > 1) {
                                $gwolle_gb_messages .= '<p>' . sprintf(__('%d entries imported successfully from DMSGuestbook.', 'gwolle-gb'), $saved) . '</p>';
                            }
                        }
                    }
                } else {
                    $gwolle_gb_errors = 'error';
                    $gwolle_gb_messages .= '<p>' . __("<strong>Nothing to import.</strong> The guestbook you've chosen does not contain any entries.", 'gwolle-gb') . '</p>';
                }
            } else {
                $gwolle_gb_errors = 'error';
                $gwolle_gb_messages .= '<p>' . __("I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook.", 'gwolle-gb') . '</p>';
            }
        } else {
            if (isset($_POST['start_import_wp'])) {
                $args = array();
                if (isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'page' && isset($_POST['gwolle_gb_pageid']) && intval($_POST['gwolle_gb_pageid']) > 0) {
                    $page_id = intval($_POST['gwolle_gb_pageid']);
                    $args = array('status' => 'all', 'post_id' => $page_id);
                } else {
                    if (isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'post' && isset($_POST['gwolle_gb_postid']) && intval($_POST['gwolle_gb_postid']) > 0) {
                        $post_id = intval($_POST['gwolle_gb_postid']);
                        $args = array('status' => 'all', 'post_id' => $post_id);
                    } else {
                        if (isset($_POST['gwolle_gb_importfrom']) && $_POST['gwolle_gb_importfrom'] == 'all') {
                            $args = array('status' => 'all');
                        } else {
                            $gwolle_gb_errors = 'error';
                            $gwolle_gb_messages .= '<p>' . __("You haven't chosen how to import from WordPress comments. Please choose and try again.", 'gwolle-gb') . '</p>';
                        }
                    }
                }
                if (is_array($args) && !empty($args)) {
                    $comments = get_comments($args);
                    if (is_array($comments) && !empty($comments)) {
                        $saved = 0;
                        foreach ($comments as $comment) {
                            /* New Instance of gwolle_gb_entry. */
                            $entry = new gwolle_gb_entry();
                            /* Set the data in the instance */
                            $entry->set_ischecked($comment->comment_approved);
                            $entry->set_content($comment->comment_content);
                            $entry->set_datetime(strtotime($comment->comment_date));
                            $entry->set_author_name($comment->comment_author);
                            $entry->set_author_email($comment->comment_author_email);
                            $entry->set_author_ip($comment->comment_author_IP);
                            $entry->set_author_website($comment->comment_author_url);
                            $entry->set_author_id($comment->user_id);
                            /* Save the instance */
                            $save = $entry->save();
                            if ($save) {
                                // We have been saved to the Database
                                gwolle_gb_add_log_entry($entry->get_id(), 'imported-from-wp');
                                $saved++;
                            }
                        }
                        if ($saved == 0) {
                            $gwolle_gb_errors = 'error';
                            $gwolle_gb_messages .= '<p>' . __("I'm sorry, but I wasn't able to import comments from that page successfully.", 'gwolle-gb') . '</p>';
                        } else {
                            if ($saved == 1) {
                                $gwolle_gb_messages .= '<p>' . __("1 entry imported successfully from WordPress comments.", 'gwolle-gb') . '</p>';
                            } else {
                                if ($saved > 1) {
                                    $gwolle_gb_messages .= '<p>' . sprintf(__('%d entries imported successfully from WordPress comments.', 'gwolle-gb'), $saved) . '</p>';
                                }
                            }
                        }
                    } else {
                        $gwolle_gb_errors = 'error';
                        $gwolle_gb_messages .= '<p>' . __("<strong>Nothing to import.</strong> There seem to be no comments on this page, post or at all.", 'gwolle-gb') . '</p>';
                    }
                } else {
                    if ($gwolle_gb_errors != 'error') {
                        $gwolle_gb_errors = 'error';
                        $gwolle_gb_messages .= '<p>' . __("You haven't chosen how to import from WordPress comments. Please choose and try again.", 'gwolle-gb') . '</p>';
                    }
                }
            } else {
                if (isset($_POST['start_import_gwolle'])) {
                    // if they DID upload a file...
                    if ($_FILES['start_import_gwolle_file']['name']) {
                        if (!$_FILES['start_import_gwolle_file']['error']) {
                            // if no errors...
                            //now is the time to modify the future file name and validate the file
                            // $new_file_name = strtolower( $_FILES['gwolle_gb_gwolle']['tmp_name'] ); //rename file
                            if ($_FILES['start_import_gwolle_file']['size'] > 1024000) {
                                //can't be larger than 1 MB
                                $valid_file = false;
                                $gwolle_gb_errors = 'error';
                                $gwolle_gb_messages .= '<p>' . __("Your filesize is too large.", 'gwolle-gb') . '</p>';
                            } else {
                                if (function_exists('finfo_open')) {
                                    // Check MIME Type. Only PHP >= 5.3.0
                                    $finfo = finfo_open(FILEINFO_MIME_TYPE);
                                    // return mime type ala mimetype extension
                                    $mimetype = trim(finfo_file($finfo, $_FILES['start_import_gwolle_file']['tmp_name']));
                                    finfo_close($finfo);
                                }
                                if (version_compare(PHP_VERSION, '5.3', '<') && !$mimetype) {
                                    // PHP 5.2 is insecure anyway?
                                    $mimetype = 'text/csv';
                                }
                                $mimetypes = array('csv' => 'text/csv', 'txt' => 'text/plain', 'xls' => 'application/excel', 'ms' => 'application/ms-excel', 'vnd' => 'application/vnd.ms-excel');
                                if (!in_array($mimetype, $mimetypes)) {
                                    $gwolle_gb_errors = 'error';
                                    $gwolle_gb_messages .= '<p>' . __("Invalid file format.", 'gwolle-gb') . ' (' . print_r($mimetype, true) . ')</p>';
                                } else {
                                    $handle = fopen($_FILES['start_import_gwolle_file']['tmp_name'], "r");
                                    $row = 0;
                                    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
                                        $num = count($data);
                                        if ($row == 0) {
                                            // Check the headerrow. $tesrow_old is version 1.4.1 and older.
                                            $testrow_1_0 = array('id', 'author_name', 'author_email', 'author_origin', 'author_website', 'author_ip', 'author_host', 'content', 'date', 'isspam', 'ischecked', 'istrash');
                                            $testrow_1_4_1 = array('id', 'author_name', 'author_email', 'author_origin', 'author_website', 'author_ip', 'author_host', 'content', 'datetime', 'isspam', 'ischecked', 'istrash');
                                            $testrow_1_4_8 = array('id', 'author_name', 'author_email', 'author_origin', 'author_website', 'author_ip', 'author_host', 'content', 'datetime', 'isspam', 'ischecked', 'istrash', 'admin_reply');
                                            if ($data != $testrow_1_0 && $data != $testrow_1_4_1 && $data != $testrow_1_4_8) {
                                                $gwolle_gb_errors = 'error';
                                                $gwolle_gb_messages .= '<p>' . __("It seems your CSV file is from an export that is not compatible with this version of Gwolle-GB.", 'gwolle-gb') . '</p>';
                                                break;
                                            }
                                            $row++;
                                            continue;
                                        }
                                        if ($num != 12 && $num != 13) {
                                            $gwolle_gb_errors = 'error';
                                            $gwolle_gb_messages .= '<p>' . __("Your data seems to be corrupt. Import failed.", 'gwolle-gb') . '</p>';
                                            break;
                                        }
                                        /* New Instance of gwolle_gb_entry. */
                                        $entry = new gwolle_gb_entry();
                                        /* Check if the date is a timestamp, else convert */
                                        if (!is_numeric($data[8])) {
                                            $data[8] = strtotime($data[8]);
                                        }
                                        /* Set the data in the instance */
                                        // $entry->set_id( $data[0] ); // id of entry
                                        $entry->set_author_name($data[1]);
                                        $entry->set_author_email($data[2]);
                                        $entry->set_author_origin($data[3]);
                                        $entry->set_author_website($data[4]);
                                        $entry->set_author_ip($data[5]);
                                        $entry->set_author_host($data[6]);
                                        $entry->set_content($data[7]);
                                        $entry->set_datetime($data[8]);
                                        $entry->set_isspam($data[9]);
                                        $entry->set_ischecked($data[10]);
                                        $entry->set_istrash($data[11]);
                                        if (isset($data[12])) {
                                            $entry->set_admin_reply($data[12]);
                                            // admin_reply is only since 1.4.8
                                        }
                                        /* Save the instance */
                                        $save = $entry->save();
                                        if ($save) {
                                            // We have been saved to the Database
                                            gwolle_gb_add_log_entry($entry->get_id(), 'imported-from-gwolle');
                                            $row++;
                                        } else {
                                            $gwolle_gb_errors = 'error';
                                            $gwolle_gb_messages .= '<p>' . __("Your data seems to be corrupt. Import failed.", 'gwolle-gb') . '</p>';
                                            break;
                                        }
                                    }
                                    $row--;
                                    // minus the header
                                    if ($row == 0) {
                                        $gwolle_gb_errors = 'error';
                                        $gwolle_gb_messages .= '<p>' . __("I'm sorry, but I wasn't able to import entries from the CSV file.", 'gwolle-gb') . '</p>';
                                    } else {
                                        if ($row == 1) {
                                            $gwolle_gb_messages .= '<p>' . __("1 entry imported successfully from the CSV file.", 'gwolle-gb') . '</p>';
                                        } else {
                                            if ($row > 1) {
                                                $gwolle_gb_messages .= '<p>' . sprintf(__('%d entries imported successfully from the CSV file.', 'gwolle-gb'), $row) . '</p>';
                                            }
                                        }
                                    }
                                    fclose($handle);
                                }
                            }
                        } else {
                            // set that to be the returned message
                            $gwolle_gb_errors = 'error';
                            $gwolle_gb_messages .= '<p>' . __("Your upload triggered the following error:", 'gwolle-gb') . ' ' . $_FILES['gwolle_gb_gwolle']['error'] . '</p>';
                        }
                    }
                }
            }
        }
    }
    /*
     * Build the Page and the Form
     */
    ?>
	<div class="wrap gwolle_gb">
		<div id="icon-gwolle-gb"><br /></div>
		<h1><?php 
    _e('Import guestbook entries.', 'gwolle-gb');
    ?>
</h1>

		<?php 
    if ($gwolle_gb_messages) {
        echo '
				<div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' . $gwolle_gb_messages . '</div>';
    }
    ?>


		<div id="poststuff" class="metabox-holder">

			<div id="post-body">
				<div id="post-body-content">
					<div id='normal-sortables' class='meta-box-sortables'>

						<div id="dmsdiv" class="postbox">
							<div class="handlediv"></div>
							<h3 class='hndle' title="<?php 
    esc_attr_e('Click to open or close', 'gwolle-gb');
    ?>
"><?php 
    _e('Import guestbook entries from DMSGuestbook', 'gwolle-gb');
    ?>
</h3>
							<div class="inside">
								<form name="gwolle_gb_import_dms" id="gwolle_gb_import_dms" method="POST" action="#" accept-charset="UTF-8">
									<input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />

									<?php 
    // Does the table of DMSGuestbook exist?
    $sql = "\n\t\t\t\t\t\t\t\t\t\tSHOW\n\t\t\t\t\t\t\t\t\t\tTABLES\n\t\t\t\t\t\t\t\t\t\tLIKE '" . $wpdb->prefix . "dmsguestbook'";
    $foundTables = $wpdb->get_results($sql, ARRAY_A);
    $count = 0;
    if (isset($foundTables[0]) && in_array($wpdb->prefix . 'dmsguestbook', $foundTables[0])) {
        // Get entry count
        $sql = "\n\t\t\t\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\t\t\t\tCOUNT(id) AS count\n\t\t\t\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\t\t\t\t" . $wpdb->prefix . "dmsguestbook";
        $data = $wpdb->get_results($sql, ARRAY_A);
        $count = (int) $data[0]['count'];
    }
    if (isset($foundTables[0]) && in_array($wpdb->prefix . 'dmsguestbook', $foundTables[0])) {
        ?>
										<div>
											<?php 
        echo sprintf(__("%d entries were found and will be imported.", 'gwolle-gb'), $count);
        ?>
										</div>
										<div>
											<?php 
        _e('The importer will preserve the following data per entry:', 'gwolle-gb');
        ?>
											<ul class="ul-disc">
												<li><?php 
        _e('Name', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('E-Mail address', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('URL/Website', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('Date of the entry', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('IP address', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('Message', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('"is spam" flag', 'gwolle-gb');
        ?>
</li>
												<li><?php 
        _e('"is checked" flag', 'gwolle-gb');
        ?>
</li>
											</ul>
											<?php 
        _e('However, data such as HTML formatting is not supported by Gwolle-GB and <strong>will not</strong> be imported.', 'gwolle-gb');
        ?>
											<br />
											<?php 
        _e('The importer does not delete any data, so you can go back whenever you want.', 'gwolle-gb');
        ?>
										</div>

										<p>
											<label for="gwolle_gb_dmsguestbook" class="selectit">
												<input id="gwolle_gb_dmsguestbook" name="gwolle_gb_dmsguestbook" type="checkbox" />
												<?php 
        _e('Import all entries from DMSGuestbook.', 'gwolle-gb');
        ?>
											</label>
										</p>
										<p>
											<input name="start_import_dms" id="start_import_dms" type="submit" class="button" disabled value="<?php 
        esc_attr_e('Start import', 'gwolle-gb');
        ?>
">
										</p><?php 
    } else {
        echo '<div>' . __('DMSGuestbook was not found.', 'gwolle-gb') . '</div>';
    }
    ?>
								</form>
							</div> <!-- inside -->
						</div> <!-- dmsdiv -->


						<div id="wp_comm_div" class="postbox">
							<div class="handlediv"></div>
							<h3 class='hndle' title="<?php 
    esc_attr_e('Click to open or close', 'gwolle-gb');
    ?>
"><?php 
    _e('Import guestbook entries from WordPress comments', 'gwolle-gb');
    ?>
</h3>
							<div class="inside">
								<form name="gwolle_gb_import_wp" id="gwolle_gb_import_wp" method="POST" action="#" accept-charset="UTF-8">
									<input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />

									<div>
										<?php 
    _e('The importer will preserve the following data per entry:', 'gwolle-gb');
    ?>
										<ul class="ul-disc">
											<li><?php 
    _e('Name', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('User ID', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('E-Mail address', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('URL/Website', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('Date of the entry', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('IP address', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('Message', 'gwolle-gb');
    ?>
</li>
											<li><?php 
    _e('"approved" status', 'gwolle-gb');
    ?>
</li>
										</ul>
										<?php 
    _e('However, data such as HTML formatting is not supported by Gwolle-GB and <strong>will not</strong> be imported.', 'gwolle-gb');
    ?>
										<br />
										<?php 
    _e('Spam comments will not be imported.', 'gwolle-gb');
    ?>
										<br />
										<?php 
    _e('The importer does not delete any data, so you can go back whenever you want.', 'gwolle-gb');
    ?>
									</div>

									<p><label for="gwolle_gb_pageid"><?php 
    _e('Select a page to import the comments from:', 'gwolle-gb');
    ?>
</label><br />
										<select id="gwolle_gb_pageid" name="gwolle_gb_pageid">
										<option value="0"><?php 
    _e('Select', 'gwolle-gb');
    ?>
</option>
										<?php 
    $args = array('post_type' => 'page', 'nopaging' => true, 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'title');
    $sel_query = new WP_Query($args);
    if ($sel_query->have_posts()) {
        while ($sel_query->have_posts()) {
            $sel_query->the_post();
            $args = array('status' => 'all', 'post_id' => get_the_ID(), 'count' => true);
            $num_comments = get_comments($args);
            // get_comments_number returns only approved comments, and wp_count_comments seems to list spam too?
            if ($num_comments == 0) {
                continue;
            } elseif ($num_comments > 1) {
                $comments = $num_comments . __(' Comments', 'gwolle-gb');
            } else {
                $comments = __('1 Comment', 'gwolle-gb');
            }
            echo '<option value="' . get_the_ID() . '">' . get_the_title() . ' (' . $comments . ')</option>';
        }
    }
    wp_reset_postdata();
    ?>
										</select>
									</p>

									<p><label for="gwolle_gb_postid"><?php 
    _e('Select a post to import the comments from:', 'gwolle-gb');
    ?>
</label><br />
										<select id="gwolle_gb_postid" name="gwolle_gb_postid">
										<option value="0"><?php 
    _e('Select', 'gwolle-gb');
    ?>
</option>
										<?php 
    $args = array('post_type' => 'post', 'nopaging' => true, 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'title');
    $sel_query = new WP_Query($args);
    if ($sel_query->have_posts()) {
        while ($sel_query->have_posts()) {
            $sel_query->the_post();
            $args = array('status' => 'all', 'post_id' => get_the_ID(), 'count' => true);
            $num_comments = get_comments($args);
            if ($num_comments == 0) {
                continue;
            } elseif ($num_comments > 1) {
                $comments = $num_comments . __(' Comments', 'gwolle-gb');
            } else {
                $comments = __('1 Comment', 'gwolle-gb');
            }
            echo '<option value="' . get_the_ID() . '">' . get_the_title() . ' (' . $comments . ')</option>';
        }
    }
    wp_reset_postdata();
    ?>
										</select>
									</p>

									<?php 
    $args = array('status' => 'all', 'count' => true);
    $num_comments = get_comments($args);
    ?>

									<p><label for="gwolle_gb_importfrom"><?php 
    _e('Select where to import the comments from:', 'gwolle-gb');
    ?>
</label><br />
										<label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="page" /><?php 
    _e('Comments from selected page.', 'gwolle-gb');
    ?>
</label><br />
										<label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="post" /><?php 
    _e('Comments from selected post.', 'gwolle-gb');
    ?>
</label><br />
										<label><input type="radio" name="gwolle_gb_importfrom" id="gwolle_gb_importfrom" value="all" /><?php 
    _e('All Comments', 'gwolle-gb');
    echo " (" . $num_comments . ").";
    ?>
</label><br />
									</p>

									<p>
										<input name="start_import_wp" id="start_import_wp" type="submit" class="button" disabled value="<?php 
    esc_attr_e('Start import', 'gwolle-gb');
    ?>
">
									</p>
								</form>
							</div> <!-- inside -->
						</div> <!-- wp_comm_div -->

						<div id="gwollediv" class="postbox">
							<div class="handlediv"></div>
							<h3 class='hndle' title="<?php 
    esc_attr_e('Click to open or close', 'gwolle-gb');
    ?>
"><?php 
    _e('Import guestbook entries from Gwolle-GB', 'gwolle-gb');
    ?>
</h3>
							<div class="inside">
								<form name="gwolle_gb_import_gwolle" id="gwolle_gb_import_gwolle" method="POST" action="#" accept-charset="UTF-8" enctype="multipart/form-data">
									<input type="hidden" name="gwolle_gb_page" value="gwolle_gb_import" />

									<p>
										<label for="start_import_gwolle_file" class="selectit"><?php 
    _e('Select a CSV file with exported entries to import again:', 'gwolle-gb');
    ?>
<br />
											<input id="start_import_gwolle_file" name="start_import_gwolle_file" type="file" />
										</label>
									</p>
									<p>
										<input name="start_import_gwolle" id="start_import_gwolle" type="submit" class="button" disabled value="<?php 
    esc_attr_e('Start import', 'gwolle-gb');
    ?>
">
									</p>
								</form>
							</div> <!-- inside -->
						</div> <!-- gwollediv -->

					</div><!-- 'normal-sortables' -->
				</div><!-- 'post-body-content' -->
			</div><!-- 'post-body' -->

		</div> <!-- poststuff -->
	</div> <!-- wrap -->

	<?php 
}
Example #4
0
function gwolle_gb_page_editor()
{
    if (function_exists('current_user_can') && !current_user_can('moderate_comments')) {
        die(__('Cheatin&#8217; uh?', 'gwolle-gb'));
    }
    ?>

	<!-- Do not replace Emoji with <img> elements in textarea, it screws saving the entry -->
	<script type="text/javascript">
		window._wpemojiSettings = '';
	</script>

	<?php 
    if (!get_option('gwolle_gb_version')) {
        // FIXME: do this on activation
        gwolle_gb_installSplash();
    } else {
        $gwolle_gb_errors = '';
        $gwolle_gb_messages = '';
        $sectionHeading = __('Edit guestbook entry', 'gwolle-gb');
        // Always fetch the requested entry, so we can compare the $entry and the $_POST.
        $entry = new gwolle_gb_entry();
        if (isset($_POST['entry_id'])) {
            // _POST has preference over _GET
            $entry_id = intval($_POST['entry_id']);
        } else {
            if (isset($_GET['entry_id'])) {
                $entry_id = intval($_GET['entry_id']);
            }
        }
        if (isset($entry_id) && $entry_id > 0) {
            $result = $entry->load($entry_id);
            if (!$result) {
                $gwolle_gb_messages .= '<p class="error">' . __('Entry could not be found.', 'gwolle-gb') . '</p>';
                $gwolle_gb_errors = 'error';
                $sectionHeading = __('Guestbook entry (error)', 'gwolle-gb');
            }
        } else {
            $sectionHeading = __('New guestbook entry', 'gwolle-gb');
        }
        /*
         * Handle the $_POST
         */
        if (isset($_POST['gwolle_gb_page']) && $_POST['gwolle_gb_page'] == 'editor' && $gwolle_gb_errors == '') {
            if (!isset($_POST['entry_id']) || $_POST['entry_id'] != $entry->get_id()) {
                $gwolle_gb_messages .= '<p class="error">' . __('Something strange happened.', 'gwolle-gb') . '</p>';
                $gwolle_gb_errors = 'error';
            } else {
                if ($_POST['entry_id'] > 0 && $entry->get_id() > 0) {
                    /*
                     * Check for changes, and update accordingly. This is on an Existing Entry!
                     */
                    $changed = false;
                    /* Set as checked or unchecked, and by whom */
                    if (isset($_POST['ischecked']) && $_POST['ischecked'] == 'on') {
                        if ($_POST['ischecked'] == 'on' && $entry->get_ischecked() == 0) {
                            $entry->set_ischecked(true);
                            $user_id = get_current_user_id();
                            // returns 0 if no current user
                            $entry->set_checkedby($user_id);
                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-checked');
                            gwolle_gb_clear_cache();
                            $changed = true;
                        }
                    } else {
                        if ($entry->get_ischecked() == 1) {
                            $entry->set_ischecked(false);
                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-unchecked');
                            $changed = true;
                        }
                    }
                    /* Set as spam or not, and submit as ham or spam to Akismet service */
                    if (isset($_POST['isspam']) && $_POST['isspam'] == 'on') {
                        if ($_POST['isspam'] == 'on' && $entry->get_isspam() == 0) {
                            $entry->set_isspam(true);
                            $result = gwolle_gb_akismet($entry, 'submit-spam');
                            if ($result) {
                                $gwolle_gb_messages .= '<p>' . __('Submitted as Spam to the Akismet service.', 'gwolle-gb') . '</p>';
                            }
                            gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-spam');
                            $changed = true;
                        }
                    } else {
                        if ($entry->get_isspam() == 1) {
                            $entry->set_isspam(false);
                            $result = gwolle_gb_akismet($entry, 'submit-ham');
                            if ($result) {
                                $gwolle_gb_messages .= '<p>' . __('Submitted as Ham to the Akismet service.', 'gwolle-gb') . '</p>';
                            }
                            gwolle_gb_add_log_entry($entry->get_id(), 'marked-as-not-spam');
                            $changed = true;
                        }
                    }
                    /* Set as trash or not */
                    if (isset($_POST['istrash']) && $_POST['istrash'] == 'on') {
                        if ($_POST['istrash'] == 'on' && $entry->get_istrash() == 0) {
                            $entry->set_istrash(true);
                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-trashed');
                            $changed = true;
                        }
                    } else {
                        if ($entry->get_istrash() == 1) {
                            $entry->set_istrash(false);
                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-untrashed');
                            $changed = true;
                        }
                    }
                    /* Check if the content changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_content']) && $_POST['gwolle_gb_content'] != '') {
                        if (trim($_POST['gwolle_gb_content']) != $entry->get_content()) {
                            $entry_content = gwolle_gb_maybe_encode_emoji($_POST['gwolle_gb_content'], 'content');
                            $entry->set_content($entry_content);
                            $changed = true;
                        }
                    }
                    /* Check if the website changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_author_website'])) {
                        if ($_POST['gwolle_gb_author_website'] != $entry->get_author_website()) {
                            $entry->set_author_website($_POST['gwolle_gb_author_website']);
                            $changed = true;
                        }
                    }
                    /* Check if the author_origin changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_author_origin'])) {
                        if ($_POST['gwolle_gb_author_origin'] != $entry->get_author_origin()) {
                            $entry_origin = gwolle_gb_maybe_encode_emoji($_POST['gwolle_gb_author_origin'], 'author_origin');
                            $entry->set_author_origin($entry_origin);
                            $changed = true;
                        }
                    }
                    /* Check if the admin_reply changed, and update and log accordingly */
                    if (isset($_POST['gwolle_gb_admin_reply'])) {
                        if (trim($_POST['gwolle_gb_admin_reply']) != $entry->get_admin_reply()) {
                            $gwolle_gb_admin_reply = gwolle_gb_maybe_encode_emoji($_POST['gwolle_gb_admin_reply'], 'admin_reply');
                            if ($gwolle_gb_admin_reply != '' && $entry->get_admin_reply() == '') {
                                $entry->set_admin_reply_uid(get_current_user_id());
                                gwolle_gb_add_log_entry($entry->get_id(), 'admin-reply-added');
                            } else {
                                if ($gwolle_gb_admin_reply == '' && $entry->get_admin_reply() != '') {
                                    $entry->set_admin_reply_uid(0);
                                    gwolle_gb_add_log_entry($entry->get_id(), 'admin-reply-removed');
                                } else {
                                    if ($gwolle_gb_admin_reply != '' && $entry->get_admin_reply() != '') {
                                        gwolle_gb_add_log_entry($entry->get_id(), 'admin-reply-updated');
                                    }
                                }
                            }
                            $entry->set_admin_reply($gwolle_gb_admin_reply);
                            $changed = true;
                        }
                    }
                    /* Mail the author about the Admin Reply, if so requested */
                    if (isset($_POST['gwolle_gb_admin_reply_mail_author'])) {
                        if ($_POST['gwolle_gb_admin_reply_mail_author'] == 'on') {
                            gwolle_gb_mail_author_on_admin_reply($entry);
                        }
                    }
                    /* Check if the author_name changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_author_name'])) {
                        if ($_POST['gwolle_gb_author_name'] != $entry->get_author_name()) {
                            $entry_name = gwolle_gb_maybe_encode_emoji($_POST['gwolle_gb_author_name'], 'author_name');
                            $entry->set_author_name($entry_name);
                            $changed = true;
                        }
                    }
                    /* Check if the datetime changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_timestamp']) && is_numeric($_POST['gwolle_gb_timestamp'])) {
                        if ($_POST['gwolle_gb_timestamp'] != $entry->get_datetime()) {
                            $entry->set_datetime((int) $_POST['gwolle_gb_timestamp']);
                            $changed = true;
                        }
                    }
                    /* Check if the book_id changed, and update accordingly */
                    if (isset($_POST['gwolle_gb_book_id']) && is_numeric($_POST['gwolle_gb_book_id'])) {
                        if ($_POST['gwolle_gb_book_id'] != $entry->get_book_id()) {
                            $entry->set_book_id((int) $_POST['gwolle_gb_book_id']);
                            $changed = true;
                        }
                    }
                    /* Save the entry */
                    if ($changed) {
                        $result = $entry->save();
                        if ($result) {
                            gwolle_gb_add_log_entry($entry->get_id(), 'entry-edited');
                            $gwolle_gb_messages .= '<p>' . __('Changes saved.', 'gwolle-gb') . '</p>';
                        } else {
                            $gwolle_gb_messages .= '<p>' . __('Error happened during saving.', 'gwolle-gb') . '</p>';
                            $gwolle_gb_errors = 'error';
                        }
                    } else {
                        $gwolle_gb_messages .= '<p>' . __('Entry was not changed.', 'gwolle-gb') . '</p>';
                    }
                    /* Remove permanently */
                    if (isset($_POST['istrash']) && $_POST['istrash'] == 'on' && isset($_POST['remove']) && $_POST['remove'] == 'on') {
                        if ($entry->get_istrash() == 1) {
                            $entry->delete();
                            $entry->set_id(0);
                            $changed = true;
                            // Overwrite any other message, only removal is relevant.
                            $gwolle_gb_messages = '<p>' . __('Entry removed.', 'gwolle-gb') . '</p>';
                            $entry = new gwolle_gb_entry();
                        }
                    }
                } else {
                    if ($_POST['entry_id'] == 0 && $entry->get_id() == 0) {
                        /*
                         * Check for input, and save accordingly. This is on a New Entry! (So no logging)
                         */
                        $saved = false;
                        $data = array();
                        /* Set as checked anyway, new entry is always by an admin */
                        $data['ischecked'] = true;
                        $user_id = get_current_user_id();
                        // returns 0 if no current user
                        $data['checkedby'] = $user_id;
                        $data['author_id'] = $user_id;
                        /* Set metadata of the admin */
                        $userdata = get_userdata($user_id);
                        if (is_object($userdata)) {
                            if (isset($userdata->display_name)) {
                                $author_name = $userdata->display_name;
                            } else {
                                $author_name = $userdata->user_login;
                            }
                            $author_email = $userdata->user_email;
                        }
                        $data['author_name'] = $author_name;
                        $data['author_name'] = gwolle_gb_maybe_encode_emoji($data['author_name'], 'author_name');
                        $data['author_email'] = $author_email;
                        /* Set as Not Spam */
                        $data['isspam'] = false;
                        /* Do not set as trash */
                        $data['istrash'] = false;
                        /* Check if the content is filled in, and save accordingly */
                        if (isset($_POST['gwolle_gb_content']) && $_POST['gwolle_gb_content'] != '') {
                            $data['content'] = $_POST['gwolle_gb_content'];
                            $data['content'] = gwolle_gb_maybe_encode_emoji($data['content'], 'content');
                            $saved = true;
                        } else {
                            $form_setting = gwolle_gb_get_setting('form');
                            if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' && isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
                                $gwolle_gb_messages .= '<p>' . __('Entry has no content, even though that is mandatory.', 'gwolle-gb') . '</p>';
                                $gwolle_gb_errors = 'error';
                            } else {
                                $data['content'] = '';
                                $saved = true;
                            }
                        }
                        /* Check if the website is set, and save accordingly */
                        if (isset($_POST['gwolle_gb_author_website'])) {
                            if ($_POST['gwolle_gb_author_website'] != '') {
                                $data['author_website'] = $_POST['gwolle_gb_author_website'];
                            } else {
                                $data['author_website'] = home_url();
                            }
                        }
                        /* Check if the author_origin is set, and save accordingly */
                        if (isset($_POST['gwolle_gb_author_origin'])) {
                            if ($_POST['gwolle_gb_author_origin'] != '') {
                                $data['author_origin'] = $_POST['gwolle_gb_author_origin'];
                                $data['author_origin'] = gwolle_gb_maybe_encode_emoji($data['author_origin'], 'author_origin');
                            }
                        }
                        /* Check if the admin_reply is set, and save accordingly */
                        if (isset($_POST['gwolle_gb_admin_reply'])) {
                            if ($_POST['gwolle_gb_admin_reply'] != '') {
                                $data['admin_reply'] = gwolle_gb_maybe_encode_emoji($_POST['gwolle_gb_admin_reply'], 'admin_reply');
                                $data['admin_reply_uid'] = get_current_user_id();
                                gwolle_gb_add_log_entry($entry->get_id(), 'admin-reply-added');
                            }
                        }
                        /* Check if the book_id is set, and save accordingly */
                        if (isset($_POST['gwolle_gb_book_id']) && is_numeric($_POST['gwolle_gb_book_id'])) {
                            $entry->set_book_id((int) $_POST['gwolle_gb_book_id']);
                        }
                        /* Network Information */
                        $entry->set_author_ip($_SERVER['REMOTE_ADDR']);
                        $entry->set_author_host(gethostbyaddr($_SERVER['REMOTE_ADDR']));
                        $result1 = $entry->set_data($data);
                        if ($saved) {
                            $result2 = $entry->save();
                            if ($result1 && $result2) {
                                $gwolle_gb_messages .= '<p>' . __('Entry saved.', 'gwolle-gb') . '</p>';
                                gwolle_gb_clear_cache();
                            } else {
                                $gwolle_gb_messages .= '<p>' . __('Error happened during saving.', 'gwolle-gb') . '</p>';
                                $gwolle_gb_errors = 'error';
                            }
                        } else {
                            $gwolle_gb_messages .= '<p>' . __('Entry was not saved.', 'gwolle-gb') . '</p>';
                        }
                    }
                }
            }
        }
        // FIXME: reload the entry, just for consistency?
        /*
         * Build the Page and the Form
         */
        ?>
		<div class="wrap gwolle_gb">
			<div id="icon-gwolle-gb"><br /></div>
			<h1><?php 
        echo $sectionHeading;
        ?>
</h1>

			<?php 
        if ($gwolle_gb_messages) {
            echo '
					<div id="message" class="updated fade notice is-dismissible ' . $gwolle_gb_errors . ' ">' . $gwolle_gb_messages . '</div>';
        }
        ?>

			<form name="gwolle_gb_editor" id="gwolle_gb_editor" method="POST" action="" accept-charset="UTF-8">
				<input type="hidden" name="gwolle_gb_page" value="editor" />
				<input type="hidden" name="entry_id" value="<?php 
        echo $entry->get_id();
        ?>
" />

				<div id="poststuff" class="metabox-holder">
					<div id="post-body" class="metabox-holder columns-2">

						<div id="post-body-content">
							<div id='normal-sortables' class='meta-box-sortables'>

								<div id="contentdiv" class="postbox" >
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Guestbook entry', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<textarea rows="10" name="gwolle_gb_content" id="gwolle_gb_content" tabindex="1" placeholder="<?php 
        _e('Message', 'gwolle-gb');
        ?>
"><?php 
        echo gwolle_gb_sanitize_output($entry->get_content());
        ?>
</textarea>
										<?php 
        if (get_option('gwolle_gb-showLineBreaks', 'false') == 'false') {
            echo '<p>' . sprintf(__('Line breaks will not be visible to the visitors due to your <a href="%s">settings</a>.', 'gwolle-gb'), 'admin.php?page=' . GWOLLE_GB_FOLDER . '/settings.php') . '</p>';
        }
        $form_setting = gwolle_gb_get_setting('form');
        if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') {
            wp_enqueue_script('markitup', plugins_url('../frontend/markitup/jquery.markitup.js', __FILE__), 'jquery', GWOLLE_GB_VER, false);
            wp_enqueue_script('markitup_set', plugins_url('../frontend/markitup/set.js', __FILE__), 'jquery', GWOLLE_GB_VER, false);
            wp_enqueue_style('gwolle_gb_markitup_css', plugins_url('../frontend/markitup/style.css', __FILE__), false, GWOLLE_GB_VER, 'screen');
            $dataToBePassed = array('bold' => __('Bold', 'gwolle-gb'), 'italic' => __('Italic', 'gwolle-gb'), 'bullet' => __('Bulleted List', 'gwolle-gb'), 'numeric' => __('Numeric List', 'gwolle-gb'), 'picture' => __('Picture', 'gwolle-gb'), 'source' => __('Source', 'gwolle-gb'), 'link' => __('Link', 'gwolle-gb'), 'linktext' => __('Your text to link...', 'gwolle-gb'), 'clean' => __('Clean', 'gwolle-gb'), 'emoji' => __('Emoji', 'gwolle-gb'));
            wp_localize_script('markitup_set', 'gwolle_gb_localize', $dataToBePassed);
            // Emoji symbols
            echo '<div class="gwolle_gb_emoji" style="display:none;">';
            $emoji = gwolle_gb_get_emoji();
            // make it into images for nice colors.
            if (function_exists('wp_staticize_emoji')) {
                $emoji = wp_staticize_emoji($emoji);
            }
            echo $emoji;
            echo '</div>';
        }
        ?>
									</div>
								</div>

								<div id="authordiv" class="postbox " >
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Website', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<input type="url" name="gwolle_gb_author_website" tabindex="2" value="<?php 
        echo gwolle_gb_sanitize_output($entry->get_author_website());
        ?>
" id="author_website" placeholder="<?php 
        _e('Website', 'gwolle-gb');
        ?>
" />
										<p><?php 
        _e("Example: <code>http://www.example.com/</code>", 'gwolle-gb');
        ?>
</p>
									</div>
								</div>

								<div id="authordiv" class="postbox ">
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Origin', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<input type="text" name="gwolle_gb_author_origin" tabindex="3" placeholder="<?php 
        _e('City', 'gwolle-gb');
        ?>
" value="<?php 
        echo gwolle_gb_sanitize_output($entry->get_author_origin());
        ?>
" id="author_origin" />
									</div>
								</div>

								<div id="admin_reply" class="postbox" >
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
">
										<span><?php 
        _e('Admin Reply by:', 'gwolle-gb');
        echo ' ' . gwolle_gb_is_moderator($entry->get_admin_reply_uid());
        ?>
										</span>
									</h3>
									<div class="inside">
										<textarea rows="10" name="gwolle_gb_admin_reply" id="gwolle_gb_admin_reply" tabindex="4" placeholder="<?php 
        _e('Admin Reply', 'gwolle-gb');
        ?>
"><?php 
        echo gwolle_gb_sanitize_output($entry->get_admin_reply());
        ?>
</textarea>

										<input type="checkbox" name="gwolle_gb_admin_reply_mail_author" id="gwolle_gb_admin_reply_mail_author">
										<label for="gwolle_gb_admin_reply_mail_author">
											<?php 
        _e('Mail the author a notification about this reply.', 'gwolle-gb');
        ?>
										</label><br />

										<?php 
        if (get_option('gwolle_gb-showLineBreaks', 'false') == 'false') {
            echo '<p>' . sprintf(__('Line breaks will not be visible to the visitors due to your <a href="%s">settings</a>.', 'gwolle-gb'), 'admin.php?page=' . GWOLLE_GB_FOLDER . '/settings.php') . '</p>';
        }
        ?>
									</div>
								</div>

							</div><!-- .normal-sortables -->
						</div><!-- .post-body-content -->


						<div id="postbox-container-1" class="postbox-container">
							<div id='side-sortables' class='meta-box-sortables'>

								<?php 
        $class = '';
        // Attach 'spam' to class if the entry is spam
        if ($entry->get_isspam() === 1) {
            $class .= ' spam';
        } else {
            $class .= ' nospam';
        }
        // Attach 'trash' to class if the entry is in trash
        if ($entry->get_istrash() === 1) {
            $class .= ' trash';
        } else {
            $class .= ' notrash';
        }
        // Attach 'checked/unchecked' to class
        if ($entry->get_ischecked() === 1) {
            $class .= ' checked';
        } else {
            $class .= ' unchecked';
        }
        // Attach 'visible/invisible' to class
        if ($entry->get_isspam() === 1 || $entry->get_istrash() === 1 || $entry->get_ischecked() === 0) {
            $class .= ' invisible';
        } else {
            $class .= ' visible';
        }
        // Add admin-entry class to an entry from an admin
        $author_id = $entry->get_author_id();
        $is_moderator = gwolle_gb_is_moderator($author_id);
        if ($is_moderator) {
            $class .= ' admin-entry';
        }
        ?>

								<?php 
        $postid = gwolle_gb_get_postid();
        if ($postid) {
            $permalink = get_bloginfo('url') . '?p=' . $postid;
            ?>
									<div id="tagsdiv-post_tag" class="postbox">
										<div class="handlediv"></div>
										<h3 class='hndle' title="<?php 
            esc_attr_e('Click to open or close', 'gwolle-gb');
            ?>
"><span><?php 
            _e('View Frontend', 'gwolle-gb');
            ?>
</span></h3>
										<div class="inside">
											<div class="tagsdiv" id="post_tag">
												<div id="categories-pop" class="tabs-panel gwolle_gb_frontend">
													<a class="button rbutton button" href="<?php 
            echo $permalink;
            ?>
"><?php 
            esc_attr_e('View Guestbook', 'gwolle-gb');
            ?>
</a>
												</div>
											</div>
										</div>
									</div>
									<?php 
        }
        ?>

								<div id="submitdiv" class="postbox">
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Options', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<div class="submitbox" id="submitpost">
											<div id="minor-publishing">
												<div id="misc-publishing-actions">
													<div class="misc-pub-section misc-pub-section-last">

														<?php 
        // Optional Icon column where CSS is being used to show them or not
        if (get_option('gwolle_gb-showEntryIcons', 'true') === 'true') {
            ?>
															<span class="entry-icons <?php 
            echo $class;
            ?>
">
																<span class="visible-icon" title="<?php 
            _e('Visible', 'gwolle-gb');
            ?>
"></span>
																<span class="invisible-icon" title="<?php 
            _e('Invisible', 'gwolle-gb');
            ?>
"></span>
																<span class="spam-icon" title="<?php 
            _e('Spam', 'gwolle-gb');
            ?>
"></span>
																<!--<span class="trash-icon" title="<?php 
            _e('Trash', 'gwolle-gb');
            ?>
"></span>-->
																<?php 
            $admin_reply = gwolle_gb_sanitize_output($entry->get_admin_reply());
            if (strlen(trim($admin_reply)) > 0) {
                ?>
																	<span class="admin_reply-icon" title="<?php 
                _e('Admin Replied', 'gwolle-gb');
                ?>
"></span><?php 
            }
            ?>
																<span class="gwolle_gb_ajax" title="<?php 
            _e('Wait...', 'gwolle-gb');
            ?>
"></span>
															</span>
															<?php 
        }
        if ($entry->get_id() == 0) {
            echo '<h3 class="h3_invisible">' . __('This entry is not yet visible.', 'gwolle-gb') . '</h3>';
        } else {
            if ($entry->get_ischecked() == 1 && $entry->get_isspam() == 0 && $entry->get_istrash() == 0) {
                echo '
																	<h3 class="h3_visible">' . __('This entry is Visible.', 'gwolle-gb') . '</h3>
																	<h3 class="h3_invisible" style="display:none;">' . __('This entry is Not Visible.', 'gwolle-gb') . '</h3>
																	';
            } else {
                echo '
																	<h3 class="h3_visible" style="display:none;">' . __('This entry is Visible.', 'gwolle-gb') . '</h3>
																	<h3 class="h3_invisible">' . __('This entry is Not Visible.', 'gwolle-gb') . '</h3>
																	';
            }
            ?>

															<label for="ischecked" class="selectit">
																<input id="ischecked" name="ischecked" type="checkbox" <?php 
            if ($entry->get_ischecked() == '1' || $entry->get_id() == 0) {
                echo 'checked="checked"';
            }
            ?>
 />
																<?php 
            _e('Checked', 'gwolle-gb');
            ?>
															</label>

															<br />
															<label for="isspam" class="selectit">
																<input id="isspam" name="isspam" type="checkbox" <?php 
            if ($entry->get_isspam() == '1') {
                echo 'checked="checked"';
            }
            ?>
 />
																<?php 
            _e('Spam', 'gwolle-gb');
            ?>
															</label>

															<br />
															<label for="istrash" class="selectit">
																<input id="istrash" name="istrash" type="checkbox" <?php 
            if ($entry->get_istrash() == '1') {
                echo 'checked="checked"';
            }
            ?>
 />
																<?php 
            _e('Trash', 'gwolle-gb');
            ?>
															</label>

															<?php 
            if ($entry->get_istrash() == '1') {
                ?>
																<br />
																<label for="remove" class="selectit">
																	<input id="remove" name="remove" type="checkbox" />
																	<?php 
                _e('Remove this entry Permanently.', 'gwolle-gb');
                ?>
																</label>
															<?php 
            }
        }
        ?>

													</div>
												</div><!-- .misc-publishing-actions -->
												<div class="clear"></div>
											</div> <!-- .minor-publishing -->

											<div id="major-publishing-actions">
												<div id="publishing-action">
													<input name="save" type="submit" class="button-primary" id="publish" tabindex="5" accesskey="p" value="<?php 
        esc_attr_e('Save', 'gwolle-gb');
        ?>
" />
												</div> <!-- .publishing-action -->
												<div class="clear"></div>
											</div><!-- major-publishing-actions -->
										</div><!-- .submitbox -->
									</div><!-- .inside -->
								</div><!-- .submitdiv -->

								<?php 
        if ($entry->get_id() > 0) {
            ?>
								<div id="submitdiv" class="postbox">
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
            esc_attr_e('Click to open or close', 'gwolle-gb');
            ?>
"><span><?php 
            _e('Actions', 'gwolle-gb');
            ?>
</span></h3>
									<div class="inside">
										<div class="submitbox" id="submitpost">
											<div id="minor-publishing">
												<div id="misc-publishing-actions">
													<div class="misc-pub-section misc-pub-section-last">

														<?php 
            echo '
														<div class="gwolle_gb_actions ' . $class . '">
															<span class="gwolle_gb_check">
																<a id="check_' . $entry->get_id() . '" href="#" class="vim-a" title="' . __('Check entry', 'gwolle-gb') . '">' . __('Check', 'gwolle-gb') . '</a>
															</span>
															<span class="gwolle_gb_uncheck">
																<a id="uncheck_' . $entry->get_id() . '" href="#" class="vim-u" title="' . __('Uncheck entry', 'gwolle-gb') . '">' . __('Uncheck', 'gwolle-gb') . '</a>
															</span>
															<span class="gwolle_gb_spam">&nbsp;|&nbsp;
																<a id="spam_' . $entry->get_id() . '" href="#" class="vim-s vim-destructive" title="' . __('Mark entry as spam.', 'gwolle-gb') . '">' . __('Spam', 'gwolle-gb') . '</a>
															</span>
															<span class="gwolle_gb_unspam">&nbsp;|&nbsp;
																<a id="unspam_' . $entry->get_id() . '" href="#" class="vim-a" title="' . __('Mark entry as not-spam.', 'gwolle-gb') . '">' . __('Not spam', 'gwolle-gb') . '</a>
															</span>
															<span class="gwolle_gb_trash">&nbsp;|&nbsp;
																<a id="trash_' . $entry->get_id() . '" href="#" class="vim-d vim-destructive" title="' . __('Move entry to trash.', 'gwolle-gb') . '">' . __('Trash', 'gwolle-gb') . '</a>
															</span>
															<span class="gwolle_gb_untrash">&nbsp;|&nbsp;
																<a id="untrash_' . $entry->get_id() . '" href="#" class="vim-d" title="' . __('Recover entry from trash.', 'gwolle-gb') . '">' . __('Untrash', 'gwolle-gb') . '</a>
															</span><br />
															<span class="gwolle_gb_ajax">
																<a id="ajax_' . $entry->get_id() . '" href="#" class="ajax vim-d vim-destructive" title="' . __('Please wait...', 'gwolle-gb') . '">' . __('Wait...', 'gwolle-gb') . '</a>
															</span><br />
														</div>
														';
            ?>

													</div>
												</div><!-- .misc-publishing-actions -->
												<div class="clear"></div>
											</div> <!-- .minor-publishing -->
										</div><!-- .submitbox -->
									</div><!-- .inside -->
								</div><!-- .submitdiv -->
								<?php 
        }
        ?>

								<div id="gwolle_gb-entry-details" class="postbox " >
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Details', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<div class="tagsdiv" id="post_tag">
											<p>
											<?php 
        _e('Author', 'gwolle-gb');
        ?>
: <span><?php 
        if ($entry->get_author_name()) {
            echo gwolle_gb_sanitize_output($entry->get_author_name());
        } else {
            echo '<i>(' . __('Unknown', 'gwolle-gb') . ')</i>';
        }
        ?>
											</span><br />
											<?php 
        _e('E-Mail', 'gwolle-gb');
        ?>
: <span><?php 
        if (strlen(str_replace(' ', '', $entry->get_author_email())) > 0) {
            echo gwolle_gb_sanitize_output($entry->get_author_email());
        } else {
            echo '<i>(' . __('Unknown', 'gwolle-gb') . ')</i>';
        }
        ?>
											</span><br />
											<?php 
        _e('Written', 'gwolle-gb');
        ?>
: <span><?php 
        if ($entry->get_datetime() > 0) {
            echo date_i18n(get_option('date_format'), $entry->get_datetime()) . ', ';
            echo date_i18n(get_option('time_format'), $entry->get_datetime());
        } else {
            echo '(' . __('Not yet', 'gwolle-gb') . ')';
        }
        ?>
											</span><br />
											<?php 
        _e("Author's IP-address", 'gwolle-gb');
        ?>
: <span><?php 
        if (strlen($entry->get_author_ip()) > 0) {
            echo '<a href="http://www.db.ripe.net/whois?form_type=simple&searchtext=' . $entry->get_author_ip() . '"
															title="' . __('Whois search for this IP', 'gwolle-gb') . '" target="_blank">
																' . $entry->get_author_ip() . '
															</a>';
        } else {
            echo '<i>(' . __('Unknown', 'gwolle-gb') . ')</i>';
        }
        ?>
											</span><br />
											<?php 
        _e('Host', 'gwolle-gb');
        ?>
: <span><?php 
        if (strlen($entry->get_author_host()) > 0) {
            echo $entry->get_author_host();
        } else {
            echo '<i>(' . __('Unknown', 'gwolle-gb') . ')</i>';
        }
        ?>
											</span><br />
											<?php 
        _e('Book', 'gwolle-gb');
        ?>
: <span><?php 
        echo $entry->get_book_id();
        ?>
											</span><br />
											<span class="gwolle_gb_edit_meta">
												<a href="#" title="<?php 
        _e('Edit metadata', 'gwolle-gb');
        ?>
"><?php 
        _e('Edit', 'gwolle-gb');
        ?>
</a>
											</span>
											</p>

											<div class="gwolle_gb_edit_meta_inputs">
												<label for="gwolle_gb_author_name"><?php 
        _e('Author', 'gwolle-gb');
        ?>
: </label><br />
												<input type="text" name="gwolle_gb_author_name" size="24" value="<?php 
        echo gwolle_gb_sanitize_output($entry->get_author_name());
        ?>
" id="gwolle_gb_author_name" /><br />

												<span><?php 
        _e('Date and time', 'gwolle-gb');
        ?>
: </span><br />
												<div class="gwolle_gb_date"><?php 
        gwolle_gb_touch_time($entry);
        ?>
												</div>

												<label for="gwolle_gb_book_id"><?php 
        _e('Book ID', 'gwolle-gb');
        ?>
: </label><br />
												<input type="text" name="gwolle_gb_book_id" size="4" value="<?php 
        echo (int) $entry->get_book_id();
        ?>
" id="gwolle_gb_book_id" />
											</div>

										</div><!-- .tagsdiv -->
									</div>
								</div><!-- .postbox -->

								<div id="tagsdiv-post_tag" class="postbox">
									<div class="handlediv"></div>
									<h3 class='hndle' title="<?php 
        esc_attr_e('Click to open or close', 'gwolle-gb');
        ?>
"><span><?php 
        _e('Entry log', 'gwolle-gb');
        ?>
</span></h3>
									<div class="inside">
										<div class="tagsdiv" id="post_tag">
											<div id="categories-pop" class="tabs-panel gwolle_gb_log">
												<ul>
												<?php 
        if ($entry->get_datetime() > 0) {
            echo '<li>';
            echo date_i18n(get_option('date_format'), $entry->get_datetime()) . ', ';
            echo date_i18n(get_option('time_format'), $entry->get_datetime());
            echo ': ' . __('Written', 'gwolle-gb') . '</li>';
            $log_entries = gwolle_gb_get_log_entries($entry->get_id());
            if (is_array($log_entries) && !empty($log_entries)) {
                foreach ($log_entries as $log_entry) {
                    echo '<li class="log_id_' . $log_entry['id'] . '">' . $log_entry['msg_html'] . '</li>';
                }
            }
        } else {
            echo '<li>(' . __('No log yet.', 'gwolle-gb') . ')</li>';
        }
        ?>
												</ul>
											</div>
										</div>
									</div>
								</div><!-- .postbox -->
							</div><!-- .side-sortables -->
						</div><!-- #postbox-container-1 -->

						<br class="clear" />

					</div><!-- .post-body -->
				</div><!-- .poststuff -->
			</form>
		</div>

		<?php 
    }
}
Example #5
0
function gwolle_gb_get_entries($args = array())
{
    global $wpdb;
    $where = " 1 = %d";
    $values = array(1);
    if (!is_array($args)) {
        return false;
    }
    if (isset($args['checked'])) {
        if ($args['checked'] == 'checked' || $args['checked'] == 'unchecked') {
            $where .= "\n\t\t\t\tAND\n\t\t\t\tischecked = %d";
            if ($args['checked'] == 'checked') {
                $values[] = 1;
            } else {
                if ($args['checked'] == 'unchecked') {
                    $values[] = 0;
                }
            }
        }
    }
    if (isset($args['spam'])) {
        if ($args['spam'] == 'spam' || $args['spam'] == 'nospam') {
            $where .= "\n\t\t\t\tAND\n\t\t\t\tisspam = %d";
            if ($args['spam'] == 'spam') {
                $values[] = 1;
            } else {
                if ($args['spam'] == 'nospam') {
                    $values[] = 0;
                }
            }
        }
    }
    if (isset($args['trash'])) {
        if ($args['trash'] == 'trash' || $args['trash'] == 'notrash') {
            $where .= "\n\t\t\t\tAND\n\t\t\t\tistrash = %d";
            if ($args['trash'] == 'trash') {
                $values[] = 1;
            } else {
                if ($args['trash'] == 'notrash') {
                    $values[] = 0;
                }
            }
        }
    }
    if (isset($args['author_id'])) {
        $where .= "\n\t\t\tAND\n\t\t\tauthor_id = %d";
        $values[] = (int) $args['author_id'];
    }
    if (isset($args['email'])) {
        $where .= "\n\t\t\tAND\n\t\t\tauthor_email = %s";
        $values[] = $args['email'];
    }
    if (isset($args['no_moderators'])) {
        $no_moderators = $args['no_moderators'];
        if ($no_moderators === 'true') {
            $users = gwolle_gb_get_moderators();
            if (is_array($users) && !empty($users)) {
                foreach ($users as $user_info) {
                    $where .= "\n\t\t\t\t\t\tAND\n\t\t\t\t\t\tauthor_id != %d";
                    $values[] = $user_info->ID;
                }
            }
        }
    }
    if (isset($args['book_id'])) {
        $where .= "\n\t\t\tAND\n\t\t\tbook_id = %d";
        $values[] = (int) $args['book_id'];
    }
    // Offset
    $offset = " OFFSET 0 ";
    // default
    if (isset($args['offset']) && (int) $args['offset'] > 0) {
        $offset = " OFFSET " . (int) $args['offset'];
    }
    // Limit
    if (is_admin()) {
        $perpage_option = (int) get_option('gwolle_gb-entries_per_page', 20);
    } else {
        $perpage_option = (int) get_option('gwolle_gb-entriesPerPage', 20);
    }
    $limit = " LIMIT " . $perpage_option;
    // default
    if (isset($args['num_entries']) && (int) $args['num_entries'] > 0) {
        $limit = " LIMIT " . (int) $args['num_entries'];
    } else {
        if (isset($args['num_entries']) && (int) $args['num_entries'] == -1) {
            $limit = ' LIMIT 999999999999999 ';
            $offset = ' OFFSET 0 ';
        }
    }
    $tablename = $wpdb->prefix . "gwolle_gb_entries";
    $sql = "\n\t\t\tSELECT\n\t\t\t\t`id`,\n\t\t\t\t`author_name`,\n\t\t\t\t`author_id`,\n\t\t\t\t`author_email`,\n\t\t\t\t`author_origin`,\n\t\t\t\t`author_website`,\n\t\t\t\t`author_ip`,\n\t\t\t\t`author_host`,\n\t\t\t\t`content`,\n\t\t\t\t`datetime`,\n\t\t\t\t`ischecked`,\n\t\t\t\t`checkedby`,\n\t\t\t\t`istrash`,\n\t\t\t\t`isspam`,\n\t\t\t\t`admin_reply`,\n\t\t\t\t`admin_reply_uid`,\n\t\t\t\t`book_id`\n\t\t\tFROM\n\t\t\t\t" . $tablename . "\n\t\t\tWHERE\n\t\t\t\t" . $where . "\n\t\t\tORDER BY\n\t\t\t\tdatetime DESC\n\t\t\t" . $limit . " " . $offset . "\n\t\t\t;";
    $sql = $wpdb->prepare($sql, $values);
    $datalist = $wpdb->get_results($sql, ARRAY_A);
    //$wpdb->print_error();
    //echo "number of rows: " . $wpdb->num_rows;
    if (is_array($datalist) && !empty($datalist)) {
        $entries = array();
        foreach ($datalist as $data) {
            // Use the fields that the setter method expects
            $item = array('id' => (int) $data['id'], 'author_name' => stripslashes($data['author_name']), 'author_id' => (int) $data['author_id'], 'author_email' => stripslashes($data['author_email']), 'author_origin' => stripslashes($data['author_origin']), 'author_website' => stripslashes($data['author_website']), 'author_ip' => $data['author_ip'], 'author_host' => $data['author_host'], 'content' => stripslashes($data['content']), 'datetime' => $data['datetime'], 'ischecked' => (int) $data['ischecked'], 'checkedby' => (int) $data['checkedby'], 'istrash' => (int) $data['istrash'], 'isspam' => (int) $data['isspam'], 'admin_reply' => stripslashes($data['admin_reply']), 'admin_reply_uid' => (int) $data['admin_reply_uid'], 'book_id' => (int) $data['book_id']);
            $entry = new gwolle_gb_entry();
            $entry->set_data($item);
            // Add entry to the array of all entries
            $entries[] = $entry;
        }
        return $entries;
    }
    return false;
}
Example #6
0
function gwolle_gb_frontend_posthandling()
{
    global $wpdb, $gwolle_gb_errors, $gwolle_gb_error_fields, $gwolle_gb_messages, $gwolle_gb_data;
    /*
     * Handle $_POST and check and save entry.
     */
    if (isset($_POST['gwolle_gb_function']) && $_POST['gwolle_gb_function'] == 'add_entry') {
        // Initialize errors
        $gwolle_gb_errors = false;
        $gwolle_gb_error_fields = array();
        // Initialize messages
        $gwolle_gb_messages = '';
        // Option to allow only logged-in users to post. Don't show the form if not logged-in.
        if (!is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true') {
            $gwolle_gb_errors = true;
            $gwolle_gb_messages .= '<p class="require_login"><strong>' . __('Submitting a new guestbook entry is only allowed for logged-in users.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
            return;
        }
        /*
         * Collect data from the Form
         */
        $gwolle_gb_data = array();
        $form_setting = gwolle_gb_get_setting('form');
        /* Name */
        if (isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_name'])) {
                $gwolle_gb_data['author_name'] = trim($_POST['gwolle_gb_author_name']);
                $gwolle_gb_data['author_name'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['author_name'], 'author_name');
                if ($gwolle_gb_data['author_name'] == "") {
                    if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'name';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'name';
                    // mandatory
                }
            }
        }
        /* City / Origin */
        if (isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_origin'])) {
                $gwolle_gb_data['author_origin'] = trim($_POST['gwolle_gb_author_origin']);
                $gwolle_gb_data['author_origin'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['author_origin'], 'author_origin');
                if ($gwolle_gb_data['author_origin'] == "") {
                    if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_origin';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_origin';
                    // mandatory
                }
            }
        }
        /* Email */
        if (isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_email'])) {
                $gwolle_gb_data['author_email'] = trim($_POST['gwolle_gb_author_email']);
                if (filter_var($gwolle_gb_data['author_email'], FILTER_VALIDATE_EMAIL)) {
                    // Valid Email address.
                } else {
                    if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_email';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_email';
                    // mandatory
                }
            }
        }
        /* Website / Homepage */
        if (isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_website'])) {
                $gwolle_gb_data['author_website'] = trim($_POST['gwolle_gb_author_website']);
                $pattern = '/^http/';
                if (!preg_match($pattern, $gwolle_gb_data['author_website'], $matches)) {
                    $gwolle_gb_data['author_website'] = "http://" . $gwolle_gb_data['author_website'];
                }
                if (filter_var($gwolle_gb_data['author_website'], FILTER_VALIDATE_URL)) {
                    // Valid Website URL.
                } else {
                    if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_website';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_website';
                    // mandatory
                }
            }
        }
        /* Message */
        if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_content'])) {
                $gwolle_gb_data['content'] = trim($_POST['gwolle_gb_content']);
                if ($gwolle_gb_data['content'] == "") {
                    if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'content';
                        // mandatory
                    }
                } else {
                    $gwolle_gb_data['content'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['content'], 'content');
                }
            } else {
                if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'content';
                    // mandatory
                }
            }
        }
        /* Custom Anti-Spam */
        if (isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true') {
            $antispam_question = gwolle_gb_sanitize_output(get_option('gwolle_gb-antispam-question'));
            $antispam_answer = gwolle_gb_sanitize_output(get_option('gwolle_gb-antispam-answer'));
            if (isset($antispam_question) && strlen($antispam_question) > 0 && isset($antispam_answer) && strlen($antispam_answer) > 0) {
                if (isset($_POST["gwolle_gb_antispam_answer"]) && trim($_POST["gwolle_gb_antispam_answer"]) == trim($antispam_answer)) {
                    //echo "You got it!";
                } else {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'antispam';
                    // mandatory
                }
            }
            if (isset($_POST["gwolle_gb_antispam_answer"])) {
                $gwolle_gb_data['antispam'] = trim($_POST['gwolle_gb_antispam_answer']);
            }
        }
        /* CAPTCHA */
        if (isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true') {
            if (class_exists('ReallySimpleCaptcha')) {
                $gwolle_gb_captcha = new ReallySimpleCaptcha();
                // This variable holds the CAPTCHA image prefix, which corresponds to the correct answer
                $gwolle_gb_captcha_prefix = $_POST['gwolle_gb_captcha_prefix'];
                // This variable holds the CAPTCHA response, entered by the user
                $gwolle_gb_captcha_code = $_POST['gwolle_gb_captcha_code'];
                // Validate the CAPTCHA response
                $gwolle_gb_captcha_correct = $gwolle_gb_captcha->check($gwolle_gb_captcha_prefix, $gwolle_gb_captcha_code);
                // If CAPTCHA validation fails (incorrect value entered in CAPTCHA field) mark comment as spam.
                if (true != $gwolle_gb_captcha_correct) {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'captcha';
                    // mandatory
                    //$gwolle_gb_messages .= '<p style="display_:none"><strong>' . $gwolle_gb_captcha_correct . '</strong></p>';
                } else {
                    // verified!
                    //$gwolle_gb_messages .= '<p class="error_fields"><strong>Verified.</strong></p>';
                }
                // clean up the tmp directory
                $gwolle_gb_captcha->remove($gwolle_gb_captcha_prefix);
                $gwolle_gb_captcha->cleanup();
            }
        }
        /* If there are errors, stop here and return false */
        if (is_array($gwolle_gb_error_fields) && !empty($gwolle_gb_error_fields)) {
            // There was no data filled in, even though that was mandatory.
            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('There were errors submitting your guestbook entry.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
            if (isset($gwolle_gb_error_fields)) {
                foreach ($gwolle_gb_error_fields as $field) {
                    switch ($field) {
                        case 'name':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your name is not filled in, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'author_origin':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your origin is not filled in, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'author_email':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your e-mail address is not filled in correctly, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'author_website':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your website is not filled in, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'content':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('There is no message, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'antispam':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('The anti-spam question was not answered correctly, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                        case 'captcha':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('The CAPTCHA was not filled in correctly, even though it is mandatory.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                            break;
                    }
                }
            }
            $gwolle_gb_messages .= '<p class="error_fields" style="display: none;">' . print_r($gwolle_gb_error_fields, true) . '</p>';
            return false;
            // no need to check and save
        }
        /* New Instance of gwolle_gb_entry. */
        $entry = new gwolle_gb_entry();
        /* Set the data in the instance */
        $set_data = $entry->set_data($gwolle_gb_data);
        if (!$set_data) {
            // Data is not set in the Instance, something happened
            $gwolle_gb_errors = true;
            $gwolle_gb_messages .= '<p class="set_data"><strong>' . __('There were errors submitting your guestbook entry.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
            return false;
        }
        /* Check for spam and set accordingly */
        $isspam = gwolle_gb_akismet($entry, 'comment-check');
        if ($isspam) {
            // Returned true, so considered spam
            $entry->set_isspam(true);
            // Is it wise to make them any wiser? Probably not...
            // $gwolle_gb_messages .= '<p><strong>' . __('Your guestbook entry is probably spam. A moderator will decide upon it.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
        }
        /* if Moderation is off, set it to "ischecked" */
        $user_id = get_current_user_id();
        // returns 0 if no current user
        if (get_option('gwolle_gb-moderate-entries', 'true') == 'true') {
            if (gwolle_gb_is_moderator($user_id)) {
                $entry->set_ischecked(true);
            } else {
                $entry->set_ischecked(false);
            }
        } else {
            // First set to checked
            $entry->set_ischecked(true);
            // Check for abusive content (too long words). Set it to unchecked, so manual moderation is needed.
            $maxlength = 100;
            $words = explode(" ", $entry->get_content());
            foreach ($words as $word) {
                if (strlen($word) > $maxlength) {
                    $entry->set_ischecked(false);
                    break;
                }
            }
            $maxlength = 60;
            $words = explode(" ", $entry->get_author_name());
            foreach ($words as $word) {
                if (strlen($word) > $maxlength) {
                    $entry->set_ischecked(false);
                    break;
                }
            }
        }
        /* Check for logged in user, and set the userid as author_id, just in case someone is also admin, or gets promoted some day */
        $entry->set_author_id($user_id);
        /*
         * Network Information
         */
        $entry->set_author_ip($_SERVER['REMOTE_ADDR']);
        $entry->set_author_host(gethostbyaddr($_SERVER['REMOTE_ADDR']));
        /*
         * Check for double post using email field and content.
         * Only if content is mandatory.
         */
        if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
            $entries = gwolle_gb_get_entries(array('email' => $entry->get_author_email()));
            if (is_array($entries) && !empty($entries)) {
                foreach ($entries as $entry_email) {
                    if ($entry_email->get_content() == $entry->get_content()) {
                        // Match is double entry
                        $gwolle_gb_errors = true;
                        $gwolle_gb_messages .= '<p class="double_post"><strong>' . __('Double post: An entry with the data you entered has already been saved.', GWOLLE_GB_TEXTDOMAIN) . '</strong></p>';
                        return false;
                    }
                }
            }
        }
        /*
         * Save the Entry
         */
        // $save = ""; // Testing mode
        $save = $entry->save();
        //if ( WP_DEBUG ) { echo "save: "; var_dump($save); }
        if ($save) {
            // We have been saved to the Database
            $gwolle_gb_messages .= '<p class="entry_saved">' . __('Thank you for your entry.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
            if ($entry->get_ischecked() == 0) {
                $gwolle_gb_messages .= '<p>' . __('We will review it and unlock it in a short while.', GWOLLE_GB_TEXTDOMAIN) . '</p>';
            }
        }
        /*
         * Update Cache plugins
         */
        if ($entry->get_ischecked() == 1) {
            gwolle_gb_clear_cache();
        }
        /*
         * Send the Notification Mail to moderators that have subscribed (only when it is not Spam)
         */
        if (!$isspam) {
            $subscribers = array();
            $recipients = get_option('gwolle_gb-notifyByMail', array());
            if (count($recipients) > 0) {
                $recipients = explode(",", $recipients);
                foreach ($recipients as $recipient) {
                    if (is_numeric($recipient)) {
                        $userdata = get_userdata($recipient);
                        $subscribers[] = $userdata->user_email;
                    }
                }
            }
            @ini_set('sendmail_from', get_bloginfo('admin_mail'));
            // Set the Mail Content
            $mailTags = array('user_email', 'user_name', 'status', 'entry_management_url', 'blog_name', 'blog_url', 'wp_admin_url', 'entry_content', 'author_ip');
            $mail_body = gwolle_gb_sanitize_output(get_option('gwolle_gb-adminMailContent', false));
            if (!$mail_body) {
                $mail_body = __("\nHello,\n\nThere is a new guestbook entry at '%blog_name%'.\nYou can check it at %entry_management_url%.\n\nHave a nice day.\nYour Gwolle-GB-Mailer\n\n\nWebsite address: %blog_url%\nUser name: %user_name%\nUser email: %user_email%\nEntry status: %status%\nEntry content:\n%entry_content%\n", GWOLLE_GB_TEXTDOMAIN);
            }
            // Set the Mail Headers
            $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . __('New Guestbook Entry', GWOLLE_GB_TEXTDOMAIN);
            $header = "";
            if (get_option('gwolle_gb-mail-from', false)) {
                $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_option('gwolle_gb-mail-from') . ">\r\n";
            } else {
                $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_bloginfo('admin_email') . ">\r\n";
            }
            $header .= "Content-Type: text/plain; charset=UTF-8\r\n";
            // Encoding of the mail
            // Replace the tags from the mailtemplate with real data from the website and entry
            $info['user_name'] = gwolle_gb_sanitize_output($entry->get_author_name());
            $info['user_email'] = $entry->get_author_email();
            $info['blog_name'] = get_bloginfo('name');
            $info['blog_url'] = get_bloginfo('wpurl');
            $info['wp_admin_url'] = $info['blog_url'] . '/wp-admin';
            $info['entry_management_url'] = $info['wp_admin_url'] . '/admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id();
            $info['entry_content'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output($entry->get_content()));
            $info['author_ip'] = $_SERVER['REMOTE_ADDR'];
            if ($entry->get_ischecked()) {
                $info['status'] = __('Checked', GWOLLE_GB_TEXTDOMAIN);
            } else {
                $info['status'] = __('Unchecked', GWOLLE_GB_TEXTDOMAIN);
            }
            // The last tags are bloginfo-based
            for ($tagNum = 0; $tagNum < count($mailTags); $tagNum++) {
                $mail_body = str_replace('%' . $mailTags[$tagNum] . '%', $info[$mailTags[$tagNum]], $mail_body);
                $mail_body = gwolle_gb_format_values_for_mail($mail_body);
            }
            if (is_array($subscribers) && !empty($subscribers)) {
                foreach ($subscribers as $subscriber) {
                    wp_mail($subscriber, $subject, $mail_body, $header);
                }
            }
        }
        /*
         * Send Notification Mail to the author if set to true in an option
         */
        if (!$isspam) {
            if (get_option('gwolle_gb-mail_author', 'false') == 'true') {
                // Set the Mail Content
                $mailTags = array('user_email', 'user_name', 'blog_name', 'blog_url', 'entry_content');
                $mail_body = gwolle_gb_sanitize_output(get_option('gwolle_gb-authorMailContent', false));
                if (!$mail_body) {
                    $mail_body = __("\nHello,\n\nYou have just posted a new guestbook entry at '%blog_name%'.\n\nHave a nice day.\nThe editors at %blog_name%.\n\n\nWebsite address: %blog_url%\nUser name: %user_name%\nUser email: %user_email%\nEntry content:\n%entry_content%\n", GWOLLE_GB_TEXTDOMAIN);
                }
                // Set the Mail Headers
                $subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . __('New Guestbook Entry', GWOLLE_GB_TEXTDOMAIN);
                $header = "";
                if (get_option('gwolle_gb-mail-from', false)) {
                    $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . gwolle_gb_sanitize_output(get_option('gwolle_gb-mail-from')) . ">\r\n";
                } else {
                    $header .= "From: " . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . " <" . get_bloginfo('admin_email') . ">\r\n";
                }
                $header .= "Content-Type: text/plain; charset=UTF-8\r\n";
                // Encoding of the mail
                // Replace the tags from the mailtemplate with real data from the website and entry
                $info['user_name'] = gwolle_gb_sanitize_output($entry->get_author_name());
                $info['user_email'] = $entry->get_author_email();
                $info['blog_name'] = get_bloginfo('name');
                $info['blog_url'] = get_bloginfo('wpurl');
                $info['entry_content'] = gwolle_gb_format_values_for_mail(gwolle_gb_sanitize_output($entry->get_content()));
                for ($tagNum = 0; $tagNum < count($mailTags); $tagNum++) {
                    $mail_body = str_replace('%' . $mailTags[$tagNum] . '%', $info[$mailTags[$tagNum]], $mail_body);
                    $mail_body = gwolle_gb_format_values_for_mail($mail_body);
                }
                wp_mail($entry->get_author_email(), $subject, $mail_body, $header);
            }
        }
        /*
         * No Log for the Entry needed, it has a default post date in the Entry itself.
         */
    }
}
Example #7
0
function gwolle_gb_frontend_posthandling()
{
    global $wpdb, $gwolle_gb_errors, $gwolle_gb_error_fields, $gwolle_gb_messages, $gwolle_gb_data;
    /*
     * Handle $_POST and check and save entry.
     */
    if (isset($_POST['gwolle_gb_function']) && $_POST['gwolle_gb_function'] == 'add_entry') {
        // Initialize errors
        $gwolle_gb_errors = false;
        $gwolle_gb_error_fields = array();
        // Initialize messages
        $gwolle_gb_messages = '';
        // Option to allow only logged-in users to post. Don't show the form if not logged-in.
        if (!is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true') {
            $gwolle_gb_errors = true;
            $gwolle_gb_messages .= '<p class="require_login"><strong>' . __('Submitting a new guestbook entry is only allowed for logged-in users.', 'gwolle-gb') . '</strong></p>';
            return;
        }
        /*
         * Collect data from the Form
         */
        $gwolle_gb_data = array();
        $form_setting = gwolle_gb_get_setting('form');
        /* Name */
        if (isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_name'])) {
                $gwolle_gb_data['author_name'] = trim($_POST['gwolle_gb_author_name']);
                $gwolle_gb_data['author_name'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['author_name'], 'author_name');
                if ($gwolle_gb_data['author_name'] == "") {
                    if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'name';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'name';
                    // mandatory
                }
            }
        }
        /* City / Origin */
        if (isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_origin'])) {
                $gwolle_gb_data['author_origin'] = trim($_POST['gwolle_gb_author_origin']);
                $gwolle_gb_data['author_origin'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['author_origin'], 'author_origin');
                if ($gwolle_gb_data['author_origin'] == "") {
                    if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_origin';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_origin';
                    // mandatory
                }
            }
        }
        /* Email */
        if (isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_email'])) {
                $gwolle_gb_data['author_email'] = trim($_POST['gwolle_gb_author_email']);
                if (filter_var($gwolle_gb_data['author_email'], FILTER_VALIDATE_EMAIL)) {
                    // Valid Email address.
                } else {
                    if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_email';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_email';
                    // mandatory
                }
            }
        } else {
            if (isset($_POST['gwolle_gb_author_email'])) {
                $gwolle_gb_data['author_email'] = trim($_POST['gwolle_gb_author_email']);
            }
        }
        /* Website / Homepage */
        if (isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_author_website'])) {
                $gwolle_gb_data['author_website'] = trim($_POST['gwolle_gb_author_website']);
                $pattern = '/^http/';
                if (!preg_match($pattern, $gwolle_gb_data['author_website'], $matches)) {
                    $gwolle_gb_data['author_website'] = "http://" . $gwolle_gb_data['author_website'];
                }
                if (filter_var($gwolle_gb_data['author_website'], FILTER_VALIDATE_URL)) {
                    // Valid Website URL.
                } else {
                    if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'author_website';
                        // mandatory
                    }
                }
            } else {
                if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'author_website';
                    // mandatory
                }
            }
        }
        /* Message */
        if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true') {
            if (isset($_POST['gwolle_gb_content'])) {
                $gwolle_gb_data['content'] = trim($_POST['gwolle_gb_content']);
                if ($gwolle_gb_data['content'] == "") {
                    if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
                        $gwolle_gb_errors = true;
                        $gwolle_gb_error_fields[] = 'content';
                        // mandatory
                    }
                } else {
                    $gwolle_gb_data['content'] = gwolle_gb_maybe_encode_emoji($gwolle_gb_data['content'], 'content');
                }
            } else {
                if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'content';
                    // mandatory
                }
            }
        }
        /* Custom Anti-Spam */
        if (isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true') {
            $antispam_question = gwolle_gb_sanitize_output(get_option('gwolle_gb-antispam-question'));
            $antispam_answer = gwolle_gb_sanitize_output(get_option('gwolle_gb-antispam-answer'));
            if (isset($antispam_question) && strlen($antispam_question) > 0 && isset($antispam_answer) && strlen($antispam_answer) > 0) {
                if (isset($_POST["gwolle_gb_antispam_answer"]) && trim($_POST["gwolle_gb_antispam_answer"]) == trim($antispam_answer)) {
                    //echo "You got it!";
                } else {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'antispam';
                    // mandatory
                }
            }
            if (isset($_POST["gwolle_gb_antispam_answer"])) {
                $gwolle_gb_data['antispam'] = trim($_POST['gwolle_gb_antispam_answer']);
            }
        }
        /* CAPTCHA */
        if (isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true') {
            if (class_exists('ReallySimpleCaptcha')) {
                $gwolle_gb_captcha = new ReallySimpleCaptcha();
                // This variable holds the CAPTCHA image prefix, which corresponds to the correct answer
                $gwolle_gb_captcha_prefix = $_POST['gwolle_gb_captcha_prefix'];
                // This variable holds the CAPTCHA response, entered by the user
                $gwolle_gb_captcha_code = $_POST['gwolle_gb_captcha_code'];
                // Validate the CAPTCHA response
                $gwolle_gb_captcha_correct = $gwolle_gb_captcha->check($gwolle_gb_captcha_prefix, $gwolle_gb_captcha_code);
                // If CAPTCHA validation fails (incorrect value entered in CAPTCHA field) mark comment as spam.
                if (true != $gwolle_gb_captcha_correct) {
                    $gwolle_gb_errors = true;
                    $gwolle_gb_error_fields[] = 'captcha';
                    // mandatory
                    //$gwolle_gb_messages .= '<p style="display_:none"><strong>' . $gwolle_gb_captcha_correct . '</strong></p>';
                } else {
                    // verified!
                    //$gwolle_gb_messages .= '<p class="error_fields"><strong>Verified.</strong></p>';
                }
                // clean up the tmp directory
                $gwolle_gb_captcha->remove($gwolle_gb_captcha_prefix);
                $gwolle_gb_captcha->cleanup();
            }
        }
        /* If there are errors, stop here and return false */
        if (is_array($gwolle_gb_error_fields) && !empty($gwolle_gb_error_fields)) {
            // There was no data filled in, even though that was mandatory.
            // $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('There were errors submitting your guestbook entry.', 'gwolle-gb') . '</strong></p>';
            if (isset($gwolle_gb_error_fields)) {
                foreach ($gwolle_gb_error_fields as $field) {
                    switch ($field) {
                        case 'name':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>Des mots aussi beaux, ça mérite une signature non ?</strong></p>';
                            break;
                        case 'author_origin':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your origin is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>';
                            break;
                        case 'author_email':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your e-mail address is not filled in correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>';
                            break;
                        case 'author_website':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('Your website is not filled in, even though it is mandatory.', 'gwolle-gb') . '</strong></p>';
                            break;
                        case 'content':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>Tu as oublié les mots doux ' . $gwolle_gb_data['author_name'] . ' :) !</strong></p>';
                            break;
                        case 'antispam':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('The anti-spam question was not answered correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>';
                            break;
                        case 'captcha':
                            $gwolle_gb_messages .= '<p class="error_fields"><strong>' . __('The CAPTCHA was not filled in correctly, even though it is mandatory.', 'gwolle-gb') . '</strong></p>';
                            break;
                    }
                }
            }
            $gwolle_gb_messages .= '<p class="error_fields" style="display: none;">' . print_r($gwolle_gb_error_fields, true) . '</p>';
            return false;
            // no need to check and save
        }
        /* New Instance of gwolle_gb_entry. */
        $entry = new gwolle_gb_entry();
        /* Set the data in the instance */
        $set_data = $entry->set_data($gwolle_gb_data);
        if (!$set_data) {
            // Data is not set in the Instance, something happened
            $gwolle_gb_errors = true;
            $gwolle_gb_messages .= '<p class="set_data"><strong>' . __('There were errors submitting your guestbook entry.', 'gwolle-gb') . '</strong></p>';
            return false;
        }
        /* Check for spam and set accordingly */
        $isspam = gwolle_gb_akismet($entry, 'comment-check');
        if ($isspam) {
            // Returned true, so considered spam
            $entry->set_isspam(true);
            // Is it wise to make them any wiser? Probably not...
            // $gwolle_gb_messages .= '<p><strong>' . __('Your guestbook entry is probably spam. A moderator will decide upon it.', 'gwolle-gb') . '</strong></p>';
        }
        /* if Moderation is off, set it to "ischecked" */
        $user_id = get_current_user_id();
        // returns 0 if no current user
        if (get_option('gwolle_gb-moderate-entries', 'true') == 'true') {
            if (gwolle_gb_is_moderator($user_id)) {
                $entry->set_ischecked(true);
            } else {
                $entry->set_ischecked(false);
            }
        } else {
            // First set to checked
            $entry->set_ischecked(true);
            // Check for abusive content (too long words). Set it to unchecked, so manual moderation is needed.
            $maxlength = 100;
            $words = explode(" ", $entry->get_content());
            foreach ($words as $word) {
                if (strlen($word) > $maxlength) {
                    $entry->set_ischecked(false);
                    break;
                }
            }
            $maxlength = 60;
            $words = explode(" ", $entry->get_author_name());
            foreach ($words as $word) {
                if (strlen($word) > $maxlength) {
                    $entry->set_ischecked(false);
                    break;
                }
            }
        }
        $entry->set_ischecked(false);
        /* Check for logged in user, and set the userid as author_id, just in case someone is also admin, or gets promoted some day */
        $entry->set_author_id($user_id);
        /*
         * Network Information
         */
        $entry->set_author_ip($_SERVER['REMOTE_ADDR']);
        $entry->set_author_host(gethostbyaddr($_SERVER['REMOTE_ADDR']));
        /*
         * Book ID
         */
        if (isset($_POST['gwolle_gb_book_id'])) {
            $gwolle_gb_data['book_id'] = (int) $_POST['gwolle_gb_book_id'];
        }
        if ($gwolle_gb_data['book_id'] < 1) {
            $gwolle_gb_data['book_id'] = 1;
        }
        $entry->set_book_id($gwolle_gb_data['book_id']);
        /*
         * Check for double post using email field and content.
         * Only if content is mandatory.
         */
        if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') {
            $entries = gwolle_gb_get_entries(array('email' => $entry->get_author_email()));
            if (is_array($entries) && !empty($entries)) {
                foreach ($entries as $entry_email) {
                    if ($entry_email->get_content() == $entry->get_content()) {
                        // Match is double entry
                        $gwolle_gb_errors = true;
                        $gwolle_gb_messages .= '<p class="double_post"><strong>' . __('Double post: An entry with the data you entered has already been saved.', 'gwolle-gb') . '</strong></p>';
                        return false;
                    }
                }
            }
        }
        /*
         * Save the Entry
         */
        // $save = ""; // Testing mode
        $save = $entry->save();
        //if ( WP_DEBUG ) { echo "save: "; var_dump($save); }
        if ($save) {
            // We have been saved to the Database
            $gwolle_gb_messages .= '<p class="entry_saved">Merci pour ton message ' . $gwolle_gb_data['author_name'] . ' !</p>';
            if ($entry->get_ischecked() == 0) {
                $gwolle_gb_messages .= '<p>Il apparaîtra bientôt sur le site !</p>';
            }
        }
        /*
         * Update Cache plugins
         */
        if ($entry->get_ischecked() == 1) {
            gwolle_gb_clear_cache();
        }
        /*
         * Send the Notification Mail to moderators that have subscribed (only when it is not Spam)
         */
        gwolle_gb_mail_moderators($entry);
        /*
         * Send Notification Mail to the author if set to true in an option
         */
        gwolle_gb_mail_author($entry);
        /*
         * No Log for the Entry needed, it has a default post date in the Entry itself.
         */
    }
}
Example #8
0
        /** @see WP_Widget::widget */
        function widget($args, $instance)
        {
            extract($args);
            $default_value = array("title" => __('Guestbook', GWOLLE_GB_TEXTDOMAIN), "num_entries" => 5, "best" => '', "name" => 1, "date" => 1, "num_words" => 10, "link_text" => __('Visit guestbook', GWOLLE_GB_TEXTDOMAIN), "postid" => 0);
            $instance = wp_parse_args((array) $instance, $default_value);
            $widget_title = esc_attr($instance['title']);
            $num_entries = (int) esc_attr($instance['num_entries']);
            $best = esc_attr($instance['best']);
            $best = explode(",", $best);
            $name = (int) esc_attr($instance['name']);
            $date = (int) esc_attr($instance['date']);
            $num_words = (int) esc_attr($instance['num_words']);
            $link_text = esc_attr($instance['link_text']);
            $postid = (int) esc_attr($instance['postid']);
            // Init
            $widget_html = '';
            $widget_html .= $before_widget;
            $widget_html .= '<div class="gwolle_gb_widget">';
            if ($widget_title !== FALSE) {
                $widget_html .= $before_title . apply_filters('widget_title', $widget_title) . $after_title;
            }
            $widget_html .= '<ul class="gwolle_gb_widget">';
            $counter = 0;
            // Get the best entries first
            if (is_array($best) && !empty($best)) {
                foreach ($best as $entry_id) {
                    if ($counter == $num_entries) {
                        break;
                    }
                    // we have enough
                    $entry = new gwolle_gb_entry();
                    $entry_id = intval($entry_id);
                    if (isset($entry_id) && $entry_id > 0) {
                        $result = $entry->load($entry_id);
                        if (!$result) {
                            // No entry loaded
                            continue;
                        }
                        // Main Content
                        $widget_html .= '
										<li class="gwolle_gb_widget">
										';
                        if ($name) {
                            $widget_html .= '<span class="gb-author-name">' . $entry->get_author_name() . '</span>';
                        }
                        if ($name && $date) {
                            $widget_html .= " / ";
                        }
                        if ($date) {
                            $widget_html .= '<span class="gb-date">' . date_i18n(get_option('date_format'), $entry->get_datetime()) . '</span>';
                        }
                        if ($name || $date) {
                            $widget_html .= ":<br />";
                        }
                        $entry_content = gwolle_gb_get_excerpt(gwolle_gb_bbcode_strip($entry->get_content()), $num_words);
                        if (get_option('gwolle_gb-showSmilies', 'true') === 'true') {
                            $entry_content = convert_smilies($entry_content);
                        }
                        $widget_html .= '<span class="gb-entry-content">' . $entry_content . '</span';
                        $widget_html .= '
										</li>
										';
                        $counter++;
                    }
                }
            }
            // Get the latest $num_entries guestbook entries
            if ($counter != $num_entries) {
                // we have enough
                $entries = gwolle_gb_get_entries(array('num_entries' => $num_entries, 'checked' => 'checked', 'trash' => 'notrash', 'spam' => 'nospam'));
                if (is_array($entries) && !empty($entries)) {
                    foreach ($entries as $entry) {
                        if ($counter == $num_entries) {
                            break;
                        }
                        // we have enough
                        if (is_array($best) && in_array($entry->get_id(), $best)) {
                            continue;
                        }
                        // already listed
                        // Main Content
                        $widget_html .= '
										<li class="gwolle_gb_widget">
										';
                        if ($name) {
                            $widget_html .= '<span class="gb-author-name">' . $entry->get_author_name() . '</span>';
                        }
                        if ($name && $date) {
                            $widget_html .= " / ";
                        }
                        if ($date) {
                            $widget_html .= '<span class="gb-date">' . date_i18n(get_option('date_format'), $entry->get_datetime()) . '</span>';
                        }
                        if ($name || $date) {
                            $widget_html .= ":<br />";
                        }
                        $entry_content = gwolle_gb_get_excerpt(gwolle_gb_bbcode_strip($entry->get_content()), $num_words);
                        if (get_option('gwolle_gb-showSmilies', 'true') === 'true') {
                            $entry_content = convert_smilies($entry_content);
                        }
                        $widget_html .= '<span class="gb-entry-content">' . $entry_content . '</span>';
                        $widget_html .= '
										</li>
										';
                        $counter++;
                    }
                }
            }
            $widget_html .= '</ul>';
            // Post the link to the Guestbook.
            if ((int) $postid > 0) {
                $widget_html .= '
				<p class="gwolle_gb_link">
					<a href="' . add_query_arg('p', $postid, get_home_url()) . '" title="' . __('Click here to get to the guestbook.', GWOLLE_GB_TEXTDOMAIN) . '">' . $link_text . ' &raquo;</a>
				</p>';
            }
            $widget_html .= '</div>' . $after_widget;
            if ($counter > 0) {
                // Only display widget if there are any entries
                echo $widget_html;
                // Load Frontend CSS in Footer, only when it's active
                wp_enqueue_style('gwolle_gb_frontend_css');
            }
        }