function gwolle_gb_frontend_write($shortcode_atts) { global $gwolle_gb_errors, $gwolle_gb_error_fields, $gwolle_gb_messages, $gwolle_gb_data; $html5 = current_theme_supports('html5'); $output = ''; // Set data up for refilling an already submitted form that had errors $name = ''; $origin = ''; $email = ''; $website = ''; $antispam = ''; $content = ''; // Auto-fill the form if the user is already logged in $user_id = get_current_user_id(); // returns 0 if no current user if ($user_id > 0) { $userdata = get_userdata($user_id); if (is_object($userdata)) { if (isset($userdata->display_name)) { $name = $userdata->display_name; } else { $name = $userdata->user_login; } $email = $userdata->user_email; $website = $userdata->user_url; } } // Only show old data when there are errors if ($gwolle_gb_errors) { if (is_array($gwolle_gb_data) && !empty($gwolle_gb_data)) { if (isset($gwolle_gb_data['author_name'])) { $name = stripslashes($gwolle_gb_data['author_name']); } if (isset($gwolle_gb_data['author_origin'])) { $origin = stripslashes($gwolle_gb_data['author_origin']); } if (isset($gwolle_gb_data['author_email'])) { $email = stripslashes($gwolle_gb_data['author_email']); } if (isset($gwolle_gb_data['author_website'])) { $website = stripslashes($gwolle_gb_data['author_website']); } if (isset($gwolle_gb_data['antispam'])) { $antispam = stripslashes($gwolle_gb_data['antispam']); } if (isset($gwolle_gb_data['content'])) { $content = stripslashes($gwolle_gb_data['content']); } } } // Initialize errors, if not set if (empty($gwolle_gb_error_fields)) { $gwolle_gb_error_fields = array(); } /* * Handle Messaging to the user */ $class = ""; if ($gwolle_gb_errors) { $class = "error"; } if (isset($gwolle_gb_messages) && $gwolle_gb_messages != '') { $output .= "<div id='gwolle_gb_messages' class='{$class}'>"; $output .= $gwolle_gb_messages; $output .= "</div>"; } $popuptitle = 'Merci ...'; if (strpos($gwolle_gb_messages, 'signature') !== false && strpos($gwolle_gb_messages, 'doux') !== false) { $popuptitle = 'Oups ...'; $gwolle_gb_messages = '<p class="error_fields"><strong>Ni les mots doux, ni le nom .. Quelle tristesse.</strong></p>'; } if (strpos($gwolle_gb_messages, 'signature') !== false) { $popuptitle = 'Oups ...'; } if (strpos($gwolle_gb_messages, 'doux') !== false) { $popuptitle = 'Oups ...'; } $output .= '<div id="myModal" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">'; $output .= $popuptitle; $output .= '</h4> </div> <div class="modal-body"> <p>'; $output .= $gwolle_gb_messages; $output .= '</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Fermer</button> </div> </div> </div> </div>'; /* * Button 'write a new entry.' */ // $output .= ' // <div id="gwolle_gb_write_button"> // <input type="button" value="» ' . esc_attr__('Write a new entry.', 'gwolle-gb') . '" /> // </div>'; // Option to allow only logged-in users to post. Don't show the form if not logged-in. We still see the messages above. if (!is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true') { $output .= ' <div id="gwolle_gb_new_entry"> <h3>' . __('Log in to post an entry', 'gwolle-gb') . '</h3>'; $args = array('echo' => false, 'redirect' => (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); $output .= wp_login_form($args); $output .= wp_register('', '', false); $output .= '</div>'; return $output; } /* * Build up Form including possible error_fields */ $form_setting = gwolle_gb_get_setting('form'); $autofocus = 'autofocus="autofocus"'; // Form for submitting new entries $header = gwolle_gb_sanitize_output(get_option('gwolle_gb-header', false)); if ($header == false) { $header = __('Write a new entry for the Guestbook', 'gwolle-gb'); } $output .= ' <form id="gwolle_gb_new_entry" action="#" method="POST" > <input type="hidden" name="gwolle_gb_function" id="gwolle_gb_function" value="add_entry" />'; // The book_id from the shortcode, to be used by the posthandling function again. $output .= '<input type="hidden" name="gwolle_gb_book_id" id="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />'; // Use this filter to just add something $output .= apply_filters('gwolle_gb_write_add_before', ''); /* Name */ if (isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true') { $output .= '<div class="gwolle_gb_author_name">'; if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') { } $output .= ' <div class="input"><input class="'; if (in_array('name', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $name . '" type="text" name="gwolle_gb_author_name" id="gwolle_gb_author_name" placeholder="' . __('Name', 'gwolle-gb') . '" '; if (in_array('name', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /></div> </div>'; } // /* City / Origin */ // if ( isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true' ) { // $output .= '<div class="gwolle_gb_author_origin"> // <div class="label"><label for="gwolle_gb_author_origin">' . __('City', 'gwolle-gb') . ':'; // if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) { $output .= ' *';} // $output .= '</label></div> // <div class="input"><input class="'; // if (in_array('author_origin', $gwolle_gb_error_fields)) { // $output .= ' error'; // } // $output .= '" value="' . $origin . '" type="text" name="gwolle_gb_author_origin" id="gwolle_gb_author_origin" placeholder="' . __('City', 'gwolle-gb') . '" '; // if ( in_array('author_origin', $gwolle_gb_error_fields) && isset($autofocus) ) { // $output .= $autofocus; // $autofocus = false; // disable it for the next error. // } // $output .= ' /></div> // </div> // <div class="clearBoth"> </div>'; // } /* Email */ // if ( isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true' ) { // $output .= '<div class="gwolle_gb_author_email"> // <div class="label"><label for="gwolle_gb_author_email">' . __('Email', 'gwolle-gb') . ':'; // if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) { $output .= ' *';} // $output .= '</label></div> // <div class="input"><input class="'; // if (in_array('author_email', $gwolle_gb_error_fields)) { // $output .= ' error'; // } // $output .= '" value="' . $email . '" ' . ($html5 ? 'type="email"' : 'type="text"') . ' name="gwolle_gb_author_email" id="gwolle_gb_author_email" placeholder="' . __('Email', 'gwolle-gb') . '" '; // if ( in_array('author_email', $gwolle_gb_error_fields) && isset($autofocus) ) { // $output .= $autofocus; // $autofocus = false; // disable it for the next error. // } // $output .= ' /></div> // </div> // <div class="clearBoth"> </div>'; // } else { // if ( isset($email) && strlen($email) > 0 ) { // // For logged in users, just save the email anyway. // $output .= '<input class="" value="' . $email . '" type="hidden" name="gwolle_gb_author_email" id="gwolle_gb_author_email" />'; // } // } /* Website / Homepage */ // if ( isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true' ) { // $output .= '<div class="gwolle_gb_author_website"> // <div class="label"><label for="gwolle_gb_author_website">' . __('Website', 'gwolle-gb') . ':'; // if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) { $output .= ' *';} // $output .= '</label></div> // <div class="input"><input class="'; // if (in_array('author_website', $gwolle_gb_error_fields)) { // $output .= ' error'; // } // $output .= '" value="' . $website . '" ' . ($html5 ? 'type="url"' : 'type="text"') . ' name="gwolle_gb_author_website" id="gwolle_gb_author_website" placeholder="' . __('Website', 'gwolle-gb') . '" '; // if ( in_array('author_website', $gwolle_gb_error_fields) && isset($autofocus) ) { // $output .= $autofocus; // $autofocus = false; // disable it for the next error. // } // $output .= ' /></div> // </div> // <div class="clearBoth"> </div>'; // } /* Content */ if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true') { $output .= '<div class="gwolle_gb_content">'; if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') { } $output .= '<div class="input"><textarea name="gwolle_gb_content" id="gwolle_gb_content" class="'; if (in_array('content', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" placeholder="' . __('Message', 'gwolle-gb') . '" '; if (in_array('content', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' >' . $content . '</textarea>'; if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { // BBcode and MarkItUp wp_enqueue_script('markitup', plugins_url('markitup/jquery.markitup.js', __FILE__), 'jquery', GWOLLE_GB_VER, false); wp_enqueue_script('markitup_set', plugins_url('markitup/set.js', __FILE__), 'jquery', GWOLLE_GB_VER, false); wp_enqueue_style('gwolle_gb_markitup_css', plugins_url('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 $output .= '<div class="gwolle_gb_emoji" style="display:none;">'; $output .= gwolle_gb_get_emoji(); $output .= '</div>'; } $output .= '</div>'; // .input } /* 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 ) { // $output .= ' // <div class="gwolle_gb_antispam"> // <div class="label"> // <label for="gwolle_gb_antispam_answer">' . __('Anti-spam', 'gwolle-gb') . ': *<br /> // ' . __('Question:', 'gwolle-gb') . " " . $antispam_question . '</label> // </div> // <div class="input"><input class="'; // if (in_array('antispam', $gwolle_gb_error_fields)) { // $output .= ' error'; // } // $output .= '" value="' . $antispam . '" type="text" name="gwolle_gb_antispam_answer" id="gwolle_gb_antispam_answer" placeholder="' . __('Answer', 'gwolle-gb') . '" '; // if ( in_array('antispam', $gwolle_gb_error_fields) && isset($autofocus) ) { // $output .= $autofocus; // $autofocus = false; // disable it for the next error. // } // $output .= ' /> // </div> // </div> // <div class="clearBoth"> </div>'; // } // } // // /* CAPTCHA */ // if ( isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true' ) { // if ( class_exists('ReallySimpleCaptcha') ) { // // Disable page caching, we want a new CAPTCHA image each time. // if ( ! defined( 'DONOTCACHEPAGE' ) ) // define( "DONOTCACHEPAGE", "true" ); // // // Instantiate the ReallySimpleCaptcha class, which will handle all of the heavy lifting // $gwolle_gb_captcha = new ReallySimpleCaptcha(); // // // Set Really Simple CAPTCHA Options // $gwolle_gb_captcha->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // $gwolle_gb_captcha->char_length = '4'; // $gwolle_gb_captcha->img_size = array( '72', '24' ); // $gwolle_gb_captcha->fg = array( '0', '0', '0' ); // $gwolle_gb_captcha->bg = array( '255', '255', '255' ); // $gwolle_gb_captcha->font_size = '16'; // $gwolle_gb_captcha->font_char_width = '15'; // $gwolle_gb_captcha->img_type = 'png'; // $gwolle_gb_captcha->base = array( '6', '18' ); // // // Generate random word and image prefix // $gwolle_gb_captcha_word = $gwolle_gb_captcha->generate_random_word(); // $gwolle_gb_captcha_prefix = mt_rand(); // // Generate CAPTCHA image // $gwolle_gb_captcha_image_name = $gwolle_gb_captcha->generate_image($gwolle_gb_captcha_prefix, $gwolle_gb_captcha_word); // // Define values for CAPTCHA fields // $gwolle_gb_captcha_image_url = content_url('plugins/really-simple-captcha/tmp/'); // $gwolle_gb_captcha_image_src = $gwolle_gb_captcha_image_url . $gwolle_gb_captcha_image_name; // $gwolle_gb_captcha_image_width = $gwolle_gb_captcha->img_size[0]; // $gwolle_gb_captcha_image_height = $gwolle_gb_captcha->img_size[1]; // $gwolle_gb_captcha_field_size = $gwolle_gb_captcha->char_length; // // // Enqueue and localize the frontend script for CAPTCHA. // wp_enqueue_script('gwolle_gb_captcha_js', plugins_url('js/captcha.js', __FILE__), 'jquery', GWOLLE_GB_VER, true ); // $dataToBePassed = array( // // URL to wp-admin/admin-ajax.php to process the request // 'ajaxurl' => admin_url( 'admin-ajax.php' ), // // generate a nonce with a unique ID "gwolle_gb_captcha_ajax" // // so that you can check it later when an AJAX request is sent // 'security' => wp_create_nonce( 'gwolle_gb_captcha_ajax' ), // 'correct' => __ ('Correct CAPTCHA value.', 'gwolle-gb' ), // 'incorrect' => __( 'Incorrect CAPTCHA value.', 'gwolle-gb' ), // 'gwolle_gb_captcha_prefix' => $gwolle_gb_captcha_prefix // ); // wp_localize_script( 'gwolle_gb_captcha_js', 'gwolle_gb_captcha', $dataToBePassed ); // // // Output the CAPTCHA fields // $output .= ' // <div class="gwolle_gb_captcha"> // <div class="label"> // <label for="gwolle_gb_captcha_code">' . __('Anti-spam', 'gwolle-gb') . ': *<br /> // <img src="' . $gwolle_gb_captcha_image_src . '" alt="captcha" width="' . $gwolle_gb_captcha_image_width . '" height="' . $gwolle_gb_captcha_image_height . '" /> // </label> // </div> // <div class="input"> // <input class="'; // if (in_array('captcha', $gwolle_gb_error_fields)) { // $output .= 'error'; // } // $output .= '" value="" type="text" name="gwolle_gb_captcha_code" id="gwolle_gb_captcha_code" placeholder="' . __('CAPTCHA', 'gwolle-gb') . '" '; // if ( in_array('captcha', $gwolle_gb_error_fields) && isset($autofocus) ) { // $output .= $autofocus; // $autofocus = false; // disable it for the next error. // } // $output .= ' /> // <input type="hidden" name="gwolle_gb_captcha_prefix" id="gwolle_gb_captcha_prefix" value="' . $gwolle_gb_captcha_prefix . '" /> // <span id="gwolle_gb_captcha_verify"></span> // </div> // </div> // '; // } // } // Use this filter to just add something $output .= apply_filters('gwolle_gb_write_add_form', ''); $output .= ' <div class="gwolle_gb_submit"> <div class="input_button"><input type="submit" name="gwolle_gb_submit" value="' . esc_attr__('Valider', 'gwolle-gb') . '" /></div> </div></div> <div class="gwolle_gb_notice"> '; $notice = gwolle_gb_sanitize_output(get_option('gwolle_gb-notice', false)); if ($notice == false) { // No text set by the user. Use the default text. } $notice = nl2br($notice); $output .= str_replace('%ip%', $_SERVER['REMOTE_ADDR'], $notice); $output .= ' </div>'; // Use this filter to just add something $output .= apply_filters('gwolle_gb_write_add_after', ''); $output .= '</form>'; if (get_option('gwolle_gb-labels_float', 'true') === 'true') { $output .= ' <style type="text/css" scoped> </style> '; } // Add filter for the form, so devs can manipulate it. $output = apply_filters('gwolle_gb_write', $output); return $output; }
function gwolle_gb_page_editor() { if (function_exists('current_user_can') && !current_user_can('moderate_comments')) { die(__('Cheatin’ 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"> | <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"> | <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"> | <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"> | <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 } }
function gwolle_gb_frontend_write() { global $gwolle_gb_errors, $gwolle_gb_error_fields, $gwolle_gb_messages, $gwolle_gb_data; $output = ''; // Set data up for refilling an already submitted form that had errors $name = ''; $origin = ''; $email = ''; $website = ''; $antispam = ''; $content = ''; // Auto-fill the form if the user is already logged in $user_id = get_current_user_id(); // returns 0 if no current user if ($user_id > 0) { $userdata = get_userdata($user_id); if (is_object($userdata)) { if (isset($userdata->display_name)) { $name = $userdata->display_name; } else { $name = $userdata->user_login; } $email = $userdata->user_email; $website = $userdata->user_url; } } // Only show old data when there are errors if ($gwolle_gb_errors) { if (is_array($gwolle_gb_data) && !empty($gwolle_gb_data)) { if (isset($gwolle_gb_data['author_name'])) { $name = stripslashes($gwolle_gb_data['author_name']); } if (isset($gwolle_gb_data['author_origin'])) { $origin = stripslashes($gwolle_gb_data['author_origin']); } if (isset($gwolle_gb_data['author_email'])) { $email = stripslashes($gwolle_gb_data['author_email']); } if (isset($gwolle_gb_data['author_website'])) { $website = stripslashes($gwolle_gb_data['author_website']); } if (isset($gwolle_gb_data['antispam'])) { $antispam = stripslashes($gwolle_gb_data['antispam']); } if (isset($gwolle_gb_data['content'])) { $content = stripslashes($gwolle_gb_data['content']); } } } // Initialize errors, if not set if (empty($gwolle_gb_error_fields)) { $gwolle_gb_error_fields = array(); } /* * Handle Messaging to the user */ $class = ""; if ($gwolle_gb_errors) { $class = "error"; } if (isset($gwolle_gb_messages) && $gwolle_gb_messages != '') { $output .= "<div id='gwolle_gb_messages' class='{$class}'>"; $output .= $gwolle_gb_messages; $output .= "</div>"; } /* * Button 'write a new entry.' */ $output .= ' <div id="gwolle_gb_write_button"> <input type="button" value="» ' . esc_attr__('Write a new entry.', GWOLLE_GB_TEXTDOMAIN) . '" /> </div>'; // Option to allow only logged-in users to post. Don't show the form if not logged-in. We still see the messages above. if (!is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true') { $output .= ' <div id="gwolle_gb_new_entry"> <h3>' . __('Log in to post an entry', GWOLLE_GB_TEXTDOMAIN) . '</h3>'; $args = array('echo' => false, 'redirect' => (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); $output .= wp_login_form($args); $output .= wp_register('', '', false); $output .= '</div>'; return $output; } /* * Build up Form including possible error_fields */ $form_setting = gwolle_gb_get_setting('form'); $autofocus = 'autofocus="autofocus"'; // Form for submitting new entries $header = gwolle_gb_sanitize_output(get_option('gwolle_gb-header', false)); if ($header == false) { $header = __('Write a new entry for the Guestbook', GWOLLE_GB_TEXTDOMAIN); } $output .= ' <form id="gwolle_gb_new_entry" action="#" method="POST"> <h3>' . $header . '</h3> <input type="hidden" name="gwolle_gb_function" value="add_entry" />'; /* Name */ if (isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true') { $output .= '<div class="gwolle_gb_author_name"> <div class="label"><label for="gwolle_gb_author_name">' . __('Name', GWOLLE_GB_TEXTDOMAIN) . ':'; if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') { $output .= ' *'; } $output .= '</label></div> <div class="input"><input class="'; if (in_array('name', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $name . '" type="text" name="gwolle_gb_author_name" id="gwolle_gb_author_name" placeholder="' . __('Name', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('name', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /></div> </div> <div class="clearBoth"> </div>'; } /* City / Origin */ if (isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true') { $output .= '<div class="gwolle_gb_author_origin"> <div class="label"><label for="gwolle_gb_author_origin">' . __('City', GWOLLE_GB_TEXTDOMAIN) . ':'; if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') { $output .= ' *'; } $output .= '</label></div> <div class="input"><input class="'; if (in_array('author_origin', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $origin . '" type="text" name="gwolle_gb_author_origin" id="gwolle_gb_author_origin" placeholder="' . __('City', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('author_origin', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /></div> </div> <div class="clearBoth"> </div>'; } /* Email */ if (isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true') { $output .= '<div class="gwolle_gb_author_email"> <div class="label"><label for="gwolle_gb_author_email">' . __('Email', GWOLLE_GB_TEXTDOMAIN) . ':'; if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') { $output .= ' *'; } $output .= '</label></div> <div class="input"><input class="'; if (in_array('author_email', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $email . '" type="text" name="gwolle_gb_author_email" id="gwolle_gb_author_email" placeholder="' . __('Email', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('author_email', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /></div> </div> <div class="clearBoth"> </div>'; } /* Website / Homepage */ if (isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true') { $output .= '<div class="gwolle_gb_author_website"> <div class="label"><label for="gwolle_gb_author_website">' . __('Website', GWOLLE_GB_TEXTDOMAIN) . ':'; if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') { $output .= ' *'; } $output .= '</label></div> <div class="input"><input class="'; if (in_array('author_website', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $website . '" type="text" name="gwolle_gb_author_website" id="gwolle_gb_author_website" placeholder="' . __('Website', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('author_website', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /></div> </div> <div class="clearBoth"> </div>'; } /* Content */ if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true') { $output .= '<div class="gwolle_gb_content"> <div class="label"><label for="gwolle_gb_content">' . __('Guestbook entry', GWOLLE_GB_TEXTDOMAIN) . ':'; if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') { $output .= ' *'; } $output .= '</label></div> <div class="input"><textarea name="gwolle_gb_content" id="gwolle_gb_content" class="'; if (in_array('content', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" placeholder="' . __('Message', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('content', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' >' . $content . '</textarea>'; if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { // BBcode and MarkItUp wp_enqueue_script('markitup', plugins_url('markitup/jquery.markitup.js', __FILE__), 'jquery', GWOLLE_GB_VER, false); wp_enqueue_script('markitup_set', plugins_url('markitup/set.js', __FILE__), 'jquery', GWOLLE_GB_VER, false); wp_enqueue_style('gwolle_gb_markitup_css', plugins_url('markitup/style.css', __FILE__), false, GWOLLE_GB_VER, 'screen'); // Emoji symbols $output .= '<div class="gwolle_gb_emoji" style="display:none;">'; $output .= gwolle_gb_get_emoji(); $output .= '</div>'; } $output .= '</div>'; // .input $output .= ' </div> <div class="clearBoth"> </div>'; } /* 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) { $output .= ' <div class="gwolle_gb_antispam"> <div class="label"> <label for="gwolle_gb_antispam_answer">' . __('Anti-spam', GWOLLE_GB_TEXTDOMAIN) . ': *<br /> ' . __('Question:', GWOLLE_GB_TEXTDOMAIN) . " " . $antispam_question . '</label> </div> <div class="input"><input class="'; if (in_array('antispam', $gwolle_gb_error_fields)) { $output .= ' error'; } $output .= '" value="' . $antispam . '" type="text" name="gwolle_gb_antispam_answer" id="gwolle_gb_antispam_answer" placeholder="' . __('Answer', GWOLLE_GB_TEXTDOMAIN) . '" '; if (in_array('antispam', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /> </div> </div> <div class="clearBoth"> </div>'; } } /* CAPTCHA */ if (isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true') { if (class_exists('ReallySimpleCaptcha')) { // Instantiate the ReallySimpleCaptcha class, which will handle all of the heavy lifting $gwolle_gb_captcha = new ReallySimpleCaptcha(); // Set Really Simple CAPTCHA Options $gwolle_gb_captcha->chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; $gwolle_gb_captcha->char_length = '4'; $gwolle_gb_captcha->img_size = array('72', '24'); $gwolle_gb_captcha->fg = array('0', '0', '0'); $gwolle_gb_captcha->bg = array('255', '255', '255'); $gwolle_gb_captcha->font_size = '16'; $gwolle_gb_captcha->font_char_width = '15'; $gwolle_gb_captcha->img_type = 'png'; $gwolle_gb_captcha->base = array('6', '18'); // Generate random word and image prefix $gwolle_gb_captcha_word = $gwolle_gb_captcha->generate_random_word(); $gwolle_gb_captcha_prefix = mt_rand(); // Generate CAPTCHA image $gwolle_gb_captcha_image_name = $gwolle_gb_captcha->generate_image($gwolle_gb_captcha_prefix, $gwolle_gb_captcha_word); // Define values for CAPTCHA fields $gwolle_gb_captcha_image_url = get_bloginfo('wpurl') . '/wp-content/plugins/really-simple-captcha/tmp/'; $gwolle_gb_captcha_image_src = $gwolle_gb_captcha_image_url . $gwolle_gb_captcha_image_name; $gwolle_gb_captcha_image_width = $gwolle_gb_captcha->img_size[0]; $gwolle_gb_captcha_image_height = $gwolle_gb_captcha->img_size[1]; $gwolle_gb_captcha_field_size = $gwolle_gb_captcha->char_length; // AJAX url $gwolle_gb_captcha_ajax_url = GWOLLE_GB_URL . '/frontend/captcha/ajaxresponse.php'; // ABSPATH $gwolle_gb_abspath = urlencode(ABSPATH); // Output the CAPTCHA fields ?> <script> function gwolle_gb_captcha_check( code, prefix, url, abspath ) { // Setup variables var code_string = '?code=' + code; var prefix_string = '&prefix=' + prefix; var abspath_string = '&abspath=' + abspath; var request_url_base = url; var request_url = request_url_base + code_string + prefix_string + abspath_string; // Instantiate request var xmlhttp = new XMLHttpRequest(); // Parse resonse xmlhttp.onreadystatechange = function() { if ( 4 == xmlhttp.readyState && 200 == xmlhttp.status ) { var ajax_response = xmlhttp.responseText; // Update form verification feedback if ( 'true' == ajax_response ) { document.getElementById( 'gwolle_gb_captcha_verify' ).innerHTML = '<span style="color:green"><?php _e('Correct CAPTCHA value.', GWOLLE_GB_TEXTDOMAIN); ?> </span>'; jQuery( '#gwolle_gb_captcha_code' ).removeClass('error'); } else if ( 'false' == ajax_response ) { document.getElementById( 'gwolle_gb_captcha_verify' ).innerHTML = '<span style="color:red"><?php _e('Incorrect CAPTCHA value.', GWOLLE_GB_TEXTDOMAIN); ?> </span>'; jQuery( '#gwolle_gb_captcha_code' ).addClass('error'); } } } // Send request xmlhttp.open( 'GET', request_url, true ); xmlhttp.send(); } </script> <?php $output .= ' <div class="gwolle_gb_captcha"> <div class="label"> <label for="gwolle_gb_captcha_code">' . __('Anti-spam', GWOLLE_GB_TEXTDOMAIN) . ': *<br /> <img src="' . $gwolle_gb_captcha_image_src . '" alt="captcha" width="' . $gwolle_gb_captcha_image_width . '" height="' . $gwolle_gb_captcha_image_height . '" /> </label> </div> <div class="input"> <input class="'; if (in_array('captcha', $gwolle_gb_error_fields)) { $output .= 'error'; } $output .= '" value="" type="text" name="gwolle_gb_captcha_code" id="gwolle_gb_captcha_code" placeholder="' . __('CAPTCHA', GWOLLE_GB_TEXTDOMAIN) . '" onblur="gwolle_gb_captcha_check( this.value, \'' . $gwolle_gb_captcha_prefix . '\', \'' . $gwolle_gb_captcha_ajax_url . '\', \'' . $gwolle_gb_abspath . '\' )" '; if (in_array('captcha', $gwolle_gb_error_fields) && isset($autofocus)) { $output .= $autofocus; $autofocus = false; // disable it for the next error. } $output .= ' /> <input type="hidden" name="gwolle_gb_captcha_prefix" id="gwolle_gb_captcha_prefix" value="' . $gwolle_gb_captcha_prefix . '" /> <span id="gwolle_gb_captcha_verify"></span> </div> </div> <div class="clearBoth"> </div>'; } } $output .= ' <div class="gwolle_gb_submit"> <div class="label"> </div> <div class="input"><input type="submit" name="gwolle_gb_submit" value="' . esc_attr__('Submit', GWOLLE_GB_TEXTDOMAIN) . '" /></div> </div> <div class="clearBoth"> </div> <div class="gwolle_gb_notice"> '; $notice = gwolle_gb_sanitize_output(get_option('gwolle_gb-notice', false)); if ($notice == false) { // No text set by the user. Use the default text. $notice = __(' Fields marked with * are obligatory. Your E-mail address wil not be published. For security reasons we save the ip address %ip%. It might be that your entry will only be visible in the guestbook after we reviewed it. We reserve our right to edit, delete, or not publish entries. ', GWOLLE_GB_TEXTDOMAIN); } $notice = nl2br($notice); $output .= str_replace('%ip%', $_SERVER['REMOTE_ADDR'], $notice); $output .= ' </div> </form>'; if (get_option('gwolle_gb-labels_float', 'true') === 'true') { $output .= ' <style type="text/css" scoped> #gwolle_gb .label, #gwolle_gb .input { float: left; } </style> '; } // Add filter for the form, so devs can manipulate it. $output = apply_filters('gwolle_gb_write', $output); return $output; }
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. */ } }
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. */ } }
function gwolle_gb_page_settingstab_form() { if (function_exists('current_user_can') && !current_user_can('manage_options')) { die(__('Cheatin’ uh?', GWOLLE_GB_TEXTDOMAIN)); } ?> <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_forms" /> <?php settings_fields('gwolle_gb_options'); do_settings_sections('gwolle_gb_options'); ?> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"><label for="require_login"><?php _e('Require Login', GWOLLE_GB_TEXTDOMAIN); ?> </label></th> <td> <input type="checkbox" id="require_login" name="require_login" <?php if (get_option('gwolle_gb-require_login', 'false') === 'true') { echo 'checked="checked"'; } ?> /> <label for="require_login"><?php _e('Require user to be logged in.', GWOLLE_GB_TEXTDOMAIN); ?> </label> <br /> <span class="setting-description"><?php _e('Only allow logged-in users to add a guestbook entry.', GWOLLE_GB_TEXTDOMAIN); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="labels_float"><?php _e('Labels float', GWOLLE_GB_TEXTDOMAIN); ?> </label></th> <td> <input type="checkbox" id="labels_float" name="labels_float" <?php if (get_option('gwolle_gb-labels_float', 'true') === 'true') { echo 'checked="checked"'; } ?> /> <label for="labels_float"><?php _e('Labels in the form float to the left.', GWOLLE_GB_TEXTDOMAIN); ?> </label> <br /> <span class="setting-description"><?php _e('Labels in the form float to the left. Otherwise the labels will be above the input-fields.', GWOLLE_GB_TEXTDOMAIN); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="header"><?php _e('Header Text', GWOLLE_GB_TEXTDOMAIN); ?> </label></th> <td><?php $header = gwolle_gb_sanitize_output(get_option('gwolle_gb-header', false)); if (!$header) { $header = __('Write a new entry for the Guestbook', GWOLLE_GB_TEXTDOMAIN); } ?> <input name="header" id="header" class="regular-text" type="text" value="<?php echo $header; ?> " /> <br /> <span class="setting-description"> <?php _e('You can set the header that is shown on top of the form.', GWOLLE_GB_TEXTDOMAIN); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="notice"><?php _e('Notice Text', GWOLLE_GB_TEXTDOMAIN); ?> </label></th> <td> <?php $notice = gwolle_gb_sanitize_output(get_option('gwolle_gb-notice', false)); if (!$notice) { // No text set by the user. Use the default text. $notice = __(' Fields marked with * are obligatory. Your E-mail address wil not be published. For security reasons we save the ip address %ip%. It might be that your entry will only be visible in the guestbook after we reviewed it. We reserve our right to edit, delete, or not publish entries. ', GWOLLE_GB_TEXTDOMAIN); } ?> <textarea name="notice" id="notice" style="width:400px;height:180px;" class="regular-text"><?php echo $notice; ?> </textarea> <br /> <span class="setting-description"> <?php _e('You can set the content of the notice that gets shown below the form.', GWOLLE_GB_TEXTDOMAIN); echo '<br />'; _e('You can use the tag %ip% to show the ip address.', GWOLLE_GB_TEXTDOMAIN); ?> </span> </td> </tr> </tbody> </table> <table class="form-table"> <tbody> <?php $form_setting = gwolle_gb_get_setting('form'); ?> <tr valign="top"> <td colspan="3"><h3><?php _e('Configure the form that is shown to visitors.', GWOLLE_GB_TEXTDOMAIN); ?> </h3></td> </tr> <tr valign="top"> <th scope="row"><label for="form_name_enabled"><?php _e('Name', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_name_enabled" name="form_name_enabled"<?php if (isset($form_setting['form_name_enabled']) && $form_setting['form_name_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_name_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <input type="checkbox" id="form_name_mandatory" name="form_name_mandatory"<?php if (isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_name_mandatory"><?php _e('Mandatory', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_city_enabled"><?php _e('City', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_city_enabled" name="form_city_enabled"<?php if (isset($form_setting['form_city_enabled']) && $form_setting['form_city_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_city_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <input type="checkbox" id="form_city_mandatory" name="form_city_mandatory"<?php if (isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_city_mandatory"><?php _e('Mandatory', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_email_enabled"><?php _e('Email', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_email_enabled" name="form_email_enabled"<?php if (isset($form_setting['form_email_enabled']) && $form_setting['form_email_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_email_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <input type="checkbox" id="form_email_mandatory" name="form_email_mandatory"<?php if (isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_email_mandatory"><?php _e('Mandatory', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_homepage_enabled"><?php _e('Website', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_homepage_enabled" name="form_homepage_enabled"<?php if (isset($form_setting['form_homepage_enabled']) && $form_setting['form_homepage_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_homepage_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <input type="checkbox" id="form_homepage_mandatory" name="form_homepage_mandatory"<?php if (isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_homepage_mandatory"><?php _e('Mandatory', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_message_enabled"><?php _e('Message', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_message_enabled" name="form_message_enabled"<?php if (isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_message_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <input type="checkbox" id="form_message_mandatory" name="form_message_mandatory"<?php if (isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_message_mandatory"><?php _e('Mandatory', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_bbcode_enabled"><?php _e('BBcode and Emoji', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_bbcode_enabled" name="form_bbcode_enabled"<?php if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_bbcode_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <?php _e('Will only be shown if the Message is enabled.', GWOLLE_GB_TEXTDOMAIN); ?> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_antispam_enabled"><?php _e('Custom Anti-spam', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_antispam_enabled" name="form_antispam_enabled"<?php if (isset($form_setting['form_antispam_enabled']) && $form_setting['form_antispam_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_antispam_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <?php _e('When enabled it is mandatory.', GWOLLE_GB_TEXTDOMAIN); ?> </td> </tr> <tr valign="top"> <th scope="row"><label for="form_recaptcha_enabled"><?php _e('CAPTCHA', GWOLLE_GB_TEXTDOMAIN); ?> :</label></th> <td> <input type="checkbox" id="form_recaptcha_enabled" name="form_recaptcha_enabled"<?php if (isset($form_setting['form_recaptcha_enabled']) && $form_setting['form_recaptcha_enabled'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="form_recaptcha_enabled"><?php _e('Enabled', GWOLLE_GB_TEXTDOMAIN); ?> </label> </td> <td> <?php _e('When enabled it is mandatory.', GWOLLE_GB_TEXTDOMAIN); ?> </td> </tr> <tr> <td colspan="3"> <p class="submit"> <input type="submit" name="gwolle_gb_settings_form" id="gwolle_gb_settings_form" class="button-primary" value="<?php esc_attr_e('Save settings', GWOLLE_GB_TEXTDOMAIN); ?> " /> </p> </td> </tr> </tbody> </table> <?php }
function gwolle_gb_entry_template($entry, $first, $counter) { $html5 = current_theme_supports('html5'); // Get the needed settings. $form_setting = gwolle_gb_get_setting('form'); $read_setting = gwolle_gb_get_setting('read'); // Main Author div $entry_output = '<div class="'; $entry_output .= ' gb-entry'; $entry_output .= ' gb-entry_' . $entry->get_id(); $entry_output .= ' gb-entry-count_' . $counter; if (is_int($counter / 2)) { $entry_output .= ' gwolle_gb_even'; } else { $entry_output .= ' gwolle_gb_uneven'; } if ($first == true) { $entry_output .= ' gwolle_gb_first'; } if (get_option('gwolle_gb-admin_style', 'true') === 'true') { $author_id = $entry->get_author_id(); $is_moderator = gwolle_gb_is_moderator($author_id); if ($is_moderator) { $entry_output .= ' admin-entry'; } } $entry_output .= '">'; if ($html5) { $entry_output .= '<article>'; } // Use this filter to just add something $entry_output .= apply_filters('gwolle_gb_entry_read_add_before', '', $entry); // Author Avatar // if ( isset($read_setting['read_avatar']) && $read_setting['read_avatar'] === 'true' ) { // $avatar = get_avatar( $entry->get_author_email(), 32, '', $entry->get_author_name() ); // if ($avatar) { // $entry_output .= '<span class="gb-author-avatar">' . $avatar . '</span>'; // } // } // Author Origin // if ( isset($read_setting['read_city']) && $read_setting['read_city'] === 'true' ) { // $origin = $entry->get_author_origin(); // if ( strlen(str_replace(' ', '', $origin)) > 0 ) { // $entry_output .= '<span class="gb-author-origin"> ' . __('from', 'gwolle-gb') . ' ' . gwolle_gb_sanitize_output($origin) . '</span>'; // } // } // Entry Date and Time // if ( ( isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' ) || ( isset($read_setting['read_date']) && $read_setting['read_date'] === 'true' ) ) { // $entry_output .= '<span class="gb-datetime"> // <span class="gb-date"> '; // if ( isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' ) { // $entry_output .= __('wrote on', 'gwolle-gb') . ' '; // } // $entry_output .= date_i18n( get_option('date_format'), $entry->get_datetime() ) . '</span>'; // if ( isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' ) { // $entry_output .= '<span class="gb-time"> ' . __('on', 'gwolle-gb') . ' ' . trim(date_i18n( get_option('time_format'), $entry->get_datetime() )) . '</span>'; // } // $entry_output .= ':</span> '; // } // Main Content if (isset($read_setting['read_content']) && $read_setting['read_content'] === 'true') { $entry_output .= '<div class="gb-entry-content">'; $entry_content = gwolle_gb_sanitize_output($entry->get_content()); if (get_option('gwolle_gb-showSmilies', 'true') === 'true') { $entry_content = convert_smilies($entry_content); } if (get_option('gwolle_gb-showLineBreaks', 'false') === 'true') { $entry_content = nl2br($entry_content); } $excerpt_length = (int) get_option('gwolle_gb-excerpt_length', 0); if ($excerpt_length > 0) { $entry_content = wp_trim_words($entry_content, $excerpt_length, '...'); // FIXME: add readmore link } if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { $entry_content = gwolle_gb_bbcode_parse($entry_content); } else { $entry_content = gwolle_gb_bbcode_strip($entry_content); } $entry_output .= $entry_content; // // Edit Link for Moderators // if ( function_exists('current_user_can') && current_user_can('moderate_comments') ) { // $entry_output .= ' // <a class="gwolle_gb_edit_link" href="' . admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id() ) . '" title="' . __('Edit entry', 'gwolle-gb') . '">' . __('Edit', 'gwolle-gb') . '</a>'; // } // Use this filter to just add something $entry_output .= apply_filters('gwolle_gb_entry_read_add_content', '', $entry); $entry_output .= '</div> '; /* Admin Reply */ $admin_reply_content = gwolle_gb_sanitize_output($entry->get_admin_reply()); if ($admin_reply_content != '') { $class = ''; if (get_option('gwolle_gb-admin_style', 'true') === 'true') { $class = ' admin-entry'; } $admin_reply = '<div class="gb-entry-admin_reply' . $class . '">'; /* Admin Reply Author */ $admin_reply .= '<div class="gb-admin_reply_uid">'; $admin_reply_name = gwolle_gb_is_moderator($entry->get_admin_reply_uid()); if (isset($read_setting['read_name']) && $read_setting['read_name'] === 'true' && $admin_reply_name) { $admin_reply .= '<strong>' . __('Admin Reply by:', 'gwolle-gb') . '</strong> ' . $admin_reply_name; } else { $admin_reply .= '<strong>' . __('Admin Reply:', 'gwolle-gb') . '</strong>'; } $admin_reply .= '</div> '; /* Admin Reply Content */ if (get_option('gwolle_gb-showSmilies', 'true') === 'true') { $admin_reply_content = convert_smilies($admin_reply_content); } if (get_option('gwolle_gb-showLineBreaks', 'false') === 'true') { $admin_reply_content = nl2br($admin_reply_content); } if ($excerpt_length > 0) { $admin_reply_content = wp_trim_words($admin_reply_content, $excerpt_length, '...'); } if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { $admin_reply_content = gwolle_gb_bbcode_parse($admin_reply_content); } else { $admin_reply_content = gwolle_gb_bbcode_strip($admin_reply_content); } $admin_reply .= '<div class="gb-admin_reply_content"> ' . $admin_reply_content . ' </div>'; $admin_reply .= '</div>'; $entry_output .= $admin_reply; } } // Author Info $entry_output .= '<div class="gb-author-info">'; // Author Name if (isset($read_setting['read_name']) && $read_setting['read_name'] === 'true') { $author_name_html = gwolle_gb_get_author_name_html($entry); $entry_output .= '<span class="gb-author-name">' . $author_name_html . '</span>'; } $entry_output .= '</div>'; // <div class="gb-author-info"> // Use this filter to just add something $entry_output .= apply_filters('gwolle_gb_entry_read_add_after', '', $entry); if ($html5) { $entry_output .= '</article>'; } $entry_output .= '</div> '; return $entry_output; }
function gwolle_gb_page_settingstab_reading() { if (function_exists('current_user_can') && !current_user_can('manage_options')) { die(__('Cheatin’ uh?', 'gwolle-gb')); } ?> <input type="hidden" id="gwolle_gb_tab" name="gwolle_gb_tab" value="gwolle_gb_reading" /> <?php settings_fields('gwolle_gb_options'); do_settings_sections('gwolle_gb_options'); ?> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"><label for="entriesPerPage"><?php _e('Entries per page on the frontend', 'gwolle-gb'); ?> </label></th> <td> <select name="entriesPerPage" id="entriesPerPage"> <?php $entriesPerPage = get_option('gwolle_gb-entriesPerPage', 20); $presets = array(5, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 120, 150, 200, 250); for ($i = 0; $i < count($presets); $i++) { echo '<option value="' . $presets[$i] . '"'; if ($presets[$i] == $entriesPerPage) { echo ' selected="selected"'; } echo '>' . $presets[$i] . ' ' . __('Entries', 'gwolle-gb') . '</option>'; } ?> </select> <br /> <span class="setting-description"><?php _e('Number of entries shown on the frontend.', 'gwolle-gb'); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="excerpt_length"><?php _e('Length of the entry content', 'gwolle-gb'); ?> </label></th> <td> <select name="excerpt_length" id="excerpt_length"> <?php $excerpt_length = get_option('gwolle_gb-excerpt_length', 0); $presets = array(20, 40, 60, 80, 100, 120, 150, 200, 300); echo '<option value="0"'; if (0 == $excerpt_length) { echo ' selected="selected"'; } echo '>' . __('Unlimited Words', 'gwolle-gb') . '</option>'; foreach ($presets as $preset) { echo '<option value="' . $preset . '"'; if ($preset == $excerpt_length) { echo ' selected="selected"'; } echo '>' . $preset . ' ' . __('Words', 'gwolle-gb') . '</option>'; } ?> </select> <br /> <span class="setting-description"> <?php _e('Maximum length of the entry content in words.', 'gwolle-gb'); ?> <br /> <?php _e('Please be aware that this will strip linebreaks as well.', 'gwolle-gb'); ?> <br /> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="showLineBreaks"><?php _e('Line breaks', 'gwolle-gb'); ?> </label></th> <td> <input type="checkbox" id="showLineBreaks" name="showLineBreaks"<?php if (get_option('gwolle_gb-showLineBreaks', 'false') === 'true') { echo ' checked="checked"'; } ?> /> <label for="showLineBreaks"><?php _e('Show line breaks.', 'gwolle-gb'); ?> </label> <br /> <span class="setting-description"> <?php _e('Show line breaks as the entry authors entered them. (May result in very long entries. Is turned off by default.)', 'gwolle-gb'); ?> <br /> <?php _e('This can only be enabled if the Excerpt Length above is set to Unlimited Words.', 'gwolle-gb'); ?> <br /> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="showSmilies"><?php _e('Smileys', 'gwolle-gb'); ?> </label></th> <td> <input type="checkbox" id="showSmilies" name="showSmilies"<?php if (get_option('gwolle_gb-showSmilies', 'true') === 'true') { echo ' checked="checked"'; } ?> /> <label for="showSmilies"><?php _e('Display smileys as images.', 'gwolle-gb'); ?> </label> <br /> <span class="setting-description"><?php echo sprintf(__("Replaces smileys in entries like :) with their image %s. Uses the WP smiley replacer, so check on that one if you'd like to add new/more smileys.", 'gwolle-gb'), convert_smilies(':)')); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="linkAuthorWebsite"><?php _e('Links', 'gwolle-gb'); ?> </label></th> <td> <input type="checkbox" id="linkAuthorWebsite" name="linkAuthorWebsite"<?php if (get_option('gwolle_gb-linkAuthorWebsite', 'true') === 'true') { echo ' checked="checked"'; } ?> /> <label for="linkAuthorWebsite"><?php _e("Link authors' name to their website.", 'gwolle-gb'); ?> </label> <br /> <span class="setting-description"><?php _e("The author of an entry can set his/her website. If this setting is checked, his/her name will be a link to that website.", 'gwolle-gb'); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="admin_style"><?php _e('Admin Entry Styling', 'gwolle-gb'); ?> </label></th> <td> <input type="checkbox" id="admin_style" name="admin_style"<?php if (get_option('gwolle_gb-admin_style', 'true') === 'true') { echo ' checked="checked"'; } ?> /> <label for="admin_style"><?php _e("Admin entries get a special CSS styling.", 'gwolle-gb'); ?> </label> <br /> <span class="setting-description"><?php _e("Admin entries get a special CSS styling. It will get a lightgrey background.", 'gwolle-gb'); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="paginate_all"><?php _e('Pagination', 'gwolle-gb'); ?> </label></th> <td> <input type="checkbox" id="paginate_all" name="paginate_all"<?php if (get_option('gwolle_gb-paginate_all', 'false') === 'true') { echo ' checked="checked"'; } ?> /> <label for="paginate_all"><?php _e("Show a link to paginate All entries.", 'gwolle-gb'); ?> </label> <br /> <span class="setting-description"><?php _e("Clicking this link will list all the published entries in the guestbook.", 'gwolle-gb'); ?> </span> </td> </tr> <?php $read_setting = gwolle_gb_get_setting('read'); ?> <tr valign="top"> <td colspan="2"><h3><?php _e('Configure the parts of the entries that are shown to visitors.', 'gwolle-gb'); ?> </h3></td> </tr> <tr valign="top"> <th scope="row"><label for="read_avatar"><?php _e('Avatar', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_avatar" name="read_avatar"<?php if (isset($read_setting['read_avatar']) && $read_setting['read_avatar'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_avatar"><?php _e('Enabled', 'gwolle-gb'); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_name"><?php _e('Name', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_name" name="read_name"<?php if (isset($read_setting['read_name']) && $read_setting['read_name'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_name"><?php _e('Enabled', 'gwolle-gb'); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_city"><?php _e('City', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_city" name="read_city"<?php if (isset($read_setting['read_city']) && $read_setting['read_city'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_city"><?php _e('Enabled', 'gwolle-gb'); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_datetime"><?php _e('Date and Time', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_datetime" name="read_datetime"<?php if (isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_datetime"><?php _e('Enabled', 'gwolle-gb'); ?> </label><br /> <span class="setting-description"><?php _e("Setting this will show the date and the time of the entry.", 'gwolle-gb'); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_date"><?php _e('Date', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_date" name="read_date"<?php if (isset($read_setting['read_date']) && $read_setting['read_date'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_date"><?php _e('Enabled', 'gwolle-gb'); ?> </label><br /> <span class="setting-description"><?php _e("Setting this will show the date of the entry. If Date and Time above are enabled, that setting has preference.", 'gwolle-gb'); ?> </span> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_content"><?php _e('Content', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_content" name="read_content"<?php if (isset($read_setting['read_content']) && $read_setting['read_content'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_content"><?php _e('Enabled', 'gwolle-gb'); ?> </label> </td> </tr> <tr valign="top"> <th scope="row"><label for="read_editlink"><?php _e('Edit link', 'gwolle-gb'); ?> :</label></th> <td> <input type="checkbox" id="read_editlink" name="read_editlink"<?php if (isset($read_setting['read_editlink']) && $read_setting['read_editlink'] === 'true') { echo ' checked="checked"'; } ?> /> <label for="read_editlink"><?php _e('Enabled', 'gwolle-gb'); ?> </label><br /> <span class="setting-description"><?php _e("A link to the editor will be added to the content. Only visible for moderators.", 'gwolle-gb'); ?> </span> </td> </tr> <tr> <td colspan="2"> <p class="submit"> <input type="submit" name="gwolle_gb_settings_reading" id="gwolle_gb_settings_reading" class="button-primary" value="<?php esc_attr_e('Save settings', 'gwolle-gb'); ?> " /> </p> </td> </tr> </tbody> </table> <?php }
function gwolle_gb_entry_template($entry, $first, $counter) { // Get the needed settings. $form_setting = gwolle_gb_get_setting('form'); $read_setting = gwolle_gb_get_setting('read'); // Main Author div $entry_output = '<div class="'; $entry_output .= ' gb-entry'; $entry_output .= ' gb-entry_' . $entry->get_id(); if (is_int($counter / 2)) { $entry_output .= ' gwolle_gb_even'; } else { $entry_output .= ' gwolle_gb_uneven'; } if ($first == true) { $entry_output .= ' gwolle_gb_first'; } if (get_option('gwolle_gb-admin_style', 'true') === 'true') { $author_id = $entry->get_author_id(); $is_moderator = gwolle_gb_is_moderator($author_id); if ($is_moderator) { $entry_output .= ' admin-entry'; } } $entry_output .= '">'; // Author Info $entry_output .= '<div class="gb-author-info">'; // Author Avatar if (isset($read_setting['read_avatar']) && $read_setting['read_avatar'] === 'true') { $avatar = get_avatar($entry->get_author_email(), 32, '', $entry->get_author_name()); if ($avatar) { $entry_output .= '<span class="gb-author-avatar">' . $avatar . '</span>'; } } // Author Name if (isset($read_setting['read_name']) && $read_setting['read_name'] === 'true') { $author_name_html = gwolle_gb_get_author_name_html($entry); $entry_output .= '<span class="gb-author-name">' . $author_name_html . '</span>'; } // Author Origin if (isset($read_setting['read_city']) && $read_setting['read_city'] === 'true') { $origin = $entry->get_author_origin(); if (strlen(str_replace(' ', '', $origin)) > 0) { $entry_output .= '<span class="gb-author-origin"> ' . __('from', GWOLLE_GB_TEXTDOMAIN) . ' ' . gwolle_gb_sanitize_output($origin) . '</span>'; } } // Entry Date and Time if (isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true' || isset($read_setting['read_date']) && $read_setting['read_date'] === 'true') { $entry_output .= '<span class="gb-datetime"> <span class="gb-date"> '; if (isset($read_setting['read_name']) && $read_setting['read_name'] === 'true') { $entry_output .= __('wrote on', GWOLLE_GB_TEXTDOMAIN) . ' '; } $entry_output .= date_i18n(get_option('date_format'), $entry->get_datetime()) . '</span>'; if (isset($read_setting['read_datetime']) && $read_setting['read_datetime'] === 'true') { $entry_output .= '<span class="gb-time"> ' . __('on', GWOLLE_GB_TEXTDOMAIN) . ' ' . trim(date_i18n(get_option('time_format'), $entry->get_datetime())) . '</span>'; } $entry_output .= ':</span> '; } $entry_output .= '</div>'; // <div class="gb-author-info"> // Main Content if (isset($read_setting['read_content']) && $read_setting['read_content'] === 'true') { $entry_output .= '<div class="gb-entry-content">'; $entry_content = gwolle_gb_sanitize_output($entry->get_content()); if (get_option('gwolle_gb-showSmilies', 'true') === 'true') { $entry_content = convert_smilies($entry_content); } if (get_option('gwolle_gb-showLineBreaks', 'false') === 'true') { $entry_content = nl2br($entry_content); } $excerpt_length = (int) get_option('gwolle_gb-excerpt_length', 0); if ($excerpt_length > 0) { $entry_content = wp_trim_words($entry_content, $excerpt_length, '...'); } if (isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true') { $entry_content = gwolle_gb_bbcode_parse($entry_content); } else { $entry_content = gwolle_gb_bbcode_strip($entry_content); } $entry_output .= $entry_content; // Edit Link for Moderators if (function_exists('current_user_can') && current_user_can('moderate_comments')) { $entry_output .= ' <a class="gwolle_gb_edit_link" href="' . admin_url('admin.php?page=' . GWOLLE_GB_FOLDER . '/editor.php&entry_id=' . $entry->get_id()) . '" title="' . __('Edit entry', GWOLLE_GB_TEXTDOMAIN) . '">' . __('Edit', GWOLLE_GB_TEXTDOMAIN) . '</a>'; } $entry_output .= '</div> '; } $entry_output .= '</div> '; return $entry_output; }