Field.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2. /**
  3. * Class NF_Database_Models_Field
  4. */
  5. final class NF_Database_Models_Field extends NF_Abstracts_Model
  6. {
  7. private $form_id = '';
  8. protected $_type = 'field';
  9. protected $_table_name = 'nf3_fields';
  10. protected $_meta_table_name = 'nf3_field_meta';
  11. protected $_columns = array(
  12. 'label',
  13. 'key',
  14. 'parent_id',
  15. 'type',
  16. 'created_at'
  17. );
  18. public function __construct( $db, $id, $parent_id = '' )
  19. {
  20. parent::__construct( $db, $id, $parent_id );
  21. }
  22. /**
  23. * Delete
  24. *
  25. * Delete the object, its children, and its relationships.
  26. *
  27. * Also deletes data associated with field
  28. *
  29. * @return bool
  30. */
  31. public function delete() {
  32. $parent_results = parent::delete();
  33. // if parent returns false(no errors) delete data and return false
  34. if( false == $parent_results ) {
  35. // delete data for field if it exists
  36. $this->deleteData();
  37. return false;
  38. } else {
  39. // else return true for errors
  40. return true;
  41. }
  42. }
  43. /**
  44. * Delete data for the field
  45. *
  46. * @return bool
  47. */
  48. private function deleteData() {
  49. // check for numeric ids only
  50. if( is_numeric( $this->_id ) ) {
  51. $query = "DELETE m FROM `" . $this->_db->prefix . "postmeta` m"
  52. . " JOIN `" . $this->_db->prefix . "posts` p ON m.post_id = p.ID"
  53. . " WHERE p.post_type='nf_sub' AND m.meta_key='_field_" .
  54. $this->_id . "'";
  55. // delete submitted values for deleted field
  56. $this->_db->query( $query );
  57. }
  58. }
  59. public static function import( array $settings, $field_id = '', $is_conversion = FALSE )
  60. {
  61. $settings = apply_filters( 'ninja_forms_before_import_fields', $settings );
  62. $settings[ 'saved' ] = 1;
  63. if( $field_id && $is_conversion ) {
  64. $field = Ninja_Forms()->form()->field( $field_id )->get();
  65. } else {
  66. $field = Ninja_Forms()->form()->field()->get();
  67. }
  68. $field->update_settings( $settings );
  69. $field->save();
  70. }
  71. } // End NF_Database_Models_Field