actions.class.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717
  1. <?php
  2. /**
  3. * katao actions.
  4. *
  5. * @package www.katao.fr
  6. * @subpackage katao
  7. * @author Your name here
  8. * @version SVN: $Id: actions.class.php 9301 2008-05-27 01:08:46Z dwhittle $
  9. */
  10. class kataoActions extends sfActions {
  11. public function preExecute() {
  12. $request = /*(sfContext)*/sfContext::getInstance()->getRequest();
  13. $user = /*(myUser)*/sfContext::getInstance()->getUser();
  14. if ($request->hasParameter('secureHash')) {
  15. $secureHash = $request->getParameter('secureHash');
  16. $tokens = explode('_', $secureHash);
  17. if (count($tokens) == 2 && $tokens[0] == md5(sfConfig::get('app_solviolette_secure_hash').date('dmY'))) {
  18. $c = new Criteria();
  19. $c->add(KataoUserPeer::EMAIL, "md5(katao_user.email) = \"".$tokens[1]."\"", Criteria::CUSTOM); // risk of SQL injection!!
  20. $user = /*(KataoUser)*/ KataoUserPeer::doSelectOne($c);
  21. $this->forward404Unless($user);
  22. if ($user != null) {
  23. $loginHandler = new kataoLoginHandler();
  24. $loginHandler->Login($user->getLogin(), $user->getPassword(), false);
  25. }
  26. }
  27. }
  28. }
  29. public function executeIndex($request) {
  30. $ContentTree = ContentTree::instance();
  31. $ContentTree->build();
  32. header('Location: ' . $ContentTree->getRoot()->getUrl());
  33. exit;
  34. }
  35. public function executeLogin($request) {
  36. $ContentTree = ContentTree::instance();
  37. $ContentTree->build();
  38. $loginHandler = Catalyz::getLoginHandler();
  39. if ($loginHandler->Login($request->getParameter('login'), $request->getParameter('password'), false)) {
  40. header('Location: ' . $ContentTree->getRoot()->getUrl());
  41. } else {
  42. header('Location: ' . $ContentTree->getRoot()->getUrl() . '?do=login&error=1');
  43. }
  44. exit;
  45. }
  46. public function executeChangeNode($request) {
  47. $this->getUser()->setActiveNode(KataoNodePeer::retrieveByPK($request->getParameter('node_id')));
  48. return $this->redirect($request->getReferer());
  49. }
  50. public function executeChangeDisplayOnlyActiveProducts($request) {
  51. $this->getUser()->setDisplayOnlyActiveProducts((int)$request->getParameter('display'));
  52. return $this->redirect($request->getReferer());
  53. }
  54. public function executeSuppliers($request) {
  55. $this->initializeCatalyzVariables();
  56. // $mailer = new wpMail();
  57. // $recipients = new Swift_RecipientList();
  58. // $recipients->addTo('katao+unsubscribe@googlegroups.com');
  59. // $mailer->send(new Swift_Message(), $recipients, 'jroussel-test2@waterproof.fr');
  60. // $mailer->disconnect();
  61. }
  62. public function executeSuppliersPopup($request) {
  63. $this->setLayout(null);
  64. }
  65. public function executeSupplierDetails($request) {
  66. $this->katao_supplier = KataoSupplierPeer::retrieveByUrlIdentifier($request->getParameter('supplier'));
  67. $this->forward404Unless($this->katao_supplier);
  68. $this->forward404If(!$this->katao_supplier->isVisible());
  69. $this->initializeCatalyzVariables();
  70. }
  71. public function executeSupplierProducts($request) {
  72. $this->katao_supplier = KataoSupplierPeer::retrieveByUrlIdentifier($request->getParameter('supplier'));
  73. $this->forward404Unless($this->katao_supplier);
  74. $this->forward404If(!$this->katao_supplier->isVisible());
  75. $this->initializeCatalyzVariables();
  76. }
  77. public function executeStore($request) {
  78. $this->katao_product_category = KataoProductCategoryPeer::retrieveByUrlIdentifier($request->getParameter('category'));
  79. $this->katao_product_family = KataoProductFamilyPeer::retrieveByUrlIdentifier($request->getParameter('family'));
  80. $this->katao_product = KataoProductPeer::retrieveByUrlIdentifier($request->getParameter('product'));
  81. if (!is_null($this->katao_product)) {
  82. $this->forward404If(!in_array($this->katao_product->getId(), $this->getUser()->getAvailableProducts()));
  83. }
  84. $this->initializeCatalyzVariables();
  85. }
  86. public function executeCart($request) {
  87. $this->initializeCatalyzVariables();
  88. }
  89. public function executeCartToPdf($request) {
  90. $katao_cart = $this->getUser()->getInstance()->getCart();
  91. $content = $katao_cart->generatePDF();
  92. $response = $this->getResponse();
  93. $response->setContentType('application/pdf');
  94. $response->setHttpHeader('Content-disposition', 'attachment; filename="' . $katao_cart->getNumber() . '.pdf"');
  95. $response->setHttpHeader('Content-Length', strlen($content));
  96. $response->setHttpHeader('Pragma', 'public');
  97. $response->setHttpHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
  98. $response->setHttpHeader('Expires', '0');
  99. $response->setContent($content);
  100. return sfView::NONE;
  101. }
  102. public function executeCartAddProduct($request) {
  103. $katao_product = KataoProductPeer::retrieveByUrlIdentifier($request->getParameter('product'));
  104. $this->forward404Unless($katao_product);
  105. $this->forward404If(!$katao_product->isCartable());
  106. if (0 < (float)$request->getParameter('quantity')) {
  107. $this->getUser()->getInstance()->addProductToCart($katao_product->getId(), $request->getParameter('quantity', 1));
  108. } else {
  109. $this->getUser()->getInstance()->removeProductFromCart($katao_product->getId());
  110. }
  111. $this->getUser()->getInstance()->unvalidateCart();
  112. return $this->redirect('@katao_cart');
  113. }
  114. public function executeCartRemoveProduct($request) {
  115. $katao_product = KataoProductPeer::retrieveByUrlIdentifier($request->getParameter('product'));
  116. $this->forward404Unless($katao_product);
  117. $this->getUser()->getInstance()->removeProductFromCart($katao_product->getId());
  118. $this->getUser()->getInstance()->unvalidateCart();
  119. return $this->redirect('@katao_cart');
  120. }
  121. public function executeCartValidate($request) {
  122. $katao_user = $this->getUser()->getInstance();
  123. if ($katao_user->getCart()->sumProducts() < $katao_user->getKataoMember()->getCurrentAmountEuro()) {
  124. $katao_user->validateCart();
  125. }
  126. return $this->redirect('@katao_cart');
  127. }
  128. public function executeNewsletter($request) {
  129. if ('' != $email = $request->getParameter('email')) {
  130. Utils::subscribeToMailingList($email);
  131. }
  132. return $this->redirect($request->getReferer());
  133. }
  134. public function executeProfile($request) {
  135. $this->katao_user =/*(KataoUser)*/ $this->getUser()->getInstance();
  136. $this->forward404Unless($this->katao_user);
  137. if ($this->katao_user->isBothMemberAndSupplier()) {
  138. $this->form = new KataoMemberSupplierProfileForm($this->katao_user);
  139. $this->setTemplate('profileMemberSupplier');
  140. } elseif ($this->katao_user->isMember()) {
  141. $this->form = new KataoMemberProfileForm($this->katao_user->getKataoMember());
  142. $this->history_euro = $this->katao_user->getHistoryEuro();
  143. $this->history_sol = $this->katao_user->getHistorySol();
  144. $this->setTemplate('profileMember');
  145. } elseif ($this->katao_user->isSupplier()) {
  146. $this->form = new KataoSupplierProfileForm($this->katao_user->getKataoSupplier());
  147. $this->history_order = $this->katao_user->getHistoryOrder();
  148. $this->setTemplate('profileSupplier');
  149. }
  150. $this->initializeCatalyzVariables();
  151. }
  152. public function executeProfileUpdate($request) {
  153. $this->forward404Unless($request->isMethod('post'));
  154. $form_type = '';
  155. $this->katao_user =/*(KataoUser)*/ $this->getUser()->getInstance();
  156. if ($this->katao_user->isBothMemberAndSupplier()) {
  157. $this->form = new KataoMemberSupplierProfileForm($this->katao_user);
  158. } elseif ($this->katao_user->isMember()) {
  159. $this->form = new KataoMemberProfileForm($this->katao_user->getKataoMember());
  160. $form_type = 'katao_member';
  161. } elseif ($this->katao_user->isSupplier()) {
  162. $this->form = new KataoSupplierProfileForm($this->katao_user->getKataoSupplier());
  163. $form_type = 'katao_supplier';
  164. }
  165. $this->form->bind($request->getParameter($form_type));
  166. if ($this->form->isValid()) {
  167. $katao_member = $this->form->save();
  168. $this->getUser()->setInstance(KataoUserPeer::retrieveByPK($this->katao_user->getId()));
  169. $this->redirect($request->getReferer());
  170. }
  171. if ($this->katao_user->isBothMemberAndSupplier()) {
  172. $this->setTemplate('profileMemberSupplier');
  173. } elseif ($this->katao_user->isMember()) {
  174. $this->history_euro = $this->katao_user->getHistoryEuro();
  175. $this->history_sol = $this->katao_user->getHistorySol();
  176. $this->setTemplate('profileMember');
  177. } elseif ($this->katao_user->isSupplier()) {
  178. $this->history_order = $this->katao_user->getHistoryOrder();
  179. $this->setTemplate('profileSupplier');
  180. }
  181. $this->initializeCatalyzVariables();
  182. }
  183. public function executeSubscribe($request) {
  184. $this->initializeCatalyzVariables();
  185. $this->form = new KataoSubscribeForm();
  186. if ($request->isMethod('post') && '' == $request->getParameter('no_spam')) {
  187. $this->form->bind($request->getParameter('katao_member'));
  188. if ($this->form->isValid()) {
  189. $katao_member =/*(KataoMember)*/ $this->form->save();
  190. $katao_user = $katao_member->getFirstKataoUser();
  191. $katao_user_delegate = $katao_member->getKataoNode()->getKataoUser();
  192. $katao_member_delegate = $katao_user_delegate->getKataoMember();
  193. try {
  194. $mailer = new wpMail();
  195. $mailer->send(new Swift_Message('Confirmation d\'inscription', sprintf('%s,
  196. Suite à votre demande, nous vous confirmons votre inscription à la prochaine réunion d\'accueil de Katato.
  197. Nous vous previendrons du lieu, de la date et de l\'heure de cette réunion dans un prochain courriel.
  198. En attendant, n\'hésitez pas à contacter le délégué le plus proche de chez vous:
  199. %s %s
  200. %s
  201. %s / %s
  202. %s', $katao_member->getFirstName(), $katao_member_delegate->getFirstName(), $katao_member_delegate->getLastName(), $katao_user_delegate->getFullAdress(), $katao_user_delegate->getPhone(), $katao_user_delegate->getEmail(), Utils::getKataoEmailFooter())), new Swift_Address($katao_user->getEmail(), $katao_user->getFullName()), sfConfig::get('app_mail_from'));
  203. $mailer->disconnect();
  204. }
  205. catch (Exception $e) {
  206. $mailer->disconnect();
  207. $this->getRequest()->setError('email', 'Adresse email invalide');
  208. $return = false;
  209. }
  210. if ('' != $katao_user->getEmail()) {
  211. Utils::subscribeToMailingList($katao_user->getEmail());
  212. }
  213. $this->setTemplate('subscribeConfirmation');
  214. }
  215. }
  216. }
  217. public function executeForgotPassword($request) {
  218. $this->initializeCatalyzVariables();
  219. }
  220. public function validateForgotPasswordUpdate() {
  221. $return = true;
  222. $email = $this->getRequestParameter('email');
  223. if ('' == $email) {
  224. $this->getRequest()->setError('email', 'Merci de saisir une adresse email');
  225. $return = false;
  226. } elseif (null == $katao_user = KataoUserPeer::retrieveByEmail($email)) {
  227. $this->getRequest()->setError('email', 'Adresse email inconnue');
  228. $return = false;
  229. } else {
  230. try {
  231. $mailer = new wpMail();
  232. $mailer->send(new Swift_Message('Votre login et votre mot de passe', sprintf('%s,
  233. Suite à ta demande, tu trouveras ci-joint ton login et ton mot de passe :
  234. Login : %s
  235. Mot de passe : %s
  236. %s', $katao_user->getFullName(), $katao_user->getLogin(), $katao_user->getPassword(), Utils::getKataoEmailFooter())), new Swift_Address($katao_user->getEmail(), $katao_user->getFullName()), sfConfig::get('app_mail_from'));
  237. $mailer->disconnect();
  238. }
  239. catch (Exception $e) {
  240. $mailer->disconnect();
  241. $this->getRequest()->setError('email', 'Adresse email invalide');
  242. $return = false;
  243. }
  244. }
  245. return $return;
  246. }
  247. public function handleErrorForgotPasswordUpdate() {
  248. return $this->forward('katao', 'forgotPassword');
  249. }
  250. public function executeForgotPasswordUpdate($request) {
  251. $this->initializeCatalyzVariables();
  252. $this->setTemplate('forgotPasswordConfirmation');
  253. }
  254. protected function initializeCatalyzVariables() {
  255. $this->ContentTree = ContentTree::instance();
  256. $this->ContentTree->build();
  257. $this->ContentTreeNode = $this->ContentTree->getRoot();
  258. $this->node = $this->ContentTreeNode->getNode();
  259. $this->page = $this->ContentTreeNode->getPage();
  260. }
  261. public function executeSearch($request) {
  262. $this->search = $request->getParameter('search');
  263. $this->initializeCatalyzVariables();
  264. }
  265. public function executeNotFound($request) {
  266. $this->getResponse()->setHttpHeader('HTTP/1.1', '404 Not Found');
  267. $this->ContentTree = ContentTree::instance();
  268. $this->ContentTree->build();
  269. $this->ContentTree->initializeCurrentNodeByPath(str_replace(sprintf('%s/%s', sfConfig::get('app_site_url'), $this->getUser()->getCulture()), '', $request->getReferer()));
  270. $this->node = $this->ContentTree->getCurrentNode();
  271. if (is_null($this->node)) {
  272. $this->ContentTree->initializeCurrentNodeByPath('');
  273. $this->node = $this->ContentTree->getCurrentNode();
  274. }
  275. $handle = fopen(sfConfig::get('sf_log_dir') . '/404-error.log', 'a+');
  276. if ($handle) {
  277. fwrite($handle, sprintf('%s[%s] Page <%s%s> not found. Coming from <%s>', "\n", date('Y-m-d H:i:s'), sfConfig::get('app_site_url'), !empty($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'', $request->getReferer()));
  278. fclose($handle);
  279. }
  280. }
  281. public function executeExportMemberInvoiceToPdf($request) {
  282. $katao_user =/*(KataoUser)*/ $this->getUser()->getInstance();
  283. $this->forward404If(!$katao_user->isMember());
  284. $this->forward404Unless($katao_invoice = KataoInvoicePeer::retrieveByPk($request->getParameter('id')), 'Facture #' . $request->getParameter('id') . ' inconnue.');
  285. $this->forward404If($katao_invoice->getKataoMemberId() != $katao_user->getKataoMemberId());
  286. $content = $katao_invoice->generatePDF();
  287. $response = $this->getResponse();
  288. $response->setContentType('application/pdf');
  289. $response->setHttpHeader('Content-disposition', 'attachment; filename="' . $katao_invoice->getNumber() . '.pdf"');
  290. $response->setHttpHeader('Content-Length', strlen($content));
  291. $response->setHttpHeader('Pragma', 'public');
  292. $response->setHttpHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
  293. $response->setHttpHeader('Expires', '0');
  294. $response->setContent($content);
  295. return sfView::NONE;
  296. }
  297. public function executeExportSupplierOrderToPdf($request) {
  298. $katao_user =/*(KataoUser)*/ $this->getUser()->getInstance();
  299. $this->forward404If(!$katao_user->isSupplier());
  300. $this->forward404Unless($katao_order = KataoOrderPeer::retrieveByPk($request->getParameter('id')), 'Commande #' . $request->getParameter('id') . ' inconnue.');
  301. $this->forward404If($katao_order->getKataoSupplierId() != $katao_user->getKataoSupplierId());
  302. $content = $katao_order->generatePDF();
  303. $response = $this->getResponse();
  304. $response->setContentType('application/pdf');
  305. $response->setHttpHeader('Content-disposition', 'attachment; filename="' . $katao_order->getNumber() . '.pdf"');
  306. $response->setHttpHeader('Content-Length', strlen($content));
  307. $response->setHttpHeader('Pragma', 'public');
  308. $response->setHttpHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
  309. $response->setHttpHeader('Expires', '0');
  310. $response->setContent($content);
  311. return sfView::NONE;
  312. }
  313. public function executeProfileGMap($request) {
  314. $this->katao_user =/*(KataoUser)*/ $this->getUser()->getInstance();
  315. if ($this->katao_user->isBothMemberAndSupplier()) {
  316. } elseif ($this->katao_user->isMember()) {
  317. $this->katao_member_or_supplier = $this->katao_user;
  318. } elseif ($this->katao_user->isSupplier()) {
  319. $this->katao_member_or_supplier = $this->katao_user->getKataoSupplier();
  320. }
  321. if ($request->isMethod('post')) {
  322. $this->katao_member_or_supplier->setGmapLng($request->getParameter('gmap_lng'));
  323. $this->katao_member_or_supplier->setGmapLat($request->getParameter('gmap_lat'));
  324. $this->katao_member_or_supplier->save();
  325. return $this->redirect('@katao_profile');
  326. }
  327. $this->initializeCatalyzVariables();
  328. }
  329. public function executeAdjustments($request) {
  330. $this->initializeCatalyzVariables();
  331. $this->default_category_id = $request->getParameter('category_id');
  332. $this->default_supplier_id = $request->getParameter('supplier_id');
  333. }
  334. public function executeSubscribeSolViolette($request) {
  335. if ('sol-violette' != sfConfig::get('sf_environment')) {
  336. $this->redirect('@katao_subscribe');
  337. }
  338. $this->initializeCatalyzVariables();
  339. $this->form = new SolVioletteSubscribeForm();
  340. if ($request->isMethod('post') && '' == $request->getParameter('no_spam')) {
  341. $this->form->bind($request->getParameter('katao_member'));
  342. if ($this->form->isValid()) {
  343. $values = $this->form->getValues();
  344. sfContext::getInstance()->getUser()->setAttribute('adhesion_user_values', $values);
  345. $katao_member =/*(KataoMember)*/ $this->form->save();
  346. $this->invoiceId = $katao_member->getId();
  347. /*
  348. // $katao_user = $katao_member->getFirstKataoUser();
  349. // $katao_user_delegate = $katao_member->getKataoNode()->getKataoUser();
  350. // $katao_member_delegate = $katao_user_delegate->getKataoMember();
  351. //try {
  352. // $mailer = new wpMail();
  353. // $mailer->send(new Swift_Message('Confirmation d\'inscription', sprintf('%s,
  354. //
  355. //Suite à votre demande, nous vous confirmons votre inscription à la prochaine réunion d\'accueil de Katato.
  356. //Nous vous previendrons du lieu, de la date et de l\'heure de cette réunion dans un prochain courriel.
  357. //
  358. //En attendant, n\'hésitez pas à contacter le délégué le plus proche de chez vous:
  359. //
  360. //%s %s
  361. //%s
  362. //%s / %s
  363. //%s', $katao_member->getFirstName(), $katao_member_delegate->getFirstName(), $katao_member_delegate->getLastName(), $katao_user_delegate->getFullAdress(), $katao_user_delegate->getPhone(), $katao_user_delegate->getEmail(), Utils::getKataoEmailFooter())), new Swift_Address($katao_user->getEmail(), $katao_user->getFullName()), sfConfig::get('app_mail_from'));
  364. // $mailer->disconnect();
  365. // }
  366. // catch (Exception $e) {
  367. // $mailer->disconnect();
  368. // $this->getRequest()->setError('email', 'Adresse email invalide');
  369. // $return = false;
  370. // }
  371. //if ('' != $katao_user->getEmail()) {
  372. // Utils::subscribeToMailingList($katao_user->getEmail());
  373. // }
  374. */
  375. if (!isset($values['user_payment_mode']) || (!empty($values['user_payment_mode']) && in_array($values['user_payment_mode'], array(KataoMemberDeposit::PAYMENT_MODE_CHECK, KataoMemberDeposit::PAYMENT_MODE_CASH))) || ('exonere' == $values['user_adhesion'] && empty($values['user_amount']))) {
  376. // cheque, especes ou rien a payer -> message general
  377. $this->setTemplate('solSubscribeOtherPayment') ;
  378. } else {
  379. if ($values['user_adhesion'] != 'todo') {
  380. if (!empty($values['user_amount'])) {
  381. // mettre en session le montant
  382. $this->montant = $values['user_amount'];
  383. sfContext::getInstance()->getUser()->setAttribute('sol_violette_amount', $values['user_amount']);
  384. sfContext::getInstance()->getUser()->setAttribute('sol_violette_adhesion', true);
  385. $this->setTemplate('saas') ;
  386. } else {
  387. $this->setTemplate('sass') ;
  388. }
  389. } else {
  390. if (!empty($values['user_amount'])) {
  391. // mettre en session le montant
  392. $this->montant = $values['user_amount'];
  393. sfContext::getInstance()->getUser()->setAttribute('sol_violette_amount', $values['user_amount']);
  394. sfContext::getInstance()->getUser()->setAttribute('sol_violette_adhesion', false);
  395. $this->setTemplate('aas') ;
  396. } else {
  397. $this->setTemplate('ass') ;
  398. }
  399. }
  400. }
  401. }
  402. }
  403. }
  404. public function executeSubscribeSolVioletteCancel($request) {
  405. $this->initializeCatalyzVariables();
  406. }
  407. public function executeSubscribeSolVioletteThanks($request) {
  408. $this->initializeCatalyzVariables();
  409. }
  410. public function executeSubscribeSolVioletteConfirm($request) {
  411. file_put_contents(sfConfig::get('sf_web_dir') . '/paypal_' . time() . '.log', print_r($_REQUEST, true));
  412. session_id($_REQUEST['custom']);
  413. $this->initializeCatalyzVariables();
  414. $katao_member =/*(KataoMember)*/ KataoMemberPeer::retrieveByPK($_REQUEST['invoice']);
  415. switch ($_REQUEST['item_number']) {
  416. case KataoUser::SUBSCRIBE_WITHOUT_SOLS:
  417. // rien à faire - ne devrait pas passer ici
  418. break;
  419. case KataoUser::SUBSCRIBE_WITH_SOLS:
  420. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_member->getId(), ceil(1.05 * $_REQUEST['mc_gross']), 'Conversion d\'euros en sols');
  421. break;
  422. case KataoUser::ADD_SOLS:
  423. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_member->getId(), ceil(1.05 * $_REQUEST['mc_gross']), 'Conversion d\'euros en sols');
  424. break;
  425. case KataoUser::SUBSCRIBE_ADHESION_WITH_SOLS:
  426. $katao_member->setIsMember(true);
  427. $katao_member->save();
  428. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_member->getId(), sfConfig::get('app_solviolette_adhesion_amount'), 'Adhésion SOL');
  429. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_member->getId(), ceil(1.05 * ($_REQUEST['mc_gross'] - sfConfig::get('app_solviolette_adhesion_amount'))), 'Conversion d\'euros en sols');
  430. break;
  431. case KataoUser::SUBSCRIBE_ADHESION_WITHOUT_SOLS:
  432. $katao_member->setIsMember(true);
  433. $katao_member->save();
  434. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_member->getId(), sfConfig::get('app_solviolette_adhesion_amount'), 'Adhésion SOL');
  435. break;
  436. default:
  437. throw new Exception('Unknown payment operation type: ' . $_REQUEST['item_number']);;
  438. } // switch
  439. }
  440. public function executeSolVioletteCharger($request) {
  441. $this->montant = $valeur_de_retour['montant'];
  442. $this->montant = 50;
  443. $this->initializeCatalyzVariables();
  444. $katao_user =/*(KataoUser)*/ sfContext::getInstance()->getUser()->getAttribute('katao_user_instance');
  445. $depot = KataoMemberDepositPeer::addPaypalDepot($katao_user->getKataoMemberId(), $this->montant, 'L\'utilisateur charge son compte');
  446. }
  447. public function executeAdhesionToPdf($request) {
  448. $values = sfContext::getInstance()->getUser()->getAttribute('adhesion_user_values');
  449. $path = solViolette::generatePdf($values);
  450. $content = file_get_contents($path);
  451. $response = $this->getResponse();
  452. $response->setContentType('application/pdf');
  453. $response->setHttpHeader('Content-disposition', 'attachment; filename="DemandeCarteSol.pdf"');
  454. $response->setHttpHeader('Content-Length', strlen($content));
  455. $response->setHttpHeader('Pragma', 'public');
  456. $response->setHttpHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
  457. $response->setHttpHeader('Expires', '0');
  458. $response->setContent($content);
  459. return sfView::NONE;
  460. }
  461. public function executeSolVioletteTransfer(sfWebRequest $request){
  462. $this->initializeCatalyzVariables();
  463. $this->results = FALSE;
  464. $this->form = new SolVioletteTransferForm();
  465. if ($request->isMethod('post')) {
  466. $this->form->bind($request->getParameter('transfer'));
  467. if ($this->form->isValid()) {
  468. $query = $this->form->getValue('search');
  469. $tokens = array();
  470. $query_nb = FALSE;
  471. if (preg_match_all("/[0-9]/",$query,$tokens)) {
  472. $query_nb = $tokens[0];
  473. }
  474. //region not suppliers
  475. $criteria = new Criteria();
  476. $criteria->addJoin(KataoUserPeer::KATAO_MEMBER_ID, KataoMemberPeer::ID, Criteria::LEFT_JOIN);
  477. $criteria->add(KataoUserPeer::KATAO_SUPPLIER_ID, NULL, Criteria::ISNULL);
  478. if ($query_nb) {
  479. $criterion1 = $criteria->getNewCriterion(KataoMemberPeer::LAST_NAME, '%'.$query.'%', Criteria::LIKE);
  480. $criterion2 = $criteria->getNewCriterion(KataoUserPeer::PHONE, '%'.implode('%', $query_nb).'%', Criteria::LIKE);
  481. $criterion1->addOr($criterion2);
  482. $criterion3 = $criteria->getNewCriterion(KataoMemberPeer::CARD_NUMBER_SOL, implode('', $query_nb), Criteria::EQUAL);
  483. $criterion2->addOr($criterion3);
  484. $criteria->add($criterion1);
  485. }else{
  486. $criteria->add(KataoMemberPeer::LAST_NAME, '%'.$query.'%', Criteria::LIKE);
  487. }
  488. $criteria->setDistinct();
  489. $not_suppliers = KataoMemberPeer::doSelect($criteria);
  490. //endregion
  491. //region supplier
  492. $criteria = new Criteria();
  493. $criteria->addJoin(KataoMemberPeer::ID, KataoSupplierPeer::MEMBER_ID, Criteria::LEFT_JOIN);
  494. $criteria->add(KataoMemberPeer::ID, NULL, Criteria::ISNOTNULL);
  495. // $criteria->addJoin(KataoUserPeer::KATAO_MEMBER_ID, KataoMemberPeer::ID, Criteria::INNER_JOIN);
  496. $criterion1 = $criteria->getNewCriterion(KataoMemberPeer::LAST_NAME, '%'.$query.'%', Criteria::LIKE);
  497. $criterion2 = $criteria->getNewCriterion(KataoSupplierPeer::NAME, '%'.$query.'%', Criteria::LIKE);
  498. $criterion1->addOr($criterion2);
  499. if ($query_nb) {
  500. $criterion3 = $criteria->getNewCriterion(KataoSupplierPeer::PHONE, '%'.implode('%', $query_nb).'%', Criteria::LIKE);
  501. $criterion2->addOr($criterion3);
  502. $criterion4 = $criteria->getNewCriterion(KataoMemberPeer::CARD_NUMBER_SOL, implode('', $query_nb), Criteria::EQUAL);
  503. $criterion3->addOr($criterion4);
  504. }
  505. $criteria->add($criterion1);
  506. $criteria->setDistinct();
  507. $suppliers = KataoMemberPeer::doSelect($criteria);
  508. //endregion
  509. $this->results = array();
  510. foreach (array($suppliers, $not_suppliers) as $tab){
  511. foreach ($tab as /*(KataoMember)*/$member){
  512. $this->results[$member->getFullName()] = $member;
  513. }
  514. }
  515. //endregion
  516. if (!empty($this->results)) {
  517. if (count($this->results) == 1) {
  518. $user = /*(KataoMember)*/array_shift($this->results);
  519. $this->getRequest()->setParameter('id', $user->getId());
  520. $this->forward('katao', 'solVioletteTransferStep1');
  521. }
  522. }
  523. }
  524. }
  525. return sfView::SUCCESS;
  526. }
  527. public function executeSolVioletteTransferStep1($request){
  528. $this->initializeCatalyzVariables();
  529. $this->KataoMember = KataoMemberPeer::retrieveByPK($request->getParameter('id'));
  530. $this->user = /*(KataoUser)*/sfContext::getInstance()->getUser()->getAttribute('katao_user_instance');
  531. $user_member = $this->user->getKataoMember();
  532. $current_solde = $user_member->getCurrentAmountSol();
  533. $this->form = new SolVioletteTransferStep1Form(array('id' => $this->KataoMember->getId()), array('current_solde' => $current_solde));
  534. if ($request->isMethod('post') && $request->getParameter('form_submit') == 'Effectuer le virement') {
  535. $this->form->bind($request->getParameter('transfer'));
  536. if ($this->form->isValid()) {
  537. $this->amount = $this->form->getValue('amount');
  538. $this->confirmForm = new SolVioletteTransferStep2Form(array('id' => $this->KataoMember->getId(), 'amount' => $this->amount));
  539. $this->setTemplate('solVioletteTransferStep2');
  540. }
  541. }
  542. return sfView::SUCCESS;
  543. }
  544. public function executeSolVioletteTransferConfirm(sfWebRequest $request){
  545. $this->initializeCatalyzVariables();
  546. $this->form = new SolVioletteTransferStep2Form();
  547. $this->form->bind($request->getParameter('confirm'));
  548. if ($this->form->isValid()) {
  549. $message = $this->form->getValue('message');
  550. $this->amount = $this->form->getValue('amount');
  551. $this->to_user = sfContext::getInstance()->getUser()->getAttribute('katao_user_instance')->getKataoMember()->transferTo($this->form->getValue('id'), $this->amount);
  552. if (trim($message) != '') {
  553. $this->sendEmail($this->to_user, $message, $this->amount);
  554. }
  555. }
  556. return sfView::SUCCESS;
  557. }
  558. private function sendEmail(KataoMember $to_user_member, $message, $amount){
  559. $from_user = /*(KataoUser)*/sfContext::getInstance()->getUser()->getAttribute('katao_user_instance');
  560. $from_user_member = /*(KataoMember)*/ $from_user->getKataoMember();
  561. $criteria = new criteria();
  562. $criteria->add(KataoUserPeer::KATAO_MEMBER_ID, $to_user_member->getId());
  563. $to_user = KataoUserPeer::doSelectOne($criteria);
  564. $email_content = $this->getPartial('katao/solVioletteTransferEmail', array('to_user' => $to_user, 'from_user' => $from_user, 'amount' => $amount, 'commentaire' => $message));
  565. try
  566. {
  567. $mailer = new Swift(new Swift_Connection_NativeMail());
  568. $swift_message = new Swift_Message('Un dépot a été réalisé', $email_content, 'text/html');
  569. $recipients = new Swift_RecipientList();
  570. $recipients->add($to_user->getEmail(), $to_user_member->getFullName());
  571. $recipients->addCc($from_user->getEmail(), $from_user_member->getFullName());
  572. $swift_message->setReplyTo($from_user->getEmail(), $from_user_member->getFullName());
  573. $mailer->send($swift_message, $recipients , sfConfig::get('app_mail_from'));
  574. $mailer->disconnect();
  575. }
  576. catch (Exception $e)
  577. {
  578. $mailer->disconnect();
  579. return FALSE;
  580. }
  581. return TRUE;
  582. }
  583. }