remove_cap('picsart_generate');} // Published attachments and product videos belong to the merchant and are preserved. $picsart_keys=get_option('_picsart_receipt_inventory',[]); foreach (array_keys(is_array($picsart_keys)?$picsart_keys:[]) as $picsart_key) if (str_starts_with($picsart_key,'_ppv_') || str_starts_with($picsart_key,'_picsart_commerce_') || str_starts_with($picsart_key,'_picsart_mail_')) delete_option($picsart_key); delete_option('_picsart_receipt_inventory'); delete_option('_picsart_receipt_inventory_lock'); wp_unschedule_hook('picsart_expire_nonce'); do { $picsart_inventory=get_posts(['post_type'=>'picsart_receipt','post_status'=>'any','numberposts'=>100]); foreach ($picsart_inventory as $picsart_item) { $picsart_key=$picsart_item->post_title; if (str_starts_with($picsart_key,'_ppv_') || str_starts_with($picsart_key,'_picsart_commerce_') || str_starts_with($picsart_key,'_picsart_mail_')) delete_option($picsart_key); wp_delete_post($picsart_item->ID,true); } } while (count($picsart_inventory)===100); delete_option('_picsart_brand_defaults'); foreach (['_picsart_model_catalog_v3','_picsart_model_catalog_v3_attempt','_picsart_model_catalog_v3_lock','_picsart_model_catalog_v2','_picsart_model_catalog_v2_attempt','_picsart_model_catalog_v2_lock'] as $picsart_catalog_key) delete_option($picsart_catalog_key); // Remove the private provenance index, preserving merchant attachments and metadata. register_taxonomy('picsart_origin','attachment',['public'=>false]); $picsart_origin_terms=get_terms(['taxonomy'=>'picsart_origin','hide_empty'=>false,'fields'=>'ids']); if (!is_wp_error($picsart_origin_terms)) foreach ($picsart_origin_terms as $picsart_origin_term) wp_delete_term($picsart_origin_term,'picsart_origin'); foreach (['picsart_origin_index_done','picsart_origin_index_page','picsart_origin_index_after','picsart_media_origin_done','picsart_media_origin_page','picsart_media_origin_v2_done','picsart_media_origin_after'] as $picsart_origin_option) delete_option($picsart_origin_option); delete_option('_picsart_shop_manager_initialized'); // Remove per-user encrypted runtime state even when a WordPress user has already been deleted. global $wpdb; do { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- Bounded uninstall-only enumeration by plugin-owned option prefix; delete_option clears caches. $picsart_runtime_keys = $wpdb->get_col($wpdb->prepare("SELECT option_name FROM %i WHERE option_name LIKE %s LIMIT 100", $wpdb->options, $wpdb->esc_like('_picsart_runtime_') . '%')); foreach ($picsart_runtime_keys as $picsart_runtime_key) delete_option($picsart_runtime_key); } while (count($picsart_runtime_keys) === 100); foreach (['picsart_runtime_oauth_discovery','picsart_runtime_jwks'] as $picsart_transient) delete_transient($picsart_transient); wp_unschedule_hook('picsart_runtime_poll'); wp_unschedule_hook('picsart_import_metadata'); foreach (['administrator','shop_manager'] as $picsart_role_name) delete_option('_picsart_role_initialized_' . $picsart_role_name); } if (is_multisite()) { $picsart_offset = 0; do { $picsart_sites = get_sites(['fields'=>'ids','number'=>100,'offset'=>$picsart_offset]); foreach ($picsart_sites as $picsart_site_id) { switch_to_blog($picsart_site_id); try { picsart_uninstall_site(); } finally { restore_current_blog(); } } $picsart_offset += count($picsart_sites); } while (count($picsart_sites) === 100); } else { picsart_uninstall_site(); } delete_metadata('user',0,'_picsart_preferences','',true); delete_metadata('user',0,'_picsart_email_preferences','',true);