. // Check if request is for JSONP if (isset ($_GET['jsonp'])) { // If so, setup HashOver for JavaScript require ('javascript-setup.php'); // Get data from GET request $request = $_GET; } else { // If not, setup HashOver for JSON require ('json-setup.php'); // Get data from POST request $request = $_POST; } // Converts a file name (1-2) to a permalink (hashover-c1r1) function file_permalink ($file) { return 'hashover-c' . str_replace ('-', 'r', $file); } // Handles posted comment data function display_json (\HashOver $hashover, FormData $form_data, $data) { // Check if request is HTTP if ($form_data->viaAJAX === false) { // If so, convert file to permalink $permalink = file_permalink ($data['file']); // And redirect to comment return $form_data->kickback ($permalink); } // Otherwise, split file into parts $key_parts = explode ('-', $data['file']); // Parse comment data $parsed = $hashover->commentParser->parse ( $data['comment'], $data['file'], $key_parts ); // Add page URL, thread, and title to comment data $parsed['url'] = $hashover->setup->pageURL; $parsed['thread'] = $hashover->setup->threadName; $parsed['title'] = $hashover->setup->pageTitle; // And return JSON or JSONP function call return Misc::jsonData (array ( // Current comment count 'count' => $hashover->getCommentCount (), // Parsed comment data 'comment' => $parsed )); } try { // Instantiate HashOver class $hashover = new \HashOver ('json'); // Throw exception if requested by remote server $hashover->setup->refererCheck (); // Load user settings $hashover->setup->loadFrontendSettings (); // Set page URL from POST/GET data $hashover->setup->setPageURL ('request'); // Set page title from POST/GET data $hashover->setup->setPageTitle ('request'); // Set thread name from POST/GET data $hashover->setup->setThreadName ('request'); // Instantiate FormData class $form_data = new FormData ($hashover->setup, $hashover->cookies); // Handle user login if (isset ($request['login'])) { // Log the user in $hashover->login->setLogin (); // Kick visitor back if told to $form_data->displayMessage ('logged-in'); } // Handle user logout if (isset ($request['logout'])) { // Log the user out $hashover->login->clearLogin (); // Kick visitor back $form_data->displayMessage ('logged-out'); } // Initiate and finalize comment processing $hashover->initiate (); $hashover->finalize (); // Instantiate class for writing and editing comments $write_comments = new WriteComments ( $hashover->setup, $form_data, $hashover->thread, $hashover->login ); // Decide SPAM check mode $mode = $form_data->viaAJAX ? 'javascript' : 'php'; // Handle new comment post if (isset ($request['post'])) { // Check IP address for spam $form_data->checkForSpam ($mode); // Save posted comment $data = $write_comments->postComment (); // Create/update page metadata $hashover->defaultMetadata (); // Check if comment saved successfully if (!empty ($data)) { // If so, display comment as JSON data echo display_json ($hashover, $form_data, $data); } else { // If not, redirect to failure message $form_data->displayMessage ('post-fail'); } } // Handle comment edit if (isset ($request['edit'])) { // Check IP address for spam $form_data->checkForSpam ($mode); // Save edited comment $data = $write_comments->editComment (); // Check if edited comment saved successfully if (!empty ($data)) { // If so, display comment as JSON data echo display_json ($hashover, $form_data, $data); } else { // If not, redirect to failure message $form_data->displayMessage ('post-fail'); } } // Handle comment deletion if (isset ($request['delete'])) { // Check IP address for spam $form_data->checkForSpam ($mode); // Attempt to delete comment $deleted = $write_comments->deleteComment (); // Check if comment was deleted successfully if ($deleted === true) { // If so, redirect to deletion message $form_data->displayMessage ('comment-deleted'); } else { // If not, redirect to failure message $form_data->displayMessage ('post-fail'); } } } catch (\Exception $error) { echo Misc::displayException ($error, 'json'); }