Skip to content

Commit b71bc13

Browse files
committed
Added email sending upon user & subscription creation
1 parent 3739617 commit b71bc13

File tree

1 file changed

+76
-23
lines changed

1 file changed

+76
-23
lines changed

akeebasubs/akeebasubs/subscription.php

Lines changed: 76 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
defined('_JEXEC') or die( 'Restricted access' );
1010

1111
jimport('joomla.plugin.plugin');
12+
require_once JPATH_ROOT . '/components/com_akeebasubs/helpers/email.php';
13+
$jlang = JFactory::getLanguage();
14+
1215

1316
class AkeebasubsApiResourceSubscription extends ApiResource
1417
{
15-
18+
1619
private $vars = array(
1720
'firstrun'=>'BOOLEAN',
1821
'slug'=>'STRING',
@@ -40,9 +43,9 @@ class AkeebasubsApiResourceSubscription extends ApiResource
4043
'subcustom'=>'RAW',
4144
'opt'=>'STRING'
4245
);
43-
46+
4447
public function post() {
45-
48+
4649
$input = JFactory::getApplication()->input;
4750
$user = $this->plugin->getUser();
4851

@@ -55,24 +58,24 @@ public function post() {
5558
$override_users = $this->getOverrideUsers();
5659
$is_override = in_array($user->id, array_keys($override_users));
5760
$allowed = $authorised || $is_override;
58-
61+
5962
if (!$allowed) {
6063
$this->plugin->setResponse( $this->getErrorResponse(404, JText::_('JERROR_ALERTNOAUTHOR')) );
6164
return;
6265
}
63-
66+
6467
// Check/create user
6568
$newuser['name'] = $input->get('name', '', 'STRING');
6669
$newuser['email'] = $input->get('email', '', 'USERNAME');
6770
$newuser['username'] = $newuser['email'];
68-
71+
6972
$subscriber_userid = $this->getSubscriberUserid($newuser);
7073
if (!$subscriber_userid)
7174
{
7275
$this->plugin->setResponse( $this->getErrorResponse(404, 'Problem creating user. Name and email are mandatory. Make sure you use a valid email') );
7376
return;
7477
}
75-
78+
7679
// Create subscription
7780
$levelid = $input->get('subscription', '', 'INT');
7881
$enabled = $input->get('enabled', 0, 'INT');
@@ -140,9 +143,9 @@ public function post() {
140143
$mStartDate = $jStartDate->toSql();
141144
$jEndDate = new JDate($endDate);
142145
$mEndDate = $jEndDate->toSql();
143-
146+
144147
$note = 'Subscription created via API.'.PHP_EOL.'API User : %1$s'.PHP_EOL.'API Userid : %2$s'.PHP_EOL.'Subscriber Name : %3$s'.PHP_EOL.'Subscriber Email : %4$s'.PHP_EOL.'Date : %5$s'.PHP_EOL.'Level id : %6$s';
145-
148+
146149
$subscription = FOFTable::getInstance('Subscription', 'AkeebasubsTable');
147150
$subscription->user_id = (int) $subscriber_userid;
148151
$subscription->akeebasubs_level_id = $levelid;
@@ -153,10 +156,13 @@ public function post() {
153156
$subscription->publish_up = $mStartDate;
154157
$subscription->publish_down = $mEndDate;
155158
$subscription->notes = sprintf($note, $user->name, $user->id, $newuser['name'], $newuser['email'], date('Y-m-d H:i:s'), $levelid);
156-
157-
//$this->plugin->setResponse( $subscription ); return;
158-
159+
159160
if ($subscription->store()) {
161+
// Send email
162+
//$mailer = AkeebasubsHelperEmail::getPreloadedMailer($subscription, 'plg_akeebasubs_subscriptionemails_new_active');
163+
//$mailer->addRecipient($newuser['email']);
164+
//$send = $mailer->Send();
165+
160166
$this->plugin->setResponse( array('code' => 200, 'id' => $subscription->akeebasubs_subscription_id) );
161167
} else {
162168
$this->plugin->setResponse( $this->getErrorResponse(404, 'There was a problem creating the subscription. Make sure you use a valid level id. Name and email are mandatory.') );
@@ -167,48 +173,95 @@ public function get()
167173
{
168174
$this->plugin->setResponse();
169175
}
170-
176+
171177
private function getOverrideUsers() {
172178
$plugin = JPluginHelper::getPlugin('api', 'akeebasubs');
173179
$params = new JRegistry($plugin->params);
174-
180+
175181
$users = explode("\n", $params->get('override_create'));
176-
182+
177183
foreach ($users as $user) {
178184
$pcs = explode(':', $user);
179185
$uid = (int) $pcs[0];
180-
186+
181187
$slugs = explode(',', $pcs[1]);
182188
$trimmed_slugs = array_map('trim', $slugs);
183189
$override_users[$uid] = $trimmed_slugs;
184190
}
185191

186192
return $override_users;
187193
}
188-
194+
189195
private function getSubscriberUserid($newuser) {
190-
196+
191197
$db = JFactory::getDBO();
198+
$config = JFactory::getConfig();
199+
$jlang = JFactory::getLanguage();
200+
$jlang->load('com_users', JPATH_SITE, 'en-GB', true); // Load English (British)
201+
$jlang->load('com_users', JPATH_SITE, $jlang->getDefault(), true); // Load the site's default language
202+
$jlang->load('com_users', JPATH_SITE, null, true); // Load the currently selected language
203+
192204
$query = $db->getQuery(true);
193205
$query->select('id');
194206
$query->from('#__users');
195207
$query->where('email = ' . $db->Quote($newuser['email']));
196208
$db->setQuery($query);
197-
209+
198210
if ($uid = $db->loadResult()) {
199211
return $uid;
200212
} else {
201-
$akeeba_user = FOFModel::getTmpInstance('Jusers', 'AkeebasubsModel');
202-
$uid = $akeeba_user->createNewUser($newuser);
203-
213+
$uid = 0;
214+
$password_clear = JUserHelper::genRandomPassword();
215+
$salt = JUserHelper::genRandomPassword(32);
216+
$crypt = JUserHelper::getCryptedPassword($password_clear, $salt);
217+
$defaultUserGroup = 2;
218+
219+
$password = "$crypt:$salt";
220+
$instance = JUser::getInstance();
221+
$instance->set('id' , 0);
222+
$instance->set('name' , $newuser['name']);
223+
$instance->set('username' , $newuser['email']);
224+
$instance->set('password' , $password);
225+
$instance->set('password_clear' , $password_clear);
226+
$instance->set('email' , $newuser['email']);
227+
$instance->set('usertype' , 'deprecated');
228+
$instance->set('groups' , array($defaultUserGroup));
229+
// Here is possible set user profile details
230+
if($instance->save()) {
231+
$uid = $instance->id;
232+
}
233+
234+
$data['fromname'] = $config->get('fromname');
235+
$data['mailfrom'] = $config->get('mailfrom');
236+
$data['sitename'] = $config->get('sitename');
237+
$data['siteurl'] = JUri::root();
238+
239+
$data = array_merge($newuser, $data);
240+
$emailSubject = JText::sprintf(
241+
'COM_USERS_EMAIL_ACCOUNT_DETAILS',
242+
$data['name'],
243+
$data['sitename']
244+
);
245+
246+
$emailBody = JText::sprintf(
247+
'COM_USERS_EMAIL_REGISTERED_BODY',
248+
$data['name'],
249+
$data['sitename'],
250+
$data['siteurl'],
251+
$data['username'],
252+
$password_clear
253+
);
254+
255+
$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, $emailBody);
256+
204257
if ($uid) {
205258
return $uid;
206259
} else {
207260
return false;
208261
}
209262
}
210263
}
211-
264+
212265
private function checkLevel($level) {
213266
$akeeba_level = FOFModel::getTmpInstance('Levels','AkeebasubsModel')
214267
->only_once(1)

0 commit comments

Comments
 (0)