/** * Notifiy people that the audit has been completed * * @access public * @param mixed $audit_id The id of the audit. * @param mixed $audit_name The name of the audit. * @return void */ function msa_notifiy_audit_is_completed($audit_id, $audit_name) { // Check if we have data already saved. if (false === ($settings = get_option('msa_settings'))) { $settings = array(); } // Set to the default admin email. if (!isset($settings['notification_emails'])) { $settings['notification_emails'] = get_option('admin_email'); } // Send email. if ('' !== $settings['notification_emails']) { $site_name = bloginfo('description'); if (!isset($site_name) || '' === $site_name) { $site_name = get_site_url(); } $subject = $audit_name . __(' Completed for site: ', 'msa') . $site_name; $message = __('Your Audit has been completed for site: ', 'msa') . get_site_url() . "\r\n\r\n" . __('View: ', 'msa') . msa_get_single_audit_link($audit_id); $headers = ''; // $headers .= "MIME-Version: 1.0\r\n"; // $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $emails = apply_filters('msa_notify_emails', $settings['notification_emails'], $audit_id); $subject = apply_filters('msa_notify_subject', $subject, $audit_id); $message = apply_filters('msa_notify_message', $message, $audit_id); $headers = apply_filters('msa_notify_headers', $headers, $audit_id); $result = wp_mail($emails, $subject, $message, $headers); } }
/** * The Last Audit Panel Content * * @access public * @return string $output The HTML ouput of the last audit panel. */ function msa_dashboard_panel_last_audit_content() { // Get the latest Audit. $audit_model = new MSA_Audits_Model(); $audit = $audit_model->get_latest(); if (isset($audit)) { $output = '<div class="msa-left-column"> <div class="msa-left-column-content"> <div class="msa-circle msa-circle-border msa-post-status-border-' . msa_get_score_status($audit['score']) . '"> <div class="msa-circle-inner"> <div class="msa-score-text msa-post-status-text-' . msa_get_score_status($audit['score']) . '">' . round(100 * $audit['score']) . '%</div> </div> </div> </div> </div>'; $output .= '<div class="msa-right-column"> <div class="msa-right-column-content"> <table class="wp-list-table widefat striped"> <tbody>'; $user = get_userdata($audit['user']); $output .= '<tr><td>' . __('Name', 'msa') . '</td> <td><a href="' . msa_get_single_audit_link($audit['id']) . '">' . $audit['name'] . '</a></td></tr>'; $output .= '<tr><td>' . __('Created On', 'msa') . '</td> <td>' . date('M d Y, h:i:s', strtotime($audit['date'])) . '</td></tr>'; $output .= '<tr><td>' . __('Number of Posts', 'msa') . '</td> <td>' . $audit['num_posts'] . '</td></tr>'; $output .= '<tr><td>' . __('Created By', 'msa') . '</td> <td>' . $user->display_name . '</td></tr>'; $output .= '</tbody> </table> </div> </div>'; } else { $output = '<p>' . __('You do not have any audits yet.', 'msa') . ' <a href="' . get_admin_url() . 'admin.php?page=msa-all-audits">' . __('Create one now!', 'msa') . '</a></p>'; } return $output; }
/** * Return the output for the Name column * * @access public * @param mixed $item The Audit. */ public function column_name($item) { if (isset($item['status']) && 'in-progress' === $item['status']) { return apply_filters('msa_all_audits_table_column_name_extension', $item['name']); } if (!isset($item['extension'])) { $audit_model = new MSA_Audits_Model(); $audit = $audit_model->get_data_from_id($item['id']); $condition = $audit['args']['conditions']; $actions = array(); $actions['delete'] = '<a href="' . wp_nonce_url(get_admin_url() . 'admin.php?page=msa-all-audits&action=delete&audit=' . $item['id'], 'msa-delete-audit') . '">' . __('Delete', 'msa') . '</a>'; $condition_modal = '<a href="#" class="msa-audit-conditions-button" data-id="' . $item['id'] . '">' . __('Conditions', 'msa') . '</a> <div class="msa-audit-conditions-modal" data-id="' . $item['id'] . '"> <div class="msa-audit-conditions-modal-container"> <h3 class="msa-audit-conditions-modal-heading">' . __('Conditions', 'msa') . '</h3> <div class="msa-audit-conditions"> <table class="wp-list-table widefat striped fixed"> <thead> <tr> <th scope="col">' . __('Name', 'msa') . '</th> <th scope="col">' . __('Weight', 'msa') . '</th> <th scope="col">' . __('Comparison', 'msa') . '</th> <th scope="col">' . __('Value', 'msa') . '</th> <th scope="col">' . __('Minimum', 'msa') . '</th> <th scope="col">' . __('Maximum', 'msa') . '</th> </tr> </thead> <tbody>'; foreach (json_decode($audit['args']['conditions'], true) as $condition) { $min = isset($condition['units']) ? $condition['min'] . ' ' . $condition['units'] : $condition['min']; $max = isset($condition['units']) ? $condition['max'] . ' ' . $condition['units'] : $condition['max']; if (1 === $condition['comparison']) { $comparison = __('Greater Than', 'msa'); $max = ''; } else { if (2 === $condition['comparison']) { $comparison = __('Less Than', 'msa'); $min = ''; } else { if (3 === $condition['comparison']) { $comparison = __('In Between', 'msa'); } } } $value = __('Pass or Fail', 'msa'); if (2 === $condition['value']) { $value = __('Percentage', 'msa'); } $condition_modal .= '<tr> <td>' . (isset($condition['name']) ? $condition['name'] : '') . '</td> <td>' . (isset($condition['weight']) ? $condition['weight'] : '') . '</td> <td>' . $comparison . '</td> <td>' . $value . '</td> <td>' . $min . '</td> <td>' . $max . '</td> </tr>'; } $condition_modal .= '</tbody> </table> </div> </div> </div>'; $actions['edit'] = $condition_modal; return apply_filters('msa_all_audits_table_column_name', sprintf('%1$s %2$s', '<a href="' . msa_get_single_audit_link($item['id']) . '">' . $item['name'] . '</a><small style="opacity:0.5;padding-left:4px;">id:(' . $item['id'] . ')</small>', $this->row_actions($actions))); } return apply_filters('msa_all_audits_table_column_name_extension', '<a href="' . $item['extension-link'] . '" target="_blank">' . $item['name'] . '</a>'); }
$audit_id = sanitize_text_field(wp_unslash($_GET['audit'])); // Input var okay. $audit_model = new MSA_Audits_Model(); $audit = $audit_model->get_data_from_id($audit_id); $audit_posts_model = new MSA_Audit_Posts_Model(); $audit_post = $audit_posts_model->get_data_from_id($audit_id, $post_id); $post = (object) $audit_post['post']; $data = $audit_post['data']['values']; $score = $audit_post['data']['score']; ?> <h1><?php esc_attr_e('Post Audit Details', 'msa'); ?> <a href="<?php esc_attr_e(msa_get_single_audit_link($audit_id)); ?> " class="page-title-action"><?php esc_attr_e('All Posts', 'msa'); ?> </a> </h1> <div class="msa-header msa-single-post"> <div class="msa-column msa-header-column msa-header-score-wrap"> <div class="msa-header-score-container"> <div class="msa-header-post-score msa-post-status-bg msa-post-status-bg-<?php esc_attr_e(msa_get_score_status($score['score'])); ?> ">
/** * Prints the box content. * * @access public * @param object $post A WP_Post obejct. * @return void */ function msa_meta_box_callback($post) { // Get the latest audit. $audit_model = new MSA_Audits_Model(); $audit = $audit_model->get_latest(); // Check to see if we have an audit. if (isset($audit)) { $post_id = -1; if (isset($_GET['post'])) { // Input var okay. $post_id = sanitize_text_field(wp_unslash($_GET['post'])); // Input var okay. } $audit = $audit_model->get_data_from_id($audit['id']); $audit_posts_model = new MSA_Audit_Posts_Model(); $audit_post = $audit_posts_model->get_data_from_id($audit['id'], $post_id); if ($audit_post) { $post = (object) $audit_post['post']; $data = $audit_post['data']['values']; $score = $audit_post['data']['score']; $condition_categories = msa_get_condition_categories(); $user = get_userdata($audit['user']); do_action('msa_before_post_meta_box', $audit['id'], $post_id); ?> <div class="msa-post-meta-container msa-post-meta-audit-meta-attributes"> <p class="msa-post-meta-attribute"><?php esc_attr_e('Score: ', 'msa'); ?> </p> <p class="msa-post-meta-attribute"><?php esc_attr_e('From Audit: ', 'msa'); ?> </p> <p class="msa-post-meta-attribute"><?php esc_attr_e('Created On: ', 'msa'); ?> </p> <p class="msa-post-meta-attribute"><?php esc_attr_e('Created By: ', 'msa'); ?> </p> </div> <div class="msa-post-meta-container msa-post-meta-audit-meta-values"> <p class="msa-post-meta-value msa-post-status-bg msa-post-status-bg-<?php esc_attr_e(msa_get_score_status($score['score'])); ?> "><?php esc_attr_e(round($score['score'] * 100, 2)); ?> %</p> <p class="msa-post-meta-value"><a href="<?php esc_attr_e(msa_get_single_audit_link($audit['id'])); ?> " target="_blank"><?php esc_attr_e($audit['name']); ?> </a></p> <p class="msa-post-meta-value"><?php esc_attr_e(date('M j, Y', strtotime($audit['date']))); ?> </p> <p class="msa-post-meta-value"><?php esc_attr_e($user->display_name); ?> </p> </div><?php foreach ($condition_categories as $key => $condition_category) { ?> <div class="postbox" id="<?php esc_attr_e($key); ?> " style="pointer-events: none;"> <?php echo apply_filters('msa_condition_category_content', $key, $post, $data, $score); // WPCS: XSS ok. ?> </div><?php } do_action('msa_after_post_meta_box', $audit['id'], $post_id); } } wp_enqueue_style('msa-all-audits-css', MY_SITE_AUDIT_PLUGIN_URL . '/css/all-audits.css'); wp_enqueue_style('msa-post-meta-css', MY_SITE_AUDIT_PLUGIN_URL . '/css/post-meta.css'); wp_enqueue_style('msa-common-css', MY_SITE_AUDIT_PLUGIN_URL . '/css/common.css'); }
/** * Hooks into the 'admin_print_scripts-$page' to inlcude the scripts for the all audits page * * @access public * @static * @return void */ function msa_all_audits_scripts() { msa_include_default_styles(); // Style. wp_enqueue_style('msa-all-audits-css', MY_SITE_AUDIT_PLUGIN_URL . '/css/all-audits.css'); wp_enqueue_style('msa-fontawesome-css', MY_SITE_AUDIT_PLUGIN_URL . '/includes/font-awesome/css/font-awesome.min.css'); wp_enqueue_style('msa-jquery-ui-css', MY_SITE_AUDIT_PLUGIN_URL . '/includes/jquery-datepicker/jquery-ui.min.css'); wp_enqueue_style('msa-jquery-ui-theme-css', MY_SITE_AUDIT_PLUGIN_URL . '/includes/jquery-datepicker/jquery-ui.theme.min.css'); wp_enqueue_style('msa-jquery-daterange-picker-css', MY_SITE_AUDIT_PLUGIN_URL . '/includes/jquery-daterange-picker/jquery.comiseo.daterangepicker.css'); wp_enqueue_style('media-views'); // Scripts. wp_enqueue_script('jquery'); wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_script('msa-jquery-daterange-picker-js', MY_SITE_AUDIT_PLUGIN_URL . '/includes/jquery-daterange-picker/jquery.comiseo.daterangepicker.js', array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-button', 'jquery-ui-tabs', 'jquery-ui-menu', 'jquery-ui-widget', 'msa-moment-js')); wp_enqueue_script('msa-moment-js', MY_SITE_AUDIT_PLUGIN_URL . '/includes/moment/moment.min.js'); wp_enqueue_script('msa-all-audits-js', MY_SITE_AUDIT_PLUGIN_URL . '/js/all-audits.js'); wp_localize_script('msa-all-audits-js', 'msa_all_audits_data', array('site_url' => get_site_url(), 'admin_url' => get_admin_url(), 'audit_page' => get_admin_url() . 'admin.php?page=msa-all-audits', 'add_post_to_audit_nonce' => wp_create_nonce('add_post_to_audit_nonce'), 'update_audit_score_nonce' => wp_create_nonce('update_audit_score_nonce'), 'get_post_ids_nonce' => wp_create_nonce('get_post_ids_nonce'), 'info' => __('Your Audit is now being created and you can monitor its status from the progress bar below. Please <strong>DO NOT</strong> refresh this page as that will stop the audit. If you want to stop this audit for any reason, then click <a href="' . get_admin_url() . 'admin.php?page=msa-all-audits" class="msa-force-stop">Force Stop</a>.', 'msa'), 'success_message' => __('Your Audit has been created! See it ', 'msa'))); if (false === ($show_columns = get_option('msa_show_columns_' . get_current_user_id()))) { $show_columns = array(); } wp_enqueue_script('msa-single-audit-js', MY_SITE_AUDIT_PLUGIN_URL . '/js/single-audit.js'); wp_localize_script('msa-single-audit-js', 'msaSingleAuditData', array('audit_page' => isset($_GET['audit']) ? msa_get_single_audit_link(wp_unslash($_GET['audit'])) : '', 'show_columns' => $show_columns, 'attribute_title' => __('Attributes', 'msa'), 'conditions' => msa_get_conditions(), 'show_column_nonce' => wp_create_nonce('msa_show_column'), 'condition_categories' => msa_get_condition_categories())); wp_enqueue_script('msa-single-post-js', MY_SITE_AUDIT_PLUGIN_URL . '/js/single-post.js'); }