Diff #4 - trunk/src/Opus/Forms/Admin.php
2,644 bytes
|
|
January 20, 2025 at 08:20
|
Diff
Index: Admin.php
--- Admin.php (nonexistent) +++ Admin.php (revision 4) @@ -0,0 +1,102 @@ +<?php +declare(strict_types = 1); + +namespace App\Webapp\Opus\Forms; + +use Apex\Svc{Db, App}; +use Apex\App\Adapters\ArmorAdapter; +use Apex\App\Base\Web\Utils\FormBuilder; +use Apex\App\Interfaces\Opus\FormInterface; + + +/** + * Form - Admin + */ +class Admin implements FormInterface +{ + + /** + * Whether or not to pre-populate form fields with POSTed data. + */ + public bool $allow_post_values = false; + + + #[Inject(FormBuilder::class)] + private FormBuilder $builder; + + #[Inject(Db::class)] + private Db $db; + + #[Inject(App::class)] + private App $app; + + #[Inject(ArmorAdapter::class)] + private ArmorAdapter $armor_adapter; + + /** + * Get form fields. + */ + public function getFields(array $attr = []):array + { + + // Initialize + $builder = $this->builder; + $show_password = $attr['show_password'] ?? 1; + + // Set form fields + $form_fields = [ + 'sep1' => $builder->seperator('Login Credentials'), + 'username' => $builder->textbox()->required()->dataType('alphanum'), + 'password' => $builder->textbox()->required()->type('password')->label('Desired Password'), + 'confirm_password' => $builder->textbox()->required()->type('password')->label('Confirm Password'), + 'full_name' => $builder->textbox()->required(), + 'email' => $builder->textbox()->required()->dataType('email')->label('E-Mail Address'), + 'phone' => $builder->phone(), + 'language' => $builder->select()->required()->dataSource('stdlist.language')->value($this->app->config('core.default_language')), + 'timezone' => $builder->select()->required()->dataSource('stdlist.timezone')->value($this->app->config('core.default_timezone')), + 'submit' => $builder->createOrUpdateButton('Administrator', $attr) + ]; + + // Remove password fields, if needed + if ($show_password == 0) { + unset($form_fields['password']); + unset($form_fields['confirm_password']); + } + + // Return + return $form_fields; + } + + /** + * Get record + */ + public function getRecord(string $uuid):array + { + + // Get row + if ($uuid == '') { + return []; + } + + if (!$user = $this->armor_adapter->getUuid($this->db, $uuid)) { + return []; + } + + // Return + $row = $user->toArray(); + $row['full_name'] = $user->getFullName(); + return $row; + } + + /** + * Validate + */ + public function validate(array $attr = []):bool + { + + // Return + return true; + } + +} +
Full Code
<?php declare(strict_types = 1);
namespace App\Webapp\Opus\Forms;
use Apex\Svc{Db, App}; use Apex\App\Adapters\ArmorAdapter; use Apex\App\Base\Web\Utils\FormBuilder; use Apex\App\Interfaces\Opus\FormInterface;
/** * Form - Admin */ class Admin implements FormInterface {
/**
* Whether or not to pre-populate form fields with POSTed data.
*/
public bool $allow_post_values = false;
#[Inject(FormBuilder::class)]
private FormBuilder $builder;
#[Inject(Db::class)]
private Db $db;
#[Inject(App::class)]
private App $app;
#[Inject(ArmorAdapter::class)]
private ArmorAdapter $armor_adapter;
/**
* Get form fields.
*/
public function getFields(array $attr = []):array
{
// Initialize
$builder = $this->builder;
$show_password = $attr['show_password'] ?? 1;
// Set form fields
$form_fields = [
'sep1' => $builder->seperator('Login Credentials'),
'username' => $builder->textbox()->required()->dataType('alphanum'),
'password' => $builder->textbox()->required()->type('password')->label('Desired Password'),
'confirm_password' => $builder->textbox()->required()->type('password')->label('Confirm Password'),
'full_name' => $builder->textbox()->required(),
'email' => $builder->textbox()->required()->dataType('email')->label('E-Mail Address'),
'phone' => $builder->phone(),
'language' => $builder->select()->required()->dataSource('stdlist.language')->value($this->app->config('core.default_language')),
'timezone' => $builder->select()->required()->dataSource('stdlist.timezone')->value($this->app->config('core.default_timezone')),
'submit' => $builder->createOrUpdateButton('Administrator', $attr)
];
// Remove password fields, if needed
if ($show_password == 0) {
unset($form_fields['password']);
unset($form_fields['confirm_password']);
}
// Return
return $form_fields;
}
/**
* Get record
*/
public function getRecord(string $uuid):array
{
// Get row
if ($uuid == '') {
return [];
}
if (!$user = $this->armor_adapter->getUuid($this->db, $uuid)) {
return [];
}
// Return
$row = $user->toArray();
$row['full_name'] = $user->getFullName();
return $row;
}
/**
* Validate
*/
public function validate(array $attr = []):bool
{
// Return
return true;
}
}