get( 'pairs' ) ) ->filter( pipe( Obj::prop( 'to' ), Lst::length() ) ) ->mapWithKeys( function ( $pair ) { return [ $pair['from'] => $pair['to'] ]; } ) ->toArray(); // $setRole :: WP_User -> WP_User $setRole = Fns::tap( invoke( 'add_cap' )->with( \WPML_Translator_Role::CAPABILITY ) ); // $storePairs :: int -> int $storePairs = Fns::tap( partialRight( [ make( \WPML_Language_Pair_Records::class ), 'store' ], $pairs ) ); return self::getUser( $data ) ->map( $setRole ) ->map( Obj::prop( 'ID' ) ) ->map( $storePairs ) ->map( function( $user ) { do_action( 'wpml_update_translator' ); return $user; } ) ->map( Fns::always( true ) ); } }