Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
give
/
src
/
Campaigns
/
DataTransferObjects
:
ArchiveCampaignFormsAsDraftStatus.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Give\Campaigns\Actions; use Give\Campaigns\Models\Campaign; use Give\Framework\Database\DB; use Give\Framework\QueryBuilder\JoinQueryBuilder; /** * When a Campaign is archived, set all Forms to Draft Status * * @since 4.0.0 */ class ArchiveCampaignFormsAsDraftStatus { /** * TODO: update this to use single update query (QB was not working with whereIn and update) * @since 4.0.0 */ public function __invoke(Campaign $campaign) { if (!$campaign->status->isArchived()) { return; } $query = DB::table('posts') ->where('post_type', 'give_forms') ->where('post_status', 'publish') ->join(function (JoinQueryBuilder $builder) { $builder ->leftJoin("give_campaign_forms", "campaign_forms") ->on("campaign_forms.form_id", "id"); }) ->where("campaign_forms.campaign_id", $campaign->id) ->getAll(); $ids = array_values(array_column($query, 'ID')); foreach ($ids as $id) { DB::table('posts') ->where('ID', $id) ->update( ['post_status' => 'draft'] ); } } }