· 10 years ago · Mar 01, 2016, 03:36 PM
1<?php
2
3class Churchapi_IndexController extends Core_Controller_Action_Standard
4{
5 public function indexAction()
6 {
7 $this->view->someVar = 'someVal';
8 }
9
10 public function signinAction()
11 {
12 //$device_type = $this->_getParam('device_type');
13 //$device_id = $this->_getParam('device_id');
14 $device_type = $this->getRequest()->getPost('device_type');
15 $device_id = $this->getRequest()->getPost('device_id');
16 $obj = json_decode($this->getRequest()->getRawBody());
17 echo $obj->device_id; die();
18
19
20
21
22 $mobile_id = $this->_getParam('mobile_id');
23 if(empty($device_type) || empty($device_id))
24 {
25 $result['success'] = 0;
26 $result['error_message'] = 'Unable to get device type or device id.';
27 echo json_encode($result); die();
28 }
29 $facebook_login = $this->_getParam('facebook_login');
30 $twitter_login = $this->_getParam('twitter_login');
31 $settings = Engine_Api::_()->getDbtable('settings', 'core');
32 $facebookTable = Engine_Api::_()->getDbtable('facebook', 'user');
33 $twitterTable = Engine_Api::_()->getDbtable('twitter', 'user');
34 $facebook = $facebookTable->getApi();
35 $db = Engine_Db_Table::getDefaultAdapter();
36 $ipObj = new Engine_IP();
37 $ipExpr = new Zend_Db_Expr($db->quoteInto('UNHEX(?)', bin2hex($ipObj->toBinary())));
38 $result = array();
39
40 $facebook_uid = $this->_getParam('facebook_uid');
41 $access_token = $this->_getParam('access_token');
42 if($facebook_login && $facebook_login == 1)
43 {
44 if(($facebook_login == 1) && (empty($access_token) || empty($facebook_uid) ))
45 {
46 $result['success'] = 0;
47 $result['error_message'] = 'The facebook credential is not correct';
48 echo json_encode($result); die();
49
50 }
51
52 if($facebook_login == 1 && !$facebook || 'none' == $settings->core_facebook_enable )
53 {
54 $result['success'] = 0;
55 $result['error_message'] = 'facebook login is not enabled in this app';
56
57 }
58 else if($facebook_login == 1 && !empty($facebook_uid))
59 {
60
61 $user_id = $facebookTable->select()
62 ->from($facebookTable, 'user_id')
63 ->where('facebook_uid = ?',$facebook_uid)
64 ->query()
65 ->fetchColumn();
66
67 // $select = $facebookTable->select()
68 // ->where('facebook_uid = ?', $facebook_uid);
69 // $row = $facebookTable->fetchRow($select);
70
71
72 if( $user_id && $fbuser = Engine_Api::_()->getItem('user', $user_id) )
73 {
74 Zend_Auth::getInstance()->getStorage()->write($user_id);
75
76 // Register login
77 $fbuser->lastlogin_date = date("Y-m-d H:i:s");
78 if( 'cli' !== PHP_SAPI ) {
79 $fbuser->lastlogin_ip = $ipExpr;
80 Engine_Api::_()->getDbtable('logins', 'user')->insert(array(
81 'user_id' => $user_id,
82 'ip' => $ipExpr,
83 'timestamp' => new Zend_Db_Expr('NOW()'),
84 'state' => 'success',
85 'source' => 'facebook',
86 ));
87 }
88
89 $fbuser->save();
90 $result['success'] = 0;
91 $result['facebook_signup'] = '1';
92 }
93 else
94 {
95 $result['success'] = 0;
96 $result['facebook_signup'] = '0';
97
98 }
99
100 }
101 }
102 if($twitter_login && $twitter_login == 1)
103 {
104 if(($twitter_login == 1) && (empty($_REQUEST['twitter_token']) || empty($_REQUEST['twitter_uid']) ))
105 {
106 $result['success'] = 0;
107 $result['error_message'] = 'The twitter credential is not correct';
108 echo json_encode($result); die();
109
110 }
111
112 if($twitter_login == 1 && !empty($_REQUEST['twitter_uid']))
113 {
114
115 $user_id = $twitterTable->select()
116 ->from($twitterTable, 'user_id')
117 ->where('twitter_uid = ?',$_REQUEST['twitter_uid'])
118 ->query()
119 ->fetchColumn();
120
121 if( $user_id && $twitter_user = Engine_Api::_()->getItem('user', $user_id) )
122 {
123 Zend_Auth::getInstance()->getStorage()->write($user_id);
124
125 // Register login
126 $twitter_user->lastlogin_date = date("Y-m-d H:i:s");
127 if( 'cli' !== PHP_SAPI ) {
128 $twitter_user->lastlogin_ip = $ipExpr;
129 Engine_Api::_()->getDbtable('logins', 'user')->insert(array(
130 'user_id' => $user_id,
131 'ip' => $ipExpr,
132 'timestamp' => new Zend_Db_Expr('NOW()'),
133 'state' => 'success',
134 'source' => 'twitter',
135 ));
136 }
137
138 $twitter_user->save();
139 $result['success'] = 0;
140 $result['twitter_signup'] = '1';
141 }
142 else
143 {
144 $result['success'] = 0;
145 $result['twitter_signup'] = '0';
146
147 }
148
149 }
150 }
151
152 if(($_REQUEST['email'] && $_REQUEST['password']) || (!empty($fbuser)) || (!empty($twitter_user)))
153 {
154 $email = $_REQUEST['email'];
155 $password = $_REQUEST['password'];
156 if(!$email && !empty($fbuser))
157 {
158 $email = $fbuser->email;
159 }
160 if(!$email && empty($fbuser) && !empty($twitter_user))
161 {
162 $email = $twitter_user->email;
163 }
164
165 $user_table = Engine_Api::_()->getDbtable('users', 'user');
166 $user_select = $user_table->select()
167 ->where('email = ?', $email); // If post exists
168 $user = $user_table->fetchRow($user_select);
169 // Check if user exists
170 if( empty($user) )
171 {
172 $result['success']="0";
173 $result['message']="No record of a member with that email was found.";
174 echo json_encode($result); die;
175 }
176
177 try
178 {
179 $authResult = Engine_Api::_()->user()->authenticate(trim($_REQUEST['email']),trim($_REQUEST['password']));
180
181 }
182 catch(Exception $e)
183 {
184 die('error comes');
185
186 }
187
188 //$authResult = Engine_Api::_()->user()->authenticate("mishra.ashish@orangemantra.com", "12345678");
189 $authCode = $authResult->getCode();
190 Engine_Api::_()->user()->setViewer();
191 $result = array();
192
193 if($authCode != Zend_Auth_Result::SUCCESS && (!$facebook_login) && (!$twitter_login))
194 {
195 // Just redirect to home
196
197 $result['success']="0";
198 $result['message']="The credentials you have supplied are invalid. Please check your email and password, and try again.";
199 echo json_encode($result);
200 }
201 else
202 {
203
204 $viewer = Engine_Api::_()->user()->getViewer();
205 $user_id = $viewer->getIdentity() ;
206 if($user_id == 0 && !empty($fbuser) )
207 {
208 $viewer = $fbuser;
209 }
210 $user_id = $viewer->getIdentity();
211
212 if(!empty($twitter_user) )
213 {
214 $viewer = $twitter_user;
215 }
216 $user_id = $viewer->getIdentity();
217 //echo 'user_id'. $user_id; die;
218 if($user_id != 0)
219 {
220
221 if(!empty($fbuser))
222 {
223
224 $info = $facebookTable->select()
225 ->from($facebookTable)
226 ->where('user_id = ?', $viewer->getIdentity())
227 ->limit(1)
228 ->query()
229 ->fetch();
230 if( empty($info) )
231 {
232 $facebookTable->insert(array(
233 'user_id' => $viewer->getIdentity(),
234 'facebook_uid' => $facebook_uid,
235 'access_token' => $access_token,
236 'expires' => 0, // @todo make sure this is correct
237 ));
238 }
239 else
240 {
241 // Save info to db
242 $facebookTable->update(array(
243 'facebook_uid' => $facebook_uid,
244 'access_token' => $access_token,
245 'expires' => 0, // @todo make sure this is correct
246 ), array(
247 'user_id = ?' => $viewer->getIdentity(),
248 ));
249 //}
250 }
251
252 }
253 if(!empty($twitter_user))
254 {
255
256 $info = $twitterTable->select()
257 ->from($twitterTable)
258 ->where('user_id = ?', $viewer->getIdentity())
259 ->limit(1)
260 ->query()
261 ->fetch();
262 if( empty($info) )
263 {
264 $twitterTable->insert(array(
265 'user_id' => $viewer->getIdentity(),
266 'twitter_uid' => $_REQUEST['twitter_uid'],
267 'twitter_token' => $_REQUEST['twitter_token'],
268 'twitter_secret' => $_REQUEST['twitter_secret'],
269 ));
270 }
271 else
272 {
273 // Save info to db
274 $twitterTable->update(array(
275 'twitter_uid' => $_REQUEST['twitter_uid'],
276 'twitter_token' => $_REQUEST['twitter_token'],
277 'twitter_secret' => $_REQUEST['twitter_secret'],// @todo make sure this is correct
278 ), array(
279 'user_id = ?' => $viewer->getIdentity(),
280 ));
281 //}
282 }
283
284 }
285
286
287 $row = Engine_Api::_()->blaze()->checkChurchMembership($viewer);
288 $church_id = "$row->group_id";
289 if(!$row){
290 $church_id = 0;
291 }
292 if(isset($viewer->user_cover))
293 {
294 if (Engine_Api::_()->hasModuleBootstrap('advalbum')) {
295 $this->view->photo = $photo = Engine_Api::_()->getItem('advalbum_photo', $viewer->user_cover);
296 } else {
297 $this->view->photo = $photo = Engine_Api::_()->getItem('album_photo', $viewer->user_cover);
298 }
299
300 }
301
302 $result['success']="1";
303 $result['group_id']= $church_id;
304 $result['photo_url']=rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$viewer->getPhotoUrl('thumb.profile');
305
306 if($viewer->user_cover!=0){
307 if(isset($photo)){
308 $result['cover_photo_url']=rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$photo->getPhotoUrl('thumb.profile');
309 }
310 }
311 else{
312 $result['cover_photo_url']="false";
313 }
314
315 $onmobileTable = Engine_Api::_()->getDbtable('onmobile', 'user');
316 $onmobileTable->check($viewer,$device_type,$device_id);
317
318
319 $pushnotificationTable = Engine_Api::_()->getDbtable('pushnotification', 'user');
320
321 //echo $mobile_id; die;
322 $pushnotificationTable->check($viewer,$device_type,$device_id,$mobile_id);
323
324
325 $deviceInfo = $pushnotificationTable->getDeviceInfo($viewer->getIdentity(),$device_id,$device_type,$mobile_id);
326 $result['mobile_id'] = $deviceInfo->mobile_id;
327 $result['device_id'] = $deviceInfo->device_id;
328 $result['device_type'] = $deviceInfo->device_type;
329 $message = "You have logged in from mobile";
330
331 // if($result['device_type'] == 'android')
332 // {
333 // Engine_Api::_()->churchapi()->send_push_notification();
334 // Engine_Api::_()->churchapi()->send_android_notification($deviceInfo->device_id, $message);
335 // }
336 // if($result['device_type'] == 'ios')
337 // {
338 // echo $deviceInfo->device_id; die;
339 // Engine_Api::_()->churchapi()->send_ios_notification($deviceInfo->device_id, $message);
340 // }
341
342 $group_owner = Engine_Api::_()->blaze()->getChurchOwner($viewer);
343 if($group_owner->group_id!=null)
344 {
345 $result['church_id'] ="$group_owner->group_id";
346 }
347 else
348 {
349 $result['church_id'] ="0";
350 }
351 $user_list = array();
352 foreach($viewer->toArray() as $key=>$value){
353 $user_list[$key]="$value";
354 }
355 $result['result']=$user_list;
356
357 echo json_encode($result);
358
359 $db = Engine_Db_Table::getDefaultAdapter();
360 $ipObj = new Engine_IP();
361 $ipExpr = new Zend_Db_Expr($db->quoteInto('UNHEX(?)', bin2hex($ipObj->toBinary())));
362 // Register login
363 $loginTable = Engine_Api::_()->getDbtable('logins', 'user');
364 $loginTable->insert(array(
365 'user_id' => $viewer->getIdentity(),
366 'email' => $viewer->email,
367 'ip' => $ipExpr,
368 'timestamp' => new Zend_Db_Expr('NOW()'),
369 'state' => 'success',
370 'active' => true,
371 ));
372 $login_id = $loginTable->getAdapter()->lastInsertId();
373 $onlineTable = Engine_Api::_()->getDbtable('online', 'user');
374 $onlineTable->check($viewer);
375
376
377
378 }
379
380 else
381 {
382 $result['success'] = "0";
383 $result['message'] = "user is not available";
384 echo json_encode($result);
385 }
386 }
387 }
388 else
389 {
390 $result['success']="0";
391 $result['message']="The credentials you have supplied not valid.";
392 echo json_encode($result);
393
394 }
395
396
397 die;
398 }
399
400
401 public function signupAction()
402 {
403
404 //Email already exit or not check user email validation
405 /***********************
406 // $passconf = $_POST['passconf'];
407 // $profile_type = $_POST['profile_type'];
408 // $timezone = $_POST['timezone'];
409 // $terms = $_POST['terms'];
410
411 *******************************************************/
412 //********************dd@om****************************/
413
414 if($_POST['email'] !='' && $_POST['terms'] !='' && ($_POST['password'] !='' || $_POST['facebook_login'] != '' || $_POST['twitter_login'] != ''))
415 {
416
417 $email = $_POST['email'];
418 $password = $_POST['password'];
419 $userTable = Engine_Api::_()->getDbtable('users', 'user');
420 $user = $userTable->fetchRow($userTable->select()->where('email = ?', $email));
421
422 if( !$user || !$user->getIdentity() )
423 {
424 $result['success']="1";
425 echo json_encode($result);
426 }
427 else
428 {
429 $result['success']="0";
430 $result['message']="Someone has already registered this email address, please use another one.";
431 echo json_encode($result); die;
432
433 }
434 }
435 else
436 {
437 $result['success']="0";
438 $result['message']="Some thing is wrong, check your credentails.";
439 echo json_encode($result); die;
440 }
441 //echo 'test'.$_POST['first_name'].$_POST['last_name'].$_POST['gender']; die;
442 if($_POST['first_name'] && $_POST['last_name'] && $_POST['gender'])
443 {
444
445 $_POST['first_name'];
446 $_POST['last_name'];
447 $_POST['gender'];
448 $_POST['birthdate'];
449 $_POST['website'];
450 $_POST['education_level'];
451 $_POST['country'];
452 $_POST['location'];
453 $_POST['about_me'];
454 $_POST['city'];
455 $_POST['interests'];
456 $_POST['relationship_status'];
457
458 $_POST['phone_number'];
459 $_POST['website'];
460 $_POST['twitter'];
461 $_POST['facebook'];
462
463 $_POST['neghbourhood'];
464 $_POST['interested_church'];
465
466
467 $profile_type = $_POST['profile_type'];
468 $timezone = $_POST['timezone'];
469 $terms = $_POST['terms'];
470
471
472
473 $db = Engine_Db_Table::getDefaultAdapter();
474 try {
475
476 $db->beginTransaction();
477 $settings = Engine_Api::_()->getApi('settings', 'core');
478 $random = ($settings->getSetting('user.signup.random', 0) == 1);
479 $emailadmin = ($settings->getSetting('user.signup.adminemail', 0) == 1);
480
481 if( $emailadmin ) {
482 // the signup notification is emailed to the first SuperAdmin by default
483 $users_table = Engine_Api::_()->getDbtable('users', 'user');
484 $users_select = $users_table->select()
485 ->where('level_id = ?', 1)
486 ->where('enabled >= ?', 1);
487 $super_admin = $users_table->fetchRow($users_select);
488 }
489
490 $data =$_POST;
491 if($data['profile_type'] == 4)
492 {
493 $level_id = 6;
494 }
495 else
496 {
497 $level_id = 4;
498 }
499
500
501 if( $random ) {
502 $data['password'] = Engine_Api::_()->user()->randomPass(10);
503 }
504
505 if (isset($data['language'])) {
506 $data['locale'] = $data['language'];
507 }
508 $data['displayname']=$data['first_name'].' '.$data['last_name'];
509
510 /**** for set user name by Ashish ***/
511 // $username = preg_replace('/([^@]*).*/', '$1', $data['email']);
512 // $uname_select = $users_table->select()
513 // ->where('username = ?', $username);
514 // $userName = $users_table->fetchRow($uname_select);
515 // if($userName){
516 // $data['username'] = $username.'.second';
517 // }
518 // else
519 // {
520 // $data['username'] = $username;
521 // }
522 /**** End of set user name ****/
523
524 $this->_registry->user = $user = Engine_Api::_()->getDbtable('users', 'user')->createRow();
525 $user->setFromArray($data);
526 $user->save();
527
528 $user_id = $user->user_id;
529 if(($_POST['facebook_login']) == 1)
530 {
531 if(empty($_POST['facebook_uid']) || empty($_POST['access_token']))
532 {
533 $result = array(
534 'error' => 'facebook details are not valid.'
535 );
536 echo json_encode($result); die;
537 }
538 if($_POST['facebook_login'] == 1 && !empty($_POST['facebook_uid']) && !empty($_POST['access_token']))
539 {
540 $values = array(
541 'user_id' => $user_id,
542 'facebook_uid' => $_POST['facebook_uid'],
543 'access_token' => $_POST['access_token'],
544 'expires' => 0
545 );
546 try
547 {
548 $facebookTable = Engine_Api::_()->getDbtable('facebook', 'user');
549 $facebookTable->insert($values);
550 }
551 catch( Exception $e )
552 {
553
554 echo $e;
555 }
556 }
557 }
558
559 if(($_POST['twitter_login']) == 1){
560
561 if(empty($_POST['twitter_uid']) || empty($_POST['twitter_token']) || empty($_POST['twitter_secret']))
562 {
563 $result = array(
564 'error' => 'twitter details are not valid.'
565 );
566 echo json_encode($result); die;
567 }
568 if($_POST['twitter_login'] == 1 && !empty($_POST['twitter_uid']) && !empty($_POST['twitter_token']) && !empty($_POST['twitter_secret']))
569 {
570 $values = array(
571 'user_id' => $user_id,
572 'twitter_uid' => $_POST['twitter_uid'],
573 'twitter_token' => $_POST['twitter_token'],
574 'twitter_secret' => $_POST['twitter_secret'],
575
576 );
577 try
578 {
579 $twitterTable = Engine_Api::_()->getDbtable('twitter', 'user');
580 $twitterTable->insert($values);
581 }
582 catch( Exception $e )
583 {
584
585 echo $e;
586 }
587
588
589 }
590
591 }
592
593
594 Engine_Api::_()->user()->setViewer($user);
595 // Increment signup counter
596 Engine_Api::_()->getDbtable('statistics', 'core')->increment('user.creations');
597 if( $user->verified && $user->enabled ) {
598 // Create activity for them
599 Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($user, $user, 'signup');
600 // Set user as logged in if not have to verify email
601 Engine_Api::_()->user()->getAuth()->getStorage()->write($user->getIdentity());
602 }
603
604 $mailType = null;
605 $mailParams = array(
606 'host' => $_SERVER['HTTP_HOST'],
607 'email' => $user->email,
608 'date' => time(),
609 'recipient_title' => $user->getTitle(),
610 'recipient_link' => $user->getHref(),
611 'recipient_photo' => $user->getPhotoUrl('thumb.icon'),
612 'object_link' => Zend_Controller_Front::getInstance()->getRouter()->assemble(array(), 'user_login', true),
613 );
614
615 // Add password to email if necessary
616 if( $random ) {
617 $mailParams['password'] = $data['password'];
618 }
619
620 // Mail stuff
621 switch( $settings->getSetting('user.signup.verifyemail', 0) ) {
622 case 0:
623 // only override admin setting if random passwords are being created
624 if( $random ) {
625 $mailType = 'core_welcome_password';
626 }
627 if( $emailadmin ) {
628 $mailAdminType = 'notify_admin_user_signup';
629
630 $mailAdminParams = array(
631 'host' => $_SERVER['HTTP_HOST'],
632 'email' => $user->email,
633 'date' => date("F j, Y, g:i a"),
634 'recipient_title' => $super_admin->displayname,
635 'object_title' => $user->displayname,
636 'object_link' => $user->getHref(),
637 );
638
639 }
640 break;
641
642 case 1:
643 // send welcome email
644 $mailType = ($random ? 'core_welcome_password' : 'core_welcome');
645 if( $emailadmin ) {
646 $mailAdminType = 'notify_admin_user_signup';
647
648 $mailAdminParams = array(
649 'host' => $_SERVER['HTTP_HOST'],
650 'email' => $user->email,
651 'date' => date("F j, Y, g:i a"),
652 'recipient_title' => $super_admin->displayname,
653 'object_title' => $user->getTitle(),
654 'object_link' => $user->getHref(),
655 );
656
657 }
658 break;
659
660 case 2:
661 // verify email before enabling account
662 $verify_table = Engine_Api::_()->getDbtable('verify', 'user');
663 $verify_row = $verify_table->createRow();
664 $verify_row->user_id = $user->getIdentity();
665 $verify_row->code = md5($user->email
666 . $user->creation_date
667 . $settings->getSetting('core.secret', 'staticSalt')
668 . (string) rand(1000000, 9999999));
669 $verify_row->date = $user->creation_date;
670 $verify_row->save();
671
672 $mailType = ($random ? 'core_verification_password' : 'core_verification');
673
674 $mailParams['object_link'] = Zend_Controller_Front::getInstance()->getRouter()->assemble(array(
675 'action' => 'verify',
676 'email' => $user->email,
677 'verify' => $verify_row->code
678 ), 'user_signup', true);
679
680 if( $emailadmin ) {
681 $mailAdminType = 'notify_admin_user_signup';
682
683 $mailAdminParams = array(
684 'host' => $_SERVER['HTTP_HOST'],
685 'email' => $user->email,
686 'date' => date("F j, Y, g:i a"),
687 'recipient_title' => $super_admin->displayname,
688 'object_title' => $user->getTitle(),
689 'object_link' => $user->getHref(),
690 );
691
692 }
693 break;
694
695 default:
696 // do nothing
697 break;
698 }
699
700 if( !empty($mailType) ) {
701 $this->_registry->mailParams = $mailParams;
702 $this->_registry->mailType = $mailType;
703 }
704
705 if( !empty($mailAdminType) ) {
706 $this->_registry->mailAdminParams = $mailAdminParams;
707 $this->_registry->mailAdminType = $mailAdminType;
708 }
709
710
711
712 $fieldsTable = Engine_Api::_()->fields()->getTable('user', 'values');
713 $field = $fieldsTable->createRow([
714 'item_id' => $user->user_id,
715 'value' => $data['profile_type'],
716 'field_id' => 1
717 ]);
718 $field->save();
719
720
721 foreach ($data as $key => $value) {
722 $mapsTable = Engine_Api::_()->fields()->getTable('user', 'meta');
723
724 $select = $mapsTable->select();
725 $select->from($mapsTable, [
726 'field_id'
727 ])->where('alias = ?', $key);
728
729 $fieldRow = $mapsTable->fetchRow($select);
730
731 if ($fieldRow && $key!='profile_type')
732 {
733
734 // echo "value====".$value;
735 // echo 'field_id====='.$fieldRow->field_id;
736 // echo "key===".$key."<br>";
737 $fieldsTable = Engine_Api::_()->fields()->getTable('user', 'values');
738 $field = $fieldsTable->createRow([
739 'item_id' => $user->user_id,
740 'value' => $value,
741 'field_id' => $fieldRow->field_id
742 ]);
743
744 // setto la data di nascita
745 // if (is_array($value)) {
746 // $field->value = "{$value['year']}-{$value['month']}-{$value['day']}";
747 // }
748
749 $field->save();
750
751 //echo "<pre>";
752 //print_r($field);
753 }
754 }
755
756
757
758 /*****************************************added by dd@om*****************************************
759 ******************************************added for create group*********************************
760 *************************************************************************************************/
761
762
763 if($data['profile_type']=="4" && $data['gorup_skip']=="1")
764 {
765
766 $package_id = Engine_Api::_()->getItemtable('sitegroup_package')->fetchRow(array('defaultpackage = ?' => 1))->package_id;
767 $this->view->quick = $quick = 1;
768
769 $viewer = $user;
770 global $sitegroup_is_approved;
771 $sitegroupHostName = str_replace('www.', '', @strtolower($_SERVER['HTTP_HOST']));
772
773 $getPackageAuth = Engine_Api::_()->sitegroup()->getPackageAuthInfo('sitegroup');
774 $levelHost = Engine_Api::_()->getApi('settings', 'core')->getSetting('sitegroup.level.createhost', 0);
775 $package = Engine_Api::_()->getApi('settings', 'core')->getSetting('sitegroup.lsettings', 0);
776 $LevelHost = Engine_Api::_()->user()->checkLevelHost($levelHost, 'sitegroup');
777 $PackagesHost = Engine_Api::_()->user()->checkPackageHost($package);
778 $sub_status_table = Engine_Api::_()->getDbTable('groupstatistics', 'sitegroup');
779
780 $maxCount = 10;
781 $table = Engine_Api::_()->getDbtable('groups', 'sitegroup');
782 $tablename = $table->info('name');
783 $select = $table->select()->from($tablename, array('count(*) as count'));
784 $results = $table->fetchRow($select);
785 if (($PackagesHost != $LevelHost) && ($results->count > $maxCount)) {
786 Engine_Api::_()->sitegroup()->setDisabledType();
787 Engine_Api::_()->getItemtable('sitegroup_package')->setEnabledPackages();
788 }
789 $sitegroup_featured = Zend_Registry::isRegistered('sitegroup_featured') ? Zend_Registry::get('sitegroup_featured') : null;
790 $manageadminsTable = Engine_Api::_()->getDbtable('manageadmins', 'sitegroup');
791 $row = $manageadminsTable->createRow();
792
793
794 //SET UP DATA NEEDED TO CHECK QUOTA
795
796 $sitegroup_category = Zend_Registry::isRegistered('sitegroup_category') ? Zend_Registry::get('sitegroup_category') : null;
797 $values['user_id'] = $viewer->user_id;
798 $count = Engine_Api::_()->getDbtable('groups', 'sitegroup')->countUserGroups($values);
799 $this->view->quota = $quota = Engine_Api::_()->authorization()->getPermission($viewer->level_id, 'sitegroup_group', 'max');
800 $this->view->current_count = $count;
801 $table = Engine_Api::_()->getItemTable('sitegroup_group');
802
803 // Create sitegroup
804 $values = array_merge($_POST, array(
805 'owner_id' => $viewer->user_id,
806 'package_id' => $package_id
807 ));
808
809
810 $sitegroup = $table->createRow();
811
812 if (Engine_Api::_()->getApi('subCore', 'sitegroup')->groupBaseNetworkEnable()) {
813 if (isset($values['networks_privacy']) && !empty($values['networks_privacy'])) {
814 if (in_array(0, $values['networks_privacy'])) {
815 $values['networks_privacy'] = new Zend_Db_Expr('NULL');
816 } else {
817 $values['networks_privacy'] = (string) ( is_array($values['networks_privacy']) ? join(",", $values['networks_privacy']) : $netowrkIds );
818 }
819 }
820 }
821 if (!empty($sitegroupUrlEnabled)) {
822 if (empty($show_url)) {
823 $resultGroupTable = $table->select()->where('title =?', $values['title'])->from($table, 'title')
824 ->query()->fetchAll(Zend_Db::FETCH_COLUMN);
825 $count_index = count($resultGroupTable);
826 $resultGroupUrl = $table->select()->where('group_url =?', $values['title'])->from($table, 'group_url')
827 ->query()->fetchAll(Zend_Db::FETCH_COLUMN);
828 $count_index_url = count($resultGroupUrl);
829 }
830 $urlArray = Engine_Api::_()->sitegroup()->getBannedUrls();
831 if (!empty($show_url)) {
832 if (in_array(strtolower($values['group_url']), $urlArray)) {
833 $form->addError(Zend_Registry::get('Zend_Translate')->_('Sorry, this URL has been restricted by our automated system. Please choose a different URL.'));
834 return;
835 }
836 } elseif (!empty($sitegroupUrlEnabled)) {
837 $lastgroup_id = $table->select()
838 ->from($table->info('name'), array('group_id'))->order('group_id DESC')
839 ->query()
840 ->fetchColumn();
841 $values['group_url'] = trim(preg_replace('/-+/', '-', preg_replace('/[^a-z0-9-]+/i', '-', strtolower($values['title']))), '-');
842 if (!empty($count_index) || !empty($count_index_url)) {
843 $lastgroup_id = $lastgroup_id + 1;
844 $values['group_url'] = $values['group_url'] . '-' . $lastgroup_id;
845 } else {
846 $values['group_url'] = $values['group_url'];
847 }
848 if (in_array(strtolower($values['group_url']), $urlArray)) {
849
850 $form->addError(Zend_Registry::get('Zend_Translate')->_('Sorry, this Group Title has been restricted by our automated system. Please choose a different Title.', array('escape' => false)));
851 return;
852 }
853 }
854 }
855
856 $sitegroup->setFromArray($values);
857
858
859 $user_level = $viewer->level_id;
860 if (!Engine_Api::_()->sitegroup()->hasPackageEnable()) {
861 $sitegroup->featured = Engine_Api::_()->authorization()->getPermission($user_level, 'sitegroup_group', 'featured');
862 $sitegroup->sponsored = Engine_Api::_()->authorization()->getPermission($user_level, 'sitegroup_group', 'sponsored');
863 $sitegroup->approved = Engine_Api::_()->authorization()->getPermission($user_level, 'sitegroup_group', 'approved');
864 } else {
865 $sitegroup->featured = $package->featured;
866 $sitegroup->sponsored = $package->sponsored;
867 if ($package->isFree() && !empty($sitegroup_is_approved) && !empty($getPackageAuth)) {
868 $sitegroup->approved = $package->approved;
869 } else {
870 $sitegroup->approved = 0;
871 }
872 }
873
874 if (!empty($sitegroup->approved)) {
875 $sitegroup->pending = 0;
876 $sitegroup->aprrove_date = date('Y-m-d H:i:s');
877
878 if (Engine_Api::_()->sitegroup()->hasPackageEnable()) {
879 $expirationDate = $package->getExpirationDate();
880 if (!empty($expirationDate))
881 $sitegroup->expiration_date = date('Y-m-d H:i:s', $expirationDate);
882 else
883 $sitegroup->expiration_date = '2250-01-01 00:00:00';
884 }
885 else {
886 $sitegroup->expiration_date = '2250-01-01 00:00:00';
887 }
888 }
889 if (!empty($sitegroup_category)) {
890 $sitegroup->save();
891 $group_id = $sitegroup->group_id;
892 }
893
894 if (!empty($sitegroup->approved)) {
895 Engine_Api::_()->sitegroup()->sendMail("ACTIVE", $sitegroup->group_id);
896 } else {
897 Engine_Api::_()->sitegroup()->sendMail("APPROVAL_PENDING", $sitegroup->group_id);
898 }
899
900 $manageadminsTable = Engine_Api::_()->getDbtable('manageadmins', 'sitegroup');
901 $row = $manageadminsTable->createRow();
902 $row->user_id = $sitegroup->owner_id;
903 $row->group_id = $sitegroup->group_id;
904 $row->save();
905
906 //START PROFILE MAPS WORK
907 Engine_Api::_()->getDbtable('profilemaps', 'sitegroup')->profileMapping($sitegroup);
908
909
910 $group_id = $sitegroup->group_id;
911 if (!empty($sitegroupUrlEnabled) && empty($show_url)) {
912 $values['group_url'] = trim(preg_replace('/-+/', '-', preg_replace('/[^a-z0-9-]+/i', '-', strtolower($values['title']))), '-');
913 if (!empty($count_index) || !empty($count_index_url)) {
914 $values['group_url'] = $values['group_url'] . '-' . $group_id;
915 $table->update(array('group_url' => $values['group_url']), array('group_id = ?' => $group_id));
916 } else {
917 $values['group_url'] = $values['group_url'];
918 $table->update(array('group_url' => $values['group_url']), array('group_id = ?' => $group_id));
919 }
920 }
921
922 $sitegroupFormEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupform');
923 if ($sitegroupFormEnabled) {
924 $tablecontent = Engine_Api::_()->getDbtable('content', 'core');
925 $params = $tablecontent->select()
926 ->from($tablecontent->info('name'),'params')
927 ->where('name = ?', 'sitegroupform.sitegroup-viewform')
928 ->query()->fetchColumn();
929 $decodedParam = Zend_Json::decode($params);
930 $tabName = $decodedParam['title'];
931 if(empty($tabName))
932 $tabName = 'Form';
933 $sitegroupformtable = Engine_Api::_()->getDbtable('sitegroupforms', 'sitegroupform');
934 $optionid = Engine_Api::_()->getDbtable('groupquetions', 'sitegroupform');
935 $table_option = Engine_Api::_()->fields()->getTable('sitegroupform', 'options');
936 $sitegroupform = $table_option->createRow();
937 $sitegroupform->setFromArray($values);
938 $sitegroupform->label = $values['title'];
939 $sitegroupform->field_id = 1;
940 $option_id = $sitegroupform->save();
941 $optionids = $optionid->createRow();
942 $optionids->option_id = $option_id;
943 $optionids->group_id = $group_id;
944 $optionids->save();
945 $sitegroupforms = $sitegroupformtable->createRow();
946 if(isset($sitegroupforms->offer_tab_name))
947 $sitegroupforms->offer_tab_name = $tabName;
948 $sitegroupforms->description = 'Please leave your feedback below and enter your contact details.';
949 $sitegroupforms->group_id = $group_id;
950 $sitegroupforms->save();
951 }
952 //SET PHOTO
953 if (!empty($values['photo'])) {
954 $sitegroup->setPhoto($form->photo);
955 $sitegroupinfo = $sitegroup->toarray();
956 $albumTable = Engine_Api::_()->getDbtable('albums', 'sitegroup');
957 $album_id = $albumTable->update(array('photo_id' => $sitegroupinfo['photo_id'], 'owner_id' => $sitegroupinfo['owner_id']), array('group_id = ?' => $sitegroupinfo['group_id']));
958 } else {
959 $sitegroupinfo = $sitegroup->toarray();
960 $albumTable = Engine_Api::_()->getDbtable('albums', 'sitegroup');
961 $album_id = $albumTable->insert(array(
962 'photo_id' => 0,
963 'owner_id' => $sitegroupinfo['owner_id'],
964 'group_id' => $sitegroupinfo['group_id'],
965 'title' => $sitegroupinfo['title'],
966 'creation_date' => $sitegroupinfo['creation_date'],
967 'modified_date' => $sitegroupinfo['modified_date']));
968 }
969
970 //ADD TAGS
971 $tags = preg_split('/[,]+/', $values['tags']);
972 $tags = array_filter(array_map("trim", $tags));
973 $sitegroup->tags()->addTagMaps($viewer, $tags);
974
975 if (!empty($group_id)) {
976 $sitegroup->setLocation();
977 }
978
979 // Set privacy
980 $auth = Engine_Api::_()->authorization()->context;
981
982 //get the group admin list.
983 $ownerList = $sitegroup->getGroupOwnerList();
984
985 $sitegroupmemberEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupmember');
986 if (!empty($sitegroupmemberEnabled)) {
987 $roles = array('owner', 'member', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
988 } else {
989 $roles = array('owner', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
990 }
991
992
993 if (!isset($values['auth_view']) || empty($values['auth_view'])) {
994 $values['auth_view'] = "everyone";
995 }
996
997 if (!isset($values['auth_comment']) || empty($values['auth_comment'])) {
998 $values['auth_comment'] = "everyone";
999 }
1000
1001 $viewMax = array_search($values['auth_view'], $roles);
1002 $commentMax = array_search($values['auth_comment'], $roles);
1003
1004 foreach ($roles as $i => $role) {
1005 $auth->setAllowed($sitegroup, $role, 'view', ($i <= $viewMax));
1006 $auth->setAllowed($sitegroup, $role, 'comment', ($i <= $commentMax));
1007 $auth->setAllowed($sitegroup, $role, 'print', 1);
1008 $auth->setAllowed($sitegroup, $role, 'tfriend', 1);
1009 $auth->setAllowed($sitegroup, $role, 'overview', 1);
1010 $auth->setAllowed($sitegroup, $role, 'map', 1);
1011 $auth->setAllowed($sitegroup, $role, 'insight', 1);
1012 $auth->setAllowed($sitegroup, $role, 'layout', 1);
1013 $auth->setAllowed($sitegroup, $role, 'contact', 1);
1014 $auth->setAllowed($sitegroup, $role, 'form', 1);
1015 $auth->setAllowed($sitegroup, $role, 'offer', 1);
1016 $auth->setAllowed($sitegroup, $role, 'invite', 1);
1017 }
1018
1019 $sitegroupmemberEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupmember');
1020 if (!empty($sitegroupmemberEnabled)) {
1021 $roles = array('owner', 'like_member', 'member', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
1022 } else {
1023 $roles = array('owner', 'like_member', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
1024 }
1025
1026 //START WORK FOR SUB GROUP.
1027 if (empty($values['auth_sspcreate'])) {
1028 $values['auth_sspcreate'] = "owner";
1029 }
1030
1031 $createMax = array_search($values['auth_sspcreate'], $roles);
1032 foreach ($roles as $i => $role) {
1033 if ($role === 'like_member') {
1034 $role = $ownerList;
1035 }
1036 $auth->setAllowed($sitegroup, $role, 'sspcreate', ($i <= $createMax));
1037 }
1038 //END WORK FOR SUBGROUP
1039 //START SITEGROUPDISCUSSION PLUGIN WORK
1040 $sitegroupdiscussionEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupdiscussion');
1041 if ($sitegroupdiscussionEnabled) {
1042 //START DISCUSSION PRIVACY WORK
1043 if (empty($values['sdicreate'])) {
1044 $values['sdicreate'] = "registered";
1045 }
1046
1047 $createMax = array_search($values['sdicreate'], $roles);
1048 foreach ($roles as $i => $role) {
1049 if ($role === 'like_member') {
1050 $role = $ownerList;
1051 }
1052 $auth->setAllowed($sitegroup, $role, 'sdicreate', ($i <= $createMax));
1053 }
1054 //END DISCUSSION PRIVACY WORK
1055 }
1056 //END SITEGROUPDISCUSSION PLUGIN WORK
1057 //START SITEGROUPALBUM PLUGIN WORK
1058 $sitegroupalbumEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupalbum');
1059 if ($sitegroupalbumEnabled) {
1060 //START PHOTO PRIVACY WORK
1061 if (empty($values['spcreate'])) {
1062 $values['spcreate'] = "registered";
1063 }
1064
1065 $createMax = array_search($values['spcreate'], $roles);
1066 foreach ($roles as $i => $role) {
1067 if ($role === 'like_member') {
1068 $role = $ownerList;
1069 }
1070 $auth->setAllowed($sitegroup, $role, 'spcreate', ($i <= $createMax));
1071 }
1072 //END PHOTO PRIVACY WORK
1073 }
1074 //END SITEGROUPALBUM PLUGIN WORK
1075 //START SITEGROUPDOCUMENT PLUGIN WORK
1076 $sitegroupDocumentEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupdocument');
1077 if ($sitegroupDocumentEnabled) {
1078 $sitegroupmemberEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupmember');
1079 if (!empty($sitegroupmemberEnabled)) {
1080 $roles = array('owner', 'like_member', 'member', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
1081 } else {
1082 $roles = array('owner', 'like_member', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
1083 }
1084
1085 if (empty($values['sdcreate'])) {
1086 $values['sdcreate'] = "registered";
1087 }
1088
1089 $createMax = array_search($values['sdcreate'], $roles);
1090 foreach ($roles as $i => $role) {
1091 if ($role === 'like_member') {
1092 $role = $ownerList;
1093 }
1094 $auth->setAllowed($sitegroup, $role, 'sdcreate', ($i <= $createMax));
1095 }
1096 }
1097 //END SITEGROUPDOCUMENT PLUGIN WORK
1098 //START SITEGROUPVIDEO PLUGIN WORK
1099 $sitegroupVideoEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupvideo');
1100 if ($sitegroupVideoEnabled) {
1101 if (empty($values['svcreate'])) {
1102 $values['svcreate'] = "registered";
1103 }
1104
1105 $createMax = array_search($values['svcreate'], $roles);
1106 foreach ($roles as $i => $role) {
1107 if ($role === 'like_member') {
1108 $role = $ownerList;
1109 }
1110 $auth->setAllowed($sitegroup, $role, 'svcreate', ($i <= $createMax));
1111 }
1112 }
1113 //END SITEGROUPVIDEO PLUGIN WORK
1114 //START SITEGROUPPOLL PLUGIN WORK
1115 $sitegroupPollEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegrouppoll');
1116 if ($sitegroupPollEnabled) {
1117 if (empty($values['splcreate'])) {
1118 $values['splcreate'] = "registered";
1119 }
1120
1121 $createMax = array_search($values['splcreate'], $roles);
1122 foreach ($roles as $i => $role) {
1123 if ($role === 'like_member') {
1124 $role = $ownerList;
1125 }
1126 $auth->setAllowed($sitegroup, $role, 'splcreate', ($i <= $createMax));
1127 }
1128 }
1129 //END SITEGROUPPOLL PLUGIN WORK
1130 //START SITEGROUPNOTE PLUGIN WORK
1131 $sitegroupNoteEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupnote');
1132 if ($sitegroupNoteEnabled) {
1133 if (empty($values['sncreate'])) {
1134 $values['sncreate'] = "registered";
1135 }
1136
1137 $createMax = array_search($values['sncreate'], $roles);
1138 foreach ($roles as $i => $role) {
1139 if ($role === 'like_member') {
1140 $role = $ownerList;
1141 }
1142 $auth->setAllowed($sitegroup, $role, 'sncreate', ($i <= $createMax));
1143 }
1144 }
1145 //END SITEGROUPNOTE PLUGIN WORK
1146 //START SITEGROUPMUSIC PLUGIN WORK
1147 $sitegroupMusicEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupmusic');
1148 if ($sitegroupMusicEnabled) {
1149 if (empty($values['smcreate'])) {
1150 $values['smcreate'] = "registered";
1151 }
1152
1153 $createMax = array_search($values['smcreate'], $roles);
1154 foreach ($roles as $i => $role) {
1155 if ($role === 'like_member') {
1156 $role = $ownerList;
1157 }
1158 $auth->setAllowed($sitegroup, $role, 'smcreate', ($i <= $createMax));
1159 }
1160 }
1161 //END SITEGROUPMUSIC PLUGIN WORK
1162 //START SITEGROUPEVENT PLUGIN WORK
1163 if ((Engine_Api::_()->hasModuleBootstrap('siteevent') && Engine_Api::_()->getDbtable('modules', 'siteevent')->getIntegratedModules(array('enabled' => 1, 'item_type' => 'sitegroup_group', 'item_module' => 'sitegroup')))) {
1164 if (empty($values['secreate'])) {
1165 $values['secreate'] = "registered";
1166 }
1167
1168 $createMax = array_search($values['secreate'], $roles);
1169 foreach ($roles as $i => $role) {
1170 if ($role === 'like_member') {
1171 $role = $ownerList;
1172 }
1173 $auth->setAllowed($sitegroup, $role, 'secreate', ($i <= $createMax));
1174 }
1175 }
1176 //END SITEGROUPEVENT PLUGIN WORK
1177 //START SITEGROUPMEMBER PLUGIN WORK
1178 $sitegroupMemberEnabled = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('sitegroupmember');
1179 $sitegroupAdminJoin = Engine_Api::_()->getApi('settings', 'core')->getSetting('church.admin.join', 1);
1180 if ($sitegroupMemberEnabled && $sitegroupAdminJoin == 1 ) {
1181 $membersTable = Engine_Api::_()->getDbtable('membership', 'sitegroup');
1182 $row = $membersTable->createRow();
1183 $row->resource_id = $sitegroup->group_id;
1184 $row->group_id = $sitegroup->group_id;
1185 $row->user_id = $sitegroup->owner_id;
1186 $row->notification = 1;
1187 $row->save();
1188 $sitegroup->member_count++;
1189 $sitegroup->save();
1190 }
1191 $memberInvite = Engine_Api::_()->getApi('settings', 'core')->getSetting('groupmember.invite.option', 1);
1192 $member_approval = Engine_Api::_()->getApi('settings', 'core')->getSetting('groupmember.member.approval.option', 1);
1193 if (empty($memberInvite)) {
1194 $memberInviteOption = Engine_Api::_()->getApi('settings', 'core')->getSetting('groupmember.invite.automatically', 1);
1195 $sitegroup->member_invite = $memberInviteOption;
1196 $sitegroup->save();
1197 }
1198 if (empty($member_approval)) {
1199 $member_approvalOption = Engine_Api::_()->getApi('settings', 'core')->getSetting('groupmember.member.approval.automatically', 1);
1200 $sitegroup->member_approval = $member_approvalOption;
1201 $sitegroup->save();
1202 }
1203 //END SITEGROUPMEMBER PLUGIN WORK
1204
1205 //START DEFAULT EMAIL TO SUPERADMIN WHEN ANYONE CREATE GROUPS.
1206 $emails = Engine_Api::_()->getApi('settings', 'core')->getSetting('sitegroup.defaultgroupcreate.email', Engine_API::_()->seaocore()->getSuperAdminEmailAddress());
1207 if(!empty($emails)) {
1208 $emails = explode(",", $emails);
1209 $host = $_SERVER['HTTP_HOST'];
1210 $newVar = _ENGINE_SSL ? 'http://' : 'http://';
1211 $object_link = $newVar . $host . $sitegroup->getHref();
1212 $viewerGetTitle = $viewer->getTitle();
1213 $sender_link = '<a href=' . $newVar . $host . $viewer->getHref() . ">$viewerGetTitle</a>";
1214 foreach ($emails as $email) {
1215 $email = trim($email);
1216 Engine_Api::_()->getApi('mail', 'core')->sendSystem($email, 'SITEGROUP_GROUP_CREATION', array(
1217 'sender' => $sender_link,
1218 'object_link' => $object_link,
1219 'object_title' => $sitegroup->getTitle(),
1220 'object_description' => $sitegroup->getDescription(),
1221 'queue' => true
1222 ));
1223 }
1224 }
1225 //END DEFAULT EMAIL TO SUPERADMIN WHEN ANYONE CREATE GROUPS.
1226
1227 if (!empty($sitegroup) && !empty($sitegroup->draft) && empty($sitegroup->pending))
1228 {
1229 Engine_Api::_()->sitegroup()->attachGroupActivity($sitegroup);
1230
1231
1232 //START AUTOMATICALLY LIKE THE GROUP WHEN MEMBER CREATE A GROUP.
1233 $autoLike = Engine_Api::_()->getApi('settings', 'core')->getSetting('sitegroup.automatically.like', 1);
1234 if (!empty($autoLike)) {
1235 Engine_Api::_()->sitegroup()->autoLike($sitegroup->group_id, 'sitegroup_group');
1236 }
1237 //END AUTOMATICALLY LIKE THE GROUP WHEN MEMBER CREATE A GROUP.
1238 //SENDING ACTIVITY FEED TO FACEBOOK.
1239 $enable_Facebooksefeed = $enable_fboldversion = Engine_Api::_()->getDbtable('modules', 'core')->isModuleEnabled('facebooksefeed');
1240 if (!empty($enable_Facebooksefeed)) {
1241
1242 $sitegroup_array = array();
1243 $sitegroup_array['type'] = 'sitegroup_new';
1244 $sitegroup_array['object'] = $sitegroup;
1245
1246 Engine_Api::_()->facebooksefeed()->sendFacebookFeed($sitegroup_array);
1247 }
1248 }
1249
1250
1251 }
1252
1253
1254 /************************************************************************************************
1255 ******************************************End group**********************************************
1256 *************************************************************************************************/
1257
1258 $db->commit();
1259
1260 }
1261 catch (Exception $e)
1262 {
1263 $db->rollBack();
1264 throw $e;
1265 }
1266 try
1267 {
1268
1269 $userTable = Engine_Api::_()->getDbTable('users','user');
1270 $test = $userTable->update(array('level_id' => $level_id), array('user_id = ?' => $user->user_id));
1271
1272 }
1273 catch (Exception $e)
1274 {
1275 die;
1276
1277
1278 }
1279
1280 }
1281
1282
1283
1284
1285 die();
1286 }
1287
1288
1289 public function usersAction()
1290 {
1291
1292 $table = Engine_Api::_()->getItemTable('user');
1293 $userTableName = $table->info('name');
1294
1295 $searchTable = Engine_Api::_()->fields()->getTable('user', 'search');
1296 $searchTableName = $searchTable->info('name');
1297
1298 $options = $_REQUEST;
1299 // Process options
1300 $tmp = array();
1301 $originalOptions = $options;
1302 foreach( $options as $k => $v ) {
1303 if( null == $v || '' == $v || (is_array($v) && count(array_filter($v)) == 0) ) {
1304 continue;
1305 } else if( false !== strpos($k, '_field_') ) {
1306 list($null, $field) = explode('_field_', $k);
1307 $tmp['field_' . $field] = $v;
1308 } else if( false !== strpos($k, '_alias_') ) {
1309 list($null, $alias) = explode('_alias_', $k);
1310 $tmp[$alias] = $v;
1311 } else {
1312 $tmp[$k] = $v;
1313 }
1314 }
1315 $options = $tmp;
1316
1317 //extract($options); // displayname
1318 $profile_type = @$options['profile_type'];
1319 $displayname = @$options['displayname'];
1320 if (!empty($options['extra'])) {
1321 extract($options['extra']); // is_online, has_photo, submit
1322 }
1323
1324 // Contruct query
1325 $select = $table->select()
1326 //->setIntegrityCheck(false)
1327 ->from($userTableName)
1328 ->joinLeft($searchTableName, "`{$searchTableName}`.`item_id` = `{$userTableName}`.`user_id`", null)
1329 //->group("{$userTableName}.user_id")
1330 ->where("{$userTableName}.search = ?", 1)
1331 ->where("{$userTableName}.enabled = ?", 1)
1332 ->order("{$userTableName}.displayname ASC");
1333
1334 // Build the photo and is online part of query
1335 if( isset($has_photo) && !empty($has_photo) ) {
1336 $select->where($userTableName.'.photo_id != ?', "0");
1337 }
1338
1339 if( isset($is_online) && !empty($is_online) ) {
1340 $select
1341 ->joinRight("engine4_user_online", "engine4_user_online.user_id = `{$userTableName}`.user_id", null)
1342 ->group("engine4_user_online.user_id")
1343 ->where($userTableName.'.user_id != ?', "0");
1344 }
1345
1346 // Add displayname
1347 if( !empty($displayname) ) {
1348 $select->where("(`{$userTableName}`.`username` LIKE ? || `{$userTableName}`.`displayname` LIKE ?)", "%{$displayname}%");
1349 }
1350
1351 // Build search part of query
1352 $searchParts = Engine_Api::_()->fields()->getSearchQuery('user', $options);
1353 foreach( $searchParts as $k => $v ) {
1354 $select->where("`{$searchTableName}`.{$k}", $v);
1355 }
1356
1357 // $select->where($userTableName.'.user_id = ?', $_POST['email']);
1358 //echo $select; die;
1359 $data = array();
1360 $paginator = $table->fetchAll($select);
1361
1362 foreach($paginator as $item)
1363 {
1364
1365 //$item['photo_url'] = $this->itemPhoto($item['photo_id'], 'thumb.icon');
1366 $user = Engine_Api::_()-> getItem('user',$item->getIdentity());
1367 $row = Engine_Api::_()->blaze()->checkChurchMembership($user);
1368 if($row)
1369 {
1370 $church_id = $row->group_id;
1371 }
1372 else
1373 {
1374 $church_id = "0";
1375 }
1376 $data[] = array(
1377 'type' => 'user',
1378 'id' => $item->getIdentity(),
1379 'guid' => $item->getGuid(),
1380 'label' => $item->getTitle(),
1381 'photo' => rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$item->getPhotoUrl('thumb.icon'),
1382 'url' => $item->getHref(),
1383 'email' => $item->email,
1384 'status' => $item->status,
1385 'status_date' => $item->status_date,
1386 'group_id' => $church_id
1387 );
1388
1389 }
1390 // echo "<pre>";
1391 // print_r($data);
1392 echo json_encode($data);
1393 die;
1394
1395 }
1396 public function churchlistAction()
1397 {
1398
1399 $table = Engine_Api::_()->getDbTable('groups', 'sitegroup');
1400 $rName = $table->info('name');
1401 $select = $table->select()
1402 ->where($rName . '.closed = ?', '0')
1403 ->where($rName . '.approved = ?', '1')
1404 ->where($rName . '.declined = ?', '0')
1405 ->where($rName . '.draft = ?', '1')
1406 ->where($rName . '.parent_id = ?', '0')
1407 ->where($rName . ".search = ?", 1);
1408
1409 $result =$table->fetchAll($select)->toArray();
1410 echo json_encode($result);
1411 die;
1412 }
1413
1414 public function signupphotoAction()
1415 {
1416
1417
1418 $table = Engine_Api::_()->getDbTable('users', 'user');
1419 $rName = $table->info('name');
1420 $select = $table->select()->where($rName . '.email = ?', $_POST['email']);
1421
1422
1423 $this->view->user = $user = $table->fetchRow($select);
1424 $this->view->viewer = $viewer = $table->fetchRow($select);
1425
1426 if( !$this->getRequest()->isPost() ) {
1427 return;
1428 }
1429 $filedata = $_FILES['photo'];
1430 // Uploading a new photo
1431 if( $filedata !== null ) {
1432 $db = $user->getTable()->getAdapter();
1433 $db->beginTransaction();
1434
1435 try {
1436 $fileElement = $filedata;
1437 $user->setPhoto($fileElement);
1438 $iMain = Engine_Api::_()->getItem('storage_file', $user->photo_id);
1439 $db->commit();
1440 }
1441 catch( Engine_Image_Adapter_Exception $e )
1442 {
1443 $db->rollBack();
1444
1445 }
1446 catch( Exception $e )
1447 {
1448 $db->rollBack();
1449 $result['success']="0";
1450 echo json_encode($result);
1451 throw $e;
1452 }
1453 $result['success']="1";
1454 $result['email']=$_POST['email'];
1455 echo json_encode($result);
1456 }
1457 else{
1458 $result['success']="0";
1459 echo json_encode($result);
1460 }
1461
1462
1463 die;
1464 }
1465
1466 public function coverphotoAction()
1467 {
1468
1469 $loged_in = Engine_Api::_()->user()->setViewer(Engine_Api::_() -> getItem('user', $this -> _getParam('user_id')));
1470 if($loged_in)
1471 {
1472 $viewer = Engine_Api::_()->user()->getViewer();
1473 }
1474 $user_id = $this->_getParam('user_id');
1475 if($_FILES['Filedata']['name']!='')
1476 {
1477
1478 $db = Engine_Db_Table::getDefaultAdapter();
1479 $db->beginTransaction();
1480
1481 $user = Engine_Api::_()->getItem('user', $user_id);
1482 $table = Engine_Api::_()->getDbTable('albums', 'album');
1483 $rName = $table->info('name');
1484 $select = $table->select()
1485 ->from($rName)
1486 ->where($rName.'.owner_id = ?', $user_id)
1487 ->where($rName.'.title = ?', "User Cover Photos");
1488 $row = $table->fetchRow($select);
1489
1490
1491 if($row->album_id !='')
1492 {
1493 $album_id=$row->album_id;
1494 }
1495 else
1496 {
1497
1498 if($_FILES['Filedata']['name']!='')
1499 {
1500 $params = array();
1501 $params['category_id']=0;
1502 $params['title']='User Cover Photos';
1503 $params['owner_id']=$user_id;
1504 $params['owner_type']='user';
1505 $params['type']='cover';
1506 $params['search']='1';
1507 $album = Engine_Api::_()->getDbtable('albums', 'album')->createRow();
1508 $album->setFromArray($params);
1509 $album->save();
1510 $db->commit();
1511 $album_id=$album->album_id;
1512 }
1513
1514 }
1515
1516
1517 if($_FILES['Filedata']['name']!='')
1518 {
1519 $photoTable = Engine_Api::_()->getDbtable('photos', 'album');
1520 $photo = $photoTable->createRow();
1521 $photo->setFromArray(array(
1522 'owner_type' => 'user',
1523 'album_id' =>$album_id,
1524 'owner_id' => $viewer->getIdentity()
1525 ));
1526 $photo->save();
1527
1528 $photo->order = $photo->photo_id;
1529 $photo->setPhoto($_FILES['Filedata']);
1530 $photo->save();
1531
1532 $this->view->status = true;
1533 $this->view->name = $_FILES['Filedata']['name'];
1534 $this->view->photo_id = $photo->photo_id;
1535
1536 $user->user_cover=$photo->photo_id;
1537 $user->save();
1538 }
1539
1540
1541
1542
1543
1544
1545 $activityFeedType = 'user_cover_update';
1546 $body = '{item:$subject} added a new cover photo.';
1547 $activityApi = Engine_Api::_()->getDbtable('actions', 'activity');
1548
1549
1550 if ($activityFeedType) {
1551 $action = $activityApi->addActivity($viewer, $photo, $activityFeedType,$body);
1552 }
1553 if ($action) {
1554 if ($photo)
1555 Engine_Api::_()->getDbtable('actions', 'activity')->attachActivity($action, $photo);
1556 }
1557
1558
1559 $result['success']="1";
1560 $result['message']="Successfully";
1561 $result['cover_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$photo->getPhotoUrl('thumb.profile');
1562
1563 $db->commit();
1564
1565 }
1566 else{
1567 $result['success']="0";
1568 $result['message']="Please upload image";
1569
1570
1571 }
1572
1573 echo json_encode($result);
1574 die;
1575 }
1576
1577
1578
1579 public function removecoverphotoAction()
1580 {
1581 $user_id = $this->_getParam('user_id');
1582 if(!empty($user_id))
1583 {
1584
1585 $db = Engine_Db_Table::getDefaultAdapter();
1586 $db->beginTransaction();
1587 $user = Engine_Api::_()->getItem('user', $user_id);
1588 $user->user_cover = 0;
1589 $user->save();
1590 $db->commit();
1591 if($user->user_cover == 0)
1592 {
1593 $result['success']="1";
1594 $result['message']="Successfully Removed";
1595 }
1596 else
1597 {
1598 $result['success']="0";
1599 $result['message']="Unable to remove image";
1600 }
1601
1602 }
1603 else
1604 {
1605 $result['success']="0";
1606 $result['message']="User is not available.";
1607
1608
1609 }
1610
1611 echo json_encode($result);
1612 die;
1613 }
1614
1615
1616 public function choosecoverphotoAction()
1617 {
1618 $user_id = $this->_getParam('user_id');
1619 //if ($this->getRequest()->isPost()) {
1620
1621 $db = Engine_Db_Table::getDefaultAdapter();
1622 $db->beginTransaction();
1623
1624 $user = Engine_Api::_()->getItem('user', $user_id);
1625
1626 $table = Engine_Api::_()->getDbtable('albums', 'album');
1627
1628 $select = $table->select()
1629 ->where("search = 1")
1630 ->where("owner_id = $user_id")
1631 ->where("type = 'cover'");
1632 // ->order($order . ' DESC');
1633
1634
1635 $album = $table->fetchRow($select);
1636
1637 $photo_table = Engine_Api::_()->getDbtable('photos', 'album');
1638 $select1 = $photo_table->select()
1639 ->where("album_id = $album->album_id");
1640
1641 $photo =$photo_table->fetchAll($select1);
1642
1643 $result = array();
1644 $album_list = array();
1645 foreach($photo as $data){
1646
1647 $result['photo_id'] = $data->getIdentity();
1648 $result['photo_link'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getHref();
1649 $result['photo_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getPhotoUrl('thumb.normal');
1650 $result['photo_title'] = $data->getTitle();
1651 $result['owner_link'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getOwner()->getHref();
1652
1653 $result['owner_title'] = $data->getOwner()->getTitle();
1654 $result['total'] = $data->view_count;
1655
1656 $album_list[] = $result;
1657
1658 }
1659
1660
1661
1662 echo json_encode($album_list);
1663 die;
1664 }
1665
1666 public function savecoverphotoAction()
1667 {
1668
1669
1670 $user_id = $this->_getParam('user_id');
1671 $photo_id = $this->_getParam('photo_id');
1672
1673 if ($photo_id !='' && $user_id!='') {
1674 $db = Engine_Db_Table::getDefaultAdapter();
1675 $db->beginTransaction();
1676
1677 $user = Engine_Api::_()->getItem('user', $user_id);
1678 $user->user_cover = $photo_id;
1679 $user->save();
1680 $db->commit();
1681 $photo = Engine_Api::_()->getItem('album_photo', $photo_id);
1682
1683
1684 $activityFeedType = 'user_cover_update';
1685 $body = '{item:$subject} added a new cover photo.';
1686 $activityApi = Engine_Api::_()->getDbtable('actions', 'activity');
1687
1688
1689 if ($activityFeedType) {
1690 $action = $activityApi->addActivity($user, $photo, $activityFeedType,$body);
1691 }
1692 if ($action) {
1693 if ($photo)
1694 Engine_Api::_()->getDbtable('actions', 'activity')->attachActivity($action, $photo);
1695 }
1696
1697 $result['cover_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$photo->getPhotoUrl('thumb.profile');
1698
1699 $result['success']="1";
1700 $result['message']="Successfully";
1701 }
1702 else
1703 {
1704 $result['success']="0";
1705 $result['message']="Please upload image";
1706
1707
1708 }
1709
1710
1711 echo json_encode($result);
1712 die;
1713 }
1714
1715 public function showcoverinfoAction()
1716 {
1717
1718 $user_id = $this->_getParam('user_id');
1719 if($user_id!=''){
1720
1721 $db = Engine_Db_Table::getDefaultAdapter();
1722 $db->beginTransaction();
1723
1724 $user = Engine_Api::_()->getItem('user', $user_id);
1725 $row = Engine_Api::_()->blaze()->checkChurchMembership($user);
1726 $church_id = "$row->group_id";
1727 if(!$row){
1728 $church_id = 0;
1729 }
1730 else
1731 {
1732 $church_id = $church_id;
1733 $result['group_name']= $row->title;
1734 }
1735
1736 $result['group_id']= $church_id;
1737 $result['photo_url']=rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$user->getPhotoUrl('thumb.profile');
1738
1739 if($user->user_cover!=0){
1740 $photo = Engine_Api::_()->getItem('album_photo', $user->user_cover);
1741 $result['cover_photo_url']=rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$photo->getPhotoUrl('thumb.profile');
1742 }
1743 else{
1744 $result['cover_photo_url']="false";
1745 }
1746
1747 // http://dev.churchblaze.com/churchapi/index/showcoverinfo/user_id/65/viewer_id/1003
1748 $viewer_id =$this->_getParam('viewer_id');
1749 if($viewer_id!='')
1750 {
1751
1752 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
1753 $row = $user->membership()->getRow($viewer);
1754
1755 if($viewer_id==$user_id)
1756 {
1757 $result['is_friend'] ="Self";
1758 }
1759 else if($user->membership()->isMember($viewer) && $row->active!=0){
1760 $result['is_friend'] ="Yes";
1761 }
1762 else{
1763 $result['is_friend'] ="No";
1764 }
1765
1766
1767
1768 if($row->resource_approved){
1769 $result['resource_approved'] ="Yes";
1770
1771 }
1772 else{
1773 $result['resource_approved'] ="No";
1774 }
1775
1776 if($row->user_approved){
1777 $result['user_approved'] ="Yes";
1778 }
1779 else{
1780 $result['user_approved'] ="No";
1781 }
1782 }
1783 else
1784 {
1785 $result['is_friend'] ="Self";
1786 }
1787
1788 $result['displayname'] =$user->displayname;
1789 $result['username'] = $user->username;
1790 $result['user_id'] = $user->user_id;
1791 $result['status'] = $user->status;
1792 $result['view_count'] = $user->view_count;
1793 $result['email'] =$user->email;
1794
1795
1796
1797 }
1798
1799
1800 echo json_encode($result);
1801
1802 die;
1803
1804 }
1805
1806
1807 public function userblogsAction()
1808 {
1809
1810 $user_id = $this->_getParam('user_id');
1811 if($user_id!='')
1812 {
1813 $user = Engine_Api::_()->getItem('user', $user_id);
1814 // Get paginator
1815 $this->view->paginator = $paginator = Engine_Api::_()->getItemTable('blog')->getBlogsPaginator(array(
1816 'orderby' => 'creation_date',
1817 'draft' => '0',
1818 'user_id' => $user_id,
1819 ));
1820
1821 // Set item count per page and current page number
1822 $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 5));
1823 $paginator->setCurrentPageNumber($this->_getParam('page', 1));
1824
1825 $result = array();
1826 $blog_list = array();
1827 foreach($paginator as $data)
1828 {
1829 $result['blog_id']= $data->getIdentity();
1830 $result['blog_link'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') . $data->getHref();
1831 $result['blog_title'] = $data->getTitle();
1832 $result['creation_date'] = $data->creation_date;
1833 $result['body'] =$this->view->string()->truncate($this->view->string()->stripTags($data->body), 200);
1834 $result['user_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getOwner()->getPhotoUrl();
1835 $result['user_profile_link'] =rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getOwner()->getHref();
1836 $result['user_title'] =$data->getOwner()->getTitle();
1837
1838
1839 $blog_list[] = $result;
1840
1841 }
1842
1843 }
1844
1845 echo json_encode($blog_list);
1846 die;
1847
1848
1849 }
1850 public function usergroupsAction()
1851 {
1852
1853 $user_id = $this->_getParam('user_id');
1854 if($user_id!='')
1855 {
1856 $user = Engine_Api::_()->getItem('user', $user_id);
1857
1858 $membership = Engine_Api::_()->getDbtable('membership', 'group');
1859 $this->view->paginator = $paginator = Zend_Paginator::factory($membership->getMembershipsOfSelect($user));
1860
1861 // Set item count per page and current page number
1862 $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 5));
1863 $paginator->setCurrentPageNumber($this->_getParam('page', 1));
1864
1865 $result = array();
1866 $blog_list = array();
1867 foreach($paginator as $data)
1868 {
1869 $result['group_id']= $data->getIdentity();
1870 $result['group_link'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') . $data->getHref();
1871 $result['group_title'] = $data->getTitle();
1872 $result['creation_date'] = $data->creation_date;
1873 $result['body'] =$this->view->string()->truncate($this->view->string()->stripTags($data->getDescription()), 200);
1874 $result['user_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getOwner()->getPhotoUrl();
1875 $result['user_profile_link'] =rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getOwner()->getHref();
1876 $result['user_title'] =$data->getOwner()->getTitle();
1877
1878
1879 $group_list[] = $result;
1880
1881 }
1882 }
1883
1884 echo json_encode($group_list);
1885 die;
1886
1887 }
1888
1889 public function editphotoAction()
1890 {
1891
1892
1893 $user_id = $this->_getParam('user_id');
1894 if($user_id!='')
1895 {
1896 $user = Engine_Api::_()->getItem('user', $user_id);
1897
1898 if( !$this->getRequest()->isPost() ) {
1899 return;
1900 }
1901 $filedata = $_FILES['Filedata'];
1902 // Uploading a new photo
1903 if( $filedata !== null ) {
1904 $db = Engine_Db_Table::getDefaultAdapter();
1905 $db->beginTransaction();
1906
1907 try {
1908 $fileElement = $filedata;
1909
1910 $user->setPhoto($fileElement);
1911
1912 $iMain = Engine_Api::_()->getItem('storage_file', $user->photo_id);
1913
1914 // Insert activity
1915 $action = Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($user, $user, 'profile_photo_update',
1916 '{item:$subject} added a new profile photo.');
1917
1918 // Hooks to enable albums to work
1919
1920
1921 $db->commit();
1922 }
1923
1924 // If an exception occurred within the image adapter, it's probably an invalid image
1925 catch( Engine_Image_Adapter_Exception $e )
1926 {
1927 $db->rollBack();
1928 }
1929
1930 // Otherwise it's probably a problem with the database or the storage system (just throw it)
1931 catch( Exception $e )
1932 {
1933 $db->rollBack();
1934 throw $e;
1935 }
1936 }
1937 $result['success']="1";
1938 $result['message']="Successfully";
1939 $result['photo_url']=rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$user->getPhotoUrl('thumb.profile');
1940 echo json_encode($result);
1941 }
1942 else
1943 {
1944 $result['success']="0";
1945 echo json_encode($result);
1946 }
1947
1948
1949 die;
1950 }
1951
1952
1953 public function confirmAction()
1954 {
1955
1956
1957 // Get viewer and other user
1958 $viewer_id = $this->_getParam('user_id');
1959 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
1960
1961 if( null == ($user_id = $this->_getParam('friend_id')) ||
1962 null == ($user = Engine_Api::_()->getItem('user', $user_id)) ) {
1963 $result['success']="0";
1964 $result['message']="Friend id not in list";
1965 echo json_encode($result);
1966 die;
1967 }
1968
1969 // Make form
1970
1971
1972 $friendship = $viewer->membership()->getRow($user);
1973 if( $friendship->active ) {
1974 $result['success']="0";
1975 $result['message']="Already Friend";
1976 echo json_encode($result);
1977 die;
1978 }
1979
1980 // Process
1981 $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
1982 $db->beginTransaction();
1983
1984 try {
1985 $viewer->membership()->setResourceApproved($user);
1986
1987 // Add activity
1988 if( !$user->membership()->isReciprocal() ) {
1989 Engine_Api::_()->getDbtable('actions', 'activity')
1990 ->addActivity($user, $viewer, 'friends_follow', '{item:$subject} is now following {item:$object}.');
1991 } else {
1992 Engine_Api::_()->getDbtable('actions', 'activity')
1993 ->addActivity($user, $viewer, 'friends', '{item:$object} is now friends with {item:$subject}.');
1994 Engine_Api::_()->getDbtable('actions', 'activity')
1995 ->addActivity($viewer, $user, 'friends', '{item:$object} is now friends with {item:$subject}.');
1996 }
1997
1998 // Add notification
1999 if( !$user->membership()->isReciprocal() ) {
2000 Engine_Api::_()->getDbtable('notifications', 'activity')
2001 ->addNotification($user, $viewer, $user, 'friend_follow_accepted');
2002 } else {
2003 Engine_Api::_()->getDbtable('notifications', 'activity')
2004 ->addNotification($user, $viewer, $user, 'friend_accepted');
2005 }
2006
2007 // Set the requests as handled
2008 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2009 ->getNotificationBySubjectAndType($viewer, $user, 'friend_request');
2010 if( $notification ) {
2011 $notification->mitigated = true;
2012 $notification->read = 1;
2013 $notification->save();
2014 }
2015 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2016 ->getNotificationBySubjectAndType($viewer, $user, 'friend_follow_request');
2017 if( $notification ) {
2018 $notification->mitigated = true;
2019 $notification->read = 1;
2020 $notification->save();
2021 }
2022
2023 // Increment friends counter
2024 Engine_Api::_()->getDbtable('statistics', 'core')->increment('user.friendships');
2025
2026 $db->commit();
2027
2028 $message = Zend_Registry::get('Zend_Translate')->_('You are now friends with %s');
2029 $message = sprintf($message, $user->__toString());
2030
2031 $this->view->status = true;
2032 $this->view->message = $message;
2033 $reuslt['message']=strip_tags($message);
2034 $reuslt['success']="1";
2035
2036
2037 } catch( Exception $e ) {
2038 $db->rollBack();
2039 $reuslt['message']="Error";
2040 $reuslt['success']="0";
2041
2042 }
2043
2044 echo json_encode($reuslt);
2045 die;
2046 }
2047
2048 public function rejectAction()
2049 {
2050
2051 $viewer_id = $this->_getParam('user_id');
2052 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
2053
2054 if( null == ($user_id = $this->_getParam('friend_id')) ||
2055 null == ($user = Engine_Api::_()->getItem('user', $user_id)) ) {
2056 $result['success']="0";
2057 $result['message']="Error";
2058 echo json_encode($result);
2059 die;
2060 }
2061
2062
2063
2064 // Process
2065 $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
2066 $db->beginTransaction();
2067
2068 try {
2069 if ($viewer->membership()->isMember($user)) {
2070 $viewer->membership()->removeMember($user);
2071 }
2072
2073 // Set the request as handled
2074 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2075 ->getNotificationBySubjectAndType($viewer, $user, 'friend_request');
2076 if( $notification ) {
2077 $notification->mitigated = true;
2078 $notification->read = 1;
2079 $notification->save();
2080 }
2081 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2082 ->getNotificationBySubjectAndType($viewer, $user, 'friend_follow_request');
2083 if( $notification ) {
2084 $notification->mitigated = true;
2085 $notification->read = 1;
2086 $notification->save();
2087 }
2088
2089 $db->commit();
2090
2091 $message = Zend_Registry::get('Zend_Translate')->_('You cancel friend request from %s');
2092 $message = sprintf($message, $user->__toString());
2093
2094 $result['message']=strip_tags($message);
2095 $result['success']="1";
2096
2097
2098 } catch( Exception $e ) {
2099 $db->rollBack();
2100
2101 }
2102
2103 echo json_encode($result);
2104 die;
2105 }
2106
2107
2108 public function addAction()
2109 {
2110 $viewer_id = $this->_getParam('user_id');
2111 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
2112
2113 if( null == ($user_id = $this->_getParam('friend_id')) ||
2114 null == ($user = Engine_Api::_()->getItem('user', $user_id)) )
2115 {
2116 $result['success']="0";
2117 $result['message']="Error";
2118 echo json_encode($result);
2119 die;
2120 }
2121
2122 // check that user is not trying to befriend 'self'
2123 if( $viewer->isSelf($user) ) {
2124
2125 $result['success']="0";
2126 $result['message']="You cannot befriend yourself.";
2127 echo json_encode($result);
2128 die;
2129 }
2130
2131 // check that user is already friends with the member
2132 if( $user->membership()->isMember($viewer) ) {
2133
2134 $result['success']="0";
2135 $result['message']="You are already friends with this member.";
2136 echo json_encode($result);
2137 die;
2138 }
2139
2140 // check that user has not blocked the member
2141 if( $viewer->isBlocked($user) ) {
2142
2143 $result['success']="0";
2144 $result['message']="Friendship request was not sent because you blocked this member.";
2145 echo json_encode($result);
2146 die;
2147 }
2148
2149
2150 // Process
2151 $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
2152 $db->beginTransaction();
2153
2154 try {
2155
2156 // send request
2157 $user->membership()
2158 ->addMember($viewer)
2159 ->setUserApproved($viewer);
2160
2161 if( !$viewer->membership()->isUserApprovalRequired() && !$viewer->membership()->isReciprocal() ) {
2162 // if one way friendship and verification not required
2163
2164 // Add activity
2165 Engine_Api::_()->getDbtable('actions', 'activity')
2166 ->addActivity($viewer, $user, 'friends_follow', '{item:$subject} is now following {item:$object}.');
2167
2168 // Add notification
2169 Engine_Api::_()->getDbtable('notifications', 'activity')
2170 ->addNotification($user, $viewer, $viewer, 'friend_follow');
2171
2172 $message = Zend_Registry::get('Zend_Translate')->_("You are now following this member.");
2173
2174 } else if( !$viewer->membership()->isUserApprovalRequired() && $viewer->membership()->isReciprocal() ){
2175 // if two way friendship and verification not required
2176
2177 // Add activity
2178 Engine_Api::_()->getDbtable('actions', 'activity')
2179 ->addActivity($user, $viewer, 'friends', '{item:$object} is now friends with {item:$subject}.');
2180 Engine_Api::_()->getDbtable('actions', 'activity')
2181 ->addActivity($viewer, $user, 'friends', '{item:$object} is now friends with {item:$subject}.');
2182
2183 // Add notification
2184 Engine_Api::_()->getDbtable('notifications', 'activity')
2185 ->addNotification($user, $viewer, $user, 'friend_accepted');
2186
2187 $message = Zend_Registry::get('Zend_Translate')->_("You are now friends with this member.");
2188
2189 } else if( !$user->membership()->isReciprocal() ) {
2190 // if one way friendship and verification required
2191
2192 // Add notification
2193 Engine_Api::_()->getDbtable('notifications', 'activity')
2194 ->addNotification($user, $viewer, $user, 'friend_follow_request');
2195
2196 $message = Zend_Registry::get('Zend_Translate')->_("Your friend request has been sent.");
2197
2198 } else if( $user->membership()->isReciprocal() ) {
2199 // if two way friendship and verification required
2200
2201 // Add notification
2202 Engine_Api::_()->getDbtable('notifications', 'activity')
2203 ->addNotification($user, $viewer, $user, 'friend_request');
2204
2205 $message = Zend_Registry::get('Zend_Translate')->_("Your friend request has been sent successfully.");
2206 }
2207
2208 $db->commit();
2209
2210 $result['message']=strip_tags($message);
2211 $result['success']="1";
2212
2213
2214 } catch( Exception $e ) {
2215 $db->rollBack();
2216 $result['message']="Error";
2217 $result['success']="0";
2218
2219 }
2220
2221 echo json_encode($result);
2222 die;
2223 }
2224
2225 public function removeAction()
2226 {
2227
2228 $viewer_id = $this->_getParam('user_id');
2229 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
2230
2231 if( null == ($user_id = $this->_getParam('friend_id')) ||
2232 null == ($user = Engine_Api::_()->getItem('user', $user_id)) ) {
2233 $result['message']="Error Occurred";
2234 $result['success']="0";
2235 }
2236
2237
2238 // Process
2239 $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
2240 $db->beginTransaction();
2241
2242 try {
2243 if( $this->_getParam('rev') ) {
2244 $viewer->membership()->removeMember($user);
2245 } else {
2246 $user->membership()->removeMember($viewer);
2247 }
2248
2249 // Remove from lists?
2250 // @todo make sure this works with one-way friendships
2251 $user->lists()->removeFriendFromLists($viewer);
2252 $viewer->lists()->removeFriendFromLists($user);
2253
2254 // Set the requests as handled
2255 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2256 ->getNotificationBySubjectAndType($user, $viewer, 'friend_request');
2257 if( $notification ) {
2258 $notification->mitigated = true;
2259 $notification->read = 1;
2260 $notification->save();
2261 }
2262 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2263 ->getNotificationBySubjectAndType($viewer, $user, 'friend_follow_request');
2264 if( $notification ) {
2265 $notification->mitigated = true;
2266 $notification->read = 1;
2267 $notification->save();
2268 }
2269
2270 $db->commit();
2271
2272 $message = Zend_Registry::get('Zend_Translate')->_('This person has been removed from your friends.');
2273 $result['message']=strip_tags($message);
2274 $result['success']="1";
2275
2276 } catch( Exception $e ) {
2277 $db->rollBack();
2278 $result['message']="Error";
2279 $result['success']="0";
2280 }
2281
2282 echo json_encode($result);
2283 die;
2284 }
2285
2286 public function userfriendsAction()
2287 {
2288
2289 $viewer_id = $this->_getParam('user_id');
2290 $subject = Engine_Api::_()->getItem('user', $viewer_id);
2291
2292 $select = $subject->membership()->getMembersOfSelect();
2293 $this->view->friends = $friends = $paginator = Zend_Paginator::factory($select);
2294
2295 // Set item count per page and current page number
2296 $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage', 15));
2297 $paginator->setCurrentPageNumber($this->_getParam('page', 1));
2298
2299 // Get stuff
2300 $ids = array();
2301 foreach( $friends as $friend ) {
2302 $ids[] = $friend->resource_id;
2303 }
2304 $this->view->friendIds = $ids;
2305
2306 // Get the items
2307 $friendUsers = array();
2308 foreach( Engine_Api::_()->getItemTable('user')->find($ids) as $item) {
2309
2310 $data[] = array(
2311 'type' => 'user',
2312 'id' => $item->getIdentity(),
2313 'guid' => $item->getGuid(),
2314 'label' => $item->getTitle(),
2315 'photo' => rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$item->getPhotoUrl('thumb.icon'),
2316 'url' => rtrim('http://' . $_SERVER['HTTP_HOST'], '/').$item->getHref(),
2317 'email' => $item->email,
2318 'status' => $item->status,
2319 'status_date' => $item->status_date,
2320 );
2321
2322 }
2323 // echo "<pre>";
2324 // print_r($data);
2325 echo json_encode($data);
2326 die;
2327
2328
2329 }
2330
2331 public function cancelsentrequestAction()
2332 {
2333
2334 $viewer_id = $this->_getParam('user_id');
2335 $viewer = Engine_Api::_()->getItem('user', $viewer_id);
2336
2337 if( null == ($user_id = $this->_getParam('friend_id')) ||
2338 null == ($user = Engine_Api::_()->getItem('user', $user_id)) ) {
2339 $result['message']="Error Occurred";
2340 $result['success']="0";
2341 }
2342
2343
2344 // Process
2345 $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
2346 $db->beginTransaction();
2347
2348 try {
2349 $user->membership()->removeMember($viewer);
2350
2351 // Set the requests as handled
2352 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2353 ->getNotificationBySubjectAndType($user, $viewer, 'friend_request');
2354 if ($notification) {
2355 $notification->mitigated = true;
2356 $notification->read = 1;
2357 $notification->save();
2358 }
2359 $notification = Engine_Api::_()->getDbtable('notifications', 'activity')
2360 ->getNotificationBySubjectAndType($user, $viewer, 'friend_follow_request');
2361 if ($notification) {
2362 $notification->mitigated = true;
2363 $notification->read = 1;
2364 $notification->save();
2365 }
2366 $message = Zend_Registry::get('Zend_Translate')->_('Your friend request has been cancelled.');
2367 $db->commit();
2368 $result['message'] =$message;
2369 $result['success'] ="1";
2370
2371 } catch (Exception $e) {
2372 $db->rollBack();
2373 $result['message']= $message = Zend_Registry::get('Zend_Translate')->_('An error has occurred.');
2374 $result['success'] ="0";
2375
2376 }
2377
2378
2379
2380 echo json_encode($result);
2381 die;
2382
2383 }
2384
2385 public function editprofileAction()
2386 {
2387 $user_id = $this->_getParam('user_id');
2388 if($user_id!='')
2389 {
2390 $db = Engine_Db_Table::getDefaultAdapter();
2391 $db->beginTransaction();
2392 $user = Engine_Api::_()->getItem('user', $user_id);
2393 $values= $user->toArray();
2394
2395 $values = array_merge($values, Engine_Api::_()->fields()->getFieldsValuesByAlias($user));
2396
2397 foreach ($values as $key => $value) {
2398 $mapsTable = Engine_Api::_()->fields()->getTable('user', 'meta');
2399 if(!empty($_REQUEST[$key])){
2400 $value = $_REQUEST[$key];
2401 }
2402
2403 $select = $mapsTable->select();
2404 $select->from($mapsTable, [
2405 'field_id'
2406 ])->where('alias = ?', $key);
2407
2408 $fieldRow = $mapsTable->fetchRow($select);
2409
2410 if ($fieldRow) {
2411 $fieldsTable = Engine_Api::_()->fields()->getTable('user', 'values');
2412
2413 $where['field_id = ?'] = (int) $fieldRow->field_id;
2414 $where['item_id = ?'] = (int) $user_id;
2415
2416 if (is_array($value)) {
2417
2418 $field = $fieldsTable->update(array(
2419 'value' => "{$value['year']}-{$value['month']}-{$value['day']}"
2420 ), $where);
2421 } else {
2422
2423 $field = $fieldsTable->update(array(
2424 'value' => $value
2425 ), $where);
2426 }
2427 }
2428 }
2429
2430 $message = Zend_Registry::get('Zend_Translate')->_('Your changes have been saved.');
2431 $db->commit();
2432 $result['message'] =$message;
2433 $result['success'] ="1";
2434
2435
2436
2437 }
2438
2439 echo json_encode($result);
2440 die;
2441
2442 }
2443
2444
2445 public function editprofiledataAction()
2446 {
2447 $user_id = $this->_getParam('user_id');
2448 if($user_id!='')
2449 {
2450 $db = Engine_Db_Table::getDefaultAdapter();
2451 $db->beginTransaction();
2452 $user = Engine_Api::_()->getItem('user', $user_id);
2453 $values= $user->toArray();
2454
2455 $values = array_merge($values, Engine_Api::_()->fields()->getFieldsValuesByAlias($user));
2456
2457 $result['result'] =$values;
2458 $message = Zend_Registry::get('Zend_Translate')->_('Your changes have been saved.');
2459
2460 $result['message'] =$message;
2461 $result['success'] ="1";
2462
2463 }
2464
2465 echo json_encode($result);
2466 die;
2467
2468 }
2469 public function viewphotoAction()
2470 {
2471 $owner_id = $this->_getParam('user_id');
2472 $album_id = $this->_getParam('album_id');
2473
2474 if($owner_id!='' && $album_id!=''){
2475
2476 $photoTable = Engine_Api::_()->getDbtable('photos', 'album');
2477 $pName = $photoTable->info('name');
2478 $select_photo = $photoTable->select()
2479 ->from($pName)
2480 ->where($pName.'.album_id = ?', $album_id)
2481 ->where($pName.'.owner_id = ?', $owner_id);
2482
2483 $photos = $photoTable->fetchAll($select_photo);
2484
2485 $result = array();
2486 $album_list = array();
2487
2488 foreach($photos as $data)
2489 {
2490
2491 $result['photo_id'] = $data->photo_id;
2492 $result['photo_link'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getHref();
2493 $result['photo_photo'] = rtrim('http://' . $_SERVER['HTTP_HOST'], '/') .$data->getPhotoUrl('thumb.normal');
2494 $result['photo_title'] = $data->getTitle();
2495 $result['total'] = $data->view_count;
2496 $result['group_id']= $owner_id;
2497 $album_list[] = $result;
2498
2499 }
2500
2501
2502
2503 }
2504 else{
2505 $result['success']="0";
2506 $result['message']="Please upload image";
2507
2508
2509 }
2510
2511 echo json_encode($album_list);
2512 die;
2513
2514
2515 }
2516
2517 public function logoutAction()
2518 {
2519
2520 $user_id = $this -> _getParam('user_id');
2521 if(!$user_id){
2522 $result['success']="0";
2523 echo json_encode($result);
2524 die;
2525 }
2526 $loged_in = Engine_Api::_()->user()->setViewer(Engine_Api::_() ->getItem('user', $user_id));
2527 if($loged_in)
2528 {
2529 $viewer = Engine_Api::_()->user()->getViewer();
2530 if( !$viewer->getIdentity() ) {
2531 $this->view->status = false;
2532 $this->view->error = Zend_Registry::get('Zend_Translate')->_('You are already logged out.');
2533 if( null === $this->_helper->contextSwitch->getCurrentContext() ) {
2534 $this->_helper->redirector->gotoRoute(array(), 'default', true);
2535 }
2536 return;
2537 }
2538
2539 // Run logout hook
2540 $event = Engine_Hooks_Dispatcher::getInstance()->callEvent('onUserLogoutBefore', $viewer);
2541
2542 // Test activity @todo remove
2543 Engine_Api::_()->getDbtable('actions', 'activity')
2544 ->addActivity($viewer, $viewer, 'logout');
2545
2546 // Update online status
2547 $onlineTable = Engine_Api::_()->getDbtable('online', 'user')
2548 ->delete(array(
2549 'user_id = ?' => $viewer->getIdentity(),
2550 ));
2551
2552
2553 // Update online status
2554 $onmobileTable = Engine_Api::_()->getDbtable('onmobile', 'user')
2555 ->delete(array(
2556 'user_id = ?' => $viewer->getIdentity(),
2557 ));
2558
2559 $device_id = $this->_getParam('device_id');
2560 $device_type = $this->_getParam('device_type');
2561 $mobile_id = $this->_getParam('mobile_id');
2562 if($device_type)
2563 {
2564 $pushnotificationTable = Engine_Api::_()->getDbtable('pushnotification', 'user')
2565 ->delete(array(
2566 'user_id = ?' => $viewer->getIdentity(),
2567 'device_id = ?' => $device_id,
2568 'device_type = ?' => $device_type,
2569 'mobile_id = ?' => $mobile_id,
2570 ));
2571 }
2572 // Logout
2573 Engine_Api::_()->user()->getAuth()->clearIdentity();
2574
2575 if( !empty($_SESSION['login_id']) ) {
2576 Engine_Api::_()->getDbtable('logins', 'user')->update(array(
2577 'active' => false,
2578 ), array(
2579 'login_id = ?' => $_SESSION['login_id'],
2580 ));
2581 unset($_SESSION['login_id']);
2582 }
2583
2584
2585 // Run logout hook
2586 $event = Engine_Hooks_Dispatcher::getInstance()->callEvent('onUserLogoutAfter', $viewer);
2587
2588 $doRedirect = true;
2589
2590 // Clear twitter/facebook session info
2591
2592 // facebook api
2593 $facebookTable = Engine_Api::_()->getDbtable('facebook', 'user');
2594 $facebook = $facebookTable->getApi();
2595 $settings = Engine_Api::_()->getDbtable('settings', 'core');
2596 if( $facebook && 'none' != $settings->core_facebook_enable ) {
2597 /*
2598 $logoutUrl = $facebook->getLogoutUrl(array(
2599 'next' => 'http://' . $_SERVER['HTTP_HOST'] . $this->view->url(array(), 'default', true),
2600 ));
2601 */
2602 if( method_exists($facebook, 'getAccessToken') &&
2603 ($access_token = $facebook->getAccessToken()) ) {
2604 $doRedirect = false; // javascript will run to log them out of fb
2605 $this->view->appId = $facebook->getAppId();
2606 $access_array = explode("|", $access_token);
2607 if ( ($session_key = $access_array[1]) ) {
2608 $this->view->fbSession = $session_key;
2609 }
2610 }
2611 try {
2612 $facebook->clearAllPersistentData();
2613 } catch( Exception $e ) {
2614 // Silence
2615 }
2616 }
2617
2618 unset($_SESSION['facebook_lock']);
2619 unset($_SESSION['facebook_uid']);
2620 unset($_SESSION['twitter_lock']);
2621 unset($_SESSION['twitter_token']);
2622 unset($_SESSION['twitter_secret']);
2623 unset($_SESSION['twitter_token2']);
2624 unset($_SESSION['twitter_secret2']);
2625
2626 // Response
2627 $this->view->status = true;
2628 $this->view->message = Zend_Registry::get('Zend_Translate')->_('You are now logged out.');
2629 $result['success']="1";
2630 $result['message']="You are now logged out.";
2631 }
2632 else{
2633 $result['success']="0";
2634
2635 }
2636
2637 echo json_encode($result);
2638 die;
2639 }
2640 public function termsConditionAction()
2641 {
2642 $str = $this->view->translate('_CORE_TERMS_OF_SERVICE');
2643
2644 if ($str == strip_tags($str)) {
2645 //there is no HTML tags in the text
2646 $str = nl2br($str);
2647 } else {
2648 $str = $str;
2649 }
2650
2651 $result = array(
2652 'success' => 1,
2653 'terms' => $str
2654 );
2655 echo json_encode($result);
2656 die;
2657
2658 }
2659 public function pushNotificationAction()
2660 {
2661
2662 $message = 'You have logged in from mobile';
2663
2664
2665 $api_key = $this->_getParam('api_key');
2666 $reg_id = $this->_getParam('reg_id');
2667 if(empty($api_key) || empty($reg_id))
2668 {
2669 $result = array(
2670 'success' => '0',
2671 'message' => 'api or reg id not found',
2672 );
2673 echo json_encode($result); die;
2674 }
2675 $registrationIDs = array($reg_id);
2676 // $message = "congratulations";
2677 $url = 'https://android.googleapis.com/gcm/send';
2678 $fields = array(
2679 'registration_ids' => $registrationIDs,
2680 'data' => array( "message" => $message ),
2681 );
2682
2683 $headers = array(
2684 'Authorization: key=' . $api_key,
2685 'Content-Type: application/json');
2686
2687 $ch = curl_init();
2688 curl_setopt($ch, CURLOPT_URL, $url);
2689 curl_setopt( $ch, CURLOPT_POST, true );
2690 curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
2691 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
2692 curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($fields));
2693 $result = curl_exec($ch);
2694
2695 curl_close($ch);
2696 //echo $result;
2697 }
2698
2699 public function sendIosnotificationAction()
2700 {
2701
2702 $message = 'You have logged in from mobile';
2703 // $api_key = $this->_getParam('api_key');
2704 $deviceToken = $this->_getParam('reg_id');
2705 if(empty($deviceToken))
2706 {
2707 $result = array(
2708 'success' => '0',
2709 'message' => 'api or reg id not found',
2710 );
2711 echo json_encode($result); die;
2712 }
2713
2714
2715 // Put your private key's passphrase here:
2716 $passphrase = 'DevCertificates';
2717
2718 // Put your alert message here:
2719 $message = 'My first push notification!';
2720
2721 ////////////////////////////////////////////////////////////////////////////////
2722 $pemfile = $_SERVER['DOCUMENT_ROOT'].'/application/modules/Churchapi/externals/PushCertificates.pem';
2723
2724
2725
2726 $ctx = stream_context_create();
2727 stream_context_set_option($ctx, 'ssl', 'local_cert', $pemfile);
2728 stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
2729
2730 // Open a connection to the APNS server
2731 $fp = stream_socket_client(
2732 'ssl://gateway.sandbox.push.apple.com:2195', $err,
2733 $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
2734
2735 if (!$fp)
2736 exit("Failed to connect: $err $errstr" . PHP_EOL);
2737
2738 echo 'Connected to APNS' . PHP_EOL;
2739
2740 // Create the payload body
2741 $body['aps'] = array(
2742 'alert' => $message,
2743 'sound' => 'default'
2744 );
2745
2746 // Encode the payload as JSON
2747 $payload = json_encode($body);
2748
2749 // Build the binary notification
2750 $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
2751
2752 // Send it to the server
2753 $result = fwrite($fp, $msg, strlen($msg));
2754
2755 if (!$result)
2756 echo 'Message not delivered' . PHP_EOL;
2757 else
2758 echo 'Message successfully delivered' . PHP_EOL;
2759
2760 // Close the connection to the server
2761 fclose($fp);
2762 die;
2763 }
2764
2765
2766
2767
2768 }