class.swpm-membership-level.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * Description of SwpmMembershipLevel
  4. */
  5. class SwpmMembershipLevel {
  6. const NO_EXPIRY = 0;
  7. const DAYS = 1;
  8. const WEEKS = 2;
  9. const MONTHS = 3;
  10. const YEARS = 4;
  11. const FIXED_DATE = 5;
  12. private static $_instance = null;
  13. private function __construct() {
  14. //NOP
  15. }
  16. public static function get_instance() {
  17. self::$_instance = empty(self::$_instance) ? new SwpmMembershipLevel() : self::$_instance;
  18. return self::$_instance;
  19. }
  20. public static function get_level_duration_type_string($type){
  21. $type_string = '';
  22. switch($type){
  23. case '0': $type_string = 'No Expiry or Until Cancelled';
  24. break;
  25. case '1': $type_string = 'Days';
  26. break;
  27. case '2': $type_string = 'Weeks';
  28. break;
  29. case '3': $type_string = 'Months';
  30. break;
  31. case '4': $type_string = 'Years';
  32. break;
  33. case '5': $type_string = 'Fixed Date';
  34. break;
  35. }
  36. return $type_string;
  37. }
  38. public function create_level() {
  39. //Check we are on the admin end and user has management permission
  40. SwpmMiscUtils::check_user_permission_and_is_admin('membership level creation');
  41. //Check nonce
  42. if ( !isset($_POST['_wpnonce_create_swpmlevel_admin_end']) || !wp_verify_nonce($_POST['_wpnonce_create_swpmlevel_admin_end'], 'create_swpmlevel_admin_end' )){
  43. //Nonce check failed.
  44. wp_die(SwpmUtils::_("Error! Nonce verification failed for membership level creation from admin end."));
  45. }
  46. global $wpdb;
  47. $level = SwpmTransfer::$default_level_fields;
  48. $form = new SwpmLevelForm($level);
  49. if ($form->is_valid()) {
  50. $level_info = $form->get_sanitized();
  51. $wpdb->insert($wpdb->prefix . "swpm_membership_tbl", $level_info);
  52. $id = $wpdb->insert_id;
  53. //save email_activation option
  54. $email_activation=filter_input(INPUT_POST,'email_activation',FILTER_SANITIZE_NUMBER_INT);
  55. update_option('swpm_email_activation_lvl_'.$id, $email_activation, false);
  56. $custom = apply_filters('swpm_admin_add_membership_level', array());
  57. $this->save_custom_fields($id, $custom);
  58. $message = array('succeeded' => true, 'message' => '<p>' . SwpmUtils::_('Membership Level Creation Successful.') . '</p>');
  59. SwpmTransfer::get_instance()->set('status', $message);
  60. wp_redirect('admin.php?page=simple_wp_membership_levels');
  61. exit(0);
  62. }
  63. $message = array('succeeded' => false, 'message' => SwpmUtils::_('Please correct the following:'), 'extra' => $form->get_errors());
  64. SwpmTransfer::get_instance()->set('status', $message);
  65. }
  66. public function edit_level($id) {
  67. //Check we are on the admin end and user has management permission
  68. SwpmMiscUtils::check_user_permission_and_is_admin('membership level edit');
  69. //Check nonce
  70. if ( !isset($_POST['_wpnonce_edit_swpmlevel_admin_end']) || !wp_verify_nonce($_POST['_wpnonce_edit_swpmlevel_admin_end'], 'edit_swpmlevel_admin_end' )){
  71. //Nonce check failed.
  72. wp_die(SwpmUtils::_("Error! Nonce verification failed for membership level edit from admin end."));
  73. }
  74. global $wpdb;
  75. $query = $wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "swpm_membership_tbl WHERE id = %d", $id);
  76. $level = $wpdb->get_row($query, ARRAY_A);
  77. $form = new SwpmLevelForm($level);
  78. if ($form->is_valid()) {
  79. $wpdb->update($wpdb->prefix . "swpm_membership_tbl", $form->get_sanitized(), array('id' => $id));
  80. //@todo meta table and collect all relevant info and pass as argument
  81. //save email_activation option
  82. $email_activation=filter_input(INPUT_POST,'email_activation',FILTER_SANITIZE_NUMBER_INT);
  83. update_option('swpm_email_activation_lvl_'.$id, $email_activation, false);
  84. $custom = apply_filters('swpm_admin_edit_membership_level', array(), $id);
  85. $this->save_custom_fields($id, $custom);
  86. $message = array('succeeded' => true, 'message' => '<p>'. SwpmUtils::_('Membership Level Updated Successfully.') . '</p>');
  87. SwpmTransfer::get_instance()->set('status', $message);
  88. wp_redirect('admin.php?page=simple_wp_membership_levels');
  89. exit(0);
  90. }
  91. $message = array('succeeded' => false, 'message' => SwpmUtils::_('Please correct the following:'), 'extra' => $form->get_errors());
  92. SwpmTransfer::get_instance()->set('status', $message);
  93. }
  94. private function save_custom_fields($level_id, $data) {
  95. $custom_obj = SwpmMembershipLevelCustom::get_instance_by_id($level_id);
  96. foreach ($data as $item) {
  97. $custom_obj->set($item);
  98. }
  99. }
  100. }