PageRenderTime 46ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/com_acymailing_starter_2.0.0_2011-07-06/back/controllers/toggle.php

https://gitlab.com/endomorphosis/OLAAaction
PHP | 185 lines | 181 code | 0 blank | 4 comment | 18 complexity | 1a444c26cd4c2df3eaa81d59f0f6dccd 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 ToggleController extends JController{
  10. var $allowedTablesColumn = array();
  11. var $deleteColumns = array();
  12. function __construct($config = array())
  13. {
  14. parent::__construct($config);
  15. $this->registerDefaultTask('toggle');
  16. $this->allowedTablesColumn['list']= array('published'=>'listid','visible'=>'listid');
  17. $this->allowedTablesColumn['subscriber']= array('confirmed'=>'subid','html'=>'subid','enabled'=>'subid');
  18. $this->allowedTablesColumn['template']=array('published'=>'tempid','premium'=>'tempid');
  19. $this->allowedTablesColumn['mail']=array('published'=>'mailid','visible'=>'mailid');
  20. $this->allowedTablesColumn['listsub']=array('status'=>'listid,subid');
  21. $this->allowedTablesColumn['plugins']=array('published'=>'id');
  22. $this->allowedTablesColumn['followup']=array('add'=>'mailid','update'=>'mailid');
  23. $this->allowedTablesColumn['rules']=array('published'=>'ruleid');
  24. $this->allowedTablesColumn['filter']=array('published'=>'filid');
  25. $this->allowedTablesColumn['fields']=array('published'=>'fieldid','required'=>'fieldid','frontcomp'=>'fieldid','backend'=>'fieldid','listing'=>'fieldid');
  26. $this->deleteColumns['queue']=array('subid','mailid');
  27. $this->deleteColumns['filter']=array('filid','filid');
  28. $this->deleteColumns['rules']=array('ruleid','ruleid');
  29. header( 'Cache-Control: no-store, no-cache, must-revalidate' );
  30. header( 'Cache-Control: post-check=0, pre-check=0', false );
  31. header( 'Pragma: no-cache' );
  32. }
  33. function toggle(){
  34. $completeTask = JRequest::getCmd('task');
  35. $task = substr($completeTask,0,strpos($completeTask,'_'));
  36. $elementId = substr($completeTask,strpos($completeTask,'_') +1);
  37. $value = JRequest::getVar('value','0','','int');
  38. $table = JRequest::getVar('table','','','word');
  39. $pkey = $this->allowedTablesColumn[$table][$task];
  40. if(empty($pkey)) exit;
  41. $function = $table.$task;
  42. if(method_exists($this,$function)){
  43. $this->$function($elementId,$value);
  44. }else{
  45. $db =& JFactory::getDBO();
  46. $db->setQuery('UPDATE '.acymailing_table($table).' SET '.$task.' = '.$value.' WHERE '.$pkey.' = '.intval($elementId).' LIMIT 1');
  47. $db->query();
  48. }
  49. $toggleClass = acymailing_get('helper.toggle');
  50. $extra = JRequest::getVar('extra',array(),'','array');
  51. if(!empty($extra)){
  52. foreach($extra as $key => $val){
  53. $extra[$key] = urldecode($val);
  54. }
  55. }
  56. echo $toggleClass->toggle(JRequest::getCmd('task',''),$value,$table,$extra);
  57. exit;
  58. }
  59. function followupadd($mailid,$value){
  60. $mailClass = acymailing_get('class.mail');
  61. $followup = $mailClass->get($mailid);
  62. if(empty($followup->mailid)){
  63. echo 'Could not load mailid '.$mailid;
  64. exit;
  65. }
  66. $listmailClass = acymailing_get('class.listmail');
  67. $mycampaign = $listmailClass->getCampaign($followup->mailid);
  68. if(empty($mycampaign->listid)){
  69. echo 'Could not get the attached campaign';
  70. exit;
  71. }
  72. $config = acymailing_config();
  73. $db =& JFactory::getDBO();
  74. $query = 'INSERT IGNORE INTO `#__acymailing_queue` (`mailid`,`senddate`,`priority`,`subid`) ';
  75. $query .= 'SELECT '.$followup->mailid.', b.`subdate` + '.$followup->senddate.' , '.(int) $config->get('priority_followup',2).', b.`subid` ';
  76. $query .= 'FROM `#__acymailing_listsub` as b';
  77. $query .=' WHERE b.`status` = 1 AND b.`listid` = '.$mycampaign->listid.' AND b.`subdate` > '.(time() - $followup->senddate);
  78. $db->setQuery($query);
  79. $db->query();
  80. $nbinserted = $db->getAffectedRows();
  81. if(!empty($nbupdated)){
  82. $campaignHelper = acymailing_get('helper.campaign');
  83. $campaignHelper->updateUnsubdate($mycampaign->listid,$followup->senddate);
  84. }
  85. echo JText::sprintf('ADDED_QUEUE',$nbinserted);
  86. exit;
  87. }
  88. function followupupdate($mailid,$value){
  89. $mailClass = acymailing_get('class.mail');
  90. $followup = $mailClass->get($mailid);
  91. if(empty($followup->mailid)){
  92. echo 'Could not load mailid '.$mailid;
  93. exit;
  94. }
  95. $listmailClass = acymailing_get('class.listmail');
  96. $mycampaign = $listmailClass->getCampaign($followup->mailid);
  97. if(empty($mycampaign->listid)){
  98. echo 'Could not get the attached campaign';
  99. exit;
  100. }
  101. $db =& JFactory::getDBO();
  102. $query = 'UPDATE #__acymailing_queue as a ';
  103. $query.= 'LEFT JOIN #__acymailing_listsub as b ON a.subid = b.subid AND b.listid = '.$mycampaign->listid;
  104. $query .= ' SET a.`senddate` = b.`subdate` + '.$followup->senddate;
  105. $query .= ' WHERE a.mailid = '.$followup->mailid;
  106. $db->setQuery($query);
  107. $db->query();
  108. $nbupdated = $db->getAffectedRows();
  109. if(!empty($nbupdated)){
  110. $campaignHelper = acymailing_get('helper.campaign');
  111. $campaignHelper->updateUnsubdate($mycampaign->listid,$followup->senddate);
  112. }
  113. echo JText::sprintf('NB_EMAILS_UPDATED',$nbupdated);
  114. exit;
  115. }
  116. function delete(){
  117. list($value1,$value2) = explode('_',JRequest::getCmd('value'));
  118. $table = JRequest::getVar('table','','','word');
  119. if(empty($table)) exit;
  120. $function = 'delete'.$table;
  121. if(method_exists($this,$function)){
  122. $this->$function($value1,$value2);
  123. exit;
  124. }
  125. list($key1,$key2) = $this->deleteColumns[$table];
  126. if(empty($key1) OR empty($key2) OR empty($value1) OR empty($value2)) exit;
  127. $db =& JFactory::getDBO();
  128. $db->setQuery('DELETE FROM '.acymailing_table($table).' WHERE '.$key1.' = '.intval($value1).' AND '.$key2.' = '.intval($value2));
  129. $db->query();
  130. exit;
  131. }
  132. function deleteconfig($namekey,$val){
  133. $config = acymailing_config();
  134. $newConfig = null;
  135. $newConfig->$namekey = $val;
  136. $config->save($newConfig);
  137. }
  138. function deletefollowup($campaignid,$mailid){
  139. $mailClass = acymailing_get('class.mail');
  140. $mailClass->delete((int) $mailid);
  141. }
  142. function deleteMail($mailid,$attachid){
  143. $mailid = intval($mailid);
  144. if(empty($mailid)) return false;
  145. $db =& JFactory::getDBO();
  146. $db->setQuery('SELECT attach FROM '.acymailing_table('mail').' WHERE mailid = '.$mailid.' LIMIT 1');
  147. $attachment = $db->loadResult();
  148. if(empty($attachment)) return;
  149. $attach = unserialize($attachment);
  150. unset($attach[$attachid]);
  151. $attachdb = serialize($attach);
  152. $db->setQuery('UPDATE '.acymailing_table('mail').' SET attach = '.$db->Quote($attachdb).' WHERE mailid = '.$mailid.' LIMIT 1');
  153. return $db->query();
  154. }
  155. function subscriberconfirmed($subid,$value){
  156. if(!empty($value)){
  157. $subscriberClass = acymailing_get('class.subscriber');
  158. $subscriberClass->confirmSubscription($subid);
  159. }else{
  160. $db =& JFactory::getDBO();
  161. $db->setQuery('UPDATE '.acymailing_table('subscriber').' SET confirmed = '.$value.' WHERE subid = '.intval($subid).' LIMIT 1');
  162. $db->query();
  163. }
  164. }
  165. function listsubstatus($ids,$status){
  166. list($listid,$subid) = explode('_',$ids);
  167. $listid = (int) $listid;
  168. $subid = (int) $subid;
  169. if(empty($subid) OR empty($listid)) exit;
  170. $listSubClass = acymailing_get('class.listsub');
  171. $lists = array();
  172. $lists[$status] = array($listid);
  173. if($listSubClass->updateSubscription($subid,$lists)) return;
  174. echo 'error while updating the subscription';
  175. }
  176. function pluginspublished($id,$publish){
  177. $db =& JFactory::getDBO();
  178. if(version_compare(JVERSION,'1.6.0','<')){
  179. $db->setQuery('UPDATE '.acymailing_table('plugins',false).' SET `published` = '.intval($publish).' WHERE `id` = '.intval($id).' AND (`folder` = \'acymailing\' OR `name` LIKE \'%acymailing%\' OR `element` LIKE \'%acymailing%\') LIMIT 1');
  180. }else{
  181. $db->setQuery('UPDATE `#__extensions` SET `enabled` = '.intval($publish).' WHERE `extension_id` = '.intval($id).' AND (`folder` = \'acymailing\' OR `name` LIKE \'%acymailing%\' OR `element` LIKE \'%acymailing%\') LIMIT 1');
  182. }
  183. $db->query();
  184. }
  185. }