public static function execute( $params ) { // Set Gdrive client $gdrive = new ServMaskGdriveClient( get_option( 'ai1wmge_gdrive_token' ), get_option( 'ai1wmge_gdrive_ssl', true ) ); $backup_folder = $gdrive->listFolder( ai1wm_archive_folder() ); if ( isset( $backup_folder['items'] ) && ( $item = array_shift( $backup_folder['items'] ) ) ) { $backup_folder = $item; } else { return $params; } $files = $gdrive->listFolder( null, $backup_folder['id'], array( 'orderBy' => 'createdDate', ) ); $backups = array(); foreach ( $files['items'] as $backup ) { if ( $backup['kind'] === 'drive#file' ) { $backups[] = $backup; } } // Skip calculations if there are no backups to delete if ( count( $backups ) === 0 ) { return $params; } // Number of backups if ( ( $backups_limit = get_option( 'ai1wmge_gdrive_backups', 0 ) ) ) { if ( ( $backups_to_remove = count( $backups ) - $backups_limit ) > 0 ) { for ( $index = 0; $index < $backups_to_remove; $index++ ) { $gdrive->delete( $backups[$index]['id'] ); } } } // Sort backups by date desc $backups = array_reverse( $backups ); // Get the size of the latest backup before we remove it $size_of_backups = $backups[0]['fileSize']; // Remove the latest backup, the user should have at least one backup array_shift( $backups ); if ( ( $retention_size = ai1wm_parse_size( get_option( 'ai1wmge_gdrive_total', 0 ) ) ) ) { foreach ( $backups as $backup ) { $size_of_backups += $backup['fileSize']; if ( $size_of_backups > $retention_size ) { $gdrive->delete( $backup['id'] ); } } } return $params; }