/** * Returns the localized salutation string. * * @return string */ public function getSalutationText() { return SilvercartTools::getSalutationText($this->Salutation); }
/** * Creates and returns the CSV content to download. * $exportContext can be: * 0 = all customers with a valid email address * 1 = all newsletter recipients * 2 = all newsletter recipients with customer account * 3 = all newsletter recipients without customer account * 4 = all non-newletter recipients with customer account * * @param string $exportContext 0|1|2|3|4; Identifies the context to get recipients for * * @return string */ protected function getCSVContent($exportContext) { $membersSql = 'SELECT "M"."Email", "M"."Salutation", "M"."FirstName", "M"."Surname" FROM "Member" AS "M" WHERE "M"."Email" IS NOT NULL'; $anonymousSql = 'SELECT "ANR"."Email", "ANR"."Salutation", "ANR"."FirstName", "ANR"."Surname" FROM "SilvercartAnonymousNewsletterRecipient" AS "ANR" WHERE "ANR"."Email" IS NOT NULL AND "ANR"."NewsletterOptInStatus" = 1'; $membersSqlAddition = ''; switch ($exportContext) { case '1': // All newletter recipients $useMembersSql = true; $useAnonymousSql = true; $membersSqlAddition = ' AND "M"."NewsletterOptInStatus" = 1'; break; case '2': // All newletter recipients with customer account $useMembersSql = true; $useAnonymousSql = false; $membersSqlAddition = ' AND "M"."NewsletterOptInStatus" = 1'; break; case '3': // All newletter recipients without customer account $useMembersSql = false; $useAnonymousSql = true; break; case '4': // All non-newletter recipients $useMembersSql = true; $useAnonymousSql = false; $membersSqlAddition = ' AND "M"."NewsletterOptInStatus" = 0'; break; case '0': default: // All customers with a valid email address $useMembersSql = true; $useAnonymousSql = true; break; } $tempFolder = getTempFolder(); $tempCsvFile = $tempFolder . '/do_newsletter_recipients_export.csv'; $csvFile = fopen($tempCsvFile, 'w'); fputcsv($csvFile, array('email', 'salutation', 'firstname', 'surname')); if ($useMembersSql) { $records = DB::query($membersSql . $membersSqlAddition); if ($records->numRecords() > 0) { foreach ($records as $record) { $record['Salutation'] = SilvercartTools::getSalutationText($record['Salutation']); fputcsv($csvFile, $record); } } } if ($useAnonymousSql) { $records = DB::query($anonymousSql); if ($records->numRecords() > 0) { foreach ($records as $record) { $record['Salutation'] = SilvercartTools::getSalutationText($record['Salutation']); fputcsv($csvFile, $record); } } } fclose($csvFile); $csvFileContent = file_get_contents($tempCsvFile); unlink($tempCsvFile); return $csvFileContent; }
/** * Uses DataObject based, editable templates to send the email * * @param integer $messageID ??? * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 25.11.2015 */ public function send($messageID = null) { $variables = $this->template_data->toMap(); $variables['PasswordResetLink'] = Director::absoluteURL($this->template_data->PasswordResetLink); /* @var $member Member */ $member = singleton('Member'); foreach ($member->db() as $dbFieldName => $dbFieldType) { if (!array_key_exists($dbFieldName, $variables)) { $variables[$dbFieldName] = $this->template_data->{$dbFieldName}; } } $variables['SalutationText'] = SilvercartTools::getSalutationText($variables['Salutation']); SilvercartShopEmail::send('ForgotPasswordEmail', $this->To(), $variables); }