actions.class.php 31 KB

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