PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.14.2
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Campaigns / Actions / DuplicateCampaign.php
give / src / Campaigns / Actions Last commit date
AddCampaignFormFromRequest.php 1 year ago AddNewBadgeToAdminMenuItem.php 1 year ago AllowGiveRolesToEditCampaignPages.php 5 months ago ArchiveCampaignFormsAsDraftStatus.php 1 year ago ArchiveCampaignPagesAsDraftStatus.php 1 year ago AssignDuplicatedFormToCampaign.php 1 year ago AssociateCampaignPageWithCampaign.php 1 year ago CacheCampaignData.php 7 months ago ConvertQueryDataToCampaign.php 1 year ago CreateCampaignPage.php 1 year ago CreateDefaultCampaignForm.php 4 months ago CreateDefaultLayoutForCampaignPage.php 1 year ago DuplicateCampaign.php 7 months ago EnqueueCampaignPageEditorAssets.php 1 year ago FormInheritsCampaignGoal.php 1 year ago LoadCampaignAdminOptions.php 11 months ago LoadCampaignDetailsAssets.php 1 year ago LoadCampaignPublicOptions.php 11 months ago LoadCampaignsListTableAssets.php 11 months ago PreventDeleteDefaultForm.php 1 year ago RedirectLegacyCreateFormToCreateCampaign.php 4 months ago RegisterCampaignBlocks.php 6 months ago RegisterCampaignIdRestField.php 1 year ago RegisterCampaignShortcodes.php 10 months ago RenderDonateButton.php 9 months ago ReplaceGiveFormsCptLabels.php 1 year ago UnarchiveCampaignFormAsPublishStatus.php 1 year ago
DuplicateCampaign.php
86 lines
1 <?php
2
3 namespace Give\Campaigns\Actions;
4
5 use Give\Campaigns\Models\Campaign;
6 use Give\Campaigns\Models\CampaignPage;
7 use Give\Campaigns\Repositories\CampaignRepository;
8 use Give\Campaigns\ValueObjects\CampaignPageStatus;
9 use Give_Form_Duplicator;
10
11 class DuplicateCampaign
12 {
13 /**
14 * Duplicate a campaign
15 *
16 * @since 4.13.1
17 */
18 public function __invoke(Campaign $campaign): Campaign
19 {
20 require_once(GIVE_PLUGIN_DIR . '/includes/admin/forms/class-give-form-duplicator.php');
21
22 $forms = $campaign->forms();
23 $campaignRepository = give(CampaignRepository::class);
24
25 $campaign->id = null;
26 $campaign->title = sprintf(__('%s (copy)', 'give'), $campaign->title);
27 $campaign->save();
28
29 foreach ($forms->getAll() as $form) {
30 if (! $post = get_post($form->id)) {
31 continue;
32 }
33
34 $isDefaultForm = $campaign->defaultFormId === $form->id;
35
36 $newFormId = wp_insert_post([
37 'comment_status' => $post->comment_status,
38 'ping_status' => $post->ping_status,
39 'post_author' => get_current_user_id(),
40 'post_content' => $post->post_content,
41 'post_date_gmt' => current_time('mysql', true),
42 'post_excerpt' => $post->post_excerpt,
43 'post_name' => $post->post_name,
44 'post_parent' => $post->post_parent,
45 'post_password' => $post->post_password,
46 'post_status' => $isDefaultForm ? 'publish' : 'draft',
47 'post_title' => $post->post_title,
48 'post_type' => $post->post_type,
49 'to_ping' => $post->to_ping,
50 'menu_order' => $post->menu_order,
51 ]);
52
53 Give_Form_Duplicator::duplicate_taxonomies($newFormId, $post);
54 Give_Form_Duplicator::duplicate_meta_data($newFormId, $post);
55 Give_Form_Duplicator::reset_stats($newFormId);
56
57 if ($isDefaultForm) {
58 $campaign->defaultFormId = $newFormId;
59 }
60
61 $campaignRepository->addCampaignForm($campaign, $newFormId, $isDefaultForm);
62 }
63
64 if ($campaignPage = CampaignPage::find($campaign->pageId)) {
65 $campaignPage->id = null;
66 $campaignPage->status = CampaignPageStatus::DRAFT();
67 $campaignPage->campaignId = $campaign->id;
68
69 // update campaign id attribute
70 $campaignPage->content = preg_replace(
71 '/"campaignId":(\d+)/',
72 '"campaignId":' . $campaign->id,
73 $campaignPage->content
74 );
75
76 $campaignPage->save();
77
78 $campaign->pageId = $campaignPage->id;
79 }
80
81 $campaign->save();
82
83 return $campaign;
84 }
85 }
86