get_users_with_languages( $sourceLanguage, [ $lang ] ); return count( $translators ) ? $translators[0] : User::getCurrent(); }; $translators = wpml_collect( $targetLanguages ) ->map( $getTranslator ) ->map( Obj::prop( 'ID') ); return Lst::zipObj( $targetLanguages, $translators->toArray() ); } private static function getElements( Messages $messages, $data, $targetLanguages ) { $getElementsToTranslate = pipe( Fns::filter( Obj::prop( 'checked' ) ), Lst::keyBy( 'checked' ) ); $elementsIds = $getElementsToTranslate( $data ); list( $elementsToTranslation, $ignoredElementsMessages ) = static::filterElements( $messages, $elementsIds, $targetLanguages ); $messages->showForPosts( $ignoredElementsMessages, 'information' ); return array_filter( $elementsToTranslation, pipe( Obj::prop( 'target_languages' ), Lst::length() ) ); } /** * @param int $elementId * @param string $elementType * @param string $language * * @return bool */ protected static function hasInProgressJob( $elementId, $elementType, $language ) { $job = Jobs::getElementJob( $elementId, $elementType, $language ); return $job && ICL_TM_IN_PROGRESS === (int) $job->status && ! $job->needs_update; } /** * @param Messages $messages * @param array $elementsData * @param array $targetLanguages * * phpcs:disable Squiz.Commenting.FunctionComment.InvalidNoReturn * @return array * @throws Exception Throws an exception if the method is not properly extended. */ protected static function filterElements( Messages $messages, $elementsData, $targetLanguages ) { throw new Exception( ' this method is mandatory' ); } }