Moved function to Arrays.php

This commit is contained in:
Michael 2021-11-08 22:10:07 +00:00
parent fbde999d0d
commit a66bb09b40
3 changed files with 39 additions and 37 deletions

View file

@ -29,6 +29,7 @@ use Friendica\Model\Post;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Security\BasicAuth; use Friendica\Security\BasicAuth;
use Friendica\Security\OAuth; use Friendica\Security\OAuth;
use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\HTTPInputData; use Friendica\Util\HTTPInputData;
use Friendica\Util\XML; use Friendica\Util\XML;
@ -384,34 +385,6 @@ class BaseApi extends BaseModule
return $return; return $return;
} }
/**
* walks recursively through an array with the possibility to change value and key
*
* @param array $array The array to walk through
* @param callable $callback The callback function
*
* @return array the transformed array
*/
static public function walkRecursive(array &$array, callable $callback)
{
$new_array = [];
foreach ($array as $k => $v) {
if (is_array($v)) {
if ($callback($v, $k)) {
$new_array[$k] = self::walkRecursive($v, $callback);
}
} else {
if ($callback($v, $k)) {
$new_array[$k] = $v;
}
}
}
$array = $new_array;
return $array;
}
/** /**
* Formats the data according to the data type * Formats the data according to the data type
* *
@ -484,7 +457,7 @@ class BaseApi extends BaseModule
if (is_array($data2)) { if (is_array($data2)) {
$key = key($data2); $key = key($data2);
self::walkRecursive($data2, ['Friendica\Module\BaseApi', 'reformatXML']); Arrays::walkRecursive($data2, ['Friendica\Module\BaseApi', 'reformatXML']);
if ($key == '0') { if ($key == '0') {
$data4 = []; $data4 = [];

View file

@ -62,4 +62,32 @@ class Arrays
// Return it // Return it
return $string; return $string;
} }
/**
* walks recursively through an array with the possibility to change value and key
*
* @param array $array The array to walk through
* @param callable $callback The callback function
*
* @return array the transformed array
*/
static public function walkRecursive(array &$array, callable $callback)
{
$new_array = [];
foreach ($array as $k => $v) {
if (is_array($v)) {
if ($callback($v, $k)) {
$new_array[$k] = self::walkRecursive($v, $callback);
}
} else {
if ($callback($v, $k)) {
$new_array[$k] = $v;
}
}
}
$array = $new_array;
return $array;
}
} }

View file

@ -14,6 +14,7 @@ use Friendica\Module\BaseApi;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Security\BasicAuth; use Friendica\Security\BasicAuth;
use Friendica\Test\FixtureTest; use Friendica\Test\FixtureTest;
use Friendica\Util\Arrays;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal; use Friendica\Util\Temporal;
use Monolog\Handler\TestHandler; use Monolog\Handler\TestHandler;
@ -998,7 +999,7 @@ class ApiTest extends FixtureTest
} }
/** /**
* Test the BaseApi::walkRecursive() function. * Test the Arrays::walkRecursive() function.
* *
* @return void * @return void
*/ */
@ -1007,7 +1008,7 @@ class ApiTest extends FixtureTest
$array = ['item1']; $array = ['item1'];
self::assertEquals( self::assertEquals(
$array, $array,
BaseApi::walkRecursive( Arrays::walkRecursive(
$array, $array,
function () { function () {
// Should we test this with a callback that actually does something? // Should we test this with a callback that actually does something?
@ -1018,7 +1019,7 @@ class ApiTest extends FixtureTest
} }
/** /**
* Test the BaseApi::walkRecursive() function with an array. * Test the Arrays::walkRecursive() function with an array.
* *
* @return void * @return void
*/ */
@ -1027,7 +1028,7 @@ class ApiTest extends FixtureTest
$array = [['item1'], ['item2']]; $array = [['item1'], ['item2']];
self::assertEquals( self::assertEquals(
$array, $array,
BaseApi::walkRecursive( Arrays::walkRecursive(
$array, $array,
function () { function () {
// Should we test this with a callback that actually does something? // Should we test this with a callback that actually does something?
@ -2549,8 +2550,8 @@ class ApiTest extends FixtureTest
public function testApiHelpTest() public function testApiHelpTest()
{ {
// @todo How to test the new API? // @todo How to test the new API?
// $result = api_help_test('json'); $result = \Friendica\Module\Api\Friendica\Help\Test::rawcontent(['extension' => 'xml']);
// self::assertEquals(['ok' => 'ok'], $result); self::assertEquals(['ok' => 'ok'], $result);
} }
/** /**