public static function getLogin() { if (!self::$user && isset($_SESSION[self::KEY_USER_ID])) { self::$user = \MemberQuery::create()->findOneById($_SESSION[self::KEY_USER_ID]); } return self::$user; }
public function action_changeShort() { echo 'test2'; return; $member = \MemberQuery::create()->findOneById(1); $con = \Propel::getConnection(); if (!$con->beginTransaction()) { throw new \Exception('Could not begin transaction'); } try { $transfer = \TransferQuery::create()->findOneById(1); if (!$transfer) { $transfer = new \Transfer(); $transfer->setMemberId($member->getId()); $transfer->save($con); $transfer = \TransferQuery::create()->findOneById(1); } $transfer->setAmount($transfer->getAmount() + 2); $transfer->save($con); if (!$con->commit()) { throw new \Exception('Could not commit transaction'); } } catch (\Exception $e) { $con->rollBack(); throw $e; } print_r('<pre>'); print_r($transfer->toArray()); print_r('</pre>'); }
public function action_allinvoices() { $members = \MemberQuery::create()->filterByDeletionDate(null, \Criteria::ISNULL)->filterByNum('101', \Criteria::NOT_EQUAL)->orderBy('num')->find(); $result = '<div class="container"><div class="row sheet"> <table class="table2Debug"> <tbody> <tr> <th>Member</th> <th>Total</th> <th>Reasons Total</th> <th>Quantity</th> <th>Reasons</th> </tr>'; $reasons = \Tbmt\Localizer::get('view.account.tabs.invoice.transaction_reasons'); foreach ($members as $member) { $result .= '<tr>'; $result .= '<td>' . $member->getNum() . ' - ' . $member->getFirstName() . ' - ' . $member->getLastName() . '</td>'; $result .= '<td>' . \Tbmt\view\Factory::currencyArrToString($member->getOutstandingTotal()) . '</td>'; $result .= '<td colspan="3"></td>'; $result .= '</tr>'; $transactions = \TransactionQuery::create()->join('Transfer')->useTransferQuery()->filterByMember($member)->endUse()->select(['Reason'])->withColumn('count(*)', 'Quantity')->withColumn('sum(Transaction.Amount)', 'Total')->groupBy('Transfer.Currency')->groupBy('Transaction.Reason')->find(); foreach ($transactions as $transaction) { $result .= '<tr>'; $result .= '<td colspan="2"></td>'; $result .= '<td>' . \Tbmt\Localizer::numFormat($transaction['Total']) . '</td>'; $result .= '<td>' . $transaction['Quantity'] . '</td>'; $result .= '<td>' . $reasons[$transaction['Reason']] . '</td>'; $result .= '</tr>'; } } $result .= '</tbody></table></div></div>'; return $result; }
public function render(array $params = array()) { if (!isset($params['member']) && !$params['member'] instanceof \Member) { throw new \Exception('Invalid param member for account index view.'); } $this->members = \MemberQuery::create()->filterByPaidDate(null, \Criteria::ISNULL)->filterByDeletionDate(null, \Criteria::ISNULL)->find(); return $this->renderFile(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tab.dev_paying.account.html', $params); }
public static function validatePasswordResetForm(array $data = array()) { $data = self::initPasswordResetForm($data); $res = \Tbmt\Validator::getErrors($data, self::$PASSWORD_RESET_FORM_FILTERS); if ($res !== false) { return [false, $res, null]; } $recipient = \MemberQuery::create()->filterByDeletionDate(null, \Criteria::ISNULL)->findOneByNum($data['num']); if ($recipient == null) { return [false, ['num' => \Tbmt\Localizer::get('error.member_num')], null]; } return [true, $data, $recipient]; }
public function render(array $params = array()) { if (!isset($params['member']) && !$params['member'] instanceof \Member) { throw new \Exception('Invalid param "member" for account index view.'); } $this->totalMemberCount = \MemberQuery::create()->count(); $this->totalPaidMemberCount = \MemberQuery::create()->filterByPaidDate(null, \Criteria::ISNOTNULL)->count(); $this->absoluteTransferredTotal = ''; // $this->absoluteTransferredTotal = \MemberQuery::create() // ->withColumn('count(*)', 'nbComments') // ->count(); $this->member = $params['member']; $this->members = \MemberQuery::create()->filterByType(-1, \Criteria::NOT_EQUAL)->orderBy(\MemberPeer::ID, \Criteria::ASC)->limit(300)->find(); return $this->renderFile(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tab.total_invoice.account.html', $params); }
/** * Remind all unpaid members after 7 days. * * @return */ public static function emailReminder($now = null, $allowedDays = '-7 days') { $con = \Propel::getConnection(); if (!$con->beginTransaction()) { throw new \Exception('Could not begin transaction'); } if ($now === null) { $now = time(); } $before7Days = strtotime($allowedDays, $now); $result = ''; try { $unpaidMembers = \MemberQuery::create()->filterByIsExtended(1)->filterByPaidDate(null, \Criteria::ISNULL)->filterBySignupDate($before7Days, \Criteria::LESS_EQUAL)->filterByDeletionDate(null, \Criteria::ISNULL)->joinReservedPaidEventRelatedByPaidId(null, \Criteria::LEFT_JOIN)->where(\ReservedPaidEventPeer::PAID_ID . ' is null', null)->joinMemberData(null, \Criteria::LEFT_JOIN)->with('MemberData')->condition('reminderMailIsNull', 'MemberData.FeeReminderEmail is null', null)->condition('reminderMailEqualZero', 'MemberData.FeeReminderEmail = ?', 0)->where(array('reminderMailIsNull', 'reminderMailEqualZero'), \Criteria::LOGICAL_OR)->find(); $result .= "7 days reminder email job:\n\n"; if (count($unpaidMembers) > 0) { $result .= "Found " . count($unpaidMembers) . " members:\n\n"; } else { $result .= "No member to remind found."; } foreach ($unpaidMembers as $member) { $totalAdvertised = $member->getAdvertisedCountTotal(); $result .= "Member: " . $member->getNum() . "\n"; $result .= "Advertised count: " . $totalAdvertised . "\n"; if ($totalAdvertised === 0) { MailHelper::sendFeeReminder($member); MailHelper::sendFeeReminderReferrer($member->getReferrerMember(), $member); } else { MailHelper::sendFeeReminderWithAdvertisings($member); MailHelper::sendFeeReminderWithAdvertisingsReferrer($member->getReferrerMember(), $member); } $data = $member->getMemberData(); if (!$data) { $data = new \MemberData(); $data->setMemberId($member->getId()); } $data->setFeeReminderEmail(1); $data->save($con); $result .= "---------\n\n"; } if (!$con->commit()) { throw new \Exception('Could not commit transaction'); } } catch (\Exception $e) { $con->rollBack(); throw $e; } return $result; }
public static function validateBonusTransactionForm(array $data = array()) { $data = self::initBonusTransactionForm($data); $res = \Tbmt\Validator::getErrors($data, self::$BONUS_TRANSACTION_FORM_FILTERS); if ($res !== false) { return [false, $res, null]; } $recipient = \MemberQuery::create()->filterByDeletionDate(null, Criteria::ISNULL)->findOneByNum($data['recipient_num']); if ($recipient == null) { return [false, ['recipient_num' => \Tbmt\Localizer::get('error.member_num')], null]; } if (!$recipient->hadPaid()) { return [false, ['recipient_num' => \Tbmt\Localizer::get('error.member_num_unpaid')], null]; } return [true, $data, $recipient]; }
public static function validateInvitationForm(array $data = array()) { $data = self::initInvitationForm($data); if ($data['type'] !== \Member::TYPE_SUB_PROMOTER) { $data['promoter_num'] = ''; } if ($data['type'] === \Member::TYPE_SUB_PROMOTER && !$data['promoter_num']) { return [false, ['promoter_num' => \Tbmt\Localizer::get('error.empty')], null]; } $recipient = \MemberQuery::create()->filterByDeletionDate(null, Criteria::ISNULL)->findOneByNum($data['promoter_num']); if ($recipient == null) { return [false, ['promoter_num' => \Tbmt\Localizer::get('error.member_num')], null]; } if ($recipient->getType() !== \Member::TYPE_PROMOTER) { return [false, ['promoter_num' => \Tbmt\Localizer::get('error.sub_promoter_to_promoter')], null]; } if (!$recipient->hadPaid()) { return [false, ['promoter_num' => \Tbmt\Localizer::get('error.member_num_unpaid')], null]; } return [true, $data, $recipient]; }
public static function pushRootAccounts() { $con = \Propel::getConnection(); if (!$con->beginTransaction()) { throw new \Exception('Could not begin transaction'); } $now = time(); try { $rootAccountNums = \SystemStats::$ROOT_ACCOUNTS_NUM; $rootAccounts = \MemberQuery::create()->filterByNum($rootAccountNums, \Criteria::IN)->filterByDeletionDate(null, \Criteria::ISNULL)->find(); $arrRootAccounts = []; foreach ($rootAccounts as $account) { $transfers = $account->getOpenCollectingTransfers($con); $arrTransfers = []; foreach ($transfers as $transfer) { $transfer->executeTransfer($account); $transfer->save($con); $arrTransfers[] = $transfer->toArray(); } if (count($arrTransfers) === 0) { continue; } $account->save($con); $arrRootAccounts[] = $account->toArray() + ['Transfers' => $arrTransfers]; } $client = new ApiClient(); print_r('<pre>'); print_r([$client->pushRootAccounts($arrRootAccounts)]); print_r('</pre>'); throw new \Exception('test'); if (!$con->commit()) { throw new \Exception('Could not commit transaction'); } } catch (\Exception $e) { $con->rollBack(); throw $e; } }
public function render(array $params = array()) { if (!isset($params['member']) && !$params['member'] instanceof \Member) { throw new \Exception('Invalid param member for account index view.'); } $this->member = $params['member']; $this->recipient = isset($params['recipient']) ? $params['recipient'] : null; $this->formVal = \Member::initBonusLevelForm(isset($params['formVal']) ? $params['formVal'] : $_REQUEST); $this->formErrors = isset($params['formErrors']) ? $params['formErrors'] : []; $this->successmsg = isset($params['successmsg']) ? true : false; $query = \MemberQuery::create()->joinActivity()->select(['Num', 'BonusLevel', 'Activity.Meta', 'Activity.Date'])->where('Activity.MemberId = ?', $this->member->getId())->orderBy('Activity.Date', \Criteria::DESC)->limit(100); $objBonusMembers = $query->find(); $arrBonusMembers = []; $currencySymbol = \Tbmt\Localizer::get('currency_symbol.' . \Transaction::$BASE_CURRENCY); $dateFormat = \Tbmt\Localizer::get('datetime_format_php.long'); foreach ($objBonusMembers as $bonusMembers) { $meta = json_decode($bonusMembers['Activity.Meta'], true); $amount = isset($meta[\Activity::MK_BONUS_PAYMENT_AMOUNT]) ? \Tbmt\Localizer::currencyFormat($meta[\Activity::MK_BONUS_PAYMENT_AMOUNT], $currencySymbol) : ' - '; $arrBonusMembers[] = [$bonusMembers['Num'], $amount, (new \DateTime($bonusMembers['Activity.Date']))->format($dateFormat)]; } $this->bonusMembers = $arrBonusMembers; return $this->renderFile(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tab.bonus_levels.account.html', $params); }
public function validateSignupForm(array $data = array()) { $data['referral_member_num'] = Session::hasValidToken(); $data = $this->initSignupForm($data); if ($data['password'] !== $data['password2']) { return [false, ['password' => \Tbmt\Localizer::get('error.password_unequal')], null, null]; } $res = \Tbmt\Validator::getErrors($data, $this->SIGNUP_FORM_FILTERS); if ($res !== false) { return [false, $res, null, null]; } // Validate member number exists $parentMember = \MemberQuery::create()->filterByDeletionDate(null, \Criteria::ISNULL)->filterByType(\Member::TYPE_SYSTEM, \Criteria::NOT_EQUAL)->findOneByHash($data['referral_member_num'])->findOneByIsExtended(1); if ($parentMember == null || $parentMember->getNum() == 0) { return [false, ['referral_member_num' => \Tbmt\Localizer::get('error.referral_member_num')], null, null]; } // else if ( $parentMember->hadPaid() ) { // return [false, ['referral_member_num' => \Tbmt\Localizer::get('error.referrer_paiment_outstanding')], null]; // } $invitation = null; if ($data['invitation_code'] !== '') { $invitation = \InvitationQuery::create()->findOneByHash($data['invitation_code']); if ($parentMember == null) { return [false, ['invitation_code' => \Tbmt\Localizer::get('error.invitation_code_inexisting')], null, null]; } if ($invitation->getMemberId() != $parentMember->getId()) { return [false, ['invitation_code' => \Tbmt\Localizer::get('error.invitation_code_invalid')], null, null]; } if ($invitation->getAcceptedMemberId()) { return [false, ['invitation_code' => \Tbmt\Localizer::get('error.invitation_code_used')], null, null]; } } if (!isset($data['email'])) { $data['email'] = ''; } return [true, $data, $parentMember, $invitation]; }
public static function setUpBonusMembers($doReset = true, $options = false) { if (!\MemberQuery::create()->findOneByNum(SystemStats::ACCOUNT_NUM_SYSTEM)) { \Tbmt\SystemSetup::setCon(self::$con); \Tbmt\SystemSetup::doSetup(); } $options = array_merge(['IT' => true, 'VL' => true, 'OL' => true, 'PM' => true, 'VS2' => true, 'VS1' => true], $options ? $options : []); $currentParent = null; $currentBonusIds = '[]'; /* it specialists ---------------------------------------------*/ $IT_t = 0; $IT = null; if ($options['IT']) { if ($doReset === true || self::$it_member === null) { $IT_t = 0; $IT = self::$it_member = DbEntityHelper::createMember($currentParent, ['Type' => Member::TYPE_ITSPECIALIST, 'FundsLevel' => Member::FUNDS_LEVEL2]); } else { $IT = self::$it_member; $IT_t = self::$it_member->getOutstandingTotal()[DbEntityHelper::$currency]; } $currentBonusIds = MemberBonusIds::populate($IT, '[]'); } /* marketing leader ---------------------------------------------*/ $VL_t = 0; $VL = null; if ($options['VL']) { $VL = DbEntityHelper::createMember($currentParent, ['Type' => Member::TYPE_MARKETINGLEADER, 'FundsLevel' => Member::FUNDS_LEVEL2, 'BonusIds' => $currentBonusIds]); $currentBonusIds = MemberBonusIds::populate($VL, $VL->getBonusIds()); $currentParent = $VL; } /* org leader ---------------------------------------------*/ $OL_t = 0; $OL = null; if ($options['OL']) { $OL = DbEntityHelper::createMember($currentParent, ['Type' => Member::TYPE_ORGLEADER, 'FundsLevel' => Member::FUNDS_LEVEL2, 'BonusIds' => $currentBonusIds]); $currentBonusIds = MemberBonusIds::populate($OL, $OL->getBonusIds()); $currentParent = $OL; } /* promoter ---------------------------------------------*/ $PM_t = 0; $PM = null; if ($options['PM']) { $IT_t += Transaction::getAmountForReason(Transaction::REASON_IT_BONUS); $VL_t += Transaction::getAmountForReason(Transaction::REASON_VL_BONUS); if (!$OL) { $OL_t =& $VL_t; } $OL_t += Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_LVL2) + Transaction::getAmountForReason(Transaction::REASON_OL_BONUS) + Transaction::getAmountForReason(Transaction::REASON_PM_BONUS); // TODO question: // kriegt der ol in diesem fall 22 oder 21 euro ? // 22 weil der ja den bonus der promoters kriegt wenn er jemand // wirbt ohne das ein promoter dazwischen ist? if ($currentParent) { $PM = DbEntityHelper::createSignupMember($currentParent); } else { $PM = DbEntityHelper::createMember($currentParent, ['BonusIds' => $currentBonusIds]); $IT_t -= Transaction::getAmountForReason(Transaction::REASON_IT_BONUS); $VL_t -= Transaction::getAmountForReason(Transaction::REASON_VL_BONUS); $OL_t -= Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_LVL2) + Transaction::getAmountForReason(Transaction::REASON_OL_BONUS) + Transaction::getAmountForReason(Transaction::REASON_PM_BONUS); } $PM->setType(Member::TYPE_PROMOTER)->setFundsLevel(Member::FUNDS_LEVEL2)->save(self::$con); $currentParent = $PM; } /* funds level 2 ---------------------------------------------*/ $VS2_t = 0; $VS2 = null; if ($options['VS2']) { $IT_t += Transaction::getAmountForReason(Transaction::REASON_IT_BONUS) * 3; $VL_t += Transaction::getAmountForReason(Transaction::REASON_VL_BONUS) * 3; if (!$OL) { $OL_t =& $VL_t; } $OL_t += Transaction::getAmountForReason(Transaction::REASON_OL_BONUS) * 3; if (!$PM) { $PM_t =& $OL_t; } $PM_t += Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_LVL2) + Transaction::getAmountForReason(Transaction::REASON_PM_BONUS) + 2 * (Transaction::getAmountForReason(Transaction::REASON_PM_BONUS) + Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_INDIRECT)); $VS2_t += 2 * Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_LVL1); $VS2 = DbEntityHelper::createSignupMember($currentParent); DbEntityHelper::createSignupMember($VS2); DbEntityHelper::createSignupMember($VS2); $currentParent = $VS2; } /* funds level 1 ---------------------------------------------*/ $VS1_t = 0; $VS1 = null; if ($options['VS1']) { $IT_t += Transaction::getAmountForReason(Transaction::REASON_IT_BONUS); $VL_t += Transaction::getAmountForReason(Transaction::REASON_VL_BONUS); if (!$OL) { $OL_t =& $VL_t; } $OL_t += Transaction::getAmountForReason(Transaction::REASON_OL_BONUS); if (!$PM) { $PM_t =& $OL_t; } $PM_t += Transaction::getAmountForReason(Transaction::REASON_PM_BONUS); if (!$VS2) { $VS2_t =& $PM_t; } $VS2_t += Transaction::getAmountForReason(Transaction::REASON_ADVERTISED_LVL2); $VS1 = DbEntityHelper::createSignupMember($currentParent); } return [[$IT, $VL, $OL, $PM, $VS2, $VS1], [$IT_t, $VL_t, $OL_t, $PM_t, $VS2_t, $VS1_t]]; }
<?php echo 'test1'; include dirname(__FILE__) . '/bootstrap.php'; $member = \MemberQuery::create()->findOneById(1); $con = \Propel::getConnection(); if (!$con->beginTransaction()) { throw new \Exception('Could not begin transaction'); } try { $transfer = \TransferQuery::create()->findOneById(1); if (!$transfer) { $transfer = new \Transfer(); $transfer->setMemberId($member->getId()); $transfer->save($con); $transfer = \TransferQuery::create()->findOneById(1); } $transfer->setAmount($transfer->getAmount() + 2); $transfer->save($con); if (!$con->commit()) { throw new \Exception('Could not commit transaction'); } } catch (\Exception $e) { $con->rollBack(); throw $e; } print_r('<pre>'); print_r($transfer->toArray()); print_r('</pre>'); echo "\n CONSISTENCY 2\n";
public function action_ajax_tree(array $params = array()) { $ids = Arr::init($_REQUEST, 'ids', TYPE_ARRAY); $bonusOnly = Arr::init($_REQUEST, 'bonusOnly', TYPE_BOOL); $rowCount = Arr::init($_REQUEST, 'count', TYPE_INT, 100); $byColumn = Arr::init($_REQUEST, 'column', TYPE_STRING, 'ParentId'); $filterByColumn = "filterBy{$byColumn}"; $comparisonOperator = \Criteria::IN; $memberTypes = Localizer::get('common.member_types'); $rows = []; for ($i = 0; $i < $rowCount; $i++) { $members = \MemberQuery::create()->{$filterByColumn}($ids, $comparisonOperator)->orderBy(\MemberPeer::SIGNUP_DATE, \Criteria::ASC); if ($bonusOnly) { $members->filterByType(\Member::TYPE_MEMBER, \Criteria::GREATER_THAN); } $members = $members->find(); if (count($members) === 0) { break; } $row = $members->toArray(); $newIds = []; foreach ($members as $i => $member) { $row[$i]['TypeTranslated'] = $memberTypes[$member->getType()]; $newIds[] = $member->getId(); } $rows[] = $row; $ids = $newIds; } return new ControllerActionAjax($rows); }
shuffle($numbers); $shuffledIds = array_slice($numbers, 0, PM_PER_RUN_SELECT_NUM); $pms = MemberQuery::create()->filterById($shuffledIds)->orderBy('Id', Criteria::DESC)->limit(PM_PER_RUN_SELECT_NUM)->find($con); foreach ($pms as $pm) { for ($i = 0; $i < MEMBER_PER_PM_CREATE_NUM; $i++) { if (!$con->beginTransaction()) { throw new Exception('Could not begin transaction'); } try { DbEntityHelper::createSignupMember($pm); if (!$con->commit()) { throw new Exception('Could not commit transaction'); } } catch (Exception $e) { $con->rollBack(); throw $e; } $currentCount++; $tempPercent = intval($currentCount * 100 / $totalCount); if ($tempPercent != $currentPercent) { $timeTaken = time() - $now; $minutesTaken = $timeTaken / 60; echo "{$currentPercent} % - done - {$currentCount} / {$totalCount} - {$timeTaken} seconds - {$minutesTaken} minutes\n"; $currentPercent = $tempPercent; } } } } $count = MemberQuery::create()->count() - $count; $timeTaken = time() - $now; echo "done in {$timeTaken} seconds, populated - {$count} - new data.";
public static function payBonuses(\Tbmt\MemberFee $memberFee, Member $payingMember, $currency, $when, PropelPDO $con) { $bonusByIds = self::toArray($payingMember->getBonusIds()); if (!is_array($bonusByIds)) { return; } $bonusIds = array_keys($bonusByIds); if (count($bonusIds) === 0) { return; } $relatedId = $payingMember->getId(); $bonusMembers = MemberQuery::create()->filterByDeletionDate(null, Criteria::ISNULL)->filterById($bonusIds, Criteria::IN)->find($con); $spreadBonuses = []; $membersByType = []; $toBeSaved = []; foreach ($bonusMembers as $member) { $type = $member->getType(); $transfer = self::doPay($memberFee, null, $member, $member->getBonusReason(), $relatedId, $currency, $when, $con); // lazy save all these objects later to prevent multiple // database update's cause there might get more bonuses spread. $toBeSaved[] = $member; $toBeSaved[] = $transfer; $spreadBonuses[$type] = [$member, $transfer]; } $inheritBonuses = []; $add_OL = null; $add_VL = []; $vl = null; if (!isset($spreadBonuses[Member::TYPE_PROMOTER])) { // if promoter does not exist give org leader his bonus $add_OL = Transaction::REASON_PM_BONUS; } if (!isset($spreadBonuses[Member::TYPE_ORGLEADER])) { // if org leader does not exist give marketing leader his bonus $add_VL[] = Transaction::REASON_OL_BONUS; if ($add_OL) { $add_VL[] = $add_OL; $add_OL = null; } } if (!isset($spreadBonuses[Member::TYPE_MARKETINGLEADER])) { $add_VL = []; } else { $vl = $spreadBonuses[Member::TYPE_MARKETINGLEADER]; } if ($add_OL) { $ol = $spreadBonuses[Member::TYPE_ORGLEADER]; self::doPay($memberFee, $ol[1], $ol[0], $add_OL, $relatedId, $currency, $when, $con); } foreach ($add_VL as $params) { self::doPay($memberFee, $vl[1], $vl[0], $params, $relatedId, $currency, $when, $con); } foreach ($toBeSaved as $row) { $row->save($con); } }
public static function payBonuses(\Tbmt\MemberFee $memberFee, Member $payingMember, $currency, $when, PropelPDO $con) { $bonusByIds = self::toArray($payingMember->getBonusIds()); if (!is_array($bonusByIds)) { return; } // Each member carries all members which receive bonus for his signup $bonusIds = array_keys($bonusByIds); if (count($bonusIds) === 0) { return; } $relatedId = $payingMember->getId(); // Select all bonus members $bonusMembers = MemberQuery::create()->filterByDeletionDate(null, Criteria::ISNULL)->filterById($bonusIds, Criteria::IN)->find($con); $spreadBonuses = []; $toBeSaved = []; foreach ($bonusMembers as $member) { $type = $member->getType(); $transfer = null; // Even so the system still supporting this, it was declarated deprecated by marcus sheffold if ($member->getBonusLevel() > 0) { // Pay the individual bonus set for this member $transfer = self::doPay($memberFee, $transfer, $member, \Transaction::REASON_CUSTOM_BONUS_LEVEL, $relatedId, $currency, $when, $con); } $reasonByType = $member->getTransactionReasonByType($type); if ($reasonByType !== null) { $transfer = self::doPay($memberFee, $transfer, $member, $reasonByType, $relatedId, $currency, $when, $con); } $reasonByMemberNum = $member->getTransactionReasonByMemberNum(); if ($reasonByMemberNum !== null) { $transfer = self::doPay($memberFee, $transfer, $member, $reasonByMemberNum, $relatedId, $currency, $when, $con); } // lazy save all these objects later to prevent multiple // database update's cause there might get more bonuses spread. if ($transfer) { $toBeSaved[] = $member; $toBeSaved[] = $transfer; // Save the payed bonuses by type $spreadBonuses[$type] = [$transfer, $member, $reasonByType]; } } $propagateBonuses = [Member::TYPE_PROMOTER, Member::TYPE_ORGLEADER, Member::TYPE_MARKETINGLEADER, Member::TYPE_SALES_MANAGER, Member::TYPE_CEO]; $collectUnspreadBonusus = []; foreach ($propagateBonuses as $memberType) { if (!isset($spreadBonuses[$memberType])) { // This bonus is unspread, so collect it to give it to the next higher // existing member type $collectUnspreadBonusus[] = $memberType; } else { $memberObjects = $spreadBonuses[$memberType]; foreach ($collectUnspreadBonusus as $memberType) { self::doPay($memberFee, $memberObjects[0], $memberObjects[1], \Member::getTransactionReasonByType($memberType), $relatedId, $currency, $when, $con); } // Reset $collectUnspreadBonusus = []; } } foreach ($toBeSaved as $row) { $row->save($con); } }
public function action_ajax_tree(array $params = array()) { $ids = Arr::init($_REQUEST, 'ids', TYPE_ARRAY); $rowCount = Arr::init($_REQUEST, 'count', TYPE_INT, 5); $byColumn = Arr::init($_REQUEST, 'column', TYPE_STRING, 'ParentId'); $filterByColumn = "filterBy{$byColumn}"; $rows = []; for ($i = 0; $i < $rowCount; $i++) { $members = \MemberQuery::create()->{$filterByColumn}($ids, \Criteria::IN)->find(); if (count($members) === 0) { break; } $rows[] = $members->toArray(); $newIds = []; foreach ($members as $member) { $newIds[] = $member->getId(); } $ids = $newIds; } return new ControllerActionAjax($rows); }