本文整理汇总了PHP中field::data_type方法的典型用法代码示例。如果您正苦于以下问题:PHP field::data_type方法的具体用法?PHP field::data_type怎么用?PHP field::data_type使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类field
的用法示例。
在下文中一共展示了field::data_type方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: init_customfield_data
/**
* Initialize internal customfield data - records, SELECT fragments, and additional joins.
*
* @return bool Success/Failure
*/
protected function init_customfield_data()
{
global $DB;
if (!empty($this->customfield_data)) {
return true;
}
$fieldids = array();
foreach ($this->enabled_fields as $field => $name) {
if (strpos($field, 'field_') === 0) {
$fieldid = substr($field, strlen('field_'));
if (is_numeric($fieldid)) {
$fieldids[] = $fieldid;
}
}
}
if (!empty($fieldids)) {
$select = 'id IN (' . implode(',', array_fill(0, count($fieldids), '?')) . ')';
$this->customfield_data = $DB->get_records_select(field::TABLE, $select, $fieldids);
}
foreach ($this->customfield_data as $fieldid => $record) {
$field = new field($record);
$multivaluestatus = $this->init_multivalue_status_for_field($record->id, $record->multivalued);
// Add joins and select entries, if field is enabled.
if (isset($this->enabled_fields['field_' . $fieldid])) {
if ($multivaluestatus === static::MULTIVALUE_NONE) {
// Extra columns we'll need to display profile field values.
$this->sql_select[] = "custom_data_{$field->id}.data AS custom_field_{$field->id}";
// Extra joins we'll need to display profile field values.
$field_data_table = "field_data_" . $field->data_type();
$this->sql_joins[] = "LEFT JOIN {" . $field_data_table::TABLE . "} custom_data_{$field->id}\n ON custom_data_{$field->id}.fieldid = {$field->id}\n AND " . static::FIELDSET_NAME . "_ctx.id = custom_data_{$field->id}.contextid\n AND custom_data_{$field->id}.contextid IS NOT NULL";
} else {
// Extra columns we'll need to display profile field values.
$this->sql_select[] = "'' AS custom_field_{$field->id}";
}
}
}
return true;
}
示例2: array
/**
* Get custom fields
*
* This function returns an array of custom field names to labels, and has a few side effects
* that set up data to use the custom fields later. The side effects reduce the number of
* database lookups required to generate the form.
*
* @param array $fields An array of db records representing custom fields
* @return array Custom field names mapped to labels.
*/
function get_custom_fields($group, $fields)
{
$yesno = array(1 => get_string('yes'), 0 => get_string('no'));
// Array $xoptions to append to existing options['choices']
$options = array();
if (!$fields instanceof Iterator) {
$fields = array();
}
foreach ($fields as $field) {
$field = new field($field);
if (!isset($field->owners['manual'])) {
error_log("multifilter.php::get_custom_fields() - no field->owners['manual'] for {$field->name} ({$field_identifier})");
continue;
}
$field_identifier = 'customfield-' . $field->id;
$this->_fields[$group][$field_identifier] = $field;
$this->record_short_field_name($field_identifier);
$this->labels[$group][$field_identifier] = $field->name;
$options[$field_identifier] = $field->name;
$owner = new field_owner($field->owners['manual']);
$params = unserialize($owner->params);
//error_log("multifilter.php::get_custom_fields(): {$field_identifier} => {$params['control']} ({$this->datatypemap[$params['control']]})");
$this->fieldtofiltermap[$group][$field_identifier] = $this->datatypemap[$params['control']];
switch ($params['control']) {
case 'datetime':
// TBD - options required for datetime fields?
$this->_choices[$field_identifier] = array('startyear' => $params['startyear'], 'stopyear' => $params['stopyear'], 'inctime' => isset($params['inctime']) ? $params['inctime'] : false);
break;
case 'checkbox':
$this->_choices[$field_identifier] = $yesno;
break;
case 'menu':
$choices = $owner->get_menu_options();
if (!empty($choices)) {
$this->_choices[$field_identifier] = array();
foreach ($choices as $key => $choice) {
$choice = trim($choice);
// preserve anyvalue key => ''
//$key = ($key === '') ? $key : $choice;
$this->_choices[$field_identifier][$key] = $choice;
}
} else {
error_log("multifilter::get_custom_fields() - empty menu options for fieldid = {$field->id} ... using: Yes, No");
$this->_choices[$field_identifier] = $yesno;
}
break;
case 'text':
// fall-thru case!
// fall-thru case!
case 'textarea':
// no options required for text fields
break;
default:
error_log("multifilter.php:: control = {$params['control']}, datatype = {$field->data_type()} not supported");
break;
}
}
$this->sections[$group]['custom'] = $options;
}
示例3: test_multivalue_field_data_supports_all_data_types_for_menu_of_choices
/**
* Validate that multivalue functionality is suppored for all data types when using the
* "menu of choices" UI / input type
*
* @dataProvider data_type_provider
* @param string $uitype The string value representing a data type
* @param string $data The multi-valued custom field value to use as input
* @param array $expected The values to expect in the databaes
*/
public function test_multivalue_field_data_supports_all_data_types_for_menu_of_choices($datatype, $data, $expected)
{
global $CFG, $DB;
require_once $CFG->dirroot . '/local/elisprogram/lib/setup.php';
require_once elis::lib('data/customfield.class.php');
require_once elispm::lib('data/user.class.php');
// Set up the custom field, category, context association, and owner.
// Use "expected" as list of available options.
$fieldid = $this->create_test_field('user', $datatype, 'menu', true, $expected, null, null);
// Reset the field list.
$temp = new user();
$temp->reset_custom_field_list();
// Run the entity create action.
$record = array('action' => 'create', 'idnumber' => 'testuseridnumber', 'username' => 'testuserusername', 'password' => 'testuserpassword', 'firstname' => 'testuserfirstname', 'lastname' => 'testuserlastname', 'email' => 'test@useremail.com', 'city' => 'testusercity', 'country' => 'CA', 'testfieldshortname' => $data);
$importplugin = rlip_dataplugin_factory::factory('dhimport_version1elis');
$importplugin->fslogger = new silent_fslogger(null);
$importplugin->process_record('user', (object) $record, 'bogus');
// Validation.
$instance = new field(array('datatype' => $datatype));
$realtype = $instance->data_type();
$realdataclass = "field_data_{$realtype}";
$this->assert_field_values('user', user::TABLE, $realdataclass::TABLE, $fieldid, $expected);
}