actions.class.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. /**
  3. * cron actions.
  4. *
  5. * @package www.katao.fr
  6. * @subpackage cron
  7. * @author Your name here
  8. * @version SVN: $Id: actions.class.php 9301 2008-05-27 01:08:46Z dwhittle $
  9. */
  10. class cronActions extends sfActions {
  11. public function preExecute() {
  12. parent::preExecute();
  13. sfLoader::loadHelpers(array('Tag', 'Url'));
  14. }
  15. public function executeCheckOutdatedMemberDeposits($request) {
  16. // retrieve all deposits with pending status and "valid until" date before current time
  17. $criteria = new Criteria();
  18. $criteria->add(KataoMemberDepositPeer::STATUS, KataoMemberDeposit::STATUS_PENDING);
  19. $criteria->add(KataoMemberDepositPeer::VALID_UNTIL, date('Y-m-d H:i:s'), Criteria::LESS_THAN);
  20. $katao_member_deposits = KataoMemberDepositPeer::doSelectJoinKataoMember($criteria);
  21. if (0 < count($katao_member_deposits)) {
  22. $mailer = new wpMail();
  23. foreach ($katao_member_deposits as/*(KataoMemberDeposit)*/ $katao_member_deposit) {
  24. // set deposit status to expired
  25. $katao_member_deposit->setStatus(KataoMemberDeposit::STATUS_EXPIRED);
  26. $katao_member_deposit->save();
  27. // update member current amount to cancel deposit
  28. $katao_member =/*(KataoMember)*/ $katao_member_deposit->getKataoMember();
  29. if (KataoMemberDeposit::PAYMENT_MODE_WITHDRAWAL == $katao_member_deposit->getPaymentMode()) {
  30. $katao_member->setInitialAmount($katao_member->getCurrentAmount() + $katao_member_deposit->getAmount());
  31. } else {
  32. $katao_member->setInitialAmount($katao_member->getCurrentAmount() - $katao_member_deposit->getAmount());
  33. }
  34. $katao_member->save();
  35. // send an email to seo to notify him/her
  36. if (null != $katao_user = $katao_member->getFirstKataoUser()) {
  37. $katao_member_seo = wpConfig::getInstance()->getKataoMember();
  38. if (null != $katao_user_seo = $katao_member_seo->getFirstKataoUser()) {
  39. try {
  40. $swift_message = new Swift_Message('Votre dépot ne nous est pas parvenu à ce jour', sprintf('%s,
  41. Attention, tu t\'étais engagé(e) le %s a nous envoyer %s
  42. avant le %s afin d\'honorer le paiement de tes demandes.
  43. Cette date vient d\'arriver à échéance.
  44. Si ton solde %s est inferieur à ta prochaine demande,
  45. ELLE NE SERA PAS PRIS EN COMPTE DANS LES COMMANDES FOURNISSEURS.
  46. Merci de prendre contact rapidement avec %s au %s
  47. afin de régulariser ta situation
  48. %s', $katao_member->getFirstName(), $katao_member_deposit->getCreatedAtStr(), $katao_member_deposit->getAmountStr(), CatalyzDate::formatShort($katao_member_deposit->getValidUntil(null)), $katao_member->getCurrentAmountEuroStr(), $katao_member_seo->getFirstName(), $katao_user_seo->getPhone(), Utils::getKataoEmailFooter()));
  49. $mailer->send($swift_message, new Swift_Address($katao_member->getFirstKataoUser()->getEmail(), $katao_member->getFullName()), sfConfig::get('app_mail_from'));
  50. $mailer->send($swift_message, new Swift_Address($katao_user_seo->getEmail(), $katao_user_seo->getFullName()), sfConfig::get('app_mail_from'));
  51. }
  52. catch (Exception $e) {
  53. $mailer->disconnect();
  54. }
  55. }
  56. }
  57. }
  58. $mailer->disconnect();
  59. }
  60. return sfView::HEADER_ONLY;
  61. }
  62. public function executeValidateAllCartsBeforeOrderPeriod($request) {
  63. // retrieve active period
  64. if (null != $katao_period = KataoPeriodPeer::getActivePeriod()) {
  65. // check if we are after the delay before automatic validation
  66. if (date('Y-m-d') == date('Y-m-d', strtotime(sprintf('-%d days', wpConfig::getCartValidationDaysNumber()), $katao_period->getOrderEndedAt(null)))) {
  67. // retrieve all carts with pending status for current period
  68. $criteria = new Criteria();
  69. $criteria->addJoin(KataoCartPeer::KATAO_USER_ID, KataoUserPeer::ID);
  70. $criteria->add(KataoCartPeer::STATUS, KataoCart::STATUS_IN_PROGRESS);
  71. $criteria->add(KataoCartPeer::KATAO_PERIOD_ID, $katao_period->getId());
  72. $criteria->add(KataoUserPeer::IS_MEMBER, true);
  73. foreach (KataoCartPeer::doSelectJoinKataoUser($criteria) as/*(KataoCart)*/ $katao_cart) {
  74. // set cart status to validated
  75. $katao_cart->setStatus(KataoCart::STATUS_VALIDATED);
  76. $katao_cart->save();
  77. // send an email to member with a link to unvalidate his cart
  78. if (null != $katao_user = $katao_cart->getKataoUser()) {
  79. try {
  80. $mailer = new wpMail();
  81. $mailer->send(new Swift_Message('KATAO : validation automatique de votre panier', sprintf('Bonjour %s,
  82. Votre panier vient d\'être automatiquement validé car la période de commande se termine bientôt.
  83. Cliquez sur le lien ci-dessous pour accèder à votre panier si vous souhaitez y faire des modifications.
  84. %smon-panier
  85. A bientôt,
  86. L\'équipe KATAO', $katao_user->getFullName(), $katao_user->getLogin(), $katao_user->getPassword(), sfConfig::get('app_katao_frontend_url'))), new Swift_Address($katao_user->getEmail(), $katao_user->getFullName()), sfConfig::get('app_mail_from'));
  87. $mailer->disconnect();
  88. }
  89. catch (Exception $e) {
  90. $mailer->disconnect();
  91. }
  92. }
  93. }
  94. }
  95. }
  96. return sfView::HEADER_ONLY;
  97. }
  98. public function executeDisableAllMembers($request) {
  99. if ('01-01' == date('m-d')) {
  100. $criteria = new Criteria();
  101. $criteria->addJoin(KataoUserPeer::KATAO_MEMBER_ID, KataoMemberPeer::ID);
  102. $criteria->add(KataoUserPeer::EMAIL, null, Criteria::NOT_EQUAL);
  103. $criteria->add(KataoUserPeer::EMAIL, '', Criteria::NOT_EQUAL);
  104. $criteria->add(KataoMemberPeer::IS_MEMBER, true);
  105. $katao_users = KataoUserPeer::doSelectJoinKataoMember($criteria);
  106. if (0 < count($katao_users)) {
  107. if (null != $katao_member_seo = wpConfig::getInstance()->getKataoMember()) {
  108. $year = date('Y');
  109. $katao_user_seo = $katao_member_seo->getFirstKataoUser();
  110. $katao_node_transactions = array();
  111. $katao_node_transactions[0]['members'] = Utils::getKataoMembersCount(false);
  112. $katao_node_transactions[0]['count'] = Utils::getKataoTransactionsCount(false, $year);
  113. $katao_node_transactions[0]['sum'] = Utils::getKataoTransactionsSum(false, $year);
  114. foreach (KataoNodePeer::getAllArray() as $katao_node_id => $katao_node_city) {
  115. $katao_node_transactions[$katao_node_id]['members'] = Utils::getKataoMembersCount($katao_node_id);
  116. $katao_node_transactions[$katao_node_id]['count'] = Utils::getKataoTransactionsCount($katao_node_id, $year);
  117. $katao_node_transactions[$katao_node_id]['sum'] = Utils::getKataoTransactionsSum($katao_node_id, $year);
  118. }
  119. $mailer = new wpMail();
  120. foreach ($katao_users as/*(KataoUser)*/ $katao_user) {
  121. $katao_member = $katao_user->getKataoMember();
  122. $katao_node = $katao_member->getKataoNode();
  123. try {
  124. $mailer->send(new Swift_Message(sprintf('KATAO : Bonne année %d', $year), sprintf('%s,
  125. Toute l\'équipe de katao te souhaite une bonne et heureuse année %d.
  126. Que toi et ta famille profitent au mieux de ce nouveau tour de soleil pour réaliser tout ce qui ne nuit pas à autrui et à notre bonne et vielle planète !
  127. A ce titre, dans le respect des hommes et de la nature, dans notre noeud %s nous sommes %d et avons l\'année dernière réalisé %d transactions pour un montant de %s
  128. Sur tout le réseau katao, nous sommes %d et avons l\'année dernière réalisé %d transactions pour un montant de %s
  129. Continuons donc notre marche pour réduire notre empreinte écologique tout en nous faisant plaisr !
  130. Comme chaque année, ton compte vient d\'être désactivé.
  131. Si tu veux continuer cette année à réaliser tes achats sur notre réseau, il te faut renouveller ton adhésion en faisant un chèque de %s à l\'ordre de "KATAO ASSOCIATION" et l\'envoyer à l\'adresse :
  132. %s
  133. %s
  134. Pour toute information, prend contact avec %s au %s.
  135. %s', $katao_member->getFirstName(), $year, $katao_node->getCity(),
  136. $katao_node_transactions[$katao_node->getId()]['members'], $katao_node_transactions[$katao_node->getId()]['count'], $katao_node_transactions[$katao_node->getId()]['sum'],
  137. $katao_node_transactions[0]['members'], $katao_node_transactions[0]['count'], $katao_node_transactions[0]['sum'],
  138. wpConfig::getMemberFeeStr(), $katao_user_seo->getFullName(), $katao_user_seo->getFullAdress(), $katao_member_seo->getFirstName(), $katao_user_seo->getPhone(),
  139. Utils::getKataoEmailFooter())), new Swift_Address($katao_user->getEmail(), $katao_user->getFullName()), sfConfig::get('app_mail_from'));
  140. }
  141. catch (Exception $e) {
  142. $mailer->disconnect();
  143. }
  144. $katao_member->setIsMember(false);
  145. $katao_member->save();
  146. }
  147. $mailer->disconnect();
  148. }
  149. }
  150. }
  151. return sfView::HEADER_ONLY;
  152. }
  153. }