diff --git a/1_fr_1_sitemap.xml b/1_fr_1_sitemap.xml index fa0e4c8b..96020c3f 100644 --- a/1_fr_1_sitemap.xml +++ b/1_fr_1_sitemap.xml @@ -1,925 +1,925 @@ - + 0.1 -2015-10-29T12:37:01+01:00 +2015-11-10T17:20:47+01:00 daily - + 0.1 -2015-10-06T22:12:28+02:00 +2015-11-10T17:21:02+01:00 daily - + 0.1 -2015-09-18T12:38:12+02:00 +2015-11-13T09:13:13+01:00 daily - + 0.1 -2015-09-18T12:38:13+02:00 +2015-11-13T09:13:17+01:00 daily - + 0.1 -2015-09-18T12:38:13+02:00 +2015-11-13T09:13:23+01:00 daily - + 0.1 -2015-09-18T12:38:13+02:00 +2015-11-10T17:23:13+01:00 daily - + 0.1 -2015-09-18T12:38:13+02:00 +2015-11-13T09:13:27+01:00 daily - + 0.1 -2015-09-18T12:38:14+02:00 +2015-12-08T15:54:40+01:00 daily - + 0.1 -2015-09-18T12:38:14+02:00 +2015-11-10T17:22:27+01:00 daily - + 0.1 -2015-09-18T12:38:14+02:00 +2015-11-10T17:22:35+01:00 daily - + 0.1 -2015-09-18T12:38:14+02:00 +2015-12-08T15:54:48+01:00 daily - + 0.1 -2015-09-18T12:38:14+02:00 +2015-12-08T16:09:03+01:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:18+02:00 daily - + 0.1 2015-09-18T12:38:18+02:00 daily - + 0.1 2015-09-18T12:38:18+02:00 daily - + 0.1 2015-09-18T12:38:18+02:00 daily - + 0.1 2015-09-18T12:38:23+02:00 daily - + 0.1 2015-09-18T12:38:23+02:00 daily - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 2015-09-18T12:38:15+02:00 daily - + 0.1 2015-09-18T12:38:15+02:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 2015-09-18T12:38:37+02:00 daily - + 0.1 2015-09-18T12:38:37+02:00 daily - + 0.1 2015-09-18T12:38:37+02:00 daily - + 0.1 2015-09-18T12:38:37+02:00 daily - + 0.1 2015-09-18T12:38:37+02:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 -2015-09-18T12:38:25+02:00 +2015-12-09T09:47:50+01:00 daily - + 0.1 2015-09-18T12:38:38+02:00 daily - + 0.1 2015-09-18T12:38:38+02:00 daily - + 0.1 2015-09-18T12:38:38+02:00 daily - + 0.1 2015-09-18T12:38:38+02:00 daily - + 0.1 2015-09-18T12:38:39+02:00 daily - + 0.1 2015-09-18T12:38:25+02:00 daily - + 0.1 2015-09-18T12:38:30+02:00 daily - + 0.1 2015-09-18T12:38:30+02:00 daily - + 0.1 2015-09-18T12:38:30+02:00 daily - + 0.1 2015-09-18T12:38:30+02:00 daily - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 -2015-09-18T12:38:39+02:00 +2015-11-17T12:20:21+01:00 daily - + 0.1 2015-09-18T12:38:15+02:00 daily - + 0.1 2015-09-18T12:38:15+02:00 daily - + 0.1 2015-09-18T12:38:15+02:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 2015-09-18T12:38:25+02:00 daily - + 0.1 2015-09-18T12:38:25+02:00 daily - + 0.1 2015-09-18T12:38:25+02:00 daily - + 0.1 2015-09-18T12:38:26+02:00 daily - + 0.1 2015-09-18T12:38:26+02:00 daily - + 0.1 2015-09-18T12:38:26+02:00 daily - + 0.1 2015-09-18T12:38:26+02:00 daily - + 0.1 2015-09-18T12:38:26+02:00 daily - + 0.1 2015-09-18T12:38:27+02:00 daily - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 2015-09-18T12:38:39+02:00 daily - + 0.1 2015-09-18T12:38:39+02:00 daily - + +0.1 +2015-12-09T09:43:39+01:00 +daily + + + +0.1 +2015-09-18T12:38:27+02:00 +daily + + + +0.1 +2015-09-18T12:38:27+02:00 +daily + + + 0.1 2015-09-18T12:38:23+02:00 daily - -0.1 -2015-09-18T12:38:27+02:00 -daily - - - -0.1 -2015-09-18T12:38:27+02:00 -daily - - - -0.1 -2015-09-18T12:38:23+02:00 -daily - - - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 -2015-09-18T12:38:27+02:00 +2015-12-09T09:40:38+01:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + 0.1 2015-09-18T12:38:24+02:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + 0.1 2015-09-18T12:38:28+02:00 daily - + +0.1 +2015-12-09T09:46:13+01:00 +daily + + + 0.1 2015-09-18T12:38:29+02:00 daily - + 0.1 2015-09-18T12:38:29+02:00 daily - -0.1 -2015-09-18T12:38:29+02:00 -daily - - - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:18+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:22+02:00 daily - + 0.1 2015-09-18T12:38:22+02:00 daily - + 0.1 2015-09-18T12:38:22+02:00 daily - + 0.1 2015-09-18T12:38:22+02:00 daily - + 0.1 2015-09-18T12:38:22+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:23+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:17+02:00 daily - + 0.1 2015-09-18T12:38:21+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:23+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 2015-09-18T12:38:31+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:33+02:00 daily - + 0.1 2015-09-18T12:38:33+02:00 daily - + 0.1 2015-09-18T12:38:33+02:00 daily - + 0.1 2015-09-18T12:38:33+02:00 daily - + 0.1 2015-09-18T12:38:33+02:00 daily - + 0.1 2015-09-18T12:38:35+02:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:39+02:00 daily - + 0.1 2015-09-18T12:38:39+02:00 daily - + 0.1 2015-09-18T12:38:40+02:00 daily - + 0.1 2015-09-18T12:38:40+02:00 daily - + 0.1 2015-09-18T12:38:40+02:00 daily - + 0.1 2015-09-18T12:38:40+02:00 daily - + 0.1 2015-09-18T12:38:19+02:00 daily - + 0.1 2015-09-18T12:38:32+02:00 daily - + 0.1 2015-09-18T12:38:16+02:00 daily - + 0.1 -2015-09-18T12:38:29+02:00 +2015-12-09T09:47:58+01:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:36+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:29+02:00 daily - + 0.1 2015-09-18T12:38:29+02:00 daily - + 0.1 -2015-09-18T12:38:15+02:00 +2015-12-08T15:08:46+01:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:36+02:00 daily - + 0.1 2015-09-18T12:38:36+02:00 daily - + 0.1 2015-09-18T12:38:34+02:00 daily - + 0.1 2015-09-18T12:38:36+02:00 daily - + 0.1 2015-09-18T12:38:36+02:00 daily - + 0.1 2015-09-18T12:38:20+02:00 daily - + 0.1 2015-09-18T12:38:30+02:00 daily diff --git a/1_fr_3_sitemap.xml b/1_fr_3_sitemap.xml index 27abd4fd..bddcb4b0 100644 --- a/1_fr_3_sitemap.xml +++ b/1_fr_3_sitemap.xml @@ -1,1473 +1,1521 @@ - + 0.1 2009-05-19T13:48:00+02:00 daily - + 0.1 2009-05-02T15:25:12+02:00 daily - + 0.1 2009-05-12T13:15:10+02:00 daily - + 0.1 2009-06-09T16:10:14+02:00 daily - + 0.1 2009-06-17T15:48:00+02:00 daily - + 0.1 2009-07-06T18:00:00+02:00 daily - + 0.1 2009-07-17T13:35:00+02:00 daily - + 0.1 2009-07-27T09:10:00+02:00 daily - + 0.1 2009-08-10T11:45:00+02:00 daily - + 0.1 2009-08-20T14:55:00+02:00 daily - + 0.1 2009-09-01T11:22:00+02:00 daily - + 0.1 2009-09-10T17:50:16+02:00 daily - + 0.1 2009-09-18T16:43:51+02:00 daily - + 0.1 2009-09-24T22:45:50+02:00 daily - + 0.1 2009-10-04T23:34:27+02:00 daily - + 0.1 2009-10-11T12:33:40+02:00 daily - + 0.1 2009-10-18T11:28:42+02:00 daily - + 0.1 2009-10-26T15:46:19+01:00 daily - + 0.1 2009-11-01T11:30:10+01:00 daily - + 0.1 2009-11-07T13:56:43+01:00 daily - + 0.1 2009-11-15T12:48:19+01:00 daily - + 0.1 2009-11-22T15:03:59+01:00 daily - + 0.1 2009-11-29T10:53:19+01:00 daily - + 0.1 2009-12-06T14:28:13+01:00 daily - + 0.1 2009-12-13T12:55:06+01:00 daily - + 0.1 2009-12-22T18:20:45+01:00 daily - + 0.1 2010-01-04T11:02:37+01:00 daily - + 0.1 2010-01-17T13:25:02+01:00 daily - + 0.1 2010-01-31T11:53:30+01:00 daily - + 0.1 2010-02-15T17:23:34+01:00 daily - + 0.1 2010-02-21T15:10:56+01:00 daily - + 0.1 2010-03-13T13:14:13+01:00 daily - + 0.1 2010-04-05T17:52:56+02:00 daily - + 0.1 2010-04-25T14:36:34+02:00 daily - + 0.1 2010-05-09T12:09:31+02:00 daily - + 0.1 2010-05-16T12:32:41+02:00 daily - + 0.1 2010-05-25T16:08:01+02:00 daily - + 0.1 2010-05-30T10:59:37+02:00 daily - + 0.1 2010-06-11T15:04:09+02:00 daily - + 0.1 2010-06-23T11:51:40+02:00 daily - + 0.1 2010-07-03T17:24:32+02:00 daily - + 0.1 2010-07-13T16:41:34+02:00 daily - + 0.1 2010-07-24T15:41:22+02:00 daily - + 0.1 2010-08-04T16:12:03+02:00 daily - + 0.1 2010-09-18T18:44:14+02:00 daily - + 0.1 2010-10-03T16:32:27+02:00 daily - + 0.1 2010-10-17T16:25:11+02:00 daily - + 0.1 2010-10-26T17:13:40+02:00 daily - + 0.1 2010-11-03T17:48:00+01:00 daily - + 0.1 2010-11-14T15:34:39+01:00 daily - + 0.1 2010-11-22T17:46:06+01:00 daily - + 0.1 2010-12-09T18:27:35+01:00 daily - + 0.1 2010-12-21T11:39:42+01:00 daily - + 0.1 2011-02-13T17:42:29+01:00 daily - + 0.1 2011-03-03T11:12:19+01:00 daily - + 0.1 2011-03-17T12:56:04+01:00 daily - + 0.1 2011-03-24T11:10:09+01:00 daily - + 0.1 2011-04-26T12:03:25+02:00 daily - + 0.1 2011-05-13T13:35:13+02:00 daily - + 0.1 2011-05-24T17:51:26+02:00 daily - + 0.1 2011-06-05T11:51:40+02:00 daily - + 0.1 2011-06-19T17:40:12+02:00 daily - + 0.1 2011-07-01T12:47:42+02:00 daily - + 0.1 2011-07-17T11:16:04+02:00 daily - + 0.1 2011-08-14T12:23:54+02:00 daily - + 0.1 2011-09-02T16:54:13+02:00 daily - + 0.1 2011-09-14T18:39:53+02:00 daily - + 0.1 2011-09-26T18:02:10+02:00 daily - + 0.1 2011-10-12T17:28:26+02:00 daily - + 0.1 2011-10-24T18:42:00+02:00 daily - + 0.1 2011-11-06T15:54:45+01:00 daily - + 0.1 2011-11-17T19:05:13+01:00 daily - + 0.1 2011-12-04T17:13:14+01:00 daily - + 0.1 2011-12-17T15:39:40+01:00 daily - + 0.1 2011-12-26T17:59:57+01:00 daily - + 0.1 2012-01-14T11:22:49+01:00 daily - + 0.1 2012-01-26T13:09:51+01:00 daily - + 0.1 2012-03-18T16:57:18+01:00 daily - + 0.1 2012-03-28T10:16:29+02:00 daily - + 0.1 2012-04-16T14:25:50+02:00 daily - + 0.1 2012-05-03T14:49:45+02:00 daily - + 0.1 2012-05-14T11:41:18+02:00 daily - + 0.1 2012-05-23T16:04:54+02:00 daily - + 0.1 2012-06-07T18:32:45+02:00 daily - + 0.1 2012-06-20T11:40:46+02:00 daily - + 0.1 2012-06-28T18:03:16+02:00 daily - + 0.1 2012-07-07T09:34:02+02:00 daily - + 0.1 2012-07-25T16:55:09+02:00 daily - + 0.1 2012-08-02T18:37:23+02:00 daily - + 0.1 2012-08-18T15:48:14+02:00 daily - + 0.1 2012-08-25T12:53:08+02:00 daily - + 0.1 2012-09-04T16:57:54+02:00 daily - + 0.1 2012-09-13T10:20:06+02:00 daily - + 0.1 2012-09-21T18:47:51+02:00 daily - + 0.1 2012-09-30T12:22:17+02:00 daily - + 0.1 2012-10-06T17:05:29+02:00 daily - + 0.1 2012-10-13T16:30:47+02:00 daily - + 0.1 2012-10-23T18:55:50+02:00 daily - + 0.1 2012-11-06T15:30:44+01:00 daily - + 0.1 2012-11-15T18:37:30+01:00 daily - + 0.1 2012-11-28T11:50:42+01:00 daily - + 0.1 2012-12-08T18:45:49+01:00 daily - + 0.1 2012-12-21T17:03:55+01:00 daily - + 0.1 2013-01-06T11:38:25+01:00 daily - + 0.1 2013-01-16T19:07:53+01:00 daily - + 0.1 2013-01-25T17:58:21+01:00 daily - + 0.1 2013-02-03T12:49:50+01:00 daily - + 0.1 2013-02-09T18:21:52+01:00 daily - + 0.1 2013-02-19T11:31:55+01:00 daily - + 0.1 2013-02-26T09:59:26+01:00 daily - + 0.1 2013-03-04T11:01:20+01:00 daily - + 0.1 2013-03-10T12:50:10+01:00 daily - + 0.1 2013-03-17T15:11:38+01:00 daily - + 0.1 2013-03-26T09:59:56+01:00 daily - + 0.1 2013-04-03T10:35:02+02:00 daily - + 0.1 2013-04-10T09:48:35+02:00 daily - + 0.1 2013-04-17T16:46:27+02:00 daily - + 0.1 2013-04-24T16:58:26+02:00 daily - + 0.1 2013-05-04T10:09:26+02:00 daily - + 0.1 2013-05-13T10:06:04+02:00 daily - + 0.1 2013-05-22T12:27:26+02:00 daily - + 0.1 2013-05-28T09:03:04+02:00 daily - + 0.1 2013-06-05T11:38:17+02:00 daily - + 0.1 2013-06-11T12:27:17+02:00 daily - + 0.1 2013-06-19T10:20:29+02:00 daily - + 0.1 2013-06-26T09:07:22+02:00 daily - + 0.1 2013-07-03T18:03:27+02:00 daily - + 0.1 2013-07-10T11:54:48+02:00 daily - + 0.1 2013-07-17T08:42:22+02:00 daily - + 0.1 2013-07-24T08:32:11+02:00 daily - + 0.1 2013-08-02T12:01:49+02:00 daily - + 0.1 2013-08-10T16:14:36+02:00 daily - + 0.1 2013-08-17T13:04:03+02:00 daily - + 0.1 2013-08-24T16:16:33+02:00 daily - + 0.1 2013-08-31T11:40:11+02:00 daily - + 0.1 2013-09-07T09:47:04+02:00 daily - + 0.1 2013-09-14T12:53:02+02:00 daily - + 0.1 2013-09-21T09:52:51+02:00 daily - + 0.1 2013-09-28T10:53:51+02:00 daily - + 0.1 2013-10-05T15:13:03+02:00 daily - + 0.1 2013-10-12T10:02:23+02:00 daily - + 0.1 2013-10-19T11:16:08+02:00 daily - + 0.1 2013-10-26T09:45:28+02:00 daily - + 0.1 2013-11-02T09:31:31+01:00 daily - + 0.1 2013-11-09T08:20:33+01:00 daily - + 0.1 2013-11-16T10:32:19+01:00 daily - + 0.1 2013-11-23T10:06:29+01:00 daily - + 0.1 2013-11-30T09:43:57+01:00 daily - + 0.1 2013-12-07T10:15:51+01:00 daily - + 0.1 2013-12-14T10:11:22+01:00 daily - + 0.1 2013-12-20T19:54:58+01:00 daily - + 0.1 2013-12-29T20:05:43+01:00 daily - + 0.1 2014-01-05T14:15:01+01:00 daily - + 0.1 2014-01-11T10:18:00+01:00 daily - + 0.1 2014-01-18T11:11:46+01:00 daily - + 0.1 2014-01-25T10:19:03+01:00 daily - + 0.1 2014-02-01T12:29:50+01:00 daily - + 0.1 2014-02-08T10:16:49+01:00 daily - + 0.1 2014-02-15T10:16:33+01:00 daily - + 0.1 2014-02-22T10:07:48+01:00 daily - + 0.1 2014-03-01T09:54:46+01:00 daily - + 0.1 2014-03-08T13:48:58+01:00 daily - + 0.1 2014-03-15T12:27:02+01:00 daily - + 0.1 2014-03-22T12:03:24+01:00 daily - + 0.1 2014-03-29T10:06:14+01:00 daily - + 0.1 2014-04-05T07:19:52+02:00 daily - + 0.1 2014-04-12T12:22:51+02:00 daily - + 0.1 2014-04-19T14:28:17+02:00 daily - + 0.1 2014-04-26T10:24:04+02:00 daily - + 0.1 2014-05-03T12:43:16+02:00 daily - + 0.1 2014-05-10T09:11:22+02:00 daily - + 0.1 2014-05-17T09:53:28+02:00 daily - + 0.1 2014-05-24T10:18:01+02:00 daily - + 0.1 2014-05-31T08:10:03+02:00 daily - + 0.1 2014-06-07T15:37:13+02:00 daily - + 0.1 2014-06-14T10:51:35+02:00 daily - + 0.1 2014-06-21T12:30:22+02:00 daily - + 0.1 2014-06-28T12:36:33+02:00 daily - + 0.1 2014-07-05T10:50:24+02:00 daily - + 0.1 2014-07-12T07:08:32+02:00 daily - + 0.1 2014-07-19T09:38:07+02:00 daily - + 0.1 2014-07-26T11:59:47+02:00 daily - + 0.1 2014-08-02T10:12:07+02:00 daily - + 0.1 2014-08-09T11:25:53+02:00 daily - + 0.1 2014-08-16T10:54:21+02:00 daily - + 0.1 2014-08-23T08:56:31+02:00 daily - + 0.1 2014-08-30T07:51:45+02:00 daily - + 0.1 2014-09-06T10:42:03+02:00 daily - + 0.1 2014-09-13T11:32:34+02:00 daily - + 0.1 2014-09-20T08:17:32+02:00 daily - + 0.1 2014-09-27T09:40:30+02:00 daily - + 0.1 2014-10-04T10:54:39+02:00 daily - + 0.1 2014-10-11T10:24:17+02:00 daily - + 0.1 2014-10-18T10:39:46+02:00 daily - + 0.1 2014-10-25T09:55:40+02:00 daily - + 0.1 2014-11-01T10:41:21+01:00 daily - + 0.1 2014-11-08T09:41:16+01:00 daily - + 0.1 2014-11-15T09:55:25+01:00 daily - + 0.1 2014-11-22T10:28:01+01:00 daily - + 0.1 2014-11-29T08:55:43+01:00 daily - + 0.1 2014-12-06T08:58:32+01:00 daily - + 0.1 2014-12-13T09:34:15+01:00 daily - + 0.1 2014-12-20T09:22:31+01:00 daily - + 0.1 2014-12-27T10:17:22+01:00 daily - + 0.1 2015-01-03T12:25:02+01:00 daily - + 0.1 2015-01-10T09:54:29+01:00 daily - + 0.1 2015-01-17T09:43:50+01:00 daily - + 0.1 2015-01-24T10:26:44+01:00 daily - + 0.1 2015-01-31T09:43:08+01:00 daily - + 0.1 2015-02-07T08:55:22+01:00 daily - + 0.1 2015-02-14T10:03:09+01:00 daily - + 0.1 2015-02-21T09:45:26+01:00 daily - + 0.1 2015-02-28T10:23:13+01:00 daily - + 0.1 2015-03-07T11:11:23+01:00 daily - + 0.1 2015-03-14T09:37:43+01:00 daily - + 0.1 2015-03-21T09:11:33+01:00 daily - + 0.1 2015-03-28T10:05:20+01:00 daily - + 0.1 2015-04-04T09:19:15+02:00 daily - + 0.1 2015-04-11T12:18:30+02:00 daily - + 0.1 2015-04-18T09:33:22+02:00 daily - + 0.1 2015-04-25T10:28:12+02:00 daily - + 0.1 2015-05-02T08:59:41+02:00 daily - + 0.1 2015-05-09T08:39:56+02:00 daily - + 0.1 2015-05-16T10:10:21+02:00 daily - + 0.1 2015-05-23T09:03:26+02:00 daily - + 0.1 2015-05-30T08:03:23+02:00 daily - + 0.1 2015-06-06T08:10:49+02:00 daily - + 0.1 2015-06-13T07:56:48+02:00 daily - + 0.1 2015-06-20T08:29:33+02:00 daily - + 0.1 2015-06-27T08:03:39+02:00 daily - + 0.1 2015-07-06T08:41:30+02:00 daily - + 0.1 2015-07-13T10:59:51+02:00 daily - + 0.1 2015-07-20T09:31:06+02:00 daily - + 0.1 2015-07-27T09:43:52+02:00 daily - + 0.1 2015-08-03T08:42:34+02:00 daily - + 0.1 2015-08-10T09:21:40+02:00 daily - + 0.1 2015-08-17T17:14:09+02:00 daily - + 0.1 2015-08-23T11:35:10+02:00 daily - + 0.1 2015-08-30T08:12:43+02:00 daily - + 0.1 2015-09-06T12:13:51+02:00 daily - + 0.1 2015-09-13T08:44:04+02:00 daily - + 0.1 2015-09-20T10:54:00+02:00 daily - + 0.1 2015-09-27T10:59:21+02:00 daily - + 0.1 2015-10-04T11:21:08+02:00 daily - + 0.1 2015-10-11T10:03:19+02:00 daily + + +0.1 +2015-12-08T18:57:32+01:00 +daily + + + +0.1 +2015-12-08T18:57:49+01:00 +daily + + + +0.1 +2015-12-08T18:57:52+01:00 +daily + + + +0.1 +2015-12-08T18:58:01+01:00 +daily + + + +0.1 +2015-12-08T18:58:09+01:00 +daily + + + +0.1 +2015-12-08T18:58:17+01:00 +daily + + + +0.1 +2015-12-08T18:58:21+01:00 +daily + + + +0.1 +2015-12-10T09:10:34+01:00 +daily + diff --git a/1_fr_4_sitemap.xml b/1_fr_4_sitemap.xml index 3e57af36..d5234179 100644 --- a/1_fr_4_sitemap.xml +++ b/1_fr_4_sitemap.xml @@ -1,2592 +1,2390 @@ - + 0.9 -2015-10-29T16:35:08+01:00 +2015-12-08T14:53:46+01:00 daily - - - - - - - -0.9 -2015-10-27T09:33:42+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:33:46+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:33:50+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:33:55+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:33:59+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:34:02+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:34:06+01:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:40+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:41+02:00 -daily - - - - - - - - -0.9 -2015-10-27T09:34:51+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:34:55+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:35:00+01:00 -daily - - - - - - - - -0.9 -2015-10-27T09:34:45+01:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:48+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:49+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:50+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:50+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:51+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:51+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:52+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:26+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:27+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:28+02:00 -daily - - - -0.9 -2015-10-21T13:02:28+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:29+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:30+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:30+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:31+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:36+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:37+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:53+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:54+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:55+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:31+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:32+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:33+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:34+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:35+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:35+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:42+02:00 -daily - - - - - - - - -0.9 -2015-10-28T12:26:59+01:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:35+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:53+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:54+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:54+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:55+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:56+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:57+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:58+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:03+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:03+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:04+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:04+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:05+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:06+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:06+02:00 -daily - - - - - - - - -0.9 -2015-10-21T17:36:53+02:00 -daily - - + - + 0.9 -2015-10-21T13:00:18+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:19+02:00 +2015-12-08T18:38:17+01:00 daily - + - + 0.9 -2015-10-21T13:00:20+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:20+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:21+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:21+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:59+02:00 +1970-01-01T01:00:00+01:00 daily - - - - - - - -0.9 -2015-10-21T13:00:59+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:00+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:00+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:01+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:01+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:02+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:03+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:48+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:48+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:49+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:49+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:50+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:51+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:52+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:53+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:29+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:32+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:24+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:25+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:26+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:27+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:27+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:05:47+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:28+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:30+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:34+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:34+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:33+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:35+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:44+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:44+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:45+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:45+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:00:46+02:00 -daily - - - -0.9 -2015-10-21T13:00:22+02:00 -daily - - + - + 0.9 -2015-10-21T13:00:22+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:32+02:00 +1970-01-01T01:00:00+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T17:37:32+02:00 +1970-01-01T01:00:00+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T13:00:38+02:00 +2015-12-09T11:55:50+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T13:00:38+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:39+02:00 -daily - - - -0.9 -2015-10-21T13:00:39+02:00 +2015-12-04T09:51:13+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T13:00:40+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:41+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:42+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:42+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:43+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:43+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:00:47+02:00 -daily - - - -0.9 -2015-10-21T13:00:47+02:00 -daily - - - -0.9 -2015-10-21T13:01:06+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:09+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:19+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:19+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:20+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:20+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:21+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T17:38:28+02:00 +2015-12-08T16:24:55+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:23+02:00 +2015-12-08T18:39:42+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:28+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:29+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:30+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:31+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:33+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:34+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:35+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:39+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:40+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:40+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:41+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:44+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:45+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:45+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:46+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:47+02:00 -daily - - - -0.9 -2015-10-21T13:01:48+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:03+02:00 +1970-01-01T01:00:00+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T13:01:04+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:05+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:05+02:00 +1970-01-01T01:00:00+01:00 daily - - + + - + 0.9 -2015-10-21T13:01:06+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:07+02:00 +1970-01-01T01:00:00+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-21T13:01:07+02:00 -daily - - - -0.9 -2015-10-21T13:01:08+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:09+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:13+02:00 +1970-01-01T01:00:00+01:00 daily - - + + + + + + + +0.9 +2015-12-10T09:29:25+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + - + 0.9 -2015-10-21T13:01:13+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:14+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:14+02:00 +1970-01-01T01:00:00+01:00 daily - - - - - - - -0.9 -2015-10-21T13:01:15+02:00 -daily - - + - + 0.9 -2015-10-21T13:01:15+02:00 +1970-01-01T01:00:00+01:00 daily - - - - - - - -0.9 -2015-10-21T13:01:16+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:16+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:17+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:17+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:24+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:25+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:26+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:26+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:27+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:27+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:29+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:30+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:42+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:42+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:43+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:44+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:01:18+02:00 -daily - - + - + 0.9 -2015-10-21T13:01:18+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-21T13:01:49+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:49+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:50+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:50+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:51+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:52+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:52+02:00 +2015-12-08T18:40:18+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:53+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:55+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:56+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:56+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:57+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:57+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:58+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:01:59+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 -2015-10-21T13:02:00+02:00 +1970-01-01T01:00:00+01:00 daily - - - - - - - -0.9 -2015-10-21T13:02:00+02:00 -daily - - - -0.9 -2015-10-21T13:02:01+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:02+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:13+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:14+02:00 -daily - - - -0.9 -2015-10-21T13:02:15+02:00 -daily - - - -0.9 -2015-10-21T13:02:16+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:16+02:00 -daily - - - -0.9 -2015-10-21T13:02:17+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:18+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:19+02:00 -daily - - - -0.9 -2015-10-21T13:02:19+02:00 -daily - - - -0.9 -2015-10-21T13:02:20+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:21+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:21+02:00 -daily - - - -0.9 -2015-10-21T13:02:22+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:22+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:23+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:23+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:07+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:08+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:09+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:09+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:10+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:10+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:11+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:11+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:12+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:13+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:14+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:18+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:24+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:24+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:25+02:00 -daily - - - - - - - - -0.9 -2015-10-21T13:02:26+02:00 -daily - - - - - - - - -0.9 -2015-10-22T12:21:41+02:00 -daily - - + - + 0.9 -2015-10-22T12:21:51+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-22T12:22:01+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-22T12:22:07+02:00 +1970-01-01T01:00:00+01:00 daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +2015-12-08T18:41:09+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + 0.9 -2015-10-22T12:22:16+02:00 +1970-01-01T01:00:00+01:00 daily - + - + 0.9 -2015-10-22T12:21:33+02:00 +1970-01-01T01:00:00+01:00 daily - + - + - + 0.9 -2015-10-21T13:00:37+02:00 +1970-01-01T01:00:00+01:00 daily - - - + + + - + 0.9 1970-01-01T01:00:00+01:00 daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -2015-11-02T16:48:25+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -1970-01-01T01:00:00+01:00 -daily - - - -0.9 -2015-10-28T14:50:04+01:00 -daily - + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +2015-12-08T18:36:32+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +2015-12-08T18:37:58+01:00 +daily + + + + + + + + +0.9 +2015-12-08T18:37:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +2015-12-08T18:42:20+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + - + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +1970-01-01T01:00:00+01:00 +daily + + + + + + + + +0.9 +2015-12-02T12:46:51+01:00 +daily + + + + + + + + +0.9 +2015-12-02T12:47:29+01:00 +daily + + + + + + + + +0.9 +2015-12-08T15:58:19+01:00 +daily + + + + + + + + +0.9 +2015-12-10T08:12:14+01:00 +daily + + + + + + + + +0.9 +2015-12-10T08:12:48+01:00 +daily + + + + + + + + +0.9 +2015-12-10T08:04:17+01:00 +daily + + + + + + + + +0.9 +2015-12-02T12:49:06+01:00 +daily + + + + diff --git a/1_fr_5_sitemap.xml b/1_fr_5_sitemap.xml index 960f4ec3..13922c95 100644 --- a/1_fr_5_sitemap.xml +++ b/1_fr_5_sitemap.xml @@ -1,20441 +1,20738 @@ - + 0.1 -2015-10-29T16:22:54+01:00 +2015-12-10T10:52:01+01:00 daily - + - + 0.1 -2015-10-28T17:33:40+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-28T17:32:34+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-28T17:35:03+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:45:59+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T11:43:39+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-11-03T08:13:32+01:00 +2015-12-10T09:40:33+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:49:56+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:50:21+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:50:46+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:51:12+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T15:06:37+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-11-05T17:00:14+01:00 +2015-12-09T15:00:46+01:00 daily - + - + 0.1 -2015-10-07T10:51:56+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T21:59:01+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T21:20:22+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:44:37+01:00 daily - + - + 0.1 -2015-10-07T10:52:46+02:00 +2015-12-10T10:52:11+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-28T17:27:49+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T10:22:51+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-07T10:54:12+02:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-28T20:16:24+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T14:23:02+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-11-18T17:36:24+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:29:08+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:46:50+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T18:41:20+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T01:41:12+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T20:24:57+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - -0.1 -2015-10-28T20:16:29+01:00 -daily - - - - - - - - + 0.1 2001-01-01T00:00:00+01:00 daily - + + + + + + + +0.1 +2001-01-01T00:00:00+01:00 +daily + + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T09:26:52+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:16:32+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T06:28:56+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:16:32+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T14:29:40+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:04:46+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T15:07:38+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T09:24:31+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T09:24:07+01:00 daily - + - + 0.1 -2015-10-27T11:54:31+01:00 +2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T14:39:23+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:32:53+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T01:14:13+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T20:17:39+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:36:48+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T18:23:49+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T18:55:06+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T22:09:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T08:41:37+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:24:09+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T16:26:53+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T16:22:33+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T03:32:45+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T03:35:13+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T03:40:19+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-08T18:43:23+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T07:45:45+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T22:09:10+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T21:08:50+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T00:26:37+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-08T18:46:39+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2009-07-13T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-10-16T00:00:00+02:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:47:03+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T23:05:09+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T18:46:19+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T11:04:45+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-02T11:23:45+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:19:55+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T09:16:23+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:34:13+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:40:15+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-11-30T12:47:49+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:30:55+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:32:48+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T07:29:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-08T18:49:43+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:51:17+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T06:22:44+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2015-10-21T11:08:09+02:00 +2015-11-19T15:51:26+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T10:50:20+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-02T11:06:34+01:00 daily - + - + 0.1 -2015-10-20T10:04:47+02:00 +2015-12-10T01:43:37+01:00 daily - + - + 0.1 2002-07-30T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:40:57+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T21:38:17+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T20:59:18+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T16:02:26+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T19:51:53+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2003-06-18T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2003-06-18T00:00:00+02:00 daily - + - + 0.1 2003-06-19T00:00:00+02:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T01:14:20+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2003-06-20T00:00:00+02:00 daily - + - + 0.1 2003-06-20T00:00:00+02:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T15:19:39+01:00 daily - + - + 0.1 -2003-06-18T00:00:00+02:00 +2015-12-10T09:09:55+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T22:17:39+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T23:36:43+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-11-17T12:21:25+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T20:40:08+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2003-12-25T00:00:00+01:00 daily - + - + 0.1 2004-03-31T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2004-06-04T00:00:00+02:00 +2015-12-10T10:12:59+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T11:04:21+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T13:16:29+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-09T15:09:31+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2006-10-22T00:00:00+02:00 daily - + - + 0.1 2006-10-22T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2006-10-22T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T03:21:24+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T05:41:46+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T09:28:27+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T09:10:07+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T10:26:53+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T21:55:59+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T15:18:01+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T09:07:15+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T03:44:19+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T22:34:30+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T21:28:46+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T14:11:11+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T15:12:44+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T23:19:36+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T14:44:57+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T06:14:02+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T18:53:04+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T15:00:01+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T23:58:06+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-06T23:14:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T19:05:41+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T11:05:59+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T22:49:59+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T21:46:55+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T10:30:31+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T08:19:53+01:00 daily - + - + 0.1 -2008-01-24T00:00:00+01:00 +2015-12-09T19:41:52+01:00 daily - + - + 0.1 -2008-01-24T00:00:00+01:00 +2015-12-09T15:15:32+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 -2008-01-24T00:00:00+01:00 +2015-12-10T06:28:23+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 -2008-01-24T00:00:00+01:00 +2015-12-09T21:45:33+01:00 daily - + - + 0.1 -2008-01-24T00:00:00+01:00 +2015-12-09T21:47:32+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-09T15:23:24+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-11-24T12:43:58+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-11-24T12:51:21+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-09T22:26:53+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-09T22:17:09+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-09T22:17:35+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2015-10-14T12:49:28+02:00 +2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2001-01-01T00:00:00+01:00 +2015-12-10T09:26:19+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2002-07-29T00:00:00+02:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2001-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T19:57:30+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-10T03:00:03+01:00 daily - + - + 0.1 -2015-10-13T19:12:30+02:00 +2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T21:51:36+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 -2008-01-01T00:00:00+01:00 +2015-12-09T20:10:22+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-01T00:00:00+01:00 daily - + - + 0.1 2008-01-24T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-10T08:20:18+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-01-28T00:00:00+01:00 +2015-12-10T00:37:00+01:00 daily - + - + 0.1 2008-01-28T00:00:00+01:00 daily - + - + 0.1 -2008-10-06T00:00:00+02:00 +2015-12-03T12:22:01+01:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 2008-10-06T00:00:00+02:00 daily - + - + 0.1 -2015-10-20T09:27:41+02:00 +2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-16T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 2008-10-17T00:00:00+02:00 daily - + - + 0.1 -2015-10-20T09:20:40+02:00 +2015-12-09T16:20:14+01:00 daily - + - + 0.1 -2009-02-20T00:00:00+01:00 +2015-12-09T19:10:48+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 -2009-02-20T00:00:00+01:00 +2015-12-09T20:00:42+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 2009-02-20T00:00:00+01:00 daily - + - + 0.1 -2009-02-20T00:00:00+01:00 +2015-12-09T22:30:52+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-10T09:35:01+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-09T21:13:28+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-10T04:41:17+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-10T09:01:40+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-09T18:48:44+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-09T21:13:17+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 -2015-10-20T09:22:06+02:00 +2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 -2009-03-09T00:00:00+01:00 +2015-12-09T14:08:21+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 2009-03-09T00:00:00+01:00 daily - + - + 0.1 -2009-03-11T00:00:00+01:00 +2015-12-10T07:04:43+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 -2009-03-18T00:00:00+01:00 +2015-12-10T00:07:57+01:00 daily - + - + 0.1 -2009-03-18T00:00:00+01:00 +2015-11-20T12:16:13+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 -2009-03-18T00:00:00+01:00 +2015-12-10T08:48:16+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 -2009-03-18T00:00:00+01:00 +2015-12-10T08:06:18+01:00 daily - + - + 0.1 2009-03-18T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 2009-03-19T00:00:00+01:00 daily - + - + 0.1 -2009-03-24T00:00:00+01:00 +2015-12-09T16:09:04+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 -2009-03-24T00:00:00+01:00 +2015-12-02T15:17:55+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 -2009-03-24T00:00:00+01:00 +2015-12-10T08:51:22+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 2009-03-24T00:00:00+01:00 daily - + - + 0.1 -2009-03-24T00:00:00+01:00 +2015-12-09T22:11:17+01:00 daily - + - + 0.1 2009-03-25T00:00:00+01:00 daily - + - + 0.1 2009-03-25T00:00:00+01:00 daily - + - + 0.1 -2009-03-27T00:00:00+01:00 +2015-12-10T09:25:29+01:00 daily - + - + 0.1 -2009-03-27T00:00:00+01:00 +2015-12-10T09:49:18+01:00 daily - + - + 0.1 2009-03-27T00:00:00+01:00 daily - + - + 0.1 2009-03-31T00:00:00+02:00 daily - + - + 0.1 2009-03-31T00:00:00+02:00 daily - + - + 0.1 2009-03-31T00:00:00+02:00 daily - + - + 0.1 2009-03-31T00:00:00+02:00 daily - + - + 0.1 2009-05-28T00:00:00+02:00 daily - + - + 0.1 2009-05-28T00:00:00+02:00 daily - + - + 0.1 -2009-05-28T00:00:00+02:00 +2015-12-09T16:18:58+01:00 daily - + - + 0.1 2009-05-28T00:00:00+02:00 daily - + - + 0.1 2009-06-05T00:00:00+02:00 daily - + - + 0.1 2009-06-05T00:00:00+02:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 -2009-06-30T00:00:00+02:00 +2015-11-18T17:36:06+01:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 -2009-06-30T00:00:00+02:00 +2015-12-09T15:11:41+01:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 -2009-06-30T00:00:00+02:00 +2015-12-09T14:50:52+01:00 daily - + - + 0.1 -2009-07-01T00:00:00+02:00 +2015-12-10T09:31:50+01:00 daily - + - + 0.1 -2009-07-02T00:00:00+02:00 +2015-12-09T21:19:22+01:00 daily - + - + 0.1 2009-07-06T00:00:00+02:00 daily - + - + 0.1 2009-07-06T00:00:00+02:00 daily - + - + 0.1 2009-07-07T00:00:00+02:00 daily - + - + 0.1 -2009-07-10T00:00:00+02:00 +2015-12-10T09:19:10+01:00 daily - + - + 0.1 2009-07-10T00:00:00+02:00 daily - + - + 0.1 2009-07-13T00:00:00+02:00 daily - + - + 0.1 2009-07-14T00:00:00+02:00 daily - + - + 0.1 -2009-07-14T00:00:00+02:00 +2015-11-19T17:36:42+01:00 daily - + - + 0.1 2009-07-14T00:00:00+02:00 daily - + - + 0.1 2009-07-14T00:00:00+02:00 daily - + - + 0.1 2009-07-14T00:00:00+02:00 daily - + - + 0.1 2009-07-14T00:00:00+02:00 daily - + - + 0.1 2009-07-15T00:00:00+02:00 daily - + - + 0.1 2009-07-18T00:00:00+02:00 daily - + - + 0.1 2009-07-21T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 -2015-10-20T09:31:26+02:00 +2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-22T00:00:00+02:00 daily - + - + 0.1 2009-07-23T00:00:00+02:00 daily - + - + 0.1 2009-07-23T00:00:00+02:00 daily - + - + 0.1 2009-07-23T00:00:00+02:00 daily - + - + 0.1 2009-07-23T00:00:00+02:00 daily - + - + 0.1 2009-07-23T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 2009-07-25T00:00:00+02:00 daily - + - + 0.1 -2009-07-25T00:00:00+02:00 +2015-12-09T21:00:13+01:00 daily - + - + 0.1 2009-07-26T00:00:00+02:00 daily - + - + 0.1 -2009-07-27T00:00:00+02:00 +2015-12-10T10:57:04+01:00 daily - + - + 0.1 2009-07-27T00:00:00+02:00 daily - + - + 0.1 2009-07-28T00:00:00+02:00 daily - + - + 0.1 -2009-07-29T00:00:00+02:00 +2015-12-10T10:04:01+01:00 daily - + - + 0.1 -2015-10-20T14:51:05+02:00 +2015-12-09T16:21:13+01:00 daily - + - + 0.1 2009-07-29T00:00:00+02:00 daily - + - + 0.1 2009-06-30T00:00:00+02:00 daily - + - + 0.1 2009-07-30T00:00:00+02:00 daily - + - + 0.1 2009-07-31T00:00:00+02:00 daily - + - + 0.1 2009-08-02T00:00:00+02:00 daily - + - + 0.1 2009-08-02T00:00:00+02:00 daily - + - + 0.1 2009-08-02T00:00:00+02:00 daily - + - + 0.1 2009-08-02T00:00:00+02:00 daily - + - + 0.1 2009-08-02T00:00:00+02:00 daily - + - + 0.1 2009-08-03T00:00:00+02:00 daily - + - + 0.1 -2009-08-04T00:00:00+02:00 +2015-12-09T14:26:52+01:00 daily - + - + 0.1 2009-08-04T00:00:00+02:00 daily - + - + 0.1 2009-08-04T00:00:00+02:00 daily - + - + 0.1 2009-08-04T00:00:00+02:00 daily - + - + 0.1 2009-08-04T00:00:00+02:00 daily - + - + 0.1 2009-08-04T00:00:00+02:00 daily - + - + 0.1 2009-08-06T00:00:00+02:00 daily - + - + 0.1 2009-08-06T00:00:00+02:00 daily - + - + 0.1 2009-08-06T00:00:00+02:00 daily - + - + 0.1 2009-08-07T00:00:00+02:00 daily - + - + 0.1 2009-08-07T00:00:00+02:00 daily - + - + 0.1 2009-08-10T00:00:00+02:00 daily - + - + 0.1 2009-08-11T00:00:00+02:00 daily - + - + 0.1 -2009-08-11T00:00:00+02:00 +2015-12-10T10:53:54+01:00 daily - + - + 0.1 -2009-08-11T00:00:00+02:00 +2015-12-10T10:23:59+01:00 daily - + - + 0.1 -2009-08-11T00:00:00+02:00 +2015-12-10T10:56:44+01:00 daily - + - + 0.1 2009-08-11T00:00:00+02:00 daily - + - + 0.1 2009-08-11T00:00:00+02:00 daily - + - + 0.1 2009-08-11T00:00:00+02:00 daily - + - + 0.1 -2009-08-11T00:00:00+02:00 +2015-12-10T09:32:07+01:00 daily - + - + 0.1 2009-08-12T00:00:00+02:00 daily - + - + 0.1 -2009-08-13T00:00:00+02:00 +2015-12-10T01:51:07+01:00 daily - + - + 0.1 2009-08-13T00:00:00+02:00 daily - + - + 0.1 2009-08-13T00:00:00+02:00 daily - + - + 0.1 2009-08-13T00:00:00+02:00 daily - + - + 0.1 -2009-08-14T00:00:00+02:00 +2015-12-09T20:25:23+01:00 daily - + - + 0.1 -2009-08-14T00:00:00+02:00 +2015-12-10T10:56:55+01:00 daily - + - + 0.1 -2009-08-15T00:00:00+02:00 +2015-12-10T08:43:39+01:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 -2009-08-15T00:00:00+02:00 +2015-12-09T15:06:18+01:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 -2009-08-15T00:00:00+02:00 +2015-12-09T22:33:31+01:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 -2009-08-15T00:00:00+02:00 +2015-12-09T15:48:47+01:00 daily - + - + 0.1 -2009-08-15T00:00:00+02:00 +2015-12-09T19:38:58+01:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-15T00:00:00+02:00 daily - + - + 0.1 2009-08-17T00:00:00+02:00 daily - + - + 0.1 2009-08-17T00:00:00+02:00 daily - + - + 0.1 2009-08-17T00:00:00+02:00 daily - + - + 0.1 -2009-08-17T00:00:00+02:00 +2015-12-09T15:09:00+01:00 daily - + - + 0.1 2009-08-17T00:00:00+02:00 daily - + - + 0.1 2009-08-18T00:00:00+02:00 daily - + - + 0.1 2009-08-18T00:00:00+02:00 daily - + - + 0.1 -2009-08-18T00:00:00+02:00 +2015-12-10T10:09:07+01:00 daily - + - + 0.1 2009-08-18T00:00:00+02:00 daily - + - + 0.1 2009-08-18T00:00:00+02:00 daily - + - + 0.1 2009-08-19T00:00:00+02:00 daily - + - + 0.1 2009-08-19T00:00:00+02:00 daily - + - + 0.1 2009-08-20T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 2009-08-21T00:00:00+02:00 daily - + - + 0.1 -2009-08-21T00:00:00+02:00 +2015-12-09T21:55:17+01:00 daily - + - + 0.1 2009-08-24T00:00:00+02:00 daily - + - + 0.1 2009-08-24T00:00:00+02:00 daily - + - + 0.1 2009-08-24T00:00:00+02:00 daily - + - + 0.1 -2009-08-25T00:00:00+02:00 +2015-12-10T06:15:41+01:00 daily - + - + 0.1 2009-08-26T00:00:00+02:00 daily - + - + 0.1 2009-08-27T00:00:00+02:00 daily - + - + 0.1 2009-08-27T00:00:00+02:00 daily - + - + 0.1 2009-08-27T00:00:00+02:00 daily - + - + 0.1 2009-08-27T00:00:00+02:00 daily - + - + 0.1 -2009-08-28T00:00:00+02:00 +2015-12-10T09:23:19+01:00 daily - + - + 0.1 2009-08-28T00:00:00+02:00 daily - + - + 0.1 2009-08-28T00:00:00+02:00 daily - + - + 0.1 2009-09-07T00:00:00+02:00 daily - + - + 0.1 2009-09-08T00:00:00+02:00 daily - + - + 0.1 2009-09-08T00:00:00+02:00 daily - + - + 0.1 -2009-09-10T00:00:00+02:00 +2015-12-09T23:43:50+01:00 daily - + - + 0.1 2009-09-10T00:00:00+02:00 daily - + - + 0.1 2009-09-10T00:00:00+02:00 daily - + - + 0.1 2009-09-10T00:00:00+02:00 daily - + - + 0.1 2009-09-10T00:00:00+02:00 daily - + - + 0.1 2009-09-10T00:00:00+02:00 daily - + - + 0.1 2009-09-11T00:00:00+02:00 daily - + - + 0.1 2009-09-12T00:00:00+02:00 daily - + - + 0.1 2009-09-13T00:00:00+02:00 daily - + - + 0.1 2009-09-18T00:00:00+02:00 daily - + - + 0.1 2009-09-18T00:00:00+02:00 daily - + - + 0.1 -2009-09-18T00:00:00+02:00 +2015-12-02T15:23:57+01:00 daily - + - + 0.1 2009-09-18T00:00:00+02:00 daily - + - + 0.1 2009-09-18T00:00:00+02:00 daily - + - + 0.1 -2009-09-20T00:00:00+02:00 +2015-12-10T07:35:35+01:00 daily - + - + 0.1 2009-09-23T00:00:00+02:00 daily - + - + 0.1 2009-09-30T00:00:00+02:00 daily - + - + 0.1 2009-10-06T00:00:00+02:00 daily - + - + 0.1 -2009-10-06T00:00:00+02:00 +2015-12-09T18:55:01+01:00 daily - + - + 0.1 -2015-10-07T11:42:26+02:00 +2015-12-09T16:22:08+01:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 -2009-10-07T00:00:00+02:00 +2015-12-09T21:36:34+01:00 daily - + - + 0.1 -2009-10-07T00:00:00+02:00 +2015-12-09T14:51:34+01:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 -2009-10-07T00:00:00+02:00 +2015-12-09T13:08:48+01:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-07T00:00:00+02:00 daily - + - + 0.1 2009-10-08T00:00:00+02:00 daily - + - + 0.1 2009-10-08T00:00:00+02:00 daily - + - + 0.1 2009-10-08T00:00:00+02:00 daily - + - + 0.1 -2009-10-08T00:00:00+02:00 +2015-12-10T10:15:26+01:00 daily - + - + 0.1 2009-10-11T00:00:00+02:00 daily - + - + 0.1 -2009-10-11T00:00:00+02:00 +2015-12-10T10:45:53+01:00 daily - + - + 0.1 2009-10-11T00:00:00+02:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 -2009-10-15T00:00:00+02:00 +2015-12-09T13:35:20+01:00 daily - + - + 0.1 2009-10-15T00:00:00+02:00 daily - + - + 0.1 2009-10-17T00:00:00+02:00 daily - + - + 0.1 2009-10-18T00:00:00+02:00 daily - + - + 0.1 2009-10-19T00:00:00+02:00 daily - + - + 0.1 2009-10-19T00:00:00+02:00 daily - + - + 0.1 2009-10-19T00:00:00+02:00 daily - + - + 0.1 2009-11-01T00:00:00+01:00 daily - + - + 0.1 2009-11-01T00:00:00+01:00 daily - + - + 0.1 2009-11-06T00:00:00+01:00 daily - + - + 0.1 2009-11-13T00:00:00+01:00 daily - + - + 0.1 2009-11-15T00:00:00+01:00 daily - + - + 0.1 -2009-11-15T00:00:00+01:00 +2015-12-10T09:08:35+01:00 daily - + - + 0.1 2009-11-15T00:00:00+01:00 daily - + - + 0.1 2009-11-16T00:00:00+01:00 daily - + - + 0.1 2009-11-22T00:00:00+01:00 daily - + - + 0.1 -2009-11-25T00:00:00+01:00 +2015-11-18T21:55:15+01:00 daily - + - + 0.1 2009-11-29T00:00:00+01:00 daily - + - + 0.1 -2009-12-06T00:00:00+01:00 +2015-12-09T19:05:35+01:00 daily - + - + 0.1 -2009-12-23T00:00:00+01:00 +2015-12-09T19:24:11+01:00 daily - + - + 0.1 2009-12-23T00:00:00+01:00 daily - + - + 0.1 2009-12-23T00:00:00+01:00 daily - + - + 0.1 -2010-01-05T00:00:00+01:00 +2015-12-10T08:24:16+01:00 daily - + - + 0.1 2010-01-17T00:00:00+01:00 daily - + - + 0.1 2010-01-26T00:00:00+01:00 daily - + - + 0.1 2010-01-26T00:00:00+01:00 daily - + - + 0.1 -2010-02-10T00:00:00+01:00 +2015-12-09T22:43:36+01:00 daily - + - + 0.1 2010-02-15T00:00:00+01:00 daily - + - + 0.1 2010-03-02T00:00:00+01:00 daily - + - + 0.1 -2015-10-26T11:38:01+01:00 +2010-03-03T00:00:00+01:00 daily - + - + 0.1 2010-03-10T00:00:00+01:00 daily - + - + 0.1 2010-03-13T00:00:00+01:00 daily - + - + 0.1 -2010-03-14T00:00:00+01:00 +2015-12-09T19:53:47+01:00 daily - + - + 0.1 2010-04-27T00:00:00+02:00 daily - + - + 0.1 2010-05-07T00:00:00+02:00 daily - + - + 0.1 2010-05-14T00:00:00+02:00 daily - + - + 0.1 2010-05-16T00:00:00+02:00 daily - + - + 0.1 2010-05-30T00:00:00+02:00 daily - + - + 0.1 -2010-06-11T00:00:00+02:00 +2015-12-10T11:03:22+01:00 daily - + - + 0.1 2010-06-11T00:00:00+02:00 daily - + - + 0.1 -2010-06-12T00:00:00+02:00 +2015-12-10T03:44:21+01:00 daily - + - + 0.1 2010-06-17T00:00:00+02:00 daily - + - + 0.1 -2010-06-18T00:00:00+02:00 +2015-11-24T12:46:11+01:00 daily - + - + 0.1 2010-06-23T00:00:00+02:00 daily - + - + 0.1 2010-06-25T00:00:00+02:00 daily - + - + 0.1 -2010-06-25T00:00:00+02:00 +2015-12-09T18:09:31+01:00 daily - + - + 0.1 2010-06-25T00:00:00+02:00 daily - + - + 0.1 2010-06-29T00:00:00+02:00 daily - + - + 0.1 2010-06-29T00:00:00+02:00 daily - + - + 0.1 2010-06-29T00:00:00+02:00 daily - + - + 0.1 2010-06-29T00:00:00+02:00 daily - + - + 0.1 2010-07-03T00:00:00+02:00 daily - + - + 0.1 2010-07-03T00:00:00+02:00 daily - + - + 0.1 -2010-07-03T00:00:00+02:00 +2015-12-10T07:49:35+01:00 daily - + - + 0.1 2010-07-05T00:00:00+02:00 daily - + - + 0.1 -2010-07-06T00:00:00+02:00 +2015-12-10T06:33:51+01:00 daily - + - + 0.1 2010-07-06T00:00:00+02:00 daily - + - + 0.1 2010-07-06T00:00:00+02:00 daily - + - + 0.1 2010-07-06T00:00:00+02:00 daily - + - + 0.1 -2010-07-06T00:00:00+02:00 +2015-12-09T21:38:50+01:00 daily - + - + 0.1 2010-07-06T00:00:00+02:00 daily - + - + 0.1 2010-07-08T00:00:00+02:00 daily - + - + 0.1 2010-07-08T00:00:00+02:00 daily - + - + 0.1 -2010-07-12T00:00:00+02:00 +2015-12-09T20:57:55+01:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 2010-07-12T00:00:00+02:00 daily - + - + 0.1 -2010-07-13T00:00:00+02:00 +2015-12-09T10:54:03+01:00 daily - + - + 0.1 -2010-07-13T00:00:00+02:00 +2015-12-09T18:47:21+01:00 daily - + - + 0.1 -2010-07-20T00:00:00+02:00 +2015-12-09T21:49:42+01:00 daily - + - + 0.1 -2010-07-20T00:00:00+02:00 +2015-12-09T22:06:46+01:00 daily - + - + 0.1 2010-07-21T00:00:00+02:00 daily - + - + 0.1 2010-07-21T00:00:00+02:00 daily - + - + 0.1 2010-07-23T00:00:00+02:00 daily - + - + 0.1 2010-07-23T00:00:00+02:00 daily - + - + 0.1 2010-07-24T00:00:00+02:00 daily - + - + 0.1 2010-07-24T00:00:00+02:00 daily - + - + 0.1 2010-07-25T00:00:00+02:00 daily - + - + 0.1 2010-07-25T00:00:00+02:00 daily - + - + 0.1 2010-07-25T00:00:00+02:00 daily - + - + 0.1 2010-07-27T00:00:00+02:00 daily - + - + 0.1 2010-07-27T00:00:00+02:00 daily - + - + 0.1 2010-07-27T00:00:00+02:00 daily - + - + 0.1 2010-07-28T00:00:00+02:00 daily - + - + 0.1 2010-07-28T00:00:00+02:00 daily - + - + 0.1 2010-07-29T00:00:00+02:00 daily - + - + 0.1 2010-07-29T00:00:00+02:00 daily - + - + 0.1 2010-07-30T00:00:00+02:00 daily - + - + 0.1 -2010-07-30T00:00:00+02:00 +2015-12-09T20:17:22+01:00 daily - + - + 0.1 2010-07-31T00:00:00+02:00 daily - + - + 0.1 2010-07-31T00:00:00+02:00 daily - + - + 0.1 2010-08-01T00:00:00+02:00 daily - + - + 0.1 -2010-08-01T00:00:00+02:00 +2015-12-10T00:37:40+01:00 daily - + - + 0.1 2010-08-01T00:00:00+02:00 daily - + - + 0.1 2010-08-02T00:00:00+02:00 daily - + - + 0.1 2010-08-02T00:00:00+02:00 daily - + - + 0.1 2010-08-02T00:00:00+02:00 daily - + - + 0.1 -2010-08-02T00:00:00+02:00 +2015-12-10T09:59:18+01:00 daily - + - + 0.1 -2010-08-02T00:00:00+02:00 +2015-12-10T11:02:32+01:00 daily - + - + 0.1 2010-08-02T00:00:00+02:00 daily - + - + 0.1 -2010-08-03T00:00:00+02:00 +2015-12-10T08:02:49+01:00 daily - + - + 0.1 2010-08-03T00:00:00+02:00 daily - + - + 0.1 2010-08-04T00:00:00+02:00 daily - + - + 0.1 2010-08-04T00:00:00+02:00 daily - + - + 0.1 -2010-08-06T00:00:00+02:00 +2015-12-10T08:29:14+01:00 daily - + - + 0.1 2010-08-06T00:00:00+02:00 daily - + - + 0.1 -2010-08-06T00:00:00+02:00 +2015-12-09T19:05:02+01:00 daily - + - + 0.1 -2010-08-07T00:00:00+02:00 +2015-12-10T07:53:27+01:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 -2010-08-09T00:00:00+02:00 +2015-12-10T11:02:40+01:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 -2010-08-09T00:00:00+02:00 +2015-12-09T19:30:57+01:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 -2010-08-09T00:00:00+02:00 +2015-12-10T10:17:11+01:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 2010-08-09T00:00:00+02:00 daily - + - + 0.1 -2010-08-11T00:00:00+02:00 +2015-12-09T19:08:51+01:00 daily - + - + 0.1 2010-08-11T00:00:00+02:00 daily - + - + 0.1 2010-08-14T00:00:00+02:00 daily - + - + 0.1 -2010-08-14T00:00:00+02:00 +2015-12-10T10:25:14+01:00 daily - + - + 0.1 2010-08-14T00:00:00+02:00 daily - + - + 0.1 2010-08-14T00:00:00+02:00 daily - + - + 0.1 2010-08-14T00:00:00+02:00 daily - + - + 0.1 2010-08-15T00:00:00+02:00 daily - + - + 0.1 2010-08-15T00:00:00+02:00 daily - + - + 0.1 2010-08-16T00:00:00+02:00 daily - + - + 0.1 2010-08-19T00:00:00+02:00 daily - + - + 0.1 2010-08-19T00:00:00+02:00 daily - + - + 0.1 2010-08-19T00:00:00+02:00 daily - + - + 0.1 2010-08-19T00:00:00+02:00 daily - + - + 0.1 2010-08-20T00:00:00+02:00 daily - + - + 0.1 2010-08-22T00:00:00+02:00 daily - + - + 0.1 -2010-08-25T00:00:00+02:00 +2015-12-09T14:50:13+01:00 daily - + - + 0.1 2010-08-26T00:00:00+02:00 daily - + - + 0.1 2010-08-27T00:00:00+02:00 daily - + - + 0.1 2010-08-27T00:00:00+02:00 daily - + - + 0.1 2010-08-29T00:00:00+02:00 daily - + - + 0.1 2010-08-29T00:00:00+02:00 daily - + - + 0.1 -2010-08-29T00:00:00+02:00 +2015-12-10T10:22:14+01:00 daily - + - + 0.1 2010-08-29T00:00:00+02:00 daily - + - + 0.1 -2010-08-29T00:00:00+02:00 +2015-12-09T18:58:55+01:00 daily - + - + 0.1 2010-08-29T00:00:00+02:00 daily - + - + 0.1 2010-09-01T00:00:00+02:00 daily - + - + 0.1 2010-09-02T00:00:00+02:00 daily - + - + 0.1 2010-09-02T00:00:00+02:00 daily - + - + 0.1 -2010-09-02T00:00:00+02:00 +2015-12-10T10:34:34+01:00 daily - + - + 0.1 -2010-09-02T00:00:00+02:00 +2015-12-09T15:21:48+01:00 daily - + - + 0.1 2010-09-02T00:00:00+02:00 daily - + - + 0.1 2010-09-02T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 2010-09-04T00:00:00+02:00 daily - + - + 0.1 -2010-09-08T00:00:00+02:00 +2015-12-10T09:28:33+01:00 daily - + - + 0.1 -2010-09-10T00:00:00+02:00 +2015-12-10T07:58:43+01:00 daily - + - + 0.1 2010-09-11T00:00:00+02:00 daily - + - + 0.1 2010-09-14T00:00:00+02:00 daily - + - + 0.1 2010-09-14T00:00:00+02:00 daily - + - + 0.1 -2010-09-17T00:00:00+02:00 +2015-12-09T10:19:09+01:00 daily - + - + 0.1 2010-09-17T00:00:00+02:00 daily - + - + 0.1 -2010-09-22T00:00:00+02:00 +2015-12-09T14:51:57+01:00 daily - + - + 0.1 2010-09-22T00:00:00+02:00 daily - + - + 0.1 2010-09-23T00:00:00+02:00 daily - + - + 0.1 2010-09-23T00:00:00+02:00 daily - + - + 0.1 2010-09-23T00:00:00+02:00 daily - + - + 0.1 2010-09-26T00:00:00+02:00 daily - + - + 0.1 -2010-09-27T00:00:00+02:00 +2015-11-26T13:00:33+01:00 daily - + - + 0.1 2010-09-28T00:00:00+02:00 daily - + - + 0.1 2010-09-28T00:00:00+02:00 daily - + - + 0.1 2010-09-28T00:00:00+02:00 daily - + - + 0.1 2010-10-01T00:00:00+02:00 daily - + - + 0.1 2010-10-03T00:00:00+02:00 daily - + - + 0.1 2010-10-03T00:00:00+02:00 daily - + - + 0.1 2010-10-03T00:00:00+02:00 daily - + - + 0.1 -2010-10-06T00:00:00+02:00 +2015-12-09T15:41:29+01:00 daily - + - + 0.1 2010-10-09T00:00:00+02:00 daily - + - + 0.1 2010-10-12T00:00:00+02:00 daily - + - + 0.1 -2010-10-20T00:00:00+02:00 +2015-12-09T22:30:59+01:00 daily - + - + 0.1 -2010-10-24T00:00:00+02:00 +2015-12-10T08:49:03+01:00 daily - + - + 0.1 2010-11-01T00:00:00+01:00 daily - + - + 0.1 2010-11-14T00:00:00+01:00 daily - + - + 0.1 2010-11-14T00:00:00+01:00 daily - + - + 0.1 2010-11-14T00:00:00+01:00 daily - + - + 0.1 2010-11-14T00:00:00+01:00 daily - + - + 0.1 -2010-12-11T00:00:00+01:00 +2015-12-10T09:48:44+01:00 daily - + - + 0.1 2010-12-11T00:00:00+01:00 daily - + - + 0.1 2010-12-11T00:00:00+01:00 daily - + - + 0.1 2010-12-14T00:00:00+01:00 daily - + - + 0.1 2010-12-15T00:00:00+01:00 daily - + - + 0.1 2010-12-16T00:00:00+01:00 daily - + - + 0.1 2010-12-16T00:00:00+01:00 daily - + - + 0.1 2010-12-16T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 -2010-12-25T00:00:00+01:00 +2015-12-10T10:03:29+01:00 daily - + - + 0.1 -2010-12-25T00:00:00+01:00 +2015-12-10T10:57:15+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 2010-12-25T00:00:00+01:00 daily - + - + 0.1 -2010-12-26T00:00:00+01:00 +2015-12-09T12:07:39+01:00 daily - + - + 0.1 -2010-12-26T00:00:00+01:00 +2015-12-08T16:20:58+01:00 daily - + - + - + 0.1 2010-12-26T00:00:00+01:00 daily - + - + 0.1 2010-12-26T00:00:00+01:00 daily - + - + 0.1 -2010-12-26T00:00:00+01:00 +2015-12-09T12:07:42+01:00 daily - + - + 0.1 -2010-12-27T00:00:00+01:00 +2015-12-09T13:38:58+01:00 daily - + - + 0.1 -2010-12-27T00:00:00+01:00 +2015-12-10T08:53:32+01:00 daily - + - + 0.1 2010-12-29T00:00:00+01:00 daily - + - + 0.1 2010-12-29T00:00:00+01:00 daily - + - + 0.1 2010-12-29T00:00:00+01:00 daily - + - + 0.1 -2010-12-29T00:00:00+01:00 +2015-12-09T15:51:35+01:00 daily - + - + 0.1 -2010-12-29T00:00:00+01:00 +2015-12-08T19:00:44+01:00 daily - + - + 0.1 2010-12-29T00:00:00+01:00 daily - + - + 0.1 -2011-01-05T00:00:00+01:00 +2015-12-10T07:17:27+01:00 daily - + - + 0.1 2011-01-07T00:00:00+01:00 daily - + - + 0.1 2011-01-13T00:00:00+01:00 daily - + - + 0.1 2011-01-14T00:00:00+01:00 daily - + - + 0.1 2011-01-15T00:00:00+01:00 daily - + - + 0.1 2011-01-15T00:00:00+01:00 daily - + - + 0.1 2011-01-16T00:00:00+01:00 daily - + - + 0.1 -2011-01-17T00:00:00+01:00 +2015-12-10T10:22:16+01:00 daily - + - + 0.1 2011-01-19T00:00:00+01:00 daily - + - + 0.1 2011-01-24T00:00:00+01:00 daily - + - + 0.1 2011-01-24T00:00:00+01:00 daily - + - + 0.1 -2011-01-24T00:00:00+01:00 +2015-11-18T17:35:35+01:00 daily - + - + 0.1 2011-01-25T00:00:00+01:00 daily - + - + 0.1 -2011-01-28T00:00:00+01:00 +2015-12-09T19:25:48+01:00 daily - + - + 0.1 -2011-02-19T00:00:00+01:00 +2015-12-09T23:43:49+01:00 daily - + - + 0.1 2011-02-23T00:00:00+01:00 daily - + - + 0.1 2011-02-27T00:00:00+01:00 daily - + - + 0.1 -2011-02-27T00:00:00+01:00 +2015-12-10T03:16:18+01:00 daily - + - + 0.1 -2011-03-12T00:00:00+01:00 +2015-12-09T15:43:09+01:00 daily - + - + 0.1 2011-03-14T00:00:00+01:00 daily - + - + 0.1 2011-03-16T00:00:00+01:00 daily - + - + 0.1 2011-03-16T00:00:00+01:00 daily - + - + 0.1 2011-03-24T00:00:00+01:00 daily - + - + 0.1 2011-03-24T00:00:00+01:00 daily - + - + 0.1 2011-04-10T00:00:00+02:00 daily - + - + 0.1 2011-04-25T00:00:00+02:00 daily - + - + 0.1 2011-04-25T00:00:00+02:00 daily - + - + 0.1 2011-04-27T00:00:00+02:00 daily - + - + 0.1 2011-05-02T00:00:00+02:00 daily - + - + 0.1 2011-05-03T00:00:00+02:00 daily - + - + 0.1 -2011-05-09T00:00:00+02:00 +2015-12-10T08:53:28+01:00 daily - + - + 0.1 2011-05-16T00:00:00+02:00 daily - + - + 0.1 2011-05-17T00:00:00+02:00 daily - + - + 0.1 -2011-05-24T00:00:00+02:00 +2015-12-10T10:40:02+01:00 daily - + - + 0.1 2011-06-05T00:00:00+02:00 daily - + - + 0.1 2011-06-23T00:00:00+02:00 daily - + - + 0.1 -2011-07-05T00:00:00+02:00 +2015-12-10T10:28:03+01:00 daily - + - + 0.1 2011-07-05T00:00:00+02:00 daily - + - + 0.1 2011-07-11T00:00:00+02:00 daily - + - + 0.1 -2011-07-17T00:00:00+02:00 +2015-12-08T14:25:56+01:00 daily - + - + 0.1 -2011-07-17T00:00:00+02:00 +2015-12-09T12:07:37+01:00 daily - + - + 0.1 2011-07-23T00:00:00+02:00 daily - + - + 0.1 2011-08-07T00:00:00+02:00 daily - + - + 0.1 2011-08-08T00:00:00+02:00 daily - + - + 0.1 2011-08-09T00:00:00+02:00 daily - + - + 0.1 2011-08-13T00:00:00+02:00 daily - + - + 0.1 -2011-08-14T00:00:00+02:00 +2015-12-09T14:29:28+01:00 daily - + - + 0.1 2011-08-14T00:00:00+02:00 daily - + - + 0.1 -2011-08-14T00:00:00+02:00 +2015-11-18T17:33:12+01:00 daily - + - + 0.1 2011-08-21T00:00:00+02:00 daily - + - + 0.1 2011-08-26T00:00:00+02:00 daily - + - + 0.1 2011-08-26T00:00:00+02:00 daily - + - + 0.1 -2011-08-28T00:00:00+02:00 +2015-12-09T21:47:18+01:00 daily - + - + 0.1 -2011-09-01T00:00:00+02:00 +2015-12-09T13:50:08+01:00 daily - + - + 0.1 2011-09-09T00:00:00+02:00 daily - + - + 0.1 2011-09-13T00:00:00+02:00 daily - + - + 0.1 2011-09-28T00:00:00+02:00 daily - + - + 0.1 2011-10-03T00:00:00+02:00 daily - + - + 0.1 2011-10-13T00:00:00+02:00 daily - + - + 0.1 -2011-10-16T00:00:00+02:00 +2015-12-09T13:44:00+01:00 daily - + - + 0.1 -2011-10-24T00:00:00+02:00 +2015-12-09T19:51:56+01:00 daily - + - + 0.1 2011-10-25T00:00:00+02:00 daily - + - + 0.1 2011-10-26T00:00:00+02:00 daily - + - + 0.1 2011-10-26T00:00:00+02:00 daily - + - + 0.1 2011-11-01T00:00:00+01:00 daily - + - + 0.1 2011-11-01T00:00:00+01:00 daily - + - + 0.1 2011-11-08T00:00:00+01:00 daily - + - + 0.1 -2011-11-11T00:00:00+01:00 +2015-12-09T19:07:35+01:00 daily - + - + 0.1 2011-11-16T00:00:00+01:00 daily - + - + 0.1 2011-11-30T00:00:00+01:00 daily - + - + 0.1 2011-12-01T00:00:00+01:00 daily - + - + 0.1 2011-12-11T00:00:00+01:00 daily - + - + 0.1 2011-12-13T00:00:00+01:00 daily - + - + 0.1 2012-01-19T00:00:00+01:00 daily - + - + 0.1 2012-01-24T00:00:00+01:00 daily - + - + 0.1 2012-01-29T00:00:00+01:00 daily - + - + 0.1 2012-01-30T00:00:00+01:00 daily - + - + 0.1 2012-01-30T00:00:00+01:00 daily - + - + 0.1 2012-02-10T00:00:00+01:00 daily - + - + 0.1 2012-02-10T00:00:00+01:00 daily - + - + 0.1 2012-02-10T00:00:00+01:00 daily - + - + 0.1 2012-02-10T00:00:00+01:00 daily - + - + 0.1 2012-02-12T00:00:00+01:00 daily - + - + 0.1 -2012-02-12T00:00:00+01:00 +2015-12-09T16:10:20+01:00 daily - + - + 0.1 2012-02-17T00:00:00+01:00 daily - + - + 0.1 2012-02-17T00:00:00+01:00 daily - + - + 0.1 2012-02-23T00:00:00+01:00 daily - + - + 0.1 2012-03-05T00:00:00+01:00 daily - + - + 0.1 2012-03-06T00:00:00+01:00 daily - + - + 0.1 2012-03-16T00:00:00+01:00 daily - + - + 0.1 2012-03-16T00:00:00+01:00 daily - + - + 0.1 2012-03-22T00:00:00+01:00 daily - + - + 0.1 2012-03-22T00:00:00+01:00 daily - + - + 0.1 2012-03-22T00:00:00+01:00 daily - + - + 0.1 2012-03-23T00:00:00+01:00 daily - + - + 0.1 2012-03-23T00:00:00+01:00 daily - + - + 0.1 2012-03-23T00:00:00+01:00 daily - + - + 0.1 2012-03-24T00:00:00+01:00 daily - + - + 0.1 2012-03-24T00:00:00+01:00 daily - + - + 0.1 2012-03-24T00:00:00+01:00 daily - + - + 0.1 2012-03-29T00:00:00+02:00 daily - + - + 0.1 2012-03-29T00:00:00+02:00 daily - + - + 0.1 2012-03-31T00:00:00+02:00 daily - + - + 0.1 -2012-03-31T00:00:00+02:00 +2015-12-10T07:17:33+01:00 daily - + - + 0.1 2012-04-05T00:00:00+02:00 daily - + - + 0.1 2012-04-06T00:00:00+02:00 daily - + - + 0.1 2012-04-09T00:00:00+02:00 daily - + - + 0.1 2012-04-16T00:00:00+02:00 daily - + - + 0.1 2012-04-20T00:00:00+02:00 daily - + - + 0.1 -2012-04-20T00:00:00+02:00 +2015-12-09T13:57:29+01:00 daily - + - + 0.1 2012-04-21T00:00:00+02:00 daily - + - + 0.1 2012-04-24T00:00:00+02:00 daily - + - + 0.1 2012-04-24T00:00:00+02:00 daily - + - + 0.1 2012-04-26T00:00:00+02:00 daily - + - + 0.1 2012-04-26T00:00:00+02:00 daily - + - + 0.1 2012-05-12T00:00:00+02:00 daily - + - + 0.1 2012-05-15T00:00:00+02:00 daily - + - + 0.1 2012-05-19T00:00:00+02:00 daily - + - + 0.1 2012-05-24T00:00:00+02:00 daily - + - + 0.1 -2015-10-20T09:37:55+02:00 +2012-05-26T00:00:00+02:00 daily - + - + 0.1 -2012-05-27T00:00:00+02:00 +2015-12-10T11:06:22+01:00 daily - + - + 0.1 -2012-05-31T00:00:00+02:00 +2015-12-09T19:36:29+01:00 daily - + - + 0.1 2012-06-08T00:00:00+02:00 daily - + - + 0.1 2012-06-09T00:00:00+02:00 daily - + - + 0.1 2012-06-10T00:00:00+02:00 daily - + - + 0.1 2012-06-12T00:00:00+02:00 daily - + - + 0.1 2012-06-15T00:00:00+02:00 daily - + - + 0.1 2012-06-27T00:00:00+02:00 daily - + - + 0.1 2012-06-27T00:00:00+02:00 daily - + - + 0.1 2012-06-28T00:00:00+02:00 daily - + - + 0.1 2012-06-28T00:00:00+02:00 daily - + - + 0.1 2012-07-03T00:00:00+02:00 daily - + - + 0.1 -2015-10-20T09:35:22+02:00 +2012-07-28T00:00:00+02:00 daily - + - + 0.1 2012-08-01T00:00:00+02:00 daily - + - + 0.1 2012-08-03T00:00:00+02:00 daily - + - + 0.1 2012-08-05T00:00:00+02:00 daily - + - + 0.1 2012-08-06T00:00:00+02:00 daily - + - + 0.1 2012-08-07T00:00:00+02:00 daily - + - + 0.1 2012-08-10T00:00:00+02:00 daily - + - + 0.1 -2012-08-12T00:00:00+02:00 +2015-12-01T16:48:46+01:00 daily - + - + 0.1 2012-08-13T00:00:00+02:00 daily - + - + 0.1 -2012-08-15T00:00:00+02:00 +2015-12-10T09:31:42+01:00 daily - + - + 0.1 2012-08-15T00:00:00+02:00 daily - + - + 0.1 2012-08-16T00:00:00+02:00 daily - + - + 0.1 2012-08-16T00:00:00+02:00 daily - + - + 0.1 2012-08-16T00:00:00+02:00 daily - + - + 0.1 2012-08-16T00:00:00+02:00 daily - + - + 0.1 2012-08-21T00:00:00+02:00 daily - + - + 0.1 2012-08-21T00:00:00+02:00 daily - + - + 0.1 2012-08-21T00:00:00+02:00 daily - + - + 0.1 2012-08-21T00:00:00+02:00 daily - + - + 0.1 2012-08-22T00:00:00+02:00 daily - + - + 0.1 -2012-08-22T00:00:00+02:00 +2015-12-08T19:04:13+01:00 daily - + - + 0.1 2012-08-23T00:00:00+02:00 daily - + - + 0.1 2012-08-23T00:00:00+02:00 daily - + - + 0.1 2012-08-24T00:00:00+02:00 daily - + - + 0.1 2012-08-26T00:00:00+02:00 daily - + - + 0.1 2012-08-27T00:00:00+02:00 daily - + - + 0.1 2012-08-28T00:00:00+02:00 daily - + - + 0.1 -2012-08-28T00:00:00+02:00 +2015-12-09T23:05:42+01:00 daily - + - + 0.1 2012-08-30T00:00:00+02:00 daily - + - + 0.1 2012-08-30T00:00:00+02:00 daily - + - + 0.1 -2012-08-31T00:00:00+02:00 +2015-12-09T14:51:16+01:00 daily - + - + 0.1 2012-09-01T00:00:00+02:00 daily - + - + 0.1 2012-09-01T00:00:00+02:00 daily - + - + 0.1 2012-09-02T00:00:00+02:00 daily - + - + 0.1 2012-09-02T00:00:00+02:00 daily - + - + 0.1 2012-09-02T00:00:00+02:00 daily - + - + 0.1 2012-09-05T00:00:00+02:00 daily - + - + 0.1 2012-09-05T00:00:00+02:00 daily - + - + 0.1 2012-09-05T00:00:00+02:00 daily - + - + 0.1 -2012-09-05T00:00:00+02:00 +2015-12-08T18:52:59+01:00 daily - + - + 0.1 2012-09-06T00:00:00+02:00 daily - + - + 0.1 2012-09-07T00:00:00+02:00 daily - + - + 0.1 2012-09-07T00:00:00+02:00 daily - + - + 0.1 2012-09-07T00:00:00+02:00 daily - + - + 0.1 2012-09-08T00:00:00+02:00 daily - + - + 0.1 2012-09-08T00:00:00+02:00 daily - + - + 0.1 2012-09-12T00:00:00+02:00 daily - + - + 0.1 2012-09-13T00:00:00+02:00 daily - + - + 0.1 2012-09-15T00:00:00+02:00 daily - + - + 0.1 2012-09-15T00:00:00+02:00 daily - + - + 0.1 2012-09-15T00:00:00+02:00 daily - + - + 0.1 -2012-09-16T00:00:00+02:00 +2015-12-02T17:50:59+01:00 daily - + - + 0.1 2012-09-18T00:00:00+02:00 daily - + - + 0.1 2012-09-20T00:00:00+02:00 daily - + - + 0.1 2012-09-20T00:00:00+02:00 daily - + - + 0.1 2012-09-20T00:00:00+02:00 daily - + - + 0.1 2012-09-21T00:00:00+02:00 daily - + - + 0.1 2012-09-22T00:00:00+02:00 daily - + - + 0.1 2012-09-22T00:00:00+02:00 daily - + - + 0.1 2012-09-23T00:00:00+02:00 daily - + - + 0.1 2012-09-24T00:00:00+02:00 daily - + - + 0.1 2012-09-25T00:00:00+02:00 daily - + - + 0.1 2012-09-26T00:00:00+02:00 daily - + - + 0.1 2012-09-26T00:00:00+02:00 daily - + - + 0.1 2012-09-27T00:00:00+02:00 daily - + - + 0.1 2012-09-28T00:00:00+02:00 daily - + - + 0.1 -2012-09-30T00:00:00+02:00 +2015-12-10T08:12:58+01:00 daily - + - + 0.1 2012-09-30T00:00:00+02:00 daily - + - + 0.1 2012-10-02T00:00:00+02:00 daily - + - + 0.1 2012-10-02T00:00:00+02:00 daily - + - + 0.1 2012-10-08T00:00:00+02:00 daily - + - + 0.1 2012-10-09T00:00:00+02:00 daily - + - + 0.1 2012-10-09T00:00:00+02:00 daily - + - + 0.1 2012-10-11T00:00:00+02:00 daily - + - + 0.1 2012-10-11T00:00:00+02:00 daily - + - + 0.1 2012-10-14T00:00:00+02:00 daily - + - + 0.1 2012-10-15T00:00:00+02:00 daily - + - + 0.1 2012-10-16T00:00:00+02:00 daily - + - + 0.1 2012-10-17T00:00:00+02:00 daily - + - + 0.1 -2012-10-19T00:00:00+02:00 +2015-12-09T15:14:38+01:00 daily - + - + 0.1 2012-10-21T00:00:00+02:00 daily - + - + 0.1 -2012-10-22T00:00:00+02:00 +2015-12-09T14:04:58+01:00 daily - + - + 0.1 2012-10-22T00:00:00+02:00 daily - + - + 0.1 2012-10-23T00:00:00+02:00 daily - + - + 0.1 2012-10-24T00:00:00+02:00 daily - + - + 0.1 2012-10-24T00:00:00+02:00 daily - + - + 0.1 2012-10-24T00:00:00+02:00 daily - + - + 0.1 -2012-10-25T00:00:00+02:00 +2015-12-08T17:13:54+01:00 daily - + - + 0.1 2012-10-26T00:00:00+02:00 daily - + - + 0.1 -2012-10-27T00:00:00+02:00 +2015-12-09T12:06:37+01:00 daily - + - + 0.1 2012-10-29T00:00:00+01:00 daily - + - + 0.1 -2012-10-30T00:00:00+01:00 +2015-12-10T07:17:30+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-03T00:00:00+01:00 daily - + - + 0.1 2012-11-06T00:00:00+01:00 daily - + - + 0.1 2012-11-07T00:00:00+01:00 daily - + - + 0.1 2012-11-07T00:00:00+01:00 daily - + - + 0.1 2012-11-07T00:00:00+01:00 daily - + - + 0.1 -2012-11-08T00:00:00+01:00 +2015-12-09T15:35:40+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-11T00:00:00+01:00 daily - + - + 0.1 2012-11-12T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-13T00:00:00+01:00 daily - + - + 0.1 2012-11-14T00:00:00+01:00 daily - + - + 0.1 2012-11-14T00:00:00+01:00 daily - + - + 0.1 2012-11-14T00:00:00+01:00 daily - + - + 0.1 2012-11-18T00:00:00+01:00 daily - + - + 0.1 2012-11-18T00:00:00+01:00 daily - + - + 0.1 2012-11-18T00:00:00+01:00 daily - + - + 0.1 2012-11-18T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 -2012-11-20T00:00:00+01:00 +2015-12-10T09:00:20+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 2012-11-20T00:00:00+01:00 daily - + - + 0.1 -2012-11-22T00:00:00+01:00 +2015-12-09T23:26:43+01:00 daily - + - + 0.1 2012-11-26T00:00:00+01:00 daily - + - + 0.1 2012-11-30T00:00:00+01:00 daily - + - + 0.1 2012-12-01T00:00:00+01:00 daily - + - + 0.1 2012-12-02T00:00:00+01:00 daily - + - + 0.1 2012-12-03T00:00:00+01:00 daily - + - + 0.1 2012-12-03T00:00:00+01:00 daily - + - + 0.1 2012-12-05T00:00:00+01:00 daily - + - + 0.1 -2012-12-05T00:00:00+01:00 +2015-12-09T12:06:13+01:00 daily - + - + 0.1 2012-12-06T00:00:00+01:00 daily - + - + 0.1 2012-12-08T00:00:00+01:00 daily - + - + 0.1 2012-12-09T00:00:00+01:00 daily - + - + 0.1 2012-12-10T00:00:00+01:00 daily - + - + 0.1 2012-12-11T00:00:00+01:00 daily - + - + 0.1 2012-12-12T00:00:00+01:00 daily - + - + 0.1 2012-12-13T00:00:00+01:00 daily - + - + 0.1 2012-12-16T17:20:00+01:00 daily - + - + 0.1 2012-12-17T11:10:59+01:00 daily - + - + 0.1 2012-12-21T18:04:11+01:00 daily - + - + 0.1 2012-12-22T12:04:29+01:00 daily - + - + 0.1 -2012-12-23T22:40:45+01:00 +2015-12-09T23:50:31+01:00 daily - + - + 0.1 -2012-12-25T15:40:38+01:00 +2015-12-10T06:59:46+01:00 daily - + - + 0.1 2012-12-26T18:10:37+01:00 daily - + - + 0.1 2013-01-06T11:41:18+01:00 daily - + - + 0.1 2013-01-08T18:16:15+01:00 daily - + - + 0.1 2013-01-09T14:35:55+01:00 daily - + - + 0.1 2013-01-11T17:32:05+01:00 daily - + - + 0.1 -2013-01-12T18:43:49+01:00 +2015-12-09T15:08:15+01:00 daily - + - + 0.1 2013-01-14T15:44:14+01:00 daily - + - + 0.1 -2013-01-16T20:15:33+01:00 +2015-12-03T12:17:55+01:00 daily - + - + 0.1 -2013-01-20T19:15:07+01:00 +2015-12-10T09:26:17+01:00 daily - + - + 0.1 2013-01-25T12:39:16+01:00 daily - + - + 0.1 2013-01-28T18:00:27+01:00 daily - + - + 0.1 2013-02-02T19:53:52+01:00 daily - + - + 0.1 2013-02-04T22:33:38+01:00 daily - + - + 0.1 2013-02-09T18:29:19+01:00 daily - + - + 0.1 2013-02-10T12:15:16+01:00 daily - + - + 0.1 2013-02-11T14:35:51+01:00 daily - + - + 0.1 2013-02-15T13:49:19+01:00 daily - + - + 0.1 -2013-02-16T15:30:30+01:00 +2015-12-09T22:47:07+01:00 daily - + - + 0.1 2013-02-19T11:34:32+01:00 daily - + - + 0.1 2013-02-26T10:00:18+01:00 daily - + - + 0.1 -2013-03-04T11:09:26+01:00 +2015-12-09T16:09:49+01:00 daily - + - + 0.1 2013-03-10T13:01:08+01:00 daily - + - + 0.1 -2013-03-15T11:06:29+01:00 +2015-12-10T07:12:00+01:00 daily - + - + 0.1 2013-03-17T15:13:45+01:00 daily - + - + 0.1 2013-03-21T09:22:05+01:00 daily - + - + 0.1 2013-03-26T10:03:59+01:00 daily - + - + 0.1 -2013-04-03T10:44:11+02:00 +2015-12-09T23:30:44+01:00 daily - + - + 0.1 -2015-10-21T11:13:22+02:00 +2013-04-06T13:29:49+02:00 daily - + - + 0.1 2013-04-10T09:51:03+02:00 daily - + - + 0.1 2013-04-15T09:42:41+02:00 daily - + - + 0.1 -2013-04-17T17:05:52+02:00 +2015-12-10T06:54:27+01:00 daily - + - + 0.1 2013-04-24T16:59:28+02:00 daily - + - + 0.1 2013-04-26T10:00:28+02:00 daily - + - + 0.1 2013-04-28T13:21:04+02:00 daily - + - + 0.1 2013-05-01T16:41:56+02:00 daily - + - + 0.1 2013-05-04T10:17:20+02:00 daily - + - + 0.1 2013-05-05T17:32:23+02:00 daily - + - + 0.1 2013-05-08T11:29:11+02:00 daily - + - + 0.1 2013-05-10T12:44:17+02:00 daily - + - + 0.1 2013-05-13T17:44:43+02:00 daily - + - + 0.1 2013-05-16T09:09:12+02:00 daily - + - + 0.1 2013-05-20T14:49:56+02:00 daily - + - + 0.1 2013-05-22T12:39:49+02:00 daily - + - + 0.1 -2013-05-24T17:30:45+02:00 +2015-12-09T16:14:38+01:00 daily - + - + 0.1 2013-05-26T09:58:51+02:00 daily - + - + 0.1 2013-05-28T09:05:03+02:00 daily - + - + 0.1 2013-05-29T17:49:38+02:00 daily - + - + 0.1 2013-06-05T11:50:22+02:00 daily - + - + 0.1 2013-06-05T13:49:20+02:00 daily - + - + 0.1 2013-06-11T12:28:47+02:00 daily - + - + 0.1 2013-06-14T18:06:50+02:00 daily - + - + 0.1 2013-06-15T16:47:21+02:00 daily - + - + 0.1 2013-06-18T17:09:10+02:00 daily - + - + 0.1 2013-06-20T10:13:47+02:00 daily - + - + 0.1 2013-06-23T12:19:03+02:00 daily - + - + 0.1 -2013-06-26T09:09:06+02:00 +2015-12-10T08:09:15+01:00 daily - + - + 0.1 -2013-06-29T16:38:54+02:00 +2015-12-09T14:46:20+01:00 daily - + - + 0.1 2013-07-06T09:17:14+02:00 daily - + - + 0.1 2013-07-10T12:34:50+02:00 daily - + - + 0.1 2013-07-17T15:32:27+02:00 daily - + - + 0.1 2013-07-19T17:53:44+02:00 daily - + - + 0.1 2013-07-24T12:34:22+02:00 daily - + - + 0.1 2013-07-27T18:12:45+02:00 daily - + - + 0.1 2013-08-02T16:40:18+02:00 daily - + - + 0.1 2013-08-07T10:50:15+02:00 daily - + - + 0.1 2013-08-15T11:46:51+02:00 daily - + - + 0.1 -2013-08-20T10:39:31+02:00 +2015-12-09T18:47:06+01:00 daily - + - + 0.1 2013-08-25T12:08:55+02:00 daily - + - + 0.1 2013-08-26T15:11:17+02:00 daily - + - + 0.1 2013-08-27T17:22:33+02:00 daily - + - + 0.1 -2013-08-28T16:02:45+02:00 +2015-12-09T12:00:24+01:00 daily - + - + 0.1 2013-09-01T17:23:30+02:00 daily - + - + 0.1 2013-09-02T17:27:00+02:00 daily - + - + 0.1 2013-09-03T12:18:44+02:00 daily - + - + 0.1 -2013-09-04T17:23:52+02:00 +2015-12-09T13:51:26+01:00 daily - + - + 0.1 2013-09-04T21:19:48+02:00 daily - + - + 0.1 -2013-09-05T13:18:19+02:00 +2015-12-09T19:22:19+01:00 daily - + - + 0.1 2013-09-06T09:18:59+02:00 daily - + - + 0.1 2013-09-06T09:20:24+02:00 daily - + - + 0.1 -2013-09-07T16:14:34+02:00 +2015-12-10T07:48:30+01:00 daily - + - + 0.1 2013-09-07T16:16:06+02:00 daily - + - + 0.1 2013-09-07T16:28:54+02:00 daily - + - + 0.1 2013-09-07T17:03:36+02:00 daily - + - + 0.1 2013-09-07T17:38:02+02:00 daily - + - + 0.1 2013-09-08T10:45:20+02:00 daily - + - + 0.1 -2013-09-09T17:37:51+02:00 +2015-11-26T12:59:33+01:00 daily - + - + 0.1 -2013-09-10T19:00:20+02:00 +2015-12-10T10:31:13+01:00 daily - + - + 0.1 -2015-10-20T10:01:46+02:00 +2015-12-09T19:39:42+01:00 daily - + - + 0.1 -2013-09-13T15:48:41+02:00 +2015-12-09T23:32:13+01:00 daily - + - + 0.1 2013-09-14T13:06:23+02:00 daily - + - + 0.1 2013-09-15T11:35:51+02:00 daily - + - + 0.1 2013-09-16T16:50:07+02:00 daily - + - + 0.1 2013-09-17T17:10:07+02:00 daily - + - + 0.1 -2013-09-18T12:10:23+02:00 +2015-12-10T07:43:12+01:00 daily - + - + 0.1 2013-09-20T16:36:34+02:00 daily - + - + 0.1 -2013-09-21T09:59:03+02:00 +2015-12-10T09:26:27+01:00 daily - + - + 0.1 2013-09-22T09:40:11+02:00 daily - + - + 0.1 2013-09-22T15:50:48+02:00 daily - + - + 0.1 2013-09-23T18:34:52+02:00 daily - + - + 0.1 2013-09-24T16:34:52+02:00 daily - + - + 0.1 -2013-09-25T16:30:41+02:00 +2015-12-09T16:16:40+01:00 daily - + - + 0.1 -2013-09-26T17:48:35+02:00 +2015-12-09T22:51:53+01:00 daily - + - + 0.1 2013-09-28T10:56:18+02:00 daily - + - + 0.1 2013-09-28T11:24:12+02:00 daily - + - + 0.1 2013-09-30T17:20:20+02:00 daily - + - + 0.1 2013-10-01T18:35:31+02:00 daily - + - + 0.1 2013-10-02T17:38:59+02:00 daily - + - + 0.1 2013-10-04T14:31:39+02:00 daily - + - + 0.1 2013-10-05T15:16:39+02:00 daily - + - + 0.1 2013-10-05T18:38:23+02:00 daily - + - + 0.1 2013-10-06T17:50:12+02:00 daily - + - + 0.1 -2013-10-08T09:40:25+02:00 +2015-12-10T00:05:04+01:00 daily - + - + 0.1 -2013-10-08T17:53:35+02:00 +2015-11-18T12:15:42+01:00 daily - + - + 0.1 2013-10-11T15:26:38+02:00 daily - + - + 0.1 2013-10-12T11:27:29+02:00 daily - + - + 0.1 2013-10-12T22:37:40+02:00 daily - + - + 0.1 2013-10-13T15:08:42+02:00 daily - + - + 0.1 2013-10-14T19:00:58+02:00 daily - + - + 0.1 2013-10-15T09:15:52+02:00 daily - + - + 0.1 2013-10-16T13:29:11+02:00 daily - + - + 0.1 2013-10-17T14:36:14+02:00 daily - + - + 0.1 2013-10-19T11:25:54+02:00 daily - + - + 0.1 2013-10-20T18:12:00+02:00 daily - + - + 0.1 2013-10-22T18:09:52+02:00 daily - + - + 0.1 2013-10-24T12:19:04+02:00 daily - + - + 0.1 2013-10-26T10:01:21+02:00 daily - + - + 0.1 2013-10-27T19:20:50+01:00 daily - + - + 0.1 -2013-10-31T14:42:16+01:00 +2015-12-10T09:26:17+01:00 daily - + - + 0.1 -2013-11-01T17:50:14+01:00 +2015-12-09T23:11:44+01:00 daily - + - + 0.1 2013-11-02T09:57:03+01:00 daily - + - + 0.1 2013-11-03T11:54:03+01:00 daily - + - + 0.1 2013-11-06T09:24:16+01:00 daily - + - + 0.1 -2015-10-22T15:23:34+02:00 +2013-11-07T16:56:59+01:00 daily - + - + 0.1 2013-11-10T13:13:49+01:00 daily - + - + 0.1 2013-11-11T13:25:52+01:00 daily - + - + 0.1 2013-11-13T18:07:56+01:00 daily - + - + 0.1 -2013-11-15T17:00:42+01:00 +2015-12-10T10:10:31+01:00 daily - + - + 0.1 2013-11-18T17:37:36+01:00 daily - + - + 0.1 -2013-11-19T10:38:04+01:00 +2015-12-09T21:37:48+01:00 daily - + - + 0.1 2013-11-20T17:20:45+01:00 daily - + - + 0.1 2013-11-21T18:06:23+01:00 daily - + - + 0.1 2013-11-24T12:13:33+01:00 daily - + - + 0.1 2013-11-26T11:48:35+01:00 daily - + - + 0.1 2013-11-28T11:01:08+01:00 daily - + - + 0.1 2013-11-29T15:33:34+01:00 daily - + - + 0.1 2013-11-30T10:46:42+01:00 daily - + - + 0.1 2013-12-01T10:11:32+01:00 daily - + - + 0.1 2013-12-03T12:26:44+01:00 daily - + - + 0.1 -2013-12-04T17:01:37+01:00 +2015-12-09T20:37:37+01:00 daily - + - + 0.1 2013-12-07T10:22:32+01:00 daily - + - + 0.1 2013-12-07T11:27:54+01:00 daily - + - + 0.1 2013-12-08T12:38:17+01:00 daily - + - + 0.1 2013-12-10T10:04:46+01:00 daily - + - + 0.1 2013-12-12T11:20:32+01:00 daily - + - + 0.1 2013-12-16T14:17:21+01:00 daily - + - + 0.1 -2013-12-17T12:47:41+01:00 +2015-12-10T08:41:46+01:00 daily - + - + 0.1 2013-12-17T12:50:08+01:00 daily - + - + 0.1 2013-12-18T12:39:08+01:00 daily - + - + 0.1 2013-12-19T15:41:47+01:00 daily - + - + 0.1 -2013-12-20T09:43:27+01:00 +2015-12-09T18:38:05+01:00 daily - + - + 0.1 2013-12-22T15:50:37+01:00 daily - + - + 0.1 -2013-12-22T15:57:41+01:00 +2015-12-09T14:46:09+01:00 daily - + - + 0.1 2013-12-27T10:49:22+01:00 daily - + - + 0.1 2013-12-28T20:24:14+01:00 daily - + - + 0.1 2013-12-29T20:12:33+01:00 daily - + - + 0.1 2014-01-01T18:11:16+01:00 daily - + - + 0.1 2014-01-05T14:48:57+01:00 daily - + - + 0.1 2014-01-08T10:39:43+01:00 daily - + - + 0.1 2014-01-11T10:36:13+01:00 daily - + - + 0.1 2014-01-11T10:52:10+01:00 daily - + - + 0.1 2014-01-12T21:00:31+01:00 daily - + - + 0.1 2014-01-13T10:35:11+01:00 daily - + - + 0.1 2014-01-16T18:26:12+01:00 daily - + - + 0.1 2014-01-18T12:07:58+01:00 daily - + - + 0.1 2014-01-21T13:04:59+01:00 daily - + - + 0.1 2014-01-25T10:30:39+01:00 daily - + - + 0.1 2014-01-26T11:11:08+01:00 daily - + - + 0.1 2014-01-29T15:04:51+01:00 daily - + - + 0.1 2014-01-30T17:03:26+01:00 daily - + - + 0.1 2014-02-01T12:37:49+01:00 daily - + - + 0.1 -2014-02-02T15:25:55+01:00 +2015-12-10T10:13:42+01:00 daily - + - + 0.1 2014-02-02T15:53:14+01:00 daily - + - + 0.1 2014-02-04T13:19:41+01:00 daily - + - + 0.1 2014-02-06T13:51:27+01:00 daily - + - + 0.1 2014-02-08T10:22:18+01:00 daily - + - + 0.1 2014-02-11T09:37:34+01:00 daily - + - + 0.1 2014-02-13T11:23:47+01:00 daily - + - + 0.1 -2014-02-15T10:23:06+01:00 +2015-12-09T20:35:12+01:00 daily - + - + 0.1 2014-02-17T11:13:04+01:00 daily - + - + 0.1 2014-02-21T09:32:31+01:00 daily - + - + 0.1 2014-02-22T10:20:47+01:00 daily - + - + 0.1 2014-02-23T17:14:38+01:00 daily - + - + 0.1 2014-02-25T11:12:41+01:00 daily - + - + 0.1 2014-02-27T18:24:14+01:00 daily - + - + 0.1 2014-02-28T10:28:41+01:00 daily - + - + 0.1 -2014-03-01T10:01:58+01:00 +2015-12-02T17:28:34+01:00 daily - + - + 0.1 2014-03-02T15:22:49+01:00 daily - + - + 0.1 2014-03-03T12:02:15+01:00 daily - + - + 0.1 -2014-03-04T10:20:24+01:00 +2015-12-09T21:32:06+01:00 daily - + - + 0.1 2014-03-07T23:57:53+01:00 daily - + - + 0.1 2014-03-08T13:54:39+01:00 daily - + - + 0.1 -2014-03-10T13:54:28+01:00 +2015-12-09T15:07:49+01:00 daily - + - + 0.1 2014-03-13T17:50:11+01:00 daily - + - + 0.1 2014-03-15T12:46:52+01:00 daily - + - + 0.1 2014-03-16T16:24:57+01:00 daily - + - + 0.1 -2014-03-18T10:51:03+01:00 +2015-12-09T22:45:44+01:00 daily - + - + 0.1 2014-03-21T13:05:10+01:00 daily - + - + 0.1 2014-03-21T17:09:01+01:00 daily - + - + 0.1 -2014-03-22T12:14:29+01:00 +2015-12-10T10:04:12+01:00 daily - + - + 0.1 -2014-03-25T09:47:55+01:00 +2015-12-08T19:42:18+01:00 daily - + - + 0.1 2014-03-26T11:33:39+01:00 daily - + - + 0.1 2014-03-29T10:12:15+01:00 daily - + - + 0.1 -2014-03-30T19:25:25+02:00 +2015-12-09T21:39:50+01:00 daily - + - + 0.1 -2014-04-01T13:11:45+02:00 +2015-12-10T03:56:33+01:00 daily - + - + 0.1 2014-04-02T15:56:23+02:00 daily - + - + 0.1 2014-04-05T07:32:47+02:00 daily - + - + 0.1 2014-04-07T17:44:01+02:00 daily - + - + 0.1 2014-04-10T10:22:50+02:00 daily - + - + 0.1 -2014-04-12T12:35:30+02:00 +2015-12-09T11:47:37+01:00 daily - + - + 0.1 2014-04-13T12:49:28+02:00 daily - + - + 0.1 2014-04-13T12:49:47+02:00 daily - + - + 0.1 2014-04-15T18:19:24+02:00 daily - + - + 0.1 2014-04-16T16:23:25+02:00 daily - + - + 0.1 2014-04-19T14:48:48+02:00 daily - + - + 0.1 2014-04-20T18:01:05+02:00 daily - + - + 0.1 2014-04-21T16:45:45+02:00 daily - + - + 0.1 -2014-04-23T15:54:53+02:00 +2015-12-09T22:30:45+01:00 daily - + - + 0.1 2014-04-26T10:54:43+02:00 daily - + - + 0.1 2014-05-04T12:43:57+02:00 daily - + - + 0.1 2014-05-07T18:31:44+02:00 daily - + - + 0.1 2014-05-10T09:17:37+02:00 daily - + - + 0.1 -2014-05-10T09:20:04+02:00 +2015-12-08T19:39:15+01:00 daily - + - + 0.1 -2014-05-11T11:57:40+02:00 +2015-12-08T19:52:48+01:00 daily - + - + 0.1 2014-05-12T14:35:40+02:00 daily - + - + 0.1 2014-05-17T14:28:45+02:00 daily - + - + 0.1 -2014-05-18T10:22:44+02:00 +2015-12-09T12:01:00+01:00 daily - + - + 0.1 2014-05-19T09:13:28+02:00 daily - + - + 0.1 2014-05-22T18:34:06+02:00 daily - + - + 0.1 2014-05-24T10:59:48+02:00 daily - + - + 0.1 2014-05-25T13:52:51+02:00 daily - + - + 0.1 2014-05-31T09:39:14+02:00 daily - + - + 0.1 -2014-06-01T08:54:25+02:00 +2015-12-09T14:52:36+01:00 daily - + - + 0.1 2014-06-07T17:15:35+02:00 daily - + - + 0.1 2014-06-07T18:17:50+02:00 daily - + - + 0.1 2014-06-08T11:53:10+02:00 daily - + - + 0.1 2014-06-09T13:03:40+02:00 daily - + - + 0.1 2014-06-14T18:00:44+02:00 daily - + - + 0.1 -2014-06-15T16:13:22+02:00 +2015-12-10T11:00:01+01:00 daily - + - + 0.1 2014-06-16T18:10:26+02:00 daily - + - + 0.1 -2014-06-20T18:27:36+02:00 +2015-12-09T18:45:31+01:00 daily - + - + 0.1 2014-06-21T12:31:37+02:00 daily - + - + 0.1 2014-06-22T16:59:48+02:00 daily - + - + 0.1 2014-06-26T21:04:19+02:00 daily - + - + 0.1 2014-06-27T19:00:06+02:00 daily - + - + 0.1 -2014-06-28T12:40:06+02:00 +2015-12-09T18:43:17+01:00 daily - + - + 0.1 2014-07-04T19:14:30+02:00 daily - + - + 0.1 2014-07-05T10:52:11+02:00 daily - + - + 0.1 2014-07-10T17:57:40+02:00 daily - + - + 0.1 -2015-10-20T09:25:28+02:00 +2014-07-12T07:17:30+02:00 daily - + - + 0.1 -2014-07-13T14:15:41+02:00 +2015-12-08T19:54:37+01:00 daily - + - + 0.1 -2014-07-18T18:42:10+02:00 +2015-12-10T06:40:34+01:00 daily - + - + 0.1 -2014-07-19T09:42:02+02:00 +2015-12-10T08:14:37+01:00 daily - + - + 0.1 2014-07-20T10:40:42+02:00 daily - + - + 0.1 2014-07-26T12:05:28+02:00 daily - + - + 0.1 -2014-07-27T09:53:17+02:00 +2015-12-10T01:24:42+01:00 daily - + - + 0.1 -2014-08-02T10:16:56+02:00 +2015-12-09T19:48:33+01:00 daily - + - + 0.1 -2014-08-03T13:08:25+02:00 +2015-12-10T10:50:01+01:00 daily - + - + 0.1 2014-08-09T11:43:18+02:00 daily - + - + 0.1 2014-08-10T10:57:31+02:00 daily - + - + 0.1 2014-08-16T11:18:23+02:00 daily - + - + 0.1 -2014-08-17T16:42:33+02:00 +2015-12-09T12:07:33+01:00 daily - + - + 0.1 -2014-08-20T18:43:46+02:00 +2015-12-09T10:18:06+01:00 daily - + - + 0.1 -2014-08-23T09:01:32+02:00 +2015-12-09T12:07:35+01:00 daily - + - + 0.1 2014-08-24T11:11:31+02:00 daily - + - + 0.1 2014-08-28T20:37:34+02:00 daily - + - + 0.1 2014-08-30T07:55:08+02:00 daily - + - + 0.1 -2014-09-01T12:44:19+02:00 +2015-12-10T08:08:59+01:00 daily - + - + 0.1 2014-09-05T11:54:27+02:00 daily - + - + 0.1 2014-09-06T15:49:39+02:00 daily - + - + 0.1 2014-09-10T21:18:45+02:00 daily - + - + 0.1 -2014-09-13T11:38:08+02:00 +2015-12-10T01:21:01+01:00 daily - + - + 0.1 2014-09-14T12:06:56+02:00 daily - + - + 0.1 -2014-09-14T19:20:02+02:00 +2015-12-09T22:10:23+01:00 daily - + - + 0.1 2014-09-16T18:16:40+02:00 daily - + - + 0.1 -2014-09-17T17:42:27+02:00 +2015-12-04T17:23:22+01:00 daily - + - + 0.1 2014-09-20T08:25:42+02:00 daily - + - + 0.1 2014-09-20T17:20:43+02:00 daily - + - + 0.1 -2014-09-22T12:14:25+02:00 +2015-12-10T00:07:35+01:00 daily - + - + 0.1 2014-09-26T11:40:52+02:00 daily - + - + 0.1 2014-09-27T09:44:21+02:00 daily - + - + 0.1 2014-09-28T13:37:15+02:00 daily - + - + 0.1 2014-09-28T14:06:32+02:00 daily - + - + 0.1 -2014-09-28T17:52:07+02:00 +2015-12-09T20:03:16+01:00 daily - + - + 0.1 2014-09-29T10:59:43+02:00 daily - + - + 0.1 2014-09-30T18:12:27+02:00 daily - + - + 0.1 -2015-09-29T16:30:28+02:00 +2015-12-09T21:25:09+01:00 daily - + - + 0.1 2014-10-04T11:04:13+02:00 daily - + - + 0.1 2014-10-05T22:47:59+02:00 daily - + - + 0.1 2014-10-06T12:05:31+02:00 daily - + - + 0.1 2014-10-06T17:57:17+02:00 daily - + - + 0.1 2014-10-07T12:47:48+02:00 daily - + - + 0.1 2014-10-09T11:28:59+02:00 daily - + - + 0.1 -2014-10-11T10:30:54+02:00 +2015-12-09T19:49:31+01:00 daily - + - + 0.1 2014-10-12T16:13:27+02:00 daily - + - + 0.1 2014-10-14T09:03:05+02:00 daily - + - + 0.1 2014-10-15T12:38:19+02:00 daily - + - + 0.1 -2014-10-17T17:16:41+02:00 +2015-12-09T19:19:22+01:00 daily - + - + 0.1 2014-10-18T10:57:33+02:00 daily - + - + 0.1 -2014-10-21T18:09:19+02:00 +2015-12-10T09:50:12+01:00 daily - + - + 0.1 2014-10-24T13:10:00+02:00 daily - + - + 0.1 -2014-10-25T10:04:40+02:00 +2015-12-09T23:42:24+01:00 daily - + - + 0.1 2014-10-26T19:56:00+01:00 daily - + - + 0.1 -2014-10-27T18:40:08+01:00 +2015-12-09T14:05:27+01:00 daily - + - + 0.1 2014-10-31T15:21:40+01:00 daily - + - + 0.1 2014-11-01T10:50:04+01:00 daily - + - + 0.1 2014-11-02T12:11:54+01:00 daily - + - + 0.1 2014-11-03T18:42:32+01:00 daily - + - + 0.1 2014-11-05T18:26:24+01:00 daily - + - + 0.1 2014-11-08T09:45:00+01:00 daily - + - + 0.1 2014-11-10T11:59:53+01:00 daily - + - + 0.1 -2014-11-12T10:02:59+01:00 +2015-12-09T18:30:01+01:00 daily - + - + 0.1 2014-11-14T10:49:05+01:00 daily - + - + 0.1 -2014-11-15T10:00:27+01:00 +2015-12-09T22:46:32+01:00 daily - + - + 0.1 2014-11-16T18:21:22+01:00 daily - + - + 0.1 2014-11-17T12:48:00+01:00 daily - + - + 0.1 2014-11-19T09:20:07+01:00 daily - + - + 0.1 2014-11-22T10:31:41+01:00 daily - + - + 0.1 -2014-11-23T11:21:07+01:00 +2015-12-09T20:22:45+01:00 daily - + - + 0.1 2014-11-24T10:11:56+01:00 daily - + - + 0.1 2014-11-26T10:44:42+01:00 daily - + - + 0.1 2014-11-29T09:00:27+01:00 daily - + - + 0.1 2014-11-30T10:54:22+01:00 daily - + - + 0.1 2014-12-02T10:15:38+01:00 daily - + - + 0.1 -2014-12-05T18:37:56+01:00 +2015-12-08T15:48:39+01:00 daily - + - + 0.1 2014-12-06T09:03:49+01:00 daily - + - + 0.1 2014-12-07T18:47:59+01:00 daily - + - + 0.1 -2014-12-09T10:56:28+01:00 +2015-12-09T15:41:27+01:00 daily - + - + 0.1 -2014-12-13T09:44:04+01:00 +2015-12-09T18:38:00+01:00 daily - + - + 0.1 2014-12-19T17:49:48+01:00 daily - + - + 0.1 -2014-12-20T09:25:45+01:00 +2015-12-08T16:19:48+01:00 daily - + - + 0.1 2014-12-27T10:25:41+01:00 daily - + - + 0.1 2014-12-27T10:50:45+01:00 daily - + - + 0.1 2015-01-01T20:33:10+01:00 daily - + - + 0.1 -2015-10-14T12:50:35+02:00 +2015-01-03T12:35:26+01:00 daily - + - + 0.1 2015-01-05T18:23:57+01:00 daily - + - + 0.1 2015-01-10T10:01:05+01:00 daily - + - + 0.1 2015-01-13T15:16:30+01:00 daily - + - + 0.1 2015-01-17T11:06:36+01:00 daily - + - + 0.1 -2015-01-18T14:01:34+01:00 +2015-12-10T00:41:51+01:00 daily - + - + 0.1 2015-01-20T16:09:31+01:00 daily - + - + 0.1 -2015-01-22T16:21:43+01:00 +2015-12-09T14:40:30+01:00 daily - + - + 0.1 -2015-01-24T10:29:42+01:00 +2015-11-27T16:27:47+01:00 daily - + - + 0.1 -2015-01-27T15:27:56+01:00 +2015-11-23T18:05:38+01:00 daily - + - + 0.1 -2015-01-29T14:19:12+01:00 +2015-12-03T11:48:02+01:00 daily - + - + 0.1 2015-01-31T11:33:41+01:00 daily - + - + 0.1 2015-02-02T17:09:09+01:00 daily - + - + 0.1 2015-02-05T09:03:07+01:00 daily - + - + 0.1 2015-02-07T08:58:30+01:00 daily - + - + 0.1 -2015-02-10T15:42:08+01:00 +2015-12-10T11:06:49+01:00 daily - + - + 0.1 2015-02-14T10:12:31+01:00 daily - + - + 0.1 -2015-02-16T17:37:07+01:00 +2015-11-19T17:33:21+01:00 daily - + - + 0.1 -2015-02-21T09:54:09+01:00 +2015-12-08T15:14:38+01:00 daily - + - + 0.1 -2015-02-22T15:44:15+01:00 +2015-11-19T17:31:16+01:00 daily - + - + 0.1 -2015-02-28T10:37:18+01:00 +2015-12-10T01:26:59+01:00 daily - + - + 0.1 2015-03-04T16:11:15+01:00 daily - + - + 0.1 -2015-03-07T11:15:49+01:00 +2015-11-19T17:12:44+01:00 daily - + - + 0.1 2015-03-09T15:37:30+01:00 daily - + - + 0.1 -2015-03-14T23:26:57+01:00 +2015-12-09T15:27:35+01:00 daily - + - + 0.1 2015-03-15T11:42:44+01:00 daily - + - + 0.1 2015-03-20T09:15:04+01:00 daily - + - + 0.1 2015-03-21T09:18:01+01:00 daily - + - + 0.1 2015-03-24T15:34:05+01:00 daily - + - + 0.1 2015-03-25T10:08:14+01:00 daily - + - + 0.1 2015-03-28T10:10:56+01:00 daily - + - + 0.1 -2015-03-28T20:23:54+01:00 +2015-12-08T17:26:42+01:00 daily - + - + 0.1 -2015-03-31T16:07:08+02:00 +2015-12-03T18:01:03+01:00 daily - + - + 0.1 -2015-04-04T09:23:49+02:00 +2015-12-09T21:24:45+01:00 daily - + - + 0.1 2015-04-05T11:42:08+02:00 daily - + - + 0.1 2015-04-10T17:30:28+02:00 daily - + - + 0.1 2015-04-11T12:27:51+02:00 daily - + - + 0.1 2015-04-12T12:12:44+02:00 daily - + - + 0.1 -2015-04-18T09:45:22+02:00 +2015-12-10T10:28:31+01:00 daily - + - + 0.1 2015-04-18T13:30:04+02:00 daily - + - + 0.1 2015-04-18T16:56:25+02:00 daily - + - + 0.1 2015-04-18T17:14:11+02:00 daily - + - + 0.1 2015-04-18T17:25:05+02:00 daily - + - + 0.1 2015-04-18T17:37:34+02:00 daily - + - + 0.1 2015-04-18T17:50:24+02:00 daily - + - + 0.1 2015-04-18T18:01:23+02:00 daily - + - + 0.1 2015-04-18T18:15:58+02:00 daily - + - + 0.1 2015-04-25T10:49:51+02:00 daily - + - + 0.1 2015-04-26T15:12:54+02:00 daily - + - + 0.1 2015-05-02T09:04:55+02:00 daily - + - + 0.1 2015-05-03T16:54:30+02:00 daily - + - + 0.1 2015-05-05T11:00:21+02:00 daily - + - + 0.1 2015-05-05T11:15:06+02:00 daily - + - + 0.1 2015-05-09T08:45:17+02:00 daily - + - + 0.1 2015-05-09T17:01:46+02:00 daily - + - + 0.1 2015-05-09T17:18:28+02:00 daily - + - + 0.1 2015-05-09T17:35:26+02:00 daily - + - + 0.1 2015-05-12T09:14:42+02:00 daily - + - + 0.1 2015-05-14T17:44:09+02:00 daily - + - + 0.1 2015-05-16T10:23:16+02:00 daily - + - + 0.1 2015-05-17T13:41:20+02:00 daily - + - + 0.1 2015-05-17T13:52:25+02:00 daily - + - + 0.1 2015-05-20T12:57:17+02:00 daily - + - + 0.1 -2015-05-23T09:05:52+02:00 +2015-12-08T19:45:20+01:00 daily - + - + 0.1 2015-05-23T16:51:19+02:00 daily - + - + 0.1 -2015-05-23T17:07:57+02:00 +2015-11-25T13:38:01+01:00 daily - + - + 0.1 2015-05-23T17:33:01+02:00 daily - + - + 0.1 2015-05-23T18:04:48+02:00 daily - + - + 0.1 2015-05-24T12:20:34+02:00 daily - + - + 0.1 -2015-05-24T14:40:32+02:00 +2015-11-25T13:37:22+01:00 daily - + - + 0.1 2015-05-29T17:50:01+02:00 daily - + - + 0.1 -2015-05-30T08:07:54+02:00 +2015-11-19T17:11:26+01:00 daily - + - + 0.1 2015-05-31T15:40:36+02:00 daily - + - + 0.1 2015-06-01T12:43:38+02:00 daily - + - + 0.1 -2015-06-02T19:02:18+02:00 +2015-11-19T17:27:38+01:00 daily - + - + 0.1 2015-06-06T08:16:35+02:00 daily - + - + 0.1 2015-06-06T18:13:29+02:00 daily - + - + 0.1 -2015-06-11T18:13:10+02:00 +2015-12-08T15:15:45+01:00 daily - + - + 0.1 2015-06-13T19:08:49+02:00 daily - + - + 0.1 2015-06-13T19:35:25+02:00 daily - + - + 0.1 2015-06-19T13:42:45+02:00 daily - + - + 0.1 2015-06-20T08:32:13+02:00 daily - + - + 0.1 -2015-06-21T11:20:07+02:00 +2015-12-03T12:39:14+01:00 daily - + - + 0.1 2015-06-21T18:39:44+02:00 daily - + - + 0.1 2015-06-23T19:33:46+02:00 daily - + - + 0.1 2015-06-24T16:18:20+02:00 daily - + - + 0.1 2015-06-27T08:08:13+02:00 daily - + - + - + 0.1 2015-06-28T12:34:32+02:00 daily - + - + 0.1 2015-07-01T12:00:46+02:00 daily - + - + 0.1 -2015-07-01T12:13:57+02:00 +2015-11-18T17:27:48+01:00 daily - + - + 0.1 2015-07-06T08:58:19+02:00 daily - + - + 0.1 -2015-07-08T17:21:20+02:00 +2015-11-18T17:50:03+01:00 daily - + - + 0.1 -2015-07-08T17:36:47+02:00 +2015-11-18T17:22:12+01:00 daily - + - + 0.1 2015-07-08T17:49:01+02:00 daily - + - + 0.1 2015-07-13T11:06:22+02:00 daily - + - + 0.1 2015-07-14T12:15:00+02:00 daily - + - + 0.1 2015-07-14T13:22:08+02:00 daily - + - + 0.1 -2015-07-20T09:37:40+02:00 +2015-11-18T17:17:14+01:00 daily - + - + 0.1 -2015-07-25T16:28:58+02:00 +2015-11-27T15:44:07+01:00 daily - + - + 0.1 -2015-07-27T09:48:10+02:00 +2015-11-24T12:48:11+01:00 daily - + - + 0.1 -2015-07-27T18:06:39+02:00 +2015-11-30T15:17:37+01:00 daily - + - + 0.1 2015-08-01T13:22:04+02:00 daily - + - + 0.1 -2015-08-03T08:46:43+02:00 +2015-11-27T11:36:48+01:00 daily - + - + 0.1 -2015-08-05T08:48:57+02:00 +2015-11-19T17:40:46+01:00 daily - + - + 0.1 -2015-10-19T15:27:59+02:00 +2015-08-10T10:15:07+02:00 daily - + - + 0.1 2015-08-11T12:45:29+02:00 daily - + - + 0.1 -2015-08-14T19:20:25+02:00 +2015-11-24T17:34:21+01:00 daily - + - + 0.1 2015-08-16T18:43:23+02:00 daily - + - + 0.1 -2015-08-17T17:23:40+02:00 +2015-11-19T17:07:03+01:00 daily - + - + 0.1 -2015-08-18T17:44:28+02:00 +2015-12-01T17:30:50+01:00 daily - + - + 0.1 -2015-08-18T18:27:51+02:00 +2015-12-10T04:21:04+01:00 daily - + - + 0.1 -2015-08-23T11:46:46+02:00 +2015-11-19T17:24:02+01:00 daily - + - + 0.1 -2015-08-23T19:14:48+02:00 +2015-12-08T18:53:13+01:00 daily - + - + 0.1 -2015-08-24T17:33:13+02:00 +2015-11-18T17:16:41+01:00 daily - + - + 0.1 -2015-08-28T10:59:50+02:00 +2015-12-08T15:46:27+01:00 daily - + - + 0.1 2015-08-29T17:28:17+02:00 daily - + - + 0.1 -2015-08-30T08:19:47+02:00 +2015-11-24T17:11:19+01:00 daily - + - + 0.1 2015-08-31T11:33:09+02:00 daily - + - + 0.1 2015-08-31T21:27:13+02:00 daily - + - + 0.1 -2015-09-06T12:22:35+02:00 +2015-11-24T17:33:57+01:00 daily - + - + 0.1 -2015-09-11T17:19:42+02:00 +2015-11-19T17:29:01+01:00 daily - + - + 0.1 2015-09-12T17:36:13+02:00 daily - + - + 0.1 2015-09-12T17:59:26+02:00 daily - + - + 0.1 2015-09-13T08:49:48+02:00 daily - + - + 0.1 -2015-09-14T09:29:38+02:00 +2015-12-10T10:30:53+01:00 daily - + - + 0.1 2015-09-18T18:57:06+02:00 daily - + - + 0.1 -2015-09-19T17:55:47+02:00 +2015-11-19T17:19:52+01:00 daily - + - + 0.1 -2015-10-07T10:15:18+02:00 +2015-11-18T17:48:38+01:00 daily - + - + 0.1 -2015-10-19T15:28:24+02:00 +2015-12-08T18:01:45+01:00 daily - + - + - + 0.1 -2015-10-11T12:45:42+02:00 +2015-11-24T12:57:12+01:00 daily - + - + - + 0.1 -2015-10-14T19:52:44+02:00 +2015-12-08T15:21:58+01:00 daily - + + + + + + + +0.1 +2015-12-08T15:20:37+01:00 +daily + + + + + + + + +0.1 +2015-12-08T15:19:04+01:00 +daily + + + + + + + + +0.1 +2015-12-09T18:25:28+01:00 +daily + + + + + + + + +0.1 +2015-12-03T17:00:04+01:00 +daily + + + + + + + + +0.1 +2015-12-06T19:16:11+01:00 +daily + + + + + + + + +0.1 +2015-12-03T17:00:01+01:00 +daily + + + + + + + + +0.1 +2015-12-08T17:34:05+01:00 +daily + + + + + + + + +0.1 +2015-11-19T17:42:55+01:00 +daily + + + + + + + + +0.1 +2015-11-30T17:52:49+01:00 +daily + + + + + + + + +0.1 +2015-11-24T17:51:45+01:00 +daily + + + + + + + + +0.1 +2015-12-09T16:13:15+01:00 +daily + + + + +0.1 +2015-12-10T09:06:34+01:00 +daily + + + + + + + + +0.1 +2015-12-10T09:29:44+01:00 +daily + + + + + + + + +0.1 +2015-12-02T15:31:38+01:00 +daily + + + + + + + + +0.1 +2015-12-08T17:39:35+01:00 +daily + + + + + + + + +0.1 +2015-12-10T09:17:16+01:00 +daily + + + + + + + + +0.1 +2015-12-10T09:18:13+01:00 +daily + + + + + + + + +0.1 +2015-12-08T15:20:08+01:00 +daily + + + + + + + + +0.1 +2015-12-07T16:38:52+01:00 +daily + + + + + + + + +0.1 +2015-12-07T16:38:46+01:00 +daily + + + + + + + + +0.1 +2015-12-07T17:16:16+01:00 +daily + + + + + + + + +0.1 +2015-12-08T15:27:44+01:00 +daily + + + + + + + + +0.1 +2015-12-10T11:05:24+01:00 +daily + + + + + + + + +0.1 +2015-12-09T10:37:07+01:00 +daily + + + + + + + + +0.1 +2015-12-08T15:21:22+01:00 +daily + + + + + + + + +0.1 +2015-12-09T10:37:12+01:00 +daily + + + + + + + + +0.1 +2015-12-08T18:37:21+01:00 +daily + + + + + + diff --git a/classes/CMSCategory.php b/classes/CMSCategory.php index 19a91bc7..5dc58bbf 100644 --- a/classes/CMSCategory.php +++ b/classes/CMSCategory.php @@ -360,6 +360,18 @@ class CMSCategoryCore extends ObjectModel ORDER BY cl.`name`'); } + public static function getNameStatic($id_category) + { + $id_lang = $context = Context::getContext()->language->id; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' + SELECT cl.`title` + FROM `'._DB_PREFIX_.'cmsps_categories` c + LEFT JOIN `'._DB_PREFIX_.'cmsps_categories_lang` cl ON (c.`id_category` = cl.`id_category`) + WHERE cl.`id_lang` = '.(int)$id_lang.' + AND c.id_category = '. $id_category); + } + /** * Return current CMSCategory childs * diff --git a/config.user.php b/config.user.php deleted file mode 100644 index 55e10665..00000000 --- a/config.user.php +++ /dev/null @@ -1,168 +0,0 @@ - - -{ - "globals": { - "_remove_me_to_set_AUTH_LOG_FILE_COUNT" : 100, - "_remove_me_to_set_AUTO_UPGRADE" : false, - "_remove_me_to_set_CHECK_UPGRADE" : true, - "_remove_me_to_set_EXPORT" : true, - "_remove_me_to_set_FILE_SELECTOR" : "bs", - "_remove_me_to_set_FOOTER" : "© Potsky<\/a> 2007-' . YEAR . ' - Pimp my Log<\/a>", - "_remove_me_to_set_FORGOTTEN_YOUR_PASSWORD_URL" : "http:\/\/support.pimpmylog.com\/kb\/misc\/forgotten-your-password", - "_remove_me_to_set_GEOIP_URL" : "http:\/\/www.geoiptool.com\/en\/?IP=%p", - "_remove_me_to_set_GOOGLE_ANALYTICS" : "UA-XXXXX-X", - "_remove_me_to_set_HELP_URL" : "http:\/\/pimpmylog.com", - "_remove_me_to_set_LOCALE" : "gb_GB", - "_remove_me_to_set_LOGS_MAX" : 50, - "_remove_me_to_set_LOGS_REFRESH" : 0, - "_remove_me_to_set_MAX_SEARCH_LOG_TIME" : 5, - "_remove_me_to_set_NAV_TITLE" : "", - "_remove_me_to_set_NOTIFICATION" : true, - "_remove_me_to_set_NOTIFICATION_TITLE" : "New logs [%f]", - "_remove_me_to_set_PIMPMYLOG_ISSUE_LINK" : "https:\/\/github.com\/potsky\/PimpMyLog\/issues\/", - "_remove_me_to_set_PIMPMYLOG_VERSION_URL" : "http:\/\/demo.pimpmylog.com\/version.js", - "_remove_me_to_set_PULL_TO_REFRESH" : true, - "_remove_me_to_set_SORT_LOG_FILES" : "default", - "_remove_me_to_set_TAG_DISPLAY_LOG_FILES_COUNT" : true, - "_remove_me_to_set_TAG_NOT_TAGGED_FILES_ON_TOP" : true, - "_remove_me_to_set_TAG_SORT_TAG" : "default | display-asc | display-insensitive | display-desc | display-insensitive-desc", - "_remove_me_to_set_TITLE" : "Pimp my Log", - "_remove_me_to_set_TITLE_FILE" : "Pimp my Log [%f]", - "_remove_me_to_set_UPGRADE_MANUALLY_URL" : "http:\/\/pimpmylog.com\/getting-started\/#update", - "_remove_me_to_set_USER_CONFIGURATION_DIR" : "config.user.d", - "_remove_me_to_set_USER_TIME_ZONE" : "Europe\/Paris" - }, - - "badges": { - "severity": { - "debug" : "success", - "info" : "success", - "notice" : "default", - "Notice" : "info", - "warn" : "warning", - "error" : "danger", - "crit" : "danger", - "alert" : "danger", - "emerg" : "danger", - "Notice" : "info", - "fatal error" : "danger", - "parse error" : "danger", - "Warning" : "warning" - }, - "http": { - "1" : "info", - "2" : "success", - "3" : "default", - "4" : "warning", - "5" : "danger" - } - }, - - "files": { - "apache1": { - "display" : "Apache Error #1", - "path" : "C:\/wamp\/logs\/apache_error.log", - "refresh" : 5, - "max" : 10, - "notify" : true, - "format" : { - "type" : "HTTPD 2.2", - "regex" : "|^\\[(.*)\\] \\[(.*)\\] (\\[client (.*)\\] )*((?!\\[client ).*)(, referer: (.*))*$|U", - "export_title" : "Log", - "match" : { - "Date" : 1, - "IP" : 4, - "Log" : 5, - "Severity" : 2, - "Referer" : 7 - }, - "types": { - "Date" : "date:H:i:s", - "IP" : "ip:http", - "Log" : "preformatted", - "Severity" : "badge:severity", - "Referer" : "link" - }, - "exclude": { - "Log": ["\/PHP Stack trace:\/", "\/PHP *[0-9]*\\. \/"] - } - } - }, - "apache2": { - "display" : "Apache Access #2", - "path" : "C:\/wamp\/logs\/access.log", - "refresh" : 0, - "max" : 10, - "notify" : false, - "format" : { - "type" : "NCSA", - "regex" : "|^((\\S*) )*(\\S*) (\\S*) (\\S*) \\[(.*)\\] \"(\\S*) (.*) (\\S*)\" ([0-9]*) (.*)( \"(.*)\" \"(.*)\"( [0-9]*/([0-9]*))*)*$|U", - "export_title" : "URL", - "match" : { - "Date" : 6, - "IP" : 3, - "CMD" : 7, - "URL" : 8, - "Code" : 10, - "Size" : 11, - "Referer" : 13, - "UA" : 14, - "User" : 5, - "\u03bcs" : 16 - }, - "types": { - "Date" : "date:H:i:s", - "IP" : "ip:geo", - "URL" : "txt", - "Code" : "badge:http", - "Size" : "numeral:0b", - "Referer" : "link", - "UA" : "ua:{os.name} {os.version} | {browser.name} {browser.version}\/100", - "\u03bcs" : "numeral:0,0" - }, - "exclude": { - "URL": ["\/favicon.ico\/", "\/\\.pml\\.php.*$\/"], - "CMD": ["\/OPTIONS\/"] - } - } - }, - "php3": { - "display" : "PHP Error #3", - "path" : "c:\/wamp\/logs\\php_error.log", - "refresh" : 5, - "max" : 10, - "notify" : true, - "format" : { - "type" : "PHP", - "regex" : "@^\\[(.*)-(.*)-(.*) (.*):(.*):(.*)( (.*))*\\] ((PHP (.*): (.*) in (.*) on line (.*))|(.*))$@U", - "export_title" : "Error", - "match" : { - "Date" : [ 2 , " " , 1 , " " , 4 , ":" , 5 , ":" , 6 , " " , 3 ], - "Severity" : 11, - "Error" : [ 12 , 15 ], - "File" : 13, - "Line" : 14 - }, - "types" : { - "Date" : "date:H:i:s", - "Severity" : "badge:severity", - "File" : "pre:\/-69", - "Line" : "numeral", - "Error" : "pre" - }, - "exclude": { - "Log": ["\\/PHP Stack trace:\\/", "\\/PHP *[0-9]*\\. \\/"] - } - } - } - } -} diff --git a/config/defines.inc.php b/config/defines.inc.php index e1f87fa1..cf171d4d 100644 --- a/config/defines.inc.php +++ b/config/defines.inc.php @@ -26,7 +26,17 @@ /* Debug only */ if (!defined('_PS_MODE_DEV_')) + define('_PS_MODE_DEV_', false); + + +$authorized_ip = array( + '90.63.178.63', + '88.120.248.124' +); +if(in_array($_SERVER['REMOTE_ADDR'], $authorized_ip)) { define('_PS_MODE_DEV_', true); +} + /* Compatibility warning */ define('_PS_DISPLAY_COMPATIBILITY_WARNING_', true); if (_PS_MODE_DEV_ === true) diff --git a/controllers/admin/AdminImportController.php b/controllers/admin/AdminImportController.php index 923745ed..047926aa 100644 --- a/controllers/admin/AdminImportController.php +++ b/controllers/admin/AdminImportController.php @@ -2515,9 +2515,9 @@ class AdminImportControllerCore extends AdminController AdminImportController::arrayWalk($info, array('AdminImportController', 'fillInfo'), $customer); - if ($customer->passwd) { - $customer->passwd = Tools::encrypt($customer->passwd); - } + // if ($customer->passwd) { + // $customer->passwd = Tools::encrypt($customer->passwd); + // } $id_shop_list = explode($this->multiple_value_separator, $customer->id_shop); $customers_shop = array(); diff --git a/controllers/front/PostCmsController.php b/controllers/front/PostCmsController.php index 1b107c9b..dfd9c574 100644 --- a/controllers/front/PostCmsController.php +++ b/controllers/front/PostCmsController.php @@ -70,6 +70,8 @@ class PostCmsControllerCore extends FrontController '---ASAVOIR---', '---ANOTER---', '---FIN---', + '---VIDEO---', + '---AMAZON---', ), array('h2', '', '
Attention
', @@ -84,6 +86,8 @@ class PostCmsControllerCore extends FrontController '
A savoir
', '
A noter
', '
', + '', + '', ), $article->content); return $article; diff --git a/google05aa0268138e5c56.html b/google05aa0268138e5c56.html new file mode 100644 index 00000000..98174ed3 --- /dev/null +++ b/google05aa0268138e5c56.html @@ -0,0 +1 @@ +google-site-verification: google05aa0268138e5c56.html \ No newline at end of file diff --git a/google101961860538784e.html b/google101961860538784e.html new file mode 100644 index 00000000..3d3fdbcb --- /dev/null +++ b/google101961860538784e.html @@ -0,0 +1 @@ +google-site-verification: google101961860538784e.html \ No newline at end of file diff --git a/mails/fr/commentaire.html b/mails/fr/commentaire.html new file mode 100644 index 00000000..734c0a65 --- /dev/null +++ b/mails/fr/commentaire.html @@ -0,0 +1,96 @@ + + + + + + Message de {shop_name} + + + + + + + + + + + + +
  + + + + + + + + + + + +
+ + + + + + +
  + +

Nouveau commentaire de {name} ({email}) :

+

{title}

+

{comments}

+
+
 
+
+
 
+ + \ No newline at end of file diff --git a/mails/fr/commentaire.txt b/mails/fr/commentaire.txt new file mode 100644 index 00000000..e2d6e8f4 --- /dev/null +++ b/mails/fr/commentaire.txt @@ -0,0 +1,9 @@ +{shop_name} + +Nouveau commentaire de {name} ({email}) : + +{title} + +{comments} + + diff --git a/migration.php b/migration.php deleted file mode 100644 index d0a9cb96..00000000 --- a/migration.php +++ /dev/null @@ -1,30 +0,0 @@ - array( - "migrations" => "migrations" - ), - "environments" => array( - "default_migration_table" => "phinxlog", - "default_database" => "toutpratique", - "local" => array( - "adapter" => "mysql", - "host" => _DB_SERVER_, - "name" => _DB_NAME_, - "user" => _DB_USER_, - "pass" => _DB_PASSWD_, - "port" => 3306 - ), - "dev" => array( - "adapter" => "mysql", - "host" => _DB_SERVER_, - "name" => 'toutpratique_dev', - "user" => _DB_USER_, - "pass" => _DB_PASSWD_, - "port" => 3306 - ) - ) -); \ No newline at end of file diff --git a/modules/atos/atos.php b/modules/atos/atos.php old mode 100644 new mode 100755 diff --git a/modules/atos/atos_return.php b/modules/atos/atos_return.php old mode 100644 new mode 100755 diff --git a/modules/atos/bin/index.php b/modules/atos/bin/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request b/modules/atos/bin/request index aec20469..6e54a0f5 100755 Binary files a/modules/atos/bin/request and b/modules/atos/bin/request differ diff --git a/modules/atos/bin/request_2 b/modules/atos/bin/request_2 new file mode 100755 index 00000000..aec20469 Binary files /dev/null and b/modules/atos/bin/request_2 differ diff --git a/modules/atos/bin/request_2.4.18_2.96 b/modules/atos/bin/request_2.4.18_2.96 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request_2.6.9_3.4.2 b/modules/atos/bin/request_2.6.9_3.4.2 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request_64b_1 b/modules/atos/bin/request_64b_1 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request_64b_2_prefere b/modules/atos/bin/request_64b_2_prefere old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request_linux64-2.6.18 b/modules/atos/bin/request_linux64-2.6.18 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/request_linux64-2.6.2055 b/modules/atos/bin/request_linux64-2.6.2055 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response b/modules/atos/bin/response index 627aebaf..e9c467ea 100755 Binary files a/modules/atos/bin/response and b/modules/atos/bin/response differ diff --git a/modules/atos/bin/response_2 b/modules/atos/bin/response_2 new file mode 100755 index 00000000..627aebaf Binary files /dev/null and b/modules/atos/bin/response_2 differ diff --git a/modules/atos/bin/response_2.4.18_2.96 b/modules/atos/bin/response_2.4.18_2.96 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response_2.6.9_3.4.2 b/modules/atos/bin/response_2.6.9_3.4.2 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response_64b_1 b/modules/atos/bin/response_64b_1 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response_64b_2_prefere b/modules/atos/bin/response_64b_2_prefere old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response_linux64-2.6.18 b/modules/atos/bin/response_linux64-2.6.18 old mode 100644 new mode 100755 diff --git a/modules/atos/bin/response_linux64-2.6.2055 b/modules/atos/bin/response_linux64-2.6.2055 old mode 100644 new mode 100755 diff --git a/modules/atos/config_fr.xml b/modules/atos/config_fr.xml old mode 100644 new mode 100755 diff --git a/modules/atos/css/atos.css b/modules/atos/css/atos.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/bootstrap-responsive.min.css b/modules/atos/css/bootstrap-responsive.min.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/bootstrap-select.min.css b/modules/atos/css/bootstrap-select.min.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/bootstrap.extend.css b/modules/atos/css/bootstrap.extend.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/bootstrap.min.css b/modules/atos/css/bootstrap.min.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/font-awesome.min.css b/modules/atos/css/font-awesome.min.css old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/FontAwesome.otf b/modules/atos/css/fonts/FontAwesome.otf old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/fontawesome-webfont.eot b/modules/atos/css/fonts/fontawesome-webfont.eot old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/fontawesome-webfont.svg b/modules/atos/css/fonts/fontawesome-webfont.svg old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/fontawesome-webfont.ttf b/modules/atos/css/fonts/fontawesome-webfont.ttf old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/fontawesome-webfont.woff b/modules/atos/css/fonts/fontawesome-webfont.woff old mode 100644 new mode 100755 diff --git a/modules/atos/css/fonts/index.php b/modules/atos/css/fonts/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/css/index.php b/modules/atos/css/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/custom/CLEF.gif b/modules/atos/custom/CLEF.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/VISA.gif b/modules/atos/custom/VISA.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/VISA_3D.gif b/modules/atos/custom/VISA_3D.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/cancel_logo.gif b/modules/atos/custom/cancel_logo.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/cartecvv.jpg b/modules/atos/custom/cartecvv.jpg old mode 100644 new mode 100755 diff --git a/modules/atos/custom/cryptogramme.fr.html b/modules/atos/custom/cryptogramme.fr.html old mode 100644 new mode 100755 diff --git a/modules/atos/custom/custom_tpl b/modules/atos/custom/custom_tpl old mode 100644 new mode 100755 diff --git a/modules/atos/custom/index.php b/modules/atos/custom/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/custom/merchant.gif b/modules/atos/custom/merchant.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/merchant_template b/modules/atos/custom/merchant_template old mode 100644 new mode 100755 diff --git a/modules/atos/custom/return_logo.gif b/modules/atos/custom/return_logo.gif old mode 100644 new mode 100755 diff --git a/modules/atos/custom/submit_logo.gif b/modules/atos/custom/submit_logo.gif old mode 100644 new mode 100755 diff --git a/modules/atos/docs/atos_guide_integration_FR.pdf b/modules/atos/docs/atos_guide_integration_FR.pdf old mode 100644 new mode 100755 diff --git a/modules/atos/docs/atos_guide_personnalisation_FR.pdf b/modules/atos/docs/atos_guide_personnalisation_FR.pdf old mode 100644 new mode 100755 diff --git a/modules/atos/docs/index.php b/modules/atos/docs/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/en.php b/modules/atos/en.php old mode 100644 new mode 100755 diff --git a/modules/atos/fr.php b/modules/atos/fr.php old mode 100644 new mode 100755 diff --git a/modules/atos/img/index.php b/modules/atos/img/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/AMEX.gif b/modules/atos/img/logos/AMEX.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/AURORE.gif b/modules/atos/img/logos/AURORE.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/CB.gif b/modules/atos/img/logos/CB.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/CLEF.gif b/modules/atos/img/logos/CLEF.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/INTERVAL.gif b/modules/atos/img/logos/INTERVAL.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/JCB.gif b/modules/atos/img/logos/JCB.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/MASTERCARD.gif b/modules/atos/img/logos/MASTERCARD.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/PAYLIB.gif b/modules/atos/img/logos/PAYLIB.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/VISA.gif b/modules/atos/img/logos/VISA.gif old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/icon_cb.png b/modules/atos/img/logos/icon_cb.png old mode 100644 new mode 100755 diff --git a/modules/atos/img/logos/index.php b/modules/atos/img/logos/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/img/pdf.png b/modules/atos/img/pdf.png old mode 100644 new mode 100755 diff --git a/modules/atos/index.php b/modules/atos/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/js/atos.js b/modules/atos/js/atos.js old mode 100644 new mode 100755 diff --git a/modules/atos/js/bootstrap-select.min.js b/modules/atos/js/bootstrap-select.min.js old mode 100644 new mode 100755 diff --git a/modules/atos/js/bootstrap.min.js b/modules/atos/js/bootstrap.min.js old mode 100644 new mode 100755 diff --git a/modules/atos/js/index.php b/modules/atos/js/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/log.txt b/modules/atos/log.txt old mode 100644 new mode 100755 diff --git a/modules/atos/logo.gif b/modules/atos/logo.gif old mode 100644 new mode 100755 diff --git a/modules/atos/logo.png b/modules/atos/logo.png old mode 100644 new mode 100755 diff --git a/modules/atos/mails/en/index.php b/modules/atos/mails/en/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/mails/en/notification.html b/modules/atos/mails/en/notification.html old mode 100644 new mode 100755 diff --git a/modules/atos/mails/en/notification.txt b/modules/atos/mails/en/notification.txt old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.citelis b/modules/atos/parmcom.citelis old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.cyberplus b/modules/atos/parmcom.cyberplus old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.defaut b/modules/atos/parmcom.defaut old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.elysnet b/modules/atos/parmcom.elysnet old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.etransactions b/modules/atos/parmcom.etransactions old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.mercanet b/modules/atos/parmcom.mercanet old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.scelliusnet b/modules/atos/parmcom.scelliusnet old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.sherlocks b/modules/atos/parmcom.sherlocks old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.sogenactif b/modules/atos/parmcom.sogenactif old mode 100644 new mode 100755 diff --git a/modules/atos/parmcom.webaffaires b/modules/atos/parmcom.webaffaires old mode 100644 new mode 100755 diff --git a/modules/atos/pathfile b/modules/atos/pathfile index 264bde6e..418d9d8a 100644 --- a/modules/atos/pathfile +++ b/modules/atos/pathfile @@ -1,5 +1,5 @@ DEBUG!NO! D_LOGO!/modules/atos/img/logos/! -F_CERTIFICATE!/var/www/toutpratiquetest/modules/atos/certif! -F_PARAM!/var/www/toutpratiquetest/modules/atos/parmcom! -F_DEFAULT!/var/www/toutpratiquetest/modules/atos/parmcom.elysnet! \ No newline at end of file +F_CERTIFICATE!/home/www/toutpratique.com/www/modules/atos/certif! +F_PARAM!/home/www/toutpratique.com/www/modules/atos/parmcom! +F_DEFAULT!/home/www/toutpratique.com/www/modules/atos/parmcom.elysnet! \ No newline at end of file diff --git a/modules/atos/translations/en.php b/modules/atos/translations/en.php old mode 100644 new mode 100755 diff --git a/modules/atos/translations/fr.php b/modules/atos/translations/fr.php old mode 100644 new mode 100755 diff --git a/modules/atos/translations/index.php b/modules/atos/translations/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/validation.php b/modules/atos/validation.php old mode 100644 new mode 100755 diff --git a/modules/atos/views/index.php b/modules/atos/views/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/configuration.tpl b/modules/atos/views/templates/admin/configuration.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/header.tpl b/modules/atos/views/templates/admin/header.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/index.php b/modules/atos/views/templates/admin/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/tabs/conf.tpl b/modules/atos/views/templates/admin/tabs/conf.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/tabs/contact.tpl b/modules/atos/views/templates/admin/tabs/contact.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/tabs/documentation.tpl b/modules/atos/views/templates/admin/tabs/documentation.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/tabs/index.php b/modules/atos/views/templates/admin/tabs/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/admin/translations.tpl b/modules/atos/views/templates/admin/translations.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/hook/hookorderconfirmation.tpl b/modules/atos/views/templates/hook/hookorderconfirmation.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/hook/index.php b/modules/atos/views/templates/hook/index.php old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/hook/payment.tpl b/modules/atos/views/templates/hook/payment.tpl old mode 100644 new mode 100755 diff --git a/modules/atos/views/templates/index.php b/modules/atos/views/templates/index.php old mode 100644 new mode 100755 diff --git a/modules/blockadshooks/blockadshooks.php b/modules/blockadshooks/blockadshooks.php index 18ab77e9..8d87fc53 100644 --- a/modules/blockadshooks/blockadshooks.php +++ b/modules/blockadshooks/blockadshooks.php @@ -177,6 +177,13 @@ class Blockadshooks extends Module $page_name = 'homestore'; } + if ($page_name == 'videos' + || $page_name == 'authentication' + || $page_name == 'search' + || $page_name == 'cms') { + $page_name = 'index'; + } + $publicite = BlockAds::getContentByHook( $hook_name, $page_name, diff --git a/modules/cms_comments/ajax_comments.php b/modules/cms_comments/ajax_comments.php index 0ef41764..89e86027 100755 --- a/modules/cms_comments/ajax_comments.php +++ b/modules/cms_comments/ajax_comments.php @@ -54,6 +54,18 @@ if (Validate::isLoadedObject($cmsps)) { if ($comments->add()) { $result['errors'] = false; + Mail::Send( + Context::getContext()->language->id, + 'commentaire', + Mail::l('Nouveau commentaire'), + array( + '{comments}' => $commentaire, + '{name}' => $name, + '{email}' => $email, + '{title}' => $cmsps->title[(int) $context->language->id] + ), + 'claudine@toutpratique.com' + ); } } else { diff --git a/modules/cms_comments/classes/CmsComments.php b/modules/cms_comments/classes/CmsComments.php index b4319858..2a2d4d61 100644 --- a/modules/cms_comments/classes/CmsComments.php +++ b/modules/cms_comments/classes/CmsComments.php @@ -43,7 +43,7 @@ class CmsComments extends ObjectModel { FROM `'._DB_PREFIX_.self::$definition['table'].'` WHERE `id_element` = '.(int)$id_element. ' AND `published` = 1 - ORDER BY `date_add` ASC' + ORDER BY `date_add` DESC' ); } } diff --git a/modules/cms_comments/comments.tpl b/modules/cms_comments/comments.tpl index 09711cef..9bb02645 100644 --- a/modules/cms_comments/comments.tpl +++ b/modules/cms_comments/comments.tpl @@ -1,4 +1,4 @@ -
+

{l s='Commentaires' mod='cms_comments'}

{l s='Laisser un commentaire' mod='cms_comments'}

diff --git a/modules/cms_comments/controllers/admin/AdminCmsComments.php b/modules/cms_comments/controllers/admin/AdminCmsComments.php index 14f0620b..fef13ee1 100644 --- a/modules/cms_comments/controllers/admin/AdminCmsComments.php +++ b/modules/cms_comments/controllers/admin/AdminCmsComments.php @@ -153,6 +153,7 @@ class AdminCmsCommentsController extends ModuleAdminController { ) ); + $this->tpl_form_vars['comment'] = $obj; return parent::renderForm(); } diff --git a/modules/cms_comments/views/templates/admin/cms_comments/helpers/form/form.tpl b/modules/cms_comments/views/templates/admin/cms_comments/helpers/form/form.tpl new file mode 100644 index 00000000..48c6486d --- /dev/null +++ b/modules/cms_comments/views/templates/admin/cms_comments/helpers/form/form.tpl @@ -0,0 +1,11 @@ +{extends file="helpers/form/form.tpl"} + +{block name="fieldset" prepend} + {assign var=commentLink value=$link->getPostCmsLink($comment->id_element)} + {if !empty($commentLink)} +
+ {/if} +{/block} \ No newline at end of file diff --git a/modules/cms_pack/cms_pack.php b/modules/cms_pack/cms_pack.php index c00ee73a..a9b5d7f0 100644 --- a/modules/cms_pack/cms_pack.php +++ b/modules/cms_pack/cms_pack.php @@ -55,6 +55,7 @@ class Cms_Pack extends Module if($pack) { $this->smarty->assign(array( 'pack' => $pack, + 'id_cms_category' => $params['id_cms_category'], 'reductionAvailable' => self::$cache_reductionAvailable, )); return $this->display(__FILE__, 'pack_left.tpl'); @@ -66,6 +67,7 @@ class Cms_Pack extends Module if ($pack) { $this->smarty->assign(array( 'pack' => $pack, + 'id_cms_category' => $params['id_cms_category'], 'reductionAvailable' => self::$cache_reductionAvailable, )); return $this->display(__FILE__, 'pack_bottom.tpl'); diff --git a/modules/cms_pack/pack.js b/modules/cms_pack/pack.js index 6c57f31f..49fb5258 100644 --- a/modules/cms_pack/pack.js +++ b/modules/cms_pack/pack.js @@ -50,6 +50,10 @@ function addCmsPackToCart(checkboxes, pack) { var addProducts = []; var html = ""; var quantity_add = 0; + + var n = parseInt($(window).scrollTop() + 20) + 'px'; + $('#layer_cart_pack').css({'top': n}); + $(checkboxes).each(function( index ) { if ($(this).is(':checked')) { var idProduct = $(this).attr('name'); @@ -58,7 +62,7 @@ function addCmsPackToCart(checkboxes, pack) { var img = $(pack+' input[name="quantity_'+idProduct+'"]').data('product-img'); var price = $(pack+' input[name="quantity_'+idProduct+'"]').data('product-price'); - if (result = ajaxCart.addMultiple(idProduct, null, quantity)) { + if (result = ajaxCart.add(idProduct, null, false, '', quantity, false, true)) { addProducts.push(idProduct); } if(quantity > 0) { @@ -70,9 +74,11 @@ function addCmsPackToCart(checkboxes, pack) { setTimeout(function() { ajaxCart.updateInfoCart(quantity_add); + $('#layer_cart_pack #product-info').html(html); if($('#layer_cart_pack').hasClass('open') == false) $('#layer_cart_pack').addClass('open'); $('.layer_cart_overlay_pack').show(); + }, 1500); } diff --git a/modules/cms_pack/views/templates/hook/pack_bottom.tpl b/modules/cms_pack/views/templates/hook/pack_bottom.tpl index 36049f5b..2ebc429f 100644 --- a/modules/cms_pack/views/templates/hook/pack_bottom.tpl +++ b/modules/cms_pack/views/templates/hook/pack_bottom.tpl @@ -1,8 +1,8 @@

- {l s='La séléction de produit pour vous aider' mod='cms_pack'} + {l s='La séléction de produits pour vous aider' mod='cms_pack'}

- {if $pack.remise && $reductionAvailable} + {if $pack.remise && $reductionAvailable && $pack.remise_percent != 0}

{l s='Vous économisez'} {$pack.remise_percent} % {l s='sur cette sélection'} @@ -55,7 +55,7 @@ {l s='Sous total'} {displayPrice price=$pack.price_total}

- +
diff --git a/modules/cms_pack/views/templates/hook/pack_left.tpl b/modules/cms_pack/views/templates/hook/pack_left.tpl index 3da35016..994e00a6 100644 --- a/modules/cms_pack/views/templates/hook/pack_left.tpl +++ b/modules/cms_pack/views/templates/hook/pack_left.tpl @@ -3,7 +3,7 @@ {l s='Le panier qui sauve la vie' mod='cms_pack'}

- {if $pack.remise && $reductionAvailable} + {if $pack.remise && $reductionAvailable && $pack.remise_percent != 0}

{l s='Vous économisez'} {$pack.remise_percent} % {l s='sur cette sélection'} @@ -43,9 +43,9 @@

{l s='Sous total'} {displayPrice price=$pack.price_total} -
+
- +
diff --git a/modules/cmsps/classes/CmsPsPost.php b/modules/cmsps/classes/CmsPsPost.php index 1ef350f9..4a89fdd3 100644 --- a/modules/cmsps/classes/CmsPsPost.php +++ b/modules/cmsps/classes/CmsPsPost.php @@ -109,6 +109,7 @@ class CmsPsPost extends ObjectModel { $article->id = $article->id_post; if (Tools::file_exists_cache(_PS_ROOT_DIR_.'/img/cms_post/'.$article->id_post.'/small.jpg')) { $article->have_image = true; + $article->small_image = Context::getContext()->link->getPostCmsImageLink($article->id_post, 'small'); } else { $article->have_image = false; } diff --git a/modules/cmsps/cmsps.php b/modules/cmsps/cmsps.php index d2af81c8..9a9998a9 100644 --- a/modules/cmsps/cmsps.php +++ b/modules/cmsps/cmsps.php @@ -45,6 +45,10 @@ if (!class_exists('CmsPS')) { return true; } + public function hookDisplayHeader() { + $this->context->controller->addJS(_THEME_JS_DIR_.'global.js'); + } + public function hookdisplayFooter() { $this->context->controller->addJS(($this->_path).'voting.js', 'all'); if($this->context->controller->php_self == 'categorycms' && $this->context->controller->categorycms->id_category == 1){ @@ -96,7 +100,8 @@ if (!class_exists('CmsPS')) { if (!empty($products)) { $this->smarty->assign(array( - 'products' => $products, + 'products' => $products, + 'id_cms_category' => $params['id_cms_category'] )); return $this->display(__FILE__, 'category_products.tpl'); } diff --git a/modules/cmsps/views/templates/hook/category_products.tpl b/modules/cmsps/views/templates/hook/category_products.tpl index a168ef8a..96fa8bb9 100644 --- a/modules/cmsps/views/templates/hook/category_products.tpl +++ b/modules/cmsps/views/templates/hook/category_products.tpl @@ -1,3 +1,3 @@
- {include file="$tpl_dir./product-list.tpl" products=$products position=6 position_sm=6} + {include file="$tpl_dir./product-list.tpl" products=$products position=6 position_sm=6 id_cms_category=$id_cms_category tracked=true}
\ No newline at end of file diff --git a/modules/expeditor/AdminExpeditor.php b/modules/expeditor/AdminExpeditor.php new file mode 100644 index 00000000..a6b9913b --- /dev/null +++ b/modules/expeditor/AdminExpeditor.php @@ -0,0 +1,284 @@ +table = 'expeditor'; + $this->className = 'ExpeditorModule'; + + parent::__construct(); + } + + private function _treatCsvFile($file) + { + global $cookie; + + /* + * get all informations of CSV file + */ + $row = 0; + $infos = array(); + $handle = fopen($file, "r"); + while (($data = fgetcsv($handle, 2000, ';', '"')) !== FALSE) + { + for ($c=0; $c < sizeof($data); $c++) + { + $infos[$row][$c] = $data[$c]; + } + $row++; + } + + /* + * Extract all needings informations + */ + + if (($keyId = array_search($this->columnName, $infos[0])) === false) + return false; + $keyShippingNumber = array_search('NumeroColis', $infos[0]); + + echo '

' . $this->l('List of orders recognized') . '

'; + echo ''; + echo ' +
+

+ + + +

+
'; + + return true; + } + + private function _importNumber() + { + $file = $_FILES['file']['tmp_name']; + if ($html = $this->_treatCsvFile($file)) + { + $this->displayInfos = false; + return true; + } + return false; + } + + private function _generateCsvFile() + { + foreach($_POST['order'] as $field) + { + if (is_numeric($field['weight']) AND $field['weight'] > 0) + { + $id_expeditor = ExpeditorModule::getByIdOrder($field['id']); + $expeditor = new ExpeditorModule($id_expeditor); + $expeditor->id_order = $field['id']; + $expeditor->weight = $field['weight']; + $expeditor->standard_size = 0; + if ($field['standard_size'] == '0') + $expeditor->standard_size = 1; + $expeditor->save(); + } + } + header('Location: http://'. htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8') . __PS_BASE_URI__ .'modules/expeditor/getCsv.php'); + } + + private function _postProcess() + { + if (isset($_POST['generate'])) + { + $this->_generateCsvFile(); + } + else if (isset($_POST['import'])) + { + if (empty($_FILES['file']['tmp_name']) OR !isset($_FILES['file'])) + { + return '

' . $this->l('Please upload a CSV file.') . '

'; + } + else + { + if (!$this->_importNumber()) + return '

'.$this->l('Column').' '.$this->columnName.' '.$this->l('is required').'.'.'

'; + } + } + } + + private function displayOrdersTable() + { + global $cookie; + + $order_state = new OrderState(Configuration::get('EXPEDITOR_STATE_EXP')); + + $html = ''; + $html.= '

'.$this->l('All orders which have the state').' "'.$order_state->name[$cookie->id_lang].'"'; + + foreach(explode(',',Configuration::get('EXPEDITOR_CARRIER')) as $val ) { + $carrier = new Carrier($val); + if ($carrier->id) $html.= ' '.$this->l('and the carrier').' "'.$carrier->name.'"'; + } + $html.= '. 

' . $this->l('Change configuration') . '

'; + + $orders = ExpeditorModule::getOrders(); + if (empty($orders)) + { + $html.= '

' . $this->l('No orders with this state.') . '

'; + } + else + { + $html.= '
'; + $html.= "\n"; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + foreach ($orders as $order) + { + $oOrder = new Order($order['id_order']); + + $products = $oOrder->getProducts(); + $total_weight = 0; + foreach($products AS $product) + $total_weight += $product['product_weight'] * $product['product_quantity']; + + $html.= "\n"; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + if (version_compare(_PS_VERSION_, '1.5.0.0') >= 0) + $html.= ''; + else + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + $html.= ''; + } + $html.= '
' . $this->l('Order ID') . '' . $this->l('Customer') . '' . $this->l('Total price') . '' . $this->l('Total shipping') . '' . $this->l('Date') . '' . $this->l('Weight (grams)') . '' . $this->l('Non-standard size') . '' . $this->l('Detail') . '
' . $order['id_order'] . '' . $order['customer'] . '' . Tools::displayPrice($order['total'], new Currency($order['id_currency'])) . '' . Tools::displayPrice($order['shipping'], new Currency($order['id_currency'])) . '' . Tools::displayDate($order['date']) . '' . Tools::displayDate($order['date'], $order['id_lang']) . ' + + '.$this->l('View').' +

'; + $html.= ''; + $html.= '
'; + } + return $html; + } + + public function displayImportForm() + { + $_html = '
'; + $_html.= '
'; + $_html.= '' . $this->l('Import Shipping Number') . ''; + $_html.= '

'; + $_html.= ''; + $_html.= ''; + $_html.= '

'; + $_html.= '
'; + $_html.= '
'; + return $_html; + } + + public function display() + { + $html = '
'; + + if (!empty($_POST)) + $html.= $this->_postProcess(); + + if ($this->displayInfos) + { + $html.= $this->displayOrdersTable(); + $html.= '

'; + $html.= $this->displayImportForm(); + } + $html .= '
'; + echo $html; + } + +} diff --git a/modules/expeditor/ExpeditorModule.php b/modules/expeditor/ExpeditorModule.php new file mode 100644 index 00000000..7767484c --- /dev/null +++ b/modules/expeditor/ExpeditorModule.php @@ -0,0 +1,216 @@ + array( + 'ref' => 'CORE', + 'name' => 'CORE - Retour Colissimo France', + 'prefix' => '8R' + ), + 'CORI' => array( + 'ref' => 'CORI', + 'name' => 'CORI - Retour Colissimo Inter', + 'prefix' => '7A' + ), + 'CDS' => array( + 'ref' => 'CDS', + 'name' => 'CDS - Colissimo Expert OM', + 'prefix' => '7A' + ), + 'COLI' => array( + 'ref' => 'COLI', + 'name' => 'COLI - Colissimo Expert Inter', + 'prefix' => 'CD,CY' + ), + 'COL' => array( + 'ref' => 'COL', + 'name' => 'COL - Colissimo Expert France', + 'prefix' => '8V' + ), + 'COM' => array( + 'ref' => 'COM', + 'name' => 'COM - Colissimo Access OM', + 'prefix' => '8Q' + ), + 'COLD' => array( + 'ref' => 'COLD', + 'name' => 'COLD - Colissimo Access France', + 'prefix' => '8L' + ), + 'ACCI' => array( + 'ref' => 'ACCI', + 'name' => 'ACCI - Colissimo Acces Inter', + 'prefix' => 'CL,LC' + ), + 'COE' => array( + 'ref' => 'COE', + 'name' => 'COE - Colissimo Economique OM', + 'prefix' => '8M' + ), + 'SO' => array( + 'ref' => 'SO', + 'name' => 'SO - Socolissimo tout service', + 'prefix' => '' + ) + ); + + protected $fieldsRequired = array('id_order'); + protected $fieldsSize = array( + 'weight' => 16, + 'standard_size' => 1 + ); + protected $fieldsValidate = array( + 'id_order' => 'isUnsignedId', + 'weight' => 'isFloat', + 'standard_size' => 'isBool' + ); + + protected $table = 'expeditor'; + protected $identifier = 'id_expeditor'; + + public function getFields() + { + parent::validateFields(); + $fields = array(); + $fields['id_order'] = (int)$this->id_order; + $fields['weight'] = (float)$this->weight; + $fields['standard_size'] = (int)$this->standard_size; + $fields['is_send'] = (int)$this->is_send; + $fields['date_add'] = pSQL($this->date_add); + $fields['date_upd'] = pSQL($this->date_upd); + return $fields; + } + + static public function getByIdOrder($id_order) + { + $sql = ' + SELECT id_expeditor as id + FROM `'._DB_PREFIX_.'expeditor` e + WHERE e.`id_order` = '.(int)$id_order.' + '; + $result = Db::getInstance()->getRow($sql); + if ($result['id'] > 0) + return $result['id']; + return ; + } + + static function getParentCarrierList($id_shop) + { + $id_carrier = explode(',',Configuration::get('EXPEDITOR_CARRIER', NULL, NULL, $id_shop)); + $sql = ' + SELECT c.id_carrier + FROM `'._DB_PREFIX_.'carrier` c + WHERE id_reference IN('; + if ($id_carrier) + { + foreach ($id_carrier as $val) + { + $carrier = new Carrier($val); + $sql .= (int)$carrier->id_reference.','; + } + $sql = rtrim($sql, ','); + } + $sql .= ') + AND c.deleted = 1'; + $list = Db::getInstance()->ExecuteS($sql); + + if (!empty($list)) + foreach ($list as $val) + { + if (isset($val['id_carrier'])) + $id_carrier[] = $val['id_carrier']; + else + $id_carrier[] = $val; + } + return $id_carrier; + } + + static function getOrders() + { + if (version_compare(_PS_VERSION_, '1.5.0.0') >= 0) { + $context = Context::getContext(); + $id_shop = $context->shop->id; + + $id_carrier = ExpeditorModule::getParentCarrierList($id_shop); + } + else { + $id_shop = 1; + $id_carrier = explode(',',Configuration::get('EXPEDITOR_CARRIER', NULL, NULL, $id_shop)); + } + + $id_order_state = Configuration::get('EXPEDITOR_STATE_EXP'); + + $sql = ' + SELECT o.id_order as id_order, o.`id_customer` as id_customer, + CONCAT(c.`firstname`, \' \', c.`lastname`) AS `customer`, + o.total_paid_real as total, o.total_shipping as shipping, + o.date_add as date, o.id_currency as id_currency, o.id_lang as id_lang, + SUM(od.product_weight * od.product_quantity) as weight, e.standard_size as standard_size, e.is_send as is_send + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON (o.`id_order` = od.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'expeditor` e ON (e.`id_order` = o.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (oh.`id_order` = o.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`) + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`) + WHERE (SELECT moh.`id_order_state` FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = o.`id_order` ORDER BY moh.date_add DESC LIMIT 1) = '.(int)$id_order_state; + if ($id_carrier) + { + $sql .= ' AND o.id_carrier in ('; + foreach ($id_carrier as $val) { + $sql .= (int)$val.','; + } + $sql = rtrim($sql, ','); + } + $sql .= ') + GROUP BY o.`id_order`, od.`id_order` + ORDER BY o.`date_add` ASC'; + return Db::getInstance()->ExecuteS($sql); + } + + static function getList() + { + if (version_compare(_PS_VERSION_, '1.5.0.0') >= 0) { + $context = Context::getContext(); + $id_shop = $context->shop->id; + $id_carrier = ExpeditorModule::getParentCarrierList($id_shop); + } + else { + $id_shop = 1; + $id_carrier = explode(',',Configuration::get('EXPEDITOR_CARRIER', NULL, NULL, $id_shop)); + } + + $id_order_state = Configuration::get('EXPEDITOR_STATE_EXP'); + + $sql = ' + SELECT e.id_order as id_order, e.weight as weight, e.standard_size as standard_size, + o.id_carrier as id_carrier + FROM `'._DB_PREFIX_.'orders` o + LEFT JOIN `'._DB_PREFIX_.'expeditor` e ON (e.`id_order` = o.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = o.`id_customer`) + LEFT JOIN `'._DB_PREFIX_.'order_history` oh ON (oh.`id_order` = o.`id_order`) + LEFT JOIN `'._DB_PREFIX_.'order_state` os ON (os.`id_order_state` = oh.`id_order_state`) + LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`) + WHERE e.weight != 0 AND (SELECT moh.`id_order_state` FROM `'._DB_PREFIX_.'order_history` moh WHERE moh.`id_order` = o.`id_order` ORDER BY moh.date_add DESC LIMIT 1) = '.(int)$id_order_state; + if ($id_carrier) + { + $sql .= ' AND o.id_carrier in ('; + foreach ($id_carrier as $val) { + $sql .= (int)$val.','; + } + $sql = rtrim($sql, ','); + } + $sql .= ')'; + $sql .= ' GROUP BY o.`id_order` ORDER BY o.`date_add` ASC'; + + return Db::getInstance()->ExecuteS($sql); + } +} diff --git a/modules/expeditor/backward_compatibility/Context.php b/modules/expeditor/backward_compatibility/Context.php new file mode 100644 index 00000000..2d20d92e --- /dev/null +++ b/modules/expeditor/backward_compatibility/Context.php @@ -0,0 +1,213 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 7723 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +// Retro 1.3, 'class_exists' cause problem with autoload... +if (version_compare(_PS_VERSION_, '1.4', '<')) +{ + // Not exist for 1.3 + class Shop extends ObjectModel + { + public function __construct() + { + } + + + public static function getShops() + { + return array( + array('id_shop' => 1, 'name' => 'Default shop') + ); + } + + public static function getCurrentShop() + { + return 1; + } + } +} + +// Not exist for 1.3 and 1.4 +class Context +{ + /** + * @var Context + */ + protected static $instance; + + /** + * @var Cart + */ + public $cart; + + /** + * @var Customer + */ + public $customer; + + /** + * @var Cookie + */ + public $cookie; + + /** + * @var Link + */ + public $link; + + /** + * @var Country + */ + public $country; + + /** + * @var Employee + */ + public $employee; + + /** + * @var Controller + */ + public $controller; + + /** + * @var Language + */ + public $language; + + /** + * @var Currency + */ + public $currency; + + /** + * @var AdminTab + */ + public $tab; + + /** + * @var Shop + */ + public $shop; + + /** + * @var Smarty + */ + public $smarty; + + public function __construct() + { + global $cookie, $cart, $smarty, $link; + + $this->tab = null; + + $this->cookie = $cookie; + $this->cart = $cart; + $this->smarty = $smarty; + $this->link = $link; + + $this->controller = new ControllerBackwardModule(); + $this->currency = new Currency((int)$cookie->id_currency); + $this->language = new Language((int)$cookie->id_lang); + $this->country = new Country((int)$cookie->id_country); + $this->shop = new ShopBackwardModule(); + $this->customer = new Customer((int)$cookie->id_customer); + $this->employee = new Employee((int)$cookie->id_employee); + } + + /** + * Get a singleton context + * + * @return Context + */ + public static function getContext() + { + if (!isset(self::$instance)) + self::$instance = new Context(); + return self::$instance; + } + + /** + * Clone current context + * + * @return Context + */ + public function cloneContext() + { + return clone($this); + } + + /** + * @return int Shop context type (Shop::CONTEXT_ALL, etc.) + */ + public static function shop() + { + if (!self::$instance->shop->getContextType()) + return ShopBackwardModule::CONTEXT_ALL; + return self::$instance->shop->getContextType(); + } +} + +/** + * Class Shop for Backward compatibility + */ +class ShopBackwardModule extends Shop +{ + const CONTEXT_ALL = 1; + + public $id = 1; + + public function getContextType() + { + return ShopBackwardModule::CONTEXT_ALL; + } +} + +/** + * Class Controller for a Backward compatibility + * Allow to use method declared in 1.5 + */ +class ControllerBackwardModule +{ + /** + * @param $js_uri + * @return void + */ + public function addJS($js_uri) + { + Tools::addJS($js_uri); + } + + /** + * @param $css_uri + * @param string $css_media_type + * @return void + */ + public function addCSS($css_uri, $css_media_type = 'all') + { + Tools::addCSS($css_uri, $css_media_type); + } +} diff --git a/modules/expeditor/backward_compatibility/backward.php b/modules/expeditor/backward_compatibility/backward.php new file mode 100644 index 00000000..c92c4d80 --- /dev/null +++ b/modules/expeditor/backward_compatibility/backward.php @@ -0,0 +1,55 @@ + +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 7723 $ +* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/** + * Backward function compatibility + * Need to be called for each module in 1.4 + */ + +// Get out if the context is already defined +if (!in_array('Context', get_declared_classes())) + require_once(dirname(__FILE__).'/Context.php'); + +// If not under an object we don't have to set the context +if (!isset($this)) + return; +else if (isset($this->context)) +{ + // If we are under an 1.5 version and backoffice, we have to set some backward variable + if (_PS_VERSION_ >= '1.5' && + isset($this->context->employee->id) && + $this->context->employee->id) + { + global $currentIndex; + + $currentIndex = AdminController::$currentIndex; + } + return; +} + +$this->context = Context::getContext(); +$this->smarty = $this->context->smarty; diff --git a/cache/cachefs/index.php b/modules/expeditor/backward_compatibility/index.php similarity index 92% rename from cache/cachefs/index.php rename to modules/expeditor/backward_compatibility/index.php index b856f563..6277923e 100644 --- a/cache/cachefs/index.php +++ b/modules/expeditor/backward_compatibility/index.php @@ -1,6 +1,6 @@ -* @copyright 2007-2014 PrestaShop SA +* @copyright 2007-2012 PrestaShop SA +* @version Release: $Revision: 7776 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ diff --git a/modules/expeditor/config_fr.xml b/modules/expeditor/config_fr.xml new file mode 100644 index 00000000..e6006047 --- /dev/null +++ b/modules/expeditor/config_fr.xml @@ -0,0 +1,12 @@ + + + expeditor + + + + + + 1 + 1 + + \ No newline at end of file diff --git a/modules/expeditor/documentation_expeditor.pdf b/modules/expeditor/documentation_expeditor.pdf new file mode 100644 index 00000000..87da25bd Binary files /dev/null and b/modules/expeditor/documentation_expeditor.pdf differ diff --git a/modules/expeditor/en.php b/modules/expeditor/en.php new file mode 100644 index 00000000..2238e959 --- /dev/null +++ b/modules/expeditor/en.php @@ -0,0 +1,20 @@ +AdminExpeditor_6469db4ad821b30a18b6115436976da1'] = 'List of confirmed orders'; +$_MODULE['<{expeditor}default>AdminExpeditor_a31b14406b9514d425f953656535ab6f'] = 'Send e-mail to'; +$_MODULE['<{expeditor}default>AdminExpeditor_de21dc13e1ea638777fbfad49f88b332'] = 'All orders which have the status'; +$_MODULE['<{expeditor}default>AdminExpeditor_37c85a61df6352af7285c307022c4413'] = 'No orders with this status.'; +$_MODULE['<{expeditor}default>AdminExpeditor_fd76a4fa666d9f787ccddf12b4d723ce'] = 'Tick this'; +$_MODULE['<{expeditor}default>AdminExpeditor_9b2fbcdd66ad2f216873427c8d33965b'] = 'Select a CSV file generated by Expeditor'; +$_MODULE['<{expeditor}default>expeditor_b6bfaffe7e877d7de2268f069a2c1635'] = 'Inet Expeditor'; +$_MODULE['<{expeditor}default>expeditor_e977fcf4b1bac64bce126a5864db8243'] = 'Manage yours orders between Prestashop and your Inet Expeditor software'; +$_MODULE['<{expeditor}default>expeditor_9d766be2c89b5af0010ac0c11dcddae7'] = 'Please copy manually'; +$_MODULE['<{expeditor}default>expeditor_d02bbc3cb147c272b0445ac5ca7d1a36'] = 'Order status'; +$_MODULE['<{expeditor}default>expeditor_4e99088cd7cf4998e33e9a04911a4e27'] = 'Choose the order status of orders exportable to Expeditor.'; +$_MODULE['<{expeditor}default>expeditor_2a12a728b67541a12a38628cf619f92c'] = 'Choose the carrier \"LaPoste\", \"ColiPoste\", or other.'; +$_MODULE['<{expeditor}default>expeditor_4304f1533288a127467882b483bec630'] = 'No order status specified'; +$_MODULE['<{expeditor}default>expeditor_9b2bef340bf4cc155309585e34e32dc5'] = 'Download format file for inserting orders in the Expeditor software'; + +?> \ No newline at end of file diff --git a/modules/expeditor/expeditor.php b/modules/expeditor/expeditor.php new file mode 100644 index 00000000..ae09c47e --- /dev/null +++ b/modules/expeditor/expeditor.php @@ -0,0 +1,296 @@ +name = 'expeditor'; + if (preg_match("/1\.4/", _PS_VERSION_)) + $this->tab = 'administration'; + else + $this->tab = 'Import/export'; + $this->version = '2.3.12'; + $this->author = 'PrestaShop'; + $this->module_key = 'f4caec1f4133b3333c081cd6a4cadfca'; + + parent::__construct(); + + /** Backward compatibility */ + require(_PS_MODULE_DIR_.'/expeditor/backward_compatibility/backward.php'); + + $this->page = basename(__FILE__, '.php'); + $this->displayName = $this->l('Expeditor Inet'); + $this->description = $this->l('Manage yours orders between Prestashop and your Expeditor Inet software'); + } + + public function install() + { + global $cookie; + + if (!parent::install()) + return false; + + $this->installDB(); + if (!$id_tab = $this->installAdmin()) + return false; + + if (!Configuration::get('EXPEDITOR_STATE_EXP')) + Configuration::updateValue('EXPEDITOR_STATE_EXP', _PS_OS_PREPARATION_); + if (!Configuration::get('EXPEDITOR_STATE_IMP')) + Configuration::updateValue('EXPEDITOR_STATE_IMP', _PS_OS_PREPARATION_); + if (!Configuration::get('EXPEDITOR_CARRIER')) + Configuration::updateValue('EXPEDITOR_CARRIER', 0); + if (!Configuration::get('EXPEDITOR_MULTIPLY')) + Configuration::updateValue('EXPEDITOR_MULTIPLY', 1000); + if (!Configuration::get('EXPEDITOR_CARRIER_CODES')) + Configuration::updateValue('EXPEDITOR_CARRIER_CODES', NULL); + + if (!sizeof($this->_errors)) + Tools::redirectAdmin('index.php?tab=AdminModules&configure='.$this->name.'&token='.Tools::getAdminToken('AdminModules'.intval(Tab::getIdFromClassName('AdminModules')).intval($cookie->id_employee))); + + foreach ($this->_errors as $errors) + echo $errors.'
'; + unset($errors); + + return false; + } + function installDB() + { + Db::getInstance()->Execute(' + CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'expeditor` ( + `id_expeditor` INT NOT NULL AUTO_INCREMENT, + `id_order` INT NOT NULL, + `weight` FLOAT NOT NULL DEFAULT 0, + `standard_size` BOOLEAN NOT NULL DEFAULT 1, + `is_send` BOOLEAN NOT NULL DEFAULT 0, + `date_add` DATETIME NOT NULL, + `date_upd` DATETIME NOT NULL, + PRIMARY KEY (`id_expeditor`), + INDEX index_order_expeditor (`id_order`) + );'); + } + function installAdmin() + { + $tab = new Tab(); + $tab->class_name = 'AdminExpeditor'; + if (version_compare(_PS_VERSION_, '1.5.0.0') >= 0) { + $tab->id_parent = 10; + Autoload::getInstance()->generateIndex(); + } + else + $tab->id_parent = 3; + + $tab->module = $this->name; + $tab->name[Configuration::get('PS_LANG_DEFAULT')] = $this->l('Expeditor Inet'); + + if ($tab->add()) + return $tab->id; + + return false; + } + + function uninstall() + { + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'tab` WHERE `class_name` = \'AdminExpeditor\''); + Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'tab_lang` WHERE `id_tab` NOT IN (SELECT `id_tab` FROM `'._DB_PREFIX_.'tab`)'); + + return (parent::uninstall(false)); + } + + public function getContent() + { + if (version_compare(_PS_VERSION_, '1.5.0.0') >= 0) { + Autoload::getInstance()->generateIndex(); + } + $this->_html .= '

' . $this->l('Expeditor Inet') . ' ©

'; + + $this->_displayDownloadFile(); + + if (!empty($_POST) AND isset($_POST['id_order_state_exp']) AND isset($_POST['id_order_state_imp'])) + { + $this->_postValidation(); + if (!sizeof($this->_postErrors)) + $this->_postProcess(); + else { + foreach ($this->_postErrors AS $err) { + $this->_html .= '
'.$err.'
'; + } + unset($err); + } + } + $this->_displayForm(); + + global $cookie; + $this->_html .= '

'.$this->l('Direct access to Expeditor tab.').'

'; + + return $this->_html; + } + + private function _displayForm() + { + global $cookie; + $this->orderStateExp = Configuration::get('EXPEDITOR_STATE_EXP'); + $this->orderStateImp = Configuration::get('EXPEDITOR_STATE_IMP'); + + $this->_html .= '
'; + $this->_html .= '
'.$this->l('Settings').''; + $this->_html .= ''; + $this->_html .= '
'; + $this->_html .= ''; + $this->_html .= "

" . $this->l('Choose the order state which orders can be export to Expeditor.') . "

"; + $this->_html .= '
'; + + $this->_html .= ''; + $this->_html .= '
'; + $this->_html .= ''; + $this->_html .= "

" . $this->l('Choose the order state when orders are import into Prestashop.') . "

"; + $this->_html .= '
'; + + //Carrier choice + + $this->_html .= $this->_displayCarrierSelects(); + $this->_html .= ''; + $this->_html .= '
'; + $this->_html .= ' + + + + '; + + $this->carrier = Configuration::get('EXPEDITOR_CARRIER'); + $carriers = Carrier::getCarriers($cookie->id_lang, false, false, false, NULL, 5); + + foreach ($carriers as $carrier) + { + $this->_html .= ''; + + //list of Carriers codes + $expeditor = new ExpeditorModule(); + $product_codes = $expeditor->product_codes; + $this->_html .= ''; + } + unset($carriers, $carrier); + + $this->_html .= '
+ '.$this->l('Carrier').''.$this->l('Carrier_code').'
_html .= ' checked="true" '; + $this->_html .= '>'.$carrier['name'].' +
'; + $this->_html .= "

" . $this->l('Choose the carrier "LaPoste", "ColiPoste" or like this.') . "

"; + $this->_html .= '
'; + + $this->_html .= ' + +
+ +
+
+ +
+ ' . $this->l('Liste Orders') . ' +
+
+
 
+
+ PrestaShop Addons + '.$this->l('This module has been developped by PrestaShop SA and can only be sold through').' addons.prestashop.com.
+ '.$this->l('Please report all bugs to').' addons@prestashop.com '.$this->l('or using our').' '.$this->l('contact form').'. +
'; + } + + private function _displayCarrierSelects() + { + $class = new ExpeditorModule(); + } + + private function _postValidation() + { + if (!isset($_POST['id_order_state_imp']) OR empty($_POST['id_order_state_imp']) OR !is_numeric($_POST['id_order_state_imp']) ) + $this->_postErrors[] = $this->l('No order state import specified'); + if (!isset($_POST['id_order_state_exp']) OR empty($_POST['id_order_state_exp']) OR !is_numeric($_POST['id_order_state_exp']) ) + $this->_postErrors[] = $this->l('No order state export specified'); + if (!isset($_POST['EXPEDITOR_MULTIPLY']) OR empty($_POST['EXPEDITOR_MULTIPLY']) OR !is_numeric($_POST['EXPEDITOR_MULTIPLY']) ) + $this->_postErrors[] = $this->l('Multiplier required (0 is allowed)'); + } + + private function _postProcess() + { + + global $cookie; + Configuration::updateValue('EXPEDITOR_MULTIPLY', $_POST['EXPEDITOR_MULTIPLY']); + $ids_carrier_conf = array(); + + if (isset($_POST['carrierbox'])) { + foreach (Tools::getValue('carrierbox') as $id) + $ids_carrier_conf[] = $id; + Configuration::updateValue('EXPEDITOR_CARRIER', implode(',', $ids_carrier_conf)); + } + else + $this->_html .= '
'.$this->l('Invalid carrier').'
'; + + $carriers = Carrier::getCarriers($cookie->id_lang, false, false, false, NULL, 5); + foreach ($carriers as $carrier) { + if (isset($_POST['product_codes_'.$carrier['id_carrier']])) + { + Configuration::updateValue('EXPEDITOR_CARRIER_CODES_'.$carrier['id_carrier'], $_POST['product_codes_'.$carrier['id_carrier']]); + } + else + $this->_html .= '
'.$this->l('Invalid carrier code').'
'; + } + unset($carriers,$carrier); + + Configuration::updateValue('EXPEDITOR_STATE_EXP', Tools::getValue('id_order_state_exp')); + Configuration::updateValue('EXPEDITOR_STATE_IMP', Tools::getValue('id_order_state_imp')); + + $this->_html .= '
ok '.$this->l('Settings updated').'
'; + } + + private function _displayDownloadFile() + { + $this->_html .= '

'; + $this->_html .= 'download ' . $this->l('Download Expeditor installation guide') . '
'; + $this->_html .= 'download ' . $this->l('Download format file for import data') . ''; + $this->_html .= '

'; + } +} diff --git a/modules/expeditor/expeditor_format.fmt b/modules/expeditor/expeditor_format.fmt new file mode 100644 index 00000000..09a17dc8 --- /dev/null +++ b/modules/expeditor/expeditor_format.fmt @@ -0,0 +1,33 @@ +[GENERAL] +DELIMITE=O +SEPARATEUR=59 +DELIMITEUR=34 +FINDELIGNE=CRLF +Unit poids=G +CN23=0 +[CHAMPS] +CodeProduit=1 +ReferenceExpedition=2 +NomDestinataire=3 +Adresse1=4 +Adresse2=5 +Adresse3=6 +CodePostal=7 +Commune=8 +CodePays=9 +Poids=10 +MontantADV=11 +HorsGabarit=12 +Telephone=13 +Mail=14 +Adresse4=15 +Civilite=16 +Prenom=17 +RaisonSociale=18 +Portable=19 +CodePorte1=20 +CodePorte2=21 +CodePointRetrait=22 +NomCommercialChargeur=23 +InstructionLivraison=24 +CodeReseauPointRetrait=25 \ No newline at end of file diff --git a/modules/expeditor/fr.php b/modules/expeditor/fr.php new file mode 100644 index 00000000..c9b78414 --- /dev/null +++ b/modules/expeditor/fr.php @@ -0,0 +1,57 @@ +adminexpeditor_6469db4ad821b30a18b6115436976da1'] = 'Liste des commandes reconnues'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_a31b14406b9514d425f953656535ab6f'] = 'Mail envoyé à'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_f0ad8720c40df052f77713bca0a3dcc3'] = 'Erreur d\'envois de mail'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_4049d979b8e6b7d78194e96c3208a5a5'] = 'Numéro de commande'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_910d956cb2615e5739ac06c7f08fba26'] = 'Numéro de suivi de colis'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_b131798fbac3b43b107f96dd8978b6db'] = 'Retour'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_ac45207391e0814770a3087346d7027e'] = 'Veuillez uploader un fichier au format CSV'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_1976d7f704de389d9fe064e08ea35b2d'] = 'Colonne'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_0a5fa53f3f20f67f98bd6c3b16df059d'] = 'est obligatoire'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_de21dc13e1ea638777fbfad49f88b332'] = 'Toutes les commandes dont l\'état de commande est'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_9f59705ebea538052fda07bec429ceb9'] = 'et dont le transporteur est'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_2345e28c9b93f368968be4781ed70f5c'] = 'Modifier cette configuration'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_37c85a61df6352af7285c307022c4413'] = 'Aucune commande dans cet état.'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_d79cf3f429596f77db95c65074663a54'] = 'Commande ID'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_ce26601dac0dea138b7295f02b7620a7'] = 'Client'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_0eede552438475bdfe820c13f24c9399'] = 'Prix total'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_f4e8b53a114e5a17d051ab84d326cae5'] = 'Frais de port'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_44749712dbec183e983dcd78a7736c41'] = 'Date'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_2d527db7ca13aa92cb04888fafd6f8dd'] = 'Poids (en gramme)'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_d6773ce9649ea971a625e4b002a3b0dc'] = 'Non mécanisable'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_a254c25adc7d10d7e9c4889484f875a5'] = 'Détail'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_fd76a4fa666d9f787ccddf12b4d723ce'] = 'cocher ici'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_4351cfebe4b61d8aa5efa1d020710005'] = 'Voir'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_32b919d18cfaca89383f6000dcc9c031'] = 'Générer'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_fc43d9938b4e1a70dc72d81fd46e97af'] = 'Importer les numéros de suivi de colis'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_9b2fbcdd66ad2f216873427c8d33965b'] = 'Sélectionner un fichier CSV généré par Expeditor'; +$_MODULE['<{expeditor}prestashop>adminexpeditor_28dd16bcceda4431550c96dfc257dd22'] = 'Importer le fichier'; +$_MODULE['<{expeditor}prestashop>expeditor_b6bfaffe7e877d7de2268f069a2c1635'] = 'Expeditor Inet'; +$_MODULE['<{expeditor}prestashop>expeditor_e977fcf4b1bac64bce126a5864db8243'] = 'Gérer vos commandes entre Prestashop et votre logiciel Expeditor Inet'; +$_MODULE['<{expeditor}prestashop>expeditor_85f280c4efbba6a4ac8efb56cdf72a76'] = 'Accès direct à l\'onglet Expeditor.'; +$_MODULE['<{expeditor}prestashop>expeditor_f4f70727dc34561dfde1a3c529b6205c'] = 'Configuration'; +$_MODULE['<{expeditor}prestashop>expeditor_f5f55eb50a2db8b48aed3da1df57f2f9'] = 'Etat de commande (export)'; +$_MODULE['<{expeditor}prestashop>expeditor_4e99088cd7cf4998e33e9a04911a4e27'] = 'Choisissez l\'état de commande dans lequel les commandes sont exportables vers Expeditor.'; +$_MODULE['<{expeditor}prestashop>expeditor_9fcd9f7f541647a9c5141af5ae32a117'] = 'Etat de commande (import)'; +$_MODULE['<{expeditor}prestashop>expeditor_3f6ee88942727779a9e6dbcd2278ec48'] = 'Choisissez l\'état de commande dans lequel les commandes sont importable dans Prestashop'; +$_MODULE['<{expeditor}prestashop>expeditor_914419aa32f04011357d3b604a86d7eb'] = 'Transporteur'; +$_MODULE['<{expeditor}prestashop>expeditor_7f4782cb0b8d90abb246c7200270ee76'] = 'Code Transporteur'; +$_MODULE['<{expeditor}prestashop>expeditor_2a12a728b67541a12a38628cf619f92c'] = 'Choisissez un transporteur comme \"LaPoste\" ou \"Coliposte\"'; +$_MODULE['<{expeditor}prestashop>expeditor_dbdc5757d8de02c789ec39fa92346dbb'] = 'Multiplicateur de poids'; +$_MODULE['<{expeditor}prestashop>expeditor_c9cc8cce247e49bae79f15173ce97354'] = 'Sauvegarder'; +$_MODULE['<{expeditor}prestashop>expeditor_76d3886cc75c923cd86c5abbfc3ed596'] = 'Liste des commandes'; +$_MODULE['<{expeditor}prestashop>expeditor_dce1bc5479ecf6e0309b1a5b96f61412'] = 'Ce module a été développé par PrestaShop SA et il peux être vendu uniquement sur sa marketplace. '; +$_MODULE['<{expeditor}prestashop>expeditor_6df4dad510fb08e2e6df44b53cb2ce29'] = 'Merci de reporter les éventuels bugs à'; +$_MODULE['<{expeditor}prestashop>expeditor_d575acff7e1035a4212d2a53d5a8c115'] = 'ou en utilisant notre'; +$_MODULE['<{expeditor}prestashop>expeditor_23372c0d3713719764670087006fc1b6'] = 'formulaire de contact'; +$_MODULE['<{expeditor}prestashop>expeditor_a420f1ef5810312744f7e6095b694014'] = 'Etat de commande (import) non spécifier'; +$_MODULE['<{expeditor}prestashop>expeditor_d5ec7e558adfae2ff670dd94b194b4c0'] = 'Etat de commande (export) non spécifier'; +$_MODULE['<{expeditor}prestashop>expeditor_3f4107eab132edc2c5235c34af47cb5d'] = 'Vous devez spécifier un multiplicateur (0 est autorisé)'; +$_MODULE['<{expeditor}prestashop>expeditor_c6b7fad9600a27a49f1089c48554539f'] = 'Choisissez au moins un transporteur '; +$_MODULE['<{expeditor}prestashop>expeditor_740e53a0ed1b643f69c4aaa8ad4ae8d2'] = 'Code de transporteur invalide'; +$_MODULE['<{expeditor}prestashop>expeditor_c888438d14855d7d96a2724ee9c306bd'] = 'Configuration mise à jour'; +$_MODULE['<{expeditor}prestashop>expeditor_dfeb1cbf4acdf06e45cdd60ccb727a04'] = 'Téléchargez le guide d\'installation d\'Expeditor'; +$_MODULE['<{expeditor}prestashop>expeditor_9b2bef340bf4cc155309585e34e32dc5'] = 'Télécharger le fichier de formatage pour l\'import des données'; diff --git a/modules/expeditor/getCsv.php b/modules/expeditor/getCsv.php new file mode 100644 index 00000000..d91ded75 --- /dev/null +++ b/modules/expeditor/getCsv.php @@ -0,0 +1,211 @@ += 0) { + Autoload::getInstance()->generateIndex(); +} + +$expeditors = ExpeditorModule::getList(); + +$downloadFile = 'expeditor_'.date('Y-m-d').'_prestashop.csv'; +ob_clean(); +header("Content-Transfer-Encoding: binary"); +header('Content-Type: application/vnd.ms-excel; charset=ISO-8859-1'); // Should work for IE & Opera +header("Content-Type: application/x-msexcel; charset=ISO-8859-1"); // Should work for the rest +header('Content-Disposition: attachment; filename="' . $downloadFile . '"'); + + +foreach ($expeditors as $expeditor) +{ + $order = new Order(intval($expeditor['id_order'])); + $customer = new Customer(intval($order->id_customer)); + $address = new Address(intval($order->id_address_delivery)); + $address_invoice = new Address(intval($order->id_address_invoice)); + $country = new Country(intval($address->id_country)); + $delivery_info = array(); + + if (Configuration::get('EXPEDITOR_CARRIER_CODES_'.intval($expeditor['id_carrier'])) == 'SO') + $delivery_info = Db::getInstance()->getRow('SELECT * FROM '._DB_PREFIX_.'socolissimo_delivery_info WHERE id_cart = '.intval($order->id_cart).' AND id_customer = '.intval($customer->id)); + + if (isset($delivery_info) && !empty($delivery_info)) + { + // Les numéros en commentaires correspondent aux emplacements dans le fichier .fmt de base. + echo utf8_decode(formatItem(trim($delivery_info['delivery_mode']))); // code produit = 1 + echo formatItem('EXP'.intval($order->id)); // ref EXP + id_order + + /*echo utf8_decode(formatItem('1')); // 1 + echo utf8_decode(formatItem('2')); // 1*/ + + if (in_array($delivery_info['delivery_mode'], array('RDV', 'DOM', 'DOS'))) + { + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $delivery_info['prname']), 0, 35))); // Nom = 3 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $delivery_info['pradress3']), 0, 35))); // Numéro de voie = 4 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $delivery_info['pradress1']), 0, 35))); // Etage, couloir = 5 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $delivery_info['pradress2']), 0, 35))); // entrée, batiment escalier = 6 + echo utf8_decode(formatItem(Tools::substr($delivery_info['przipcode'], 0, 35))); // code postale 7 + echo utf8_decode(formatItem(Tools::substr($delivery_info['prtown'], 0, 35))); // ville 8 + + /*echo utf8_decode(formatItem('3.1')); // 1 + echo utf8_decode(formatItem('4.1')); // 1 + echo utf8_decode(formatItem('5.1')); // 1 + echo utf8_decode(formatItem('6.1')); // 1 + echo utf8_decode(formatItem('7.1')); // 1 + echo utf8_decode(formatItem('8.1')); // 1*/ + + } + else + { + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $address_invoice->lastname), 0, 35))); // Nom = 3 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $address_invoice->address1), 0, 35))); // = 4 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $address_invoice->address2), 0, 35))); // = 5 + echo utf8_decode(formatItem('')); // = 6 + echo formatItem(str_replace(' ', '', $address_invoice->postcode)); // code postale 7 + echo utf8_decode(formatItem($address_invoice->city)); // ville 8 + + /*echo utf8_decode(formatItem('3.2')); // 1 + echo utf8_decode(formatItem('4.2')); // 1 + echo utf8_decode(formatItem('5.2')); // 1 + echo utf8_decode(formatItem('6.2')); // 1 + echo utf8_decode(formatItem('7.2')); // 1 + echo utf8_decode(formatItem('8.2')); // 1*/ + } + } + else + { + echo utf8_decode(formatItem(Configuration::get('EXPEDITOR_CARRIER_CODES_'.intval($expeditor['id_carrier'])))); // code produit = 1 + echo formatItem('EXP'.intval($order->id)); // ref EXP + id_order + echo utf8_decode(formatItem(trim($address->lastname))); // Nom = 3 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $address->address1), 0, 35))); // addresse1 = 4 + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $address->address2), 0, 35))); // = 5 + echo formatItem(''); // addresse3 = 6 + echo formatItem(str_replace(' ', '', $address->postcode)); // code postale 7 + echo utf8_decode(formatItem($address->city)); // ville 8*/ + + /*echo utf8_decode(formatItem('1.3')); // 1 + echo utf8_decode(formatItem('2.3')); // 1 + echo utf8_decode(formatItem('3.3')); // 1 + echo utf8_decode(formatItem('4.3')); // 1 + echo utf8_decode(formatItem('5.3')); // 1 + echo utf8_decode(formatItem('6.3')); // 1 + echo utf8_decode(formatItem('7.3')); // 1 + echo utf8_decode(formatItem('8.3')); // 1*/ + } + + echo utf8_decode(formatItem($country->iso_code)); // Code pays iso 9 + echo formatItem($expeditor['weight']); // poids 10 + echo utf8_decode(formatItem('0')); // montant 11 + echo getStandardSize($expeditor['standard_size']); // 12 + + /*echo utf8_decode(formatItem('9')); // 1 + echo utf8_decode(formatItem('10')); // 10 + echo utf8_decode(formatItem('11')); // 1 + echo utf8_decode(formatItem('12')); // 1*/ + + if (Configuration::get('EXPEDITOR_CARRIER_CODES_'.intval($expeditor['id_carrier'])) == 'SO' && $delivery_info) + { + echo utf8_decode(formatItem(($delivery_info['cephonenumber']))); // 13 + echo utf8_decode(formatItem($customer->email)); // 14 + if (in_array($delivery_info['delivery_mode'], array('RDV', 'DOM', 'DOS'))) + echo utf8_decode(formatItem(Tools::substr(str_replace(',', '', $delivery_info['pradress4']), 0, 35))); // 15 + else + echo utf8_decode(formatItem('')); // 15 + echo utf8_decode(formatItem(changeGender($customer->id_gender))); // civilité 16 + if (isset($delivery_info['prfirstname']) AND !empty($delivery_info['prfirstname'])) + echo utf8_decode(formatItem($delivery_info['prfirstname'])); // prenom = 17 + else + { + if (Configuration::get('EXPEDITOR_CARRIER_CODES_'.intval($expeditor['id_carrier'])) == 'SO') + echo utf8_decode(formatItem($address_invoice->firstname)); + else + echo utf8_decode(formatItem($customer->firstname)); // prenom = 17 Fix BUG + } + echo utf8_decode(formatItem($delivery_info['cecompanyname'])); // 18 + echo utf8_decode(formatItem(($delivery_info['cephonenumber']))); // 19 + echo utf8_decode(formatItem($delivery_info['cedoorcode1'])); // 20 + echo utf8_decode(formatItem($delivery_info['cedoorcode2'])); // 21 + + /*echo utf8_decode(formatItem('13.1')); // 1 + echo utf8_decode(formatItem('14.1')); // 1 + echo utf8_decode(formatItem('15.1')); // 1 + echo utf8_decode(formatItem('16.1')); // 1 + echo utf8_decode(formatItem('17.1')); // 1 + echo utf8_decode(formatItem('18.1')); // 1 + echo utf8_decode(formatItem('19.1')); // 1 + echo utf8_decode(formatItem('20.1')); // 20 + echo utf8_decode(formatItem('21.1')); // 1*/ + } + else + { + echo str_replace(' ', '', formatItem((($address->phone != '') ? $address->phone : $address->phone_mobile != '' ? $address->phone_mobile : ''))); // 13 + echo formatItem((($customer->email != '') ? $customer->email : '')); // 14 + echo utf8_decode(formatItem('')); // addresse4 = 15 + echo utf8_decode(formatItem(changeGender($customer->id_gender))); // civilité 16 + echo utf8_decode(formatItem($address->firstname)); // Prenom > 17 + echo utf8_decode(formatItem($address->company)); // 18 + echo formatItem($address->phone_mobile); // 19 + echo formatItem(''); // 20 + echo formatItem(''); // 21 + + /*echo utf8_decode(formatItem('13.2')); // 1 + echo utf8_decode(formatItem('14.2')); // 1 + echo utf8_decode(formatItem('15.2')); // 1 + echo utf8_decode(formatItem('16.2')); // 1 + echo utf8_decode(formatItem('17.2')); // 1 + echo utf8_decode(formatItem('18.2')); // 1 + echo utf8_decode(formatItem('19.2')); // 1 + echo utf8_decode(formatItem('20.2')); // 20 + echo utf8_decode(formatItem('21.2')); // 1*/ + } + + if ((isset($delivery_info) && !empty($delivery_info) && in_array($delivery_info['delivery_mode'], array('BPR', 'ACP', 'CIT', 'CDI', 'A2P', 'CMT', 'BDP'))) OR Configuration::get('EXPEDITOR_CARRIER_CODES_'.intval($expeditor['id_carrier'])) == 'SO' ) + echo utf8_decode(formatItem($delivery_info['prid'])); // 22 + else + echo formatItem(''); // other 22 + + echo formatItem(Configuration::get('PS_SHOP_NAME')); // 23 + $message = $order->getFirstMessage(); + if (!$message) + $message = ""; + if (isset($delivery_info) && !empty($delivery_info) && in_array($delivery_info['delivery_mode'], array('RDV', 'DOM', 'BPR', 'A2P'))) + echo isset($delivery_info['cedeliveryinformation']) ? utf8_decode(formatItem($delivery_info['cedeliveryinformation'])) : utf8_decode(formatItem($message)); // 24 + else + echo formatItem(''); // 24 + + if (isset($delivery_info) && !empty($delivery_info) && in_array($delivery_info['delivery_mode'], array('CMT', 'BDP'))) + echo utf8_decode(formatItem($delivery_info['przipcode'])); // 25 + else + echo formatItem(''); // 25 + + echo chr(13); // CR --> carriage return + echo chr(10); // LF --> new line +} + +exit(); diff --git a/modules/expeditor/getFmt.php b/modules/expeditor/getFmt.php new file mode 100644 index 00000000..6aa78d72 --- /dev/null +++ b/modules/expeditor/getFmt.php @@ -0,0 +1,18 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://addons.prestashop.com/en/content/12-terms-and-conditions-of-use +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/expeditor/logo.gif b/modules/expeditor/logo.gif new file mode 100644 index 00000000..aec92ebf Binary files /dev/null and b/modules/expeditor/logo.gif differ diff --git a/modules/expeditor/logo.png b/modules/expeditor/logo.png new file mode 100644 index 00000000..bb4e02c4 Binary files /dev/null and b/modules/expeditor/logo.png differ diff --git a/modules/ganalytics/config_fr.xml b/modules/ganalytics/config_fr.xml index 1032eaf6..b419f1f6 100644 --- a/modules/ganalytics/config_fr.xml +++ b/modules/ganalytics/config_fr.xml @@ -3,10 +3,10 @@ ganalytics - + - + 1 1 diff --git a/modules/ganalytics/ganalytics.php b/modules/ganalytics/ganalytics.php index 1e56d7a5..50c5cee5 100644 --- a/modules/ganalytics/ganalytics.php +++ b/modules/ganalytics/ganalytics.php @@ -527,8 +527,8 @@ class Ganalytics extends Module { $ga_product = array( 'id' => $product_id, - 'name' => Tools::jsonEncode($product['name']), - 'category' => Tools::jsonEncode($product['category']), + 'name' => Tools::jsonEncode(isset($product['name']) ? $product['name'] : $product['product_name']), + 'category' => Tools::jsonEncode(isset($product['category']) ? $product['category'] : CMSCategory::getNameStatic($product['id_category_default'])), 'brand' => isset($product['manufacturer_name']) ? Tools::jsonEncode($product['manufacturer_name']) : '', 'variant' => Tools::jsonEncode($variant), 'type' => $product_type, diff --git a/modules/homeslider/images/3c2a58a013a0bfe94cb5f7f418185ad3db2a56e7_slider-toutpratique2.png b/modules/homeslider/images/3c2a58a013a0bfe94cb5f7f418185ad3db2a56e7_slider-toutpratique2.png new file mode 100644 index 00000000..702b7ce7 Binary files /dev/null and b/modules/homeslider/images/3c2a58a013a0bfe94cb5f7f418185ad3db2a56e7_slider-toutpratique2.png differ diff --git a/modules/homeslider/images/7a3ffb760367b85fafcaf41a5270425c2173aa41_slider-toutpratique2.jpg b/modules/homeslider/images/7a3ffb760367b85fafcaf41a5270425c2173aa41_slider-toutpratique2.jpg new file mode 100644 index 00000000..25146259 Binary files /dev/null and b/modules/homeslider/images/7a3ffb760367b85fafcaf41a5270425c2173aa41_slider-toutpratique2.jpg differ diff --git a/modules/homeslider/images/94937132c435679d2ca6a474a7903e700bfce126_slider-toutpratique2.jpg b/modules/homeslider/images/94937132c435679d2ca6a474a7903e700bfce126_slider-toutpratique2.jpg new file mode 100644 index 00000000..57177987 Binary files /dev/null and b/modules/homeslider/images/94937132c435679d2ca6a474a7903e700bfce126_slider-toutpratique2.jpg differ diff --git a/modules/mailalerts/CHANGELOG.txt b/modules/mailalerts/CHANGELOG.txt new file mode 100644 index 00000000..6bac4651 --- /dev/null +++ b/modules/mailalerts/CHANGELOG.txt @@ -0,0 +1,7 @@ +2014-04-17 11:40:47 +0200 Bug fix (PS 1.5): ps_version_compliancy removed +2014-04-10 17:02:35 +0200 [-] MO : Mailalerts new module version +2014-04-09 12:18:55 +0200 // mailalerts new module version +2014-04-02 10:43:52 +0200 // mailalerts : ++version +2014-04-02 10:43:29 +0200 [-] MO : mailalerts : old delimitor backward compatibility +2014-03-24 18:26:32 +0100 / MO mailalerts : ps_versions_compliancy added +2014-03-21 10:55:09 +0100 Initial commit diff --git a/modules/mailalerts/MailAlert.php b/modules/mailalerts/MailAlert.php new file mode 100644 index 00000000..809082fc --- /dev/null +++ b/modules/mailalerts/MailAlert.php @@ -0,0 +1,290 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +class MailAlert extends ObjectModel +{ + public $id_customer; + + public $customer_email; + + public $id_product; + + public $id_product_attribute; + + public $id_shop; + + public $id_lang; + + /** + * @see ObjectModel::$definition + */ + public static $definition = array( + 'table' => 'mailalert_customer_oos', + 'primary' => 'id_customer', + 'fields' => array( + 'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'customer_email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true), + 'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'id_product_attribute' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true) + ), + ); + + public static function customerHasNotification($id_customer, $id_product, $id_product_attribute, $id_shop = null, $id_lang = null, $guest_email = '') + { + if ($id_shop == null) + $id_shop = Context::getContext()->shop->id; + + if ($id_lang == null) + $id_lang = Context::getContext()->language->id; + + $customer = new Customer($id_customer); + $customer_email = $customer->email; + $guest_email = pSQL($guest_email); + + $id_customer = (int)$id_customer; + $customer_email = pSQL($customer_email); + $where = $id_customer == 0 ? "customer_email = '$guest_email'" : "(id_customer=$id_customer OR customer_email='$customer_email')"; + $sql = ' + SELECT * + FROM `'._DB_PREFIX_.self::$definition['table'].'` + WHERE '.$where.' + AND `id_product` = '.(int)$id_product.' + AND `id_product_attribute` = '.(int)$id_product_attribute.' + AND `id_shop` = '.(int)$id_shop; + + return count(Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql)); + } + + public static function deleteAlert($id_customer, $customer_email, $id_product, $id_product_attribute, $id_shop = null) + { + $sql = ' + DELETE FROM `'._DB_PREFIX_.self::$definition['table'].'` + WHERE '.(($id_customer > 0) ? '(`customer_email` = \''.pSQL($customer_email).'\' OR `id_customer` = '.(int)$id_customer.')' : + '`customer_email` = \''.pSQL($customer_email).'\''). + ' AND `id_product` = '.(int)$id_product.' + AND `id_product_attribute` = '.(int)$id_product_attribute.' + AND `id_shop` = '.($id_shop != null ? (int)$id_shop :(int)Context::getContext()->shop->id); + + return Db::getInstance()->execute($sql); + } + + /* + * Get objects that will be viewed on "My alerts" page + */ + public static function getMailAlerts($id_customer, $id_lang, Shop $shop = null) + { + if (!Validate::isUnsignedId($id_customer) || !Validate::isUnsignedId($id_lang)) + die (Tools::displayError()); + + if (!$shop) + $shop = Context::getContext()->shop; + + $customer = new Customer($id_customer); + $products = MailAlert::getProducts($customer, $id_lang); + $products_number = count($products); + + if (empty($products) === true || !$products_number) + return array(); + + for ($i = 0; $i < $products_number; ++$i) + { + $obj = new Product((int)$products[$i]['id_product'], false, (int)$id_lang); + if (!Validate::isLoadedObject($obj)) + continue; + + if (isset($products[$i]['id_product_attribute']) && + Validate::isUnsignedInt($products[$i]['id_product_attribute'])) + { + $attributes = self::getProductAttributeCombination($products[$i]['id_product_attribute'], $id_lang); + $products[$i]['attributes_small'] = ''; + + if ($attributes) + { + foreach ($attributes as $row) + $products[$i]['attributes_small'] .= $row['attribute_name'].', '; + } + + $products[$i]['attributes_small'] = rtrim($products[$i]['attributes_small'], ', '); + $products[$i]['id_shop'] = $shop->id; + + /* Get cover */ + $attrgrps = $obj->getAttributesGroups((int)$id_lang); + foreach ($attrgrps as $attrgrp) + if ($attrgrp['id_product_attribute'] == (int)$products[$i]['id_product_attribute'] + && $images = Product::_getAttributeImageAssociations((int)$attrgrp['id_product_attribute'])) + { + $products[$i]['cover'] = $obj->id.'-'.array_pop($images); + break; + } + } + + if (!isset($products[$i]['cover']) || !$products[$i]['cover']) + { + $images = $obj->getImages((int)$id_lang); + foreach ($images as $image) + if ($image['cover']) + { + $products[$i]['cover'] = $obj->id.'-'.$image['id_image']; + break; + } + } + + if (!isset($products[$i]['cover'])) + $products[$i]['cover'] = Language::getIsoById($id_lang).'-default'; + + $products[$i]['link'] = $obj->getLink(); + $products[$i]['link_rewrite'] = $obj->link_rewrite; + } + + return ($products); + } + + public static function sendCustomerAlert($id_product, $id_product_attribute) + { + $link = new Link(); + $context = Context::getContext()->cloneContext(); + $customers = self::getCustomers($id_product, $id_product_attribute); + + foreach ($customers as $customer) + { + $id_shop = (int)$customer['id_shop']; + $id_lang = (int)$customer['id_lang']; + $context->shop->id = $id_shop; + $context->language->id = $id_lang; + + $product = new Product((int)$id_product, false, $id_lang, $id_shop); + $product_link = $link->getProductLink($product, $product->link_rewrite, null, null, $id_lang, $id_shop); + $template_vars = array( + '{product}' => (is_array($product->name) ? $product->name[$id_lang] : $product->name), + '{product_link}' => $product_link + ); + + if ($customer['id_customer']) + { + $customer = new Customer((int)$customer['id_customer']); + $customer_email = $customer->email; + $customer_id = (int)$customer->id; + } + else + { + $customer_id = 0; + $customer_email = $customer['customer_email']; + } + + $iso = Language::getIsoById($id_lang); + + if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/customer_qty.txt') && + file_exists(dirname(__FILE__).'/mails/'.$iso.'/customer_qty.html')) + Mail::Send( + $id_lang, + 'customer_qty', + Mail::l('Product available', $id_lang), + $template_vars, + (string)$customer_email, + null, + (string)Configuration::get('PS_SHOP_EMAIL', null, null, $id_shop), + (string)Configuration::get('PS_SHOP_NAME', null, null, $id_shop), + null, + null, + dirname(__FILE__).'/mails/', + false, + $id_shop + ); + + Hook::exec( + 'actionModuleMailAlertSendCustomer', + array('product' => (is_array($product->name) ? $product->name[$id_lang] : $product->name), + 'link' => $product_link, + 'customer' => $customer, + 'product_obj' => $product) + ); + + self::deleteAlert((int)$customer_id, (string)$customer_email, (int)$id_product, (int)$id_product_attribute, $id_shop); + } + } + + /* + * Generate correctly the address for an email + */ + public static function getFormatedAddress(Address $address, $line_sep, $fields_style = array()) + { + return AddressFormat::generateAddress($address, array('avoid' => array()), $line_sep, ' ', $fields_style); + } + + /* + * Get products according to alerts + */ + public static function getProducts($customer, $id_lang) + { + $list_shop_ids = Shop::getContextListShopID(false); + + $sql = ' + SELECT ma.`id_product`, p.`quantity` AS product_quantity, pl.`name`, ma.`id_product_attribute` + FROM `'._DB_PREFIX_.self::$definition['table'].'` ma + JOIN `'._DB_PREFIX_.'product` p ON (p.`id_product` = ma.`id_product`) + '.Shop::addSqlAssociation('product', 'p').' + LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = p.`id_product` AND pl.id_shop IN ('.implode(', ', $list_shop_ids).')) + WHERE product_shop.`active` = 1 + AND (ma.`id_customer` = '.(int)$customer->id.' OR ma.`customer_email` = \''.pSQL($customer->email).'\') + AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestriction(false, 'ma'); + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } + + /* + * Get product combinations + */ + public static function getProductAttributeCombination($id_product_attribute, $id_lang) + { + $sql = ' + SELECT al.`name` AS attribute_name + FROM `'._DB_PREFIX_.'product_attribute_combination` pac + LEFT JOIN `'._DB_PREFIX_.'attribute` a ON (a.`id_attribute` = pac.`id_attribute`) + LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON (ag.`id_attribute_group` = a.`id_attribute_group`) + LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute` AND al.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$id_lang.') + LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (pac.`id_product_attribute` = pa.`id_product_attribute`) + '.Shop::addSqlAssociation('product_attribute', 'pa').' + WHERE pac.`id_product_attribute` = '.(int)$id_product_attribute; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } + + /* + * Get customers waiting for alert on the specified product/product attribute + */ + public static function getCustomers($id_product, $id_product_attribute) + { + $sql = ' + SELECT id_customer, customer_email, id_shop, id_lang + FROM `'._DB_PREFIX_.self::$definition['table'].'` + WHERE `id_product` = '.(int)$id_product.' AND `id_product_attribute` = '.(int)$id_product_attribute; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); + } +} diff --git a/modules/mailalerts/Readme.md b/modules/mailalerts/Readme.md new file mode 100644 index 00000000..e2ccf552 --- /dev/null +++ b/modules/mailalerts/Readme.md @@ -0,0 +1,37 @@ +# Mail alerts + +## About + +Sends e-mail notifications to customers and merchants. + +## Contributing + +PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. + +### Requirements + +Contributors **must** follow the following rules: + +* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. +* Do not update the module's version number. +* Follow [the coding standards][1]. + +### Process in details + +Contributors wishing to edit a module's files should follow the following process: + +1. Create your GitHub account, if you do not have one already. +2. Fork the mailalerts project to your GitHub account. +3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. +4. Create a branch in your local clone of the module for your changes. +5. Change the files in your branch. Be sure to follow [the coding standards][1]! +6. Push your changed branch to your fork in your GitHub account. +7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. +8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. + +That's it: you have contributed to this open-source project! Congratulations! + +[1]: http://doc.prestashop.com/display/PS16/Coding+Standards +[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message +[3]: https://help.github.com/articles/using-pull-requests + diff --git a/modules/mailalerts/config.xml b/modules/mailalerts/config.xml new file mode 100644 index 00000000..0a458217 --- /dev/null +++ b/modules/mailalerts/config.xml @@ -0,0 +1,13 @@ + + + mailalerts + + + + + + Are you sure you want to delete all customer notifications? + 1 + 0 + + diff --git a/modules/mailalerts/config_fr.xml b/modules/mailalerts/config_fr.xml new file mode 100644 index 00000000..c5481201 --- /dev/null +++ b/modules/mailalerts/config_fr.xml @@ -0,0 +1,13 @@ + + + mailalerts + + + + + + + 1 + 0 + + \ No newline at end of file diff --git a/modules/mailalerts/controllers/front/account.php b/modules/mailalerts/controllers/front/account.php new file mode 100644 index 00000000..f4cbb039 --- /dev/null +++ b/modules/mailalerts/controllers/front/account.php @@ -0,0 +1,57 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +/** + * @since 1.5.0 + */ +class MailalertsAccountModuleFrontController extends ModuleFrontController +{ + public function init() + { + parent::init(); + + require_once($this->module->getLocalPath().'MailAlert.php'); + } + + public function initContent() + { + parent::initContent(); + + if (!Context::getContext()->customer->isLogged()) + Tools::redirect('index.php?controller=authentication&redirect=module&module=mailalerts&action=account'); + + if (Context::getContext()->customer->id) + { + $this->context->smarty->assign('id_customer', Context::getContext()->customer->id); + $this->context->smarty->assign( + 'mailAlerts', + MailAlert::getMailAlerts((int)Context::getContext()->customer->id, (int)Context::getContext()->language->id) + ); + + $this->setTemplate('mailalerts-account.tpl'); + } + } +} \ No newline at end of file diff --git a/modules/mailalerts/controllers/front/actions.php b/modules/mailalerts/controllers/front/actions.php new file mode 100644 index 00000000..381344e1 --- /dev/null +++ b/modules/mailalerts/controllers/front/actions.php @@ -0,0 +1,148 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +/** + * @since 1.5.0 + */ +class MailalertsActionsModuleFrontController extends ModuleFrontController +{ + /** + * @var int + */ + public $id_product; + public $id_product_attribute; + + public function init() + { + parent::init(); + + require_once($this->module->getLocalPath().'MailAlert.php'); + $this->id_product = (int)Tools::getValue('id_product'); + $this->id_product_attribute = (int)Tools::getValue('id_product_attribute'); + } + + public function postProcess() + { + if (Tools::getValue('process') == 'remove') + $this->processRemove(); + else if (Tools::getValue('process') == 'add') + $this->processAdd(); + else if (Tools::getValue('process') == 'check') + $this->processCheck(); + } + + /** + * Remove a favorite product + */ + public function processRemove() + { + // check if product exists + $product = new Product($this->id_product); + if (!Validate::isLoadedObject($product)) + die('0'); + + $context = Context::getContext(); + if (MailAlert::deleteAlert( + (int)$context->customer->id, + (int)$context->customer->email, + (int)$product->id, + (int)$this->id_product_attribute, + (int)$context->shop->id + )) + die('0'); + + die(1); + } + + /** + * Add a favorite product + */ + public function processAdd() + { + $context = Context::getContext(); + + if ($context->customer->isLogged()) + { + $id_customer = (int)$context->customer->id; + $customer = new Customer($id_customer); + $customer_email = (string)$customer->email; + } + else + { + $customer_email = (string)Tools::getValue('customer_email'); + $customer = $context->customer->getByEmail($customer_email); + $id_customer = (isset($customer->id) && ($customer->id != null)) ? (int)$customer->id : null; + } + + $id_product = (int)Tools::getValue('id_product'); + $id_product_attribute = (int)Tools::getValue('id_product_attribute'); + $id_shop = (int)$context->shop->id; + $id_lang = (int)$context->language->id; + $product = new Product($id_product, false, $id_lang, $id_shop, $context); + + $mail_alert = MailAlert::customerHasNotification($id_customer, $id_product, $id_product_attribute, $id_shop, null, $customer_email); + + if ($mail_alert) + die('2'); + elseif (!Validate::isLoadedObject($product)) + die('0'); + + $mail_alert = new MailAlert(); + + $mail_alert->id_customer = (int)$id_customer; + $mail_alert->customer_email = (string)$customer_email; + $mail_alert->id_product = (int)$id_product; + $mail_alert->id_product_attribute = (int)$id_product_attribute; + $mail_alert->id_shop = (int)$id_shop; + $mail_alert->id_lang = (int)$id_lang; + + if ($mail_alert->add() !== false) + die('1'); + + die('0'); + } + + /** + * Add a favorite product + */ + public function processCheck() + { + if (!(int)$this->context->customer->logged) + die('0'); + + $id_customer = (int)$this->context->customer->id; + + if (!$id_product = (int)Tools::getValue('id_product')) + die('0'); + + $id_product_attribute = (int)Tools::getValue('id_product_attribute'); + + if (MailAlert::customerHasNotification((int)$id_customer, (int)$id_product, (int)$id_product_attribute, (int)$this->context->shop->id)) + die('1'); + + die('0'); + } +} \ No newline at end of file diff --git a/modules/mailalerts/controllers/front/index.php b/modules/mailalerts/controllers/front/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/controllers/front/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/controllers/index.php b/modules/mailalerts/controllers/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/controllers/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/css/index.php b/modules/mailalerts/css/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/css/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/css/mailalerts.css b/modules/mailalerts/css/mailalerts.css new file mode 100644 index 00000000..400f5f3c --- /dev/null +++ b/modules/mailalerts/css/mailalerts.css @@ -0,0 +1,47 @@ +#module-mailalerts-mailalerts-account #left_column {display:none} +#module-mailalerts-mailalerts-account #center_column {width:757px} + +#mailalerts_block_account .mailalert { + position:relative; + margin-bottom: 14px; + padding: 12px 8px; + border: 1px solid #eee; + border-radius: 3px 3px 3px 3px; +} + +.mailalert a.product_img_link { + border: 1px solid #CCCCCC; + display: block; + float: left; + margin-right: 14px; + overflow: hidden; + position: relative; +} + +.mailalert h3 { + color: #000000; + font-size: 13px; + padding: 0 0 10px; +} + +.mailalert p.product_desc { + line-height: 16px; + overflow: hidden; + padding: 0; +} + +.mailalert .remove { + position:absolute; + top:10px; + right:10px +} +.mailalert .remove .icon {cursor:pointer} + + +/* lnk fiche produit */ + +#usefull_link_block li#mailalerts_block_extra_remove { + padding-left:20px; + background:url(../img/del_alert.gif) no-repeat 0 0; + cursor: pointer; +} \ No newline at end of file diff --git a/modules/mailalerts/img/del_alert.gif b/modules/mailalerts/img/del_alert.gif new file mode 100644 index 00000000..8aea7d4f Binary files /dev/null and b/modules/mailalerts/img/del_alert.gif differ diff --git a/modules/mailalerts/img/icon-alert.png b/modules/mailalerts/img/icon-alert.png new file mode 100644 index 00000000..95e0926b Binary files /dev/null and b/modules/mailalerts/img/icon-alert.png differ diff --git a/modules/mailalerts/img/index.php b/modules/mailalerts/img/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/img/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/index.php b/modules/mailalerts/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/js/index.php b/modules/mailalerts/js/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/js/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/js/mailalerts.js b/modules/mailalerts/js/mailalerts.js new file mode 100644 index 00000000..99178dc3 --- /dev/null +++ b/modules/mailalerts/js/mailalerts.js @@ -0,0 +1,24 @@ +/** + * 2007-2015 PrestaShop + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License (AFL 3.0) + * that is bundled with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://opensource.org/licenses/afl-3.0.php + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to http://www.prestashop.com for more information. + * + * @author PrestaShop SA + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ diff --git a/modules/mailalerts/logo.gif b/modules/mailalerts/logo.gif new file mode 100644 index 00000000..8bdd3304 Binary files /dev/null and b/modules/mailalerts/logo.gif differ diff --git a/modules/mailalerts/logo.png b/modules/mailalerts/logo.png new file mode 100644 index 00000000..1a8d30fa Binary files /dev/null and b/modules/mailalerts/logo.png differ diff --git a/modules/mailalerts/mailalerts-account.php b/modules/mailalerts/mailalerts-account.php new file mode 100644 index 00000000..34958391 --- /dev/null +++ b/modules/mailalerts/mailalerts-account.php @@ -0,0 +1,68 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +/* SSL Management */ +$useSSL = true; + +include(dirname(__FILE__).'/../../config/config.inc.php'); +include(dirname(__FILE__).'/../../header.php'); +include_once(dirname(__FILE__).'/mailalerts.php'); + +// Instance of module class for translations +$module = new MailAlerts(); + +$errors = array(); + +if ($cookie->isLogged()) +{ + if (Tools::getValue('action') == 'delete') + { + $id_customer = (int)$cookie->id_customer; + if (!$id_product = (int)Tools::getValue('id_product')) + $errors[] = $module->l('You must have a product to delete an alert.', 'mailalerts-account'); + $id_product_attribute = (int)Tools::getValue('id_product_attribute'); + $customer = new Customer((int)$id_customer); + MailAlerts::deleteAlert((int)$id_customer, (string)$customer->email, (int)$id_product, (int)$id_product_attribute); + } + $this->context->smarty->assign('mailAlerts', MailAlert::getProductsAlerts((int)$cookie->id_customer, (int)$cookie->id_lang)); +} +else + $errors[] = $module->l('You must be logged in to manage your alerts.', 'mailalerts-account'); + +$this->context->smarty->assign(array( + 'id_customer' => (int)$cookie->id_customer, + 'errors' => $errors +)); + + +if (Tools::file_exists_cache(_PS_THEME_DIR_.'modules/mailalerts/myalerts.tpl')) + $smarty->display(_PS_THEME_DIR_.'modules/mailalerts/myalerts.tpl'); +elseif (Tools::file_exists_cache(dirname(__FILE__).'/myalerts.tpl')) + $smarty->display(dirname(__FILE__).'/myalerts.tpl'); +else + echo $module->l('No template found', 'mailalerts-account'); + +include(dirname(__FILE__).'/../../footer.php'); diff --git a/modules/mailalerts/mailalerts-ajax.php b/modules/mailalerts/mailalerts-ajax.php new file mode 100644 index 00000000..3f5258fb --- /dev/null +++ b/modules/mailalerts/mailalerts-ajax.php @@ -0,0 +1,32 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +require_once(dirname(__FILE__).'/../../config/config.inc.php'); +require_once(dirname(__FILE__).'/../../init.php'); + + + + diff --git a/modules/mailalerts/mailalerts-extra.php b/modules/mailalerts/mailalerts-extra.php new file mode 100644 index 00000000..f52487fb --- /dev/null +++ b/modules/mailalerts/mailalerts-extra.php @@ -0,0 +1,119 @@ +{* +* 2007-2015 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + + + +{if !$isCustomerMailAlert AND $isLogged} +
  • + {l s='Add this product to my favorites' mod='mailalerts'} +
  • +{/if} +{if $isCustomerMailAlert AND $isLogged} +
  • + {l s='Remove this product from my favorites' mod='mailalerts'} +
  • +{/if} + +
  • + {l s='Remove this product from my favorites' mod='mailalerts'} +
  • +
  • + {l s='Add this product to my favorites' mod='mailalerts'} +
  • \ No newline at end of file diff --git a/modules/mailalerts/mailalerts.php b/modules/mailalerts/mailalerts.php new file mode 100644 index 00000000..5e30f1e9 --- /dev/null +++ b/modules/mailalerts/mailalerts.php @@ -0,0 +1,1076 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +if (!defined('_CAN_LOAD_FILES_')) + exit; + +include_once(dirname(__FILE__).'/MailAlert.php'); + +class MailAlerts extends Module +{ + protected $html = ''; + + protected $merchant_mails; + protected $merchant_order; + protected $merchant_oos; + protected $customer_qty; + protected $merchant_coverage; + protected $product_coverage; + protected $order_edited; + protected $return_slip; + + const __MA_MAIL_DELIMITOR__ = "\n"; + + public function __construct() + { + $this->name = 'mailalerts'; + $this->tab = 'administration'; + $this->version = '3.6.0'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; + + $this->controllers = array('account'); + + $this->bootstrap = true; + parent::__construct(); + + if ($this->id) + $this->init(); + + $this->displayName = $this->l('Mail alerts'); + $this->description = $this->l('Sends e-mail notifications to customers and merchants.'); + $this->confirmUninstall = $this->l('Are you sure you want to delete all customer notifications?'); + } + + protected function init() + { + $this->merchant_mails = str_replace(',', self::__MA_MAIL_DELIMITOR__, (string)Configuration::get('MA_MERCHANT_MAILS')); + $this->merchant_order = (int)Configuration::get('MA_MERCHANT_ORDER'); + $this->merchant_oos = (int)Configuration::get('MA_MERCHANT_OOS'); + $this->customer_qty = (int)Configuration::get('MA_CUSTOMER_QTY'); + $this->merchant_coverage = (int)Configuration::getGlobalValue('MA_MERCHANT_COVERAGE'); + $this->product_coverage = (int)Configuration::getGlobalValue('MA_PRODUCT_COVERAGE'); + $this->order_edited = (int)Configuration::getGlobalValue('MA_ORDER_EDIT'); + $this->return_slip = (int)Configuration::getGlobalValue('MA_RETURN_SLIP'); + } + + public function install($delete_params = true) + { + if (!parent::install() || + !$this->registerHook('actionValidateOrder') || + !$this->registerHook('actionUpdateQuantity') || + !$this->registerHook('actionProductOutOfStock') || + !$this->registerHook('displayCustomerAccount') || + !$this->registerHook('displayMyAccountBlock') || + !$this->registerHook('actionProductDelete') || + !$this->registerHook('actionProductAttributeDelete') || + !$this->registerHook('actionProductAttributeUpdate') || + !$this->registerHook('actionProductCoverage') || + !$this->registerHook('actionOrderReturn') || + !$this->registerHook('actionOrderEdited') || + !$this->registerHook('displayHeader')) + return false; + + if ($delete_params) + { + Configuration::updateValue('MA_MERCHANT_ORDER', 1); + Configuration::updateValue('MA_MERCHANT_OOS', 1); + Configuration::updateValue('MA_CUSTOMER_QTY', 1); + Configuration::updateValue('MA_ORDER_EDIT', 1); + Configuration::updateValue('MA_RETURN_SLIP', 1); + Configuration::updateValue('MA_MERCHANT_MAILS', Configuration::get('PS_SHOP_EMAIL')); + Configuration::updateValue('MA_LAST_QTIES', (int)Configuration::get('PS_LAST_QTIES')); + Configuration::updateGlobalValue('MA_MERCHANT_COVERAGE', 0); + Configuration::updateGlobalValue('MA_PRODUCT_COVERAGE', 0); + + $sql = 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.MailAlert::$definition['table'].'` + ( + `id_customer` int(10) unsigned NOT NULL, + `customer_email` varchar(128) NOT NULL, + `id_product` int(10) unsigned NOT NULL, + `id_product_attribute` int(10) unsigned NOT NULL, + `id_shop` int(10) unsigned NOT NULL, + `id_lang` int(10) unsigned NOT NULL, + PRIMARY KEY (`id_customer`,`customer_email`,`id_product`,`id_product_attribute`,`id_shop`) + ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci'; + + if (!Db::getInstance()->execute($sql)) + return false; + } + + return true; + } + + public function uninstall($delete_params = true) + { + if ($delete_params) + { + Configuration::deleteByName('MA_MERCHANT_ORDER'); + Configuration::deleteByName('MA_MERCHANT_OOS'); + Configuration::deleteByName('MA_CUSTOMER_QTY'); + Configuration::deleteByName('MA_MERCHANT_MAILS'); + Configuration::deleteByName('MA_LAST_QTIES'); + Configuration::deleteByName('MA_MERCHANT_COVERAGE'); + Configuration::deleteByName('MA_PRODUCT_COVERAGE'); + Configuration::deleteByName('MA_ORDER_EDIT'); + Configuration::deleteByName('MA_RETURN_SLIP'); + + if (!Db::getInstance()->execute('DROP TABLE IF EXISTS '._DB_PREFIX_.MailAlert::$definition['table'])) + return false; + } + + return parent::uninstall(); + } + + public function reset() + { + if (!$this->uninstall(false)) + return false; + if (!$this->install(false)) + return false; + + return true; + } + + public function getContent() + { + $this->html = ''; + + $this->postProcess(); + + $this->html .= $this->renderForm(); + + return $this->html; + } + + protected function postProcess() + { + $errors = array(); + + if (Tools::isSubmit('submitMailAlert')) + { + if (!Configuration::updateValue('MA_CUSTOMER_QTY', (int)Tools::getValue('MA_CUSTOMER_QTY'))) + $errors[] = $this->l('Cannot update settings'); + } + else if (Tools::isSubmit('submitMAMerchant')) + { + $emails = (string)Tools::getValue('MA_MERCHANT_MAILS'); + + if (!$emails || empty($emails)) + $errors[] = $this->l('Please type one (or more) e-mail address'); + else + { + $emails = str_replace(',', self::__MA_MAIL_DELIMITOR__, $emails); + $emails = explode(self::__MA_MAIL_DELIMITOR__, $emails); + foreach ($emails as $k => $email) + { + $email = trim($email); + if (!empty($email) && !Validate::isEmail($email)) + { + $errors[] = $this->l('Invalid e-mail:').' '.Tools::safeOutput($email); + break; + } + elseif (!empty($email) && count($email) > 0) + $emails[$k] = $email; + else + unset($emails[$k]); + } + + $emails = implode(self::__MA_MAIL_DELIMITOR__, $emails); + + if (!Configuration::updateValue('MA_MERCHANT_MAILS', (string)$emails)) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateValue('MA_MERCHANT_ORDER', (int)Tools::getValue('MA_MERCHANT_ORDER'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateValue('MA_MERCHANT_OOS', (int)Tools::getValue('MA_MERCHANT_OOS'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateValue('MA_LAST_QTIES', (int)Tools::getValue('MA_LAST_QTIES'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateGlobalValue('MA_MERCHANT_COVERAGE', (int)Tools::getValue('MA_MERCHANT_COVERAGE'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateGlobalValue('MA_PRODUCT_COVERAGE', (int)Tools::getValue('MA_PRODUCT_COVERAGE'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateGlobalValue('MA_ORDER_EDIT', (int)Tools::getValue('MA_ORDER_EDIT'))) + $errors[] = $this->l('Cannot update settings'); + elseif (!Configuration::updateGlobalValue('MA_RETURN_SLIP', (int)Tools::getValue('MA_RETURN_SLIP'))) + $errors[] = $this->l('Cannot update settings'); + } + } + + if (count($errors) > 0) + $this->html .= $this->displayError(implode('
    ', $errors)); + else + $this->html .= $this->displayConfirmation($this->l('Settings updated successfully')); + + $this->init(); + } + + public function getAllMessages($id) + { + $messages = Db::getInstance()->executeS(' + SELECT `message` + FROM `'._DB_PREFIX_.'message` + WHERE `id_order` = '.(int)$id.' + ORDER BY `id_message` ASC'); + $result = array(); + foreach ($messages as $message) + $result[] = $message['message']; + + return implode('
    ', $result); + } + + public function hookActionValidateOrder($params) + { + if (!$this->merchant_order || empty($this->merchant_mails)) + return; + + // Getting differents vars + $context = Context::getContext(); + $id_lang = (int)$context->language->id; + $id_shop = (int)$context->shop->id; + $currency = $params['currency']; + $order = $params['order']; + $customer = $params['customer']; + $configuration = Configuration::getMultiple( + array( + 'PS_SHOP_EMAIL', + 'PS_MAIL_METHOD', + 'PS_MAIL_SERVER', + 'PS_MAIL_USER', + 'PS_MAIL_PASSWD', + 'PS_SHOP_NAME', + 'PS_MAIL_COLOR' + ), $id_lang, null, $id_shop + ); + $delivery = new Address((int)$order->id_address_delivery); + $invoice = new Address((int)$order->id_address_invoice); + $order_date_text = Tools::displayDate($order->date_add); + $carrier = new Carrier((int)$order->id_carrier); + $message = $this->getAllMessages($order->id); + + if (!$message || empty($message)) + $message = $this->l('No message'); + + $items_table = ''; + + $products = $params['order']->getProducts(); + $customized_datas = Product::getAllCustomizedDatas((int)$params['cart']->id); + Product::addCustomizationPrice($products, $customized_datas); + foreach ($products as $key => $product) + { + $unit_price = Product::getTaxCalculationMethod($customer->id) == PS_TAX_EXC ? $product['product_price'] : $product['product_price_wt']; + + $customization_text = ''; + if (isset($customized_datas[$product['product_id']][$product['product_attribute_id']])) + { + foreach ($customized_datas[$product['product_id']][$product['product_attribute_id']][$order->id_address_delivery] as $customization) + { + if (isset($customization['datas'][Product::CUSTOMIZE_TEXTFIELD])) + foreach ($customization['datas'][Product::CUSTOMIZE_TEXTFIELD] as $text) + $customization_text .= $text['name'].': '.$text['value'].'
    '; + + if (isset($customization['datas'][Product::CUSTOMIZE_FILE])) + $customization_text .= count($customization['datas'][Product::CUSTOMIZE_FILE]).' '.$this->l('image(s)').'
    '; + + $customization_text .= '---
    '; + } + if (method_exists('Tools', 'rtrimString')) + $customization_text = Tools::rtrimString($customization_text, '---
    '); + else + $customization_text = preg_replace('/---
    $/', '', $customization_text); + } + + $url = $context->link->getProductLink($product['product_id']); + $items_table .= + ' + '.$product['product_reference'].' + + '.$product['product_name'].'' + .(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '') + .(!empty($customization_text) ? '
    '.$customization_text : '') + .'
    + + '.Tools::displayPrice($unit_price, $currency, false).' + '.(int)$product['product_quantity'].' + ' + .Tools::displayPrice(($unit_price * $product['product_quantity']), $currency, false) + .' + '; + } + foreach ($params['order']->getCartRules() as $discount) + { + $items_table .= + ' + '.$this->l('Voucher code:').' '.$discount['name'].' + -'.Tools::displayPrice($discount['value'], $currency, false).' + '; + } + if ($delivery->id_state) + $delivery_state = new State((int)$delivery->id_state); + if ($invoice->id_state) + $invoice_state = new State((int)$invoice->id_state); + + if (Product::getTaxCalculationMethod($customer->id) == PS_TAX_EXC) + $total_products = $order->getTotalProductsWithoutTaxes(); + else + $total_products = $order->getTotalProductsWithTaxes(); + + $order_state = $params['orderStatus']; + + // Filling-in vars for email + $template_vars = array( + '{firstname}' => $customer->firstname, + '{lastname}' => $customer->lastname, + '{email}' => $customer->email, + '{delivery_block_txt}' => MailAlert::getFormatedAddress($delivery, "\n"), + '{invoice_block_txt}' => MailAlert::getFormatedAddress($invoice, "\n"), + '{delivery_block_html}' => MailAlert::getFormatedAddress( + $delivery, '
    ', array( + 'firstname' => '%s', + 'lastname' => '%s' + ) + ), + '{invoice_block_html}' => MailAlert::getFormatedAddress( + $invoice, '
    ', array( + 'firstname' => '%s', + 'lastname' => '%s' + ) + ), + '{delivery_company}' => $delivery->company, + '{delivery_firstname}' => $delivery->firstname, + '{delivery_lastname}' => $delivery->lastname, + '{delivery_address1}' => $delivery->address1, + '{delivery_address2}' => $delivery->address2, + '{delivery_city}' => $delivery->city, + '{delivery_postal_code}' => $delivery->postcode, + '{delivery_country}' => $delivery->country, + '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', + '{delivery_phone}' => $delivery->phone ? $delivery->phone : $delivery->phone_mobile, + '{delivery_other}' => $delivery->other, + '{invoice_company}' => $invoice->company, + '{invoice_firstname}' => $invoice->firstname, + '{invoice_lastname}' => $invoice->lastname, + '{invoice_address2}' => $invoice->address2, + '{invoice_address1}' => $invoice->address1, + '{invoice_city}' => $invoice->city, + '{invoice_postal_code}' => $invoice->postcode, + '{invoice_country}' => $invoice->country, + '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', + '{invoice_phone}' => $invoice->phone ? $invoice->phone : $invoice->phone_mobile, + '{invoice_other}' => $invoice->other, + '{order_name}' => $order->reference, + '{order_status}' => $order_state->name, + '{shop_name}' => $configuration['PS_SHOP_NAME'], + '{date}' => $order_date_text, + '{carrier}' => (($carrier->name == '0') ? $configuration['PS_SHOP_NAME'] : $carrier->name), + '{payment}' => Tools::substr($order->payment, 0, 32), + '{items}' => $items_table, + '{total_paid}' => Tools::displayPrice($order->total_paid, $currency), + '{total_products}' => Tools::displayPrice($total_products, $currency), + '{total_discounts}' => Tools::displayPrice($order->total_discounts, $currency), + '{total_shipping}' => Tools::displayPrice($order->total_shipping, $currency), + '{total_tax_paid}' => Tools::displayPrice( + ($order->total_products_wt - $order->total_products) + ($order->total_shipping_tax_incl - $order->total_shipping_tax_excl), + $currency, + false + ), + '{total_wrapping}' => Tools::displayPrice($order->total_wrapping, $currency), + '{currency}' => $currency->sign, + '{gift}' => (bool)$order->gift, + '{gift_message}' => $order->gift_message, + '{message}' => $message + ); + + // Shop iso + $iso = Language::getIsoById((int)Configuration::get('PS_LANG_DEFAULT')); + + // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients + $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); + foreach ($merchant_mails as $merchant_mail) + { + // Default language + $mail_id_lang = $id_lang; + $mail_iso = $iso; + + // Use the merchant lang if he exists as an employee + $results = Db::getInstance()->executeS(' + SELECT `id_lang` FROM `'._DB_PREFIX_.'employee` + WHERE `email` = \''.pSQL($merchant_mail).'\' + '); + if ($results) + { + $user_iso = Language::getIsoById((int)$results[0]['id_lang']); + if ($user_iso) + { + $mail_id_lang = (int)$results[0]['id_lang']; + $mail_iso = $user_iso; + } + } + + $dir_mail = false; + if (file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.txt') && + file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/new_order.html')) + $dir_mail = dirname(__FILE__).'/mails/'; + + if (file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.txt') && + file_exists(_PS_MAIL_DIR_.$mail_iso.'/new_order.html')) + $dir_mail = _PS_MAIL_DIR_; + + if ($dir_mail) + Mail::Send( + $mail_id_lang, + 'new_order', + sprintf(Mail::l('New order : #%d - %s', $mail_id_lang), $order->id, $order->reference), + $template_vars, + $merchant_mail, + null, + $configuration['PS_SHOP_EMAIL'], + $configuration['PS_SHOP_NAME'], + null, + null, + $dir_mail, + null, + $id_shop + ); + } + } + + public function hookActionProductOutOfStock($params) + { + if (!$this->customer_qty || + !Configuration::get('PS_STOCK_MANAGEMENT') || + Product::isAvailableWhenOutOfStock($params['product']->out_of_stock)) + return; + + $context = Context::getContext(); + $id_product = (int)$params['product']->id; + $id_product_attribute = 0; + $id_customer = (int)$context->customer->id; + + if ((int)$context->customer->id <= 0) + $this->context->smarty->assign('email', 1); + elseif (MailAlert::customerHasNotification($id_customer, $id_product, $id_product_attribute, (int)$context->shop->id)) + return; + + $this->context->smarty->assign( + array( + 'id_product' => $id_product, + 'id_product_attribute' => $id_product_attribute + ) + ); + + return $this->display(__FILE__, 'product.tpl'); + } + + public function hookActionUpdateQuantity($params) + { + $id_product = (int)$params['id_product']; + $id_product_attribute = (int)$params['id_product_attribute']; + + $quantity = (int)$params['quantity']; + $context = Context::getContext(); + $id_shop = (int)$context->shop->id; + $id_lang = (int)$context->language->id; + $product = new Product($id_product, false, $id_lang, $id_shop, $context); + $product_has_attributes = $product->hasAttributes(); + $configuration = Configuration::getMultiple( + array( + 'MA_LAST_QTIES', + 'PS_STOCK_MANAGEMENT', + 'PS_SHOP_EMAIL', + 'PS_SHOP_NAME' + ), null, null, $id_shop + ); + $ma_last_qties = (int)$configuration['MA_LAST_QTIES']; + + $check_oos = ($product_has_attributes && $id_product_attribute) || (!$product_has_attributes && !$id_product_attribute); + + if ($check_oos && + $product->active == 1 && + (int)$quantity <= $ma_last_qties && + !(!$this->merchant_oos || empty($this->merchant_mails)) && + $configuration['PS_STOCK_MANAGEMENT']) + { + $iso = Language::getIsoById($id_lang); + $product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang); + $template_vars = array( + '{qty}' => $quantity, + '{last_qty}' => $ma_last_qties, + '{product}' => $product_name + ); + + // Do not send mail if multiples product are created / imported. + if (!defined('PS_MASS_PRODUCT_CREATION') && + file_exists(dirname(__FILE__).'/mails/'.$iso.'/productoutofstock.txt') && + file_exists(dirname(__FILE__).'/mails/'.$iso.'/productoutofstock.html')) + { + // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients + $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); + foreach ($merchant_mails as $merchant_mail) + { + Mail::Send( + $id_lang, + 'productoutofstock', + Mail::l('Product out of stock', $id_lang), + $template_vars, + $merchant_mail, + null, + (string)$configuration['PS_SHOP_EMAIL'], + (string)$configuration['PS_SHOP_NAME'], + null, + null, + dirname(__FILE__).'/mails/', + false, + $id_shop + ); + } + } + } + + if ($this->customer_qty && $quantity > 0) + MailAlert::sendCustomerAlert((int)$product->id, (int)$params['id_product_attribute']); + } + + public function hookActionProductAttributeUpdate($params) + { + $sql = ' + SELECT `id_product`, `quantity` + FROM `'._DB_PREFIX_.'stock_available` + WHERE `id_product_attribute` = '.(int)$params['id_product_attribute']; + + $result = Db::getInstance()->getRow($sql); + + if ($this->customer_qty && $result['quantity'] > 0) + MailAlert::sendCustomerAlert((int)$result['id_product'], (int)$params['id_product_attribute']); + } + + public function hookDisplayCustomerAccount() + { + return $this->customer_qty ? $this->display(__FILE__, 'my-account.tpl') : null; + } + + public function hookDisplayMyAccountBlock($params) + { + return $this->hookDisplayCustomerAccount($params); + } + + public function hookActionProductDelete($params) + { + $sql = ' + DELETE FROM `'._DB_PREFIX_.MailAlert::$definition['table'].'` + WHERE `id_product` = '.(int)$params['product']->id; + + Db::getInstance()->execute($sql); + } + + public function hookActionAttributeDelete($params) + { + if ($params['deleteAllAttributes']) + $sql = ' + DELETE FROM `'._DB_PREFIX_.MailAlert::$definition['table'].'` + WHERE `id_product` = '.(int)$params['id_product']; + else + $sql = ' + DELETE FROM `'._DB_PREFIX_.MailAlert::$definition['table'].'` + WHERE `id_product_attribute` = '.(int)$params['id_product_attribute'].' + AND `id_product` = '.(int)$params['id_product']; + + Db::getInstance()->execute($sql); + } + + public function hookActionProductCoverage($params) + { + // if not advanced stock management, nothing to do + if (!Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT')) + return; + + // retrieves informations + $id_product = (int)$params['id_product']; + $id_product_attribute = (int)$params['id_product_attribute']; + $warehouse = $params['warehouse']; + $product = new Product($id_product); + + if (!Validate::isLoadedObject($product)) + return; + + if (!$product->advanced_stock_management) + return; + + // sets warehouse id to get the coverage + if (!Validate::isLoadedObject($warehouse)) + $id_warehouse = 0; + else + $id_warehouse = (int)$warehouse->id; + + // coverage of the product + $warning_coverage = (int)Configuration::getGlobalValue('MA_PRODUCT_COVERAGE'); + + $coverage = StockManagerFactory::getManager()->getProductCoverage($id_product, $id_product_attribute, $warning_coverage, $id_warehouse); + + // if we need to send a notification + if ($product->active == 1 && + ($coverage < $warning_coverage) && !empty($this->merchant_mails) && + Configuration::getGlobalValue('MA_MERCHANT_COVERAGE')) + { + $context = Context::getContext(); + $id_lang = (int)$context->language->id; + $id_shop = (int)$context->shop->id; + $iso = Language::getIsoById($id_lang); + $product_name = Product::getProductName($id_product, $id_product_attribute, $id_lang); + $template_vars = array( + '{current_coverage}' => $coverage, + '{warning_coverage}' => $warning_coverage, + '{product}' => pSQL($product_name) + ); + + if (file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.txt') && + file_exists(dirname(__FILE__).'/mails/'.$iso.'/productcoverage.html')) + { + // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients + $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); + foreach ($merchant_mails as $merchant_mail) + { + Mail::Send( + $id_lang, + 'productcoverage', + Mail::l('Stock coverage', $id_lang), + $template_vars, + $merchant_mail, + null, + (string)Configuration::get('PS_SHOP_EMAIL'), + (string)Configuration::get('PS_SHOP_NAME'), + null, + null, + dirname(__FILE__).'/mails/', + null, + $id_shop + ); + } + } + } + } + + public function hookDisplayHeader() + { + $this->page_name = Dispatcher::getInstance()->getController(); + if (in_array($this->page_name, array('product', 'account'))) + { + $this->context->controller->addJS($this->_path.'js/mailalerts.js'); + $this->context->controller->addCSS($this->_path.'css/mailalerts.css', 'all'); + } + } + + /** + * Send a mail when a customer return an order. + * + * @param array $params Hook params. + */ + public function hookActionOrderReturn($params) + { + if (!$this->return_slip || empty($this->return_slip)) + return; + + $context = Context::getContext(); + $id_lang = (int)$context->language->id; + $id_shop = (int)$context->shop->id; + $configuration = Configuration::getMultiple( + array( + 'PS_SHOP_EMAIL', + 'PS_MAIL_METHOD', + 'PS_MAIL_SERVER', + 'PS_MAIL_USER', + 'PS_MAIL_PASSWD', + 'PS_SHOP_NAME', + 'PS_MAIL_COLOR' + ), $id_lang, null, $id_shop + ); + + // Shop iso + $iso = Language::getIsoById((int)Configuration::get('PS_LANG_DEFAULT')); + + $order = new Order((int)$params['orderReturn']->id_order); + $customer = new Customer((int)$params['orderReturn']->id_customer); + $delivery = new Address((int)$order->id_address_delivery); + $invoice = new Address((int)$order->id_address_invoice); + $order_date_text = Tools::displayDate($order->date_add); + if ($delivery->id_state) + $delivery_state = new State((int)$delivery->id_state); + if ($invoice->id_state) + $invoice_state = new State((int)$invoice->id_state); + + $order_return_products = OrderReturn::getOrdersReturnProducts($params['orderReturn']->id, $order); + + $items_table = ''; + foreach ($order_return_products as $key => $product) + { + $url = $context->link->getProductLink($product['product_id']); + $items_table .= + ' + '.$product['product_reference'].' + + '.$product['product_name'].' + + + '.(int)$product['product_quantity'].' + '; + } + + $template_vars = array( + '{firstname}' => $customer->firstname, + '{lastname}' => $customer->lastname, + '{email}' => $customer->email, + '{delivery_block_txt}' => MailAlert::getFormatedAddress($delivery, "\n"), + '{invoice_block_txt}' => MailAlert::getFormatedAddress($invoice, "\n"), + '{delivery_block_html}' => MailAlert::getFormatedAddress( + $delivery, '
    ', array( + 'firstname' => '%s', + 'lastname' => '%s' + ) + ), + '{invoice_block_html}' => MailAlert::getFormatedAddress( + $invoice, '
    ', array( + 'firstname' => '%s', + 'lastname' => '%s' + ) + ), + '{delivery_company}' => $delivery->company, + '{delivery_firstname}' => $delivery->firstname, + '{delivery_lastname}' => $delivery->lastname, + '{delivery_address1}' => $delivery->address1, + '{delivery_address2}' => $delivery->address2, + '{delivery_city}' => $delivery->city, + '{delivery_postal_code}' => $delivery->postcode, + '{delivery_country}' => $delivery->country, + '{delivery_state}' => $delivery->id_state ? $delivery_state->name : '', + '{delivery_phone}' => $delivery->phone ? $delivery->phone : $delivery->phone_mobile, + '{delivery_other}' => $delivery->other, + '{invoice_company}' => $invoice->company, + '{invoice_firstname}' => $invoice->firstname, + '{invoice_lastname}' => $invoice->lastname, + '{invoice_address2}' => $invoice->address2, + '{invoice_address1}' => $invoice->address1, + '{invoice_city}' => $invoice->city, + '{invoice_postal_code}' => $invoice->postcode, + '{invoice_country}' => $invoice->country, + '{invoice_state}' => $invoice->id_state ? $invoice_state->name : '', + '{invoice_phone}' => $invoice->phone ? $invoice->phone : $invoice->phone_mobile, + '{invoice_other}' => $invoice->other, + '{order_name}' => $order->reference, + '{shop_name}' => $configuration['PS_SHOP_NAME'], + '{date}' => $order_date_text, + '{items}' => $items_table, + '{message}' => Tools::purifyHTML($params['orderReturn']->question), + ); + + // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients + $merchant_mails = explode(self::__MA_MAIL_DELIMITOR__, $this->merchant_mails); + foreach ($merchant_mails as $merchant_mail) + { + // Default language + $mail_id_lang = $id_lang; + $mail_iso = $iso; + + // Use the merchant lang if he exists as an employee + $results = Db::getInstance()->executeS(' + SELECT `id_lang` FROM `'._DB_PREFIX_.'employee` + WHERE `email` = \''.pSQL($merchant_mail).'\' + '); + if ($results) + { + $user_iso = Language::getIsoById((int)$results[0]['id_lang']); + if ($user_iso) + { + $mail_id_lang = (int)$results[0]['id_lang']; + $mail_iso = $user_iso; + } + } + + $dir_mail = false; + if (file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/return_slip.txt') && + file_exists(dirname(__FILE__).'/mails/'.$mail_iso.'/return_slip.html')) + $dir_mail = dirname(__FILE__).'/mails/'; + + if (file_exists(_PS_MAIL_DIR_.$mail_iso.'/return_slip.txt') && + file_exists(_PS_MAIL_DIR_.$mail_iso.'/return_slip.html')) + $dir_mail = _PS_MAIL_DIR_; + + if ($dir_mail) + Mail::Send( + $mail_id_lang, + 'return_slip', + sprintf(Mail::l('New return from order #%d - %s', $mail_id_lang), $order->id, $order->reference), + $template_vars, + $merchant_mail, + null, + $configuration['PS_SHOP_EMAIL'], + $configuration['PS_SHOP_NAME'], + null, + null, + $dir_mail, + null, + $id_shop + ); + } + } + + + /** + * Send a mail when an order is modified. + * + * @param array $params Hook params. + */ + public function hookActionOrderEdited($params) + { + if (!$this->order_edited || empty($this->order_edited)) + return; + + $order = $params['order']; + + $data = array( + '{lastname}' => $order->getCustomer()->lastname, + '{firstname}' => $order->getCustomer()->firstname, + '{id_order}' => (int)$order->id, + '{order_name}' => $order->getUniqReference() + ); + + Mail::Send( + (int)$order->id_lang, + 'order_changed', + Mail::l('Your order has been changed', (int)$order->id_lang), + $data, + $order->getCustomer()->email, + $order->getCustomer()->firstname.' '.$order->getCustomer()->lastname, + null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop); + } + + public function renderForm() + { + $fields_form_1 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Customer notifications'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('Product availability'), + 'name' => 'MA_CUSTOMER_QTY', + 'desc' => $this->l('Gives the customer the option of receiving a notification when an out-of-stock product is available again.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('Order edit'), + 'name' => 'MA_ORDER_EDIT', + 'desc' => $this->l('Send a notification to the customer when an order is edited.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitMailAlert', + ) + ), + ); + + $fields_form_2 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Merchant notifications'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('New order'), + 'name' => 'MA_MERCHANT_ORDER', + 'desc' => $this->l('Receive a notification when an order is placed.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('Out of stock'), + 'name' => 'MA_MERCHANT_OOS', + 'desc' => $this->l('Receive a notification if the available quantity of a product is below the following threshold.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'text', + 'label' => $this->l('Threshold'), + 'name' => 'MA_LAST_QTIES', + 'class' => 'fixed-width-xs', + 'desc' => $this->l('Quantity for which a product is considered out of stock.'), + ), + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('Coverage warning'), + 'name' => 'MA_MERCHANT_COVERAGE', + 'desc' => $this->l('Receive a notification when a product has insufficient coverage.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'text', + 'label' => $this->l('Coverage'), + 'name' => 'MA_PRODUCT_COVERAGE', + 'class' => 'fixed-width-xs', + 'desc' => $this->l('Stock coverage, in days. Also, the stock coverage of a given product will be calculated based on this number.'), + ), + array( + 'type' => 'switch', + 'is_bool' => true, //retro compat 1.5 + 'label' => $this->l('Returns'), + 'name' => 'MA_RETURN_SLIP', + 'desc' => $this->l('Receive a notification when a customer requests a merchandise return.'), + 'values' => array( + array( + 'id' => 'active_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'active_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ), + ), + array( + 'type' => 'textarea', + 'cols' => 36, + 'rows' => 4, + 'label' => $this->l('E-mail addresses'), + 'name' => 'MA_MERCHANT_MAILS', + 'desc' => $this->l('One e-mail address per line (e.g. bob@example.com).'), + ), + ), + 'submit' => array( + 'title' => $this->l('Save'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitMAMerchant', + ) + ), + ); + + $helper = new HelperForm(); + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->module = $this; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $helper->identifier = $this->identifier; + $helper->submit_action = 'submitMailAlertConfiguration'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false) + .'&configure='.$this->name + .'&tab_module='.$this->tab + .'&module_name='.$this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form_1, $fields_form_2)); + } + + public function getConfigFieldsValues() + { + return array( + 'MA_CUSTOMER_QTY' => Tools::getValue('MA_CUSTOMER_QTY', Configuration::get('MA_CUSTOMER_QTY')), + 'MA_MERCHANT_ORDER' => Tools::getValue('MA_MERCHANT_ORDER', Configuration::get('MA_MERCHANT_ORDER')), + 'MA_MERCHANT_OOS' => Tools::getValue('MA_MERCHANT_OOS', Configuration::get('MA_MERCHANT_OOS')), + 'MA_LAST_QTIES' => Tools::getValue('MA_LAST_QTIES', Configuration::get('MA_LAST_QTIES')), + 'MA_MERCHANT_COVERAGE' => Tools::getValue('MA_MERCHANT_COVERAGE', Configuration::get('MA_MERCHANT_COVERAGE')), + 'MA_PRODUCT_COVERAGE' => Tools::getValue('MA_PRODUCT_COVERAGE', Configuration::get('MA_PRODUCT_COVERAGE')), + 'MA_MERCHANT_MAILS' => Tools::getValue('MA_MERCHANT_MAILS', Configuration::get('MA_MERCHANT_MAILS')), + 'MA_ORDER_EDIT' => Tools::getValue('MA_ORDER_EDIT', Configuration::get('MA_ORDER_EDIT')), + 'MA_RETURN_SLIP' => Tools::getValue('MA_RETURN_SLIP', Configuration::get('MA_RETURN_SLIP')), + ); + } +} diff --git a/modules/mailalerts/mails/en/customer_qty.html b/modules/mailalerts/mails/en/customer_qty.html new file mode 100644 index 00000000..1cbf7daa --- /dev/null +++ b/modules/mailalerts/mails/en/customer_qty.html @@ -0,0 +1,115 @@ + + + + + + Message from {shop_name} + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
    + + Hi, + +
    + + + + + + +
      + +

    + {product} is now available.

    + + This item is once again in-stock.

    + You can access the product page by clicking on the link: {product}
    + You can order it right now from our online shop.
    +
    +
     
    +
    +
     
    + + \ No newline at end of file diff --git a/modules/mailalerts/mails/en/customer_qty.txt b/modules/mailalerts/mails/en/customer_qty.txt new file mode 100644 index 00000000..82aedb0e --- /dev/null +++ b/modules/mailalerts/mails/en/customer_qty.txt @@ -0,0 +1,15 @@ + +[{shop_url}] + +Hi, + +This item is once again in-stock. + +You can access the product page by clicking on the link: {product} +[{product_link}] + +You can order it right now from our online shop. + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/mails/en/index.php b/modules/mailalerts/mails/en/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/mails/en/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/mails/en/new_order.html b/modules/mailalerts/mails/en/new_order.html new file mode 100644 index 00000000..4946b7ac --- /dev/null +++ b/modules/mailalerts/mails/en/new_order.html @@ -0,0 +1,401 @@ + + + + + + Message from {shop_name} + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Congratulations! + +
    + + A new order was placed on {shop_name} by the following customer: {firstname} {lastname} ({email}) + +
    + + + + + + +
      + +

    + Order details

    + + Order: {order_name} Placed on {date}

    + Payment: {payment} +
    +
    +
     
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ReferenceProductUnit priceQuantityTotal price
    +   {items} +
    + + + + + + +
      + + Products + +  
    +
    + + + + + + +
      + + {total_products} + +  
    +
    + + + + + + +
      + + Discounts + +  
    +
    + + + + + + +
      + + {total_discounts} + +  
    +
    + + + + + + +
      + + Gift-wrapping + +  
    +
    + + + + + + +
      + + {total_wrapping} + +  
    +
    + + + + + + +
      + + Shipping + +  
    +
    + + + + + + +
      + + {total_shipping} + +  
    +
    + + + + + + +
      + + Total Tax paid + +  
    +
    + + + + + + +
      + + {total_tax_paid} + +  
    +
    + + + + + + +
      + + Total paid + +  
    +
    + + + + + + +
      + + {total_paid} + +  
    +
    +
    +
    + + + + + + +
      + +

    + Carrier:

    + + {carrier} + +
    +
     
    +
    + + + + + + +
    + + + + + + +
      + +

    + Delivery address

    + + {delivery_block_html} + +
    +
     
    +
      + + + + + + +
      + +

    + Billing address

    + + {invoice_block_html} + +
    +
     
    +
    +
    + + + + + + +
      + +

    + Customer message:

    + + {message} + +
    +
     
    +
    +
     
    + + \ No newline at end of file diff --git a/modules/mailalerts/mails/en/new_order.txt b/modules/mailalerts/mails/en/new_order.txt new file mode 100644 index 00000000..5dc1a947 --- /dev/null +++ b/modules/mailalerts/mails/en/new_order.txt @@ -0,0 +1,59 @@ + +[{shop_url}] + +Congratulations! + +A new order was placed on {shop_name} by the following customer: +{firstname} {lastname} ({email}) + +ORDER: {order_name} Placed on {date} + +PAYMENT: {payment} + +REFERENCE + +PRODUCT + +UNIT PRICE + +QUANTITY + +TOTAL PRICE + +{items} + +PRODUCTS + +{total_products} + +DISCOUNTS + +{total_discounts} + +GIFT-WRAPPING + +{total_wrapping} + +SHIPPING + +{total_shipping} + +TOTAL TAX PAID + +{total_tax_paid} + +TOTAL PAID + +{total_paid} + +{carrier} + +{delivery_block_html} + +{invoice_block_html} + +{message} + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/mails/en/order_changed.html b/modules/mailalerts/mails/en/order_changed.html new file mode 100644 index 00000000..d6a22596 --- /dev/null +++ b/modules/mailalerts/mails/en/order_changed.html @@ -0,0 +1,130 @@ + + + + + + Message from {shop_name} + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Hi {firstname} {lastname}, + +
    + + + + + + +
      + +

    + Order {order_name} - Order edited

    + + Your order with the reference {order_name} from {shop_name} has been modified. +
    +
     
    +
    + + + You can review your order and download your invoice from the "Order history" section of your customer account by clicking "My account" on our shop. + +
    + + + If you have a guest account, you can follow your order via the "Guest Tracking" section on our shop. + +
    +
     
    + + \ No newline at end of file diff --git a/modules/mailalerts/mails/en/order_changed.txt b/modules/mailalerts/mails/en/order_changed.txt new file mode 100644 index 00000000..e73e7010 --- /dev/null +++ b/modules/mailalerts/mails/en/order_changed.txt @@ -0,0 +1,21 @@ + +[{shop_url}] + +Hi {firstname} {lastname}, + +Your order with the reference {order_name} from {shop_name} has +been modified. + +You can review your order and download your invoice from the +"Order history" [{history_url}] section of your +customer account by clicking "My account" +[{my_account_url}] on our shop. + +If you have a guest account, you can follow your order via the +"Guest Tracking" +[{guest_tracking_url}?id_order={order_name}] section +on our shop. + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/mails/en/productcoverage.html b/modules/mailalerts/mails/en/productcoverage.html new file mode 100644 index 00000000..59be185e --- /dev/null +++ b/modules/mailalerts/mails/en/productcoverage.html @@ -0,0 +1,115 @@ + + + + + + Message from {shop_name} + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
    + + Hi, + +
    + + + + + + +
      + +

    + {product} is almost out of stock.

    + + The stock cover is now less than the specified minimum of: {warning_coverage}.

    + Current stock cover: {current_coverage} +
    +
    +
     
    +
    +
     
    + + \ No newline at end of file diff --git a/modules/mailalerts/mails/en/productcoverage.txt b/modules/mailalerts/mails/en/productcoverage.txt new file mode 100644 index 00000000..1b865760 --- /dev/null +++ b/modules/mailalerts/mails/en/productcoverage.txt @@ -0,0 +1,13 @@ + +[{shop_url}] + +Hi, + +The stock cover is now less than the specified minimum of: +{warning_coverage}. + +CURRENT STOCK COVER: {current_coverage} + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/mails/en/productoutofstock.html b/modules/mailalerts/mails/en/productoutofstock.html new file mode 100644 index 00000000..24b722a4 --- /dev/null +++ b/modules/mailalerts/mails/en/productoutofstock.html @@ -0,0 +1,115 @@ + + + + + + Message from {shop_name} + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + +
    + + Hi, + +
    + + + + + + +
      + +

    + {product} is nearly out of stock.

    + + The remaining stock is now less than the specified minimum of {last_qty}.

    + Remaining stock: {qty}

    + You are advised to open the product's admin Product Page in order to replenish your inventory.
    +
    +
     
    +
    +
     
    + + \ No newline at end of file diff --git a/modules/mailalerts/mails/en/productoutofstock.txt b/modules/mailalerts/mails/en/productoutofstock.txt new file mode 100644 index 00000000..a0d36311 --- /dev/null +++ b/modules/mailalerts/mails/en/productoutofstock.txt @@ -0,0 +1,16 @@ + +[{shop_url}] + +Hi, + +The remaining stock is now less than the specified minimum of +{last_qty}. + +REMAINING STOCK: {qty} + +You are advised to open the product's admin Product Page in order to +replenish your inventory. + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/mails/en/return_slip.html b/modules/mailalerts/mails/en/return_slip.html new file mode 100644 index 00000000..1c4586ca --- /dev/null +++ b/modules/mailalerts/mails/en/return_slip.html @@ -0,0 +1,178 @@ + + + + + + + Message from {shop_name} + + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + Hi, + +
    + You have received a new return request for {shop_name}. +
    +

    + Return details +

    + + Order: {order_name} Placed on {date}
    + Customer: {firstname} {lastname}, ({email}) +
    +
    + + + + + + + + + + + + + +
    ReferenceProductQuantity
    + {items} +
    +
    + + + + + + +
    +

    + Delivery address

    + + {delivery_block_html} + +
      +

    + Billing address

    + + {invoice_block_html} + +
    +
    +

    + Customer message: +

    + + {message} + +
    +
     
    + + diff --git a/modules/mailalerts/mails/en/return_slip.txt b/modules/mailalerts/mails/en/return_slip.txt new file mode 100644 index 00000000..b66134a4 --- /dev/null +++ b/modules/mailalerts/mails/en/return_slip.txt @@ -0,0 +1,39 @@ + +[{shop_url}] + +Congratulations! + +An order was returned to {shop_name} by the following customer: +{firstname} {lastname} ({email}) + +Order details + +ORDER: {order_name} Placed on {date} + +REFERENCE + +PRODUCT + +UNIT PRICE + +QUANTITY + +TOTAL PRICE + +{items} + +Delivery address + +{delivery_block_html} + +Billing address + +{invoice_block_html} + +Customer message: + +{message} + +{shop_name} [{shop_url}] powered by +PrestaShop(tm) [http://www.prestashop.com/] + diff --git a/modules/mailalerts/translations/en.php b/modules/mailalerts/translations/en.php new file mode 100644 index 00000000..85f68e33 --- /dev/null +++ b/modules/mailalerts/translations/en.php @@ -0,0 +1,52 @@ +mailalerts-account_ae0e822b6fad0de61c231ef188997e92'] = 'You must have a product to delete an alert.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_0d15d3afa8c174934ff0e43ce3b99bd3'] = 'You must be logged in to manage your alerts.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_a9839ad48cf107667f73bad1d651f2ca'] = 'No template found'; +$_MODULE['<{mailalerts}prestashop>mailalerts_fd30254803e8db32521d3390131a44da'] = 'Mail alerts'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2d51f4a7ab8a12c4f35b507019523b8c'] = 'Sends e-mail notifications to customers and merchants.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_8fd3b84964bd6dfec8095f658d200b29'] = 'Are you sure you want to delete all customer notifications?'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c1ee76f076a5b97e3b4b0c0e5703246e'] = 'Cannot update settings'; +$_MODULE['<{mailalerts}prestashop>mailalerts_ce241f25e003bafeb9fce6857d8f027f'] = 'Please type one (or more) e-mail address'; +$_MODULE['<{mailalerts}prestashop>mailalerts_29aae9c646337554f4de7ae29050c39f'] = 'Invalid e-mail:'; +$_MODULE['<{mailalerts}prestashop>mailalerts_462390017ab0938911d2d4e964c0cab7'] = 'Settings updated successfully'; +$_MODULE['<{mailalerts}prestashop>mailalerts_7cb9a154f101c674c945f88dad5c5e28'] = 'No message'; +$_MODULE['<{mailalerts}prestashop>mailalerts_1d744a9ad1dac20645cfc4a36b77323b'] = 'image(s)'; +$_MODULE['<{mailalerts}prestashop>mailalerts_9137796c15dd92e5553c3f29574d0968'] = 'Voucher code:'; +$_MODULE['<{mailalerts}prestashop>mailalerts_58a20987a1f4e45d508b4491614a2c57'] = 'Customer notifications'; +$_MODULE['<{mailalerts}prestashop>mailalerts_808aaaa33716529eb7c9f658ff4a15b5'] = 'Product availability'; +$_MODULE['<{mailalerts}prestashop>mailalerts_bad4762226d82261d8c31fc120a03ed2'] = 'Gives the customer the option of receiving a notification when an out-of-stock product is available again.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Enabled'; +$_MODULE['<{mailalerts}prestashop>mailalerts_b9f5c797ebbf55adccdd8539a65a0241'] = 'Disabled'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c9cc8cce247e49bae79f15173ce97354'] = 'Save'; +$_MODULE['<{mailalerts}prestashop>mailalerts_6f974bbda9064a9c0836370dbf5a6076'] = 'Merchant notifications'; +$_MODULE['<{mailalerts}prestashop>mailalerts_4c9120f1a5947445c0e9620254ceb30b'] = 'New order'; +$_MODULE['<{mailalerts}prestashop>mailalerts_382ba298d6c80b03037629d326811919'] = 'Receive a notification when an order is placed.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Out of stock'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c0146c441cd6d5dc9d6e0ea1464b345f'] = 'Receive a notification if the available quantity of a product is below the following threshold.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2a63f555989152ba866b43a1faacd680'] = 'Threshold'; +$_MODULE['<{mailalerts}prestashop>mailalerts_5b38721cd2e6ea2e12a664fb6dca1990'] = 'Quantity for which a product is considered out of stock.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_135d106e835a4fa3b6fb5c4638a5d76b'] = 'Coverage warning'; +$_MODULE['<{mailalerts}prestashop>mailalerts_218786c9273b95bc637e7adb710b4195'] = 'Receive a notification when a product has insufficient coverage.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_9841bdc50c4226cb6ec5db76494249e6'] = 'Coverage'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2a4ae220a78d0c4a4d4c2b7285753321'] = 'Stock coverage, in days. Also, the stock coverage of a given product will be calculated based on this number.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_4c3c81fd56b02829a5a1cf953396cd55'] = 'E-mail addresses'; +$_MODULE['<{mailalerts}prestashop>mailalerts_ee15e8240b16c6d48b217a1965b0ff22'] = 'One e-mail address per line (e.g. bob@example.com).'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_36c94bd456cf8796723ad09eac258aef'] = 'Manage my account'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'My account'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_4edfd10d0bb5f51e0fd2327df608b5a8'] = 'My alerts'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_1063e38cb53d94d386f21227fcd84717'] = 'Remove'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_8bb23c2ae698681ebb650f43acb54dab'] = 'No mail alerts yet.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_0b3db27bc15f682e92ff250ebb167d4b'] = 'Back to Your Account'; +$_MODULE['<{mailalerts}prestashop>my-account_4edfd10d0bb5f51e0fd2327df608b5a8'] = 'My alerts'; +$_MODULE['<{mailalerts}prestashop>product_67135a14d3ac4f1369633dd006d6efec'] = 'your@email.com'; +$_MODULE['<{mailalerts}prestashop>product_61172eb93737ebf095d3fa02119ce1df'] = 'Request notification registered'; +$_MODULE['<{mailalerts}prestashop>product_bb51a155575b81f4a07f7a9bafdc3b01'] = 'You already have an alert for this product'; +$_MODULE['<{mailalerts}prestashop>product_900f8551b29793ecb604a545b2059cc1'] = 'Your e-mail address is invalid'; +$_MODULE['<{mailalerts}prestashop>product_546e02eaa9a986c83cc347e273269f2c'] = 'Notify me when available'; + + +return $_MODULE; diff --git a/modules/mailalerts/translations/fr.php b/modules/mailalerts/translations/fr.php new file mode 100644 index 00000000..69788dbb --- /dev/null +++ b/modules/mailalerts/translations/fr.php @@ -0,0 +1,56 @@ +mailalerts-account_ae0e822b6fad0de61c231ef188997e92'] = 'Vous devez avoir un produit pour effacer une alerte.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_0d15d3afa8c174934ff0e43ce3b99bd3'] = 'Vous devez être identifié pour gérer vos alertes.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_a9839ad48cf107667f73bad1d651f2ca'] = 'Aucun modèle trouvé'; +$_MODULE['<{mailalerts}prestashop>mailalerts_fd30254803e8db32521d3390131a44da'] = 'Alertes par e-mail'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2d51f4a7ab8a12c4f35b507019523b8c'] = 'Envoie des notifications par e-mail aux clients et aux marchands.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_8fd3b84964bd6dfec8095f658d200b29'] = 'Êtes-vous sûr de vouloir supprimer toutes les notifications clients ?'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c1ee76f076a5b97e3b4b0c0e5703246e'] = 'Impossible de mettre à jour les réglages'; +$_MODULE['<{mailalerts}prestashop>mailalerts_ce241f25e003bafeb9fce6857d8f027f'] = 'Veuillez saisir une (ou plusieurs) adresse(s) e-mail'; +$_MODULE['<{mailalerts}prestashop>mailalerts_29aae9c646337554f4de7ae29050c39f'] = 'Adresse e-mail invalide :'; +$_MODULE['<{mailalerts}prestashop>mailalerts_462390017ab0938911d2d4e964c0cab7'] = 'Paramètres mis à jour avec succès'; +$_MODULE['<{mailalerts}prestashop>mailalerts_7cb9a154f101c674c945f88dad5c5e28'] = 'Aucun message'; +$_MODULE['<{mailalerts}prestashop>mailalerts_1d744a9ad1dac20645cfc4a36b77323b'] = 'image(s)'; +$_MODULE['<{mailalerts}prestashop>mailalerts_9137796c15dd92e5553c3f29574d0968'] = 'Code de réduction :'; +$_MODULE['<{mailalerts}prestashop>mailalerts_58a20987a1f4e45d508b4491614a2c57'] = 'Notifications pour les clients'; +$_MODULE['<{mailalerts}prestashop>mailalerts_808aaaa33716529eb7c9f658ff4a15b5'] = 'Disponibilité du produit'; +$_MODULE['<{mailalerts}prestashop>mailalerts_bad4762226d82261d8c31fc120a03ed2'] = 'Donne au client la possibilité de recevoir une notification lorsqu\'un produit en rupture de stock est de nouveau disponible.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; +$_MODULE['<{mailalerts}prestashop>mailalerts_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; +$_MODULE['<{mailalerts}prestashop>mailalerts_a5b84d670ff303fdc89d20cf979a1003'] = 'Commande modifiée'; +$_MODULE['<{mailalerts}prestashop>mailalerts_0c00f6da997acaa413d658206e25235a'] = 'Envoie un e-mail au client lorsque sa commande est modifiée.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c9cc8cce247e49bae79f15173ce97354'] = 'Enregistrer'; +$_MODULE['<{mailalerts}prestashop>mailalerts_6f974bbda9064a9c0836370dbf5a6076'] = 'Notifications pour le marchand'; +$_MODULE['<{mailalerts}prestashop>mailalerts_4c9120f1a5947445c0e9620254ceb30b'] = 'Nouvelle commande'; +$_MODULE['<{mailalerts}prestashop>mailalerts_382ba298d6c80b03037629d326811919'] = 'Recevoir une notification lorsqu\'une commande est passée.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_b55197a49e8c4cd8c314bc2aa39d6feb'] = 'Rupture de stock'; +$_MODULE['<{mailalerts}prestashop>mailalerts_c0146c441cd6d5dc9d6e0ea1464b345f'] = 'Recevoir une notification si les quantités disponibles d\'un produit sont inférieures au seuil suivant.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2a63f555989152ba866b43a1faacd680'] = 'Seuil'; +$_MODULE['<{mailalerts}prestashop>mailalerts_5b38721cd2e6ea2e12a664fb6dca1990'] = 'Quantité à partir de laquelle le produit est considéré en rupture de stock.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_135d106e835a4fa3b6fb5c4638a5d76b'] = 'Alerte de couverture'; +$_MODULE['<{mailalerts}prestashop>mailalerts_218786c9273b95bc637e7adb710b4195'] = 'Recevoir une notification quand la couverture d\'un produit est insuffisante.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_9841bdc50c4226cb6ec5db76494249e6'] = 'Couverture'; +$_MODULE['<{mailalerts}prestashop>mailalerts_2a4ae220a78d0c4a4d4c2b7285753321'] = 'Couverture de stock, en jours. Cette valeur est également utilisée pour calculer la couverture actuelle d\'un produit.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_4762fdc5fdf2ab3118f73fe252a6668b'] = 'Retours'; +$_MODULE['<{mailalerts}prestashop>mailalerts_6408356e699097abbb968b575499f76e'] = 'Recevoir un e-mail lorsqu\'un client sollicite un retour marchandise.'; +$_MODULE['<{mailalerts}prestashop>mailalerts_4c3c81fd56b02829a5a1cf953396cd55'] = 'Adresses e-mail'; +$_MODULE['<{mailalerts}prestashop>mailalerts_ee15e8240b16c6d48b217a1965b0ff22'] = 'Une adresse e-mail par ligne (ex. : jean@example.com).'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_36c94bd456cf8796723ad09eac258aef'] = 'Gérer mon compte'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_d95cf4ab2cbf1dfb63f066b50558b07d'] = 'Mon compte'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_4edfd10d0bb5f51e0fd2327df608b5a8'] = 'Mes alertes'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_1063e38cb53d94d386f21227fcd84717'] = 'Retirer'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_8bb23c2ae698681ebb650f43acb54dab'] = 'Aucune alerte mail.'; +$_MODULE['<{mailalerts}prestashop>mailalerts-account_0b3db27bc15f682e92ff250ebb167d4b'] = 'Retour à votre compte'; +$_MODULE['<{mailalerts}prestashop>my-account_4edfd10d0bb5f51e0fd2327df608b5a8'] = 'Mes alertes'; +$_MODULE['<{mailalerts}prestashop>product_67135a14d3ac4f1369633dd006d6efec'] = 'votre@email.com'; +$_MODULE['<{mailalerts}prestashop>product_61172eb93737ebf095d3fa02119ce1df'] = 'Demande de notification enregistrée'; +$_MODULE['<{mailalerts}prestashop>product_bb51a155575b81f4a07f7a9bafdc3b01'] = 'Vous avez déjà une alerte pour ce produit'; +$_MODULE['<{mailalerts}prestashop>product_900f8551b29793ecb604a545b2059cc1'] = 'Votre adresse e-mail est invalide'; +$_MODULE['<{mailalerts}prestashop>product_546e02eaa9a986c83cc347e273269f2c'] = 'Prévenez-moi lorsque le produit est disponible'; + + +return $_MODULE; diff --git a/modules/mailalerts/translations/index.php b/modules/mailalerts/translations/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/translations/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/upgrade/index.php b/modules/mailalerts/upgrade/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/upgrade/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/upgrade/install-2.5.php b/modules/mailalerts/upgrade/install-2.5.php new file mode 100644 index 00000000..99de0421 --- /dev/null +++ b/modules/mailalerts/upgrade/install-2.5.php @@ -0,0 +1,44 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +if (!defined('_PS_VERSION_')) + exit; + +function upgrade_module_2_5($object) +{ + Db::getInstance()->execute(' + ALTER TABLE `'._DB_PREFIX_.'mailalert_customer_oos` + ADD `id_lang` INT( 10 ) UNSIGNED NOT NULL + '); + + Db::getInstance()->execute(' + ALTER TABLE `'._DB_PREFIX_.'mailalert_customer_oos` + DROP PRIMARY KEY , + ADD PRIMARY KEY (`id_customer` , `customer_email` , `id_product` , `id_product_attribute` , `id_shop`) + '); + + return true; +} \ No newline at end of file diff --git a/modules/mailalerts/upgrade/install-3.5.3.php b/modules/mailalerts/upgrade/install-3.5.3.php new file mode 100644 index 00000000..995f5641 --- /dev/null +++ b/modules/mailalerts/upgrade/install-3.5.3.php @@ -0,0 +1,44 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +if (!defined('_PS_VERSION_')) + exit; + +function upgrade_module_3_5_3($object) +{ + $success = true; + + if (!$object->isRegisteredInHook('actionOrderEdited')) + $success &= $object->registerHook('actionOrderEdited'); + + if (!$object->isRegisteredInHook('actionOrderReturn')) + $success &= $object->registerHook('actionOrderReturn'); + + Configuration::updateValue('MA_ORDER_EDIT', 1); + Configuration::updateValue('MA_RETURN_SLIP', 1); + + return $success; +} \ No newline at end of file diff --git a/modules/mailalerts/views/index.php b/modules/mailalerts/views/index.php new file mode 100644 index 00000000..044cb85e --- /dev/null +++ b/modules/mailalerts/views/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/admin/_configure/helpers/form/form.tpl b/modules/mailalerts/views/templates/admin/_configure/helpers/form/form.tpl new file mode 100644 index 00000000..5a03b0f6 --- /dev/null +++ b/modules/mailalerts/views/templates/admin/_configure/helpers/form/form.tpl @@ -0,0 +1,52 @@ +{* +* 2007-2015 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +{extends file="helpers/form/form.tpl"} + +{block name="input"} + {if $input.type == 'switch' && $smarty.const._PS_VERSION_|@addcslashes:'\'' < '1.6'} + {foreach $input.values as $value} + + + {if isset($input.br) && $input.br}
    {/if} + {if isset($value.p) && $value.p}

    {$value.p}

    {/if} + {/foreach} + {else} + {$smarty.block.parent} + {/if} + +{/block} diff --git a/modules/mailalerts/views/templates/admin/_configure/helpers/form/index.php b/modules/mailalerts/views/templates/admin/_configure/helpers/form/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/admin/_configure/helpers/form/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/admin/_configure/helpers/index.php b/modules/mailalerts/views/templates/admin/_configure/helpers/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/admin/_configure/helpers/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/admin/_configure/index.php b/modules/mailalerts/views/templates/admin/_configure/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/admin/_configure/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/admin/index.php b/modules/mailalerts/views/templates/admin/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/admin/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/front/index.php b/modules/mailalerts/views/templates/front/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/front/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/front/mailalerts-account.tpl b/modules/mailalerts/views/templates/front/mailalerts-account.tpl new file mode 100644 index 00000000..6c4ebda8 --- /dev/null +++ b/modules/mailalerts/views/templates/front/mailalerts-account.tpl @@ -0,0 +1,85 @@ +{* +* 2007-2015 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + + + +{capture name=path}{l s='My account' mod='mailalerts'}{$navigationPipe}{l s='My alerts' mod='mailalerts'}{/capture} +{include file="$tpl_dir./breadcrumb.tpl"} + +
    +

    {l s='My alerts' mod='mailalerts'}

    + {if $mailAlerts} +
    + {foreach from=$mailAlerts item=mailAlert} +
    + +

    {$mailAlert.name|escape:'html':'UTF-8'}

    +
    {$mailAlert.attributes_small|escape:'html':'UTF-8'}
    + +
    + {l s='Remove' mod='mailalerts'} +
    +
    + {/foreach} +
    + {else} +

    {l s='No mail alerts yet.' mod='mailalerts'}

    + {/if} + + +
    \ No newline at end of file diff --git a/modules/mailalerts/views/templates/hook/index.php b/modules/mailalerts/views/templates/hook/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/hook/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/mailalerts/views/templates/hook/my-account.tpl b/modules/mailalerts/views/templates/hook/my-account.tpl new file mode 100644 index 00000000..738a3b61 --- /dev/null +++ b/modules/mailalerts/views/templates/hook/my-account.tpl @@ -0,0 +1,30 @@ +{* +* 2007-2015 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +
  • + + {l s='My alerts' mod='mailalerts'} + +
  • diff --git a/modules/mailalerts/views/templates/hook/product.tpl b/modules/mailalerts/views/templates/hook/product.tpl new file mode 100644 index 00000000..31fa24d9 --- /dev/null +++ b/modules/mailalerts/views/templates/hook/product.tpl @@ -0,0 +1,97 @@ +{* +* 2007-2015 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2015 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + + + + + {if isset($email) AND $email} +
    + {/if} + {l s='Notify me when available' mod='mailalerts'} + + diff --git a/modules/mailalerts/views/templates/index.php b/modules/mailalerts/views/templates/index.php new file mode 100644 index 00000000..ce559763 --- /dev/null +++ b/modules/mailalerts/views/templates/index.php @@ -0,0 +1,35 @@ + + * @copyright 2007-2015 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/paypal/api/Results.txt b/modules/paypal/api/Results.txt index a182f803..204f0f93 100644 --- a/modules/paypal/api/Results.txt +++ b/modules/paypal/api/Results.txt @@ -75,3 +75,268 @@ Logs : Array [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Ftest.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Ftest.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=62&L_PAYMENTREQUEST_0_NAME0=Pierre+d%27argile&L_PAYMENTREQUEST_0_DESC0=La+pierre+d%27argile+senteur+naturelle+de+citron+d%C3%A9g...&L_PAYMENTREQUEST_0_AMT0=8.36&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=8&L_PAYMENTREQUEST_0_NAME1=Shampooing+Sec+chats+-+Protection+Insectifuge+%28poudre%29&L_PAYMENTREQUEST_0_DESC1=Le+Shampooing+Insectifuge%2C+sans+rin%C3%A7age%2C+pour+chat...&L_PAYMENTREQUEST_0_AMT1=17&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=59&L_PAYMENTREQUEST_0_NAME2=Savon+noir+mou+concentr%C3%A9%2C+%C3%A0+l%27huile+de+lin&L_PAYMENTREQUEST_0_DESC2=Le+savon+noir+mou+concentr%C3%A9+%C3%A0+l%27huile+de+lin+poss%C3%A8...&L_PAYMENTREQUEST_0_AMT2=6.16&L_PAYMENTREQUEST_0_QTY2=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=31.52&PAYMENTREQUEST_0_AMT=37.52&ADDROVERRIDE=1&EMAIL=thibault%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Thibault+GUILLAUME&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=24+rue+des+eveuses&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf [4] => Send with CURL method successful ) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=90&L_PAYMENTREQUEST_0_NAME0=Eau+micellaire+3+en+1+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC0=Cette+eau+micellaire+sp%C3%A9cialement+formul%C3%A9e+pour+le...&L_PAYMENTREQUEST_0_AMT0=7.95&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=92&L_PAYMENTREQUEST_0_NAME1=Cr%C3%A8me+intense+hydratante+Nuit+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC1=Gr%C3%A2ce+%C3%A0+cette+cr%C3%A8me+de+nuit%2C+votre+peau+sera+apais...&L_PAYMENTREQUEST_0_AMT1=9.25&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=91&L_PAYMENTREQUEST_0_NAME2=Cr%C3%A8me+l%C3%A9g%C3%A8re+hydratante+24h+Jour+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC2=SO%27BiO+%C3%A9tic%C2%AE+a+s%C3%A9lectionn%C3%A9+le+meilleur+de+l%27aloe+v...&L_PAYMENTREQUEST_0_AMT2=8.9&L_PAYMENTREQUEST_0_QTY2=2&L_PAYMENTREQUEST_0_NUMBER3=3&L_PAYMENTREQUEST_0_NAME3=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC3=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT3=28.43&L_PAYMENTREQUEST_0_QTY3=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_ITEMAMT=63.43&PAYMENTREQUEST_0_AMT=63.43&ADDROVERRIDE=1&EMAIL=delune%2B5%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Delune&PAYMENTREQUEST_0_SHIPTOPHONENUM=0101015456465&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : SILOVER=name%3DLIVE9.APIT.1%26silo_version%3D880%26app%3Dappdispatcher_apit%26TIME%3D325806166; domain=.paypal.com; path=/; Secure; HttpOnlySet-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMTCache-Control: max-age=0, no-cache, no-store, must-revalidatePragma: no-cacheContent-Type: text/plain; charset=utf-8TOKEN=EC%2d5DX0870874808615B&TIMESTAMP=2015%2d12%2d09T17%3a55%3a31Z&CORRELATIONID=f0c7c29c1a58b&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Sending this params: POST /nvp HTTP/1.1 +Host: api-3t.paypal.com +Content-Type: application/x-www-form-urlencoded +Content-Length: 2059 +Connection: close + +METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=90&L_PAYMENTREQUEST_0_NAME0=Eau+micellaire+3+en+1+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC0=Cette+eau+micellaire+sp%C3%A9cialement+formul%C3%A9e+pour+le...&L_PAYMENTREQUEST_0_AMT0=7.95&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=92&L_PAYMENTREQUEST_0_NAME1=Cr%C3%A8me+intense+hydratante+Nuit+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC1=Gr%C3%A2ce+%C3%A0+cette+cr%C3%A8me+de+nuit%2C+votre+peau+sera+apais...&L_PAYMENTREQUEST_0_AMT1=9.25&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=91&L_PAYMENTREQUEST_0_NAME2=Cr%C3%A8me+l%C3%A9g%C3%A8re+hydratante+24h+Jour+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC2=SO%27BiO+%C3%A9tic%C2%AE+a+s%C3%A9lectionn%C3%A9+le+meilleur+de+l%27aloe+v...&L_PAYMENTREQUEST_0_AMT2=8.9&L_PAYMENTREQUEST_0_QTY2=2&L_PAYMENTREQUEST_0_NUMBER3=3&L_PAYMENTREQUEST_0_NAME3=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC3=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT3=28.43&L_PAYMENTREQUEST_0_QTY3=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_ITEMAMT=63.43&PAYMENTREQUEST_0_AMT=63.43&ADDROVERRIDE=1&EMAIL=delune%2B5%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Delune&PAYMENTREQUEST_0_SHIPTOPHONENUM=0101015456465&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [2] => Send with fsockopen method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : SILOVER=name%3DLIVE6.APIT.1%26silo_version%3D880%26app%3Dappdispatcher_apit%26TIME%3D2842454102; domain=.paypal.com; path=/; Secure; HttpOnlySet-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMTCache-Control: max-age=0, no-cache, no-store, must-revalidatePragma: no-cacheContent-Type: text/plain; charset=utf-8TOKEN=EC%2d48D78760671068236&TIMESTAMP=2015%2d12%2d09T18%3a02%3a17Z&CORRELATIONID=774bd4fec1690&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Sending this params: POST /nvp HTTP/1.1 +Host: api-3t.paypal.com +Content-Type: application/x-www-form-urlencoded +Content-Length: 1282 +Connection: close + +METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [2] => Send with fsockopen method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : SILOVER=name%3DLIVE6.APIT.1%26silo_version%3D880%26app%3Dappdispatcher_apit%26TIME%3D4151076950; domain=.paypal.com; path=/; Secure; HttpOnlySet-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMTCache-Control: max-age=0, no-cache, no-store, must-revalidatePragma: no-cacheContent-Type: text/plain; charset=utf-8TOKEN=EC%2d6F243812GD6487455&TIMESTAMP=2015%2d12%2d09T18%3a03%3a35Z&CORRELATIONID=c363a0e9b9ba9&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Sending this params: POST /nvp HTTP/1.1 +Host: api-3t.paypal.com +Content-Type: application/x-www-form-urlencoded +Content-Length: 1282 +Connection: close + +METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [2] => Send with fsockopen method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d3V306376JD048084D&TIMESTAMP=2015%2d12%2d09T18%3a05%3a16Z&CORRELATIONID=3b358bfe2950e&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=33&L_PAYMENTREQUEST_0_NAME0=Le+Livre+du+ToutPropre+au+Naturel&L_PAYMENTREQUEST_0_DESC0=Le+Guide+du+Tout+Propre+au+Naturel%2C%C2%A0le+nouveau+liv...&L_PAYMENTREQUEST_0_AMT0=8.25&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.25&PAYMENTREQUEST_0_AMT=11.25&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=28.43&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=7.20&PAYMENTREQUEST_0_ITEMAMT=28.43&PAYMENTREQUEST_0_AMT=35.63&ADDROVERRIDE=1&EMAIL=delune%2B5%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Delune&PAYMENTREQUEST_0_SHIPTOPHONENUM=0101015456465&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d5KK94577NC5311157&TIMESTAMP=2015%2d12%2d09T18%3a16%3a47Z&CORRELATIONID=8cff1a82521b2&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=28.43&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=7.20&PAYMENTREQUEST_0_ITEMAMT=28.43&PAYMENTREQUEST_0_AMT=35.63&ADDROVERRIDE=1&EMAIL=delune%2B5%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Delune&PAYMENTREQUEST_0_SHIPTOPHONENUM=0101015456465&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=124&L_PAYMENTREQUEST_0_NAME0=Gel+lavant+hypoallerg%C3%A9nique+Corps+%26+Cheveux&L_PAYMENTREQUEST_0_DESC0=Ce+gel+lavant+hypoallerg%C3%A9nique+nettoie+tout+en+d%C3%A9l...&L_PAYMENTREQUEST_0_AMT0=6.55&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=114&L_PAYMENTREQUEST_0_NAME1=Poudre+surfine+multi-usages+%C3%A0+l%27argile+verte+Montmorillonite&L_PAYMENTREQUEST_0_DESC1=Floressance+nature+a+s%C3%A9lectionn%C3%A9+la+meilleure+qual...&L_PAYMENTREQUEST_0_AMT1=3&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=3&L_PAYMENTREQUEST_0_NAME2=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC2=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT2=28.43&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=142&L_PAYMENTREQUEST_0_NAME3=Huile+essentielle+Citron+bio&L_PAYMENTREQUEST_0_DESC3=Le+zeste+de+citron+est+traditionnellement+reconnu+...&L_PAYMENTREQUEST_0_AMT3=6.1&L_PAYMENTREQUEST_0_QTY3=2&L_PAYMENTREQUEST_0_NUMBER4=2&L_PAYMENTREQUEST_0_NAME4=TEXGUARD+-+5L+%28%2B+pulv%C3%A9risateur+et+guide+du+Tout+Propre+offert%29&L_PAYMENTREQUEST_0_DESC4=TexGuard%C2%AE%C2%A0est+un%C2%A0antitache%C2%A0haute+performance+qui%C2%A0i...&L_PAYMENTREQUEST_0_AMT4=134.46&L_PAYMENTREQUEST_0_QTY4=6&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_ITEMAMT=856.94&PAYMENTREQUEST_0_AMT=856.94&ADDROVERRIDE=1&EMAIL=delune%2Bmobile%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Mobile&PAYMENTREQUEST_0_SHIPTOPHONENUM=010101010101&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=Antadis&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d88X048453M9249743&TIMESTAMP=2015%2d12%2d09T18%3a41%3a06Z&CORRELATIONID=83e953f5ca587&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=124&L_PAYMENTREQUEST_0_NAME0=Gel+lavant+hypoallerg%C3%A9nique+Corps+%26+Cheveux&L_PAYMENTREQUEST_0_DESC0=Ce+gel+lavant+hypoallerg%C3%A9nique+nettoie+tout+en+d%C3%A9l...&L_PAYMENTREQUEST_0_AMT0=6.55&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=114&L_PAYMENTREQUEST_0_NAME1=Poudre+surfine+multi-usages+%C3%A0+l%27argile+verte+Montmorillonite&L_PAYMENTREQUEST_0_DESC1=Floressance+nature+a+s%C3%A9lectionn%C3%A9+la+meilleure+qual...&L_PAYMENTREQUEST_0_AMT1=3&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=3&L_PAYMENTREQUEST_0_NAME2=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC2=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT2=28.43&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=142&L_PAYMENTREQUEST_0_NAME3=Huile+essentielle+Citron+bio&L_PAYMENTREQUEST_0_DESC3=Le+zeste+de+citron+est+traditionnellement+reconnu+...&L_PAYMENTREQUEST_0_AMT3=6.1&L_PAYMENTREQUEST_0_QTY3=2&L_PAYMENTREQUEST_0_NUMBER4=2&L_PAYMENTREQUEST_0_NAME4=TEXGUARD+-+5L+%28%2B+pulv%C3%A9risateur+et+guide+du+Tout+Propre+offert%29&L_PAYMENTREQUEST_0_DESC4=TexGuard%C2%AE%C2%A0est+un%C2%A0antitache%C2%A0haute+performance+qui%C2%A0i...&L_PAYMENTREQUEST_0_AMT4=134.46&L_PAYMENTREQUEST_0_QTY4=6&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_ITEMAMT=856.94&PAYMENTREQUEST_0_AMT=856.94&ADDROVERRIDE=1&EMAIL=delune%2Bmobile%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=Emmanuel+Mobile&PAYMENTREQUEST_0_SHIPTOPHONENUM=010101010101&PAYMENTREQUEST_0_SHIPTOSTREET=1+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=Antadis&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=90&L_PAYMENTREQUEST_0_NAME0=Eau+micellaire+3+en+1+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC0=Cette+eau+micellaire+sp%C3%A9cialement+formul%C3%A9e+pour+le...&L_PAYMENTREQUEST_0_AMT0=7.95&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=7.95&PAYMENTREQUEST_0_AMT=13.95&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d2BY32427PR506770S&TIMESTAMP=2015%2d12%2d10T13%3a38%3a59Z&CORRELATIONID=2c56b66df1091&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=90&L_PAYMENTREQUEST_0_NAME0=Eau+micellaire+3+en+1+Hydra+Aloe+vera+bio&L_PAYMENTREQUEST_0_DESC0=Cette+eau+micellaire+sp%C3%A9cialement+formul%C3%A9e+pour+le...&L_PAYMENTREQUEST_0_AMT0=7.95&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=7.95&PAYMENTREQUEST_0_AMT=13.95&ADDROVERRIDE=1&EMAIL=thibault%2Btp%40antadis.com&PAYMENTREQUEST_0_SHIPTONAME=guillaume+Thibault&PAYMENTREQUEST_0_SHIPTOPHONENUM=0123456789&PAYMENTREQUEST_0_SHIPTOSTREET=1%2C+rue+de+Clairefontaine&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=28.43&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=28.43&PAYMENTREQUEST_0_AMT=34.43&ADDROVERRIDE=1&EMAIL=barnabe%40toutpratique.com&PAYMENTREQUEST_0_SHIPTONAME=Barnab%C3%A9+Wayser&PAYMENTREQUEST_0_SHIPTOPHONENUM=0155861760&PAYMENTREQUEST_0_SHIPTOSTREET=Guard+Industrie+7+rue+Gutenberg&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Montreuil&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=93100&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d0YK54748NM621892P&TIMESTAMP=2015%2d12%2d10T17%3a04%3a27Z&CORRELATIONID=52cc82d78de3d&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=28.43&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=28.43&PAYMENTREQUEST_0_AMT=34.43&ADDROVERRIDE=1&EMAIL=barnabe%40toutpratique.com&PAYMENTREQUEST_0_SHIPTONAME=Barnab%C3%A9+Wayser&PAYMENTREQUEST_0_SHIPTOPHONENUM=0155861760&PAYMENTREQUEST_0_SHIPTOSTREET=Guard+Industrie+7+rue+Gutenberg&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Montreuil&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=93100&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=52&L_PAYMENTREQUEST_0_NAME0=Liquide+vaisselle+concentr%C3%A9+Amande+500ml&L_PAYMENTREQUEST_0_DESC0=Liquide+vaisselle+%C3%A9cologique+Amande+certifi%C3%A9+par+l...&L_PAYMENTREQUEST_0_AMT0=1.98&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=165&L_PAYMENTREQUEST_0_NAME1=Bicarbonate+de+soude+m%C3%A9nager&L_PAYMENTREQUEST_0_DESC1=Le+bicarbonate+de+soude+nettoie%2C+d%C3%A9sodorise+et+r%C3%A9c...&L_PAYMENTREQUEST_0_AMT1=2.66&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=169&L_PAYMENTREQUEST_0_NAME2=Acide+citrique%2C+d%C3%A9tartrant+naturel+concentr%C3%A9&L_PAYMENTREQUEST_0_DESC2=Super+d%C3%A9tartrant+naturel+Multi-usages+%3A+surfaces+e...&L_PAYMENTREQUEST_0_AMT2=4.54&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=166&L_PAYMENTREQUEST_0_NAME3=Vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0&L_PAYMENTREQUEST_0_DESC3=Le+vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0++d%C3%A9tar...&L_PAYMENTREQUEST_0_AMT3=2.15&L_PAYMENTREQUEST_0_QTY3=1&L_PAYMENTREQUEST_0_NUMBER4=246&L_PAYMENTREQUEST_0_NAME4=Destructeur+d%27odeurs+%C2%AB%C2%A0Chiens+%26+Chats%C2%A0%C2%BB&L_PAYMENTREQUEST_0_DESC4=Le+destructeur+d%27odeurs+permet+d%27%C3%A9liminer+les+mauv...&L_PAYMENTREQUEST_0_AMT4=13.25&L_PAYMENTREQUEST_0_QTY4=2&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=37.83&PAYMENTREQUEST_0_AMT=43.83&ADDROVERRIDE=1&EMAIL=mathildeabgrall%40yahoo.fr&PAYMENTREQUEST_0_SHIPTONAME=Mathilde+Abgrall&PAYMENTREQUEST_0_SHIPTOPHONENUM=0618217695&PAYMENTREQUEST_0_SHIPTOSTREET=66+rue+gambetta&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d669293819A329824W&TIMESTAMP=2015%2d12%2d11T10%3a33%3a48Z&CORRELATIONID=10a9c4688cf4c&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=52&L_PAYMENTREQUEST_0_NAME0=Liquide+vaisselle+concentr%C3%A9+Amande+500ml&L_PAYMENTREQUEST_0_DESC0=Liquide+vaisselle+%C3%A9cologique+Amande+certifi%C3%A9+par+l...&L_PAYMENTREQUEST_0_AMT0=1.98&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=165&L_PAYMENTREQUEST_0_NAME1=Bicarbonate+de+soude+m%C3%A9nager&L_PAYMENTREQUEST_0_DESC1=Le+bicarbonate+de+soude+nettoie%2C+d%C3%A9sodorise+et+r%C3%A9c...&L_PAYMENTREQUEST_0_AMT1=2.66&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=169&L_PAYMENTREQUEST_0_NAME2=Acide+citrique%2C+d%C3%A9tartrant+naturel+concentr%C3%A9&L_PAYMENTREQUEST_0_DESC2=Super+d%C3%A9tartrant+naturel+Multi-usages+%3A+surfaces+e...&L_PAYMENTREQUEST_0_AMT2=4.54&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=166&L_PAYMENTREQUEST_0_NAME3=Vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0&L_PAYMENTREQUEST_0_DESC3=Le+vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0++d%C3%A9tar...&L_PAYMENTREQUEST_0_AMT3=2.15&L_PAYMENTREQUEST_0_QTY3=1&L_PAYMENTREQUEST_0_NUMBER4=246&L_PAYMENTREQUEST_0_NAME4=Destructeur+d%27odeurs+%C2%AB%C2%A0Chiens+%26+Chats%C2%A0%C2%BB&L_PAYMENTREQUEST_0_DESC4=Le+destructeur+d%27odeurs+permet+d%27%C3%A9liminer+les+mauv...&L_PAYMENTREQUEST_0_AMT4=13.25&L_PAYMENTREQUEST_0_QTY4=2&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=37.83&PAYMENTREQUEST_0_AMT=43.83&ADDROVERRIDE=1&EMAIL=mathildeabgrall%40yahoo.fr&PAYMENTREQUEST_0_SHIPTONAME=Mathilde+Abgrall&PAYMENTREQUEST_0_SHIPTOPHONENUM=0618217695&PAYMENTREQUEST_0_SHIPTOSTREET=66+rue+gambetta&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-669293819A329824W +Result : TOKEN=EC%2d669293819A329824W&PHONENUM=0618217695&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015%2d12%2d11T10%3a34%3a04Z&CORRELATIONID=cff1c42cebf0f&ACK=Success&VERSION=106&BUILD=18308778&EMAIL=mathildeabgrall%40yahoo%2efr&PAYERID=JG74UKDYDUPBL&PAYERSTATUS=verified&FIRSTNAME=Mathilde&LASTNAME=Abgrall&COUNTRYCODE=FR&SHIPTONAME=Mathilde%20Abgrall&SHIPTOSTREET=66%20rue%20Gambetta&SHIPTOCITY=Rambouillet&SHIPTOZIP=78120&SHIPTOCOUNTRYCODE=FR&SHIPTOPHONENUM=0618217695&SHIPTOCOUNTRYNAME=France&ADDRESSSTATUS=Confirmed&CURRENCYCODE=EUR&AMT=43%2e83&ITEMAMT=37%2e83&SHIPPINGAMT=6%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&L_NAME0=Liquide%20vaisselle%20concentr%c3%a9%20Amande%20500ml&L_NAME1=Bicarbonate%20de%20soude%20m%c3%a9nager&L_NAME2=Acide%20citrique%2c%20d%c3%a9tartrant%20naturel%20concentr%c3%a9&L_NAME3=Vinaigre%20m%c3%a9nager%20forte%20concentration%2012%c2%b0&L_NAME4=Destructeur%20d%27odeurs%20%c2%ab%c2%a0Chiens%20%26%20Chats%c2%a0%c2%bb&L_NUMBER0=52&L_NUMBER1=165&L_NUMBER2=169&L_NUMBER3=166&L_NUMBER4=246&L_QTY0=1&L_QTY1=1&L_QTY2=1&L_QTY3=1&L_QTY4=2&L_TAXAMT0=0%2e00&L_TAXAMT1=0%2e00&L_TAXAMT2=0%2e00&L_TAXAMT3=0%2e00&L_TAXAMT4=0%2e00&L_AMT0=1%2e98&L_AMT1=2%2e66&L_AMT2=4%2e54&L_AMT3=2%2e15&L_AMT4=13%2e25&L_DESC0=Liquide%20vaisselle%20%c3%a9cologique%20Amande%20certifi%c3%a9%20par%20l%2e%2e%2e&L_DESC1=Le%20bicarbonate%20de%20soude%20nettoie%2c%20d%c3%a9sodorise%20et%20r%c3%a9c%2e%2e%2e&L_DESC2=Super%20d%c3%a9tartrant%20naturel%20Multi%2dusages%20%3a%20surfaces%20e%2e%2e%2e&L_DESC3=Le%20vinaigre%20m%c3%a9nager%20forte%20concentration%2012%c2%b0%20%20d%c3%a9tar%2e%2e%2e&L_DESC4=Le%20destructeur%20d%27odeurs%20permet%20d%27%c3%a9liminer%20les%20mauv%2e%2e%2e&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_AMT=43%2e83&PAYMENTREQUEST_0_ITEMAMT=37%2e83&PAYMENTREQUEST_0_SHIPPINGAMT=6%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=contact%40toutpratique%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Mathilde%20Abgrall&PAYMENTREQUEST_0_SHIPTOSTREET=66%20rue%20Gambetta&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOZIP=78120&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOPHONENUM=0618217695&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=France&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&L_PAYMENTREQUEST_0_NAME0=Liquide%20vaisselle%20concentr%c3%a9%20Amande%20500ml&L_PAYMENTREQUEST_0_NAME1=Bicarbonate%20de%20soude%20m%c3%a9nager&L_PAYMENTREQUEST_0_NAME2=Acide%20citrique%2c%20d%c3%a9tartrant%20naturel%20concentr%c3%a9&L_PAYMENTREQUEST_0_NAME3=Vinaigre%20m%c3%a9nager%20forte%20concentration%2012%c2%b0&L_PAYMENTREQUEST_0_NAME4=Destructeur%20d%27odeurs%20%c2%ab%c2%a0Chiens%20%26%20Chats%c2%a0%c2%bb&L_PAYMENTREQUEST_0_NUMBER0=52&L_PAYMENTREQUEST_0_NUMBER1=165&L_PAYMENTREQUEST_0_NUMBER2=169&L_PAYMENTREQUEST_0_NUMBER3=166&L_PAYMENTREQUEST_0_NUMBER4=246&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_QTY3=1&L_PAYMENTREQUEST_0_QTY4=2&L_PAYMENTREQUEST_0_TAXAMT0=0%2e00&L_PAYMENTREQUEST_0_TAXAMT1=0%2e00&L_PAYMENTREQUEST_0_TAXAMT2=0%2e00&L_PAYMENTREQUEST_0_TAXAMT3=0%2e00&L_PAYMENTREQUEST_0_TAXAMT4=0%2e00&L_PAYMENTREQUEST_0_AMT0=1%2e98&L_PAYMENTREQUEST_0_AMT1=2%2e66&L_PAYMENTREQUEST_0_AMT2=4%2e54&L_PAYMENTREQUEST_0_AMT3=2%2e15&L_PAYMENTREQUEST_0_AMT4=13%2e25&L_PAYMENTREQUEST_0_DESC0=Liquide%20vaisselle%20%c3%a9cologique%20Amande%20certifi%c3%a9%20par%20l%2e%2e%2e&L_PAYMENTREQUEST_0_DESC1=Le%20bicarbonate%20de%20soude%20nettoie%2c%20d%c3%a9sodorise%20et%20r%c3%a9c%2e%2e%2e&L_PAYMENTREQUEST_0_DESC2=Super%20d%c3%a9tartrant%20naturel%20Multi%2dusages%20%3a%20surfaces%20e%2e%2e%2e&L_PAYMENTREQUEST_0_DESC3=Le%20vinaigre%20m%c3%a9nager%20forte%20concentration%2012%c2%b0%20%20d%c3%a9tar%2e%2e%2e&L_PAYMENTREQUEST_0_DESC4=Le%20destructeur%20d%27odeurs%20permet%20d%27%c3%a9liminer%20les%20mauv%2e%2e%2e&PAYMENTREQUESTINFO_0_ERRORCODE=0 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-669293819A329824W + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-669293819A329824W&PAYERID=JG74UKDYDUPBL&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=52&L_PAYMENTREQUEST_0_NAME0=Liquide+vaisselle+concentr%C3%A9+Amande+500ml&L_PAYMENTREQUEST_0_DESC0=Liquide+vaisselle+%C3%A9cologique+Amande+certifi%C3%A9+par+l...&L_PAYMENTREQUEST_0_AMT0=1.98&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=165&L_PAYMENTREQUEST_0_NAME1=Bicarbonate+de+soude+m%C3%A9nager&L_PAYMENTREQUEST_0_DESC1=Le+bicarbonate+de+soude+nettoie%2C+d%C3%A9sodorise+et+r%C3%A9c...&L_PAYMENTREQUEST_0_AMT1=2.66&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=169&L_PAYMENTREQUEST_0_NAME2=Acide+citrique%2C+d%C3%A9tartrant+naturel+concentr%C3%A9&L_PAYMENTREQUEST_0_DESC2=Super+d%C3%A9tartrant+naturel+Multi-usages+%3A+surfaces+e...&L_PAYMENTREQUEST_0_AMT2=4.54&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=166&L_PAYMENTREQUEST_0_NAME3=Vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0&L_PAYMENTREQUEST_0_DESC3=Le+vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0++d%C3%A9tar...&L_PAYMENTREQUEST_0_AMT3=2.15&L_PAYMENTREQUEST_0_QTY3=1&L_PAYMENTREQUEST_0_NUMBER4=246&L_PAYMENTREQUEST_0_NAME4=Destructeur+d%27odeurs+%C2%AB%C2%A0Chiens+%26+Chats%C2%A0%C2%BB&L_PAYMENTREQUEST_0_DESC4=Le+destructeur+d%27odeurs+permet+d%27%C3%A9liminer+les+mauv...&L_PAYMENTREQUEST_0_AMT4=13.25&L_PAYMENTREQUEST_0_QTY4=2&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=37.83&PAYMENTREQUEST_0_AMT=43.83&ADDROVERRIDE=1&EMAIL=mathildeabgrall%40yahoo.fr&PAYMENTREQUEST_0_SHIPTONAME=Mathilde+Abgrall&PAYMENTREQUEST_0_SHIPTOPHONENUM=0618217695&PAYMENTREQUEST_0_SHIPTOSTREET=66+rue+gambetta&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120 +Result : TOKEN=EC%2d669293819A329824W&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2015%2d12%2d11T10%3a34%3a08Z&CORRELATIONID=990bed3651ae4&ACK=Success&VERSION=106&BUILD=18308778&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=13689077G6979380D&PAYMENTINFO_0_TRANSACTIONTYPE=cart&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2015%2d12%2d11T10%3a34%3a06Z&PAYMENTINFO_0_AMT=43%2e83&PAYMENTINFO_0_FEEAMT=1%2e74&PAYMENTINFO_0_TAXAMT=0%2e00&PAYMENTINFO_0_CURRENCYCODE=EUR&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible%2cUnauthorizedPaymentEligible&PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=26HHW3F34EP34&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-669293819A329824W&PAYERID=JG74UKDYDUPBL&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=52&L_PAYMENTREQUEST_0_NAME0=Liquide+vaisselle+concentr%C3%A9+Amande+500ml&L_PAYMENTREQUEST_0_DESC0=Liquide+vaisselle+%C3%A9cologique+Amande+certifi%C3%A9+par+l...&L_PAYMENTREQUEST_0_AMT0=1.98&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_NUMBER1=165&L_PAYMENTREQUEST_0_NAME1=Bicarbonate+de+soude+m%C3%A9nager&L_PAYMENTREQUEST_0_DESC1=Le+bicarbonate+de+soude+nettoie%2C+d%C3%A9sodorise+et+r%C3%A9c...&L_PAYMENTREQUEST_0_AMT1=2.66&L_PAYMENTREQUEST_0_QTY1=1&L_PAYMENTREQUEST_0_NUMBER2=169&L_PAYMENTREQUEST_0_NAME2=Acide+citrique%2C+d%C3%A9tartrant+naturel+concentr%C3%A9&L_PAYMENTREQUEST_0_DESC2=Super+d%C3%A9tartrant+naturel+Multi-usages+%3A+surfaces+e...&L_PAYMENTREQUEST_0_AMT2=4.54&L_PAYMENTREQUEST_0_QTY2=1&L_PAYMENTREQUEST_0_NUMBER3=166&L_PAYMENTREQUEST_0_NAME3=Vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0&L_PAYMENTREQUEST_0_DESC3=Le+vinaigre+m%C3%A9nager+forte+concentration+12%C2%B0++d%C3%A9tar...&L_PAYMENTREQUEST_0_AMT3=2.15&L_PAYMENTREQUEST_0_QTY3=1&L_PAYMENTREQUEST_0_NUMBER4=246&L_PAYMENTREQUEST_0_NAME4=Destructeur+d%27odeurs+%C2%AB%C2%A0Chiens+%26+Chats%C2%A0%C2%BB&L_PAYMENTREQUEST_0_DESC4=Le+destructeur+d%27odeurs+permet+d%27%C3%A9liminer+les+mauv...&L_PAYMENTREQUEST_0_AMT4=13.25&L_PAYMENTREQUEST_0_QTY4=2&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=37.83&PAYMENTREQUEST_0_AMT=43.83&ADDROVERRIDE=1&EMAIL=mathildeabgrall%40yahoo.fr&PAYMENTREQUEST_0_SHIPTONAME=Mathilde+Abgrall&PAYMENTREQUEST_0_SHIPTOPHONENUM=0618217695&PAYMENTREQUEST_0_SHIPTOSTREET=66+rue+gambetta&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=Rambouillet&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=78120 + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=5&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+A%C3%A9rosol+400ml&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=17.91&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=17.91&PAYMENTREQUEST_0_AMT=20.91&ADDROVERRIDE=1&EMAIL=alice.gostoli%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=Alice+GOSTOLI&PAYMENTREQUEST_0_SHIPTOPHONENUM=0651363073&PAYMENTREQUEST_0_SHIPTOSTREET=28+rue+de+lepante&PAYMENTREQUEST_0_SHIPTOSTREET2=Code+porte+826+1er+%C3%A9tage&PAYMENTREQUEST_0_SHIPTOCITY=Nice&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=06000&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d72R607345N5291132&TIMESTAMP=2015%2d12%2d12T14%3a06%3a46Z&CORRELATIONID=380f2bae6981b&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=5&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+A%C3%A9rosol+400ml&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=17.91&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=17.91&PAYMENTREQUEST_0_AMT=20.91&ADDROVERRIDE=1&EMAIL=alice.gostoli%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=Alice+GOSTOLI&PAYMENTREQUEST_0_SHIPTOPHONENUM=0651363073&PAYMENTREQUEST_0_SHIPTOSTREET=28+rue+de+lepante&PAYMENTREQUEST_0_SHIPTOSTREET2=Code+porte+826+1er+%C3%A9tage&PAYMENTREQUEST_0_SHIPTOCITY=Nice&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=06000&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-72R607345N5291132 +Result : TOKEN=EC%2d72R607345N5291132&PHONENUM=0651363073&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015%2d12%2d12T14%3a07%3a15Z&CORRELATIONID=b9dba708a926b&ACK=Success&VERSION=106&BUILD=18308778&EMAIL=alice%2egostoli%40gmail%2ecom&PAYERID=84S7BHC85C4SJ&PAYERSTATUS=verified&FIRSTNAME=Alice&LASTNAME=Gostoli&COUNTRYCODE=FR&SHIPTONAME=Alice%20GOSTOLI&SHIPTOSTREET=28%20rue%20de%20lepante&SHIPTOSTREET2=Code%20porte%20826%201er%20%c3%a9tage&SHIPTOCITY=Nice&SHIPTOZIP=06000&SHIPTOCOUNTRYCODE=FR&SHIPTOPHONENUM=0651363073&SHIPTOCOUNTRYNAME=France&ADDRESSSTATUS=Confirmed&CURRENCYCODE=EUR&AMT=20%2e91&ITEMAMT=17%2e91&SHIPPINGAMT=3%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&L_NAME0=TEXGUARD%20A%c3%a9rosol%20400ml&L_NUMBER0=5&L_QTY0=1&L_TAXAMT0=0%2e00&L_AMT0=17%2e91&L_DESC0=Produit%20imperm%c3%a9abilisant%20antitache%20pour%20tissus%2c%20cu%2e%2e%2e&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_AMT=20%2e91&PAYMENTREQUEST_0_ITEMAMT=17%2e91&PAYMENTREQUEST_0_SHIPPINGAMT=3%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=contact%40toutpratique%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Alice%20GOSTOLI&PAYMENTREQUEST_0_SHIPTOSTREET=28%20rue%20de%20lepante&PAYMENTREQUEST_0_SHIPTOSTREET2=Code%20porte%20826%201er%20%c3%a9tage&PAYMENTREQUEST_0_SHIPTOCITY=Nice&PAYMENTREQUEST_0_SHIPTOZIP=06000&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOPHONENUM=0651363073&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=France&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&L_PAYMENTREQUEST_0_NAME0=TEXGUARD%20A%c3%a9rosol%20400ml&L_PAYMENTREQUEST_0_NUMBER0=5&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_TAXAMT0=0%2e00&L_PAYMENTREQUEST_0_AMT0=17%2e91&L_PAYMENTREQUEST_0_DESC0=Produit%20imperm%c3%a9abilisant%20antitache%20pour%20tissus%2c%20cu%2e%2e%2e&PAYMENTREQUESTINFO_0_ERRORCODE=0 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-72R607345N5291132 + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-72R607345N5291132&PAYERID=84S7BHC85C4SJ&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=5&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+A%C3%A9rosol+400ml&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=17.91&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=17.91&PAYMENTREQUEST_0_AMT=20.91&ADDROVERRIDE=1&EMAIL=alice.gostoli%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=Alice+GOSTOLI&PAYMENTREQUEST_0_SHIPTOPHONENUM=0651363073&PAYMENTREQUEST_0_SHIPTOSTREET=28+rue+de+lepante&PAYMENTREQUEST_0_SHIPTOSTREET2=Code+porte+826+1er+%C3%A9tage&PAYMENTREQUEST_0_SHIPTOCITY=Nice&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=06000 +Result : TOKEN=EC%2d72R607345N5291132&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2015%2d12%2d12T14%3a07%3a20Z&CORRELATIONID=a73f24754f9f&ACK=Success&VERSION=106&BUILD=18308778&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=21K92029AD948722X&PAYMENTINFO_0_TRANSACTIONTYPE=cart&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2015%2d12%2d12T14%3a07%3a17Z&PAYMENTINFO_0_AMT=20%2e91&PAYMENTINFO_0_FEEAMT=0%2e96&PAYMENTINFO_0_TAXAMT=0%2e00&PAYMENTINFO_0_CURRENCYCODE=EUR&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible%2cUnauthorizedPaymentEligible&PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=26HHW3F34EP34&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-72R607345N5291132&PAYERID=84S7BHC85C4SJ&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=5&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+A%C3%A9rosol+400ml&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=17.91&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=17.91&PAYMENTREQUEST_0_AMT=20.91&ADDROVERRIDE=1&EMAIL=alice.gostoli%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=Alice+GOSTOLI&PAYMENTREQUEST_0_SHIPTOPHONENUM=0651363073&PAYMENTREQUEST_0_SHIPTOSTREET=28+rue+de+lepante&PAYMENTREQUEST_0_SHIPTOSTREET2=Code+porte+826+1er+%C3%A9tage&PAYMENTREQUEST_0_SHIPTOCITY=Nice&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=06000 + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=33.3&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=33.3&PAYMENTREQUEST_0_AMT=39.30&ADDROVERRIDE=1&EMAIL=johann.fabbri%40aliceadsl.fr&PAYMENTREQUEST_0_SHIPTONAME=johann+Fabbri&PAYMENTREQUEST_0_SHIPTOPHONENUM=0614073587&PAYMENTREQUEST_0_SHIPTOSTREET=30+rue+arthur+Rimbaud&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=chateauroux&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=36000&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d3SJ46021EC787842A&TIMESTAMP=2015%2d12%2d12T20%3a33%3a15Z&CORRELATIONID=84851d3aab830&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=33.3&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=33.3&PAYMENTREQUEST_0_AMT=39.30&ADDROVERRIDE=1&EMAIL=johann.fabbri%40aliceadsl.fr&PAYMENTREQUEST_0_SHIPTONAME=johann+Fabbri&PAYMENTREQUEST_0_SHIPTOPHONENUM=0614073587&PAYMENTREQUEST_0_SHIPTOSTREET=30+rue+arthur+Rimbaud&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=chateauroux&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=36000&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-3SJ46021EC787842A +Result : TOKEN=EC%2d3SJ46021EC787842A&PHONENUM=0614073587&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015%2d12%2d12T20%3a33%3a35Z&CORRELATIONID=ade01d5db8fe5&ACK=Success&VERSION=106&BUILD=18308778&EMAIL=johann%2efabbri%40aliceadsl%2efr&PAYERID=TH9ML9DUN4GBC&PAYERSTATUS=verified&FIRSTNAME=johann&LASTNAME=fabbri&COUNTRYCODE=FR&SHIPTONAME=johann%20fabbri&SHIPTOSTREET=30%20RUE%20ARTHUR%20RIMBAUD&SHIPTOCITY=CHATEAUROUX&SHIPTOZIP=36000&SHIPTOCOUNTRYCODE=FR&SHIPTOPHONENUM=0614073587&SHIPTOCOUNTRYNAME=France&ADDRESSSTATUS=Confirmed&CURRENCYCODE=EUR&AMT=39%2e30&ITEMAMT=33%2e30&SHIPPINGAMT=6%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&L_NAME0=TEXGUARD%20%2d%20lot%20de%202%20A%c3%a9rosols&L_NUMBER0=3&L_QTY0=1&L_TAXAMT0=0%2e00&L_AMT0=33%2e30&L_DESC0=Produit%20imperm%c3%a9abilisant%20antitache%20pour%20tissus%2c%20cu%2e%2e%2e&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_AMT=39%2e30&PAYMENTREQUEST_0_ITEMAMT=33%2e30&PAYMENTREQUEST_0_SHIPPINGAMT=6%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=contact%40toutpratique%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=johann%20fabbri&PAYMENTREQUEST_0_SHIPTOSTREET=30%20RUE%20ARTHUR%20RIMBAUD&PAYMENTREQUEST_0_SHIPTOCITY=CHATEAUROUX&PAYMENTREQUEST_0_SHIPTOZIP=36000&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOPHONENUM=0614073587&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=France&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&L_PAYMENTREQUEST_0_NAME0=TEXGUARD%20%2d%20lot%20de%202%20A%c3%a9rosols&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_TAXAMT0=0%2e00&L_PAYMENTREQUEST_0_AMT0=33%2e30&L_PAYMENTREQUEST_0_DESC0=Produit%20imperm%c3%a9abilisant%20antitache%20pour%20tissus%2c%20cu%2e%2e%2e&PAYMENTREQUESTINFO_0_ERRORCODE=0 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-3SJ46021EC787842A + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-3SJ46021EC787842A&PAYERID=TH9ML9DUN4GBC&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=33.3&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=33.3&PAYMENTREQUEST_0_AMT=39.30&ADDROVERRIDE=1&EMAIL=johann.fabbri%40aliceadsl.fr&PAYMENTREQUEST_0_SHIPTONAME=johann+Fabbri&PAYMENTREQUEST_0_SHIPTOPHONENUM=0614073587&PAYMENTREQUEST_0_SHIPTOSTREET=30+rue+arthur+Rimbaud&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=chateauroux&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=36000 +Result : TOKEN=EC%2d3SJ46021EC787842A&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2015%2d12%2d12T20%3a33%3a39Z&CORRELATIONID=940eb88e21a2&ACK=Success&VERSION=106&BUILD=18308778&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=8B356758S8933333K&PAYMENTINFO_0_TRANSACTIONTYPE=cart&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2015%2d12%2d12T20%3a33%3a37Z&PAYMENTINFO_0_AMT=39%2e30&PAYMENTINFO_0_FEEAMT=1%2e59&PAYMENTINFO_0_TAXAMT=0%2e00&PAYMENTINFO_0_CURRENCYCODE=EUR&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible%2cUnauthorizedPaymentEligible&PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=26HHW3F34EP34&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-3SJ46021EC787842A&PAYERID=TH9ML9DUN4GBC&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=3&L_PAYMENTREQUEST_0_NAME0=TEXGUARD+-+lot+de+2+A%C3%A9rosols&L_PAYMENTREQUEST_0_DESC0=Produit+imperm%C3%A9abilisant+antitache+pour+tissus%2C+cu...&L_PAYMENTREQUEST_0_AMT0=33.3&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=33.3&PAYMENTREQUEST_0_AMT=39.30&ADDROVERRIDE=1&EMAIL=johann.fabbri%40aliceadsl.fr&PAYMENTREQUEST_0_SHIPTONAME=johann+Fabbri&PAYMENTREQUEST_0_SHIPTOPHONENUM=0614073587&PAYMENTREQUEST_0_SHIPTOSTREET=30+rue+arthur+Rimbaud&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=chateauroux&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=36000 + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=167&L_PAYMENTREQUEST_0_NAME0=Pierre+d%27argile&L_PAYMENTREQUEST_0_DESC0=La+pierre+d%27argile+senteur+naturelle+de+citron+d%C3%A9g...&L_PAYMENTREQUEST_0_AMT0=8.36&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.36&PAYMENTREQUEST_0_AMT=11.36&ADDROVERRIDE=1&EMAIL=atgi%40free.fr&PAYMENTREQUEST_0_SHIPTONAME=Alain+Tringali&PAYMENTREQUEST_0_SHIPTOPHONENUM=0612251505&PAYMENTREQUEST_0_SHIPTOSTREET=50+rur+des+ch%C3%A2taigniers&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=BIGANOS&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=33380&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d33656023BK205312W&TIMESTAMP=2015%2d12%2d13T01%3a05%3a18Z&CORRELATIONID=2c040b7467689&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=167&L_PAYMENTREQUEST_0_NAME0=Pierre+d%27argile&L_PAYMENTREQUEST_0_DESC0=La+pierre+d%27argile+senteur+naturelle+de+citron+d%C3%A9g...&L_PAYMENTREQUEST_0_AMT0=8.36&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.36&PAYMENTREQUEST_0_AMT=11.36&ADDROVERRIDE=1&EMAIL=atgi%40free.fr&PAYMENTREQUEST_0_SHIPTONAME=Alain+Tringali&PAYMENTREQUEST_0_SHIPTOPHONENUM=0612251505&PAYMENTREQUEST_0_SHIPTOSTREET=50+rur+des+ch%C3%A2taigniers&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=BIGANOS&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=33380&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-33656023BK205312W +Result : TOKEN=EC%2d33656023BK205312W&PHONENUM=0612251505&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015%2d12%2d13T01%3a05%3a42Z&CORRELATIONID=eedd2a824d0de&ACK=Success&VERSION=106&BUILD=18308778&EMAIL=atgi%40free%2efr&PAYERID=7H6R7XK7TS29C&PAYERSTATUS=verified&FIRSTNAME=Alain&LASTNAME=Tringali&COUNTRYCODE=FR&SHIPTONAME=Alain%20Tringali&SHIPTOSTREET=50%20rur%20des%20ch%c3%a2taigniers&SHIPTOCITY=BIGANOS&SHIPTOZIP=33380&SHIPTOCOUNTRYCODE=FR&SHIPTOPHONENUM=0612251505&SHIPTOCOUNTRYNAME=France&ADDRESSSTATUS=Confirmed&CURRENCYCODE=EUR&AMT=11%2e36&ITEMAMT=8%2e36&SHIPPINGAMT=3%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&L_NAME0=Pierre%20d%27argile&L_NUMBER0=167&L_QTY0=1&L_TAXAMT0=0%2e00&L_AMT0=8%2e36&L_DESC0=La%20pierre%20d%27argile%20senteur%20naturelle%20de%20citron%20d%c3%a9g%2e%2e%2e&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_AMT=11%2e36&PAYMENTREQUEST_0_ITEMAMT=8%2e36&PAYMENTREQUEST_0_SHIPPINGAMT=3%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=contact%40toutpratique%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Alain%20Tringali&PAYMENTREQUEST_0_SHIPTOSTREET=50%20rur%20des%20ch%c3%a2taigniers&PAYMENTREQUEST_0_SHIPTOCITY=BIGANOS&PAYMENTREQUEST_0_SHIPTOZIP=33380&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOPHONENUM=0612251505&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=France&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&L_PAYMENTREQUEST_0_NAME0=Pierre%20d%27argile&L_PAYMENTREQUEST_0_NUMBER0=167&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_TAXAMT0=0%2e00&L_PAYMENTREQUEST_0_AMT0=8%2e36&L_PAYMENTREQUEST_0_DESC0=La%20pierre%20d%27argile%20senteur%20naturelle%20de%20citron%20d%c3%a9g%2e%2e%2e&PAYMENTREQUESTINFO_0_ERRORCODE=0 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-33656023BK205312W + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-33656023BK205312W&PAYERID=7H6R7XK7TS29C&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=167&L_PAYMENTREQUEST_0_NAME0=Pierre+d%27argile&L_PAYMENTREQUEST_0_DESC0=La+pierre+d%27argile+senteur+naturelle+de+citron+d%C3%A9g...&L_PAYMENTREQUEST_0_AMT0=8.36&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.36&PAYMENTREQUEST_0_AMT=11.36&ADDROVERRIDE=1&EMAIL=atgi%40free.fr&PAYMENTREQUEST_0_SHIPTONAME=Alain+Tringali&PAYMENTREQUEST_0_SHIPTOPHONENUM=0612251505&PAYMENTREQUEST_0_SHIPTOSTREET=50+rur+des+ch%C3%A2taigniers&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=BIGANOS&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=33380 +Result : TOKEN=EC%2d33656023BK205312W&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2015%2d12%2d13T01%3a05%3a44Z&CORRELATIONID=1b7f746963049&ACK=Success&VERSION=106&BUILD=18308778&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=1FY05033X47295821&PAYMENTINFO_0_TRANSACTIONTYPE=cart&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2015%2d12%2d13T01%3a05%3a44Z&PAYMENTINFO_0_AMT=11%2e36&PAYMENTINFO_0_FEEAMT=0%2e64&PAYMENTINFO_0_TAXAMT=0%2e00&PAYMENTINFO_0_CURRENCYCODE=EUR&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible%2cUnauthorizedPaymentEligible&PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=26HHW3F34EP34&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-33656023BK205312W&PAYERID=7H6R7XK7TS29C&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=167&L_PAYMENTREQUEST_0_NAME0=Pierre+d%27argile&L_PAYMENTREQUEST_0_DESC0=La+pierre+d%27argile+senteur+naturelle+de+citron+d%C3%A9g...&L_PAYMENTREQUEST_0_AMT0=8.36&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=3.00&PAYMENTREQUEST_0_ITEMAMT=8.36&PAYMENTREQUEST_0_AMT=11.36&ADDROVERRIDE=1&EMAIL=atgi%40free.fr&PAYMENTREQUEST_0_SHIPTONAME=Alain+Tringali&PAYMENTREQUEST_0_SHIPTOPHONENUM=0612251505&PAYMENTREQUEST_0_SHIPTOSTREET=50+rur+des+ch%C3%A2taigniers&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=BIGANOS&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=33380 + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=103&L_PAYMENTREQUEST_0_NAME0=Huile+100+%25+naturelle+Ricin&L_PAYMENTREQUEST_0_DESC0=Floressance+par+nature+a+s%C3%A9lectionn%C3%A9+l%27huile+de+ri...&L_PAYMENTREQUEST_0_AMT0=5.6&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=5.6&PAYMENTREQUEST_0_AMT=11.60&ADDROVERRIDE=1&EMAIL=veromi77%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=veronique+mignot&PAYMENTREQUEST_0_SHIPTOPHONENUM=0160058144&PAYMENTREQUEST_0_SHIPTOSTREET=10+rue+de+girvan&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=torcy&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=77200&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf +Result : TOKEN=EC%2d82814650LU829152R&TIMESTAMP=2015%2d12%2d13T15%3a15%3a05Z&CORRELATIONID=790e46ee7ad1&ACK=Success&VERSION=106&BUILD=18308778 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=SetExpressCheckout&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&CANCELURL=http%3A%2F%2Fwww.toutpratique.com%2Fboutique%2Fcommande%2F%3Fpaypal_ec_canceled%3D1%26&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=103&L_PAYMENTREQUEST_0_NAME0=Huile+100+%25+naturelle+Ricin&L_PAYMENTREQUEST_0_DESC0=Floressance+par+nature+a+s%C3%A9lectionn%C3%A9+l%27huile+de+ri...&L_PAYMENTREQUEST_0_AMT0=5.6&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=5.6&PAYMENTREQUEST_0_AMT=11.60&ADDROVERRIDE=1&EMAIL=veromi77%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=veronique+mignot&PAYMENTREQUEST_0_SHIPTOPHONENUM=0160058144&PAYMENTREQUEST_0_SHIPTOSTREET=10+rue+de+girvan&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=torcy&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=77200&SOLUTIONTYPE=Sole&LANDINGPAGE=Login&USER=contact_api1.toutpratique.com&PWD=AXLLCYBCAL4KCCFN&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-82814650LU829152R +Result : TOKEN=EC%2d82814650LU829152R&PHONENUM=0160058144&BILLINGAGREEMENTACCEPTEDSTATUS=0&CHECKOUTSTATUS=PaymentActionNotInitiated&TIMESTAMP=2015%2d12%2d13T15%3a15%3a21Z&CORRELATIONID=3329e021f0264&ACK=Success&VERSION=106&BUILD=18308778&EMAIL=veromi77%40hotmail%2efr&PAYERID=8YEY3S9SL78P8&PAYERSTATUS=verified&FIRSTNAME=Veronique&LASTNAME=Mignot&COUNTRYCODE=FR&SHIPTONAME=Veronique%20Mignot&SHIPTOSTREET=10%20rue%20de%20girvan&SHIPTOCITY=TORCY&SHIPTOZIP=77200&SHIPTOCOUNTRYCODE=FR&SHIPTOPHONENUM=0160058144&SHIPTOCOUNTRYNAME=France&ADDRESSSTATUS=Confirmed&CURRENCYCODE=EUR&AMT=11%2e60&ITEMAMT=5%2e60&SHIPPINGAMT=6%2e00&HANDLINGAMT=0%2e00&TAXAMT=0%2e00&INSURANCEAMT=0%2e00&SHIPDISCAMT=0%2e00&INSURANCEOPTIONOFFERED=false&L_NAME0=Huile%20100%20%25%20naturelle%20Ricin&L_NUMBER0=103&L_QTY0=1&L_TAXAMT0=0%2e00&L_AMT0=5%2e60&L_DESC0=Floressance%20par%20nature%20a%20s%c3%a9lectionn%c3%a9%20l%27huile%20de%20ri%2e%2e%2e&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_AMT=11%2e60&PAYMENTREQUEST_0_ITEMAMT=5%2e60&PAYMENTREQUEST_0_SHIPPINGAMT=6%2e00&PAYMENTREQUEST_0_HANDLINGAMT=0%2e00&PAYMENTREQUEST_0_TAXAMT=0%2e00&PAYMENTREQUEST_0_INSURANCEAMT=0%2e00&PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00&PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=contact%40toutpratique%2ecom&PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false&PAYMENTREQUEST_0_SHIPTONAME=Veronique%20Mignot&PAYMENTREQUEST_0_SHIPTOSTREET=10%20rue%20de%20girvan&PAYMENTREQUEST_0_SHIPTOCITY=TORCY&PAYMENTREQUEST_0_SHIPTOZIP=77200&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOPHONENUM=0160058144&PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=France&PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed&L_PAYMENTREQUEST_0_NAME0=Huile%20100%20%25%20naturelle%20Ricin&L_PAYMENTREQUEST_0_NUMBER0=103&L_PAYMENTREQUEST_0_QTY0=1&L_PAYMENTREQUEST_0_TAXAMT0=0%2e00&L_PAYMENTREQUEST_0_AMT0=5%2e60&L_PAYMENTREQUEST_0_DESC0=Floressance%20par%20nature%20a%20s%c3%a9lectionn%c3%a9%20l%27huile%20de%20ri%2e%2e%2e&PAYMENTREQUESTINFO_0_ERRORCODE=0 +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=GetExpressCheckoutDetails&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-82814650LU829152R + [4] => Send with CURL method successful +) +Host : api-3t.paypal.com +Request : METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-82814650LU829152R&PAYERID=8YEY3S9SL78P8&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=103&L_PAYMENTREQUEST_0_NAME0=Huile+100+%25+naturelle+Ricin&L_PAYMENTREQUEST_0_DESC0=Floressance+par+nature+a+s%C3%A9lectionn%C3%A9+l%27huile+de+ri...&L_PAYMENTREQUEST_0_AMT0=5.6&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=5.6&PAYMENTREQUEST_0_AMT=11.60&ADDROVERRIDE=1&EMAIL=veromi77%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=veronique+mignot&PAYMENTREQUEST_0_SHIPTOPHONENUM=0160058144&PAYMENTREQUEST_0_SHIPTOSTREET=10+rue+de+girvan&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=torcy&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=77200 +Result : TOKEN=EC%2d82814650LU829152R&SUCCESSPAGEREDIRECTREQUESTED=false&TIMESTAMP=2015%2d12%2d13T15%3a15%3a24Z&CORRELATIONID=daef371914894&ACK=Success&VERSION=106&BUILD=18308778&INSURANCEOPTIONSELECTED=false&SHIPPINGOPTIONISDEFAULT=false&PAYMENTINFO_0_TRANSACTIONID=1PN46868A83921403&PAYMENTINFO_0_TRANSACTIONTYPE=cart&PAYMENTINFO_0_PAYMENTTYPE=instant&PAYMENTINFO_0_ORDERTIME=2015%2d12%2d13T15%3a15%3a22Z&PAYMENTINFO_0_AMT=11%2e60&PAYMENTINFO_0_FEEAMT=0%2e64&PAYMENTINFO_0_TAXAMT=0%2e00&PAYMENTINFO_0_CURRENCYCODE=EUR&PAYMENTINFO_0_PAYMENTSTATUS=Completed&PAYMENTINFO_0_PENDINGREASON=None&PAYMENTINFO_0_REASONCODE=None&PAYMENTINFO_0_PROTECTIONELIGIBILITY=Eligible&PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE=ItemNotReceivedEligible%2cUnauthorizedPaymentEligible&PAYMENTINFO_0_SECUREMERCHANTACCOUNTID=26HHW3F34EP34&PAYMENTINFO_0_ERRORCODE=0&PAYMENTINFO_0_ACK=Success +Logs : Array +( + [0] => Making new connection to 'api-3t.paypal.com/nvp' + [1] => Connect with CURL method successful + [2] => Sending this params: + [3] => METHOD=DoExpressCheckoutPayment&VERSION=106&PWD=AXLLCYBCAL4KCCFN&USER=contact_api1.toutpratique.com&SIGNATURE=AFcWxV21C7fd0v3bYYYRCpSSRl31AN77TSfMYqymndItFnF.yjQu5ZSf&TOKEN=EC-82814650LU829152R&PAYERID=8YEY3S9SL78P8&RETURNURL=http%3A%2F%2Fwww.toutpratique.com%2Fmodules%2Fpaypal%2Fexpress_checkout%2Fpayment.php&NOSHIPPING=1&BUTTONSOURCE=PRESTASHOP_EC&L_PAYMENTREQUEST_0_NUMBER0=103&L_PAYMENTREQUEST_0_NAME0=Huile+100+%25+naturelle+Ricin&L_PAYMENTREQUEST_0_DESC0=Floressance+par+nature+a+s%C3%A9lectionn%C3%A9+l%27huile+de+ri...&L_PAYMENTREQUEST_0_AMT0=5.6&L_PAYMENTREQUEST_0_QTY0=1&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_CURRENCYCODE=EUR&PAYMENTREQUEST_0_SHIPPINGAMT=6.00&PAYMENTREQUEST_0_ITEMAMT=5.6&PAYMENTREQUEST_0_AMT=11.60&ADDROVERRIDE=1&EMAIL=veromi77%40hotmail.fr&PAYMENTREQUEST_0_SHIPTONAME=veronique+mignot&PAYMENTREQUEST_0_SHIPTOPHONENUM=0160058144&PAYMENTREQUEST_0_SHIPTOSTREET=10+rue+de+girvan&PAYMENTREQUEST_0_SHIPTOSTREET2=&PAYMENTREQUEST_0_SHIPTOCITY=torcy&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=FR&PAYMENTREQUEST_0_SHIPTOZIP=77200 + [4] => Send with CURL method successful +) diff --git a/modules/pscleaner/CHANGELOG.txt b/modules/pscleaner/CHANGELOG.txt new file mode 100644 index 00000000..187e515e --- /dev/null +++ b/modules/pscleaner/CHANGELOG.txt @@ -0,0 +1,6 @@ +2014-04-17 11:25:39 +0200 [-] MO : pscleaner - Fix 1.5 ps_version_compliancy issue +2014-04-09 17:21:40 +0200 // Add version to config.xml +2014-04-04 14:28:26 +0200 [MO] Fix error when homeslider isn't installed +2014-03-31 19:12:05 +0200 [-] MO : pscleaner - FixBug #PSCFV-11805 - Delete home and root categories on 1.5 +2014-03-24 18:26:42 +0100 / MO pscleaner : ps_versions_compliancy added +2014-03-21 10:55:18 +0100 Initial commit diff --git a/modules/pscleaner/Readme.md b/modules/pscleaner/Readme.md new file mode 100644 index 00000000..8259be64 --- /dev/null +++ b/modules/pscleaner/Readme.md @@ -0,0 +1,37 @@ +# PrestaShop Cleaner + +## About + +Check and fix functional integrity constraints and remove default data + +## Contributing + +PrestaShop modules are open-source extensions to the PrestaShop e-commerce solution. Everyone is welcome and even encouraged to contribute with their own improvements. + +### Requirements + +Contributors **must** follow the following rules: + +* **Make your Pull Request on the "dev" branch**, NOT the "master" branch. +* Do not update the module's version number. +* Follow [the coding standards][1]. + +### Process in details + +Contributors wishing to edit a module's files should follow the following process: + +1. Create your GitHub account, if you do not have one already. +2. Fork the pscleaner project to your GitHub account. +3. Clone your fork to your local machine in the ```/modules``` directory of your PrestaShop installation. +4. Create a branch in your local clone of the module for your changes. +5. Change the files in your branch. Be sure to follow [the coding standards][1]! +6. Push your changed branch to your fork in your GitHub account. +7. Create a pull request for your changes **on the _'dev'_ branch** of the module's project. Be sure to follow [the commit message norm][2] in your pull request. If you need help to make a pull request, read the [Github help page about creating pull requests][3]. +8. Wait for one of the core developers either to include your change in the codebase, or to comment on possible improvements you should make to your code. + +That's it: you have contributed to this open-source project! Congratulations! + +[1]: http://doc.prestashop.com/display/PS16/Coding+Standards +[2]: http://doc.prestashop.com/display/PS16/How+to+write+a+commit+message +[3]: https://help.github.com/articles/using-pull-requests + diff --git a/modules/pscleaner/config.xml b/modules/pscleaner/config.xml new file mode 100644 index 00000000..00a1409f --- /dev/null +++ b/modules/pscleaner/config.xml @@ -0,0 +1,12 @@ + + + pscleaner + + + + + + 1 + 0 + + diff --git a/modules/pscleaner/config_fr.xml b/modules/pscleaner/config_fr.xml new file mode 100644 index 00000000..9a56edb4 --- /dev/null +++ b/modules/pscleaner/config_fr.xml @@ -0,0 +1,12 @@ + + + pscleaner + + + + + + 1 + 0 + + \ No newline at end of file diff --git a/modules/pscleaner/index.php b/modules/pscleaner/index.php new file mode 100644 index 00000000..a41987df --- /dev/null +++ b/modules/pscleaner/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/pscleaner/logo.gif b/modules/pscleaner/logo.gif new file mode 100644 index 00000000..667cba30 Binary files /dev/null and b/modules/pscleaner/logo.gif differ diff --git a/modules/pscleaner/logo.png b/modules/pscleaner/logo.png new file mode 100644 index 00000000..0d3efb27 Binary files /dev/null and b/modules/pscleaner/logo.png differ diff --git a/modules/pscleaner/pscleaner.php b/modules/pscleaner/pscleaner.php new file mode 100644 index 00000000..d7298ad1 --- /dev/null +++ b/modules/pscleaner/pscleaner.php @@ -0,0 +1,758 @@ + + * @copyright 2007-2014 PrestaShop SA + * @version Release: $Revision: 7060 $ + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + */ + +if (!defined('_CAN_LOAD_FILES_')) + exit; + +class PSCleaner extends Module +{ + public function __construct() + { + $this->name = 'pscleaner'; + $this->tab = 'administration'; + $this->version = '1.8.4'; + $this->author = 'PrestaShop'; + $this->need_instance = 0; + if (version_compare(_PS_VERSION_, '1.5.0.0 ', '>=')) + $this->multishop_context = Shop::CONTEXT_ALL; + + $this->bootstrap = true; + parent::__construct(); + + $this->displayName = $this->l('PrestaShop Cleaner'); + $this->description = $this->l('Check and fix functional integrity constraints and remove default data'); + $this->secure_key = Tools::encrypt($this->name); + } + + protected function getMultiShopValues($key) + { + if (version_compare(_PS_VERSION_, '1.6.0.3', '>=') === true) + return Configuration::getMultiShopValues($key); + else + { + $shops = Shop::getShops(false, null, true); + $id_lang = (int) $this->context->language->id; + $results = array(); + array_push($results, Configuration::get($key)); + + foreach ($shops as $id_shop) + array_push($results, Configuration::get($key, $id_lang, null, $id_shop)); + + return $results; + } + } + + public function getContent() + { + $html = '

    '.$this->l('Be really careful with this tool - There is no possible rollback!').'

    '; + if (Tools::isSubmit('submitCheckAndFix')) + { + $logs = self::checkAndFix(); + if (count($logs)) + { + $conf = $this->l('The following queries successfuly fixed broken data:').'
      '; + foreach ($logs as $query => $entries) + $conf .= '
    • '.Tools::htmlentitiesUTF8($query).'
      '.sprintf($this->l('%d line(s)'), $entries).'
    • '; + $conf .= '
    '; + } + else + $conf = $this->l('Nothing that need to be fixed'); + $html .= $this->displayConfirmation($conf); + } + elseif (Tools::isSubmit('submitCleanAndOptimize')) + { + $logs = self::cleanAndOptimize(); + if (count($logs)) + { + $conf = $this->l('The following queries successfuly cleaned your database:').'
      '; + foreach ($logs as $query => $entries) + $conf .= '
    • '.Tools::htmlentitiesUTF8($query).'
      '.sprintf($this->l('%d line(s)'), $entries).'
    • '; + $conf .= '
    '; + } + else + $conf = $this->l('Nothing that need to be cleaned'); + $html .= $this->displayConfirmation($conf); + } + elseif (Tools::getValue('submitTruncateCatalog') && Tools::getValue('checkTruncateCatalog')) + { + self::truncate('catalog'); + $html .= $this->displayConfirmation($this->l('Catalog truncated')); + } + elseif (Tools::getValue('submitTruncateSales') && Tools::getValue('checkTruncateSales')) + { + self::truncate('sales'); + $html .= $this->displayConfirmation($this->l('Orders and customers truncated')); + } + + // d($_POST); + + $html .= ' + '; + + return $html.$this->renderForm(); + } + + public static function checkAndFix() + { + $db = Db::getInstance(); + $logs = array(); + + // Remove doubles in the configuration + $filtered_configuration = array(); + $result = $db->ExecuteS('SELECT * FROM '._DB_PREFIX_.'configuration'); + foreach ($result as $row) + { + $key = $row['id_shop_group'].'-|-'.$row['id_shop'].'-|-'.$row['name']; + if (in_array($key, $filtered_configuration)) + { + $query = 'DELETE FROM '._DB_PREFIX_.'configuration WHERE id_configuration = '.(int)$row['id_configuration']; + $db->Execute($query); + $logs[$query] = 1; + } + else + $filtered_configuration[] = $key; + } + unset($filtered_configuration); + + // Remove inexisting or monolanguage configuration value from configuration_lang + $query = 'DELETE FROM `'._DB_PREFIX_.'configuration_lang` + WHERE `id_configuration` NOT IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration`) + OR `id_configuration` IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE name IS NULL OR name = "")'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + + // Simple Cascade Delete + $queries = array( + // 0 => DELETE FROM __table__, 1 => WHERE __id__ NOT IN, 2 => NOT IN __table__, 3 => __id__ used in the "NOT IN" table, 4 => module_name + array('access', 'id_profile', 'profile', 'id_profile'), + array('access', 'id_tab', 'tab', 'id_tab'), + array('accessory', 'id_product_1', 'product', 'id_product'), + array('accessory', 'id_product_2', 'product', 'id_product'), + array('address_format', 'id_country', 'country', 'id_country'), + array('attribute', 'id_attribute_group', 'attribute_group', 'id_attribute_group'), + array('carrier_group', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_group', 'id_group', 'group', 'id_group'), + array('carrier_zone', 'id_carrier', 'carrier', 'id_carrier'), + array('carrier_zone', 'id_zone', 'zone', 'id_zone'), + array('cart_cart_rule', 'id_cart', 'cart', 'id_cart'), + array('cart_product', 'id_cart', 'cart', 'id_cart'), + array('cart_rule_carrier', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('cart_rule_combination', 'id_cart_rule_1', 'cart_rule', 'id_cart_rule'), + array('cart_rule_combination', 'id_cart_rule_2', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_country', 'id_country', 'country', 'id_country'), + array('cart_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_group', 'id_group', 'group', 'id_group'), + array('cart_rule_product_rule_group', 'id_cart_rule', 'cart_rule', 'id_cart_rule'), + array('cart_rule_product_rule', 'id_product_rule_group', 'cart_rule_product_rule_group', 'id_product_rule_group'), + array('cart_rule_product_rule_value', 'id_product_rule', 'cart_rule_product_rule', 'id_product_rule'), + array('category_group', 'id_category', 'category', 'id_category'), + array('category_group', 'id_group', 'group', 'id_group'), + array('category_product', 'id_category', 'category', 'id_category'), + array('category_product', 'id_product', 'product', 'id_product'), + array('cms', 'id_cms_category', 'cms_category', 'id_cms_category'), + array('cms_block', 'id_cms_category', 'cms_category', 'id_cms_category', 'blockcms'), + array('cms_block_page', 'id_cms', 'cms', 'id_cms', 'blockcms'), + array('cms_block_page', 'id_cms_block', 'cms_block', 'id_cms_block', 'blockcms'), + array('compare', 'id_customer', 'customer', 'id_customer'), + array('compare_product', 'id_compare', 'compare', 'id_compare'), + array('compare_product', 'id_product', 'product', 'id_product'), + array('connections', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('connections', 'id_shop', 'shop', 'id_shop'), + array('connections_page', 'id_connections', 'connections', 'id_connections'), + array('connections_page', 'id_page', 'page', 'id_page'), + array('connections_source', 'id_connections', 'connections', 'id_connections'), + array('customer', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('customer', 'id_shop', 'shop', 'id_shop'), + array('customer_group', 'id_group', 'group', 'id_group'), + array('customer_group', 'id_customer', 'customer', 'id_customer'), + array('customer_message', 'id_customer_thread', 'customer_thread', 'id_customer_thread'), + array('customer_thread', 'id_shop', 'shop', 'id_shop'), + array('customization', 'id_cart', 'cart', 'id_cart'), + array('customization_field', 'id_product', 'product', 'id_product'), + array('customized_data', 'id_customization', 'customization', 'id_customization'), + array('delivery', 'id_shop', 'shop', 'id_shop'), + array('delivery', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('delivery', 'id_carrier', 'carrier', 'id_carrier'), + array('delivery', 'id_zone', 'zone', 'id_zone'), + array('editorial', 'id_shop', 'shop', 'id_shop', 'editorial'), + array('favorite_product', 'id_product', 'product', 'id_product','favoriteproducts'), + array('favorite_product', 'id_customer', 'customer', 'id_customer','favoriteproducts'), + array('favorite_product', 'id_shop', 'shop', 'id_shop','favoriteproducts'), + array('feature_product', 'id_feature', 'feature', 'id_feature'), + array('feature_product', 'id_product', 'product', 'id_product'), + array('feature_value', 'id_feature', 'feature', 'id_feature'), + array('group_reduction', 'id_group', 'group', 'id_group'), + array('group_reduction', 'id_category', 'category', 'id_category'), + array('homeslider', 'id_shop', 'shop', 'id_shop', 'homeslider'), + array('homeslider', 'id_homeslider_slides', 'homeslider_slides', 'id_homeslider_slides', 'homeslider'), + array('hook_module', 'id_hook', 'hook', 'id_hook'), + array('hook_module', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_hook', 'hook', 'id_hook'), + array('hook_module_exceptions', 'id_module', 'module', 'id_module'), + array('hook_module_exceptions', 'id_shop', 'shop', 'id_shop'), + array('image', 'id_product', 'product', 'id_product'), + array('message', 'id_cart', 'cart', 'id_cart'), + array('message_readed', 'id_message', 'message', 'id_message'), + array('message_readed', 'id_employee', 'employee', 'id_employee'), + array('module_access', 'id_profile', 'profile', 'id_profile'), + array('module_access', 'id_module', 'module', 'id_module'), + array('module_country', 'id_module', 'module', 'id_module'), + array('module_country', 'id_country', 'country', 'id_country'), + array('module_country', 'id_shop', 'shop', 'id_shop'), + array('module_currency', 'id_module', 'module', 'id_module'), + array('module_currency', 'id_currency', 'currency', 'id_currency'), + array('module_currency', 'id_shop', 'shop', 'id_shop'), + array('module_group', 'id_module', 'module', 'id_module'), + array('module_group', 'id_group', 'group', 'id_group'), + array('module_group', 'id_shop', 'shop', 'id_shop'), + array('module_preference', 'id_employee', 'employee', 'id_employee'), + array('orders', 'id_shop', 'shop', 'id_shop'), + array('orders', 'id_shop_group', 'group_shop', 'id_shop_group'), + array('order_carrier', 'id_order', 'orders', 'id_order'), + array('order_cart_rule', 'id_order', 'orders', 'id_order'), + array('order_detail', 'id_order', 'orders', 'id_order'), + array('order_detail_tax', 'id_order_detail', 'order_detail', 'id_order_detail'), + array('order_history', 'id_order', 'orders', 'id_order'), + array('order_invoice', 'id_order', 'orders', 'id_order'), + array('order_invoice_payment', 'id_order', 'orders', 'id_order'), + array('order_invoice_tax', 'id_order_invoice', 'order_invoice', 'id_order_invoice'), + array('order_return', 'id_order', 'orders', 'id_order'), + array('order_return_detail', 'id_order_return', 'order_return', 'id_order_return'), + array('order_slip', 'id_order', 'orders', 'id_order'), + array('order_slip_detail', 'id_order_slip', 'order_slip', 'id_order_slip'), + array('pack', 'id_product_pack', 'product', 'id_product'), + array('pack', 'id_product_item', 'product', 'id_product'), + array('page', 'id_page_type', 'page_type', 'id_page_type'), + array('page_viewed', 'id_shop', 'shop', 'id_shop'), + array('page_viewed', 'id_shop_group', 'shop_group', 'id_shop_group'), + array('page_viewed', 'id_date_range', 'date_range', 'id_date_range'), + array('product_attachment', 'id_attachment', 'attachment', 'id_attachment'), + array('product_attachment', 'id_product', 'product', 'id_product'), + array('product_attribute', 'id_product', 'product', 'id_product'), + array('product_attribute_combination', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_attribute_combination', 'id_attribute', 'attribute', 'id_attribute'), + array('product_attribute_image', 'id_image', 'image', 'id_image'), + array('product_attribute_image', 'id_product_attribute', 'product_attribute', 'id_product_attribute'), + array('product_carrier', 'id_product', 'product', 'id_product'), + array('product_carrier', 'id_shop', 'shop', 'id_shop'), + array('product_carrier', 'id_carrier_reference', 'carrier', 'id_reference'), + array('product_country_tax', 'id_product', 'product', 'id_product'), + array('product_country_tax', 'id_country', 'country', 'id_country'), + array('product_country_tax', 'id_tax', 'tax', 'id_tax'), + array('product_download', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_product', 'product', 'id_product'), + array('product_group_reduction_cache', 'id_group', 'group', 'id_group'), + array('product_sale', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_product', 'product', 'id_product'), + array('product_supplier', 'id_supplier', 'supplier', 'id_supplier'), + array('product_tag', 'id_product', 'product', 'id_product'), + array('product_tag', 'id_tag', 'tag', 'id_tag'), + array('range_price', 'id_carrier', 'carrier', 'id_carrier'), + array('range_weight', 'id_carrier', 'carrier', 'id_carrier'), + array('referrer_cache', 'id_referrer', 'referrer', 'id_referrer'), + array('referrer_cache', 'id_connections_source', 'connections_source', 'id_connections_source'), + array('scene_category', 'id_scene', 'scene', 'id_scene'), + array('scene_category', 'id_category', 'category', 'id_category'), + array('scene_products', 'id_scene', 'scene', 'id_scene'), + array('scene_products', 'id_product', 'product', 'id_product'), + array('search_index', 'id_product', 'product', 'id_product'), + array('search_word', 'id_lang', 'lang', 'id_lang'), + array('search_word', 'id_shop', 'shop', 'id_shop'), + array('shop_url', 'id_shop', 'shop', 'id_shop'), + array('specific_price_priority', 'id_product', 'product', 'id_product'), + array('stock', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('stock', 'id_product', 'product', 'id_product'), + array('stock_available', 'id_product', 'product', 'id_product'), + array('stock_mvt', 'id_stock', 'stock', 'id_stock'), + array('tab_module_preference', 'id_employee', 'employee', 'id_employee'), + array('tab_module_preference', 'id_tab', 'tab', 'id_tab'), + array('tax_rule', 'id_country', 'country', 'id_country'), + array('theme_specific', 'id_theme', 'theme', 'id_theme'), + array('theme_specific', 'id_shop', 'shop', 'id_shop'), + array('warehouse_carrier', 'id_warehouse', 'warehouse', 'id_warehouse'), + array('warehouse_carrier', 'id_carrier', 'carrier', 'id_carrier'), + array('warehouse_product_location', 'id_product', 'product', 'id_product'), + array('warehouse_product_location', 'id_warehouse', 'warehouse', 'id_warehouse'), + ); + + $queries = self::bulle($queries); + foreach ($queries as $query_array) + { + // If this is a module and the module is not installed, we continue + if (isset($query_array[4]) && !Module::isInstalled($query_array[4])) + continue; + + $query = 'DELETE FROM `'._DB_PREFIX_.$query_array[0].'` WHERE `'.$query_array[1].'` NOT IN (SELECT `'.$query_array[3].'` FROM `'._DB_PREFIX_.$query_array[2].'`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + } + + // _lang table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_lang"'); + foreach ($tables as $table) + { + $table_lang = current($table); + $table = str_replace('_lang', '', $table_lang); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + + $query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `'._DB_PREFIX_.'lang`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + } + + // _shop table cleaning + $tables = Db::getInstance()->executeS('SHOW TABLES LIKE "'.preg_replace('/([%_])/', '\\$1', _DB_PREFIX_).'%_\\_shop"'); + foreach ($tables as $table) + { + $table_shop = current($table); + $table = str_replace('_shop', '', $table_shop); + $id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table); + + if (in_array($table_shop, array(_DB_PREFIX_.'carrier_tax_rules_group_shop'))) + continue; + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + + $query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + } + + // stock_available + $query = 'DELETE FROM `'._DB_PREFIX_.'stock_available` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`) AND `id_shop_group` NOT IN (SELECT `id_shop_group` FROM `'._DB_PREFIX_.'shop_group`)'; + if ($db->Execute($query)) + if ($affected_rows = $db->Affected_Rows()) + $logs[$query] = $affected_rows; + + Category::regenerateEntireNtree(); + + // @Todo: Remove attachment files, images... + Image::clearTmpDir(); + self::clearAllCaches(); + + return $logs; + } + + public function truncate($case) + { + $db = Db::getInstance(); + + switch ($case) + { + case 'catalog': + $id_home = $this->getMultiShopValues('PS_HOME_CATEGORY'); + $id_root = $this->getMultiShopValues('PS_ROOT_CATEGORY'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_lang` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'category_shop` WHERE id_category NOT IN ('.implode(',', array_map('intval', $id_home)).', '.implode(',', array_map('intval', $id_root)).')'); + foreach (scandir(_PS_CAT_IMG_DIR_) as $dir) + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) + unlink(_PS_CAT_IMG_DIR_.$dir); + $tables = array( + 'product', + 'product_shop', + 'feature_product', + 'product_lang', + 'category_product', + 'product_tag', + 'tag', + 'image', + 'image_lang', + 'image_shop', + 'specific_price', + 'specific_price_priority', + 'product_carrier', + 'cart_product', + 'compare_product', + 'product_attachment', + 'product_country_tax', + 'product_download', + 'product_group_reduction_cache', + 'product_sale', + 'product_supplier', + 'scene_products', + 'warehouse_product_location', + 'stock', + 'stock_available', + 'stock_mvt', + 'customization', + 'customization_field', + 'supply_order_detail', + 'attribute_impact', + 'product_attribute', + 'product_attribute_shop', + 'product_attribute_combination', + 'product_attribute_image', + 'attribute', + 'attribute_impact', + 'attribute_lang', + 'attribute_group', + 'attribute_group_lang', + 'attribute_group_shop', + 'attribute_shop', + 'product_attribute', + 'product_attribute_shop', + 'product_attribute_combination', + 'product_attribute_image', + 'stock_available', + 'manufacturer', + 'manufacturer_lang', + 'manufacturer_shop', + 'supplier', + 'supplier_lang', + 'supplier_shop', + 'customization', + 'customization_field', + 'customization_field_lang', + 'customized_data', + 'feature', + 'feature_lang', + 'feature_product', + 'feature_shop', + 'feature_value', + 'feature_value_lang', + 'pack', + 'scene', + 'scene_category', + 'scene_lang', + 'scene_products', + 'scene_shop', + 'search_index', + 'search_word', + 'specific_price', + 'specific_price_priority', + 'specific_price_rule', + 'specific_price_rule_condition', + 'specific_price_rule_condition_group', + 'stock', + 'stock_available', + 'stock_mvt', + 'warehouse', + ); + foreach ($tables as $table) + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_manufacturer > 0 OR id_supplier > 0 OR id_warehouse > 0'); + + Image::deleteAllImages(_PS_PROD_IMG_DIR_); + if (!file_exists(_PS_PROD_IMG_DIR_)) + mkdir(_PS_PROD_IMG_DIR_); + foreach (scandir(_PS_MANU_IMG_DIR_) as $dir) + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) + unlink(_PS_MANU_IMG_DIR_.$dir); + foreach (scandir(_PS_SUPP_IMG_DIR_) as $dir) + if (preg_match('/^[0-9]+(\-(.*))?\.jpg$/', $dir)) + unlink(_PS_SUPP_IMG_DIR_.$dir); + break; + + case 'sales': + $tables = array( + 'customer', + 'cart', + 'cart_product', + 'connections', + 'connections_page', + 'connections_source', + 'customer_message', + 'customer_message_sync_imap', + 'customer_thread', + 'guest', + 'message', + 'message_readed', + 'orders', + 'order_carrier', + 'order_cart_rule', + 'order_detail', + 'order_detail_tax', + 'order_history', + 'order_invoice', + 'order_invoice_payment', + 'order_invoice_tax', + 'order_message', + 'order_message_lang', + 'order_payment', + 'order_return', + 'order_return_detail', + 'order_slip', + 'order_slip_detail', + 'page', + 'page_type', + 'page_viewed', + 'product_sale', + 'referrer_cache', + ); + + $modules_tables = array( + 'sekeywords' => array('sekeyword'), + 'pagesnotfound' => array('pagenotfound') + ); + + foreach ($modules_tables as $name => $module_tables) + if (Module::isInstalled($name)) + $tables = array_merge($tables, $module_tables); + + foreach ($tables as $table) + $db->execute('TRUNCATE TABLE `'._DB_PREFIX_.bqSQL($table).'`'); + $db->execute('DELETE FROM `'._DB_PREFIX_.'address` WHERE id_customer > 0'); + $db->execute('UPDATE `'._DB_PREFIX_.'employee` SET `id_last_order` = 0,`id_last_customer_message` = 0,`id_last_customer` = 0'); + + break; + } + self::clearAllCaches(); + } + + public static function cleanAndOptimize() + { + $logs = array(); + + $query = ' + DELETE FROM `'._DB_PREFIX_.'cart` + WHERE id_cart NOT IN (SELECT id_cart FROM `'._DB_PREFIX_.'orders`) + AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; + if (Db::getInstance()->Execute($query)) + if ($affected_rows = Db::getInstance()->Affected_Rows()) + $logs[$query] = $affected_rows; + + $query = ' + DELETE FROM `'._DB_PREFIX_.'cart_rule` + WHERE ( + active = 0 + OR quantity = 0 + OR date_to < "'.pSQL(date('Y-m-d')).'" + ) + AND date_add < "'.pSQL(date('Y-m-d', strtotime('-1 month'))).'"'; + if (Db::getInstance()->Execute($query)) + if ($affected_rows = Db::getInstance()->Affected_Rows()) + $logs[$query] = $affected_rows; + + $parents = Db::getInstance()->ExecuteS('SELECT DISTINCT id_parent FROM '._DB_PREFIX_.'tab'); + foreach ($parents as $parent) + { + $children = Db::getInstance()->ExecuteS('SELECT id_tab FROM '._DB_PREFIX_.'tab WHERE id_parent = '.(int)$parent['id_parent'].' ORDER BY IF(class_name IN ("AdminHome", "AdminDashboard"), 1, 2), position ASC'); + $i = 1; + foreach ($children as $child) + { + $query = 'UPDATE '._DB_PREFIX_.'tab SET position = '.(int)($i++).' WHERE id_tab = '.(int)$child['id_tab'].' AND id_parent = '.(int)$parent['id_parent']; + if (Db::getInstance()->Execute($query)) + if ($affected_rows = Db::getInstance()->Affected_Rows()) + $logs[$query] = $affected_rows; + } + } + + return $logs; + } + + protected static function bulle($array) + { + $sorted = false; + $size = count($array); + while (!$sorted) + { + $sorted = true; + for ($i = 0; $i < $size - 1; ++$i) + for ($j = $i + 1; $j < $size; ++$j) + if ($array[$i][2] == $array[$j][0]) + { + $tmp = $array[$i]; + $array[$i] = $array[$j]; + $array[$j] = $tmp; + $sorted = false; + } + } + return $array; + } + + protected static function clearAllCaches() + { + $index = file_exists(_PS_TMP_IMG_DIR_.'index.php') ? file_get_contents(_PS_TMP_IMG_DIR_.'index.php') : ''; + Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false); + file_put_contents(_PS_TMP_IMG_DIR_.'index.php', $index); + Context::getContext()->smarty->clearAllCache(); + } + + public function renderForm() + { + $fields_form_1 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Catalog'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the catalog data will be removed without possible rollback: products, features, categories, tags, images, prices, attachments, scenes, stocks, attribute groups and values, manufacturers, suppliers...'), + 'name' => 'checkTruncateCatalog', + 'values' => array( + array( + 'id' => 'checkTruncateCatalog_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateCatalog_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete catalog'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateCatalog', + 'id' => 'submitTruncateCatalog', + ) + ) + ); + + $fields_form_2 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Orders and customers'), + 'icon' => 'icon-cogs' + ), + 'input' => array( + array( + 'type' => 'switch', + 'is_bool' => true, + 'label' => $this->l('I understand that all the orders and customers will be removed without possible rollback: customers, carts, orders, connections, guests, messages, stats...'), + 'name' => 'checkTruncateSales', + 'values' => array( + array( + 'id' => 'checkTruncateSales_on', + 'value' => 1, + 'label' => $this->l('Enabled') + ), + array( + 'id' => 'checkTruncateSales_off', + 'value' => 0, + 'label' => $this->l('Disabled') + ) + ) + ) + ), + 'submit' => array( + 'title' => $this->l('Delete orders & customers'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitTruncateSales', + 'id' => 'submitTruncateSales', + ) + ) + ); + + $fields_form_3 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Functional integrity constraints'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Check & fix'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCheckAndFix', + ) + ) + ); + $fields_form_4 = array( + 'form' => array( + 'legend' => array( + 'title' => $this->l('Database cleaning'), + 'icon' => 'icon-cogs' + ), + 'submit' => array( + 'title' => $this->l('Clean & Optimize'), + 'class' => 'btn btn-default pull-right', + 'name' => 'submitCleanAndOptimize', + ) + ) + ); + + $helper = new HelperForm(); + $helper->module = $this; + $helper->show_toolbar = false; + $helper->table = $this->table; + $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); + $helper->default_form_language = $lang->id; + $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; + $this->fields_form = array(); + $helper->id = (int)Tools::getValue('id_carrier'); + $helper->identifier = $this->identifier; + $helper->submit_action = 'btnSubmit'; + $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; + $helper->token = Tools::getAdminTokenLite('AdminModules'); + $helper->tpl_vars = array( + 'fields_value' => $this->getConfigFieldsValues(), + 'languages' => $this->context->controller->getLanguages(), + 'id_language' => $this->context->language->id + ); + + return $helper->generateForm(array($fields_form_1, $fields_form_2, $fields_form_3, $fields_form_4)); + } + + public function getConfigFieldsValues() + { + return array('checkTruncateSales' => 0, 'checkTruncateCatalog' => 0); + } +} diff --git a/modules/pscleaner/translations/fr.php b/modules/pscleaner/translations/fr.php new file mode 100644 index 00000000..46475f82 --- /dev/null +++ b/modules/pscleaner/translations/fr.php @@ -0,0 +1,33 @@ +pscleaner_e5a8af934462c05509c7de5f2f2c18a3'] = 'Nettoyage de PrestaShop'; +$_MODULE['<{pscleaner}prestashop>pscleaner_4bcb9cc248b7f6c8dc7f5c323bde76de'] = 'Vérifie et répare les problèmes d\'intégrité fonctionnelle et supprime les données par défaut (produits, commandes, clients)'; +$_MODULE['<{pscleaner}prestashop>pscleaner_752369f18aebeed9ae8384d8f1b5dc5e'] = 'Soyez très attentifs en utilisant cet outil, il n\'y a pas de retour en arrière possible !'; +$_MODULE['<{pscleaner}prestashop>pscleaner_550b877b1a255ba717cfad4b82057731'] = 'Les requêtes suivantes ont permis de réparer certaines données:'; +$_MODULE['<{pscleaner}prestashop>pscleaner_14a7ab23d566b4505d0c711338c19a08'] = '%d ligne(s)'; +$_MODULE['<{pscleaner}prestashop>pscleaner_d1ff3c9d57acd4283d2793a36737479e'] = 'Il n\'y a rien qui nécessite d\'être réparé.'; +$_MODULE['<{pscleaner}prestashop>pscleaner_53d097f11855337bb74f1444d6c47c99'] = 'Les requêtes suivantes ont permis de nettoyer votre base de données avec succès :'; +$_MODULE['<{pscleaner}prestashop>pscleaner_098c3581a731f08d24311bbf515adbbb'] = 'Félicitations, tout est déjà en ordre!'; +$_MODULE['<{pscleaner}prestashop>pscleaner_1bb7c5eb8682aeada82c407b40ec09c8'] = 'Catalogue supprimé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ed6ecb7169d5476ef5251524bb17552a'] = 'Commandes et clients supprimés'; +$_MODULE['<{pscleaner}prestashop>pscleaner_43364f357f96e8b70be4a44d44196807'] = 'Veuillez lire les mises en garde et cliquer sur le bouton pour les approuver.'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6c69628e1d57fa6e39162b039a82133b'] = 'Souhaitez-vous supprimer le catalogue produit ?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_6a68264705f23c8e3d505fd2c93a87ba'] = 'Souhaitez-vous supprimer commandes et clients ?'; +$_MODULE['<{pscleaner}prestashop>pscleaner_c32516babc5b6c47eb8ce1bfc223253c'] = 'Catalogue'; +$_MODULE['<{pscleaner}prestashop>pscleaner_da69e50b7440e12fe63287904819eaa3'] = 'J\'ai bien compris que tout le catalogue sera supprimé sans possibilité de retour en arrière : produits, caractéristiques, catégories, mot-clés, images, prix, fichiers joints, scènes, stocks, groupes et valeurs d\'attributs, fabricants, fournisseurs...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; +$_MODULE['<{pscleaner}prestashop>pscleaner_b2d7c99e984831bd36221baf34e9c26e'] = 'Supprimer le catalogue'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3300d0bf086fa38cf593fe4feff351f1'] = 'Commandes et clients'; +$_MODULE['<{pscleaner}prestashop>pscleaner_a01f9a9a340c3c68a2dc4663f46d8637'] = 'J\'ai bien compris que tous les clients et commandes seront supprimés sans possibilité de retour en arrière : clients, paniers, commandes, connexions, visiteurs, stats...'; +$_MODULE['<{pscleaner}prestashop>pscleaner_17ca7f22baf84821b6b73462c96fb1e3'] = 'Supprimer les commandes et clients'; +$_MODULE['<{pscleaner}prestashop>pscleaner_3535aa31bd9005bde626ad4312b67d6b'] = 'Contraintes d\'intégrité fonctionnelle'; +$_MODULE['<{pscleaner}prestashop>pscleaner_e84c6595e849214a70b35ed8f95d7d16'] = 'Vérifier et réparer'; +$_MODULE['<{pscleaner}prestashop>pscleaner_ccc27439e3e08c444690af3bed668e2d'] = 'Nettoyage de la base de données'; +$_MODULE['<{pscleaner}prestashop>pscleaner_39707b9cfefe433d64f695623d2d3fd7'] = 'Nettoyer et optimiser'; + + +return $_MODULE; diff --git a/modules/pscleaner/translations/index.php b/modules/pscleaner/translations/index.php new file mode 100644 index 00000000..a41987df --- /dev/null +++ b/modules/pscleaner/translations/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); +header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); + +header("Cache-Control: no-store, no-cache, must-revalidate"); +header("Cache-Control: post-check=0, pre-check=0", false); +header("Pragma: no-cache"); + +header("Location: ../"); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/index.php b/modules/pscleaner/views/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl b/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl new file mode 100644 index 00000000..5d26b2a4 --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/form/form.tpl @@ -0,0 +1,59 @@ +{* +* 2007-2014 PrestaShop +* +* NOTICE OF LICENSE +* +* This source file is subject to the Academic Free License (AFL 3.0) +* that is bundled with this package in the file LICENSE.txt. +* It is also available through the world-wide-web at this URL: +* http://opensource.org/licenses/afl-3.0.php +* If you did not receive a copy of the license and are unable to +* obtain it through the world-wide-web, please send an email +* to license@prestashop.com so we can send you a copy immediately. +* +* DISCLAIMER +* +* Do not edit or add to this file if you wish to upgrade PrestaShop to newer +* versions in the future. If you wish to customize PrestaShop for your +* needs please refer to http://www.prestashop.com for more information. +* +* @author PrestaShop SA +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*} + +{extends file="helpers/form/form.tpl"} +{block name="field"} + {if $input.type == 'desc'} +
    {$input.text}
    + {/if} + {$smarty.block.parent} +{/block} + +{block name="input"} + + {if $input.type == 'switch' && $smarty.const._PS_VERSION_|@addcslashes:'\'' < '1.6'} + {foreach $input.values as $value} + + + {if isset($input.br) && $input.br}
    {/if} + {if isset($value.p) && $value.p}

    {$value.p}

    {/if} + {/foreach} + {else} + {$smarty.block.parent} + {/if} + +{/block} \ No newline at end of file diff --git a/modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php b/modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/form/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/templates/admin/_configure/helpers/index.php b/modules/pscleaner/views/templates/admin/_configure/helpers/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/helpers/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/templates/admin/_configure/index.php b/modules/pscleaner/views/templates/admin/_configure/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/templates/admin/_configure/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/templates/admin/index.php b/modules/pscleaner/views/templates/admin/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/templates/admin/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/pscleaner/views/templates/index.php b/modules/pscleaner/views/templates/index.php new file mode 100644 index 00000000..dfbb709d --- /dev/null +++ b/modules/pscleaner/views/templates/index.php @@ -0,0 +1,35 @@ + +* @copyright 2007-2014 PrestaShop SA +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); + +header('Location: ../'); +exit; \ No newline at end of file diff --git a/modules/seourl/seourl.php b/modules/seourl/seourl.php index 0552bfbf..d3f210d0 100644 --- a/modules/seourl/seourl.php +++ b/modules/seourl/seourl.php @@ -147,11 +147,18 @@ class SeoUrl extends Module { foreach (Language::getLanguages() as $language) { $id_lang = (int)$language['id_lang']; $urls[$id_lang] = ManageSeoUrl::PREFIX_EDITO.$params['object']->id.'-'.$params['object']->slug[$id_lang].'.php'; - $canonicals[$id_lang] = $params['canonical']; + if (isset($params['canonical'])) { + $canonicals[$id_lang] = $params['canonical']; + } } if (!$seo_url instanceOf ManageSeoUrl) { - ManageSeoUrl::createUrl(ManageSeoUrl::TYPE_POST_EDITO, $params['object']->id, $urls, $params['canonical']); + if (!isset($params['canonical'])) { + $canonical = ''; + } else { + $canonical = $params['canonical']; + } + ManageSeoUrl::createUrl(ManageSeoUrl::TYPE_POST_EDITO, $params['object']->id, $urls, $canonical); } else { $seo_url->link_rewrite = $urls; $seo_url->canonical = $canonicals; diff --git a/override/classes/Category.php b/override/classes/Category.php new file mode 100644 index 00000000..e1cebf35 --- /dev/null +++ b/override/classes/Category.php @@ -0,0 +1,19 @@ +language->id; + + $sql = ' + SELECT cl.`name` + FROM `'._DB_PREFIX_.'category_lang` cl + WHERE `id_lang` = '.(int)$id_lang.' + '.Shop::addSqlRestrictionOnLang('cl').' + AND cl.`id_category` = '.(int)$id_category.' + '; + + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($sql); + } +} \ No newline at end of file diff --git a/override/classes/Customer.php b/override/classes/Customer.php index 0e2422bd..f91aa23e 100644 --- a/override/classes/Customer.php +++ b/override/classes/Customer.php @@ -25,6 +25,12 @@ class Customer extends CustomerCore '.(isset($passwd) ? 'AND `passwd` = \''.pSQL(Tools::encryptOld($passwd)).'\'' : '').' AND `deleted` = 0 '.($ignore_guest ? ' AND `is_guest` = 0' : '')); + + if ($result) { + $customer = new Customer((int) $result['id_customer']); + $customer->passwd = Tools::encrypt($passwd); + $customer->save(); + } } if (!$result) diff --git a/override/classes/Link.php b/override/classes/Link.php index 19da6571..229a899c 100644 --- a/override/classes/Link.php +++ b/override/classes/Link.php @@ -105,6 +105,11 @@ class Link extends LinkCore if(!isset(self::$urls_editos_cms[$id_post_edito])) { $link = ManageSeoUrl::getByType($id_post_edito, ManageSeoUrl::TYPE_POST_EDITO, FALSE, $id_lang, $id_shop); + + if(!$link) { + return $url; + } + self::$urls_editos_cms[$id_post_edito] = $url.$link->link_rewrite; return $url.$link->link_rewrite; } else { diff --git a/override/classes/Mail.php b/override/classes/Mail.php index 7d366ab3..cea0d719 100644 --- a/override/classes/Mail.php +++ b/override/classes/Mail.php @@ -298,10 +298,9 @@ class Mail extends MailCore if ((Context::getContext()->link instanceof Link) === false) Context::getContext()->link = new Link(); - /* Personnalisation des mails */ - $template_vars['{header_img}'] = Context::getContext()->smarty->tpl_vars['base_dir']->value . 'themes/fanavenue/mails/header-mail.png'; - $template_vars['{footer_img}'] = Context::getContext()->smarty->tpl_vars['base_dir']->value . 'themes/fanavenue/mails/footer-mail.png'; + $template_vars['{header_img}'] = 'http://www.toutpratique.com/themes/toutpratique/mails/header-mail.jpg'; + $template_vars['{footer_img}'] = 'http://www.toutpratique.com/themes/toutpratique/mails/footer-mail.jpg'; $template_vars['{box-border-color}'] = '#e4535d'; $template_vars['{box-bg-color}'] = '#ffffff'; $template_vars['{mail-bg-color}'] = '#f0f0f0'; @@ -310,7 +309,6 @@ class Mail extends MailCore $template_vars['{titre2-color}'] = '#e4535d '; $template_vars['{link-color}'] = '#e4535d'; - $template_vars['{shop_name}'] = Tools::safeOutput(Configuration::get('PS_SHOP_NAME', null, null, $id_shop)); $template_vars['{shop_url}'] = Context::getContext()->link->getPageLink('index', true, Context::getContext()->language->id, null, false, $id_shop); $template_vars['{my_account_url}'] = Context::getContext()->link->getPageLink('my-account', true, Context::getContext()->language->id, null, false, $id_shop); diff --git a/override/classes/Meta.php b/override/classes/Meta.php index d043161d..ba53566b 100644 --- a/override/classes/Meta.php +++ b/override/classes/Meta.php @@ -27,11 +27,21 @@ class Meta extends MetaCore { return Meta::getMetaPostCms($id_post, $id_lang, $page_name); elseif ($page_name == 'postedito'&& ($id_edito = Tools::getValue('id_post_edito'))) return Meta::getMetaEditoCms($id_edito, $id_lang, $page_name); + elseif ($page_name == 'homestore') + return Meta::getMetaBoutique(); } return Meta::getHomeMetas($id_lang, $page_name); } + public static function getMetaBoutique() { + + $metas['meta_title'] = 'La boutique - ' . Configuration::get('PS_SHOP_NAME'); + $metas['meta_description'] = 'Bienvenue sur la boutique de ToutPratique.com'; + + return $metas; + } + public static function getMetaCategoryCms($id_category, $id_lang, $page_name) { $sql = 'SELECT `meta_title`, `meta_desc` diff --git a/override/classes/Tools.php b/override/classes/Tools.php index 7bddf5de..7fd9b2cc 100644 --- a/override/classes/Tools.php +++ b/override/classes/Tools.php @@ -122,4 +122,4 @@ class Tools extends ToolsCore return md5($old_cookiekey.$passwd); } -} \ No newline at end of file +} diff --git a/override/controllers/front/AuthController.php b/override/controllers/front/AuthController.php new file mode 100644 index 00000000..8cc7064b --- /dev/null +++ b/override/controllers/front/AuthController.php @@ -0,0 +1,323 @@ +context->smarty->assign('fromWeModule', Tools::getValue('fromWeModule', 0)); + $this->context->smarty->assign( + 'banner_right', file_exists(_PS_ROOT_DIR_.'/img/illustrations/connexion/right.jpg') ? 'img/illustrations/connexion/right.jpg' : 'img/illustrations/connexion/default.jpg' + ); + } + + protected function processSubmitAccount() + { + Hook::exec('actionBeforeSubmitAccount'); + $this->create_account = true; + if (Tools::isSubmit('submitAccount')) + $this->context->smarty->assign('email_create', 1); + // New Guest customer + if (!Tools::getValue('is_new_customer', 1) && !Configuration::get('PS_GUEST_CHECKOUT_ENABLED')) + $this->errors[] = Tools::displayError('You cannot create a guest account..'); + if (!Tools::getValue('is_new_customer', 1)) + $_POST['passwd'] = md5(time()._COOKIE_KEY_); + if (isset($_POST['guest_email']) && $_POST['guest_email']) + $_POST['email'] = $_POST['guest_email']; + // Checked the user address in case he changed his email address + if (Validate::isEmail($email = Tools::getValue('email')) && !empty($email)) + if (Customer::customerExists($email)) + $this->errors[] = Tools::displayError('An account using this email address has already been registered.', false); + // Preparing customer + $customer = new Customer(); + $lastnameAddress = Tools::getValue('lastname'); + $firstnameAddress = Tools::getValue('firstname'); + $_POST['lastname'] = Tools::getValue('customer_lastname', $lastnameAddress); + $_POST['firstname'] = Tools::getValue('customer_firstname', $firstnameAddress); + $addresses_types = array('address'); + + if (!Tools::getValue('invoice_address')) + $addresses_types[] = 'address_invoice'; + + $error_phone = false; + if (Configuration::get('PS_ONE_PHONE_AT_LEAST')) + { + if (Tools::isSubmit('submitGuestAccount') || !Tools::getValue('is_new_customer')) + { + if (!Tools::getValue('phone') && !Tools::getValue('phone_mobile')) + $error_phone = true; + } + elseif (((Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Configuration::get('PS_ORDER_PROCESS_TYPE')) + || (Configuration::get('PS_ORDER_PROCESS_TYPE') && !Tools::getValue('email_create')) + || (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && Tools::getValue('email_create'))) + && (!Tools::getValue('phone') && !Tools::getValue('phone_mobile'))) + $error_phone = true; + } + + $passwd = Tools::getValue('passwd'); + $passwd_confirm = Tools::getValue('passwd_confirm'); + if ($passwd && $passwd_confirm) + { + if($passwd != $passwd_confirm) + { + $this->errors[] = Tools::displayError('Passwords aren\'t similar'); + } + } + + if ($error_phone) + $this->errors[] = Tools::displayError('You must register at least one phone number.'); + + $this->errors = array_unique(array_merge($this->errors, $customer->validateController())); + + // Check the requires fields which are settings in the BO + $this->errors = $this->errors + $customer->validateFieldsRequiredDatabase(); + + if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount') && !Tools::getValue('fromWeModule', 0)) + { + if (!count($this->errors)) + { + if (Tools::isSubmit('newsletter')) + $this->processCustomerNewsletter($customer); + + $customer->firstname = Tools::ucwords($customer->firstname); + $customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']); + if (!Validate::isBirthDate($customer->birthday)) + $this->errors[] = Tools::displayError('Invalid date of birth.'); + + // New Guest customer + $customer->is_guest = (Tools::isSubmit('is_new_customer') ? !Tools::getValue('is_new_customer', 1) : 0); + $customer->active = 1; + + if (!count($this->errors)) + { + if ($customer->add()) + { + if (!$customer->is_guest) + if (!$this->sendConfirmationMail($customer)) + $this->errors[] = Tools::displayError('The email cannot be sent.'); + + $this->updateContext($customer); + + $this->context->cart->update(); + Hook::exec('actionCustomerAccountAdd', array( + '_POST' => $_POST, + 'newCustomer' => $customer + )); + if ($this->ajax) + { + $return = array( + 'hasError' => !empty($this->errors), + 'errors' => $this->errors, + 'isSaved' => true, + 'back' => $this->context->link->getPageLink(Tools::getValue('back', 'my-account'), null, $this->context->language->id), + 'id_customer' => (int)$this->context->cookie->id_customer, + 'id_address_delivery' => $this->context->cart->id_address_delivery, + 'id_address_invoice' => $this->context->cart->id_address_invoice, + 'token' => Tools::getToken(false) + ); + die(Tools::jsonEncode($return)); + } + + if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) + Tools::redirect(html_entity_decode($back)); + // redirection: if cart is not empty : redirection to the cart + if (count($this->context->cart->getProducts(true)) > 0) + Tools::redirect('index.php?controller=order&multi-shipping='.(int)Tools::getValue('multi-shipping')); + // else : redirection to the account + else + Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account')); + } + else + $this->errors[] = Tools::displayError('An error occurred while creating your account.'); + } + } + + } + else // if registration type is in one step, we save the address + { + $_POST['lastname'] = $lastnameAddress; + $_POST['firstname'] = $firstnameAddress; + $post_back = $_POST; + // Preparing addresses + foreach($addresses_types as $addresses_type) + { + $$addresses_type = new Address(); + $$addresses_type->id_customer = 1; + + if ($addresses_type == 'address_invoice') + foreach($_POST as $key => &$post) + if (isset($_POST[$key.'_invoice'])) + $post = $_POST[$key.'_invoice']; + + $this->errors = array_unique(array_merge($this->errors, $$addresses_type->validateController())); + if ($addresses_type == 'address_invoice') + $_POST = $post_back; + + + if (!($country = new Country($$addresses_type->id_country)) || !Validate::isLoadedObject($country)) + $this->errors[] = Tools::displayError('Country cannot be loaded with address->id_country'); + + if (!$country->active) + $this->errors[] = Tools::displayError('This country is not active.'); + + $postcode = Tools::getValue('postcode'); + /* Check zip code format */ + if ($country->zip_code_format && !$country->checkZipCode($postcode)) + $this->errors[] = sprintf(Tools::displayError('The Zip/Postal code you\'ve entered is invalid. It must follow this format: %s'), str_replace('C', $country->iso_code, str_replace('N', '0', str_replace('L', 'A', $country->zip_code_format)))); + elseif(empty($postcode) && $country->need_zip_code) + $this->errors[] = Tools::displayError('A Zip / Postal code is required.'); + elseif ($postcode && !Validate::isPostCode($postcode)) + $this->errors[] = Tools::displayError('The Zip / Postal code is invalid.'); + + if ($country->need_identification_number && (!Tools::getValue('dni') || !Validate::isDniLite(Tools::getValue('dni')))) + $this->errors[] = Tools::displayError('The identification number is incorrect or has already been used.'); + elseif (!$country->need_identification_number) + $$addresses_type->dni = null; + + if (Tools::isSubmit('submitAccount') || Tools::isSubmit('submitGuestAccount')) + if (!($country = new Country($$addresses_type->id_country, Configuration::get('PS_LANG_DEFAULT'))) || !Validate::isLoadedObject($country)) + $this->errors[] = Tools::displayError('Country is invalid'); + $contains_state = isset($country) && is_object($country) ? (int)$country->contains_states: 0; + $id_state = isset($$addresses_type) && is_object($$addresses_type) ? (int)$$addresses_type->id_state: 0; + if ((Tools::isSubmit('submitAccount')|| Tools::isSubmit('submitGuestAccount')) && $contains_state && !$id_state) + $this->errors[] = Tools::displayError('This country requires you to choose a State.'); + } + } + + if (!@checkdate(Tools::getValue('months'), Tools::getValue('days'), Tools::getValue('years')) && !(Tools::getValue('months') == '' && Tools::getValue('days') == '' && Tools::getValue('years') == '')) + $this->errors[] = Tools::displayError('Invalid date of birth'); + + if (!count($this->errors)) + { + if (Customer::customerExists(Tools::getValue('email'))) + $this->errors[] = Tools::displayError('An account using this email address has already been registered. Please enter a valid password or request a new one. ', false); + if (Tools::isSubmit('newsletter')) + $this->processCustomerNewsletter($customer); + + $customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']); + if (!Validate::isBirthDate($customer->birthday)) + $this->errors[] = Tools::displayError('Invalid date of birth'); + + if (!count($this->errors)) + { + $customer->active = 1; + // New Guest customer + if (Tools::isSubmit('is_new_customer')) + $customer->is_guest = !Tools::getValue('is_new_customer', 1); + else + $customer->is_guest = 0; + if (!$customer->add()) + $this->errors[] = Tools::displayError('An error occurred while creating your account.'); + else + { + foreach($addresses_types as $addresses_type) + { + $$addresses_type->id_customer = (int)$customer->id; + if ($addresses_type == 'address_invoice') + foreach($_POST as $key => &$post) + if (isset($_POST[$key.'_invoice'])) + $post = $_POST[$key.'_invoice']; + + $this->errors = array_unique(array_merge($this->errors, $$addresses_type->validateController())); + if ($addresses_type == 'address_invoice') + $_POST = $post_back; + if (!count($this->errors) && (Configuration::get('PS_REGISTRATION_PROCESS_TYPE') || $this->ajax || Tools::isSubmit('submitGuestAccount')) && !$$addresses_type->add()) + $this->errors[] = Tools::displayError('An error occurred while creating your address.'); + } + if (!count($this->errors)) + { + if (!$customer->is_guest) + { + $this->context->customer = $customer; + $customer->cleanGroups(); + // we add the guest customer in the default customer group + $customer->addGroups(array((int)Configuration::get('PS_CUSTOMER_GROUP'))); + if (!$this->sendConfirmationMail($customer)) + $this->errors[] = Tools::displayError('The email cannot be sent.'); + } + else + { + $customer->cleanGroups(); + // we add the guest customer in the guest customer group + $customer->addGroups(array((int)Configuration::get('PS_GUEST_GROUP'))); + } + $this->updateContext($customer); + $this->context->cart->id_address_delivery = (int)Address::getFirstCustomerAddressId((int)$customer->id); + $this->context->cart->id_address_invoice = (int)Address::getFirstCustomerAddressId((int)$customer->id); + if (isset($address_invoice) && Validate::isLoadedObject($address_invoice)) + $this->context->cart->id_address_invoice = (int)$address_invoice->id; + + if ($this->ajax && Configuration::get('PS_ORDER_PROCESS_TYPE')) + { + $delivery_option = array((int)$this->context->cart->id_address_delivery => (int)$this->context->cart->id_carrier.','); + $this->context->cart->setDeliveryOption($delivery_option); + } + + // If a logged guest logs in as a customer, the cart secure key was already set and needs to be updated + $this->context->cart->update(); + + // Avoid articles without delivery address on the cart + $this->context->cart->autosetProductAddress(); + + Hook::exec('actionCustomerAccountAdd', array( + '_POST' => $_POST, + 'newCustomer' => $customer + )); + + if ($this->ajax) + { + $return = array( + 'hasError' => !empty($this->errors), + 'errors' => $this->errors, + 'isSaved' => true, + 'back' => strpos(Tools::getValue('back'), 'http') === false ? $this->context->link->getPageLink(Tools::getValue('back', 'my-account')) : Tools::getValue('back'), + 'id_customer' => (int)$this->context->cookie->id_customer, + 'id_address_delivery' => $this->context->cart->id_address_delivery, + 'id_address_invoice' => $this->context->cart->id_address_invoice, + 'token' => Tools::getToken(false) + ); + die(Tools::jsonEncode($return)); + } + + // if registration type is in two steps, we redirect to register address + if (!Configuration::get('PS_REGISTRATION_PROCESS_TYPE') && !$this->ajax && !Tools::isSubmit('submitGuestAccount')) + Tools::redirect('index.php?controller=address'); + + if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) + Tools::redirect(html_entity_decode($back)); + + // redirection: if cart is not empty : redirection to the cart + if (count($this->context->cart->getProducts(true)) > 0) + Tools::redirect('index.php?controller=order&multi-shipping='.(int)Tools::getValue('multi-shipping')); + // else : redirection to the account + else + Tools::redirect('index.php?controller='.(($this->authRedirection !== false) ? urlencode($this->authRedirection) : 'my-account')); + } + } + } + } + + if (count($this->errors)) + { + //for retro compatibility to display guest account creation form on authentication page + if (Tools::getValue('submitGuestAccount')) + $_GET['display_guest_checkout'] = 1; + + if (!Tools::getValue('is_new_customer')) + unset($_POST['passwd']); + if ($this->ajax) + { + $return = array( + 'hasError' => !empty($this->errors), + 'errors' => $this->errors, + 'isSaved' => false, + 'id_customer' => 0 + ); + die(Tools::jsonEncode($return)); + } + $this->context->smarty->assign('account_error', $this->errors); + } + } +} diff --git a/override/controllers/front/OrderConfirmationController.php b/override/controllers/front/OrderConfirmationController.php new file mode 100644 index 00000000..0e8b4e7c --- /dev/null +++ b/override/controllers/front/OrderConfirmationController.php @@ -0,0 +1,98 @@ +id_order); + + $idps = array(); + $orderProducts = $order->getProductsDetail(); + + foreach($orderProducts as $key => $product) + { + $idps[] = $product['id_product']; + $orderProducts[$key]['cat_name'] = Category::getNameStatic($product['id_category_default']); + } + + $this->context->smarty->assign(array( + 'langIsoCode' => $this->context->language->iso_code, + 'idps' => implode(',', $idps), + 'orderInfo' => $order, + 'orderProducts' => $orderProducts, + 'cartCreateOnCMSPage' => $_COOKIE['fromCMS'] + )); + + $this->context->smarty->assign(array( + 'is_guest' => $this->context->customer->is_guest, + 'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation(), + 'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn() + )); + + if ($this->context->customer->is_guest) + { + + $this->context->smarty->assign(array( + 'id_order' => $this->id_order, + 'reference_order' => $this->reference, + 'id_order_formatted' => sprintf('#%06d', $this->id_order), + 'email' => $this->context->customer->email + )); + /* If guest we clear the cookie for security reason */ + $this->context->customer->mylogout(); + } + + $this->setTemplate(_PS_THEME_DIR_.'order-confirmation.tpl'); + } + + /** + * Execute the hook displayPaymentReturn + */ + public function displayPaymentReturn() + { + if (Validate::isUnsignedId($this->id_order) && Validate::isUnsignedId($this->id_module)) + { + $params = array(); + $order = new Order($this->id_order); + $currency = new Currency($order->id_currency); + + if (Validate::isLoadedObject($order)) + { + $params['total_to_pay'] = $order->getOrdersTotalPaid(); + $params['currency'] = $currency->sign; + $params['objOrder'] = $order; + $params['currencyObj'] = $currency; + + return Hook::exec('displayPaymentReturn', $params, $this->id_module); + } + } + return false; + } + + /** + * Execute the hook displayOrderConfirmation + */ + public function displayOrderConfirmation() + { + if (Validate::isUnsignedId($this->id_order)) + { + $params = array(); + $order = new Order($this->id_order); + $currency = new Currency($order->id_currency); + + if (Validate::isLoadedObject($order)) + { + $params['total_to_pay'] = $order->getOrdersTotalPaid(); + $params['currency'] = $currency->sign; + $params['objOrder'] = $order; + $params['currencyObj'] = $currency; + + return Hook::exec('displayOrderConfirmation', $params); + } + } + return false; + } +} + diff --git a/override/controllers/front/OrderController.php b/override/controllers/front/OrderController.php index b39999aa..018b8fe1 100644 --- a/override/controllers/front/OrderController.php +++ b/override/controllers/front/OrderController.php @@ -87,8 +87,6 @@ class OrderController extends OrderControllerCore break; case OrderController::STEP_DELIVERY: - if (Tools::isSubmit('processAddress')) - $this->processAddress(); $this->autoStep(); $this->_assignCarrier(); @@ -100,6 +98,9 @@ class OrderController extends OrderControllerCore break; case OrderController::STEP_PAYMENT: + if (Tools::isSubmit('processAddress')) + $this->processAddress(); + // Check that the conditions (so active) were accepted by the customer $cgv = Tools::getValue('cgv') || $this->context->cookie->check_cgv; diff --git a/override/modules/blocknewsletter/blocknewsletter.php b/override/modules/blocknewsletter/blocknewsletter.php index e0d130cf..65e566fd 100644 --- a/override/modules/blocknewsletter/blocknewsletter.php +++ b/override/modules/blocknewsletter/blocknewsletter.php @@ -1,477 +1,487 @@ registerHook('displayNewsletterFooter')|| !$this->registerHook('displayleftPostCms')) - return false; - /*return Db::getInstance()->execute(' - CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'newsletter_cmsps` ( - `id_customer` int(11) NULL , - `id_newsletter` int(11) NULL, - `id_category` int(11) NOT NULL - ) ENGINE='._MYSQL_ENGINE_.' default CHARSET=utf8');*/ - } + public function install() + { + if (!parent::install() || !$this->registerHook('displayNewsletterFooter')|| !$this->registerHook('displayleftPostCms')) + return false; + /*return Db::getInstance()->execute(' + CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'newsletter_cmsps` ( + `id_customer` int(11) NULL , + `id_newsletter` int(11) NULL, + `id_category` int(11) NOT NULL + ) ENGINE='._MYSQL_ENGINE_.' default CHARSET=utf8');*/ + } - public function ajaxCall($email, $action = 0, $page, $id_post = false) { - if (empty($email) || !Validate::isEmail($email)) { - return array( - 'has_error' => true, - 'css' => 'alert alert-danger', - 'message' => 'Votre adresse email est invalide.' - ); - } + public function ajaxCall($email, $action = 0, $page, $id_post = false) + { + if (empty($email) || !Validate::isEmail($email)) { + return array( + 'has_error' => true, + 'css' => 'alert alert-danger', + 'message' => 'Votre adresse email est invalide.' + ); + } - if ($action == 0) { - $cmsCategory = false; - if($id_post != false) { - $cmsCategory = $this->searchCmsCategory($id_post, false); - } + if ($action == 0) { + $cmsCategory = false; + if($id_post != false) { + $cmsCategory = $this->searchCmsCategory($id_post, false); + } - $register_status = $this->isNewsletterRegistered($email); - $email = pSQL($email); - if ($register_status > 0) { - if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false){ - if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { - $this->sendConfirmationEmail($email, $cmsCategory); - $message = $this->l('You will recieve your PDF.'); - return array( - 'has_error' => false, - 'css' => 'alert alert-success', - 'message' => 'Vous allez reçevoir votre PDF' - ); - } - } + $register_status = $this->isNewsletterRegistered($email); + $email = pSQL($email); + if ($register_status > 0) { + if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false){ + if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { + $this->sendConfirmationEmail($email, $cmsCategory); + $message = $this->l('You will recieve your PDF.'); + return array( + 'has_error' => false, + 'css' => 'alert alert-success', + 'message' => 'Vous allez reçevoir votre PDF' + ); + } + } - - } elseif (!$this->isRegistered($register_status)) { - if ($this->register($email, $register_status)) { - if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory) { - $register_status = $this->isNewsletterRegistered($email); - if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { - $this->sendConfirmationEmail($email, $cmsCategory); - $message = $this->l('You have successfully subscribed to this newsletter.'); - return array( - 'has_error' => false, - 'css' => 'alert alert-success', - 'message' => 'Votre inscription a bien été prise en compte' - ); - } - } - - } else { - return array( - 'has_error' => true, - 'css' => 'alert alert-danger', - 'message' => 'Une erreure est survenue durant le processus.' - ); - } - - if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory) { - $this->sendConfirmationEmail($email, $cmsCategory); - } - } - } + + } elseif (!$this->isRegistered($register_status)) { + if ($this->register($email, $register_status)) { + if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory) { + $register_status = $this->isNewsletterRegistered($email); + if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { + $this->sendConfirmationEmail($email, $cmsCategory); + $message = $this->l('You have successfully subscribed to this newsletter.'); + return array( + 'has_error' => false, + 'css' => 'alert alert-success', + 'message' => 'Votre inscription a bien été prise en compte' + ); + } + } + + } else { + return array( + 'has_error' => true, + 'css' => 'alert alert-danger', + 'message' => 'Une erreure est survenue durant le processus.' + ); + } + + if (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory) { + $this->sendConfirmationEmail($email, $cmsCategory); + } + } + } - return array( - 'has_error' => true, - 'css' => 'alert alert-danger', - 'message' => 'Une erreur est survenue durant le processus d\'inscription.' - ); - } + return array( + 'has_error' => true, + 'css' => 'alert alert-danger', + 'message' => 'Une erreur est survenue durant le processus d\'inscription.' + ); + } - /** - * Register in block newsletter - */ - protected function newsletterRegistration() - { - if (empty($_POST['email']) || !Validate::isEmail($_POST['email'])){ - return $this->error = $this->l('Invalid email address.'); - } else if ($_POST['action'] == '1') { - /* Unsubscription */ + /** + * Register in block newsletter + */ + protected function newsletterRegistration() + { + if (empty($_POST['email']) || !Validate::isEmail($_POST['email'])) { + return $this->error = $this->l('Invalid email address.'); + } else if ($_POST['action'] == '1') { + /* Unsubscription */ + $register_status = $this->isNewsletterRegistered($_POST['email']); + if ($register_status < 1) { + return $this->error = $this->l('This email address is not registered.'); + } - $register_status = $this->isNewsletterRegistered($_POST['email']); + if (!$this->unregister($_POST['email'], $register_status)) { + return $this->error = $this->l('An error occurred while attempting to unsubscribe.'); + } - if ($register_status < 1) { - return $this->error = $this->l('This email address is not registered.'); - } + return $this->valid = $this->l('Unsubscription successful.'); - if (!$this->unregister($_POST['email'], $register_status)) { - return $this->error = $this->l('An error occurred while attempting to unsubscribe.'); - } + } else if ($_POST['action'] == '0') { + /* Subscription */ - return $this->valid = $this->l('Unsubscription successful.'); + $cmsCategory = false; + $genericPdf = false; + if(isset($_POST['id_post'])) { - } else if ($_POST['action'] == '0') { - /* Subscription */ + $cmsCategory = $this->searchCmsCategory($_POST['id_post'], false); - $cmsCategory = false; - $genericPdf = false; - if(isset($_POST['id_post'])) { + } elseif(isset($_POST['id_cat'])) { + $cmsCategory = $this->searchCmsCategory($_POST['id_cat'], true); - $cmsCategory = $this->searchCmsCategory($_POST['id_post'], false); + } elseif(isset($_POST['page'])) { + if ($_POST['page'] == 'index' || $_POST['page'] == 'homeedito' || $_POST['page'] == 'postedito'){ + $content = ''; + if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf')) { + $content = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf'); + } + $genericPdf = array( + 'content' => $content, + 'name' => 'Tout-pratique.pdf', + 'mine' => 'application/pdf' + ); + } + } - } elseif(isset($_POST['id_cat'])) { + $register_status = $this->isNewsletterRegistered($_POST['email']); + $email = pSQL($_POST['email']); + if ($register_status > 0){ + if ($code = Configuration::get('NW_VOUCHER_CODE') && !$cmsCategory && !$genericPdf) { + if (!$this->isNewsletterCmsPsRegistered($email, 9999, $register_status, false)) { + if ($this->registerNewsletterCmsPs($email, 9999, $register_status)) { + // $this->valid = $this->l('You will recieve your code.'); + $this->valid = 'Votre code promotionel vous a été envoyé.'; + $this->sendVoucher($email, Configuration::get('NW_VOUCHER_CODE')); + } + } else { + return $this->error = $this->l('This email address is already registered.'); + } - $cmsCategory = $this->searchCmsCategory($_POST['id_cat'], true); + } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false) { + // enregistrement pour la categorie si pas enregistré + if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { + // $this->valid = $this->l('You will recieve your PDF.'); + $this->valid = 'Vous allez reçevoir votre PDF.'; + $this->sendConfirmationEmail($email, $cmsCategory); + } else { + return $this->error = $this->l('An error occurred during the subscription process.'); + } + + } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $genericPdf != false) { + // $this->valid = $this->l('You will recieve your PDF.'); + $this->valid = 'Vous allez reçevoir votre PDF.'; + $this->sendConfirmationEmail($email, false, $genericPdf); + } else { + return $this->error = $this->l('This email address is already registered.'); + } + } - } elseif(isset($_POST['page'])) { - if ($_POST['page'] == 'index' || $_POST['page'] == 'homeedito' || $_POST['page'] == 'postedito'){ - $content = ''; - if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf')) { - $content = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf'); - } - $genericPdf = array( - 'content' => $content, - 'name' => 'Tout-pratique.pdf', - 'mine' => 'application/pdf' - ); - } - } - - $register_status = $this->isNewsletterRegistered($_POST['email']); - $email = pSQL($_POST['email']); - if ($register_status > 0){ - if ($code = Configuration::get('NW_VOUCHER_CODE') && !$cmsCategory && !$genericPdf) { - if (!$this->isNewsletterCmsPsRegistered($email, 9999, $register_status, false)) { - if ($this->registerNewsletterCmsPs($email, 9999, $register_status)) { - // $this->valid = $this->l('You will recieve your code.'); - $this->valid = 'Votre code promotionel vous a été envoyé.'; - $this->sendVoucher($email, Configuration::get('NW_VOUCHER_CODE')); - } - } else { - return $this->error = $this->l('This email address is already registered.'); - } + if (!$this->isRegistered($register_status)) { + if (Configuration::get('NW_VERIFICATION_EMAIL')) + { + // create an unactive entry in the newsletter database + if ($register_status == self::GUEST_NOT_REGISTERED) { + $this->registerGuest($email, false); + } - } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false){ - // enregistrement pour la categorie si pas enregistré - if ($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)) { - // $this->valid = $this->l('You will recieve your PDF.'); - $this->valid = 'Vous allez reçevoir votre PDF.'; - $this->sendConfirmationEmail($email, $cmsCategory); - } else { - return $this->error = $this->l('An error occurred during the subscription process.'); - } - - } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $genericPdf != false) { - // $this->valid = $this->l('You will recieve your PDF.'); - $this->valid = 'Vous allez reçevoir votre PDF.'; - $this->sendConfirmationEmail($email, false, $genericPdf); - } else { - return $this->error = $this->l('This email address is already registered.'); - } - } + if (!$token = $this->getToken($email, $register_status)) { + return $this->error = $this->l('An error occurred during the subscription process.'); + } - if (!$this->isRegistered($register_status)) - { - if (Configuration::get('NW_VERIFICATION_EMAIL')) - { - // create an unactive entry in the newsletter database - if ($register_status == self::GUEST_NOT_REGISTERED) { - $this->registerGuest($email, false); - } + $this->sendVerificationEmail($email, $token); - if (!$token = $this->getToken($email, $register_status)) { - return $this->error = $this->l('An error occurred during the subscription process.'); - } + return $this->valid = $this->l('A verification email has been sent. Please check your inbox.'); + } else { + if ($this->register($email, $register_status)) { + $this->valid = $this->l('You have successfully subscribed to this newsletter.'); + } else { + return $this->error = $this->l('An error occurred during the subscription process.'); + } + + $register_status = $this->isNewsletterRegistered($email); + if ($code = Configuration::get('NW_VOUCHER_CODE') && !$cmsCategory && !$genericPdf) { + if ($this->isNewsletterCmsPsRegistered($email, 9999, $register_status)) { + $this->sendVoucher($email, Configuration::get('NW_VOUCHER_CODE')); + } - $this->sendVerificationEmail($email, $token); + } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false) { - return $this->valid = $this->l('A verification email has been sent. Please check your inbox.'); - } else { - if ($this->register($email, $register_status)) { - $this->valid = $this->l('You have successfully subscribed to this newsletter.'); - } else { - return $this->error = $this->l('An error occurred during the subscription process.'); - } - - $register_status = $this->isNewsletterRegistered($email); - if ($code = Configuration::get('NW_VOUCHER_CODE') && !$cmsCategory && !$genericPdf) { - if ($this->isNewsletterCmsPsRegistered($email, 9999, $register_status)) { - $this->sendVoucher($email, Configuration::get('NW_VOUCHER_CODE')); - } + if($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)){ + $this->sendConfirmationEmail($email, $cmsCategory); + } else { + return $this->error = $this->l('An error occurred during the subscription process.'); + } - } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $cmsCategory != false) { + } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $genericPdf != false) { + $this->sendConfirmationEmail($email, false, $genericPdf); + } + } + } + } + } - if($this->isNewsletterCmsPsRegistered($email, $cmsCategory['id_category'], $register_status)){ - $this->sendConfirmationEmail($email, $cmsCategory); - } else { - return $this->error = $this->l('An error occurred during the subscription process.'); - } + public function searchCmsCategory($id, $strict = false) + { - } elseif (Configuration::get('NW_CONFIRMATION_EMAIL') && $genericPdf != false) { - $this->sendConfirmationEmail($email, false, $genericPdf); - } - } - } - } - } - - public function searchCmsCategory($id, $strict = false){ - - if ($strict) { - $cmsCategory = Db::getInstance()->ExecuteS(" - SELECT cc.`id_category`,cc.`id_parent`, ccl.`slug` - FROM `"._DB_PREFIX_."cmsps_categories` as cc - LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) - WHERE cc.`id_category`= ".(int)$id." AND ccl.`id_lang` = ".(int)$this->context->language->id." - "); - } else { - $cmsCategory = Db::getInstance()->ExecuteS(" - SELECT cc.`id_category`,cc.`id_parent`, ccl.`slug` - FROM `"._DB_PREFIX_."cmsps_categories` as cc - LEFT JOIN `"._DB_PREFIX_."cmsps_posts` as cp ON (cp.`id_category` = cc.`id_category`) - LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) - WHERE cp.`id_post`= ".(int)$id." AND ccl.`id_lang` = ".(int)$this->context->language->id." - "); - } + if ($strict) { + $cmsCategory = Db::getInstance()->ExecuteS(" + SELECT cc.`id_category`,cc.`id_parent`, ccl.`slug` + FROM `"._DB_PREFIX_."cmsps_categories` as cc + LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) + WHERE cc.`id_category`= ".(int)$id." AND ccl.`id_lang` = ".(int)$this->context->language->id." + "); + } else { + $cmsCategory = Db::getInstance()->ExecuteS(" + SELECT cc.`id_category`,cc.`id_parent`, ccl.`slug` + FROM `"._DB_PREFIX_."cmsps_categories` as cc + LEFT JOIN `"._DB_PREFIX_."cmsps_posts` as cp ON (cp.`id_category` = cc.`id_category`) + LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) + WHERE cp.`id_post`= ".(int)$id." AND ccl.`id_lang` = ".(int)$this->context->language->id." + "); + } - while ($cmsCategory[0]['id_parent'] != 0) { - $cmsCategory = Db::getInstance()->ExecuteS(" - SELECT cc.`id_category`, cc.`id_parent`, ccl.`slug` - FROM `"._DB_PREFIX_."cmsps_categories` as cc - LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) - WHERE cc.`id_category` = ".(int)$cmsCategory[0]['id_parent']." AND ccl.`id_lang` = ".(int)$this->context->language->id." - "); - } + while ($cmsCategory[0]['id_parent'] != 0) { + $cmsCategory = Db::getInstance()->ExecuteS(" + SELECT cc.`id_category`, cc.`id_parent`, ccl.`slug` + FROM `"._DB_PREFIX_."cmsps_categories` as cc + LEFT JOIN `"._DB_PREFIX_."cmsps_categories_lang` as ccl ON (ccl.`id_category` = cc.`id_category`) + WHERE cc.`id_category` = ".(int)$cmsCategory[0]['id_parent']." AND ccl.`id_lang` = ".(int)$this->context->language->id." + "); + } - return $cmsCategory[0]; + return $cmsCategory[0]; - } + } - protected function isNewsletterCmsPsRegistered($email, $id_category, $register_status, $haveToRegister = true) - { - if ($register_status == self::GUEST_REGISTERED) { - $sql = 'SELECT n.`id` - FROM '._DB_PREFIX_.'newsletter n - LEFT JOIN '._DB_PREFIX_.'newsletter_cmsps nc ON (nc.`id_newsletter` = n.`id`) - WHERE n.`email` = \''.pSQL($email).'\' - AND n.`id_shop` = '.$this->context->shop->id.' - AND nc.`id_category`='.(int)$id_category; - } elseif ($register_status == self::CUSTOMER_REGISTERED) { - $sql = 'SELECT c.`id_customer` - FROM '._DB_PREFIX_.'customer c - LEFT JOIN '._DB_PREFIX_.'newsletter_cmsps nc ON (nc.`id_customer` = c.`id_customer`) - WHERE c.`email` = \''.pSQL($email).'\' - AND c.`newsletter` = 1 - AND nc.`id_customer` IS NOT NULL - AND nc.`id_category`='.(int)$id_category.' - AND c.`id_shop` = '.$this->context->shop->id; - } else { - return false; - } + protected function isNewsletterCmsPsRegistered($email, $id_category, $register_status, $haveToRegister = true) + { + if ($register_status == self::GUEST_REGISTERED) { + $sql = 'SELECT n.`id` + FROM '._DB_PREFIX_.'newsletter n + LEFT JOIN '._DB_PREFIX_.'newsletter_cmsps nc ON (nc.`id_newsletter` = n.`id`) + WHERE n.`email` = \''.pSQL($email).'\' + AND n.`id_shop` = '.$this->context->shop->id.' + AND nc.`id_category`='.(int)$id_category; + } elseif ($register_status == self::CUSTOMER_REGISTERED) { + $sql = 'SELECT c.`id_customer` + FROM '._DB_PREFIX_.'customer c + LEFT JOIN '._DB_PREFIX_.'newsletter_cmsps nc ON (nc.`id_customer` = c.`id_customer`) + WHERE c.`email` = \''.pSQL($email).'\' + AND c.`newsletter` = 1 + AND nc.`id_customer` IS NOT NULL + AND nc.`id_category`='.(int)$id_category.' + AND c.`id_shop` = '.$this->context->shop->id; + } else { + return false; + } - if (Db::getInstance()->getRow($sql)){ - return true; - } elseif ($haveToRegister) { - return $this->registerNewsletterCmsPs($email, $id_category, $register_status); - } + if (Db::getInstance()->getRow($sql)){ + return true; + } elseif ($haveToRegister) { + return $this->registerNewsletterCmsPs($email, $id_category, $register_status); + } - return false; + return false; - } + } - protected function registerNewsletterCmsPs($email, $id_category, $register_status) - { - if ($register_status == self::GUEST_REGISTERED) { - $sql = 'INSERT INTO '._DB_PREFIX_.'newsletter_cmsps (id_newsletter, id_category) - VALUES - ( - ( - SELECT n.`id` - FROM '._DB_PREFIX_.'newsletter n - WHERE n.`email` = \''.pSQL($email).'\' - AND id_shop = '.$this->context->shop->id.' - ), - '.(int)$id_category.' - )'; - } elseif ($register_status == self::CUSTOMER_REGISTERED) { - $sql = 'INSERT INTO '._DB_PREFIX_.'newsletter_cmsps (id_category, id_customer) - VALUES - ( - '.(int)$id_category.', - ( - SELECT c.`id_customer` - FROM '._DB_PREFIX_.'customer c - WHERE c.`email` = \''.pSQL($email).'\' - AND c.`newsletter` = \'1\' - AND id_shop = '.$this->context->shop->id.' - ) - )'; - } + protected function registerNewsletterCmsPs($email, $id_category, $register_status) + { + if ($register_status == self::GUEST_REGISTERED) { + $sql = 'INSERT INTO '._DB_PREFIX_.'newsletter_cmsps (id_newsletter, id_category) + VALUES + ( + ( + SELECT n.`id` + FROM '._DB_PREFIX_.'newsletter n + WHERE n.`email` = \''.pSQL($email).'\' + AND id_shop = '.$this->context->shop->id.' + ), + '.(int)$id_category.' + )'; + } elseif ($register_status == self::CUSTOMER_REGISTERED) { + $sql = 'INSERT INTO '._DB_PREFIX_.'newsletter_cmsps (id_category, id_customer) + VALUES + ( + '.(int)$id_category.', + ( + SELECT c.`id_customer` + FROM '._DB_PREFIX_.'customer c + WHERE c.`email` = \''.pSQL($email).'\' + AND c.`newsletter` = \'1\' + AND id_shop = '.$this->context->shop->id.' + ) + )'; + } - if(Db::getInstance()->execute($sql)) { - return true; - } - return false; - } + if(Db::getInstance()->execute($sql)) { + return true; + } + return false; + } - /** - * @Override - */ - protected function unregister($email, $register_status) - { - if (!$this->unregisterNewsletterCmsPs($email, $id_category, $register_status)) { - return false; - } + /** + * @Override + */ + protected function unregister($email, $register_status) + { + if (!$this->unregisterNewsletterCmsPs($email, $id_category, $register_status)) { + return false; + } - if ($register_status == self::GUEST_REGISTERED) { - $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter WHERE `email` = \''.pSQL($_POST['email']).'\' AND id_shop = '.$this->context->shop->id; - } elseif ($register_status == self::CUSTOMER_REGISTERED) { - $sql = 'UPDATE '._DB_PREFIX_.'customer SET `newsletter` = 0 WHERE `email` = \''.pSQL($_POST['email']).'\' AND id_shop = '.$this->context->shop->id; - } + if ($register_status == self::GUEST_REGISTERED) { + $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter WHERE `email` = \''.pSQL($_POST['email']).'\' AND id_shop = '.$this->context->shop->id; + } elseif ($register_status == self::CUSTOMER_REGISTERED) { + $sql = 'UPDATE '._DB_PREFIX_.'customer SET `newsletter` = 0 WHERE `email` = \''.pSQL($_POST['email']).'\' AND id_shop = '.$this->context->shop->id; + } - if (!isset($sql) || !Db::getInstance()->execute($sql)) { - return false; - } + if (!isset($sql) || !Db::getInstance()->execute($sql)) { + return false; + } - return true; - } + return true; + } - protected function unregisterNewsletterCmsPs($email, $register_status) - { - if ($register_status == self::GUEST_REGISTERED) { - $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter_cmsps nc - WHERE nc.`id_newsletter` = - ( - SELECT n.`id` - FROM '._DB_PREFIX_.'newsletter n - WHERE n.`email` = \''.pSQL($email).'\' - AND id_shop = '.$this->context->shop->id.' - )'; - } elseif ($register_status == self::CUSTOMER_REGISTERED) { - $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter_cmsps nc - WHERE nc.`id_customer` = - ( - SELECT c.`id_customer` - FROM '._DB_PREFIX_.'customer c - WHERE c.`email` = \''.pSQL($email).'\' - AND c.`newsletter` = \'1\' - AND id_shop = '.$this->context->shop->id.' - )'; - } + protected function unregisterNewsletterCmsPs($email, $register_status) + { + if ($register_status == self::GUEST_REGISTERED) { + $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter_cmsps nc + WHERE nc.`id_newsletter` = + ( + SELECT n.`id` + FROM '._DB_PREFIX_.'newsletter n + WHERE n.`email` = \''.pSQL($email).'\' + AND id_shop = '.$this->context->shop->id.' + )'; + } elseif ($register_status == self::CUSTOMER_REGISTERED) { + $sql = 'DELETE FROM '._DB_PREFIX_.'newsletter_cmsps nc + WHERE nc.`id_customer` = + ( + SELECT c.`id_customer` + FROM '._DB_PREFIX_.'customer c + WHERE c.`email` = \''.pSQL($email).'\' + AND c.`newsletter` = \'1\' + AND id_shop = '.$this->context->shop->id.' + )'; + } - if(Db::getInstance()->execute($sql)) { - return true; - } - return false; - } + if(Db::getInstance()->execute($sql)) { + return true; + } + return false; + } - /** - * @Override - */ - protected function sendConfirmationEmail($email, $cmsCategory = false, $genericPdf = false) - { - $data = array(); - $fileAttachment = array(); - if ($cmsCategory != false) { - if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf')) { - $fileAttachment['content'] = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf'); - $fileAttachment['name'] = 'Tout-pratique-'.$cmsCategory['slug'].'.pdf'; - $fileAttachment['mime'] = "application/pdf"; + /** + * @Override + */ + protected function sendConfirmationEmail($email, $cmsCategory = false, $genericPdf = false) + { + $data = array(); + $fileAttachment = array(); + if ($cmsCategory != false) { + if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf')) { + $fileAttachment['content'] = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf'); + $fileAttachment['name'] = 'Tout-pratique-'.$cmsCategory['slug'].'.pdf'; + $fileAttachment['mime'] = "application/pdf"; - $data['{attached_file_url}'] = _PS_BASE_URL_.'img/cms_c/pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf'; - $data['{attached_file}'] = "Tout-pratique-".$cmsCategory['slug']; - } else { - // on envoie le pdf générique - if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf')) { - $fileAttachment['content'] = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf'); - } - $fileAttachment['name'] = 'Tout-pratique.pdf'; - $fileAttachment['mime'] = "application/pdf"; - $data['{attached_file_url}'] = _PS_BASE_URL_.'img/cms_c/pdf/Tout-pratique.pdf'; - $data['{attached_file}'] = "Tout-pratique"; - } - } elseif($genericPdf != false) { - $fileAttachment = $genericPdf; - $data['{attached_file_url}'] = _PS_BASE_URL_.'img/cms_c/pdf/Tout-pratique.pdf'; - $data['{attached_file}'] = $genericPdf['name']; - } - return Mail::Send($this->context->language->id, 'newsletter_conf', Mail::l('Newsletter confirmation', $this->context->language->id), $data, pSQL($email), null, null, null, $fileAttachment, null, _THEME_DIR_.'modules/blocknewsletter/mails/', false, $this->context->shop->id); - } + $data['{attached_file_url}'] = _PS_BASE_URL_.'/img/cms_c/pdf/Tout-pratique-'.$cmsCategory['slug'].'.pdf'; + $data['{attached_file}'] = "Tout-pratique-".$cmsCategory['slug']; + } else { + // on envoie le pdf générique + if (glob(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf')) { + $fileAttachment['content'] = file_get_contents(_CMS_CAT_IMG_DIR_.'pdf/Tout-pratique.pdf'); + } + $fileAttachment['name'] = 'Tout-pratique.pdf'; + $fileAttachment['mime'] = "application/pdf"; + $data['{attached_file_url}'] = _PS_BASE_URL_.'/img/cms_c/pdf/Tout-pratique.pdf'; + $data['{attached_file}'] = "Tout-pratique"; + } + } elseif ($genericPdf != false) { + $fileAttachment = $genericPdf; + $data['{attached_file_url}'] = _PS_BASE_URL_.'/img/cms_c/pdf/Tout-pratique.pdf'; + $data['{attached_file}'] = $genericPdf['name']; + } + return Mail::Send($this->context->language->id, 'newsletter_conf', Mail::l('Newsletter confirmation', $this->context->language->id), $data, pSQL($email), null, null, null, $fileAttachment, null, _THEME_DIR_.'modules/blocknewsletter/mails/', false, $this->context->shop->id); + } - /** - * @Override - */ - protected function _prepareHook($params) - { - if (Tools::isSubmit('submitNewsletter')) - { - $this->newsletterRegistration(); - if ($this->error) - { - $this->smarty->assign( - array( - 'color' => 'red', - 'msg' => $this->error, - 'nw_value' => isset($_POST['email']) ? pSQL($_POST['email']) : false, - 'nw_error' => true, - 'action' => $_POST['action'], - 'nw_block' => $_POST['block'], - ) - ); - } - else if ($this->valid) - { - $this->smarty->assign( - array( - 'color' => 'green', - 'msg' => $this->valid, - 'nw_error' => false, - 'nw_block' => $_POST['block'], - ) - ); - } - } - $this->smarty->assign('this_path', $this->_path); - } + /** + * @Override + */ + protected function _prepareHook($params) + { + if (Tools::isSubmit('submitNewsletter')) + { + $this->newsletterRegistration(); + if ($this->error) + { + $this->smarty->assign( + array( + 'color' => 'red', + 'msg' => $this->error, + 'nw_value' => isset($_POST['email']) ? pSQL($_POST['email']) : false, + 'nw_error' => true, + 'action' => $_POST['action'], + 'nw_block' => $_POST['block'], + ) + ); + } + else if ($this->valid) + { + $this->smarty->assign( + array( + 'color' => 'green', + 'msg' => $this->valid, + 'nw_error' => false, + 'nw_block' => $_POST['block'], + ) + ); + } + } + $this->smarty->assign('this_path', $this->_path); + } - public function hookdisplayNewsletterFooter($params) - { - if (!isset($this->prepared) || !$this->prepared) { - $this->_prepareHook($params); - } - if(isset($params['id_cmspost'])) { - $this->context->smarty->assign('post_id',$params['id_cmspost']); - } - $this->prepared = true; - return $this->display(__FILE__, 'blocknewsletter_footer.tpl'); - } - + /** + * @Override + */ + public function confirmSubscription($email) + { + if ($email) + { + return true; + } + } - public function hookdisplayleftPostCms($params) - { - if (!isset($this->prepared) || !$this->prepared) { - $this->_prepareHook($params); - } - $this->prepared = true; - if(isset($params['id_cmspost'])) { - $this->context->smarty->assign('post_id',$params['id_cmspost']); - } - return $this->display(__FILE__, 'blocknewsletter_left.tpl'); - } + public function hookdisplayNewsletterFooter($params) + { + if (!isset($this->prepared) || !$this->prepared) { + $this->_prepareHook($params); + } + if(isset($params['id_cmspost'])) { + $this->context->smarty->assign('post_id',$params['id_cmspost']); + } + $this->prepared = true; + return $this->display(__FILE__, 'blocknewsletter_footer.tpl'); + } + - public function hookdisplayFooter($params) - { - if($this->context->customer->isLogged()) { - $register_status = $this->isNewsletterRegistered($this->context->customer->email); - } - if((isset($register_status) && $register_status>0) || !isset($register_status)) { - if (!isset($this->prepared) || !$this->prepared) { - $this->_prepareHook($params); - } - $this->prepared = true; - if(isset($params['id_cmspost'])) { - $this->context->smarty->assign('post_id',$params['id_cmspost']); - } - $this->context->smarty->assign('nw_url','/modules/blocknewsletter/ajax_ligthbox.php'); - return $this->display(__FILE__, 'blocknewsletter_lightbox.tpl'); - } - } + public function hookdisplayleftPostCms($params) + { + if (!isset($this->prepared) || !$this->prepared) { + $this->_prepareHook($params); + } + $this->prepared = true; + if(isset($params['id_cmspost'])) { + $this->context->smarty->assign('post_id',$params['id_cmspost']); + } + return $this->display(__FILE__, 'blocknewsletter_left.tpl'); + } + + public function hookdisplayFooter($params) + { + if($this->context->customer->isLogged()) { + $register_status = $this->isNewsletterRegistered($this->context->customer->email); + } + if((isset($register_status) && $register_status>0) || !isset($register_status)) { + if (!isset($this->prepared) || !$this->prepared) { + $this->_prepareHook($params); + } + $this->prepared = true; + if(isset($params['id_cmspost'])) { + $this->context->smarty->assign('post_id',$params['id_cmspost']); + } + $this->context->smarty->assign('nw_url','/modules/blocknewsletter/ajax_ligthbox.php'); + return $this->display(__FILE__, 'blocknewsletter_lightbox.tpl'); + } + } } diff --git a/phinx.yml b/phinx.yml deleted file mode 100644 index 9c3a371b..00000000 --- a/phinx.yml +++ /dev/null @@ -1,32 +0,0 @@ -paths: - migrations: %%PHINX_CONFIG_DIR%%/migrations - -environments: - default_migration_table: phinxlog - default_database: development - production: - adapter: mysql - host: 192.168.0.41 - name: toutpratiquefdsfds - user: root - pass: '' - port: 3306 - charset: utf8 - - development: - adapter: mysql - host: 192.168.0.41 - name: toutpratique_devfdsfds - user: root - pass: '' - port: 3306 - charset: utf8 - - testing: - adapter: mysql - host: localhost - name: testing_db - user: root - pass: '' - port: 3306 - charset: utf8 diff --git a/themes/toutpratique/address.tpl b/themes/toutpratique/address.tpl index adba7600..ce65da8d 100644 --- a/themes/toutpratique/address.tpl +++ b/themes/toutpratique/address.tpl @@ -77,12 +77,8 @@
    -

    - - -

    - +

    diff --git a/themes/toutpratique/authentication.tpl b/themes/toutpratique/authentication.tpl index 23524b5f..3ee1aaa8 100644 --- a/themes/toutpratique/authentication.tpl +++ b/themes/toutpratique/authentication.tpl @@ -221,12 +221,9 @@

    +

    - - -

    -

    - +

    @@ -294,11 +291,7 @@

    - - -

    -

    - +

    diff --git a/themes/toutpratique/categorycms.tpl b/themes/toutpratique/categorycms.tpl index 6acfabd4..075a725c 100644 --- a/themes/toutpratique/categorycms.tpl +++ b/themes/toutpratique/categorycms.tpl @@ -133,7 +133,7 @@ {if $is_product && !empty($articles.$key_up->products)}

    - {hook h='displayProductCategory'} + {hook h='displayProductCategory' id_cms_category=$post->id_category}
    {if $count < 2} {assign var=count value=$count+1} @@ -153,7 +153,7 @@ && !$is_product )}
    - {hook h='displayProductCategory'} + {hook h='displayProductCategory' id_cms_category=$post->id_category}
    {assign var=pub value=false} diff --git a/themes/toutpratique/css/global.css b/themes/toutpratique/css/global.css index 80fb15a4..28f0697a 100644 --- a/themes/toutpratique/css/global.css +++ b/themes/toutpratique/css/global.css @@ -317,7 +317,7 @@ body .ac_results { color: #fff; font-family: 'pompiere_regular'; font-size: 24px; - padding: 15px 0 80px 0; + padding: 15px 0; } .index .intro_top { padding: 15px 0 30px 0; @@ -625,12 +625,13 @@ body .ac_results { .encart_boutique { - background: url('../img/logo_home_boutique.jpg') no-repeat center center; + background: url('../img/logo_home_boutique.gif') no-repeat center center; + display: block; height: 344px; padding-top: 215px; text-align: center; } -.encart_boutique:hover { background: url('../img/logo_home_boutique_hover.jpg') no-repeat center center;} +.encart_boutique:hover { background: url('../img/logo_home_boutique.png') no-repeat center center;} .encart_boutique .boutique { font-family: 'vidaloka'; letter-spacing: -1px; @@ -1329,8 +1330,8 @@ main#categorycms { margin-bottom: 30px } margin-top: 40px; } .article_content .content br { - display: block; - margin:0; + display: block; + margin:0; } .article_content .content h3 { font-weight: bold; @@ -1340,6 +1341,11 @@ main#categorycms { margin-bottom: 30px } margin-bottom: 20px; margin-top: 20px; } +.article_content .content img { + display: block; + height: auto; + max-width: 100%; +} .article_content .content h5, h4 { font-size: 15px; line-height: 24px; @@ -2036,6 +2042,7 @@ main#categorycms { margin-bottom: 30px } .vote_box.button span { font-size: 21px;} #postcms .intro_note { margin: 15px 0; height: 80px;} #postcms .note_article{ display: none;} + #postcms .pub_left{ display: none;} #postcms #stack_right.stack{ position: normal; top: inherit; @@ -2823,7 +2830,7 @@ main#categorycms { margin-bottom: 30px } display: none; left: 50%; margin: 0 0 0 -365px; - position: fixed; + position: absolute; top: 50px; width: 730px; z-index: 3000; @@ -2971,19 +2978,21 @@ main#categorycms { margin-bottom: 30px } } @media (max-width: 991px) { .box-cart-bottom .btn.btn-cart { font-size: 20px; padding: 0 14px; width: 100%; } + #layer_cart .cross, #layer_cart_pack .cross { border-radius: 0; right: 15px } } @media (max-width: 767px) { #layer_cart .layer_cart_product .product-infos .prices .product-old-price{ display: block; } - #layer_cart { + #layer_cart_pack, + #layer_cart { margin: 0 0 0 -250px; width: 500px; } } @media (max-width: 570px) { .lightbox_subtitle{ font-size: 20px;} - #layer_cart .layer_cart_product{ margin-bottom: 10px;} + #layer_cart .layer_cart_product{ height: margin-bottom: 10px;} #layer_cart .layer_cart_product .product-infos .prices .product-price{ font-size: 25px;} #layer_cart .layer_cart_product .product-infos .product-attributes{ font-size: 12px; margin-bottom: 0;} #layer_cart .layer_cart_product .product-infos .product-name{ margin: 15px 0 5px;} @@ -2991,8 +3000,8 @@ main#categorycms { margin-bottom: 30px } .layer_cart_cart { margin-bottom: 15px;} } @media (max-width: 500px) { + #layer_cart_pack, #layer_cart { - display: none; margin: 0 0 0 -150px; width: 300px; } @@ -3305,6 +3314,7 @@ main#categorycms { margin-bottom: 30px } .cart_navigation .btn-cart { margin-bottom: 15px; width: 100% } } +#order #message { background: #f9f9f9; border: 1px solid #dfdfdf } /************************************************************************************************************* ****************************** CONNEXION / CREATION DE COMPTE ******************************** @@ -3849,11 +3859,13 @@ body .addresses { font-family: 'pt_sans'; overflow: hidden; } +#discount .account .table-div .table-row, #history .account .table-div .table-row { font-size: 0; margin-top: 0px; padding: 21px 0 19px 0; } + #discount .account .table-div .table-row > div, #history .account .table-div .table-row > div { color: #666; display: inline-block; diff --git a/themes/toutpratique/edito.tpl b/themes/toutpratique/edito.tpl index dd10f373..2a67a95a 100644 --- a/themes/toutpratique/edito.tpl +++ b/themes/toutpratique/edito.tpl @@ -1,7 +1,7 @@

    {$edito->title}

    -

    {$edito->intro|escape:'html':'UTF-8'|truncate:230}

    +

    {$edito->intro|escape:'UTF-8'|truncate:230}

    diff --git a/themes/toutpratique/encart_boutique.tpl b/themes/toutpratique/encart_boutique.tpl index 52363578..1dc8afea 100644 --- a/themes/toutpratique/encart_boutique.tpl +++ b/themes/toutpratique/encart_boutique.tpl @@ -1,4 +1 @@ -
    - {l s='La Boutique'} - {l s='Découvrir'} -
    \ No newline at end of file + \ No newline at end of file diff --git a/themes/toutpratique/footer.tpl b/themes/toutpratique/footer.tpl index 810a8727..f5d89a29 100644 --- a/themes/toutpratique/footer.tpl +++ b/themes/toutpratique/footer.tpl @@ -59,6 +59,30 @@ {hook h='endBody'} + {if $page_name == 'order-confirmation'} + + + {assign var='totalTaxes' value=($orderInfo->total_paid_tax_incl - $orderInfo->total_paid_tax_excl)} + + {literal} + + {/literal} + + {/if} + {/if} {include file="$tpl_dir./global.tpl"} diff --git a/themes/toutpratique/header.tpl b/themes/toutpratique/header.tpl index 5ab29eaa..b1ea0b7c 100644 --- a/themes/toutpratique/header.tpl +++ b/themes/toutpratique/header.tpl @@ -40,6 +40,19 @@ + + {literal} + + {/literal} {if !isset($content_only) || !$content_only} @@ -50,7 +63,6 @@ {/if} -