Warning: chmod(): Operation not permitted in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [0] in function chmod in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [1] in function include_once in /var/www/hopeinstoughton_www/wp-settings.php on line 560 [2] in function require_once in /var/www/hopeinstoughton_www/wp-config.php on line 85 [3] in function require_once in /var/www/hopeinstoughton_www/wp-load.php on line 50 [4] in function require_once in /var/www/hopeinstoughton_www/wp-blog-header.php on line 13 [5] in function require in /var/www/hopeinstoughton_www/index.php on line 17
| Server IP : 94.177.8.99 / Your IP : 216.73.217.165 Web Server : Apache/2.4.58 (Ubuntu) System : Linux aries 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/patientapps_support/modules/formEdit/ |
Upload File : |
<?php
namespace modules\formEdit;
class main extends \moduleMain {
use \modules\output\traits {
\modules\output\traits::__construct as __ConstructOutput;
}
use \modules\input\traits {
\modules\input\traits::__construct as __ConstructInput;
}
private $active = FALSE;
public function __construct() {
parent::__construct(__DIR__);
$this->__ConstructOutput();
$this->__ConstructInput();
}
public function Activate() {
hook_add('component.add', [$this, '__component']);
hook_add('formedit.validate', [$this, '__validate']);
}
public function __component(&$status, $requested) {
if ($requested == 'formedit') {
$this->active = TRUE;
// load view
$view = $this->__loadView('formedit_view');
$view->handlebars_template();
// $status = '{{> fields fieldlist=fieldlist}}';
$status = '{{> formedit}}';
}
}
// process the fields - get values and any error messages
public function __validate(&$result, $definitions) {
$post = $this->post();
$errors = [];
$data = [];
foreach($definitions as $def) {
$name = $def['name'] ?? '';
$required = $def['required'] ?? FALSE; // not for checkboxes
switch($def['type']) {
case 'string':
$value = trim($post[$name] ?? '');
if ($value == '' && $required) {
$errors[$name] = ['message' => '?', 'state' => 1]; // must have a value
break;
}
$data[$name] = $value;
break;
case 'tel':
$value = trim($post["{$name}_"] ?? ''); // hidden converted field
if ($value == '' && $required) {
$errors[$name] = ['message' => '?', 'state' => 1]; // must have a value
break;
}
$data[$name] = $value;
break;
case 'email':
$value = trim($post[$name] ?? ''); // not for multiselect
if ($value == '' && $required) {
$errors[$name] = ['message' => '?', 'state' => 1]; // must have a value
break;
}
// validate email
if (($p = strrpos($value, '@')) !== FALSE) {
$domain = strtolower(substr($value, $p + 1));
if (strlen($domain) < 4 || strpos($domain, '.') === FALSE) {
$errors[$name] = ['message' => 'This does not look like a valid email address', 'state' => 1];
break;
}
$disposable = hook_execute('email.check', NULL, $domain);
if ($disposable) {
$errors[$name] = ['message' => 'Temporary email addresses are not acceptable', 'state' => 1];
} else {
$data[$name] = $value;
}
} else {
$errors[$name] = ['message' => 'This does not look like a valid email address', 'state' => 1];
}
break;
case 'select':
// not for multiselect
$value = trim($post[$name] ?? ''); // single select always has a value
$data[$name] = $value;
break;
case 'text':
$value = trim($post[$name] ?? ''); // not for multiselect
if ($value == '' && $required) {
$errors[$name] = ['message' => 'This field is required', 'state' => 1]; // must have a value
break;
}
$data[$name] = $value;
break;
// case checkbox
}
}
if (count($errors)) {
$result = ['field' => $errors];
} else {
$result = ['data' => $data ];
}
}
}
/*
generate form html using handlebars from an array
load existing data
save data
error checking
to do: use by single-module settings (system page, and google mail page)
also generate buttons
*/