newEntities(array $data, array $options = []) * @method ContactUsFormSubmission get(mixed $primaryKey, array|string $finder = 'all', CacheInterface|string|null $cache = null, Closure|string|null $cacheKey = null, mixed ...$args) * @method ContactUsFormSubmission findOrCreate($search, ?callable $callback = null, array $options = []) * @method ContactUsFormSubmission patchEntity(EntityInterface $entity, array $data, array $options = []) * @method array patchEntities(iterable $entities, array $data, array $options = []) * @method ContactUsFormSubmission|false save(EntityInterface $entity, array $options = []) * @method ContactUsFormSubmission saveOrFail(EntityInterface $entity, array $options = []) * @method iterable|ResultSetInterface|false saveMany(iterable $entities, array $options = []) * @method iterable|ResultSetInterface saveManyOrFail(iterable $entities, array $options = []) * @method iterable|ResultSetInterface|false deleteMany(iterable $entities, array $options = []) * @method iterable|ResultSetInterface deleteManyOrFail(iterable $entities, array $options = []) */ class ContactUsFormSubmissionsTable extends Table { use MailerAwareTrait; /** * Initialize method * * @param array $config The configuration for the Table. * @return void */ public function initialize(array $config): void { parent::initialize($config); $this->setTable('contact_us_form_submissions'); $this->setDisplayField('name'); $this->setPrimaryKey('id'); } /** * Default validation rules. * * @param Validator $validator Validator instance. * @return Validator */ public function validationDefault(Validator $validator): Validator { $fields = Configure::readOrFail('ContactUs.fields'); $validator ->dateTime('submitted_at') ->requirePresence('submitted_at', 'create') ->notEmptyDateTime('submitted_at'); $validator ->scalar('client_ip') ->maxLength('client_ip', 45) ->allowEmptyString('client_ip'); $validator ->scalar('name') ->maxLength('name', 255) ->requirePresence('name', 'create') ->notEmptyString('name'); // email $validator->email('email'); if ($fields['email'] ?? false) { $validator->notEmptyString('email'); } else { $validator->allowEmptyString('email'); } // subject $validator ->scalar('subject') ->maxLength('subject', 255); if ($fields['subject'] ?? false) { $validator->notEmptyString('subject'); } else { $validator->allowEmptyString('subject'); } $validator ->scalar('message') ->requirePresence('message', 'create') ->notEmptyString('message'); $validator ->dateTime('confirm_email_sent') ->allowEmptyDateTime('confirm_email_sent'); $validator ->dateTime('backend_email_sent') ->allowEmptyDateTime('backend_email_sent'); return $validator; } /** * @param EventInterface $event * @param EntityInterface|ContactUsFormSubmission $contactUsFormSubmission * @param \ArrayObject $options * @return void */ public function afterSave(EventInterface $event, EntityInterface|ContactUsFormSubmission $contactUsFormSubmission, \ArrayObject $options) { if (!$contactUsFormSubmission->isNew()) { return; } $now = DateTime::now()->format(CakeContactUsPlugin::CAKE_CONTACT_US_MYSQL_DATETIME); $updateData = []; if (Configure::read('ContactUs.fields.email.confirmation') && isset($contactUsFormSubmission->email)) { $mailer = Configure::read('ContactUs.email.mailerClass', 'CakeContactUs.ContactUsFormSubmissions'); try { $this->getMailer($mailer)->send('confirmation', [$contactUsFormSubmission]); $updateData['confirm_email_sent'] = $now; } catch (CakeException $exception) { } } if (Configure::readOrFail('ContactUs.fields.email.backend')) { $mailer = Configure::read('ContactUs.email.mailerClass', 'CakeContactUs.ContactUsFormSubmissions'); try { $this->getMailer($mailer)->send('backend', [$contactUsFormSubmission]); $updateData['backend_email_sent'] = $now; } catch (CakeException $exception) { } } if ($updateData) { $contactUsFormSubmission = $this->patchEntity($contactUsFormSubmission, $updateData, ['validate' => false]); $this->saveOrFail($contactUsFormSubmission); } } }