Merge branch 'dev' into main
This commit is contained in:
commit
2590614b4d
7 changed files with 91 additions and 37 deletions
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
use CRM_TwingleCampaign_Utils_ExtensionCache as ExtensionCache;
|
use CRM_TwingleCampaign_Utils_ExtensionCache as ExtensionCache;
|
||||||
use CRM_TwingleCampaign_ExtensionUtil as E;
|
use CRM_TwingleCampaign_ExtensionUtil as E;
|
||||||
|
use CRM_TwingleCampaign_Exceptions_TwingleCampaignException as TwingleCampaignException;
|
||||||
|
|
||||||
class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
|
|
||||||
|
@ -23,6 +24,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
* @param array $values
|
* @param array $values
|
||||||
*
|
*
|
||||||
* @throws \CiviCRM_API3_Exception
|
* @throws \CiviCRM_API3_Exception
|
||||||
|
* @throws \CRM_TwingleCampaign_Exceptions_TwingleCampaignException
|
||||||
*/
|
*/
|
||||||
public function __construct(array $values = []) {
|
public function __construct(array $values = []) {
|
||||||
|
|
||||||
|
@ -30,15 +32,30 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
$this->id = $values['id'] ?? NULL;
|
$this->id = $values['id'] ?? NULL;
|
||||||
$this->values['campaign_type_id'] = 'twingle_campaign';
|
$this->values['campaign_type_id'] = 'twingle_campaign';
|
||||||
|
|
||||||
|
// If there is already an ID for this TwingleProject, get its values from
|
||||||
|
// the database
|
||||||
if ($this->id != NULL) {
|
if ($this->id != NULL) {
|
||||||
$this->fetch($this->id);
|
$this->fetch($this->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update the campaign values
|
||||||
$this->update($values);
|
$this->update($values);
|
||||||
|
|
||||||
|
// Get the parent TwingleProject
|
||||||
|
// (it doesn't matter how many levels above in the campaign tree it is)
|
||||||
$this->getParentProject();
|
$this->getParentProject();
|
||||||
if (!isset($this->values['cid'])) {
|
|
||||||
|
// If this is a new TwingleCampaign or if it is a cloned TwingleCampaign,
|
||||||
|
// calculate a cid
|
||||||
|
if (
|
||||||
|
!isset($this->values['cid']) ||
|
||||||
|
(isset($values['clone']) && $values['clone'])
|
||||||
|
) {
|
||||||
$this->createCid();
|
$this->createCid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create an url from the parent TwingleProject url and the cid of this
|
||||||
|
// TwingleCampaign
|
||||||
$this->createUrl();
|
$this->createUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +103,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
* deleted.
|
* deleted.
|
||||||
*
|
*
|
||||||
* @throws \CiviCRM_API3_Exception
|
* @throws \CiviCRM_API3_Exception
|
||||||
|
* @throws \CRM_TwingleCampaign_Exceptions_TwingleCampaignException
|
||||||
*/
|
*/
|
||||||
private function getParentProject(): void {
|
private function getParentProject(): void {
|
||||||
|
|
||||||
|
@ -96,8 +114,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
|
|
||||||
// Determine the parent project id by looping through the campaign tree
|
// Determine the parent project id by looping through the campaign tree
|
||||||
// until the parent campaign type is a TwingleProject
|
// until the parent campaign type is a TwingleProject
|
||||||
$parent_id = $this->values['parent_id'];
|
$parent_id = $this->values['parent_id'] ?? civicrm_api3(
|
||||||
$parent_id = $parent_id ?? civicrm_api3(
|
|
||||||
'TwingleCampaign',
|
'TwingleCampaign',
|
||||||
'getsingle',
|
'getsingle',
|
||||||
['id' => $this->id]
|
['id' => $this->id]
|
||||||
|
@ -117,7 +134,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent_campaign_type_id = $parent_campaign['campaign_type_id'];
|
$parent_campaign_type_id = $parent_campaign['campaign_type_id'];
|
||||||
if (isset($parent_campaign['parent_id'])) {
|
if ($parent_campaign_type_id != $twingle_project_campaign_type_id && isset($parent_campaign['parent_id'])) {
|
||||||
$parent_id = $parent_campaign['parent_id'];
|
$parent_id = $parent_campaign['parent_id'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -167,7 +184,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
' could not determine parent TwingleProject URL.',
|
' could not determine parent TwingleProject URL.',
|
||||||
$this->getResponse()
|
$this->getResponse()
|
||||||
);
|
);
|
||||||
$this->delete();
|
throw new TwingleCampaignException('Parent project URL missing');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,7 +197,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
ts('No parent TwingleProject found'),
|
ts('No parent TwingleProject found'),
|
||||||
'alert'
|
'alert'
|
||||||
);
|
);
|
||||||
$this->delete();
|
throw new TwingleCampaignException('No parent TwingleProject found');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,7 +305,7 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
} catch (CiviCRM_API3_Exception $e) {
|
} catch (CiviCRM_API3_Exception $e) {
|
||||||
Civi::log()->error(
|
Civi::log()->error(
|
||||||
E::LONG_NAME .
|
E::LONG_NAME .
|
||||||
' could delete TwingleCampaign: ' .
|
' could not delete TwingleCampaign: ' .
|
||||||
$e->getMessage(),
|
$e->getMessage(),
|
||||||
$this->getResponse()
|
$this->getResponse()
|
||||||
);
|
);
|
||||||
|
@ -349,20 +366,6 @@ class CRM_TwingleCampaign_BAO_TwingleCampaign {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ## Clone this TwingleProject
|
|
||||||
*
|
|
||||||
* This method removes the id from this instance and in the next step it
|
|
||||||
* creates the clone as a new TwingleCampaign with the same values to
|
|
||||||
* Twingle.
|
|
||||||
*
|
|
||||||
* @throws \CiviCRM_API3_Exception
|
|
||||||
*/
|
|
||||||
public
|
|
||||||
function clone() {
|
|
||||||
// TODO: implement cloning
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ## Get ID
|
* ## Get ID
|
||||||
*
|
*
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A simple custom exception that indicates a problem with the TwingleCampaign class
|
||||||
|
*/
|
||||||
|
class CRM_TwingleCampaign_Exceptions_TwingleCampaignException extends Exception {
|
||||||
|
|
||||||
|
}
|
|
@ -40,6 +40,13 @@ function _civicrm_api3_twingle_campaign_Create_spec(array &$spec) {
|
||||||
'api.required' => 1,
|
'api.required' => 1,
|
||||||
'description' => E::ts('Optional parent id for this Campaign'),
|
'description' => E::ts('Optional parent id for this Campaign'),
|
||||||
];
|
];
|
||||||
|
$spec['clone'] = [
|
||||||
|
'name' => 'clone',
|
||||||
|
'title' => E::ts('Clone'),
|
||||||
|
'type' => CRM_Utils_Type::T_BOOLEAN,
|
||||||
|
'api.required' => 0,
|
||||||
|
'description' => E::ts('Set this value to true if this campaign is about to be cloned to recreate cid'),
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,11 +68,10 @@ function civicrm_api3_twingle_campaign_Create(array $params): array {
|
||||||
_civicrm_api3_twingle_campaign_Create_spec($allowed_params);
|
_civicrm_api3_twingle_campaign_Create_spec($allowed_params);
|
||||||
$params = array_intersect_key($params, $allowed_params);
|
$params = array_intersect_key($params, $allowed_params);
|
||||||
|
|
||||||
// instantiate TwingleCampaign
|
|
||||||
$campaign = new TwingleCampaign($params);
|
|
||||||
|
|
||||||
// Try to create the TwingleCampaign
|
|
||||||
try {
|
try {
|
||||||
|
// instantiate TwingleCampaign
|
||||||
|
$campaign = new TwingleCampaign($params);
|
||||||
|
// try to create the TwingleCampaign
|
||||||
$campaign->create(TRUE);
|
$campaign->create(TRUE);
|
||||||
return civicrm_api3_create_success(
|
return civicrm_api3_create_success(
|
||||||
$campaign->getResponse('TwingleCampaign created'),
|
$campaign->getResponse('TwingleCampaign created'),
|
||||||
|
@ -74,15 +80,8 @@ function civicrm_api3_twingle_campaign_Create(array $params): array {
|
||||||
'Create'
|
'Create'
|
||||||
);
|
);
|
||||||
} catch(Exception $e){
|
} catch(Exception $e){
|
||||||
Civi::log()->error(
|
|
||||||
E::LONG_NAME .
|
|
||||||
' could not create TwingleCampaign: ' .
|
|
||||||
$e->getMessage(),
|
|
||||||
$campaign->getResponse()
|
|
||||||
);
|
|
||||||
return civicrm_api3_create_error(
|
return civicrm_api3_create_error(
|
||||||
'Could not create TwingleCampaign: ' . $e->getMessage(),
|
'Could not create TwingleCampaign: ' . $e->getMessage()
|
||||||
$campaign->getResponse()
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -3,14 +3,14 @@ msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"POT-Creation-Date: \n"
|
"POT-Creation-Date: \n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
"Language: de_DE\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Poedit 2.4.3\n"
|
"X-Generator: Poedit 3.0\n"
|
||||||
"Last-Translator: \n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"Language: de_DE\n"
|
|
||||||
|
|
||||||
#: CRM/TwingleCampaign/BAO/CustomField.php
|
#: CRM/TwingleCampaign/BAO/CustomField.php
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -907,6 +907,17 @@ msgstr "Elternkampagne"
|
||||||
msgid "Optional parent id for this Campaign"
|
msgid "Optional parent id for this Campaign"
|
||||||
msgstr "Optionale Eltern-ID für diese Kampagne"
|
msgstr "Optionale Eltern-ID für diese Kampagne"
|
||||||
|
|
||||||
|
#: api/v3/TwingleCampaign/Create.php
|
||||||
|
msgid "Clone"
|
||||||
|
msgstr "Klonen"
|
||||||
|
|
||||||
|
#: api/v3/TwingleCampaign/Create.php
|
||||||
|
msgid ""
|
||||||
|
"Set this value to true if this campaign is about to be cloned to recreate cid"
|
||||||
|
msgstr ""
|
||||||
|
"Setze diesen Wert auf true, wenn diese Kampagne gerade geklont wird, damit "
|
||||||
|
"die cid neu berechnet wird"
|
||||||
|
|
||||||
#: api/v3/TwingleCampaign/Get.php api/v3/TwingleCampaign/Getsingle.php
|
#: api/v3/TwingleCampaign/Get.php api/v3/TwingleCampaign/Getsingle.php
|
||||||
msgid "Twingle Campaign CID"
|
msgid "Twingle Campaign CID"
|
||||||
msgstr "Twingle Campaign CID"
|
msgstr "Twingle Campaign CID"
|
||||||
|
@ -1197,6 +1208,10 @@ msgstr "Twingle Event Einstellungen"
|
||||||
msgid "Campaign cloning failed"
|
msgid "Campaign cloning failed"
|
||||||
msgstr "Klonen der Kampagne fehlgeschlagen"
|
msgstr "Klonen der Kampagne fehlgeschlagen"
|
||||||
|
|
||||||
|
#: twinglecampaign.php
|
||||||
|
msgid "TwingleCampaign was cloned."
|
||||||
|
msgstr "TwingleCampaign wurde geklont"
|
||||||
|
|
||||||
#: twinglecampaign.php
|
#: twinglecampaign.php
|
||||||
msgid "TwingleCampaign update failed"
|
msgid "TwingleCampaign update failed"
|
||||||
msgstr "TwingleCampaign-Update fehlgeschlagen"
|
msgstr "TwingleCampaign-Update fehlgeschlagen"
|
||||||
|
|
|
@ -806,6 +806,14 @@ msgstr ""
|
||||||
msgid "Optional parent id for this Campaign"
|
msgid "Optional parent id for this Campaign"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ./api/v3/TwingleCampaign/Create.php
|
||||||
|
msgid "Clone"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ./api/v3/TwingleCampaign/Create.php
|
||||||
|
msgid "Set this value to true if this campaign is about to be cloned to recreate cid"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ./api/v3/TwingleCampaign/Get.php ./api/v3/TwingleCampaign/Getsingle.php
|
#: ./api/v3/TwingleCampaign/Get.php ./api/v3/TwingleCampaign/Getsingle.php
|
||||||
msgid "Twingle Campaign CID"
|
msgid "Twingle Campaign CID"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1038,6 +1046,10 @@ msgstr ""
|
||||||
msgid "Campaign cloning failed"
|
msgid "Campaign cloning failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ./twinglecampaign.php
|
||||||
|
msgid "TwingleCampaign was cloned."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ./twinglecampaign.php
|
#: ./twinglecampaign.php
|
||||||
msgid "TwingleCampaign update failed"
|
msgid "TwingleCampaign update failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -82,7 +82,11 @@ function twinglecampaign_civicrm_postSave_civicrm_campaign($dao) {
|
||||||
$_SESSION['CiviCRM']['de.forumzfd.twinglecampaign']['no_hook'] != TRUE) {
|
$_SESSION['CiviCRM']['de.forumzfd.twinglecampaign']['no_hook'] != TRUE) {
|
||||||
|
|
||||||
// If request is not an API-Call
|
// If request is not an API-Call
|
||||||
if ($_GET['action'] != 'create' && $_POST['action'] != 'create') {
|
if (
|
||||||
|
((isset($_GET['action']) && $_GET['action'] != 'create') ||
|
||||||
|
(isset($_POST['action']) && $_POST['action'] != 'create')) ||
|
||||||
|
(!isset($_GET['action']) && !isset($_POST['action']))
|
||||||
|
) {
|
||||||
|
|
||||||
// If the db transaction is still running, add a function to it that will
|
// If the db transaction is still running, add a function to it that will
|
||||||
// be called afterwards
|
// be called afterwards
|
||||||
|
@ -180,6 +184,19 @@ function twinglecampaign_postSave_campaign_update_callback(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($_POST['action'] == 'clone' && $entity == 'TwingleCampaign') {
|
||||||
|
unset($_POST['action']);
|
||||||
|
try {
|
||||||
|
civicrm_api3('TwingleCampaign', 'create',
|
||||||
|
['id' => $campaign_id, 'clone' => true]
|
||||||
|
);
|
||||||
|
CRM_Utils_System::setUFMessage(E::ts('TwingleCampaign was cloned.'));
|
||||||
|
} catch (CiviCRM_API3_Exception $e) {
|
||||||
|
Civi::log()->error(
|
||||||
|
'twinglecampaign_postSave_callback ' . $e->getMessage()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a TwingleProject is getting saved
|
// If a TwingleProject is getting saved
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue