: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
use WPML\Collect\Support\Collection;
* @param string $optionName
public function __construct( $optionName, $pageSize = 10 ) {
$this->optionName = $optionName;
$this->pageSize = $pageSize;
* @param Collection $collection
* @param callable $callback
public function iterate( Collection $collection, callable $callback, $timeout = PHP_INT_MAX ) {
$processedItems = $this->getProcessedCount();
$this->getItemsToProcess( $collection, $processedItems )->eachWithTimeout( function ( $item ) use (
return $callback( $item ) && ++ $processedItems;
$remainingPages = $this->getRemainingPages( $collection, $processedItems );
\update_option( $this->optionName, $processedItems );
\delete_option( $this->optionName );
private function getItemsToProcess( Collection $collection, $processedItems ) {
return $collection->slice( $processedItems, $this->pageSize );
* @param Collection $collection
public function getPagesCount( Collection $collection ) {
return (int) ceil( $collection->count() / $this->pageSize );
* @param \WPML\Collect\Support\Collection $collection
protected function getRemainingPages( Collection $collection, $processedItems ) {
return (int) ceil( $collection->slice( $processedItems )->count() / $this->pageSize );
public function getProcessedCount() {
return get_option( $this->optionName, 0 );