. /** * Allows administrators to define additional profile fields for the users of a GNU social installation. * * @category Widget * @package GNUsocial * @author Max Shinn * @author Diogo Cordeiro * @copyright 2011-2019 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ defined('GNUSOCIAL') || die(); class GNUsocialProfileExtensionField extends Managed_DataObject { public $__table = 'gnusocialprofileextensionfield'; public $id; // int(11) public $systemname; // varchar(64) public $title; // varchar(191) not 255 because utf8mb4 takes more space public $description; // text public $type; // varchar(191) not 255 because utf8mb4 takes more space public $created; // datetime() public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP public static function schemaDef(): array { return [ 'fields' => [ 'id' => ['type' => 'serial', 'not null' => true, 'description' => 'Unique ID for extension field'], 'systemname' => ['type' => 'varchar', 'not null' => true, 'length' => 64, 'description' => 'field systemname'], 'title' => ['type' => 'varchar', 'not null' => true, 'length' => 191, 'description' => 'field title'], 'description' => ['type' => 'text', 'not null' => true, 'description' => 'field description'], 'type' => ['type' => 'varchar', 'not null' => true, 'length' => 191, 'description' => 'field type'], 'created' => ['type' => 'datetime', 'description' => 'date this record was created'], 'modified' => ['type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'], ], 'primary key' => ['id'], 'indexes' => [ 'gnusocialprofileextensionfield_title_idx' => ['title'], ], ]; } public static function newField($title, $description = null, $type = 'str', $system_name = null): GNUsocialProfileExtensionField { $field = new GNUsocialProfileExtensionField(); $field->title = $title; $field->description = $description; $field->type = $type; if (empty($system_name)) { $field->systemname = 'field' . $field->id; } else { $field->systemname = $system_name; } $field->id = $field->insert(); if (!$field->id) { common_log_db_error($field, 'INSERT', __FILE__); throw new ServerException(_m('Error creating new field.')); } return $field; } public static function allFields(): array { $field = new GNUsocialProfileExtensionField(); $fields = []; if ($field->find()) { while ($field->fetch()) { $fields[] = clone($field); } } return $fields; } }