本文整理汇总了PHP中get_records_array函数的典型用法代码示例。如果您正苦于以下问题:PHP get_records_array函数的具体用法?PHP get_records_array怎么用?PHP get_records_array使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_records_array函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: deletefontform_submit
function deletefontform_submit(Pieform $form, $values)
{
global $SESSION;
$fontname = $values['font'];
$result = delete_records('skin_fonts', 'name', $fontname);
if ($result == false) {
$SESSION->add_error_msg(get_string('cantdeletefont', 'skin'));
} else {
// Check to see if the font is being used in a skin. If it is remove it from
// the skin's viewskin data
$skins = get_records_array('skin');
if (is_array($skins)) {
foreach ($skins as $skin) {
$options = unserialize($skin->viewskin);
foreach ($options as $key => $option) {
if (preg_match('/font_family/', $key) && $option == $fontname) {
require_once get_config('docroot') . 'lib/skin.php';
$skinobj = new Skin($skin->id);
$viewskin = $skinobj->get('viewskin');
$viewskin[$key] = 'Arial';
// the default font
$skinobj->set('viewskin', $viewskin);
$skinobj->commit();
}
}
}
}
// Also delete all the files in the appropriate folder and the folder itself...
$fontpath = get_config('dataroot') . 'skins/fonts/' . $fontname;
recurse_remove_dir($fontpath);
$SESSION->add_ok_msg(get_string('fontdeleted', 'skin'));
}
redirect('/admin/site/fonts.php');
}
示例2: xmldb_blocktype_openbadgedisplayer_upgrade
function xmldb_blocktype_openbadgedisplayer_upgrade($oldversion = 0)
{
if ($oldversion < 2015062301) {
$blocks = get_records_array('block_instance', 'blocktype', 'openbadgedisplayer');
if (is_array($blocks)) {
foreach ($blocks as $block) {
$configdata = unserialize($block->configdata);
if (isset($configdata['badgegroup'])) {
// Append source to legacy values
if (is_string($configdata['badgegroup'])) {
$configdata['badgegroup'] = 'backpack:' . $configdata['badgegroup'];
} else {
if (is_array($configdata['badgegroup'])) {
foreach ($configdata['badgegroup'] as &$group) {
$group = str_replace('https://openbadgepassport.com/', 'passport', $group);
$group = str_replace('https://backpack.openbadges.org/', 'backpack', $group);
}
}
}
$block->configdata = serialize($configdata);
update_record('block_instance', $block, 'id');
}
}
}
}
return true;
}
示例3: xmldb_interaction_forum_upgrade
function xmldb_interaction_forum_upgrade($oldversion = 0)
{
if ($oldversion < 2009062300) {
foreach (array('topic', 'forum') as $type) {
log_debug("Subscription upgrade for {$type}s");
// Add missing primary key to the subscription tables
// Step 1: remove duplicates
if ($dupes = get_records_sql_array('
SELECT "user", ' . $type . ', COUNT(*)
FROM {interaction_forum_subscription_' . $type . '}
GROUP BY "user", ' . $type . '
HAVING COUNT(*) > 1', array())) {
// We found duplicate subscriptions to a topic/forum
foreach ($dupes as $dupe) {
log_debug("interaction.forum: Removing duplicate {$type} subscription for {$dupe->user}");
delete_records('interaction_forum_subscription_' . $type, 'user', $dupe->user, $type, $dupe->{$type});
insert_record('interaction_forum_subscription_' . $type, (object) array('user' => $dupe->user, $type => $dupe->{$type}));
}
}
// Step 2: add the actual key
$table = new XMLDBTable('interaction_forum_subscription_' . $type);
$key = new XMLDBKey('primary');
$key->setAttributes(XMLDB_KEY_PRIMARY, array('user', $type));
add_key($table, $key);
// Add a 'key' column, used for unsubscriptions
$field = new XMLDBField('key');
$field->setAttributes(XMLDB_TYPE_CHAR, 50, XMLDB_UNSIGNED, null);
add_field($table, $field);
$key = new XMLDBKey('keyuk');
$key->setAttributes(XMLDB_KEY_UNIQUE, array('key'));
add_key($table, $key);
// Populate the key column
if ($records = get_records_array('interaction_forum_subscription_' . $type, '', '', '', '"user", ' . $type)) {
foreach ($records as $where) {
$new = (object) array('user' => $where->user, $type => $where->{$type}, 'key' => dechex(mt_rand()));
update_record('interaction_forum_subscription_' . $type, $new, $where);
}
}
// Now make the key column not null
$field->setAttributes(XMLDB_TYPE_CHAR, 50, XMLDB_UNSIGNED, XMLDB_NOTNULL);
change_field_notnull($table, $field);
}
}
if ($oldversion < 2009081700) {
if (!get_record('interaction_config', 'plugin', 'forum', 'field', 'postdelay')) {
insert_record('interaction_config', (object) array('plugin' => 'forum', 'field' => 'postdelay', 'value' => 30));
}
}
if ($oldversion < 2009081800) {
$subscription = (object) array('plugin' => 'forum', 'event' => 'creategroup', 'callfunction' => 'create_default_forum');
ensure_record_exists('interaction_event_subscription', $subscription, $subscription);
}
return true;
}
示例4: add_links
public function add_links()
{
parent::add_links();
// check for blog posts this file may be attached to
if (!($posts = get_records_array('artefact_attachment', 'attachment', $this->artefact->get('id')))) {
return;
}
foreach ($posts as $p) {
$post = artefact_instance_from_id($p->artefact);
$this->add_artefact_link($post, 'is_attachment_of');
}
}
示例5: load_account_preferences
/**
* loads up account preferences for a given user
* if you want them for the current user
* use $SESSION->accountprefs
*
* @param int $userid to load preferences for
* @todo caching
* @todo defaults?
*/
function load_account_preferences($userid)
{
$prefs = array();
$expectedprefs = expected_account_preferences();
if (empty($userid)) {
throw new InvalidArgumentException("couldn't load account preferences, no user id specified");
}
if ($prefs = get_records_array('usr_account_preference', 'usr', $userid)) {
foreach ($prefs as $p) {
$prefs[$p->field] = $p->value;
}
}
foreach ($expectedprefs as $field => $default) {
if (!isset($prefs[$field])) {
$prefs[$field] = $default;
}
}
return $prefs;
}
示例6: jimmy_config
/**
* munge the Mahara config.
*
* @uses $CFG
*/
public function jimmy_config()
{
global $CFG;
$this->originaldbconfig = get_records_array('config');
$CFG->dbprefix = $GLOBALS['TESTDBPREFIX'];
$CFG->prefix = $GLOBALS['TESTDBPREFIX'];
$CFG->libdir = get_config('libroot');
try {
db_ignore_sql_exceptions(true);
load_config();
db_ignore_sql_exceptions(false);
} catch (SQLException $e) {
db_ignore_sql_exceptions(false);
}
// now reload the config since $CFG is dirty with the real config table
foreach ($this->originaldbconfig as $c) {
unset($CFG->{$c->field});
}
}
示例7: getRecordDataById
public static function getRecordDataById($type, $id)
{
$record = parent::getRecordDataById($type, $id);
if (!$record) {
return false;
}
// Created by
if (intval($record->owner) > 0) {
$record->createdby = get_record('usr', 'id', $record->owner);
$record->createdbyname = display_name($record->createdby);
}
// Tags
$tags = get_records_array('view_tag', 'view', $id);
if ($tags != false) {
foreach ($tags as $tag) {
$record->tags[] = $tag->tag;
}
} else {
$record->tags = null;
}
return $record;
}
示例8: xmldb_blocktype_externalfeed_upgrade
function xmldb_blocktype_externalfeed_upgrade($oldversion = 0)
{
if ($oldversion < 2008042101) {
// We hit the 255 character limit for feed URLs
if (is_postgres()) {
execute_sql('ALTER TABLE {blocktype_externalfeed_data} ALTER COLUMN url TYPE TEXT');
} else {
if (is_mysql()) {
// If 2 URLs > 255 chars have the same first 255 characters then mahara will error - this is a MySQL issue though, their unique key length limit is to blame
execute_sql('ALTER TABLE {blocktype_externalfeed_data} DROP KEY {blocextedata_url_uix}');
// We have to remove then add the constraint again else the change will make MySQL cry
execute_sql('ALTER TABLE {blocktype_externalfeed_data} MODIFY COLUMN "url" text');
execute_sql('ALTER TABLE {blocktype_externalfeed_data} add unique {blocextedata_url_uix} (url(255))');
}
}
}
if ($oldversion < 2009121600) {
if (is_mysql()) {
// Make content column wider (TEXT is only 65kb in mysql)
$table = new XMLDBTable('blocktype_externalfeed_data');
$field = new XMLDBField('content');
$field->setAttributes(XMLDB_TYPE_TEXT, "big", null, null);
change_field_precision($table, $field);
}
}
if ($oldversion < 2010073000) {
execute_sql('
UPDATE {blocktype_cron}
SET minute = ?
WHERE minute = ? AND hour = ? AND plugin = ? AND callfunction = ?', array('30', '0', '3', 'externalfeed', 'cleanup_feeds'));
}
if ($oldversion < 2011091400) {
// Add columns for HTTP basic auth
$table = new XMLDBTable('blocktype_externalfeed_data');
$field1 = new XMLDBField('authuser');
$field1->setAttributes(XMLDB_TYPE_TEXT);
$field2 = new XMLDBField('authpassword');
$field2->setAttributes(XMLDB_TYPE_TEXT);
add_field($table, $field1);
add_field($table, $field2);
// Change unique constraint that's no longer valid
$table = new XMLDBTable('blocktype_externalfeed_data');
$index = new XMLDBIndex('url_uix');
$index->setAttributes(XMLDB_INDEX_UNIQUE, array('url'));
drop_index($table, $index);
if (is_postgres()) {
$index = new XMLDBIndex('urlautautix');
$index->setAttributes(XMLDB_INDEX_NOTUNIQUE, array('url', 'authuser', 'authpassword'));
add_index($table, $index);
} else {
if (is_mysql()) {
// MySQL needs size limits when indexing text fields
execute_sql('ALTER TABLE {blocktype_externalfeed_data} ADD INDEX
{blocextedata_urlautaut_ix} (url(255), authuser(255), authpassword(255))');
}
}
}
if ($oldversion < 2011091401) {
// Add columns for insecure SSL mode
$table = new XMLDBTable('blocktype_externalfeed_data');
$field = new XMLDBField('insecuresslmode');
$field->setAttributes(XMLDB_TYPE_INTEGER, 1, null, XMLDB_NOTNULL, null, null, null, 0);
add_field($table, $field);
}
if ($oldversion < 2012090700) {
// Reset all feeds to reset themselves
set_field('blocktype_externalfeed_data', 'lastupdate', db_format_timestamp('0'));
safe_require('blocktype', 'externalfeed');
call_static_method('PluginBlocktypeExternalfeed', 'refresh_feeds');
}
if ($oldversion < 2014041500) {
log_debug('Cleaning up duplicate feeds in the externalfeed blocktype');
log_debug('1. Find the duplicate feed urls');
// Setting these to be empty strings instead of NULL will make our SQL a lot simpler in the next section
execute_sql("update {blocktype_externalfeed_data} set authuser='' where authuser is null");
execute_sql("update {blocktype_externalfeed_data} set authpassword='' where authpassword is null");
if ($duplicatefeeds = get_records_sql_array("SELECT COUNT(url), url, authuser, authpassword FROM {blocktype_externalfeed_data} GROUP BY url, authuser, authpassword HAVING COUNT(url) > 1 ORDER BY url, authuser, authpassword", array())) {
log_debug('2. Get all feed ids for the duplicated feed urls');
// Use the 1st one found to be the feed id for the block instances that need updating
$feedstoupdate = array();
foreach ($duplicatefeeds as $feed) {
$feedids = get_column('blocktype_externalfeed_data', 'id', 'url', $feed->url, 'authuser', $feed->authuser, 'authpassword', $feed->authpassword);
$feedstoupdate[$feed->url] = $feedids;
}
log_debug('3. Updating blocks to use correct feed id');
// Find the block instances using external feeds. Check to see if they are not using the 'true' id and update them accordingly
require_once get_config('docroot') . 'blocktype/lib.php';
$blockids = get_records_array('block_instance', 'blocktype', 'externalfeed', 'id ASC', 'id');
foreach ($blockids as $blockid) {
$blockinstance = new BlockInstance($blockid->id);
$configdata = $blockinstance->get('configdata');
if (!empty($configdata['feedid'])) {
foreach ($feedstoupdate as $url => $ids) {
foreach ($ids as $key => $id) {
if ($id == $configdata['feedid'] && $key != '0') {
$configdata['feedid'] = $ids[0];
$blockinstance->set('configdata', $configdata);
$blockinstance->set('dirty', true);
$blockinstance->commit();
break;
//.........这里部分代码省略.........
示例9: instance_config_form
public static function instance_config_form(BlockInstance $instance)
{
global $USER;
$configdata = $instance->get('configdata');
$types = get_records_array('activity_type', 'admin', 0, 'plugintype,pluginname,name', 'name,plugintype,pluginname');
if ($USER->get('admin')) {
$types[] = (object) array('name' => 'adminmessages');
}
$elements = array();
$elements['types'] = array('type' => 'fieldset', 'legend' => get_string('messagetypes', 'blocktype.inbox'), 'elements' => array());
foreach ($types as $type) {
if (!empty($type->plugintype)) {
$title = get_string('type' . $type->name, $type->plugintype . '.' . $type->pluginname);
} else {
$title = get_string('type' . $type->name, 'activity');
}
$elements['types']['elements'][$type->name] = array('type' => 'switchbox', 'title' => $title, 'defaultvalue' => isset($configdata[$type->name]) ? $configdata[$type->name] : 0);
}
$elements['maxitems'] = array('type' => 'text', 'title' => get_string('maxitems', 'blocktype.inbox'), 'description' => get_string('maxitemsdescription', 'blocktype.inbox'), 'defaultvalue' => isset($configdata['maxitems']) ? $configdata['maxitems'] : 5, 'rules' => array('minvalue' => 1, 'maxvalue' => 100));
return $elements;
}
示例10: get_special_notifications
/**
* Get special case activity types.
* Currently checks if a non admin is an admin/moderator of a group and
* adds that notification type to the array.
*
* @param object $user whose settings are being displayed
* @param array $activitytypes array of elements
* @return array $activitytypes amended array of elements
*/
function get_special_notifications($user, $activitytypes)
{
if (empty($user)) {
return $activitytypes;
}
// Check if the non-admin is a group admin/moderator in any of their groups
if ($user->get('grouproles') !== null) {
$groups = $user->get('grouproles');
$allowreportpost = false;
foreach ($groups as $group => $role) {
if ($role == 'admin') {
$allowreportpost = true;
break;
} else {
if ($moderator = get_record_sql("SELECT i.id\n FROM {interaction_forum_moderator} m, {interaction_instance} i\n WHERE i.id = m.forum AND i.group = ? AND i.deleted = 0 and m.user = ?", array($group, $user->get('id')))) {
$allowreportpost = true;
break;
}
}
}
if ($allowreportpost) {
// Add the reportpost option to the $activitytypes
$reportpost = get_records_array('activity_type', 'name', 'reportpost', 'id');
$activitytypes = array_merge($activitytypes, $reportpost);
}
}
return $activitytypes;
}
示例11: define
define('ADMIN', 1);
define('MENUITEM', 'configextensions/webservices');
require dirname(dirname(dirname(__FILE__))) . '/init.php';
define('TITLE', get_string('pluginadmin', 'admin'));
require_once 'pieforms/pieform.php';
$service = param_integer('service', 0);
$dbservice = get_record('external_services', 'id', $service);
if (empty($dbservice)) {
$SESSION->add_error_msg(get_string('invalidservice', 'auth.webservice'));
redirect('/webservice/admin/index.php?open=webservices_function_groups');
}
$enabled = $dbservice->enabled;
$restrictedusers = $dbservice->restrictedusers <= 0 ? 0 : 1;
$tokenusers = $dbservice->tokenusers <= 0 ? 0 : 1;
$functions = array('elements' => array('enabledname' => array('title' => ' ', 'class' => 'heading', 'type' => 'html', 'value' => get_string('enabled')), 'classname' => array('title' => ' ', 'class' => 'heading', 'type' => 'html', 'value' => get_string('classname', 'auth.webservice')), 'methodname' => array('title' => ' ', 'class' => 'heading', 'type' => 'html', 'value' => get_string('methodname', 'auth.webservice'))));
$dbfunctions = get_records_array('external_functions', null, null, 'name');
foreach ($dbfunctions as $function) {
$sfexists = record_exists('external_services_functions', 'externalserviceid', $dbservice->id, 'functionname', $function->name);
$functions['elements']['id' . $function->id . '_enabled'] = array('defaultvalue' => $sfexists ? 'checked' : '', 'type' => 'switchbox', 'disabled' => false, 'title' => $function->name);
$functions['elements']['id' . $function->id . '_class'] = array('value' => $function->classname, 'type' => 'html', 'title' => $function->name);
$functions['elements']['id' . $function->id . '_method'] = array('value' => '<a class="dialogue" href="' . get_config('wwwroot') . 'webservice/wsdoc.php?id=' . $function->id . '">' . $function->methodname . '</a>', 'type' => 'html', 'title' => $function->name);
}
$functions['elements']['submit'] = array('type' => 'submitcancel', 'value' => array(get_string('save'), get_string('back')), 'goto' => get_config('wwwroot') . 'webservice/admin/index.php?open=webservices_function_groups');
$elements = array('service' => array('type' => 'hidden', 'value' => $dbservice->id), 'webservicesmaster' => array('type' => 'fieldset', 'legend' => get_string('enableservice', 'auth.webservice'), 'elements' => array('enabled' => array('type' => 'switchbox', 'defaultvalue' => $enabled, 'on_label' => get_string('enabled'), 'off_label' => get_string('disabled'), 'wrapperclass' => 'switch-wrapper-inline', 'labelhtml' => get_string('servicename', 'auth.webservice')), 'restrictedusers' => array('type' => 'switchbox', 'defaultvalue' => $restrictedusers, 'on_label' => get_string('usersonly', 'auth.webservice'), 'off_label' => get_string('tokensonly', 'auth.webservice'), 'wrapperclass' => 'switch-wrapper-inline', 'labelhtml' => get_string('restrictedusers', 'auth.webservice')), 'tokenusers' => array('type' => 'switchbox', 'defaultvalue' => $tokenusers, 'on_label' => get_string('enabled'), 'off_label' => get_string('disabled'), 'wrapperclass' => 'switch-wrapper-inline', 'labelhtml' => get_string('fortokenusers', 'auth.webservice'))), 'collapsible' => true, 'collapsed' => false), 'functions' => array('type' => 'fieldset', 'renderer' => 'multicolumnfieldsettable', 'columns' => array('enabledname', 'classname', 'methodname'), 'legend' => get_string('servicefunctionlist', 'auth.webservice'), 'comment' => get_string('sfldescription', 'auth.webservice'), 'elements' => $functions['elements'], 'collapsible' => true, 'collapsed' => false));
$form = array('renderer' => 'table', 'type' => 'div', 'id' => 'maintable', 'elements' => $elements, 'jsform' => false);
$heading = get_string('servicegroup', 'auth.webservice', $dbservice->name);
$form['name'] = 'serviceconfig';
$form['successcallback'] = 'serviceconfig_submit';
$form = pieform($form);
$headers[] = '<link rel="stylesheet" type="text/css" href="' . $THEME->get_url('style/webservice.css', false, 'auth/webservice') . '">';
$headers[] = '<link rel="stylesheet" type="text/css" href="' . append_version_number(get_config('wwwroot') . 'js/jquery/jquery-ui/css/ui-lightness/jquery-ui-1.10.2.min.css') . '">';
示例12: foreach
foreach ($services as $service) {
$sopts[$service->id] = $service->name;
}
$token_details['elements']['institution'] = array('type' => 'select', 'title' => get_string('institution'), 'options' => $iopts, 'defaultvalue' => trim($dbtoken->institution));
$searchicon = $THEME->get_url('images/btn-search.gif', false, 'auth/webservice');
if ($USER->is_admin_for_user($dbuser->id)) {
$user_url = get_config('wwwroot') . 'admin/users/edit.php?id=' . $dbuser->id;
} else {
$user_url = get_config('wwwroot') . 'user/view.php?id=' . $dbuser->id;
}
$token_details['elements']['usersearch'] = array('type' => 'html', 'title' => get_string('username'), 'value' => '<a href="' . $user_url . '">' . $dbuser->username . '</a>');
$token_details['elements']['user'] = array('type' => 'hidden', 'value' => $dbuser->id);
$token_details['elements']['service'] = array('type' => 'select', 'title' => get_string('servicename', 'auth.webservice'), 'options' => $sopts, 'defaultvalue' => $dbtoken->externalserviceid);
$token_details['elements']['enabled'] = array('title' => get_string('enabled'), 'defaultvalue' => $dbservice->enabled == 1 ? 'checked' : '', 'type' => 'checkbox', 'disabled' => true);
$token_details['elements']['restricted'] = array('title' => get_string('restrictedusers', 'auth.webservice'), 'defaultvalue' => $dbservice->restrictedusers == 1 ? 'checked' : '', 'type' => 'checkbox', 'disabled' => true);
$functions = get_records_array('external_services_functions', 'externalserviceid', $dbtoken->externalserviceid);
$function_list = array();
if ($functions) {
foreach ($functions as $function) {
$dbfunction = get_record('external_functions', 'name', $function->functionname);
$function_list[] = '<a href="' . get_config('wwwroot') . 'webservice/wsdoc.php?id=' . $dbfunction->id . '">' . $function->functionname . '</a>';
}
}
$token_details['elements']['functions'] = array('title' => get_string('functions', 'auth.webservice'), 'value' => implode(', ', $function_list), 'type' => 'html');
$token_details['elements']['wssigenc'] = array('defaultvalue' => $dbtoken->wssigenc == 1 ? 'checked' : '', 'type' => 'checkbox', 'disabled' => false, 'title' => get_string('wssigenc', 'auth.webservice'));
$token_details['elements']['publickey'] = array('type' => 'textarea', 'title' => get_string('publickey', 'admin'), 'defaultvalue' => $dbtoken->publickey, 'rows' => 15, 'cols' => 90);
$token_details['elements']['publickeyexpires'] = array('type' => 'html', 'title' => get_string('publickeyexpires', 'admin'), 'value' => $dbtoken->publickeyexpires ? format_date($dbtoken->publickeyexpires, 'strftimedatetime', 'formatdate', 'auth.webservice') : format_date(time(), 'strftimedatetime', 'formatdate', 'auth.webservice'));
$token_details['elements']['submit'] = array('type' => 'submitcancel', 'value' => array(get_string('save'), get_string('back')), 'goto' => get_config('wwwroot') . 'webservice/admin/index.php?open=webservices_token');
$elements = array('token_details' => array('type' => 'fieldset', 'legend' => get_string('tokenid', 'auth.webservice', $dbtoken->token), 'elements' => array('sflist' => array('type' => 'html', 'value' => pieform($token_details))), 'collapsible' => false));
$form = array('renderer' => 'table', 'type' => 'div', 'id' => 'maintable', 'name' => 'tokenconfig', 'jsform' => true, 'successcallback' => 'allocate_webservice_tokens_submit', 'validatecallback' => 'allocate_webservice_tokens_validate', 'elements' => $elements);
$form = pieform($form);
示例13: save_instance_config_options
public static function save_instance_config_options($values, Pieform $form)
{
if (false === strpos($values['wwwroot'], '://')) {
$values['wwwroot'] = 'http://' . $values['wwwroot'];
}
db_begin();
$authinstance = new stdClass();
$peer = new Peer();
if ($values['instance'] > 0) {
$values['create'] = false;
$current = get_records_assoc('auth_instance_config', 'instance', $values['instance'], '', 'field, value');
$authinstance->id = $values['instance'];
} else {
$values['create'] = true;
// Get the auth instance with the highest priority number (which is
// the instance with the lowest priority).
// TODO: rethink 'priority' as a fieldname... it's backwards!!
$lastinstance = get_records_array('auth_instance', 'institution', $values['institution'], 'priority DESC', '*', '0', '1');
if ($lastinstance == false) {
$authinstance->priority = 0;
} else {
$authinstance->priority = $lastinstance[0]->priority + 1;
}
}
if (false == $peer->findByWwwroot($values['wwwroot'])) {
try {
$peer->bootstrap($values['wwwroot'], null, $values['appname'], $values['institution']);
} catch (RemoteServerException $e) {
$form->set_error('wwwroot', get_string('cantretrievekey', 'auth'));
throw new RemoteServerException($e->getMessage(), $e->getCode());
}
}
$peer->wwwroot = preg_replace("|\\/+\$|", "", $values['wwwroot']);
$peer->name = $values['name'];
$peer->deleted = $values['deleted'];
$peer->appname = $values['appname'];
$peer->institution = $values['institution'];
if (isset($values['publickey'])) {
$peer->publickey = new PublicKey($values['publickey'], $peer->wwwroot);
$peer->publickeyexpires = $peer->publickey->expires;
}
/**
* The following properties are not user-updatable
$peer->lastconnecttime = $values['lastconnecttime'];
*/
$peer->commit();
$authinstance->instancename = $values['instancename'];
$authinstance->institution = $values['institution'];
$authinstance->authname = $values['authname'];
if ($values['create']) {
$values['instance'] = insert_record('auth_instance', $authinstance, 'id', true);
} else {
update_record('auth_instance', $authinstance, array('id' => $values['instance']));
}
if (empty($current)) {
$current = array();
}
self::$default_config = array('wwwroot' => $values['wwwroot'], 'parent' => $values['parent'], 'authloginmsg' => $values['authloginmsg'], 'wessoout' => 0, 'theyssoin' => 0, 'theyautocreateusers' => 0, 'weautocreateusers' => 0, 'updateuserinfoonlogin' => 0, 'weimportcontent' => 0);
if ($values['ssodirection'] == 'wessoout') {
self::$default_config['wessoout'] = 1;
self::$default_config['theyautocreateusers'] = $values['theyautocreateusers'];
} else {
if ($values['ssodirection'] == 'theyssoin') {
self::$default_config['theyssoin'] = 1;
self::$default_config['updateuserinfoonlogin'] = $values['updateuserinfoonlogin'];
self::$default_config['weautocreateusers'] = $values['weautocreateusers'];
self::$default_config['weimportcontent'] = $values['weimportcontent'];
}
}
foreach (self::$default_config as $field => $value) {
$record = new stdClass();
$record->instance = $values['instance'];
$record->field = $field;
$record->value = $value;
if ($field == 'wwwroot') {
$record->value = dropslash($value);
}
if (empty($value)) {
delete_records('auth_instance_config', 'field', $field, 'instance', $values['instance']);
} elseif ($values['create'] || !array_key_exists($field, $current)) {
insert_record('auth_instance_config', $record);
} else {
update_record('auth_instance_config', $record, array('instance' => $values['instance'], 'field' => $field));
}
}
db_commit();
return $values;
}
示例14: init
/**
* Instantiate the plugin by pulling the config data for an instance from
* the database
*
* @param int $id The unique ID of the auth instance
* @return bool Whether the create was successful
*/
public function init($id)
{
if (!is_numeric($id) || intval($id) != $id) {
throw new UserNotFoundException();
}
$instance = get_record('auth_instance', 'id', $id);
if (empty($instance)) {
throw new UserNotFoundException();
}
$this->instanceid = $id;
$this->institution = $instance->institution;
$this->instancename = $instance->instancename;
$this->priority = $instance->priority;
$this->authname = $instance->authname;
// Return now if the plugin type doesn't require any config
// (e.g. internal)
if ($this->has_instance_config == false) {
return true;
}
$records = get_records_array('auth_instance_config', 'instance', $this->instanceid);
if ($records == false) {
return false;
}
foreach ($records as $record) {
$this->config[$record->field] = $record->value;
}
return true;
}
示例15: update_group_members
/**
* update one or more sets of group membership
*
* @param array $groups
*/
public static function update_group_members($groups)
{
global $USER, $WEBSERVICE_INSTITUTION;
// Do basic automatic PARAM checks on incoming data, using params description
$params = self::validate_parameters(self::update_group_members_parameters(), array('groups' => $groups));
db_begin();
$groupids = array();
foreach ($params['groups'] as $group) {
// Make sure that the group doesn't already exist
if (!empty($group['id'])) {
if (!($dbgroup = get_record('group', 'id', $group['id'], 'deleted', 0))) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('groupnotexist', 'auth.webservice', $group['id']));
}
} else {
if (!empty($group['name'])) {
if (!($dbgroup = get_record('group', 'name', $group['name'], 'deleted', 0))) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('groupnotexist', 'auth.webservice', $group['name']));
}
} else {
if (!empty($group['shortname'])) {
if (empty($group['institution'])) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('instmustset', 'auth.webservice', $group['shortname']));
}
if (!($dbgroup = get_record('group', 'shortname', $group['shortname'], 'institution', $group['institution'], 'deleted', 0))) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('groupnotexist', 'auth.webservice', $group['shortname'] . '/' . $group['institution']));
}
} else {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('nogroup', 'auth.webservice'));
}
}
}
// are we allowed to administer this group
if (!empty($dbgroup->institution) && $WEBSERVICE_INSTITUTION != $dbgroup->institution) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('accessdeniedforinstgroup', 'auth.webservice', $group['institution'], $group['name']));
}
if (!empty($dbgroup->institution) && !$USER->can_edit_institution($dbgroup->institution)) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('accessdeniedforinstgroup', 'auth.webservice', $group['institution'], $group['shortname']));
}
// get old members
$oldmembers = get_records_array('group_member', 'group', $dbgroup->id, '', 'member,role');
$existingmembers = array();
if (!empty($oldmembers)) {
foreach ($oldmembers as $member) {
$existingmembers[$member->member] = $member->role;
}
}
// check that the members exist and we are allowed to administer them
foreach ($group['members'] as $member) {
if (!empty($member['id'])) {
$dbuser = get_record('usr', 'id', $member['id'], 'deleted', 0);
} else {
if (!empty($member['username'])) {
$dbuser = get_record('usr', 'username', $member['username'], 'deleted', 0);
} else {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('nousernameoridgroup', 'auth.webservice', $group['name']));
}
}
if (empty($dbuser)) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('invalidusergroup', 'auth.webservice', $member['id'] . '/' . $member['username'], $group['name']));
}
// check user is in this institution if this is an institution controlled group
if (!empty($dbgroup->shortname) && !empty($dbgroup->institution)) {
if (!mahara_external_in_institution($dbuser, $WEBSERVICE_INSTITUTION)) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('notauthforuseridinstitutiongroup', 'auth.webservice', $dbuser->id, $WEBSERVICE_INSTITUTION, $group['shortname']));
}
} else {
// Make sure auth is valid
if (!($authinstance = get_record('auth_instance', 'id', $dbuser->authinstance))) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('invalidauthtype', 'auth.webservice', $dbuser->authinstance));
}
// check the institution is allowed
// basic check authorisation to edit for the current institution of the user
if (!$USER->can_edit_institution($authinstance->institution)) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('accessdeniedforinstuser', 'auth.webservice', $authinstance->institution, $dbuser->username));
}
}
// determine the changes to the group membership
if ($member['action'] == 'remove') {
if (isset($existingmembers[$dbuser->id])) {
unset($existingmembers[$dbuser->id]);
}
// silently fail
} else {
if ($member['action'] == 'add') {
// check the specified role
if (!in_array($member['role'], self::$member_roles)) {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('invalidmemroles', 'auth.webservice', $member['role'], $dbuser->username));
}
$existingmembers[$dbuser->id] = $member['role'];
// silently fail
} else {
throw new WebserviceInvalidParameterException('update_group_members | ' . get_string('membersinvalidaction', 'auth.webservice', $member['action'], $dbuser->id . '/' . $dbuser->username, $group['name']));
}
}
}
//.........这里部分代码省略.........