From 45515789a4614c2d5526dd73a91e46c6583cc22c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=BCller?= <p.mueller@pcsg.de> Date: Mon, 17 Jul 2017 11:32:55 +0200 Subject: [PATCH] feat: Automatically create a product on new membership creation --- ajax/memberships/getInstalledMembershipPackages.php | 3 +-- src/QUI/Memberships/Events.php | 10 ++++++---- src/QUI/Memberships/Handler.php | 8 ++++++-- src/QUI/Memberships/Membership.php | 12 ++++++++++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/ajax/memberships/getInstalledMembershipPackages.php b/ajax/memberships/getInstalledMembershipPackages.php index 968885a..0e572f0 100644 --- a/ajax/memberships/getInstalledMembershipPackages.php +++ b/ajax/memberships/getInstalledMembershipPackages.php @@ -13,8 +13,7 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_memberships_ajax_memberships_getInstalledMembershipPackages', function () { - $Memberships = new MembershipsHandler(); - return $Memberships->getInstalledMembershipPackages(); + return MembershipsHandler::getInstalledMembershipPackages(); }, array(), 'Permission::checkAdminUser' diff --git a/src/QUI/Memberships/Events.php b/src/QUI/Memberships/Events.php index feed537..3edbbe2 100644 --- a/src/QUI/Memberships/Events.php +++ b/src/QUI/Memberships/Events.php @@ -29,7 +29,7 @@ public static function onPackageSetup(Package $Package) return; } - $packages = MembershipsHandler::getInstance()->getInstalledMembershipPackages(); + $packages = MembershipsHandler::getInstalledMembershipPackages(); foreach ($packages as $package) { switch ($package) { @@ -69,13 +69,15 @@ protected static function createProductField() } try { - ProductFields::createField(array( + $NewField = ProductFields::createField(array( 'id' => MembershipField::FIELD_ID, 'type' => MembershipField::TYPE, 'titles' => $translations, - 'workingtitles' => $translations, - 'search_type' => ProductSearchHandler::SEARCHTYPE_TEXT + 'workingtitles' => $translations )); + + $NewField->setAttribute('search_type', ProductSearchHandler::SEARCHTYPE_TEXT); + $NewField->save(); } catch (\QUI\ERP\Products\Field\Exception $Exception) { // nothing, field exists } catch (\Exception $Exception) { diff --git a/src/QUI/Memberships/Handler.php b/src/QUI/Memberships/Handler.php index 2cb5e75..042beae 100644 --- a/src/QUI/Memberships/Handler.php +++ b/src/QUI/Memberships/Handler.php @@ -67,7 +67,11 @@ public function createChild($data = array()) $data['groupIds'] = ',' . implode(',', $groupIds) . ','; $data['duration'] = '1-month'; - return parent::createChild($data); + /** @var Membership $NewMembership */ + $NewMembership = parent::createChild($data); + $NewMembership->createProduct(); + + return $NewMembership; } /** @@ -188,7 +192,7 @@ public function search($searchParams, $countOnly = false) * * @return array */ - public function getInstalledMembershipPackages() + public static function getInstalledMembershipPackages() { $packages = array(); $relevantPackages = array( diff --git a/src/QUI/Memberships/Membership.php b/src/QUI/Memberships/Membership.php index 95bf09f..608f7c3 100644 --- a/src/QUI/Memberships/Membership.php +++ b/src/QUI/Memberships/Membership.php @@ -431,12 +431,16 @@ public function calcEndDate($start = null) */ public function getProducts() { + if (!in_array('quiqqer/products', Handler::getInstalledMembershipPackages())) { + return array(); + } + $Search = new BackendSearch(); try { $result = $Search->search(array( 'fields' => array( - MembershipField::FIELD_ID => $this->id + MembershipField::FIELD_ID => "$this->id" ) )); } catch (QUI\Permissions\Exception $Exception) { @@ -460,10 +464,14 @@ public function getProducts() * Hint: Every time this method is called, a new Product is created, regardless * of previous calls! * - * @return QUI\ERP\Products\Product\Product + * @return QUI\ERP\Products\Product\Product|false */ public function createProduct() { + if (!in_array('quiqqer/products', Handler::getInstalledMembershipPackages())) { + return false; + } + $categories = array(); $fields = array(); -- GitLab