PageRenderTime 49ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/master/plugins/system/regacymailing.php

https://github.com/sherdog/GitWitty
PHP | 282 lines | 278 code | 0 blank | 4 comment | 82 complexity | 837fe6db1c638b913f84cc6dc39f804e MD5 | raw file
  1. <?php
  2. /**
  3. * @copyright Copyright (C) 2009-2011 ACYBA SARL - All rights reserved.
  4. * @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
  5. */
  6. defined('_JEXEC') or die('Restricted access');
  7. ?>
  8. <?php
  9. class plgSystemRegacymailing extends JPlugin
  10. {
  11. function plgSystemRegacymailing(&$subject, $config){
  12. parent::__construct($subject, $config);
  13. }
  14. function onAfterRoute(){
  15. if(empty($_POST['option']) OR empty($_POST['func']) OR $_POST['option'] != 'com_virtuemart' OR $_POST['func'] != 'shopperupdate') return;
  16. $user =& JFactory::getUser();
  17. if(empty($user->id)) return;
  18. $acylistsdisplayed = JRequest::getString('acylistsdisplayed_dispall').','.JRequest::getString('acylistsdisplayed_onecheck');
  19. if(strlen($acylistsdisplayed) < 2) return;
  20. $listsDisplayed = explode(',',$acylistsdisplayed);
  21. JArrayHelper::toInteger($listsDisplayed);
  22. if(empty($listsDisplayed)) return;
  23. if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return;
  24. $userClass = acymailing::get('class.subscriber');
  25. $subid = $userClass->subid($user->id);
  26. if(empty($subid)) return; //The user should already be there
  27. $visiblelistschecked = JRequest::getVar( 'acysub', array(), '', 'array' );
  28. $acySubHidden = JRequest::getString( 'acysubhidden');
  29. if(!empty($acySubHidden)){
  30. $visiblelistschecked = array_merge($visiblelistschecked,explode(',',$acySubHidden));
  31. }
  32. $listsClass = acymailing::get('class.list');
  33. $allLists = $listsClass->getLists('listid');
  34. if(acymailing::level(1)){
  35. $allLists = $listsClass->onlyCurrentLanguage($allLists);
  36. }
  37. $formLists = array();
  38. foreach($listsDisplayed as $listidDisplayed){
  39. $newlists = null;
  40. $newlists['status'] = in_array($listidDisplayed,$visiblelistschecked) ? '1' : '-1';
  41. $formLists[$listidDisplayed] = $newlists;
  42. }
  43. $userClass->saveSubscription($subid,$formLists);
  44. }
  45. function onAfterRender(){
  46. $option = JRequest::getString('option');
  47. if(empty($option)) return;
  48. $components = array();
  49. $components['com_user'] = array('view' => array('register'),'lengthafter' => 200);
  50. $components['com_users'] = array('view' => array('registration'),'lengthafter' => 200, 'email' => 'jform\[email2\]', 'password' => 'jform\[password2\]');
  51. $components['com_alpharegistration'] = array('view' => array('register'),'lengthafter' => 250);
  52. $components['com_ccusers'] = array('view' => array('register'),'lengthafter' => 500);
  53. $components['com_virtuemart'] = array('view' => array('shop.registration','account.billing','checkout.index'),'viewvar' => 'page','lengthafter' => 500, 'acysubscribestyle' => 'style="clear:both"');
  54. $components['com_hikashop'] = array('view' => array('checkout','user'),'viewvar' => 'ctrl', 'lengthafter' => 500 , 'tdclass' => 'key', 'email' => 'data\[register\]\[email\]','password' => 'data\[register\]\[password2\]');
  55. $components['com_tienda'] = array('view' => array('checkout'),'lengthafter' => 500 , 'email' => 'email_address','password' => 'password2');
  56. $components['com_osemsc'] = array('view' => array('register'),'lengthafter' => 200,'email' => 'oseemail','password' => 'osepassword2');
  57. if(!isset($components[$option])) return;
  58. $viewVar = (isset($components[$option]['viewvar']) ? $components[$option]['viewvar'] : 'view');
  59. if(!in_array(JRequest::getString($viewVar,JRequest::getString('task')),$components[$option]['view'])) return;
  60. if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return;
  61. if(!isset($this->params)){
  62. $plugin =& JPluginHelper::getPlugin('system', 'regacymailing');
  63. $this->params = new JParameter( $plugin->params );
  64. }
  65. $visibleLists = $this->params->get('lists','None');
  66. if($visibleLists == 'None') return;
  67. $visibleListsArray = array();
  68. $listsClass = acymailing::get('class.list');
  69. $allLists = $listsClass->getLists('listid');
  70. if(acymailing::level(1)){
  71. $allLists = $listsClass->onlyCurrentLanguage($allLists);
  72. }
  73. if(strpos($visibleLists,',') OR is_numeric($visibleLists)){
  74. $allvisiblelists = explode(',',$visibleLists);
  75. foreach($allLists as $oneList){
  76. if($oneList->published AND in_array($oneList->listid,$allvisiblelists)) $visibleListsArray[] = $oneList->listid;
  77. }
  78. }elseif(strtolower($visibleLists) == 'all'){
  79. foreach($allLists as $oneList){
  80. if($oneList->published){$visibleListsArray[] = $oneList->listid;}
  81. }
  82. }
  83. if(empty($visibleListsArray)) return;
  84. $checkedLists = $this->params->get('listschecked','All');
  85. $userClass = acymailing::get('class.subscriber');
  86. $loggedinUser = JFactory::getUser();
  87. if(!empty($loggedinUser->id)){
  88. $currentSubid = $userClass->subid($loggedinUser->id);
  89. if(!empty($currentSubid)){
  90. $currentSubscription = $userClass->getSubscriptionStatus($currentSubid,$visibleListsArray);
  91. $checkedLists = '';
  92. foreach($currentSubscription as $listid => $oneSubsciption){
  93. if($oneSubsciption->status == '1') $checkedLists .= $listid.',';
  94. }
  95. }
  96. }
  97. if(strtolower($checkedLists) == 'all'){ $checkedListsArray = $visibleListsArray;}
  98. elseif(strpos($checkedLists,',') OR is_numeric($checkedLists)){ $checkedListsArray = explode(',',$checkedLists);}
  99. else{ $checkedListsArray = array();}
  100. $subText = $this->params->get('subscribetext');
  101. if(empty($subText)){
  102. $lang =& JFactory::getLanguage();
  103. $lang->load(ACYMAILING_COMPONENT,JPATH_SITE);
  104. if($this->params->get('displaymode','dispall') == 'dispall'){
  105. $subText = JText::_('SUBSCRIPTION').':';
  106. }else{
  107. $subText = JText::_('YES_SUBSCRIBE_ME');
  108. }
  109. }
  110. $body = JResponse::getBody();
  111. if(!empty($components[$option][$this->params->get('fieldafter','password')])){
  112. $after = $components[$option][$this->params->get('fieldafter','password')];
  113. }else{
  114. if($this->params->get('fieldafter','password') == 'custom'){ $after = $this->params->get('fieldaftercustom'); }
  115. else{ $after = ($this->params->get('fieldafter','password') == 'email') ? 'email' : 'password2'; }
  116. }
  117. $listsDisplayed = '<input type="hidden" value="'.implode(',',$visibleListsArray).'" name="acylistsdisplayed_'.$this->params->get('displaymode','dispall').'" />';
  118. $return = '';
  119. if($this->params->get('displaymode','dispall') == 'dispall'){
  120. foreach($visibleListsArray as $oneList){
  121. $check = in_array($oneList,$checkedListsArray) ? 'checked="checked"' : '';
  122. $return .= '<tr><td><input type="checkbox" id="acy_list_'.$oneList.'" class="acymailing_checkbox" name="acysub[]" '.$check.' value="'.$oneList.'"/></td><td nowrap="nowrap"><label for="acy_list_'.$oneList.'" class="acylabellist">';
  123. $return .= $allLists[$oneList]->name;
  124. $return .= '</label></td></tr>';
  125. }
  126. }else{
  127. $check = '';
  128. foreach($visibleListsArray as $oneList){
  129. if(in_array($oneList,$checkedListsArray)){ $check = 'checked="checked"'; break; };
  130. }
  131. $return = '<span class="acysubscribe_span"><input type="checkbox" id="acysubhidden" name="acysubhidden" value="'.implode(',',$visibleListsArray).'" '.$check.' /> <label for="acysubhidden">'.$subText.'</label>'.$listsDisplayed.'</span>';
  132. }
  133. $tdclass = '';
  134. if(!empty($components[$option]['tdclass'])) $tdclass = 'class="'.$components[$option]['tdclass'].'"';
  135. if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</tr>)#Uis',$body)){
  136. if($this->params->get('displaymode','dispall') == 'dispall'){
  137. $return = '<tr class="acysubscribe"><td '.$tdclass.' style="padding-top:5px" valign="top">'.$subText.$listsDisplayed.'</td><td><table>'.$return.'</table></td></tr>';
  138. }else{
  139. $return = '<tr class="acysubscribe"><td colspan="2">'.$return.'</td></tr>';
  140. }
  141. $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</tr>)#Uis','$1'.$return,$body,1);
  142. JResponse::setBody($body);
  143. return;
  144. }
  145. if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</div>)#Uis',$body)){
  146. if($this->params->get('displaymode','dispall') == 'dispall'){
  147. $return = '<div class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label><table>'.$return.'</table></div>';
  148. }else{
  149. $return = '<div class="acysubscribe" '.@$components[$option]['acysubscribestyle'].' >'.$return.'</div>';
  150. }
  151. $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</div>)#Uis','$1'.$return,$body,1);
  152. JResponse::setBody($body);
  153. return;
  154. }
  155. if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</p>)#Uis',$body)){
  156. if($this->params->get('displaymode','dispall') == 'dispall'){
  157. $return = '<div class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label><table>'.$return.'</table></div>';
  158. }else{
  159. $return = '<div class="acysubscribe">'.$return.'</div>';
  160. }
  161. $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</p>)#Uis','$1'.$return,$body,1);
  162. JResponse::setBody($body);
  163. return;
  164. }
  165. if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</dd>)#Uis',$body)){
  166. if($this->params->get('displaymode','dispall') == 'dispall'){
  167. $return = '<dt class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label></dt><dd><table>'.$return.'</table></dd>';
  168. }else{
  169. $return = '<div class="acysubscribe">'.$return.'</div>';
  170. }
  171. $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</dd>)#Uis','$1'.$return,$body,1);
  172. JResponse::setBody($body);
  173. return;
  174. }
  175. }
  176. function onUserBeforeSave($user, $isnew, $new){
  177. return $this->onBeforeStoreUser($user, $isnew);
  178. }
  179. function onBeforeStoreUser($user, $isnew){
  180. $this->oldUser = $user;
  181. return true;
  182. }
  183. function onUserAfterSave($user, $isnew, $success, $msg){
  184. return $this->onAfterStoreUser($user,$isnew,$success,$msg);
  185. }
  186. function onAfterStoreUser($user, $isnew, $success, $msg){
  187. if($success===false OR empty($user['email'])) return false;
  188. if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
  189. if(!isset($this->params)){
  190. $plugin =& JPluginHelper::getPlugin('system', 'regacymailing');
  191. $this->params = new JParameter( $plugin->params );
  192. }
  193. $config = acymailing::config();
  194. $joomUser = null;
  195. $joomUser->email = trim(strip_tags($user['email']));
  196. if(!empty($user['name'])) $joomUser->name = trim(strip_tags($user['name']));
  197. if(empty($user['block'])) $joomUser->confirmed = 1;
  198. $joomUser->enabled = 1 - (int)$user['block'];
  199. $joomUser->userid = $user['id'];
  200. $userClass = acymailing::get('class.subscriber');
  201. if(!$isnew AND !empty($this->oldUser['email']) AND $user['email'] != $this->oldUser['email']){
  202. $joomUser->subid = $userClass->subid($this->oldUser['email']);
  203. }
  204. if(empty($joomUser->subid)){
  205. $joomUser->subid = $userClass->subid($joomUser->userid);
  206. }
  207. $userClass->checkVisitor = false;
  208. $userClass->sendConf = false;
  209. if(isset($joomUser->email)){
  210. $userHelper = acymailing::get('helper.user');
  211. if(!$userHelper->validEmail($joomUser->email)) return true;
  212. }
  213. $subid = $userClass->save($joomUser);
  214. if($isnew || empty($joomUser->subid)){
  215. $listsToSubscribe = $config->get('autosub','None');
  216. $currentSubscription = $userClass->getSubscriptionStatus($subid);
  217. $config = acymailing::config();
  218. $listsClass = acymailing::get('class.list');
  219. $allLists = $listsClass->getLists('listid');
  220. if(acymailing::level(1)){
  221. $allLists = $listsClass->onlyCurrentLanguage($allLists);
  222. }
  223. $visiblelistschecked = JRequest::getVar( 'acysub', array(), '', 'array' );
  224. $acySubHidden = JRequest::getString( 'acysubhidden');
  225. if(!empty($acySubHidden)){
  226. $visiblelistschecked = array_merge($visiblelistschecked,explode(',',$acySubHidden));
  227. }
  228. if(empty($visiblelistschecked) AND !empty($_SESSION['acysub'])){
  229. $visiblelistschecked = $_SESSION['acysub'];
  230. unset($_SESSION['acysub']);
  231. }
  232. $listsArray = array();
  233. if(strpos($listsToSubscribe,',') OR is_numeric($listsToSubscribe)){
  234. $listsArrayParam = explode(',',$listsToSubscribe);
  235. foreach($allLists as $oneList){
  236. if($oneList->published AND (in_array($oneList->listid,$visiblelistschecked) || in_array($oneList->listid,$listsArrayParam))){$listsArray[] = $oneList->listid;}
  237. }
  238. }elseif(strtolower($listsToSubscribe) == 'all'){
  239. foreach($allLists as $oneList){
  240. if($oneList->published){$listsArray[] = $oneList->listid;}
  241. }
  242. }elseif(!empty($visiblelistschecked)){
  243. foreach($allLists as $oneList){
  244. if($oneList->published AND in_array($oneList->listid,$visiblelistschecked)){$listsArray[] = $oneList->listid;}
  245. }
  246. }
  247. $statusAdd = (empty($joomUser->enabled) OR (empty($joomUser->confirmed) AND $config->get('require_confirmation',false))) ? 2 : 1;
  248. $addlists = array();
  249. if(!empty($listsArray)){
  250. foreach($listsArray as $idOneList){
  251. if(!isset($currentSubscription[$idOneList])){
  252. $addlists[$statusAdd][] = $idOneList;
  253. }
  254. }
  255. }
  256. if(!empty($addlists)) {
  257. $listsubClass = acymailing::get('class.listsub');
  258. if(!empty($user['gid'])) $listsubClass->gid = $user['gid'];
  259. if(!empty($user['groups'])) $listsubClass->gid = $user['groups'];
  260. $listsubClass->addSubscription($subid,$addlists);
  261. }
  262. }else{
  263. if(!empty($this->oldUser['block']) AND !empty($joomUser->confirmed)){
  264. $userClass->confirmSubscription($subid);
  265. }
  266. }
  267. return true;
  268. }
  269. function onUserAfterDelete($user,$success,$msg){
  270. return $this->onAfterDeleteUser($user, $success, $msg);
  271. }
  272. function onAfterDeleteUser($user, $success, $msg){
  273. if($success===false) return false;
  274. if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
  275. $userClass = acymailing::get('class.subscriber');
  276. $subid = $userClass->subid($user['email']);
  277. if(!empty($subid)){
  278. $userClass->delete($subid);
  279. }
  280. return true;
  281. }
  282. }//endclass