$c['factory.loader.workflow'] = function ($c) {
    global $wgFlowDefaultWorkflow;
    return new Flow\WorkflowLoaderFactory($c['storage'], $c['factory.block'], $c['submission_handler'], $wgFlowDefaultWorkflow);
};
// Initialized in FlowHooks to facilitate only loading the flow container
// when flow is specifically requested to run. Extension initialization
// must always happen before calling flow code.
$c['occupation_controller'] = FlowHooks::getOccupationController();
$c['controller.notification'] = function ($c) {
    global $wgContLang;
    return new Flow\NotificationController($wgContLang);
};
// Initialized in FlowHooks to faciliate only loading the flow container
// when flow is specifically requested to run. Extension initialization
// must always happen before calling flow code.
$c['controller.abusefilter'] = FlowHooks::getAbuseFilter();
$c['controller.spamregex'] = function ($c) {
    return new Flow\SpamFilter\SpamRegex();
};
$c['controller.spamblacklist'] = function ($c) {
    return new Flow\SpamFilter\SpamBlacklist();
};
$c['controller.confirmedit'] = function ($c) {
    return new Flow\SpamFilter\ConfirmEdit();
};
$c['controller.contentlength'] = function ($c) {
    global $wgMaxArticleSize;
    // wgMaxArticleSize is in kilobytes,
    // whereas this really is characters (it uses
    // mb_strlen), so it's not the exact same limit.
    $maxCharCount = $wgMaxArticleSize * 1024;