| 1 |
<?php |
| 2 |
global $wpdb, $wp_roles; |
| 3 |
$is_admin = current_user_can('administrator'); |
| 4 |
|
| 5 |
if(!empty($_REQUEST['submit']) and check_admin_referer('watu_options')) { |
| 6 |
$delete_db = empty($_POST['delete_db']) ? 0 : 1; |
| 7 |
$delete_db_confirm = (empty($_POST['delete_db_confirm']) or $_POST['delete_db_confirm']!= 'yes') ? '' : 'yes'; |
| 8 |
$answer_type = ($_POST['answer_type'] == 'radio') ? 'radio' : 'checkbox'; |
| 9 |
$use_the_content = empty($_POST['use_the_content']) ? 0 : 1; |
| 10 |
$debug_mode = empty($_POST['debug_mode']) ? 0 : 1; |
| 11 |
$integrate_moolamojo = empty($_POST['integrate_moolamojo']) ? 0 : 1; |
| 12 |
$dont_autoscroll = empty($_POST['dont_autoscroll']) ? 0 : 1; |
| 13 |
$no_ajax = empty($_POST['no_ajax']) ? 0 : 1; |
| 14 |
|
| 15 |
// sanitize email in format test@dot.com or Your Name <test@dot.com> |
| 16 |
$admin_email = $_POST['watu_admin_email']; |
| 17 |
if(strstr($admin_email, '<')) { |
| 18 |
$parts = explode('<', $admin_email); |
| 19 |
$parts[0] = sanitize_text_field($parts[0]); |
| 20 |
$parts[1] = sanitize_email($parts[1]); |
| 21 |
$admin_email = $parts[0].' <'.$parts[1].'>'; |
| 22 |
} |
| 23 |
else $admin_email = sanitize_email($admin_email); |
| 24 |
|
| 25 |
$csv_delim = sanitize_text_field($_POST['csv_delim']); |
| 26 |
$csv_quotes = empty($_POST['csv_quotes']) ? 0 : 1; |
| 27 |
|
| 28 |
update_option( "watu_delete_db", $delete_db, false ); |
| 29 |
update_option('watu_delete_db_confirm', $delete_db_confirm, false); |
| 30 |
update_option('watu_answer_type', $answer_type, false); |
| 31 |
update_option('watu_use_the_content', $use_the_content); |
| 32 |
update_option('watu_text_captcha', wp_kses_post($_POST['text_captcha']), false); |
| 33 |
update_option('watu_debug_mode', $debug_mode, false); |
| 34 |
update_option('watu_admin_email', $admin_email, false); |
| 35 |
update_option('watu_integrate_moolamojo', $integrate_moolamojo, false); |
| 36 |
update_option('watu_quiz_word', sanitize_text_field($_POST['quiz_word']), false); |
| 37 |
update_option('watu_quiz_word_plural', sanitize_text_field($_POST['quiz_word_plural']), false); |
| 38 |
update_option('watu_csv_delim', $csv_delim, false); |
| 39 |
update_option('watu_csv_quotes', $csv_quotes, false); |
| 40 |
update_option('watu_dont_autoscroll', $dont_autoscroll, false); |
| 41 |
update_option('watu_no_ajax', $no_ajax, false); |
| 42 |
|
| 43 |
$roles = $wp_roles->roles; |
| 44 |
|
| 45 |
foreach($roles as $key=>$r) { |
| 46 |
if($key == 'administrator') continue; |
| 47 |
|
| 48 |
$role = get_role($key); |
| 49 |
|
| 50 |
// manage Watu - allow only admin change this |
| 51 |
if($is_admin) { |
| 52 |
if(!empty($_POST['manage_roles']) and is_array($_POST['manage_roles']) and in_array($key, $_POST['manage_roles'])) { |
| 53 |
if(!$role->has_cap('watu_manage')) $role->add_cap('watu_manage'); |
| 54 |
} |
| 55 |
else $role->remove_cap('watu_manage'); |
| 56 |
} // end if can_manage_options |
| 57 |
} // end foreach role |
| 58 |
|
| 59 |
print '<div id="message" class="updated fade"><p>' . __('Options updated', 'watu') . '</p></div>'; |
| 60 |
} |
| 61 |
|
| 62 |
// save no_ajax |
| 63 |
if(!empty($_POST['save_ajax_settings']) and check_admin_referer('watu_ajax_options')) { |
| 64 |
$ids = empty($_POST['no_ajax']) ? array(0) : watu_int_array($_POST['no_ajax']); |
| 65 |
// make sure IDs contains only exam IDs |
| 66 |
$id_sql = implode(',', $ids); |
| 67 |
if(!preg_match("/^[0-9,]+$/", $id_sql)) $id_sql = "0"; |
| 68 |
|
| 69 |
$wpdb->query("UPDATE ".WATU_EXAMS." SET no_ajax=1 WHERE ID IN (".$id_sql.")"); |
| 70 |
$wpdb->query("UPDATE ".WATU_EXAMS." SET no_ajax=0 WHERE ID NOT IN (".$id_sql.")"); |
| 71 |
} |
| 72 |
|
| 73 |
$answer_display = get_option('watu_show_answers'); |
| 74 |
$delete_db = get_option('watu_delete_db'); |
| 75 |
|
| 76 |
$text_captcha = get_option('watu_text_captcha'); |
| 77 |
// load 3 default questions in case nothing is loaded |
| 78 |
if(empty($text_captcha)) { |
| 79 |
$text_captcha = __('What is the color of the snow? = white', 'watu').PHP_EOL.__('Is fire hot or cold? = hot', 'watu') |
| 80 |
.PHP_EOL. __('In which continent is Norway? = Europe', 'watu'); |
| 81 |
} |
| 82 |
|
| 83 |
// select all quizzes for No Ajax option |
| 84 |
$quizzes = $wpdb->get_results("SELECT ID, name, no_ajax FROM ".WATU_EXAMS." ORDER BY name"); |
| 85 |
|
| 86 |
$roles = $wp_roles->roles; |
| 87 |
|
| 88 |
$delim = get_option('watu_csv_delim'); |
| 89 |
|
| 90 |
if(@file_exists(get_stylesheet_directory().'/watu/options.html.php')) include get_stylesheet_directory().'/watu/options.html.php'; |
| 91 |
else include(WATU_PATH . '/views/options.html.php'); |
| 92 |
|