1: <?php
2: if ( ! defined( 'ABSPATH' ) ) exit;
3:
4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
14: class Sensei_Settings extends Sensei_Settings_API {
15:
16: 17: 18: 19: 20:
21: public function __construct () {
22: parent::__construct();
23:
24: $this->token = 'woothemes-sensei-settings';
25: add_action('init', array( __CLASS__, 'flush_rewrite_rules' ) );
26:
27:
28: if ( is_admin() ) {
29:
30: $this->has_tabs = true;
31: $this->name = __( 'Sensei Settings', 'woothemes-sensei' );
32: $this->menu_label = __( 'Settings', 'woothemes-sensei' );
33: $this->page_slug = 'woothemes-sensei-settings';
34:
35: }
36:
37: $this->register_hook_listener();
38: $this->get_settings();
39:
40: }
41:
42: 43: 44: 45: 46: 47: 48:
49: public function get( $setting_name ){
50:
51: if( isset( $this->settings[ $setting_name ] ) ){
52:
53: return $this->settings[ $setting_name ];
54:
55: }
56:
57: return false;
58: }
59:
60: 61: 62: 63: 64: 65:
66: public function set( $setting, $new_value ){
67:
68: $settings = get_option( $this->token, array() );
69: $settings[ $setting ] = $new_value;
70: return update_option( $this->token,$settings );
71:
72: }
73:
74: 75: 76: 77: 78: 79:
80: public function register_settings_screen () {
81:
82: $this->settings_version = Sensei()->version;
83: $hook = add_submenu_page( 'sensei', $this->name, $this->menu_label, 'manage_sensei', $this->page_slug, array( $this, 'settings_screen' ) );
84: $this->hook = $hook;
85:
86: if ( isset( $_GET['page'] ) && ( $_GET['page'] == $this->page_slug ) ) {
87: add_action( 'admin_notices', array( $this, 'settings_errors' ) );
88: add_action( 'admin_notices', array( $this, 'language_pack_notices' ) );
89: add_action( 'admin_print_scripts', array( $this, 'enqueue_scripts' ) );
90: add_action( 'admin_print_styles', array( $this, 'enqueue_styles' ) );
91: }
92: }
93:
94: 95: 96: 97: 98: 99:
100: public function init_sections () {
101: $sections = array();
102:
103: $sections['default-settings'] = array(
104: 'name' => __( 'General', 'woothemes-sensei' ),
105: 'description' => __( 'Settings that apply to the entire plugin.', 'woothemes-sensei' )
106: );
107:
108: $sections['course-settings'] = array(
109: 'name' => __( 'Courses', 'woothemes-sensei' ),
110: 'description' => __( 'Settings that apply to all Courses.', 'woothemes-sensei' )
111: );
112:
113: $sections['lesson-settings'] = array(
114: 'name' => __( 'Lessons', 'woothemes-sensei' ),
115: 'description' => __( 'Settings that apply to all Lessons.', 'woothemes-sensei' )
116: );
117:
118: $sections['email-notification-settings'] = array(
119: 'name' => __( 'Email Notifications', 'woothemes-sensei' ),
120: 'description' => __( 'Settings for email notifications sent from your site.', 'woothemes-sensei' )
121: );
122:
123: $sections['learner-profile-settings'] = array(
124: 'name' => __( 'Learner Profiles', 'woothemes-sensei' ),
125: 'description' => __( 'Settings for public Learner Profiles.', 'woothemes-sensei' )
126: );
127:
128: if ( Sensei_WC::is_woocommerce_present() ) {
129: $sections['woocommerce-settings'] = array(
130: 'name' => __( 'WooCommerce', 'woothemes-sensei' ),
131: 'description' => __( 'Optional settings for WooCommerce functions.', 'woothemes-sensei' )
132: );
133: }
134:
135: if ( 'en_US' !== get_locale() ) {
136: $sections['language-settings'] = array(
137: 'name' => __( 'Language', 'woothemes-sensei' ),
138: 'description' => __( 'Language options.', 'woothemes-sensei' )
139: );
140: }
141:
142: $this->sections = apply_filters( 'sensei_settings_tabs', $sections );
143: }
144:
145: 146: 147: 148: 149: 150: 151:
152: public function init_fields () {
153: global $pagenow;
154:
155: $pages_array = $this->pages_array();
156: $posts_per_page_array = array( '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', '11' => '11', '12' => '12', '13' => '13', '14' => '14', '15' => '15', '16' => '16', '17' => '17', '18' => '18', '19' => '19', '20' => '20' );
157: $complete_settings = array( 'passed' => __( 'Once all the course lessons have been completed', 'woothemes-sensei' ), 'complete' => __( 'At any time (by clicking the \'Complete Course\' button)', 'woothemes-sensei' ) );
158: $course_display_settings = array( 'excerpt' => __( 'Course Excerpt', 'woothemes-sensei' ), 'full' => __( 'Full Course Content', 'woothemes-sensei' ) );
159:
160: $fields = array();
161:
162: $fields['access_permission'] = array(
163: 'name' => __( 'Access Permissions', 'woothemes-sensei' ),
164: 'description' => __( 'Users must be logged in to view Course and Lesson content.', 'woothemes-sensei', 'woothemes-sensei' ),
165: 'type' => 'checkbox',
166: 'default' => true,
167: 'section' => 'default-settings'
168: );
169:
170: $fields['messages_disable'] = array(
171: 'name' => __( 'Disable Private Messages', 'woothemes-sensei' ),
172: 'description' => __( 'Disable the private message functions between learners and teachers.', 'woothemes-sensei' ),
173: 'type' => 'checkbox',
174: 'default' => false,
175: 'section' => 'default-settings'
176: );
177:
178: $fields['course_page'] = array(
179: 'name' => __( 'Course Archive Page', 'woothemes-sensei' ),
180: 'description' => __( 'The page to use to display courses. If you leave this blank the default custom post type archive will apply.', 'woothemes-sensei' ),
181: 'type' => 'select',
182: 'default' => get_option( 'woothemes-sensei_courses_page_id', 0 ),
183: 'section' => 'default-settings',
184: 'required' => 0,
185: 'options' => $pages_array
186: );
187:
188: $fields['my_course_page'] = array(
189: 'name' => __( 'My Courses Page', 'woothemes-sensei' ),
190: 'description' => __( 'The page to use to display the courses that a user is currently taking as well as the courses a user has complete.', 'woothemes-sensei' ),
191: 'type' => 'select',
192: 'default' => get_option( 'woothemes-sensei_user_dashboard_page_id', 0 ),
193: 'section' => 'default-settings',
194: 'required' => 0,
195: 'options' => $pages_array
196: );
197:
198: $fields['placeholder_images_enable'] = array(
199: 'name' => __( 'Use placeholder images', 'woothemes-sensei' ),
200: 'description' => __( 'Output a placeholder image when no featured image has been specified for Courses and Lessons.', 'woothemes-sensei' ),
201: 'type' => 'checkbox',
202: 'default' => false,
203: 'section' => 'default-settings'
204: );
205:
206: $fields['styles_disable'] = array(
207: 'name' => __( 'Disable Sensei Styles', 'woothemes-sensei' ),
208: 'description' => __( 'Prevent the frontend stylesheets from loading. This will remove the default styles for all Sensei elements.', 'woothemes-sensei' ),
209: 'type' => 'checkbox',
210: 'default' => false,
211: 'section' => 'default-settings'
212: );
213:
214: $fields['js_disable'] = array(
215: 'name' => __( 'Disable Sensei Javascript', 'woothemes-sensei' ),
216: 'description' => __( 'Prevent the frontend javascript from loading. This affects the progress bars and the My Courses tabs.', 'woothemes-sensei' ),
217: 'type' => 'checkbox',
218: 'default' => false,
219: 'section' => 'default-settings'
220: );
221:
222:
223:
224: $fields['course_completion'] = array(
225: 'name' => __( 'Courses are complete:', 'woothemes-sensei' ),
226: 'description' => __( 'This will determine when courses are marked as complete.', 'woothemes-sensei' ),
227: 'type' => 'select',
228: 'default' => 'passed',
229: 'section' => 'course-settings',
230: 'required' => 0,
231: 'options' => $complete_settings
232: );
233:
234: $fields['course_author'] = array(
235: 'name' => __( 'Display Course Author', 'woothemes-sensei' ),
236: 'description' => __( 'Output the Course Author on Course archive and My Courses page.', 'woothemes-sensei' ),
237: 'type' => 'checkbox',
238: 'default' => true,
239: 'section' => 'course-settings'
240: );
241:
242: $fields['my_course_amount'] = array(
243: 'name' => __( 'My Courses Pagination', 'woothemes-sensei' ),
244: 'description' => __( 'The number of courses to output for the my courses page.', 'woothemes-sensei' ),
245: 'type' => 'range',
246: 'default' => '0',
247: 'section' => 'course-settings',
248: 'required' => 0,
249: 'options' => $posts_per_page_array
250: );
251:
252: $fields['course_archive_image_enable'] = array(
253: 'name' => __( 'Course Archive Image', 'woothemes-sensei' ),
254: 'description' => __( 'Output the Course Image on the Course Archive Page.', 'woothemes-sensei' ),
255: 'type' => 'checkbox',
256: 'default' => true,
257: 'section' => 'course-settings'
258: );
259:
260: $fields['course_archive_image_width'] = array(
261: 'name' => __( 'Image Width - Archive', 'woothemes-sensei' ),
262: 'description' => __( 'The width in pixels of the featured image for the Course Archive page.', 'woothemes-sensei' ),
263: 'type' => 'text',
264: 'default' => '100',
265: 'section' => 'course-settings',
266: 'required' => 0
267: );
268:
269: $fields['course_archive_image_height'] = array(
270: 'name' => __( 'Image Height - Archive', 'woothemes-sensei' ),
271: 'description' => __( 'The height in pixels of the featured image for the Course Archive page.', 'woothemes-sensei' ),
272: 'type' => 'text',
273: 'default' => '100',
274: 'section' => 'course-settings',
275: 'required' => 0
276: );
277:
278: $fields['course_archive_image_hard_crop'] = array(
279: 'name' => __( 'Image Hard Crop - Archive', 'woothemes-sensei' ),
280: 'description' => sprintf( __( 'After changing this setting, you may need to %1$sregenerate your thumbnails%2$s.', 'woothemes-sensei' ), '<a href="' . esc_url( 'http://wordpress.org/extend/plugins/regenerate-thumbnails/' ) . '">', '</a>' ),
281: 'type' => 'checkbox',
282: 'default' => false,
283: 'section' => 'course-settings'
284: );
285:
286: $fields['course_single_image_enable'] = array(
287: 'name' => __( 'Single Course Image', 'woothemes-sensei' ),
288: 'description' => __( 'Output the Course Image on the Single Course Page.', 'woothemes-sensei' ),
289: 'type' => 'checkbox',
290: 'default' => false,
291: 'section' => 'course-settings'
292: );
293:
294: $fields['course_single_image_width'] = array(
295: 'name' => __( 'Image Width - Single', 'woothemes-sensei' ),
296: 'description' => __( 'The width in pixels of the featured image for the Course single post page.', 'woothemes-sensei' ),
297: 'type' => 'text',
298: 'default' => '100',
299: 'section' => 'course-settings',
300: 'required' => 0
301: );
302:
303: $fields['course_single_image_height'] = array(
304: 'name' => __( 'Image Height - Single', 'woothemes-sensei' ),
305: 'description' => __( 'The height in pixels of the featured image for the Course single post page.', 'woothemes-sensei' ),
306: 'type' => 'text',
307: 'default' => '100',
308: 'section' => 'course-settings',
309: 'required' => 0
310: );
311:
312: $fields['course_single_image_hard_crop'] = array(
313: 'name' => __( 'Image Hard Crop - Single', 'woothemes-sensei' ),
314: 'description' => sprintf( __( 'After changing this setting, you may need to %1$sregenerate your thumbnails%2$s.', 'woothemes-sensei' ), '<a href="' . esc_url( 'http://wordpress.org/extend/plugins/regenerate-thumbnails/' ) . '">', '</a>' ),
315: 'type' => 'checkbox',
316: 'default' => false,
317: 'section' => 'course-settings'
318: );
319:
320: $fields['course_single_content_display'] = array(
321: 'name' => __( 'Single Course page displays:', 'woothemes-sensei' ),
322: 'description' => __( 'Determines what content to display on the single course page.', 'woothemes-sensei' ),
323: 'type' => 'select',
324: 'default' => 'excerpt',
325: 'section' => 'course-settings',
326: 'required' => 0,
327: 'options' => $course_display_settings
328: );
329:
330: $fields['course_archive_featured_enable'] = array(
331: 'name' => __( 'Featured Courses Panel', 'woothemes-sensei' ),
332: 'description' => __( 'Output the Featured Courses Panel on the Course Archive Page.', 'woothemes-sensei' ),
333: 'type' => 'checkbox',
334: 'default' => true,
335: 'section' => 'course-settings'
336: );
337:
338: $fields['course_archive_more_link_text'] = array(
339: 'name' => __( 'More link text', 'woothemes-sensei' ),
340: 'description' => __( 'The text that will be displayed on the Course Archive for the more courses link.', 'woothemes-sensei' ),
341: 'type' => 'text',
342: 'default' => __ ( 'More', 'woothemes-sensei' ),
343: 'section' => 'course-settings',
344: 'required' => 0
345: );
346:
347:
348:
349: $fields['lesson_comments'] = array(
350: 'name' => __( 'Allow Comments for Lessons', 'woothemes-sensei' ),
351: 'description' => __( 'This will allow learners to post comments on the single Lesson page, only learner who have access to the Lesson will be allowed to comment.', 'woothemes-sensei' ),
352: 'type' => 'checkbox',
353: 'default' => true,
354: 'section' => 'lesson-settings'
355: );
356:
357: $fields['lesson_author'] = array(
358: 'name' => __( 'Display Lesson Author', 'woothemes-sensei' ),
359: 'description' => __( 'Output the Lesson Author on Course single page & Lesson archive page.', 'woothemes-sensei' ),
360: 'type' => 'checkbox',
361: 'default' => true,
362: 'section' => 'lesson-settings'
363: );
364:
365: $fields['course_lesson_image_enable'] = array(
366: 'name' => __( 'Course Lesson Images', 'woothemes-sensei' ),
367: 'description' => __( 'Output the Lesson Image on the Single Course Page.', 'woothemes-sensei' ),
368: 'type' => 'checkbox',
369: 'default' => false,
370: 'section' => 'lesson-settings'
371: );
372:
373: $fields['lesson_archive_image_width'] = array(
374: 'name' => __( 'Image Width - Course Lessons', 'woothemes-sensei' ),
375: 'description' => __( 'The width in pixels of the featured image for the Lessons on the Course Single page.', 'woothemes-sensei' ),
376: 'type' => 'text',
377: 'default' => '100',
378: 'section' => 'lesson-settings',
379: 'required' => 0
380: );
381:
382: $fields['lesson_archive_image_height'] = array(
383: 'name' => __( 'Image Height - Course Lessons', 'woothemes-sensei' ),
384: 'description' => __( 'The height in pixels of the featured image for the Lessons on the Course Single page.', 'woothemes-sensei' ),
385: 'type' => 'text',
386: 'default' => '100',
387: 'section' => 'lesson-settings',
388: 'required' => 0
389: );
390:
391: $fields['lesson_archive_image_hard_crop'] = array(
392: 'name' => __( 'Image Hard Crop - Course Lessons', 'woothemes-sensei' ),
393: 'description' => sprintf( __( 'After changing this setting, you may need to %1$sregenerate your thumbnails%2$s.', 'woothemes-sensei' ), '<a href="' . esc_url( 'http://wordpress.org/extend/plugins/regenerate-thumbnails/' ) . '">', '</a>' ),
394: 'type' => 'checkbox',
395: 'default' => false,
396: 'section' => 'lesson-settings'
397: );
398:
399: $fields['lesson_single_image_enable'] = array(
400: 'name' => __( 'Single Lesson Images', 'woothemes-sensei' ),
401: 'description' => __( 'Output the Lesson Image on the Single Lesson Page.', 'woothemes-sensei' ),
402: 'type' => 'checkbox',
403: 'default' => false,
404: 'section' => 'lesson-settings'
405: );
406:
407: $fields['lesson_single_image_width'] = array(
408: 'name' => __( 'Image Width - Single', 'woothemes-sensei' ),
409: 'description' => __( 'The width in pixels of the featured image for the Lessons single post page.', 'woothemes-sensei' ),
410: 'type' => 'text',
411: 'default' => '100',
412: 'section' => 'lesson-settings',
413: 'required' => 0
414: );
415:
416: $fields['lesson_single_image_height'] = array(
417: 'name' => __( 'Image Height - Single', 'woothemes-sensei' ),
418: 'description' => __( 'The height in pixels of the featured image for the Lessons single post page.', 'woothemes-sensei' ),
419: 'type' => 'text',
420: 'default' => '100',
421: 'section' => 'lesson-settings',
422: 'required' => 0
423: );
424:
425: $fields['lesson_single_image_hard_crop'] = array(
426: 'name' => __( 'Image Hard Crop - Single', 'woothemes-sensei' ),
427: 'description' => sprintf( __( 'After changing this setting, you may need to %1$sregenerate your thumbnails%2$s.', 'woothemes-sensei' ), '<a href="' . esc_url( 'http://wordpress.org/extend/plugins/regenerate-thumbnails/' ) . '">', '</a>' ),
428: 'type' => 'checkbox',
429: 'default' => false,
430: 'section' => 'lesson-settings'
431: );
432:
433:
434:
435: $profile_url_base = apply_filters( 'sensei_learner_profiles_url_base', __( 'learner', 'woothemes-sensei') );
436: $profile_url_example = trailingslashit( get_site_url() ) . $profile_url_base . '/%username%';
437:
438: $fields['learner_profile_enable'] = array(
439: 'name' => __( 'Public learner profiles', 'woothemes-sensei' ),
440: 'description' => sprintf( __( 'Enable public learner profiles that will be accessible to everyone. Profile URL format: %s', 'woothemes-sensei' ), $profile_url_example ),
441: 'type' => 'checkbox',
442: 'default' => true,
443: 'section' => 'learner-profile-settings'
444: );
445:
446: $fields['learner_profile_show_courses'] = array(
447: 'name' => __( 'Show learner\'s courses', 'woothemes-sensei' ),
448: 'description' => __( 'Display the learner\'s active and completed courses on their profile.', 'woothemes-sensei' ),
449: 'type' => 'checkbox',
450: 'default' => true,
451: 'section' => 'learner-profile-settings'
452: );
453:
454:
455:
456: $learner_email_options = array(
457: 'learner-graded-quiz' => __( 'Their quiz is graded (auto and manual grading)', 'woothemes-sensei' ),
458: 'learner-completed-course' => __( 'They complete a course', 'woothemes-sensei' ),
459: );
460:
461: $teacher_email_options = array(
462: 'teacher-started-course' => __( 'A learner starts their course', 'woothemes-sensei' ),
463: 'teacher-completed-course' => __( 'A learner completes their course', 'woothemes-sensei' ),
464: 'teacher-completed-lesson' => __( 'A learner completes a lesson', 'woothemes-sensei' ),
465: 'teacher-quiz-submitted' => __( 'A learner submits a quiz for grading', 'woothemes-sensei' ),
466: 'teacher-new-message' => __( 'A learner sends a private message to a teacher', 'woothemes-sensei' ),
467: );
468:
469: $global_email_options = array(
470: 'new-message-reply' => __( 'They receive a reply to their private message', 'woothemes-sensei' ),
471: );
472:
473: $fields['email_learners'] = array(
474: 'name' => __( 'Emails Sent to Learners', 'woothemes-sensei' ),
475: 'description' => __( 'Select the notifications that will be sent to learners.', 'woothemes-sensei' ),
476: 'type' => 'multicheck',
477: 'options' => $learner_email_options,
478: 'defaults' => array( 'learner-graded-quiz', 'learner-completed-course' ),
479: 'section' => 'email-notification-settings'
480: );
481:
482: $fields['email_teachers'] = array(
483: 'name' => __( 'Emails Sent to Teachers', 'woothemes-sensei' ),
484: 'description' => __( 'Select the notifications that will be sent to teachers.', 'woothemes-sensei' ),
485: 'type' => 'multicheck',
486: 'options' => $teacher_email_options,
487: 'defaults' => array( 'teacher-completed-course', 'teacher-started-course', 'teacher-quiz-submitted', 'teacher-new-message' ),
488: 'section' => 'email-notification-settings'
489: );
490:
491: $fields['email_global'] = array(
492: 'name' => __( 'Emails Sent to All Users', 'woothemes-sensei' ),
493: 'description' => __( 'Select the notifications that will be sent to all users.', 'woothemes-sensei' ),
494: 'type' => 'multicheck',
495: 'options' => $global_email_options,
496: 'defaults' => array( 'new-message-reply' ),
497: 'section' => 'email-notification-settings'
498: );
499:
500: $fields['email_from_name'] = array(
501: 'name' => __( '"From" Name', 'woothemes-sensei' ),
502: 'description' => __( 'The name from which all emails will be sent.', 'woothemes-sensei' ),
503: 'type' => 'text',
504: 'default' => get_bloginfo( 'name' ),
505: 'section' => 'email-notification-settings',
506: 'required' => 1
507: );
508:
509: $fields['email_from_address'] = array(
510: 'name' => __( '"From" Address', 'woothemes-sensei' ),
511: 'description' => __( 'The address from which all emails will be sent.', 'woothemes-sensei' ),
512: 'type' => 'text',
513: 'default' => get_bloginfo( 'admin_email' ),
514: 'section' => 'email-notification-settings',
515: 'required' => 1
516: );
517:
518: $fields['email_header_image'] = array(
519: 'name' => __( 'Header Image', 'woothemes-sensei' ),
520: 'description' => sprintf( __( 'Enter a URL to an image you want to show in the email\'s header. Upload your image using the %1$smedia uploader%2$s.', 'woothemes-sensei' ), '<a href="' . admin_url( 'media-new.php' ) . '">', '</a>' ),
521: 'type' => 'text',
522: 'default' => '',
523: 'section' => 'email-notification-settings',
524: 'required' => 0
525: );
526:
527: $fields['email_footer_text'] = array(
528: 'name' => __( 'Email Footer Text', 'woothemes-sensei' ),
529: 'description' => __( 'The text to appear in the footer of Sensei emails.', 'woothemes-sensei' ),
530: 'type' => 'textarea',
531: 'default' => sprintf( __( '%1$s - Powered by Sensei', 'woothemes-sensei' ), get_bloginfo( 'name' ) ),
532: 'section' => 'email-notification-settings',
533: 'required' => 0
534: );
535:
536: $fields['email_base_color'] = array(
537: 'name' => __( 'Base Colour', 'woothemes-sensei' ),
538: 'description' => sprintf( __( 'The base colour for Sensei email templates. Default %1$s#557da1%2$s.', 'woothemes-sensei' ), '<code>', '</code>' ),
539: 'type' => 'color',
540: 'default' => '#557da1',
541: 'section' => 'email-notification-settings',
542: 'required' => 1
543: );
544:
545: $fields['email_background_color'] = array(
546: 'name' => __( 'Background Colour', 'woothemes-sensei' ),
547: 'description' => sprintf( __( 'The background colour for Sensei email templates. Default %1$s#f5f5f5%2$s.', 'woothemes-sensei' ), '<code>', '</code>' ),
548: 'type' => 'color',
549: 'default' => '#f5f5f5',
550: 'section' => 'email-notification-settings',
551: 'required' => 1
552: );
553:
554: $fields['email_body_background_color'] = array(
555: 'name' => __( 'Body Background Colour', 'woothemes-sensei' ),
556: 'description' => sprintf( __( 'The main body background colour for Sensei email templates. Default %1$s#fdfdfd%2$s.', 'woothemes-sensei' ), '<code>', '</code>' ),
557: 'type' => 'color',
558: 'default' => '#fdfdfd',
559: 'section' => 'email-notification-settings',
560: 'required' => 1
561: );
562:
563: $fields['email_text_color'] = array(
564: 'name' => __( 'Body Text Colour', 'woothemes-sensei' ),
565: 'description' => sprintf( __( 'The main body text colour for Sensei email templates. Default %1$s#505050%2$s.', 'woothemes-sensei' ), '<code>', '</code>' ),
566: 'type' => 'color',
567: 'default' => '#505050',
568: 'section' => 'email-notification-settings',
569: 'required' => 1
570: );
571:
572: if ( Sensei_WC::is_woocommerce_present() ) {
573:
574: $fields['woocommerce_enabled'] = array(
575: 'name' => __( 'Enable WooCommerce Courses', 'woothemes-sensei' ),
576: 'description' => __( 'Use WooCommerce to sell Courses by linking a Product to a Course.', 'woothemes-sensei' ),
577: 'type' => 'checkbox',
578: 'default' => true,
579: 'section' => 'woocommerce-settings'
580: );
581:
582: }
583:
584: if ( 'en_US' !== get_locale() ) {
585: $fields['install_language_pack'] = array(
586: 'name' => __( 'Install Language Pack', 'woothemes-sensei' ),
587: 'description' => __( 'Use this action to install or re-install translation for your language if available.', 'woothemes-sensei' ),
588: 'type' => 'button',
589: 'section' => 'language-settings',
590: 'target' => Sensei_Language_Pack_Manager::get_install_uri(),
591: 'label' => __( 'Install', 'woothemes-sensei' )
592: );
593: }
594:
595: $this->fields = apply_filters( 'sensei_settings_fields', $fields );
596:
597: }
598:
599: 600: 601: 602: 603: 604:
605: private function get_duration_options ( $include_milliseconds = true ) {
606: $numbers = array( '1.0', '1.5', '2.0', '2.5', '3.0', '3.5', '4.0', '4.5', '5.0', '5.5', '6.0', '6.5', '7.0', '7.5', '8.0', '8.5', '9.0', '9.5', '10.0' );
607: $options = array();
608:
609: if ( true == (bool)$include_milliseconds ) {
610: $milliseconds = array( '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9' );
611: foreach ( $milliseconds as $k => $v ) {
612: $options[$v] = $v;
613: }
614: } else {
615: $options['0.5'] = '0.5';
616: }
617:
618: foreach ( $numbers as $k => $v ) {
619: $options[$v] = $v;
620: }
621:
622: return $options;
623: }
624:
625: 626: 627: 628: 629: 630:
631: private function pages_array() {
632:
633:
634: $args = array( 'echo' => 0, 'hierarchical' => 1, 'sort_column' => 'post_title', 'sort_order' => 'ASC' );
635: $pages_dropdown = wp_dropdown_pages( $args );
636: $page_items = array();
637:
638:
639: $pages_dropdown = str_replace( "<select class='' name='page_id' id='page_id'>", '', $pages_dropdown );
640: $pages_dropdown = str_replace( '</select>', '', $pages_dropdown );
641: $pages_split = explode( '</option>', $pages_dropdown );
642:
643: $page_items[] = __( 'Select a Page:', 'woothemes-sensei' );
644:
645: foreach ( $pages_split as $k => $v ) {
646: $id = '';
647:
648: preg_match( '/value="(.*?)"/i', $v, $matches );
649:
650: if ( isset( $matches[1] ) ) {
651: $id = $matches[1];
652: $page_items[$id] = trim( strip_tags( $v ) );
653: }
654: }
655:
656: $pages_array = $page_items;
657:
658: return $pages_array;
659: }
660:
661: 662: 663: 664: 665:
666: public function language_pack_notices() {
667: Sensei_Language_Pack_Manager::messages();
668: }
669:
670: 671: 672: 673: 674: 675:
676: public static function flush_rewrite_rules(){
677:
678: if ( isset( $_POST[ 'option_page' ] ) && 'woothemes-sensei-settings' == $_POST[ 'option_page' ]
679: && isset( $_POST[ 'action' ] ) && 'update' == $_POST[ 'action' ] ) {
680:
681: Sensei()->initiate_rewrite_rules_flush();
682:
683: }
684:
685: }
686: }
687:
688: 689: 690: 691: 692:
693: class WooThemes_Sensei_Settings extends Sensei_Settings{}
694: