class-fl-builder-user-settings.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Handles logic for user specific settings.
  4. *
  5. * @since 2.0
  6. */
  7. class FLBuilderUserSettings {
  8. /**
  9. * @since 2.0
  10. * @return void
  11. */
  12. static public function init() {
  13. FLBuilderAJAX::add_action( 'save_ui_skin', __CLASS__ . '::save_ui_skin', array( 'skin_name' ) );
  14. FLBuilderAJAX::add_action( 'save_lightbox_position', __CLASS__ . '::save_lightbox_position', array( 'data' ) );
  15. FLBuilderAJAX::add_action( 'save_pinned_ui_position', __CLASS__ . '::save_pinned_ui_position', array( 'data' ) );
  16. }
  17. /**
  18. * @since 2.0
  19. * @return array
  20. */
  21. static public function get() {
  22. $meta = get_user_meta( get_current_user_id(), 'fl_builder_user_settings', true );
  23. $defaults = array(
  24. 'skin' => 'light',
  25. 'lightbox' => null,
  26. );
  27. if ( ! $meta ) {
  28. $meta = array();
  29. }
  30. return array_merge( $defaults, $meta );
  31. }
  32. /**
  33. * @since 2.0
  34. * @param array $data
  35. * @return mixed
  36. */
  37. static public function update( $data ) {
  38. return update_user_meta( get_current_user_id(), 'fl_builder_user_settings', $data );
  39. }
  40. /**
  41. * Handle saving UI Skin type.
  42. *
  43. * @since 2.0
  44. * @param string $name
  45. * @return array
  46. */
  47. static public function save_ui_skin( $name ) {
  48. $settings = self::get();
  49. $settings['skin'] = $name;
  50. return array(
  51. 'saved' => self::update( $settings ),
  52. 'name' => $name,
  53. );
  54. }
  55. /**
  56. * Handle saving the lightbox position.
  57. *
  58. * @since 2.0
  59. * @param array $data
  60. * @return array
  61. */
  62. static public function save_lightbox_position( $data ) {
  63. $settings = self::get();
  64. $settings['lightbox'] = $data;
  65. return self::update( $settings );
  66. }
  67. /**
  68. * Handle saving the lightbox position.
  69. *
  70. * @since 2.0
  71. * @param array $data
  72. * @return array
  73. */
  74. static public function save_pinned_ui_position( $data ) {
  75. $settings = self::get();
  76. $settings = array_merge( $settings, $data );
  77. return self::update( $settings );
  78. }
  79. }
  80. FLBuilderUserSettings::init();