本文整理汇总了PHP中hostsite_get_user_field函数的典型用法代码示例。如果您正苦于以下问题:PHP hostsite_get_user_field函数的具体用法?PHP hostsite_get_user_field怎么用?PHP hostsite_get_user_field使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了hostsite_get_user_field函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: group_authorise_form
/**
* List of methods that assist with handling recording groups.
* @package Client
* @subpackage PrebuiltForms.
*/
function group_authorise_form($args, $readAuth)
{
if (!empty($args['limit_to_group_id']) && $args['limit_to_group_id'] !== (empty($_GET['group_id']) ? '' : $_GET['group_id'])) {
// page owned by a different group, so throw them out
hostsite_show_message(lang::get('This page is a private recording group page which you cannot access.'), 'alert');
hostsite_goto_page('<front>');
}
if (!empty($_GET['group_id'])) {
// loading data into a recording group. Are they a member or is the page public?
// @todo: consider performance - 2 web services hits required to check permissions.
if (hostsite_get_user_field('indicia_user_id')) {
$gu = data_entry_helper::get_population_data(array('table' => 'groups_user', 'extraParams' => $readAuth + array('group_id' => $_GET['group_id'], 'user_id' => hostsite_get_user_field('indicia_user_id')), 'nocache' => true));
} else {
$gu = array();
}
$gp = data_entry_helper::get_population_data(array('table' => 'group_page', 'extraParams' => $readAuth + array('group_id' => $_GET['group_id'], 'path' => drupal_get_path_alias($_GET['q']))));
if (count($gp) === 0) {
hostsite_show_message(lang::get('You are trying to access a page which is not available for this group.'), 'alert');
hostsite_goto_page('<front>');
} elseif (count($gu) === 0 && $gp[0]['administrator'] !== NULL) {
// not a group member, so throw them out
hostsite_show_message(lang::get('You are trying to access a page for a group you do not belong to.'), 'alert');
hostsite_goto_page('<front>');
}
}
}
示例2: get_control_species
/**
* Get the control for species input, either a grid or a single species input control.
*/
protected static function get_control_species($auth, $args, $tabAlias, $options)
{
global $user;
$extraParams = $auth['read'];
$extraParams['preferred'] = "true";
// Build the configuration options
if (isset($options['view'])) {
$extraParams['view'] = $options['view'];
}
// There may be options in the form occAttr:n|param => value targetted at specific attributes
$occAttrOptions = array();
// make sure that if extraParams is specified as a config option, it does not replace the essential stuff
if (isset($options['extraParams'])) {
$options['extraParams'] = array_merge($extraParams, $options['extraParams']);
}
$species_ctrl_opts = array_merge(array('occAttrOptions' => $occAttrOptions, 'listId' => $args['list_id'], 'label' => lang::get('occurrence:taxa_taxon_list_id'), 'columns' => 1, 'extraParams' => $extraParams, 'survey_id' => $args['survey_id'], 'language' => iform_lang_iso_639_2(hostsite_get_user_field('language'))), $options);
if ($groups = hostsite_get_user_field('taxon_groups')) {
$species_ctrl_opts['usersPreferredGroups'] = unserialize($groups);
}
if (isset($args['col_widths']) && $args['col_widths']) {
$species_ctrl_opts['colWidths'] = explode(',', $args['col_widths']);
}
call_user_func(array(self::$called_class, 'build_grid_taxon_label_function'), $args, $options);
if (self::$mode == self::MODE_CLONE) {
$species_ctrl_opts['useLoadedExistingRecords'] = true;
}
// Start by outputting a hidden value that tells us we are using a grid when the data is posted,
// then output the grid control
return '<input type="hidden" value="true" name="gridmode" />' . self::my_species_checklist($species_ctrl_opts);
}
示例3: getEntity
/**
* Preparing to display an existing sample with occurrences.
* When displaying a grid of occurrences, just load the sample and data_entry_helper::species_checklist
* will load the occurrences.
* When displaying just one occurrence we must load the sample and the occurrence
*/
protected static function getEntity($args, $auth)
{
data_entry_helper::$entity_to_load = array();
// If we know the occurrence ID but not the sample, we must look it up
if (self::$loadedOccurrenceId && !self::$loadedSampleId) {
$response = data_entry_helper::get_population_data(array('table' => 'occurrence', 'extraParams' => $auth['read'] + array('id' => self::$loadedOccurrenceId, 'view' => 'detail')));
if (count($response) != 0) {
//we found an occurrence
self::$loadedSampleId = $response[0]['sample_id'];
}
}
// Load the sample record
if (self::$loadedSampleId) {
data_entry_helper::load_existing_record($auth['read'], 'sample', self::$loadedSampleId, 'detail', false, true);
}
// Ensure that if we are used to load a different survey's data, then we get the correct survey attributes. We can change args
// because the caller passes by reference.
if ($args['survey_id'] != data_entry_helper::$entity_to_load['sample:survey_id']) {
throw new exception(lang::get('Attempt to access a record on a different survey.'));
}
if ($args['sample_method_id'] != data_entry_helper::$entity_to_load['sample:sample_method_id']) {
throw new exception(lang::get('Attempt to access a record with the wrong sample_method_id.'));
}
// enforce that people only access their own data, unless explicitly have permissions
$editor = !empty($args['edit_permission']) && function_exists('user_access') && user_access($args['edit_permission']);
if (!$editor && function_exists('hostsite_get_user_field') && data_entry_helper::$entity_to_load['sample:created_by_id'] != 1 && data_entry_helper::$entity_to_load['sample:created_by_id'] !== hostsite_get_user_field('indicia_user_id')) {
throw new exception(lang::get('Attempt to access a record you did not create.'));
}
}
示例4: get_form
/**
* Return the generated form output.
* @param array $args List of parameter values passed through to the form depending on how the form has been configured.
* This array always contains a value for language.
* @param object $node The Drupal node object.
* @param array $response When this form is reloading after saving a submission, contains the response from the service call.
* Note this does not apply when redirecting (in this case the details of the saved object are in the $_GET data).
* @return Form HTML.
*/
public static function get_form($args, $node, $response = null)
{
if (!($user_id = hostsite_get_user_field('indicia_user_id'))) {
return self::abort('Please ensure that you\'ve filled in your surname on your user profile before joining a group.', $args);
}
if (empty($_GET['group_id'])) {
return self::abort('This form must be called with a group_id in the URL parameters.', $args);
}
$r = '';
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$group = data_entry_helper::get_population_data(array('table' => 'group', 'extraParams' => $auth['read'] + array('id' => $_GET['group_id']), 'nocache' => true));
if (count($group) !== 1) {
return self::abort('The group you\'ve requested membership of does not exist.', $args);
}
iform_load_helpers(array('submission_builder'));
$group = $group[0];
// Check for an existing group user record
$existing = data_entry_helper::get_population_data(array('table' => 'groups_user', 'extraParams' => $auth['read'] + array('group_id' => $_GET['group_id'], 'user_id' => $user_id), 'nocache' => true));
if (count($existing)) {
if ($existing[0]['pending'] === 'true') {
// if a previous request was made and unapproved when the group was request only, but the group is now public, we can approve their existing
// groups_user record.
if ($group['joining_method'] === 'P') {
$data = array('groups_user:id' => $existing[0]['id'], 'groups_user:pending' => 'f');
$wrap = submission_builder::wrap($data, 'groups_user');
$r = data_entry_helper::forward_post_to('groups_user', $wrap, $auth['write_tokens']);
return self::success($auth, $group, $args);
} else {
return self::abort("You've already got a membership request for {$group['title']} pending approval.", $args);
}
} else {
return self::abort("You're already a member of {$group['title']}.", $args);
}
} else {
$data = array('groups_user:group_id' => $group['id'], 'groups_user:user_id' => $user_id);
// request only, so make the groups_user record pending approval
if ($group['joining_method'] === 'R') {
$data['groups_user:pending'] = 't';
}
$wrap = submission_builder::wrap($data, 'groups_user');
$r = data_entry_helper::forward_post_to('groups_user', $wrap, $auth['write_tokens']);
if (!isset($r['success'])) {
return self::abort('An error occurred whilst trying to update your group membership.', $args);
} elseif ($group['joining_method'] === 'R') {
return self::abort("Your request to join {$group['title']} is now awaiting approval.", $args);
} else {
return self::success($auth, $group, $args);
}
}
return $r;
}
示例5: get_form
/**
* Return the generated form output.
* @param array $args List of parameter values passed through to the form depending on how the form has been configured.
* This array always contains a value for language.
* @param object $node The Drupal node object.
* @param array $response When this form is reloading after saving a submission, contains the response from the service call.
* Note this does not apply when redirecting (in this case the details of the saved object are in the $_GET data).
* @return Form HTML.
*/
public static function get_form($args, $node, $response = null)
{
if (!($user_id = hostsite_get_user_field('indicia_user_id'))) {
return self::abort('Please ensure that you\'ve filled in your surname on your user profile before leaving a group.', $args);
}
if (empty($_GET['group_id'])) {
return self::abort('This form must be called with a group_id in the URL parameters.', $args);
}
$r = '';
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$group = data_entry_helper::get_population_data(array('table' => 'group', 'extraParams' => $auth['read'] + array('id' => $_GET['group_id']), 'nocache' => true));
if (count($group) !== 1) {
return self::abort('The group you\'ve requested membership of does not exist.', $args);
}
iform_load_helpers(array('submission_builder'));
$group = $group[0];
// Check for an existing group user record
$existing = data_entry_helper::get_population_data(array('table' => 'groups_user', 'extraParams' => $auth['read'] + array('group_id' => $_GET['group_id'], 'user_id' => $user_id), 'nocache' => true));
if (count($existing) !== 1) {
return self::abort('You are not a member of this group.', $args);
}
if (!empty($_POST['response']) && $_POST['response'] === lang::get('Cancel')) {
drupal_goto($args['groups_page_path']);
} elseif (!empty($_POST['response']) && $_POST['response'] === lang::get('Confirm')) {
$data = array('groups_user:id' => $existing[0]['id'], 'groups_user:group_id' => $group['id'], 'groups_user:user_id' => $user_id, 'deleted' => 't');
$wrap = submission_builder::wrap($data, 'groups_user');
$response = data_entry_helper::forward_post_to('groups_user', $wrap, $auth['write_tokens']);
if (isset($response['success'])) {
hostsite_show_message("You are no longer participating in {$group['title']}!");
drupal_goto($args['groups_page_path']);
} else {
return self::abort('An error occurred whilst trying to update your group membership.');
}
} else {
// First access of the form. Let's get confirmation
$reload = data_entry_helper::get_reload_link_parts();
$reloadpath = $reload['path'] . '?' . data_entry_helper::array_to_query_string($reload['params']);
$r = '<form action="' . $reloadpath . '" method="POST"><fieldset>';
$r .= '<legend>' . lang::get('Confirmation') . '</legend>';
$r .= '<input type="hidden" name="leave" value="1" />';
$r .= '<p>' . lang::get('Are you sure you want to stop participating in {1}?', $group['title']) . '</p>';
$r .= '<input type="submit" value="' . lang::get('Confirm') . '" name="response" />';
$r .= '<input type="submit" value="' . lang::get('Cancel') . '" name="response" />';
$r .= '</fieldset></form>';
}
return $r;
}
示例6: clear_moderation_task_notifications
/**
* Clears moderation notifications for a moderator automatically on visiting the page, so then they
* will get notified about new incoming records.
*/
public static function clear_moderation_task_notifications($auth, $args, $tabalias, $options, $path)
{
//Using 'submission_list' and 'entries' allows us to specify several top-level submissions to the system
//i.e. we need to be able to submit several notifications.
$submission['submission_list']['entries'] = array();
$submission['id'] = 'notification';
$notifications = data_entry_helper::get_population_data(array('table' => 'notification', 'extraParams' => $auth['read'] + array('acknowledged' => 'f', 'user_id' => hostsite_get_user_field('indicia_user_id'), 'source_type' => 'PT'), 'nocache' => true));
if (count($notifications) > 0) {
$auth = data_entry_helper::get_read_write_auth(variable_get('indicia_website_id', 0), variable_get('indicia_password', ''));
//Setup the structure we need to submit.
foreach ($notifications as $notification) {
$data['id'] = 'notification';
$data['fields']['id']['value'] = $notification['id'];
$data['fields']['acknowledged']['value'] = 't';
$submission['submission_list']['entries'][] = $data;
}
//Submit the stucture for processing
$response = data_entry_helper::forward_post_to('save', $submission, $auth['write_tokens']);
if (!is_array($response) || !array_key_exists('success', $response)) {
drupal_set_message(print_r($response, true));
}
}
return '';
}
示例7: get_form
/**
* Return the generated form output.
* @return Form HTML.
* @todo: Implement this method
*/
public static function get_form($args)
{
$lang = iform_lang_iso_639_2(hostsite_get_user_field('language', 'en'));
if (function_exists('iform_load_helpers')) {
iform_load_helpers(array('map_helper'));
} else {
require_once dirname(dirname(__FILE__)) . '/map_helper.php';
}
$readAuth = data_entry_helper::get_read_auth($args['website_id'], $args['password']);
$r = '';
// setup the map options
$options = iform_map_get_map_options($args, $readAuth);
$olOptions = iform_map_get_ol_options($args);
if (array_key_exists('table', $_GET) && $_GET['table'] == 'sample') {
// Use a cUrl request to get the data from Indicia which contains the value we need to filter against
// Read the record that was just posted.
$fetchOpts = array('dataSource' => 'reports_for_prebuilt_forms/my_dot_map/occurrences_list_2', 'mode' => 'report', 'readAuth' => $readAuth, 'extraParams' => array('sample_id' => $_GET['id'], 'language' => $lang));
// @todo Error handling on the response
$occurrence = data_entry_helper::get_report_data($fetchOpts);
self::prepare_layer_titles($args, $occurrence);
// Add the 3 distribution layers if present. Reverse the order so 1st layer is topmost
$layerName = self::build_distribution_layer(3, $args, $occurrence);
if ($layerName) {
$options['layers'][] = $layerName;
}
$layerName = self::build_distribution_layer(2, $args, $occurrence);
if ($layerName) {
$options['layers'][] = $layerName;
}
$layerName = self::build_distribution_layer(1, $args, $occurrence);
if ($layerName) {
$options['layers'][] = $layerName;
}
if ($layerName) {
$options['layers'][] = $layerName;
}
// This is not a map used for input
$options['editLayer'] = false;
if ($args['hide_grid'] == false) {
// Now output a grid of the occurrences that were just saved.
$r .= "<table class=\"submission\"><thead><tr><th>" . lang::get('Species') . "</th><th>" . lang::get('Latin Name') . "</th><th>" . lang::get('Abundance') . "</th><th>" . lang::get('Date') . "</th><th>" . lang::get('Spatial Ref') . "</th>" . "</th><th>" . lang::get('Comment') . "</th></tr></thead>\n";
$r .= "<tbody>\n";
foreach ($occurrence as $record) {
$r .= '<tr class="biota"><td>' . $record['taxon'] . '</td><td class="binomial"><em>' . $record['preferred_taxon'] . '</em></td><td>' . $record['abundance'] . '</td><td>' . $record['date'] . '</td><td>' . $record['entered_sref'] . '</td>' . $record['comment'] . "</td><td></tr>\n";
}
$r .= "</tbody></table>\n";
}
}
if (!empty($args['add_another_link'])) {
$path = $args['add_another_link'];
if (count($occurrence) === 1) {
$path = str_replace(array('#taxon_meaning_id#', '#external_key#'), array($occurrence[0]['taxon_meaning_id'], $occurrence[0]['external_key']), $path);
$parts = explode('?', $path, 2);
$parts[0] = url($parts[0]);
$path = implode('?', $parts);
}
$r .= '<a class="indicia-button" href="' . $path . '">' . lang::get('Add another record') . '</a><br/>';
}
$r .= '<div id="mapandlegend">';
$r .= map_helper::layer_list(array('id' => 'legend', 'includeSwitchers' => false, 'includeHiddenLayers' => false, 'includeIcons' => true, 'layerTypes' => array('overlay')));
$r .= map_helper::map_panel($options, $olOptions);
$r .= '</div>';
return $r;
}
示例8: get_form
/**
* Return the generated form output.
* @param array $args List of parameter values passed through to the form depending on how the form has been configured.
* This array always contains a value for language.
* @param object $node The Drupal node object.
* @param array $response When this form is reloading after saving a submission, contains the response from the service call.
* Note this does not apply when redirecting (in this case the details of the saved object are in the $_GET data).
* @return Form HTML.
* @todo: Implement this method
*/
public static function get_form($args, $node, $response = null)
{
if (empty($_GET['group_id'])) {
return 'This page needs a group_id URL parameter.';
}
require_once 'includes/map.php';
require_once 'includes/groups.php';
global $indicia_templates;
iform_load_helpers(array('report_helper', 'map_helper'));
$conn = iform_get_connection_details($node);
$readAuth = report_helper::get_read_auth($conn['website_id'], $conn['password']);
report_helper::$javascript .= "indiciaData.website_id={$conn['website_id']};\n";
report_helper::$javascript .= "indiciaData.nodeId={$node->nid};\n";
group_authorise_form($args, $readAuth);
$group = data_entry_helper::get_population_data(array('table' => 'group', 'extraParams' => $readAuth + array('id' => $_GET['group_id'], 'view' => 'detail')));
$group = $group[0];
hostsite_set_page_title("{$group['title']}: {$node->title}");
$actions = array();
if (!empty($args['edit_location_path'])) {
$actions[] = array('caption' => 'edit', 'url' => '{rootFolder}' . $args['edit_location_path'], 'urlParams' => array('group_id' => $_GET['group_id'], 'location_id' => '{location_id}'));
}
$actions[] = array('caption' => 'remove', 'javascript' => "remove_location_from_group({groups_location_id});");
$leftcol = report_helper::report_grid(array('readAuth' => $readAuth, 'dataSource' => 'library/locations/locations_for_groups', 'sendOutputToMap' => true, 'extraParams' => array('group_id' => $_GET['group_id']), 'rowId' => 'location_id', 'columns' => array(array('display' => 'Actions', 'actions' => $actions, 'caption' => 'edit', 'url' => '{rootFolder}'))));
$leftcol .= '<fieldset><legend>' . lang::Get('Add sites to the group') . '</legend>';
$leftcol .= '<p>' . lang::get('LANG_Add_Sites_Instruct') . '</p>';
if (!empty($args['edit_location_path'])) {
$leftcol .= lang::get('Either') . ' <a class="button" href="' . hostsite_get_url($args['edit_location_path'], array('group_id' => $_GET['group_id'])) . '">' . lang::get('enter details of a new site') . '</a><br/>';
}
$leftcol .= data_entry_helper::select(array('label' => lang::get('Or, add an existing site'), 'fieldname' => 'add_existing_location_id', 'report' => 'library/locations/locations_available_for_group', 'caching' => false, 'blankText' => lang::get('<please select>'), 'valueField' => 'location_id', 'captionField' => 'name', 'extraParams' => $readAuth + array('group_id' => $_GET['group_id'], 'user_id' => hostsite_get_user_field('indicia_user_id', 0)), 'afterControl' => '<button id="add-existing">Add</button>'));
$leftcol .= '</fieldset>';
// @todo Link existing My Site to group. Need a new report to list sites I created, with sites already in the group
// removed. Show in a drop down with an add button. Adding must create the groups_locations record, plus refresh
// the grid and refresh the drop down.
// @todo set destination after saving added site
$map = map_helper::map_panel(iform_map_get_map_options($args, $readAuth), iform_map_get_ol_options($args));
$r = str_replace(array('{col-1}', '{col-2}'), array($leftcol, $map), $indicia_templates['two-col-50']);
data_entry_helper::$javascript .= "indiciaData.group_id={$_GET['group_id']};\n";
return $r;
}
示例9: apply_user_replacements
/**
* Takes a piece of configuration text and replaces tokens with the relevant user profile information. The following
* replacements are applied:
* {user_id} - the content management system User ID.
* {username} - the content management system username.
* {email} - the email address stored for the user in the content management system.
* {profile_*} - the respective field from the user profile stored in the content management system.
* [permission] - does the user have this permission? Replaces with 1 if they have the permission, else 0.
*/
function apply_user_replacements($text)
{
global $user;
if (!is_string($text)) {
return $text;
}
$replace = array('{user_id}', '{username}', '{email}');
$replaceWith = array($user->uid, isset($user->name) ? $user->name : '', isset($user->mail) ? $user->mail : '');
// Do basic replacements and trim the data
$text = trim(str_replace($replace, $replaceWith, $text));
// Look for any profile field replacments
if (preg_match_all('/{([^}]*)}/', $text, $matches) && function_exists('hostsite_get_user_field')) {
$profileLoaded = false;
foreach ($matches[1] as $profileField) {
// got a request for a user profile field, so copy it's value across into the report parameters
$fieldName = preg_replace('/^profile_/', '', $profileField);
$value = hostsite_get_user_field($fieldName);
if ($value) {
// unserialise the data if it is serialised, e.g. when using profile_checkboxes to store a list of values.
$value = @unserialize($value);
// arrays are returned as a comma separated list
if (is_array($value)) {
$value = implode(',', $value);
} else {
$value = $value ? $value : hostsite_get_user_field($fieldName);
}
// nulls must be passed as empty string params.
$value = $value === null ? '' : $value;
} else {
$value = '';
}
$text = str_replace('{' . $profileField . '}', $value, $text);
}
}
// Look for any permission replacements
if (preg_match_all('/\\[([^\\]]*)\\]/', $text, $matches)) {
foreach ($matches[1] as $permission) {
$value = user_access($permission) ? '1' : '0';
$text = str_replace("[{$permission}]", $value, $text);
}
}
// convert booleans to true booleans
$text = $text === 'false' ? false : ($text === 'true' ? true : $text);
return $text;
}
示例10: get_control_standardparams
protected static function get_control_standardparams($auth, $args, $tabalias, $options)
{
self::$applyUserPrefs = false;
$options = array_merge(array('allowSave' => true, 'sharing' => empty($args['sharing']) ? 'reporting' : $args['sharing']), $options);
if ($args['redirect_on_success']) {
$options['redirect_on_success'] = url($args['redirect_on_success']);
}
// any preset params on the report page should be loaded as initial settings for the filter.
if (!empty($args['param_presets'])) {
$params = data_entry_helper::explode_lines_key_value_pairs($args['param_presets']);
foreach ($params as $key => $val) {
$options["filter-{$key}"] = $val;
}
}
foreach ($options as $key => &$value) {
$value = apply_user_replacements($value);
}
if ($options['allowSave'] && !function_exists('iform_ajaxproxy_url')) {
return 'The AJAX Proxy module must be enabled to support saving filters. Set @allowSave=false to disable this in the [standard params] control.';
}
if (!function_exists('hostsite_get_user_field') || !hostsite_get_user_field('indicia_user_id')) {
return 'The standard params module requires Easy Login.';
}
$r = report_filter_panel($auth['read'], $options, $args['website_id'], $hiddenStuff);
return $r . $hiddenStuff;
}
示例11: get_taxon
/**
* Gets a taxon name from a Meaning ID.
*
* @param int $meaningId The map layer we are preparing.
* @param array $readAuth Read authentication.
* @return The taxon name.
*/
private static function get_taxon($meaningId, $readAuth)
{
global $user;
$fetchOpts = array('table' => 'taxa_taxon_list', 'extraParams' => $readAuth + array('view' => 'detail', 'language_iso' => iform_lang_iso_639_2(hostsite_get_user_field('language')), 'taxon_meaning_id' => $meaningId));
$taxonRecords = data_entry_helper::get_population_data($fetchOpts);
return $taxonRecords[0]['taxon'];
}
示例12: get_control_observerautocomplete
/**
* Get the observer control as an autocomplete.
*/
protected static function get_control_observerautocomplete($auth, $args, $tabAlias, $options)
{
global $user;
//Get the name of the currently logged in user
$defaultUserData = data_entry_helper::get_report_data(array('dataSource' => 'library/users/get_people_details_for_website_or_user', 'readAuth' => $auth['read'], 'extraParams' => array('user_id' => hostsite_get_user_field('indicia_user_id'), 'website_id' => $args['website_id'])));
//If we are in edit mode then we need to get the name of the saved observer for the sample
if (!empty($_GET['sample_id']) && !empty($args['observer_name'])) {
$existingUserData = data_entry_helper::get_population_data(array('table' => 'sample_attribute_value', 'extraParams' => $auth['read'] + array('sample_id' => $_GET['sample_id'], 'sample_attribute_id' => $args['observer_name'])));
}
$observer_list_args = array_merge_recursive(array('extraParams' => array_merge($auth['read'])), $options);
$observer_list_args['label'] = t('Observer Name');
$observer_list_args['extraParams']['website_id'] = $args['website_id'];
$observer_list_args['captionField'] = 'fullname_surname_first';
$observer_list_args['id'] = 'obSelect:' . $args['observer_name'];
$observer_list_args['report'] = 'library/users/get_people_details_for_website_or_user';
//Auto-fill the observer name with the name of the observer of the existing saved sample if it exists,
//else default to current user name
if (!empty($existingUserData[0]['value'])) {
$observer_list_args['defaultCaption'] = $existingUserData[0]['value'];
} else {
if (empty($_GET['sample_id'])) {
$observer_list_args['defaultCaption'] = $defaultUserData[0]['fullname_surname_first'];
}
}
return data_entry_helper::autocomplete($observer_list_args);
}
示例13: get_occurrences_form
//.........这里部分代码省略.........
}
if (isset($args['taxon_list_id_4']) && $args['taxon_list_id_4'] != '') {
$r .= '<div id="grid4"><p id="grid4-loading">' . lang::get('Loading - Please Wait') . '</p><table id="observation-input4" class="ui-widget species-grid"><thead class="table-header"><tr><th class="ui-widget-header"></th>';
foreach (explode(',', $args['occurrence_attribute_ids']) as $idx => $attr) {
$r .= '<th class="ui-widget-header col-' . ($idx + 1) . '">' . $occ_attributes_captions[$idx] . '</th>';
}
$r .= '<th class="ui-widget-header">' . lang::get('Total') . '</th></tr></thead><tbody class="ui-widget-content occs-body"></tbody><tfoot><tr><td>Total</td>';
foreach (explode(',', $args['occurrence_attribute_ids']) as $idx => $attr) {
$r .= '<td class="col-' . ($idx + 1) . ' ' . ($idx % 5 == 0 ? 'first' : '') . ' col-total"></td>';
}
$r .= '<td class="ui-state-disabled first"></td></tr></tfoot></table>';
$r .= '<label for="taxonLookupControl4" class="auto-width">' . lang::get('Add species to list') . ':</label> <input id="taxonLookupControl4" name="taxonLookupControl4" >';
$r .= '<br /><a href="' . $args['my_obs_page'] . '" class="button">' . lang::get('Finish') . '</a></div>';
}
// for the comment form, we want to ensure that if there is a timeout error that it reloads the
// data as stored in the DB.
$reload = data_entry_helper::get_reload_link_parts();
$reload['params']['sample_id'] = $parentSampleId;
unset($reload['params']['new']);
$reloadPath = $reload['path'];
if (count($reload['params'])) {
// decode params prior to encoding to prevent double encoding.
foreach ($reload['params'] as $key => $param) {
$reload['params'][$key] = urldecode($param);
}
$reloadPath .= '?' . http_build_query($reload['params']);
}
// fragment is always at the end. discard this.
$reloadPath = explode('#', $reloadPath, 2);
$reloadPath = $reloadPath[0];
$r .= "<div id=\"notes\"><form method=\"post\" id=\"notes_form\" action=\"" . $reloadPath . "#notes\">\n";
$r .= $auth['write'];
$r .= '<input type="hidden" name="sample:id" value="' . $sampleId . '" />' . '<input type="hidden" name="website_id" value="' . $args['website_id'] . '"/>' . '<input type="hidden" name="survey_id" value="' . $args['survey_id'] . '"/>' . '<input type="hidden" name="page" value="notes"/>';
$r .= '<p class="page-notice ui-state-highlight ui-corner-all">' . lang::get('When using this page, please remember that the data is not saved to the database as you go (which is the case for the previous tabs). In order to save the data entered in this page you must click on the Submit button at the bottom of the page.') . '</p>';
$r .= data_entry_helper::textarea(array('fieldname' => 'sample:comment', 'label' => lang::get('Notes'), 'helpText' => "Use this space to input comments about this week's walk."));
$r .= '<input type="submit" value="' . lang::get('Submit') . '" id="save-button"/></form>';
$r .= '<br /><a href="' . $args['my_walks_page'] . '" class="button">' . lang::get('Finish') . '</a></div></div>';
// enable validation on the comments form in order to include the simplified ajax queuing for the autocomplete.
data_entry_helper::enable_validation('notes_form');
// A stub form for AJAX posting when we need to create an occurrence
$r .= '<form style="display: none" id="occ-form" method="post" action="' . iform_ajaxproxy_url($node, 'occurrence') . '">';
$r .= '<input name="website_id" value="' . $args['website_id'] . '"/>';
$r .= '<input name="occurrence:id" id="occid" />';
$r .= '<input name="occurrence:taxa_taxon_list_id" id="ttlid" />';
$r .= '<input name="occurrence:sample_id" value="' . $sampleId . '"/>';
$r .= '<input name="occAttr:" id="occattr"/>';
$r .= '<input name="transaction_id" id="transaction_id"/>';
$r .= '<input name="user_id" value="' . hostsite_get_user_field('user_id', 1) . '"/>';
$r .= '</form>';
// tell the Javascript where to get species from.
data_entry_helper::add_resource('jquery_ui');
data_entry_helper::add_resource('json');
data_entry_helper::add_resource('autocomplete');
data_entry_helper::$javascript .= "indiciaData.speciesList1 = " . $args['taxon_list_id_1'] . ";\n";
if (!empty($args['taxon_filter_field_1']) && !empty($args['taxon_filter_1'])) {
data_entry_helper::$javascript .= "indiciaData.speciesList1FilterField = '" . $args['taxon_filter_field_1'] . "';\n";
$filterLines = helper_base::explode_lines($args['taxon_filter_1']);
data_entry_helper::$javascript .= "indiciaData.speciesList1FilterValues = '" . json_encode($filterLines) . "';\n";
}
data_entry_helper::$javascript .= "indiciaData.speciesList2 = " . (isset($args['taxon_list_id_2']) && $args['taxon_list_id_2'] != "" ? $args['taxon_list_id_2'] : "-1") . ";\n";
if (!empty($args['taxon_filter_field_2']) && !empty($args['taxon_filter_2'])) {
data_entry_helper::$javascript .= "indiciaData.speciesList2FilterField = '" . $args['taxon_filter_field_2'] . "';\n";
$filterLines = helper_base::explode_lines($args['taxon_filter_2']);
data_entry_helper::$javascript .= "indiciaData.speciesList2FilterValues = " . json_encode($filterLines) . ";\n";
}
data_entry_helper::$javascript .= "indiciaData.speciesList3 = " . (isset($args['taxon_list_id_3']) && $args['taxon_list_id_3'] != "" ? $args['taxon_list_id_3'] : "-1") . ";\n";
if (!empty($args['taxon_filter_field_3']) && !empty($args['taxon_filter_3'])) {
data_entry_helper::$javascript .= "indiciaData.speciesList3FilterField = '" . $args['taxon_filter_field_3'] . "';\n";
$filterLines = helper_base::explode_lines($args['taxon_filter_3']);
data_entry_helper::$javascript .= "indiciaData.speciesList3FilterValues = " . json_encode($filterLines) . ";\n";
}
data_entry_helper::$javascript .= "indiciaData.speciesList4 = " . (isset($args['taxon_list_id_4']) && $args['taxon_list_id_4'] != "" ? $args['taxon_list_id_4'] : "-1") . ";\n";
if (!empty($args['taxon_filter_field_4']) && !empty($args['taxon_filter_4'])) {
data_entry_helper::$javascript .= "indiciaData.speciesList4FilterField = '" . $args['taxon_filter_field_4'] . "';\n";
$filterLines = helper_base::explode_lines($args['taxon_filter_4']);
data_entry_helper::$javascript .= "indiciaData.speciesList4FilterValues = " . json_encode($filterLines) . ";\n";
}
// allow js to do AJAX by passing in the information it needs to post forms
data_entry_helper::$javascript .= "bindSpeciesAutocomplete(\"taxonLookupControl4\",\"table#observation-input4\",\"" . data_entry_helper::$base_url . "index.php/services/data\", indiciaData.speciesList4,\n indiciaData.speciesList4FilterField, indiciaData.speciesList4FilterValues, {\"auth_token\" : \"" . $auth['read']['auth_token'] . "\", \"nonce\" : \"" . $auth['read']['nonce'] . "\"},\n \"" . lang::get('LANG_Duplicate_Taxon') . "\", 25, 4);\n\n";
data_entry_helper::$javascript .= "indiciaData.indiciaSvc = '" . data_entry_helper::$base_url . "';\n";
data_entry_helper::$javascript .= "indiciaData.readAuth = {nonce: '" . $auth['read']['nonce'] . "', auth_token: '" . $auth['read']['auth_token'] . "'};\n";
data_entry_helper::$javascript .= "indiciaData.sample = " . $sampleId . ";\n";
if (function_exists('module_exists') && module_exists('easy_login')) {
data_entry_helper::$javascript .= "indiciaData.easyLogin = true;\n";
$userId = hostsite_get_user_field('indicia_user_id');
if (!empty($userId)) {
data_entry_helper::$javascript .= "indiciaData.UserID = " . $userId . ";\n";
} else {
return '<p>Easy Login active but could not identify user</p>';
}
// something is wrong
} else {
data_entry_helper::$javascript .= "indiciaData.easyLogin = false;\n";
data_entry_helper::$javascript .= "indiciaData.CMSUserAttrID = " . $cmsUserAttr['attributeId'] . ";\n";
data_entry_helper::$javascript .= "indiciaData.CMSUserID = " . $user->uid . ";\n";
}
// Do an AJAX population of the grid rows.
data_entry_helper::$javascript .= "loadSpeciesList();\njQuery('#tabs').bind('tabsshow', function(event, ui) {\n var target = ui.panel;\n // first get rid of any previous tables\n jQuery('table.sticky-header').remove();\n jQuery('table.sticky-enabled thead.tableHeader-processed').removeClass('tableHeader-processed');\n jQuery('table.sticky-enabled.tableheader-processed').removeClass('tableheader-processed');\n jQuery('table.species-grid.sticky-enabled').removeClass('sticky-enabled');\n var table = jQuery('#'+target.id+' table.species-grid');\n if(table.length > 0) {\n table.addClass('sticky-enabled');\n if(typeof Drupal.behaviors.tableHeader == 'object') // Drupal 7\n Drupal.behaviors.tableHeader.attach(table.parent());\n else // Drupal6 : it is a function\n Drupal.behaviors.tableHeader(target);\n }\n // remove any hanging autocomplete select list.\n jQuery('.ac_results').hide();\n});";
return $r;
}
示例14: getLocationListGrid
/**
* When viewing the list of locations for this user, get the grid to insert into the page.
* Filtering of locations is by Indicia User ID stored in the user profile.
* Enable Easy Login module to achieve this function.
*/
protected static function getLocationListGrid($args, $node, $auth)
{
global $user;
// User must be logged in before we can access their records.
if ($user->uid === 0) {
// Return a login link that takes you back to this form when done.
return lang::get('Before using this facility, please <a href="' . url('user/login', array('query' => 'destination=node/' . $node->nid)) . '">login</a> to the website.');
}
// get the Indicia User ID attribute so we can filter the grid to this user
if (function_exists('hostsite_get_user_field')) {
$iUserId = hostsite_get_user_field('indicia_user_id');
}
if (!isset($iUserId) || !$iUserId) {
return lang::get('LANG_No_User_Id');
}
// Subclassed forms may provide a getLocationListGridPreamble function
if (method_exists(self::$called_class, 'getLocationListGridPreamble')) {
$r = call_user_func(array(self::$called_class, 'getLocationListGridPreamble'));
} else {
$r = '';
}
$extraParams = array('website_id' => $args['website_id'], 'iUserID' => $iUserId);
if (!$args['list_all_locations']) {
// The option to list all locations is denied so enforce selection of own data.
$extraParams['ownData'] = '1';
}
$r .= data_entry_helper::report_grid(array('id' => 'locations-grid', 'dataSource' => $args['grid_report'], 'mode' => 'report', 'readAuth' => $auth['read'], 'columns' => call_user_func(array(self::$called_class, 'getReportActions')), 'itemsPerPage' => isset($args['grid_num_rows']) ? $args['grid_num_rows'] : 10, 'autoParamsForm' => true, 'extraParams' => $extraParams, 'paramDefaults' => array('ownData' => '1')));
$r .= '<form>';
$r .= '<input type="button" value="' . lang::get('LANG_Add_Location') . '" ' . 'onclick="window.location.href=\'' . url('node/' . $node->nid, array('query' => array('new' => '1'))) . '\'">';
$r .= '</form>';
return $r;
}
示例15: forward_post_to
/**
* Either takes the passed in submission, or creates it from the post data if this is null, and forwards
* it to the data services for saving as a member of the entity identified.
* @param string $entity Name of the top level entity being submitted, e.g. sample or occurrence.
* @param array $submission The wrapped submission structure. If null, then this is automatically constructer
* from the form data in $_POST.
* @param array $writeTokens Array containing auth_token and nonce for the write operation, plus optionally persist_auth=true
* to prevent the authentication tokens from expiring after use. If null then the values are read from $_POST.
*/
public static function forward_post_to($entity, $submission = null, $writeTokens = null)
{
if (self::$validation_errors == null) {
$remembered_fields = self::get_remembered_fields();
if ($submission == null) {
$submission = submission_builder::wrap($_POST, $entity);
}
if ($remembered_fields !== null) {
// the form is configured to remember fields
if (!isset($_POST['cookie_optin']) || $_POST['cookie_optin'] === '1') {
// if given a choice, the user opted for fields to be remembered
$arr = array();
foreach ($remembered_fields as $field) {
$arr[$field] = $_POST[$field];
}
// put them in a cookie with a 30 day expiry
setcookie('indicia_remembered', serialize($arr), time() + 60 * 60 * 24 * 30);
// cookies are only set when the page is loaded. So if we are reloading the same form after submission,
// we need to fudge the cookie
$_COOKIE['indicia_remembered'] = serialize($arr);
} else {
// the user opted out of having a cookie - delete one if present.
setcookie('indicia_remembered', '');
}
}
$media = self::extract_media_data($_POST);
$request = parent::$base_url . "index.php/services/data/{$entity}";
$postargs = 'submission=' . urlencode(json_encode($submission));
// passthrough the authentication tokens as POST data. Use parameter writeTokens, or current $_POST if not supplied.
if ($writeTokens) {
foreach ($writeTokens as $token => $value) {
$postargs .= '&' . $token . '=' . ($value === true ? 'true' : ($value === false ? 'false' : $value));
}
// this will do auth_token, nonce, and persist_auth
} else {
if (array_key_exists('auth_token', $_POST)) {
$postargs .= '&auth_token=' . $_POST['auth_token'];
}
if (array_key_exists('nonce', $_POST)) {
$postargs .= '&nonce=' . $_POST['nonce'];
}
}
// pass through the user_id if hostsite_get_user_field is implemented
if (function_exists('hostsite_get_user_field')) {
$postargs .= '&user_id=' . hostsite_get_user_field('indicia_user_id');
}
// look for media files attached to fields like group:logo_path (*:*_path)
// which are not in submodels, so not picked up by the extract_media_data code.
foreach ($_FILES as $fieldname => $file) {
if (preg_match('/^([a-z_]+:)?[a-z_]+_path$/', $fieldname)) {
$media[] = array('path' => $file['name']);
}
}
// if there are images, we will send them after the main post, so we need to persist the write nonce
if (count($media) > 0) {
$postargs .= '&persist_auth=true';
}
$response = self::http_post($request, $postargs);
// The response should be in JSON if it worked
$output = json_decode($response['output'], true);
// If this is not JSON, it is an error, so just return it as is.
if (!$output) {
$output = $response['output'];
}
if (is_array($output) && array_key_exists('success', $output)) {
if (isset(self::$final_image_folder) && self::$final_image_folder != 'warehouse') {
// moving the files on the local machine. Find out where from and to
$interim_image_folder = dirname($_SERVER['SCRIPT_FILENAME']) . '/' . self::relative_client_helper_path() . (isset(parent::$interim_image_folder) ? parent::$interim_image_folder : 'upload/');
$final_image_folder = dirname($_SERVER['SCRIPT_FILENAME']) . '/' . self::relative_client_helper_path() . parent::$final_image_folder;
}
// submission succeeded. So we also need to move the images to the final location
$image_overall_success = TRUE;
$image_errors = array();
foreach ($media as $item) {
// no need to resend an existing image, or a media link, just local files.
if ((empty($item['media_type']) || preg_match('/:Local$/', $item['media_type'])) && (!isset($item['id']) || empty($item['id']))) {
if (!isset(self::$final_image_folder) || self::$final_image_folder == 'warehouse') {
// Final location is the Warehouse
// @todo Set PERSIST_AUTH false if last file
$success = self::send_file_to_warehouse($item['path'], true, $writeTokens);
} else {
$success = rename($interim_image_folder . $item['path'], $final_image_folder . $item['path']);
}
if ($success !== true) {
// Record all files that fail to move successfully.
$image_overall_success = FALSE;
$image_errors[] = $success;
}
}
}
if (!$image_overall_success) {
//.........这里部分代码省略.........