deprecated.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /**
  3. * Deprecated as of version 2.7.
  4. */
  5. // Hook into our new save sub filter to add any deprecated filters
  6. function nf_old_save_sub_filter( $user_value, $field_id ) {
  7. return apply_filters( 'ninja_forms_save_sub', $user_value, $field_id );
  8. }
  9. add_filter( 'nf_save_sub_user_value', 'nf_old_save_sub_filter', 10, 2 );
  10. // Hook into our new nf_save_sub action and add any actions hooked into our old action hooks.
  11. function nf_old_save_sub_action( $sub_id ) {
  12. do_action( 'ninja_forms_insert_sub', $sub_id );
  13. }
  14. add_action( 'nf_save_sub', 'nf_old_save_sub_action' );
  15. // Hook into our new submissions CSV filename filter.
  16. function nf_old_subs_csv_filename( $filename ) {
  17. return apply_filters( 'ninja_forms_export_subs_csv_file_name', $filename );
  18. }
  19. add_filter( 'nf_subs_csv_filename', 'nf_old_subs_csv_filename' );
  20. // Hook into our new submissions CSV label filter.
  21. function nf_old_subs_csv_label( $label, $field_id ) {
  22. return apply_filters( 'ninja_forms_export_sub_label', $label, $field_id );
  23. }
  24. add_filter( 'nf_subs_csv_field_label', 'nf_old_subs_csv_label', 10, 2 );
  25. // Hook into our new submissions CSV label array filter.
  26. function nf_old_subs_csv_label_array( $label_array, $sub_ids ) {
  27. return apply_filters( 'ninja_forms_export_subs_label_array', $label_array, $sub_ids );
  28. }
  29. add_filter( 'nf_subs_csv_label_array', 'nf_old_subs_csv_label_array', 10, 2 );
  30. // Hook into our new submissions CSV pre_value filter.
  31. function nf_old_subs_csv_pre_value( $user_value, $field_id ) {
  32. return apply_filters( 'ninja_forms_export_sub_pre_value', $user_value, $field_id );
  33. }
  34. add_filter( 'nf_subs_export_pre_value', 'nf_old_subs_csv_pre_value', 10, 2 );
  35. // Hook into our new submissions CSV value filter.
  36. function nf_old_subs_csv_value( $user_value, $field_id ) {
  37. return apply_filters( 'ninja_forms_export_sub_value', $user_value, $field_id );
  38. }
  39. add_filter( 'nf_subs_csv_field_value', 'nf_old_subs_csv_value', 10, 2 );
  40. // Hook into our new submissions CSV value array filter.
  41. function nf_old_subs_csv_value_array( $values_array, $sub_ids ) {
  42. return apply_filters( 'ninja_forms_export_subs_value_array', $values_array, $sub_ids );
  43. }
  44. add_filter( 'nf_subs_csv_value_array', 'nf_old_subs_csv_value_array', 10, 2 );
  45. // Hook into our new CSV BOM filter
  46. function nf_old_subs_csv_bom( $bom ) {
  47. return apply_filters( 'ninja_forms_csv_bom', $bom );
  48. }
  49. add_filter( 'nf_sub_csv_bom', 'nf_old_subs_csv_bom' );
  50. // Hook into our new CSV delimiter filter
  51. function nf_old_subs_csv_delimiter( $delimiter ) {
  52. return apply_filters( 'ninja_forms_csv_delimiter', $delimiter );
  53. }
  54. add_filter( 'nf_sub_csv_delimiter', 'nf_old_subs_csv_delimiter' );
  55. // Hook into our new CSV enclosure filter
  56. function nf_old_subs_csv_enclosure( $enclosure ) {
  57. return apply_filters( 'ninja_forms_csv_enclosure', $enclosure );
  58. }
  59. add_filter( 'nf_sub_csv_enclosure', 'nf_old_subs_csv_enclosure' );
  60. // Hook into our new CSV terminator filter
  61. function nf_old_subs_csv_terminator( $terminator ) {
  62. return apply_filters( 'ninja_forms_csv_terminator', $terminator );
  63. }
  64. add_filter( 'nf_sub_csv_terminator', 'nf_old_subs_csv_terminator' );
  65. // Hook into our new Submissions table row-actions filter
  66. function nf_old_subs_table_row_actions_filter( $actions, $sub_id, $form_id ) {
  67. return apply_filters( 'ninja_forms_sub_table_row_actions', array(), false, $sub_id, $form_id );
  68. }
  69. add_filter( 'nf_sub_table_row_actions', 'nf_old_subs_table_row_actions_filter', 10, 3 );
  70. /**
  71. * ninja_forms_get_subs() has been deprecated in favour of Ninja_Forms()->subs()->get( $args ) or Ninja_Forms()->form( 23 )->get_subs( $args )
  72. * You can also use WordPress queries ,since this is a custom post type.
  73. *
  74. * @since 2.7
  75. */
  76. function ninja_forms_get_subs( $args = array() ) {
  77. $plugin_settings = nf_get_settings();
  78. if ( isset ( $plugin_settings['date_format'] ) ) {
  79. $date_format = $plugin_settings['date_format'];
  80. } else {
  81. $date_format = 'm/d/Y';
  82. }
  83. if( is_array( $args ) AND ! empty( $args ) ) {
  84. $subs_results = array();
  85. $meta_query = array();
  86. $date_query = array();
  87. if( isset( $args['form_id'] ) ) {
  88. $meta_query[] = array(
  89. 'key' => '_form_id',
  90. 'value' => $args['form_id'],
  91. );
  92. }
  93. if( isset( $args['action'])){
  94. $meta_query[] = array(
  95. 'key' => '_action',
  96. 'value' => $args['action'],
  97. );
  98. }
  99. $query_args = array(
  100. 'post_type' => 'nf_sub',
  101. 'date_query' => $date_query,
  102. 'meta_query' => $meta_query,
  103. 'posts_per_page' => -1,
  104. );
  105. if( isset( $args['user_id'] ) ) {
  106. $query_args['author'] = $args['user_id'];
  107. }
  108. if( isset( $args['begin_date'] ) AND $args['begin_date'] != '') {
  109. $query_args['date_query']['after'] = nf_get_begin_date( $args['begin_date'] )->format("Y-m-d G:i:s");
  110. }
  111. if( isset( $args['end_date'] ) AND $args['end_date'] != '' ) {
  112. $query_args['date_query']['before'] = nf_get_end_date( $args['end_date'] )->format("Y-m-d G:i:s");
  113. }
  114. $subs = get_posts( $query_args );
  115. if ( is_array( $subs ) && ! empty( $subs ) ) {
  116. $x = 0;
  117. foreach ( $subs as $sub ) {
  118. $data = array();
  119. $subs_results[$x]['id'] = $sub->ID;
  120. $subs_results[$x]['user_id'] = $sub->post_author;
  121. $subs_results[$x]['form_id'] = get_post_meta( $sub->ID, '_form_id' );
  122. $subs_results[$x]['action'] = get_post_meta( $sub->ID, '_action' );
  123. $meta = get_post_custom( $sub->ID );
  124. foreach ( $meta as $key => $array ) {
  125. if ( strpos( $key, '_field_' ) !== false ) {
  126. $field_id = str_replace( '_field_', '', $key );
  127. $user_value = $array[0];
  128. $data[] = array( 'field_id' => $field_id, 'user_value' => $user_value );
  129. }
  130. }
  131. $subs_results[$x]['data'] = $data;
  132. $subs_results[$x]['date_updated'] = $sub->post_modified;
  133. $x++;
  134. }
  135. }
  136. return $subs_results;
  137. }
  138. }
  139. /**
  140. * ninja_forms_get_sub_count() has been deprecated in favour of Ninja_Forms()->form( 23 )->sub_count or nf_get_sub_count()
  141. * Function that returns a count of the number of submissions.
  142. *
  143. * @since 2.7
  144. */
  145. function ninja_forms_get_sub_count( $args = array() ) {
  146. return count( ninja_forms_get_subs( $args ) );
  147. }
  148. /**
  149. * ninja_forms_get_sub_by_id( $sub_id ) has been deprecated in favour of Ninja_Forms()->sub( 23 );
  150. *
  151. * @since 2.7
  152. */
  153. function ninja_forms_get_sub_by_id( $sub_id ) {
  154. $sub = Ninja_Forms()->sub( $sub_id );
  155. if ( $sub ) {
  156. $sub_row = array();
  157. $data = array();
  158. $sub_row['id'] = $sub_id;
  159. $sub_row['user_id'] = $sub->user_id;
  160. $sub_row['form_id'] = $sub->form_id;
  161. $sub_row['action'] = $sub->action;
  162. if ( $sub->action == 'submit' ) {
  163. $sub_row['status'] = 1;
  164. } else {
  165. $sub_row['status'] = 0;
  166. }
  167. $meta = get_post_custom( $sub_id );
  168. foreach ( $meta as $key => $array ) {
  169. if ( strpos( $key, '_field_' ) !== false ) {
  170. $field_id = str_replace( '_field_', '', $key );
  171. $user_value = is_serialized( $array[0] ) ? unserialize( $array[0] ) : $array[0];
  172. $data[] = array( 'field_id' => $field_id, 'user_value' => $user_value );
  173. }
  174. }
  175. $sub_row['data'] = $data;
  176. $sub_row['date_updated'] = $sub->date_submitted;
  177. return $sub_row;
  178. } else {
  179. return false;
  180. }
  181. }
  182. /**
  183. * ninja_forms_get_all_subs() has been deprecated in favour of Ninja_Forms()->subs()->get();
  184. *
  185. * @since 2.7
  186. */
  187. function ninja_forms_get_all_subs( $form_id = '' ){
  188. if ( $form_id == '' )
  189. return false;
  190. $args = array( 'form_id' => $form_id );
  191. return ninja_forms_get_subs( $args );
  192. }
  193. /**
  194. * ninja_forms_insert_sub() has been deprecated in favour of Ninja_Forms()->subs()->create( $form_id );
  195. * Because submissions are now a CPT, this function will only return false.
  196. * Please replace any instances of this function with the replacement.
  197. *
  198. * @since 2.7
  199. */
  200. function ninja_forms_insert_sub( $args ) {
  201. if ( ! isset ( $args['form_id'] ) )
  202. return false;
  203. $form_id = $args['form_id'];
  204. $sub_id = Ninja_Forms()->subs()->create( $form_id );
  205. $args['sub_id'] = $sub_id;
  206. ninja_forms_update_sub( $args );
  207. return $sub_id;
  208. }
  209. /**
  210. * ninja_forms_update_sub() has been deprecated in favour of Ninja_Forms()->sub( 23 )->update_field( id, value );
  211. * Because submissions are now a CPT, this function will only return false.
  212. * Please replace any instances of this function with the replacement.
  213. *
  214. * @since 2.7
  215. */
  216. function ninja_forms_update_sub( $args ){
  217. if ( ! isset ( $args['sub_id'] ) )
  218. return false;
  219. $sub_id = $args['sub_id'];
  220. $sub = Ninja_Forms()->sub( $sub_id );
  221. if ( isset ( $args['data'] ) ) {
  222. $data = $args['data'];
  223. unset ( $args['data'] );
  224. if ( is_serialized( $data ) ) {
  225. $data = unserialize( $data );
  226. foreach ( $data as $d ) {
  227. $field_id = $d['field_id'];
  228. $user_value = $d['user_value'];
  229. $sub->add_field( $field_id, $user_value );
  230. }
  231. }
  232. }
  233. foreach ( $args as $key => $value ) {
  234. $sub->update_meta( '_' . $key, $value );
  235. }
  236. }
  237. /**
  238. * ninja_forms_export_subs_to_csv() has been deprecated in favour of Ninja_Forms()->subs()->export( sub_ids, return );
  239. * or Ninja_Forms()->sub( 23 )->export( return );
  240. * Please replace any instances of this function with the replacement.
  241. *
  242. * @since 2.7
  243. */
  244. function ninja_forms_export_subs_to_csv( $sub_ids = '', $return = false ){
  245. Ninja_Forms()->subs()->export( $sub_ids, $return );
  246. }
  247. function ninja_forms_implode_r($glue, $pieces){
  248. $out = '';
  249. foreach ( $pieces as $piece ) {
  250. if ( is_array ( $piece ) ) {
  251. if ( $out == '' ) {
  252. $out = ninja_forms_implode_r($glue, $piece);
  253. } else {
  254. $out .= ninja_forms_implode_r($glue, $piece); // recurse
  255. }
  256. } else {
  257. if ( $out == '' ) {
  258. $out .= $piece;
  259. } else {
  260. $out .= $glue.$piece;
  261. }
  262. }
  263. }
  264. return $out;
  265. }
  266. /**
  267. * Get the csv delimiter
  268. *
  269. * @return string
  270. */
  271. function ninja_forms_get_csv_delimiter() {
  272. return apply_filters( 'ninja_forms_csv_delimiter', ',' );
  273. }
  274. /**
  275. * Get the csv enclosure
  276. *
  277. * @return string
  278. */
  279. function ninja_forms_get_csv_enclosure() {
  280. return apply_filters( 'ninja_forms_csv_enclosure', '"' );
  281. }
  282. /**
  283. * Get the csv delimiter
  284. *
  285. * @return string
  286. */
  287. function ninja_forms_get_csv_terminator() {
  288. return apply_filters( 'ninja_forms_csv_terminator', "\n" );
  289. }
  290. /**
  291. * Wrapper for nf_save_sub()
  292. */
  293. function ninja_forms_save_sub() {
  294. nf_save_sub();
  295. }
  296. function nf_change_all_forms_filter( $cap ) {
  297. return apply_filters( 'ninja_forms_admin_menu_capabilities', $cap );
  298. }
  299. add_filter( 'ninja_forms_admin_all_forms_capabilities', 'nf_change_all_forms_filter' );
  300. function nf_change_admin_menu_filter( $cap ) {
  301. return apply_filters( 'ninja_forms_admin_menu_capabilities', $cap );
  302. }
  303. add_filter( 'ninja_forms_admin_parent_menu_capabilities', 'nf_change_admin_menu_filter' );
  304. /**
  305. * Deprecated as of version 2.8
  306. */
  307. // The admin_mailto setting has been deprecated. Because users may have used this setting to modify who receives the admin email,
  308. // we need to make sure that it is backwards compatible.
  309. function nf_clear_admin_mailto() {
  310. global $ninja_forms_processing;
  311. $ninja_forms_processing->update_form_setting( 'admin_mailto', array() );
  312. }
  313. add_action( 'ninja_forms_before_pre_process', 'nf_clear_admin_mailto' );
  314. function nf_modify_admin_mailto( $setting, $setting_name, $id ) {
  315. global $ninja_forms_processing;
  316. // Bail if this isn't our admin notification
  317. if ( ! nf_get_object_meta_value( $id, 'admin_email' ) )
  318. return $setting;
  319. // Bail if this isn't the "to" setting.
  320. if ( $setting_name != 'to' )
  321. return $setting;
  322. $admin_mailto = $ninja_forms_processing->get_form_setting( 'admin_mailto' );
  323. $ninja_forms_processing->update_form_setting( 'admin_mailto', '' );
  324. if ( is_array( $admin_mailto ) && ! empty ( $admin_mailto ) ) {
  325. $setting = array_merge( $setting, $admin_mailto );
  326. }
  327. return $setting;
  328. }
  329. add_filter( 'nf_email_notification_process_setting','nf_modify_admin_mailto', 10, 3 );
  330. add_action('init', 'ninja_forms_register_filter_email_add_fields', 15 );
  331. function ninja_forms_register_filter_email_add_fields(){
  332. global $ninja_forms_processing;
  333. if( is_object( $ninja_forms_processing ) ){
  334. if( $ninja_forms_processing->get_form_setting( 'user_email_fields' ) == 1 ){
  335. add_filter( 'ninja_forms_user_email', 'ninja_forms_filter_email_add_fields' );
  336. }
  337. }
  338. if( is_object( $ninja_forms_processing ) ){
  339. if( $ninja_forms_processing->get_form_setting( 'admin_email_fields' ) == 1 ){
  340. add_filter( 'ninja_forms_admin_email', 'ninja_forms_filter_email_add_fields' );
  341. }
  342. }
  343. }
  344. function ninja_forms_filter_email_add_fields( $message ){
  345. global $ninja_forms_processing, $ninja_forms_fields;
  346. $form_id = $ninja_forms_processing->get_form_ID();
  347. $all_fields = ninja_forms_get_fields_by_form_id( $form_id );
  348. //$all_fields = $ninja_forms_processing->get_all_fields();
  349. $tmp_array = array();
  350. if( is_array( $all_fields ) ){
  351. foreach( $all_fields as $field ){
  352. if( $ninja_forms_processing->get_field_value( $field['id'] ) ){
  353. $tmp_array[$field['id']] = $ninja_forms_processing->get_field_value( $field['id'] );
  354. }
  355. }
  356. }
  357. $all_fields = apply_filters( 'ninja_forms_email_all_fields_array', $tmp_array, $form_id );
  358. $email_type = $ninja_forms_processing->get_form_setting( 'email_type' );
  359. if(is_array($all_fields) AND !empty($all_fields)){
  360. if($email_type == 'html'){
  361. $message .= "<br><br>";
  362. $message .= apply_filters( 'nf_email_user_values_title', __( 'User Submitted Values:', 'ninja-forms' ) );
  363. $message .= "<table>";
  364. }else{
  365. $message = str_replace("<p>", "\r\n", $message);
  366. $message = str_replace("</p>", "", $message);
  367. $message = str_replace("<br>", "\r\n", $message);
  368. $message = str_replace("<br />", "\r\n", $message);
  369. $message = strip_tags($message);
  370. $message .= "\r\n \r\n";
  371. $message .= apply_filters( 'nf_email_user_values_title', __( 'User Submitted Values:', 'ninja-forms' ) );
  372. $message .= "\r\n";
  373. }
  374. foreach( $all_fields as $field_id => $user_value ){
  375. $field_row = $ninja_forms_processing->get_field_settings( $field_id );
  376. $field_label = $field_row['data']['label'];
  377. $field_label = apply_filters( 'ninja_forms_email_field_label', $field_label, $field_id );
  378. $user_value = apply_filters( 'ninja_forms_email_user_value', $user_value, $field_id );
  379. $field_type = $field_row['type'];
  380. if( $ninja_forms_fields[$field_type]['process_field'] ){
  381. if( is_array( $user_value ) AND !empty( $user_value ) ){
  382. $x = 0;
  383. foreach($user_value as $val){
  384. if(!is_array($val)){
  385. if($x > 0){
  386. $field_label = '----';
  387. $field_label = apply_filters( 'ninja_forms_email_field_label', $field_label, $field_id );
  388. }
  389. if($email_type == 'html'){
  390. $message .= "<tr><td width='50%'>".$field_label.":</td><td width='50%'>".$val."</td></tr>";
  391. }else{
  392. $message .= $field_label." - ".$val."\r\n";
  393. }
  394. }else{
  395. foreach($val as $v){
  396. if(!is_array($v)){
  397. if($x > 0){
  398. $field_label = '----';
  399. $field_label = apply_filters( 'ninja_forms_email_field_label', $field_label, $field_id );
  400. }
  401. if($email_type == 'html'){
  402. $message .= "<tr><td width='50%'>".$field_label.":</td><td width='50%'>".$v."</td></tr>";
  403. }else{
  404. $message .= $field_label." - ".$v."\r\n";
  405. }
  406. }else{
  407. foreach($v as $a){
  408. if($x > 0){
  409. $field_label = '----';
  410. $field_label = apply_filters( 'ninja_forms_email_field_label', $field_label, $field_id );
  411. }
  412. if($email_type == 'html'){
  413. $message .= "<tr><td width='50%'>".$field_label.":</td><td width='50%'>".$a."</td></tr>";
  414. }else{
  415. $message .= $field_label." - ".$a."\r\n";
  416. }
  417. }
  418. }
  419. }
  420. }
  421. $x++;
  422. }
  423. }else{
  424. if($email_type == 'html'){
  425. $message .= "<tr><td width='50%'>".$field_label.":</td><td width='50%'>".$user_value."</td></tr>";
  426. }else{
  427. $message .= $field_label." - ".$user_value."\r\n";
  428. }
  429. }
  430. }
  431. }
  432. if($email_type == 'html'){
  433. $message .= "</table>";
  434. }
  435. }
  436. $message = apply_filters( 'ninja_forms_email_field_list', $message, $form_id );
  437. return $message;
  438. }
  439. add_action( 'init', 'ninja_forms_register_email_admin' );
  440. function ninja_forms_register_email_admin() {
  441. add_action( 'ninja_forms_post_process', 'ninja_forms_email_admin', 1000 );
  442. }
  443. function ninja_forms_email_admin() {
  444. global $ninja_forms_processing;
  445. do_action( 'ninja_forms_email_admin' );
  446. $form_ID = $ninja_forms_processing->get_form_ID();
  447. $form_title = $ninja_forms_processing->get_form_setting( 'form_title' );
  448. $admin_mailto = $ninja_forms_processing->get_form_setting( 'admin_mailto' );
  449. $email_from_name = $ninja_forms_processing->get_form_setting( 'email_from_name' );
  450. $email_from = $ninja_forms_processing->get_form_setting( 'email_from' );
  451. $email_type = $ninja_forms_processing->get_form_setting( 'email_type' );
  452. $subject = $ninja_forms_processing->get_form_setting( 'admin_subject' );
  453. $message = $ninja_forms_processing->get_form_setting( 'admin_email_msg' );
  454. $email_reply = $ninja_forms_processing->get_form_setting( 'admin_email_replyto' );
  455. if ( $ninja_forms_processing->get_form_setting( 'admin_email_name' ) ){
  456. $email_from_name = $ninja_forms_processing->get_form_setting( 'admin_email_name' );
  457. }
  458. if ( $email_from_name AND $email_reply ) {
  459. $email_reply = $email_from_name . ' <' . $email_reply . '>';
  460. }
  461. if ( !$subject ){
  462. $subject = $form_title;
  463. }
  464. if ( !$message ){
  465. $message = '';
  466. }
  467. if ( !$email_type ){
  468. $email_type = '';
  469. }
  470. if ( $email_type !== 'plain' ){
  471. $message = apply_filters( 'ninja_forms_admin_email_message_wpautop', wpautop( $message ) );
  472. }
  473. $email_from = $email_from_name.' <'.$email_from.'>';
  474. $email_from = apply_filters( 'ninja_forms_admin_email_from', $email_from, $email_reply, $form_ID );
  475. $headers = array();
  476. $headers[] = 'From: ' . $email_from;
  477. if( $email_reply ) {
  478. $headers[] = 'Reply-To: ' . $email_reply;
  479. }
  480. $headers[] = 'Content-Type: text/' . $email_type;
  481. $headers[] = 'charset=utf-8';
  482. $attachments = false;
  483. if ($ninja_forms_processing->get_form_setting( 'admin_attachments' ) ) {
  484. $attachments = $ninja_forms_processing->get_form_setting( 'admin_attachments' );
  485. }
  486. if ( is_array( $admin_mailto ) AND !empty( $admin_mailto ) ){
  487. foreach( $admin_mailto as $to ) {
  488. if ( $attachments ) {
  489. wp_mail( $to, $subject, $message, $headers, $attachments );
  490. } else {
  491. wp_mail( $to, $subject, $message, $headers );
  492. }
  493. }
  494. }
  495. // Delete our admin CSV if one is present.
  496. if ( file_exists( $ninja_forms_processing->get_extra_value( '_attachment_csv_path' ) ) ) {
  497. unlink ( $ninja_forms_processing->get_extra_value( '_attachment_csv_path' ) );
  498. }
  499. }
  500. add_action('init', 'ninja_forms_register_email_user');
  501. function ninja_forms_register_email_user(){
  502. add_action( 'ninja_forms_post_process', 'ninja_forms_email_user', 1000 );
  503. }
  504. function ninja_forms_email_user(){
  505. global $ninja_forms_processing;
  506. do_action( 'ninja_forms_email_user' );
  507. $form_ID = $ninja_forms_processing->get_form_ID();
  508. $form_title = $ninja_forms_processing->get_form_setting('form_title');
  509. $user_mailto = array();
  510. $all_fields = $ninja_forms_processing->get_all_fields();
  511. if(is_array($all_fields) AND !empty($all_fields)){
  512. foreach($all_fields as $field_id => $user_value){
  513. $field_row = $ninja_forms_processing->get_field_settings( $field_id );
  514. if(isset($field_row['data']['send_email'])){
  515. $send_email = $field_row['data']['send_email'];
  516. }else{
  517. $send_email = 0;
  518. }
  519. if($send_email){
  520. array_push($user_mailto, $user_value);
  521. }
  522. }
  523. }
  524. $email_from = $ninja_forms_processing->get_form_setting('email_from');
  525. $email_from_name = $ninja_forms_processing->get_form_setting( 'email_from_name' );
  526. $email_type = $ninja_forms_processing->get_form_setting('email_type');
  527. $subject = $ninja_forms_processing->get_form_setting('user_subject');
  528. $message = $ninja_forms_processing->get_form_setting('user_email_msg');
  529. $default_email = get_option( 'admin_email' );
  530. if(!$subject){
  531. $subject = $form_title;
  532. }
  533. if(!$message){
  534. $message = __('Thank you for filling out this form.', 'ninja-forms');
  535. }
  536. if(!$email_from){
  537. $email_from = $default_email;
  538. }
  539. if(!$email_type){
  540. $email_type = '';
  541. }
  542. if( $email_type !== 'plain' ){
  543. $message = apply_filters( 'ninja_forms_user_email_message_wpautop', wpautop( $message ) );
  544. }
  545. $email_from = $email_from_name.' <'.$email_from.'>';
  546. $email_from = htmlspecialchars_decode($email_from);
  547. $email_from = htmlspecialchars_decode($email_from);
  548. $headers = array();
  549. $headers[] = 'From: '.$email_from;
  550. $headers[] = 'Content-Type: text/'.$email_type;
  551. $headers[] = 'charset=utf-8';
  552. $attachments = false;
  553. if ( $ninja_forms_processing->get_form_setting( 'user_attachments' ) ) {
  554. $attachments = $ninja_forms_processing->get_form_setting('user_attachments');
  555. }
  556. if ( is_array( $user_mailto ) AND ! empty( $user_mailto ) ) {
  557. // check to make sure there's an attachment before attaching one
  558. if ( $attachments ) {
  559. wp_mail( $user_mailto, $subject, $message, $headers, $attachments );
  560. } else {
  561. wp_mail( $user_mailto, $subject, $message, $headers );
  562. }
  563. }
  564. }
  565. add_action( 'nf_save_sub', 'nf_csv_attachment' );
  566. function nf_csv_attachment( $sub_id ){
  567. global $ninja_forms_processing;
  568. // make sure this form is supposed to attach a CSV
  569. if( 1 == $ninja_forms_processing->get_form_setting( 'admin_attach_csv' ) AND 'submit' == $ninja_forms_processing->get_action() ) {
  570. // create CSV content
  571. $csv_content = Ninja_Forms()->sub( $sub_id )->export( true );
  572. $upload_dir = wp_upload_dir();
  573. $path = trailingslashit( $upload_dir['path'] );
  574. // create temporary file
  575. $path = tempnam( $path, 'Sub' );
  576. $temp_file = fopen( $path, 'r+' );
  577. // write to temp file
  578. fwrite( $temp_file, $csv_content );
  579. fclose( $temp_file );
  580. // find the directory we will be using for the final file
  581. $path = pathinfo( $path );
  582. $dir = $path['dirname'];
  583. $basename = $path['basename'];
  584. // create name for file
  585. $new_name = apply_filters( 'ninja_forms_submission_csv_name', 'ninja-forms-submission' );
  586. // remove a file if it already exists
  587. if( file_exists( $dir.'/'.$new_name.'.csv' ) ) {
  588. unlink( $dir.'/'.$new_name.'.csv' );
  589. }
  590. // move file
  591. rename( $dir.'/'.$basename, $dir.'/'.$new_name.'.csv' );
  592. $file1 = $dir.'/'.$new_name.'.csv';
  593. // add new file to array of existing files
  594. $files = $ninja_forms_processing->get_form_setting( 'admin_attachments' );
  595. array_push( $files, $file1 );
  596. $ninja_forms_processing->update_form_setting( 'admin_attachments', $files );
  597. $ninja_forms_processing->update_extra_value( '_attachment_csv_path', $file1 );
  598. }
  599. }
  600. // Move any attachments that exist for our "admin" and "user" emails.
  601. function nf_modify_attachments( $files, $n_id ) {
  602. global $ninja_forms_processing;
  603. if ( Ninja_Forms()->notification( $n_id )->get_setting( 'admin_email' ) ) {
  604. if ( is_array( $ninja_forms_processing->get_form_setting( 'admin_attachments' ) ) ) {
  605. $files = array_merge( $files, $ninja_forms_processing->get_form_setting( 'admin_attachments' ) );
  606. }
  607. } else if ( Ninja_Forms()->notification( $n_id )->get_setting( 'user_email' ) ) {
  608. if ( is_array( $ninja_forms_processing->get_form_setting( 'user_attachments' ) ) ) {
  609. $files = array_merge( $files, $ninja_forms_processing->get_form_setting( 'user_attachments' ) );
  610. }
  611. }
  612. $ninja_forms_processing->update_form_setting( 'admin_attachments', '' );
  613. return $files;
  614. }
  615. add_filter( 'nf_email_notification_attachments', 'nf_modify_attachments', 10, 2 );
  616. // Deprecate old "add all fields" filters
  617. function nf_deprecate_all_fields_email_field_label( $value, $field_id ) {
  618. return apply_filters( 'ninja_forms_email_field_label', $value, $field_id );
  619. }
  620. add_filter( 'nf_all_fields_field_label', 'nf_deprecate_all_fields_email_field_label', 10, 2 );
  621. function nf_deprecate_all_fields_email_field_value( $value, $field_id ) {
  622. return apply_filters( 'ninja_forms_email_user_value', $value, $field_id );
  623. }
  624. add_filter( 'nf_all_fields_field_value', 'nf_deprecate_all_fields_email_field_value', 10, 2 );
  625. function nf_deprecate_all_fields_email_table( $value, $form_id ) {
  626. return apply_filters( 'ninja_forms_email_field_list', $value, $form_id );
  627. }
  628. add_filter( 'nf_all_fields_table', 'nf_deprecate_all_fields_email_table', 10, 2 );
  629. // Deprecate our old success message filter
  630. function nf_deprecate_success_message_filter( $message, $n_id ) {
  631. return apply_filters( 'ninja_forms_success_msg', $message );
  632. }
  633. add_filter( 'nf_success_msg', 'nf_deprecate_success_message_filter', 10, 2 );
  634. // Remove any references to "admin email" from our imported forms.
  635. function nf_deprecate_form_import( $form ) {
  636. if ( isset ( $form['data']['admin_mailto'] ) )
  637. unset( $form['data']['admin_mailto'] );
  638. if ( isset ( $form['data']['admin_email'] ) )
  639. unset( $form['data']['admin_email'] );
  640. if ( isset ( $form['data']['admin_subject'] ) )
  641. unset( $form['data']['admin_subject'] );
  642. if ( isset ( $form['data']['user_mailto'] ) )
  643. unset( $form['data']['user_mailto'] );
  644. if ( isset ( $form['data']['user_email'] ) )
  645. unset( $form['data']['user_email'] );
  646. if ( isset ( $form['data']['user_subject'] ) )
  647. unset ( $form['data']['user_subject'] );
  648. if ( isset ( $form['data']['landing_page'] ) )
  649. unset ( $form['data']['landing_page'] );
  650. return $form;
  651. }
  652. add_filter( 'ninja_forms_before_import_form', 'nf_deprecate_form_import' );
  653. // Remove any references to "user email" from our imported forms.
  654. function nf_deprecate_field_import( $data ) {
  655. if ( isset ( $data['send_email'] ) )
  656. unset ( $data['send_email'] );
  657. if ( isset ( $data['from_email'] ) )
  658. unset ( $data['from_email'] );
  659. if ( isset ( $data['replyto_email'] ) )
  660. unset ( $data['replyto_email'] );
  661. return $data;
  662. }
  663. add_filter( 'nf_before_import_field', 'nf_deprecate_field_import' );
  664. /**
  665. * Deprecated as of version 2.9
  666. *
  667. */
  668. /**
  669. * Get an array of form settings by form ID
  670. *
  671. * @since 2.7
  672. * @param int $form_id
  673. * @return array $form['data']
  674. */
  675. function nf_get_form_settings( $form_id ) {
  676. return nf_get_object_meta( $form_id );
  677. }
  678. /**
  679. * Return form data
  680. *
  681. * @since 1.0
  682. * @param int $form_id
  683. * @return array $form
  684. */
  685. function ninja_forms_get_form_by_id( $form_id ) {
  686. $settings = Ninja_Forms()->form( $form_id )->get_all_settings();
  687. $date_updated = Ninja_Forms()->form( $form_id )->get_setting( 'date_updated' );
  688. return array( 'id' => $form_id, 'data' => $settings, 'date_updated' => $date_updated );
  689. }
  690. /**
  691. * Get a form by field id
  692. *
  693. * @since 1.0
  694. * @param int $field_id
  695. * @param array $form
  696. */
  697. function ninja_forms_get_form_by_field_id( $field_id ){
  698. global $wpdb;
  699. $form_id = $wpdb->get_row($wpdb->prepare("SELECT form_id FROM ".NINJA_FORMS_FIELDS_TABLE_NAME." WHERE id = %d", $field_id), ARRAY_A);
  700. $form_id = $form_id['form_id'];
  701. $form = ninja_forms_get_form_by_id( $form_id );
  702. return $form;
  703. }
  704. /**
  705. * Delete a form
  706. *
  707. * @since 1.0
  708. */
  709. function ninja_forms_delete_form( $form_id = '' ){
  710. global $wpdb;
  711. // Bail if we aren't in the admin
  712. if ( ! is_admin() )
  713. return false;
  714. // Bail if we don't have proper permissions
  715. if ( ! current_user_can( apply_filters( 'nf_delete_form_capabilities', 'manage_options' ) ) )
  716. return false;
  717. if( $form_id == '' ){
  718. $ajax = true;
  719. $form_id = absint( $_REQUEST['form_id'] );
  720. check_ajax_referer( 'nf_ajax', 'nf_ajax_nonce' );
  721. }else{
  722. $ajax = false;
  723. }
  724. Ninja_Forms()->form( $form_id )->delete();
  725. if( $ajax ){
  726. die();
  727. }
  728. }
  729. add_action('wp_ajax_ninja_forms_delete_form', 'ninja_forms_delete_form');
  730. function ninja_forms_get_all_forms( $debug = false ){
  731. $forms = Ninja_Forms()->forms()->get_all();
  732. $tmp_array = array();
  733. $x = 0;
  734. foreach ( $forms as $form_id ) {
  735. $tmp_array[ $x ]['id'] = $form_id;
  736. $tmp_array[ $x ]['data'] = Ninja_Forms()->form( $form_id )->get_all_settings();
  737. $tmp_array[ $x ]['name'] = Ninja_Forms()->form( $form_id )->get_setting( 'form_title' );
  738. $x++;
  739. }
  740. return $tmp_array;
  741. }
  742. /**
  743. * Return our form count
  744. *
  745. * @since 2.8
  746. * @return int $count
  747. */
  748. function nf_get_form_count() {
  749. global $wpdb;
  750. $forms = Ninja_Forms()->forms()->get_all();
  751. return count( $forms );
  752. }
  753. /**
  754. * Old update form function.
  755. *
  756. * @since 1.0
  757. * @return void
  758. */
  759. function ninja_forms_update_form( $args ){
  760. // Get our form id
  761. $form_id = $args['where']['id'];
  762. $update_array = $args['update_array'];
  763. if ( isset ( $update_array['data'] ) ) {
  764. $data = maybe_unserialize( $update_array['data'] );
  765. if ( is_array( $data ) ) {
  766. foreach ( $data as $key => $val ) {
  767. Ninja_Forms()->form( $form_id )->update_setting( $key, $val );
  768. }
  769. }
  770. unset( $update_array['data'] );
  771. }
  772. foreach ( $update_array as $key => $val ) {
  773. Ninja_Forms()->form( $form_id )->update_setting( $key, $val );
  774. }
  775. Ninja_Forms()->form( $form_id )->dump_cache();
  776. }
  777. // Add our old form fields
  778. require_once( NINJA_FORMS_DIR . "/includes/fields/honeypot.php" );