mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
Merge branch 'wip-MDL-31789-master' of git://github.com/marinaglancy/moodle
This commit is contained in:
commit
82d5042a73
@ -4541,7 +4541,7 @@ function role_change_permission($roleid, $context, $capname, $permission) {
|
|||||||
* @property-read string $path path to context, starts with system context
|
* @property-read string $path path to context, starts with system context
|
||||||
* @property-read int $depth
|
* @property-read int $depth
|
||||||
*/
|
*/
|
||||||
abstract class context extends stdClass {
|
abstract class context extends stdClass implements IteratorAggregate {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The context id
|
* The context id
|
||||||
@ -4787,6 +4787,25 @@ abstract class context extends stdClass {
|
|||||||
debugging('Can not unset context instance properties!');
|
debugging('Can not unset context instance properties!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ====== implementing method from interface IteratorAggregate ======
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an iterator because magic vars can't be seen by 'foreach'.
|
||||||
|
*
|
||||||
|
* Now we can convert context object to array using convert_to_array(),
|
||||||
|
* and feed it properly to json_encode().
|
||||||
|
*/
|
||||||
|
public function getIterator() {
|
||||||
|
$ret = array(
|
||||||
|
'id' => $this->id,
|
||||||
|
'contextlevel' => $this->contextlevel,
|
||||||
|
'instanceid' => $this->instanceid,
|
||||||
|
'path' => $this->path,
|
||||||
|
'depth' => $this->depth
|
||||||
|
);
|
||||||
|
return new ArrayIterator($ret);
|
||||||
|
}
|
||||||
|
|
||||||
// ====== general context methods ======
|
// ====== general context methods ======
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10206,6 +10206,40 @@ function object_property_exists( $obj, $property ) {
|
|||||||
return array_key_exists( $property, $properties );
|
return array_key_exists( $property, $properties );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts an object into an associative array
|
||||||
|
*
|
||||||
|
* This function converts an object into an associative array by iterating
|
||||||
|
* over its public properties. Because this function uses the foreach
|
||||||
|
* construct, Iterators are respected. It works recursively on arrays of objects.
|
||||||
|
* Arrays and simple values are returned as is.
|
||||||
|
*
|
||||||
|
* If class has magic properties, it can implement IteratorAggregate
|
||||||
|
* and return all available properties in getIterator()
|
||||||
|
*
|
||||||
|
* @param mixed $var
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function convert_to_array($var) {
|
||||||
|
$result = array();
|
||||||
|
$references = array();
|
||||||
|
|
||||||
|
// loop over elements/properties
|
||||||
|
foreach ($var as $key => $value) {
|
||||||
|
// recursively convert objects
|
||||||
|
if (is_object($value) || is_array($value)) {
|
||||||
|
// but prevent cycles
|
||||||
|
if (!in_array($value, $references)) {
|
||||||
|
$result[$key] = convert_to_array($value);
|
||||||
|
$references[] = $value;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// simple values are untouched
|
||||||
|
$result[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Detect a custom script replacement in the data directory that will
|
* Detect a custom script replacement in the data directory that will
|
||||||
|
@ -1704,7 +1704,7 @@ class js_writer {
|
|||||||
*/
|
*/
|
||||||
public static function function_call($function, array $arguments = null, $delay=0) {
|
public static function function_call($function, array $arguments = null, $delay=0) {
|
||||||
if ($arguments) {
|
if ($arguments) {
|
||||||
$arguments = array_map('json_encode', $arguments);
|
$arguments = array_map('json_encode', convert_to_array($arguments));
|
||||||
$arguments = implode(', ', $arguments);
|
$arguments = implode(', ', $arguments);
|
||||||
} else {
|
} else {
|
||||||
$arguments = '';
|
$arguments = '';
|
||||||
@ -1727,7 +1727,7 @@ class js_writer {
|
|||||||
*/
|
*/
|
||||||
public static function function_call_with_Y($function, array $extraarguments = null) {
|
public static function function_call_with_Y($function, array $extraarguments = null) {
|
||||||
if ($extraarguments) {
|
if ($extraarguments) {
|
||||||
$extraarguments = array_map('json_encode', $extraarguments);
|
$extraarguments = array_map('json_encode', convert_to_array($extraarguments));
|
||||||
$arguments = 'Y, ' . implode(', ', $extraarguments);
|
$arguments = 'Y, ' . implode(', ', $extraarguments);
|
||||||
} else {
|
} else {
|
||||||
$arguments = 'Y';
|
$arguments = 'Y';
|
||||||
@ -1747,7 +1747,7 @@ class js_writer {
|
|||||||
*/
|
*/
|
||||||
public static function object_init($var, $class, array $arguments = null, array $requirements = null, $delay=0) {
|
public static function object_init($var, $class, array $arguments = null, array $requirements = null, $delay=0) {
|
||||||
if (is_array($arguments)) {
|
if (is_array($arguments)) {
|
||||||
$arguments = array_map('json_encode', $arguments);
|
$arguments = array_map('json_encode', convert_to_array($arguments));
|
||||||
$arguments = implode(', ', $arguments);
|
$arguments = implode(', ', $arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -756,7 +756,7 @@ class page_requirements_manager {
|
|||||||
// Set Y's config.gallery to the version
|
// Set Y's config.gallery to the version
|
||||||
$jscode = 'Y.config.gallery='.json_encode($galleryversion).';';
|
$jscode = 'Y.config.gallery='.json_encode($galleryversion).';';
|
||||||
}
|
}
|
||||||
$jscode .= 'Y.use('.join(',', array_map('json_encode', $modules)).',function() {'.js_writer::function_call($function, $arguments).'});';
|
$jscode .= 'Y.use('.join(',', array_map('json_encode', convert_to_array($modules))).',function() {'.js_writer::function_call($function, $arguments).'});';
|
||||||
if ($ondomready) {
|
if ($ondomready) {
|
||||||
$jscode = "Y.on('domready', function() { $jscode });";
|
$jscode = "Y.on('domready', function() { $jscode });";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user