Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4101119
generateRandomSandboxData.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
generateRandomSandboxData.php
View Options
<?php
/**
* Script to generate some random data to help testing sandbox.
*
* @author Niklas Laxström
* @license GPL-2.0-or-later
* @file
*/
use
MediaWiki\Extension\Translate\Services
;
use
MediaWiki\Extension\Translate\TranslatorSandbox\StashedTranslation
;
use
MediaWiki\Extension\Translate\TranslatorSandbox\TranslationStashStorage
;
use
MediaWiki\Maintenance\Maintenance
;
use
MediaWiki\Title\Title
;
// Standard boilerplate to define $IP
if
(
getenv
(
'MW_INSTALL_PATH'
)
!==
false
)
{
$IP
=
getenv
(
'MW_INSTALL_PATH'
);
}
else
{
$dir
=
__DIR__
;
$IP
=
"$dir/../../.."
;
}
require_once
"$IP/maintenance/Maintenance.php"
;
class
TranslateGenerateRandomSandboxData
extends
Maintenance
{
public
function
execute
()
{
$users
=
10
;
// For number of translations, limited to [0,20]
$mean
=
15
;
$stddev
=
20
;
$stash
=
new
TranslationStashStorage
(
$this
->
getDB
(
DB_PRIMARY
)
);
$languages
=
array_keys
(
$this
->
getServiceContainer
()->
getLanguageNameUtils
()->
getLanguageNames
()
);
$translateSandbox
=
Services
::
getInstance
()->
getTranslateSandbox
();
for
(
$i
=
0
;
$i
<
$users
;
$i
++
)
{
$username
=
'Pupu'
.
wfRandomString
(
6
);
$password
=
wfRandomString
(
12
);
$email
=
"$username.$password@blackhole.io"
;
$user
=
$translateSandbox
->
addUser
(
$username
,
$password
,
$email
);
$language
=
$languages
[
rand
(
0
,
count
(
$languages
)
-
1
)];
$count
=
wfGaussMs
(
$mean
,
$stddev
);
$count
=
min
(
20
,
$count
);
$count
=
max
(
0
,
$count
);
for
(
$j
=
0
;
$j
<
$count
;
$j
++
)
{
$title
=
Title
::
makeTitle
(
NS_MEDIAWIKI
,
wfRandomString
(
24
)
.
'/'
.
$language
);
$value
=
[
'Pupu söi'
];
for
(
$k
=
rand
(
0
,
20
);
$k
>
0
;
$k
--
)
{
$value
[]
=
wfRandomString
(
rand
(
1
,
28
)
);
}
$value
=
implode
(
"
\n
"
,
$value
);
$translation
=
new
StashedTranslation
(
$user
,
$title
,
$value
);
$stash
->
addTranslation
(
$translation
);
}
}
}
}
/*
* Gauss functions are based on Mark Baker's code from
* https://stackoverflow.com/questions/5188900/bell-curve-algorithm-with-php
*/
function
wfGauss
():
float
{
static
$useExists
=
false
;
static
$useValue
;
if
(
$useExists
)
{
// Use value from a previous call to this function
$useExists
=
false
;
return
$useValue
;
}
else
{
// Polar form of the Box-Muller transformation
$w
=
2.0
;
while
(
(
$w
>=
1.0
)
||
(
$w
==
0.0
)
)
{
$x
=
wfRandomPn
();
$y
=
wfRandomPn
();
$w
=
(
$x
*
$x
)
+
(
$y
*
$y
);
}
$w
=
sqrt
(
(
-
2.0
*
log
(
$w
)
)
/
$w
);
// Set value for next call to this function
$useValue
=
$y
*
$w
;
$useExists
=
true
;
return
$x
*
$w
;
}
}
function
wfGaussMs
(
int
$mean
,
int
$stddev
):
int
{
// Adjust our gaussian random to fit the mean and standard deviation.
// The division by 4 is an arbitrary value to help fit the distribution
// within our required range, and gives a best fit for $stddev = 1.0.
return
wfGauss
()
*
(
$stddev
/
4
)
+
$mean
;
}
function
wfRandom01
():
float
{
// Returns random number using mt_rand() with a flat distribution from 0 to 1 inclusive
return
(
float
)
mt_rand
()
/
(
float
)
mt_getrandmax
();
}
function
wfRandomPn
():
float
{
// Returns random number using mt_rand() with a flat distribution from -1 to 1 inclusive
return
(
2.0
*
wfRandom01
()
)
-
1.0
;
}
$maintClass
=
TranslateGenerateRandomSandboxData
::
class
;
require_once
RUN_MAINTENANCE_IF_MAIN
;
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 16:48 (3 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
ef/d1/7fb772afa06fc8e77bac7114825c
Default Alt Text
generateRandomSandboxData.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment