/wp-content/plugins/wp-responder-email-autoresponder-and-newsletter-plugin/controllers/custom_fields.php

https://gitlab.com/Gashler/sg · PHP · 218 lines · 191 code · 26 blank · 1 comment · 25 complexity · 8374f5685d3dec9a69c1268409304720 MD5 · raw file

  1. <?php
  2. function _wpr_custom_fields_handler()
  3. {
  4. $action = @$_GET['cfact'];
  5. switch ($action)
  6. {
  7. case 'create':
  8. _wpr_newsletter_custom_fields_create();
  9. break;
  10. case 'edit':
  11. _wpr_newsletter_custom_fields_edit();
  12. break;
  13. case 'delete':
  14. _wpr_newsletter_custom_fields_delete();
  15. break;
  16. case 'manage':
  17. _wpr_newsletter_custom_fields_list();
  18. break;
  19. default:
  20. wpr_customfields();
  21. break;
  22. }
  23. }
  24. function _wpr_newsletter_custom_fields_edit()
  25. {
  26. global $wpdb;
  27. $error="";
  28. $id = $_GET['cid'];
  29. if (isset($_POST['name']))
  30. {
  31. $params['nid'] = $nid = $_GET['nid'];
  32. $params['id'] = $cid = $_POST['id'];
  33. $params['name'] = $name = $_POST['name'];
  34. $params['type'] = $type = $_POST['type'];
  35. $params['label'] = $label = $_POST['label'];
  36. $params['enum'] = $enum = $_POST['enum'];
  37. if ($name && $type)
  38. {
  39. if ($type == "enum")
  40. {
  41. if (count(explode(",",$enum)) <= 1)
  42. {
  43. $error = "Not enough options given for multiple choice field or invalid format";
  44. }
  45. }
  46. else
  47. {
  48. $enum='';
  49. }
  50. if (!$error)
  51. {
  52. $query = "UPDATE `".$wpdb->prefix."wpr_custom_fields` SET `type`='$type',`label`='$label',`enum`='$enum' where id='$cid';" ;
  53. $wpdb->query($query);
  54. wp_redirect("admin.php?page=_wpr/custom_fields&cfact=manage&nid=$nid");
  55. exit;
  56. }
  57. }
  58. else
  59. {
  60. $error = "The name and type fields are required";
  61. }
  62. $params = (object) $params;
  63. }
  64. if (!isset($params))
  65. $params = _wpr_newsletter_custom_fields_get($id);
  66. _wpr_set("_wpr_view","custom_fields_form");
  67. _wpr_set("parameters",$params);
  68. _wpr_set("error",$error);
  69. _wpr_set("title","Edit Custom Field");
  70. _wpr_set("buttontext","Save");
  71. _wpr_set("nameIsHidden",true);
  72. }
  73. function _wpr_newsletter_custom_fields_create()
  74. {
  75. global $wpdb;
  76. $parameters = (object) array();
  77. $error="";
  78. if (isset($_POST['name']))
  79. {
  80. $nid = $_GET['nid'];
  81. $name = $_POST['name'];
  82. $type = $_POST['type'];
  83. $label = $_POST['label'];
  84. $enum = $_POST['enum'];
  85. if ($name && $type && $label)
  86. {
  87. if ($type == "enum")
  88. {
  89. if (!count(explode(",",$enum)) > 1)
  90. {
  91. $error = "Not enough options given for multiple choice field or invalid format";
  92. }
  93. }
  94. else
  95. {
  96. $enum='';
  97. }
  98. preg_match_all("@[^a-z0-9_]@",$name,$match);
  99. if (count($match[0]) > 0)
  100. {
  101. $error = "Only lowercase characters and underscore is allowed in name";
  102. }
  103. if (!$error)
  104. {
  105. $query = "INSERT INTO `".$wpdb->prefix."wpr_custom_fields` (`nid`,`type`,`name`,`label`,`enum`) values ('$nid','$type','$name','$label','$enum');" ;
  106. $wpdb->query($query);
  107. //get the id of this field
  108. $query = "SELECT id from ".$wpdb->prefix."wpr_custom_fields where nid=$nid and name='$name'";
  109. $cf = $wpdb->get_results($query);
  110. $cid = $cf[0]->id;
  111. $query = "SELECT * FROM ".$wpdb->prefix."wpr_subscribers where nid=$nid";
  112. $subscribers = $wpdb->get_results($query);
  113. if (count($subscribers) > 0)
  114. {
  115. $qTemplate = " ( '$nid','$cid','%%sid%%','') ";
  116. $theQuery = "";
  117. foreach ($subscribers as $subscriber)
  118. {
  119. $theQuery[] = str_replace("%%sid%%",$subscriber->id,$qTemplate);
  120. }
  121. $theQuery = implode(", ",$theQuery);
  122. $theQuery = "INSERT INTO ".$wpdb->prefix."wpr_custom_fields_values (nid, cid, sid, value) VALUES ".$theQuery;
  123. $wpdb->query($theQuery);
  124. }
  125. wp_redirect("admin.php?page=_wpr/custom_fields&cfact=manage&nid=$nid");
  126. exit;
  127. }
  128. $parameters = (object) array();
  129. $parameters->name = $name;
  130. $parameters->label = $label;
  131. $parameters->type = $type;
  132. $parameters->enum = $enum;
  133. }
  134. else
  135. {
  136. $error = "The name, label and type fields are required fields";
  137. }
  138. }
  139. _wpr_set("_wpr_view","custom_fields_form");
  140. _wpr_set("parameters",$parameters);
  141. _wpr_set("error",$error);
  142. _wpr_set("title","Create Custom Field");
  143. _wpr_set("buttontext","Create Custom Field");
  144. _wpr_set("nameIsHidden",false);
  145. }
  146. function _wpr_newsletter_custom_fields_delete()
  147. {
  148. global $wpdb;
  149. $cid = $_GET['cid'];
  150. $nid = $_GET['nid'];
  151. if (isset($_GET['confirm']) && $_GET['confirm'] == 'true')
  152. {
  153. $query = "DELETE FROM ".$wpdb->prefix."wpr_custom_fields WHERE id='$cid'";
  154. $wpdb->query($query);
  155. wp_redirect("admin.php?page=_wpr/custom_fields&cfact=manage&nid=$nid");
  156. exit;
  157. }
  158. $field = _wpr_newsletter_custom_fields_get($cid);
  159. _wpr_set("_wpr_view","delete_custom_fields");
  160. _wpr_set("field",$field);
  161. }
  162. function _wpr_newsletter_custom_fields_list()
  163. {
  164. global $wpdb;
  165. $id = intval($_GET['nid']);
  166. $newsletter = _wpr_newsletter_get($id);
  167. $query = "SELECT * FROM ".$wpdb->prefix."wpr_custom_fields where nid=$id";
  168. $result = $wpdb->get_results($query);
  169. _wpr_set("newsletter",$newsletter);
  170. _wpr_set("newsletterCustomFieldList",$result);
  171. _wpr_set("_wpr_view","newsletter_custom_fields_list");
  172. }
  173. function _wpr_custom_field_name($name,$options)
  174. {
  175. switch ($name)
  176. {
  177. case 'text':
  178. return 'One Line Text';
  179. break;
  180. case 'enum':
  181. return 'Multiple Choice'." ($options)";
  182. break;
  183. }
  184. }
  185. function wpr_customfields()
  186. {
  187. global $wpdb;
  188. $query = "SELECT * FROM ".$wpdb->prefix."wpr_newsletters";
  189. $newsletterList = $wpdb->get_results($query);
  190. _wpr_set("newsletterList",$newsletterList);
  191. _wpr_set("_wpr_view","custom_fields_list");
  192. }