Compare commits

...

283 Commits

Author SHA1 Message Date
Thomas MONCHICOURT 0d7c6466ec Fix : header et footer tuto 2018-09-19 11:24:37 +02:00
Thomas MONCHICOURT 68802a2a4d Feat : ajout de fonctionnalité admin #7249 @0h15 2018-09-12 15:15:03 +02:00
Thomas MONCHICOURT ceb2f7f7ce Feat : correction mineur #7244 @0h20 2018-09-12 14:22:02 +02:00
Thomas MONCHICOURT 49d47b70f6 Feat : ajout d’un status visionnée candidature talent #7229 @0h15 2018-09-10 15:56:01 +02:00
Thomas MONCHICOURT 49cc496661 Feat : changer les photos de temoignages #7220 @0h10 2018-09-10 15:13:01 +02:00
Thomas MONCHICOURT a46d69f190 Feat : mise en place suppression d’une candidature 2018-09-07 13:35:12 +02:00
Thomas MONCHICOURT 26a41d4eb6 Fix : modal tuto #7202 @1h 2018-09-06 16:52:39 +02:00
Thomas MONCHICOURT feca14ae4d Fix : ajouter au menu et changement status direct #7177 @0h10 2018-09-05 12:26:58 +02:00
Thomas MONCHICOURT 33c1221cb2 Feat : lister les candidatures en admin #7177 @1h 2018-09-05 12:16:56 +02:00
Thomas MONCHICOURT b13ebb9d0f Fix: birtday date error on save 2018-08-29 14:20:53 +02:00
Maxime Thévenot 76f557501e Fix : update registration template to fix button 2018-08-28 15:27:09 +02:00
Maxime Thévenot 2eb399776b Fix : hover color on territory title 2018-08-28 11:44:22 +02:00
Maxime Thévenot 8986ae738a Fix : typo in wording and redirect castre mazamet 2018-08-28 11:29:07 +02:00
Thomas MONCHICOURT 7dfaf01705 Fix : correction template pour message direct au talent 2018-08-27 12:22:26 +02:00
Thomas MONCHICOURT a4631872e0 Fix : https on graph picture facebook 2018-08-24 12:24:04 +02:00
Thomas MONCHICOURT ddc6b18d0a Fix : erreur 500 talent non connecté 2018-08-24 12:20:43 +02:00
Thomas MONCHICOURT 6033516273 Fix : erreur 500 sur talent en tant qu’admin 2018-08-23 17:10:11 +02:00
Thomas MONCHICOURT 73a44a011d Fix : double tags input 2018-08-23 16:39:01 +02:00
Thomas MONCHICOURT 57299b841e Fix : check birthday if empty talent 2018-08-23 16:09:03 +02:00
Thomas MONCHICOURT fb11613b7c Feat : rechargement de la dropzone au chargement de video sur les réponse 2018-08-23 15:31:54 +02:00
Thomas MONCHICOURT e13ef32197 Merge branch 'master' into develop 2018-08-23 15:23:18 +02:00
Thomas MONCHICOURT e70c1c7f5e Feat : dropzone reload 2018-08-23 15:19:46 +02:00
Thomas MONCHICOURT 0c9c4f0fc2 Fix : video vimeo pour dev 2018-08-23 15:19:37 +02:00
Thomas MONCHICOURT 5cd78b272a Fix : video égérie talent 2018-08-23 14:56:42 +02:00
Thomas MONCHICOURT f3597146ad Feat : ajout title analitycs annonce #7115 @0h10 2018-08-23 14:15:12 +02:00
Thomas MONCHICOURT f52f49ce9a Fix : css form parent probleme 2018-08-23 13:57:16 +02:00
Thomas MONCHICOURT 0b6a04e8d0 Feat : form validation talent + datepicker 2018-08-23 12:32:30 +02:00
Thomas MONCHICOURT 0dfc9af863 Feat : modification couleur cookie bar 2018-08-22 16:48:40 +02:00
Thomas MONCHICOURT fc548bc74c Fix: condition existance vidéo 2018-08-22 16:17:36 +02:00
Thomas MONCHICOURT 5d78b30bef Feat : generation css suite merge 2018-08-22 16:05:10 +02:00
Thomas MONCHICOURT 7372b03e5c Merge branch 'develop'
# Conflicts:
#	volume/www/website/www/web/css/styles.css
#	volume/www/website/www/web/css/styles.css.map
#	volume/www/website/www/web/sass/base/_variables.scss
#	volume/www/website/www/web/sass/modules/_app.scss
2018-08-22 16:04:32 +02:00
Thomas MONCHICOURT eadb2a397f Fix : probleme connexion apres login 2018-08-22 11:34:58 +02:00
Thomas MONCHICOURT 959dd61435 Feat : ajout lien modification menu et title 2018-08-21 14:33:38 +02:00
Thomas MONCHICOURT 6e63c1f2e8 feat : css pour la cookie bar en prod 2018-08-21 14:16:34 +02:00
Thomas MONCHICOURT 8a91476e86 Feat : css suite merge 2018-08-21 12:33:37 +02:00
Thomas MONCHICOURT 714bf6ad8e Feat : cookie bar #7105 @1h
# Conflicts:
#	volume/www/website/www/composer.json
#	volume/www/website/www/composer.lock
#	volume/www/website/www/vendor/composer/installed.json
#	volume/www/website/www/web/css/styles.css
#	volume/www/website/www/web/css/styles.css.map
#	volume/www/website/www/web/sass/modules/_app.scss
2018-08-21 12:33:20 +02:00
Thomas MONCHICOURT 6f5118e500 Feat : cookie bar #7105 @1h 2018-08-21 12:30:58 +02:00
Thomas MONCHICOURT 1907aeb647 Feat : Mise en place des titles pour le suivi event #7071 @0h10 2018-08-16 14:43:46 +02:00
Thomas MONCHICOURT 85abb49683 Feat : ajout readmore js 2018-08-16 14:38:26 +02:00
Thomas MONCHICOURT 6fb0ad4d40 Fix : message 2018-08-14 15:23:14 +02:00
Thomas MONCHICOURT 1ab9cf6703 Feat : ajout du twig intl extension 2018-08-14 14:50:20 +02:00
Thomas MONCHICOURT e8ab042fe5 Feat : modificaion recommandation 2018-08-14 14:40:44 +02:00
Thomas MONCHICOURT 009bea43ef feat: ajout champ type poste #6838 2018-08-13 17:23:35 +02:00
Thomas MONCHICOURT 0abfa0dca8 Feat : ajout du readmorejs pour les message de candidature #6945 @0h30 2018-08-13 11:04:12 +02:00
Thomas MONCHICOURT 7510b8022a Feat : correction recettage 2018-08-13 10:38:06 +02:00
Thomas MONCHICOURT 69e6f6c16b feat : Correction corentin reponse video #6945 @2h 2018-08-09 12:11:32 +02:00
Thomas MONCHICOURT 4981a3d310 Feat : test unitaire 2018-08-08 11:28:13 +02:00
Thomas MONCHICOURT 13ec5f3d34 Fix : condition territoire prefixe 2018-08-07 16:28:18 +02:00
Thomas MONCHICOURT a08b13591a Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop 2018-08-07 16:24:21 +02:00
Thomas MONCHICOURT a470518403 Fix : erreur iframe 2018-08-07 16:24:15 +02:00
Maxime Thévenot 64e76b29f5 Fix : update conf for preprod rebuilding 2018-08-07 16:15:53 +02:00
Maxime Thévenot 983e0b03be Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop
# Conflicts:
#	volume/www/website/www/app/Resources/views/default/index.html.twig
2018-08-07 15:44:43 +02:00
Maxime Thévenot 45cb8896de Feat : update territory carrousels 2018-08-07 15:42:21 +02:00
Thomas MONCHICOURT 9bf7065984 Fix : order réponse dashboard talent 2018-08-07 15:24:30 +02:00
Thomas MONCHICOURT 243d1e3945 Fix : img talent homepage 2018-08-07 15:13:35 +02:00
Thomas MONCHICOURT 16951ee895 Feat : design dashboard 2018-08-07 14:54:01 +02:00
Thomas MONCHICOURT e5ce4c7127 Feat: ajout nouveau champ sendTime #6945 @0h20 2018-08-07 14:27:25 +02:00
Thomas MONCHICOURT 18c12c3b3a Feat : modification design #6945 @2h 2018-08-07 10:45:45 +02:00
Thomas MONCHICOURT 13adc1b87c Fix : design retour corentin #6945 @1h15 2018-08-03 11:54:53 +02:00
Thomas MONCHICOURT 75e0f4b99e Fix : dropzone error 2018-08-03 11:53:59 +02:00
Thomas MONCHICOURT 9d659eea7e Fix : count pour candidature spontanée 2018-08-01 16:35:00 +02:00
Thomas MONCHICOURT 8a987d48c1 Feat : modification listing answer 2018-08-01 16:32:58 +02:00
Thomas MONCHICOURT e6d9c72f62 Feat : Candidature spontané talent #6945 @0h20 2018-08-01 15:13:10 +02:00
Thomas MONCHICOURT a92ab7f3cc Feat : Url candidature 2018-08-01 15:08:06 +02:00
Thomas MONCHICOURT d1c37dfd23 Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop 2018-08-01 14:57:36 +02:00
Thomas MONCHICOURT a9b16a7a84 Feat : Ajout du détail d’une réponse pour le talent #6945 @1h 2018-08-01 14:57:31 +02:00
Thomas MONCHICOURT 962b9f0633 Fix : facebook connexion
# Conflicts:
#	volume/www/website/www/src/AppBundle/Security/Core/User/FOSUBUserProvider.php
2018-08-01 13:38:56 +02:00
Maxime Thévenot d413fee495 Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop 2018-08-01 13:36:33 +02:00
Maxime Thévenot 058763fdbb Feat : update territory on index page 2018-08-01 13:36:28 +02:00
Thomas MONCHICOURT b19184b11b Fix : Correction dashboard recommendation 2018-08-01 11:26:20 +02:00
Thomas MONCHICOURT 642958639c Fix : admin dashboard 2018-08-01 11:24:30 +02:00
Thomas MONCHICOURT 353151a440 Merge branch 'feat/reponse-video' into develop
# Conflicts:
#	volume/www/website/www/app/Resources/views/company/ad_table_listing.html.twig
#	volume/www/website/www/app/Resources/views/company/answer_show.html.twig
#	volume/www/website/www/web/css/styles.css.map
2018-08-01 11:13:37 +02:00
Thomas MONCHICOURT 4bb64ce3e2 Feat : Tableau candidatures #6945 @0h15 2018-08-01 11:09:40 +02:00
Thomas MONCHICOURT 5f1e89b7ea Fix : facebook connexion 2018-08-01 10:43:47 +02:00
Thomas MONCHICOURT c9d52ed240 Feat : Page candidature #6945 @1j 2018-08-01 10:41:09 +02:00
Thomas MONCHICOURT 0c808e2513 Feat : process annonce #6945 @2h 2018-08-01 09:36:46 +02:00
Thomas MONCHICOURT 7e22a202c2 feat : process réponse en vidéo style #6945 @2h30 2018-07-31 12:34:17 +02:00
Maxime Thévenot 8907b9232a Feat : update ad sort order on company_show 2018-07-31 09:58:30 +02:00
Thomas MONCHICOURT 1f588171ef Feat : réponse en vidéo #6945 @2h 2018-07-30 17:00:46 +02:00
Maxime Thévenot 681e5add11 Fix : update typo in nginx conf 2018-07-30 16:28:34 +02:00
Maxime Thévenot 16145c81c0 Conf : update preprod nginx conf 2018-07-30 16:25:30 +02:00
Maxime Thévenot 8a3f502129 Merge branch 'feat/recommandation' into develop 2018-07-30 15:58:54 +02:00
Maxime Thévenot aad4dcb110 Feat : add admin space for recommendation 2018-07-30 14:58:56 +02:00
Thomas MONCHICOURT 129dd22cbb Feat: réponses vidéo #6945 @1h 2018-07-30 12:23:34 +02:00
Thomas MONCHICOURT 2387b1c922 Feat: reponse #6945 @0h15 2018-07-27 17:33:28 +02:00
Thomas MONCHICOURT c43a7655e7 Feat : design page reponse #6945 @2h 2018-07-27 17:10:53 +02:00
Thomas MONCHICOURT 55e8eaf6cd Feat: Design page reponse #6945 @1h30 2018-07-27 12:25:40 +02:00
Thomas MONCHICOURT db9f554792 Merge branch 'feat/recommandation' into feat/reponse-video 2018-07-27 11:20:01 +02:00
Thomas MONCHICOURT 820cc048eb feat: reponse video #6945 @1h30 2018-07-26 16:12:08 +02:00
Maxime Thévenot 1c99889e89 Fix : add missing quote 2018-07-26 15:25:38 +02:00
Maxime Thévenot 552c9ecf9e Merge branch 'feat/upload-video-nologin' into develop
# Conflicts:
#	volume/www/website/www/web/css/styles.css.map
2018-07-26 15:17:54 +02:00
Maxime Thévenot 8bb8afbee7 Feat : add cv import page without answer 2018-07-26 15:17:30 +02:00
Thomas MONCHICOURT daee96533d feat: réponse en vidéo #6945 @3h 2018-07-26 12:24:11 +02:00
root c09f6f0b62 Conf : git erver side updated files 2018-07-26 10:05:47 +02:00
root 0f7f85c39e Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2018-07-26 09:31:57 +02:00
root e912a508d3 Conf : git erver side updated files 2018-07-26 09:31:46 +02:00
Maxime Thévenot 7494173cde Fix : set store in noindex nofollow 2018-07-26 09:25:06 +02:00
Maxime Thévenot ea3cdf0553 Fix : set store in noindex nofollow 2018-07-26 09:24:55 +02:00
Maxime Thévenot 0dcc5111f4 Fix: set noindex on spontaneous answer 2018-07-25 16:11:44 +02:00
Maxime Thévenot 4518a8a5e2 Fix: set noindex on spontaneous answer 2018-07-25 16:11:32 +02:00
Maxime Thévenot 4cdd9dc256 WIP : cv import pages 2018-07-25 14:17:40 +02:00
Maxime Thévenot 00f38cf4f7 Fix : change fosuser provider and fix admin connection 2018-07-24 15:52:16 +02:00
Maxime Thévenot 5ab04175b8 Feat : update tabs in company dashboard 2018-07-23 16:55:48 +02:00
Maxime Thévenot ce3eda07b4 Feat : add link to answers on ad title in list 2018-07-23 16:24:19 +02:00
Thomas MONCHICOURT c6a00a24c7 Merge branch 'develop'
# Conflicts:
#	volume/www/website/www/web/css/styles.css.map
2018-07-23 14:59:36 +02:00
Thomas MONCHICOURT 68ca21136a Fix : merge css 2018-07-23 14:55:29 +02:00
Maxime Thévenot 3b4ebf343a Feat : delete recommendation process 2018-07-23 14:50:35 +02:00
Thomas MONCHICOURT d14bea9c1a Fix : Territoires en homepage #6769 @0h10 2018-07-23 14:47:01 +02:00
Thomas MONCHICOURT b2a6e425aa Fix : modif css suite merge 2018-07-23 14:13:21 +02:00
Thomas MONCHICOURT fd48045549 Merge branch 'feat/new-style-title' into develop
# Conflicts:
#	volume/www/website/www/web/css/styles.css.map
2018-07-23 14:12:46 +02:00
Thomas MONCHICOURT 512d269f53 feat : Modification des titles en home #6769 @0h15 2018-07-23 11:07:07 +02:00
Thomas MONCHICOURT 3743166ac2 Feat: modification recherche #6770 @1h20 2018-07-23 10:45:31 +02:00
Thomas MONCHICOURT 72c72a5986 Feat : modification recherche #6770 @0h30 2018-07-20 17:08:08 +02:00
Thomas MONCHICOURT f3e2cb2cf1 Feat : Nouveau bandeau offre pourvu #6779 @0h30 2018-07-20 16:36:18 +02:00
Thomas MONCHICOURT c9b4a2b30f Feat : Mise en place d’un message prevention sur safari #6307 @0h15 2018-07-20 14:33:38 +02:00
Thomas MONCHICOURT acb87af087 Merge branch 'feat/recommandation' of https://git.e-declic.net/talents-tube/website into feat/recommandation 2018-07-20 14:12:52 +02:00
Thomas MONCHICOURT 8a14b86f03 Feat : modification listing front 2018-07-20 14:12:48 +02:00
Maxime Thévenot c05edac0fd Fix : typo in modale naming 2018-07-20 09:19:53 +02:00
Thomas MONCHICOURT 7a2be30f15 Feat : style css merge 2018-07-19 17:34:43 +02:00
Thomas MONCHICOURT e183729687 Merge branch 'feat/recommandation' of https://git.e-declic.net/talents-tube/website into feat/recommandation
# Conflicts:
#	volume/www/website/www/src/AppBundle/Controller/RecommendationController.php
#	volume/www/website/www/web/css/styles.css
2018-07-19 17:28:10 +02:00
Thomas MONCHICOURT ce498eb526 Feat : Mise en place des recommandation en front #6838 @2h 2018-07-19 17:26:34 +02:00
Maxime Thévenot 4d09bf2ddf Feat : add modal to see recommendation video 2018-07-19 17:24:51 +02:00
Maxime Thévenot d8ee626298 Feat : add toggle for recommendation visibility 2018-07-19 15:56:57 +02:00
Maxime Thévenot 50e9f45369 Feat : Add tabs to navigate between pages - recommendations 2018-07-19 15:19:03 +02:00
Maxime Thévenot c9663ab0d9 Feat : update css, add link to recommendations 2018-07-19 14:56:27 +02:00
Thomas MONCHICOURT 33fc07121b Fix : suite merge 2018-07-19 11:31:01 +02:00
Thomas MONCHICOURT a71e6692a6 Merge branch 'feat/recommandation' of https://git.e-declic.net/talents-tube/website into feat/recommandation
# Conflicts:
#	volume/www/website/www/src/AppBundle/Controller/RecommendationController.php
2018-07-19 11:29:26 +02:00
Thomas MONCHICOURT 2ef6707342 Feat : Recommendation front #6838 @2h30 2018-07-19 11:27:20 +02:00
Maxime Thévenot 728f16ee06 Feat : add recommendation lsit pages for talent 2018-07-19 11:25:53 +02:00
Maxime Thévenot 05d9bcced2 Feat : add nullable to relationType field 2018-07-19 11:04:29 +02:00
Thomas MONCHICOURT 7d2f3353eb Merge branch 'feat/recommandation' of https://git.e-declic.net/talents-tube/website into feat/recommandation 2018-07-18 17:32:24 +02:00
Thomas MONCHICOURT 5d4249984d Feat : Mise en place controller et check talent #6838 @2h 2018-07-18 17:32:21 +02:00
Maxime Thévenot d7114a0219 Feat : add recommandation form 2018-07-18 14:48:14 +02:00
Maxime Thévenot 672d2148c2 Feat : add recommendation entity and relations 2018-07-18 14:32:54 +02:00
Thomas MONCHICOURT c83832cdc1 Fix : liste annonce territoire 2018-07-10 10:15:14 +02:00
Thomas MONCHICOURT dc4fbb6d63 Fix : calcul nb annonce territoire 2018-07-10 10:12:43 +02:00
Thomas MONCHICOURT 58f9c35f7b Fix : style map 2018-07-10 10:10:08 +02:00
Thomas MONCHICOURT 9e79171e62 Merge branch 'develop'
# Conflicts:
#	volume/www/website/www/app/Resources/views/territory/territory_show.html.twig
#	volume/www/website/www/web/css/styles.css
#	volume/www/website/www/web/css/styles.css.map
#	volume/www/website/www/web/sass/modules/_buttons.scss
2018-07-10 10:09:57 +02:00
Thomas MONCHICOURT 8e7f6d1d08 Fix : wording 2018-07-10 09:56:04 +02:00
Thomas MONCHICOURT 271883412d Feat: modification style #6755 @0h20 2018-07-10 09:46:42 +02:00
Thomas MONCHICOURT 6c0b2e1fe5 Fix : erreur calcul liste territoire 2018-07-10 09:32:31 +02:00
Thomas MONCHICOURT 80c4dc5910 fix: dump 2018-07-09 17:37:51 +02:00
Thomas MONCHICOURT b008f12954 Feat : modification css btn territoire #6755 @0h30 2018-07-09 17:26:18 +02:00
Thomas MONCHICOURT d0f6533984 Feat : Liste des company page territoire #6755 @1h 2018-07-09 17:26:18 +02:00
Thomas MONCHICOURT c60b2ce9fe Feat : modification css btn territoire #6755 @0h30 2018-07-09 17:24:24 +02:00
Thomas MONCHICOURT 8bfc3a37c0 Feat : Liste des company page territoire #6755 @1h 2018-07-09 15:47:53 +02:00
Maxime Thévenot aa162dff57 Merge branch 'develop' 2018-06-28 15:39:44 +02:00
Maxime Thévenot 29cc1e2658 Fix : restore store database conf 2018-06-28 15:39:35 +02:00
Maxime Thévenot 47d9a08311 Merge branch 'develop' 2018-06-27 15:29:04 +02:00
Maxime Thévenot 2072f1f231 Conf: update makefile and gitignore 2018-06-27 15:28:59 +02:00
Maxime Thévenot a55828306a Merge branch 'develop' 2018-06-27 14:56:12 +02:00
Maxime Thévenot 2757340f8e Feat : update footer 2018-06-27 11:13:24 +02:00
Maxime Thévenot 6ef1ab86c1 Fix: bad typo in wording 2018-06-27 10:41:02 +02:00
Maxime Thévenot 76fa1bdb59 Feat : change phone number and add RB image to resources 2018-06-27 10:40:40 +02:00
Maxime Thévenot 96a9a58af6 Fix: bad typo in wording 2018-06-08 17:04:04 +02:00
Maxime Thévenot 1e199008b3 Merge branch 'master' into develop
# Conflicts:
#	volume/www/website/www/app/Resources/FOSUserBundle/views/Registration/confirmed.html.twig
2018-06-08 12:15:11 +02:00
Maxime Thévenot 7464000fea Fix : add center to a button 2018-06-08 12:07:34 +02:00
Maxime Thévenot 7ae1389c7b Fix : update redirect route 2018-06-08 12:00:40 +02:00
Maxime Thévenot 8b2e6612be Fix : add cookie to response 2018-06-08 11:47:31 +02:00
Maxime Thévenot 457d6c4e5a Fix : update link to redirect after reg 2018-06-08 11:23:05 +02:00
Maxime Thévenot 0b59a5bbaa Feat : add redirect button after register 2018-06-08 10:29:06 +02:00
Maxime Thévenot a0aebfa52c Fix : remove response send after cookie setting 2018-06-08 10:06:21 +02:00
Maxime Thévenot 38d84a0257 Fix : bad cookie setting 2018-06-08 10:04:10 +02:00
Maxime Thévenot d3d8339a6f Fix : set cookie for redirect after registration 2018-06-08 10:01:11 +02:00
Maxime Thévenot 8ef169197d Fix : redirection when creating account after spontaneous 2018-06-05 16:38:46 +02:00
Thomas MONCHICOURT 1cf0e33b07 Fix: recherceh url 2018-06-05 15:26:37 +02:00
Thomas MONCHICOURT fbfadf425f Fix : optimisation mobile css 2018-06-05 15:26:37 +02:00
Thomas MONCHICOURT 2d097a0424 Fix : style detail annonce 2018-06-05 15:26:36 +02:00
Thomas MONCHICOURT 27963ab492 Fix : du fix … 2018-06-05 15:26:36 +02:00
Maxime Thévenot c801d92143 Fix : redirection when creating account after spontaneous 2018-06-05 14:32:04 +02:00
Thomas MONCHICOURT 737af1052b Fix: recherceh url 2018-05-28 12:26:30 +02:00
Thomas MONCHICOURT 85b1e2406d Fix : optimisation mobile css 2018-05-25 16:49:33 +02:00
Thomas MONCHICOURT 5cb2f6d2cb Fix : style detail annonce 2018-05-25 15:23:12 +02:00
Thomas MONCHICOURT b070ae8e28 Fix : du fix … 2018-05-25 15:19:00 +02:00
Thomas MONCHICOURT 5b9c7e57fe Fix : check si variable existe 2018-05-25 15:15:32 +02:00
Thomas MONCHICOURT 8f8e2c3b2f Merge branch 'feat/offres_pourvues' into develop
# Conflicts:
#	volume/www/website/www/src/AppBundle/Utils/Services/AdSearcher.php
2018-05-25 15:15:05 +02:00
Thomas MONCHICOURT d0e7ee8b74 Fix : libelle 2018-05-25 15:06:40 +02:00
Thomas MONCHICOURT c0445c9ad3 Fix : orthographe 2018-05-25 15:03:44 +02:00
Thomas MONCHICOURT 65dfac1af5 Feat : mise en place de la page de detail ad et company #5964 @0h20 2018-05-25 14:50:05 +02:00
Thomas MONCHICOURT 50831adf20 Feat : Page de detail annonce #5964 @0h20 2018-05-25 12:33:12 +02:00
Thomas MONCHICOURT 6f7d329cc6 Feat : Mise en place d’un champ type privé pour ad et company #6472 @1h10 2018-05-25 11:33:39 +02:00
Thomas MONCHICOURT 5f2e5fddbf Feat: filtre offres pourvues #5964 2018-05-25 10:27:59 +02:00
Thomas MONCHICOURT e905cb063c feat : Modification de la recherche #5964 @0h20 2018-05-24 17:01:53 +02:00
Thomas MONCHICOURT 44ae8a01fb Merge branch 'master' into develop 2018-05-24 16:36:55 +02:00
Thomas MONCHICOURT 703b8891e6 Feat : Nouvelles fleches + recherche non fixe pour mobile #5966 @2h 2018-05-24 16:21:52 +02:00
Thomas MONCHICOURT 724e175a6c Feat : Ajout liens territoires dans le footer #5963 @0h10 2018-05-23 17:22:31 +02:00
Thomas MONCHICOURT e9a7da75bc Feat : remise en ligne annonce rocher 2018-05-18 12:26:34 +02:00
Thomas MONCHICOURT 5612f87999 Fix : probleme connexion user admin 2018-05-02 15:09:54 +02:00
Thomas MONCHICOURT b63983b61e Feat : modification profil talent #6313 @0h15 2018-05-02 14:19:00 +02:00
Thomas MONCHICOURT 43858b06ff Feat : modification Css 2018-04-30 15:21:57 +02:00
Thomas MONCHICOURT f012f91ca4 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2018-04-30 15:11:14 +02:00
Thomas MONCHICOURT 2ba454f2ab Feat : style responsive 2018-04-30 15:11:05 +02:00
Thomas MONCHICOURT 2426dc5abc Feat : correction tuto responsive @1h 2018-04-30 15:10:26 +02:00
Maxime Thévenot 703ec9a1bb Fix : bug on talent deleting 2018-04-26 17:18:42 +02:00
Maxime Thévenot 4a72e4dfe6 Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop
# Conflicts:
#	volume/www/website/www/src/AppBundle/Entity/Company.php
2018-04-26 16:42:01 +02:00
Maxime Thévenot 607f7706ca Feat : add capability to delete company from secret admin 2018-04-26 16:40:49 +02:00
Thomas MONCHICOURT b0b1179bdc Feat : Modification listing company #6269 @1h30 2018-04-24 14:16:19 +02:00
Thomas MONCHICOURT 0e2494797e Fix : Bloc vidéo après mot clés #6266 @0h25 2018-04-23 16:09:00 +02:00
Thomas MONCHICOURT 69a7595966 Fix : page detail territoire 2018-04-23 16:04:33 +02:00
Thomas MONCHICOURT e404b4d876 Merge branch 'develop' 2018-04-23 16:00:15 +02:00
Thomas MONCHICOURT fa8b21b93c Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop 2018-04-23 15:59:43 +02:00
Thomas MONCHICOURT 8e8312c0f9 Feat : modification video territoire #6266 @0H15 2018-04-23 15:59:40 +02:00
Maxime Thévenot 0297191e07 Fix : update teritory sorting order 2018-04-20 15:23:45 +02:00
Maxime Thévenot e64ce55b66 Merge branch 'develop' 2018-04-20 15:16:04 +02:00
Thomas MONCHICOURT eda0562edc Feat : mise en ligne vidéo albéa + changement home 2018-04-20 15:11:53 +02:00
Maxime Thévenot 01f5823885 Feat : permit admin to refresh vimeo image + sorting list 2018-04-20 15:10:44 +02:00
Thomas MONCHICOURT 9ed2745e8d Feat : mise en ligne vidéo albéa + changement home 2018-04-17 09:33:37 +02:00
Thomas MONCHICOURT 82c4911770 Feat : Modification du code et mise en git #6185 @0h10 2018-04-16 09:34:10 +02:00
Thomas MONCHICOURT 8df9b7af43 Feat : Ajout champ description admin pour territoire #6181 @1h 2018-04-13 10:50:33 +02:00
Thomas MONCHICOURT 71259c40c6 Feat : Ajout d’un col list user + action resend confirm mail #6151 @0h20 2018-04-09 14:49:14 +02:00
Thomas MONCHICOURT 2dd559fa64 Feat : intervention albéa @0h15 2018-03-30 17:04:26 +02:00
Thomas MONCHICOURT 90ae12995f Fix : admin set presentation on null 2018-03-27 15:16:11 +02:00
Thomas MONCHICOURT 7aa4a92cb6 Feat : Ajout listing user en admin #6108 @2h 2018-03-27 14:29:52 +02:00
Thomas MONCHICOURT 6a9b48d629 Fix : modification linkedin 2018-03-15 14:27:13 +01:00
Thomas MONCHICOURT 032d10bb50 Fix: connexion FB 2018-03-15 12:34:07 +01:00
Thomas MONCHICOURT 7731dd2c23 Fix : erreur js vimeo 2018-03-06 09:56:05 +01:00
Thomas MONCHICOURT 8c6e8f14a4 Fix: erreur photo profil talent @0h15 2018-03-05 11:31:45 +01:00
Thomas MONCHICOURT f1c795e8cd Fix : js date picker 2018-02-15 11:30:11 +01:00
Thomas MONCHICOURT 5dd437d939 Feat : increase lifetime sessions 2018-02-15 10:46:05 +01:00
Thomas MONCHICOURT 59f6854379 Fix : popup option connect FB 2018-02-15 10:24:01 +01:00
Thomas MONCHICOURT c2450d3929 Fix : modification app facebook 2018-02-15 10:14:47 +01:00
Thomas MONCHICOURT 2f626dbad5 Fix : robots txt 2018-02-13 15:20:32 +01:00
Thomas MONCHICOURT 8bccabbcf6 Fix : suppression dissalow 2018-02-13 15:04:53 +01:00
Maxime Thévenot 766335bb19 Merge branch 'master' of https://git.e-declic.net/talents-tube/website 2018-02-13 14:32:58 +01:00
Maxime Thévenot 708e1f1c87 Conf : Update .gitignore 2018-02-13 14:32:53 +01:00
Thomas MONCHICOURT 1d0e0e4c48 Merge branch 'master' into develop 2018-02-09 15:34:05 +01:00
Thomas MONCHICOURT a790f99adb Fix : re error 404 2018-02-09 15:32:59 +01:00
Thomas MONCHICOURT e98a2488eb Fix : error 404 error #5890 @1h30 2018-02-09 15:32:43 +01:00
Maxime Thévenot 8b7a79ef8d Conf : Update robot.txt 2018-02-08 17:12:11 +01:00
Thomas MONCHICOURT 645cf1f05a Fix : change password 2018-02-08 17:12:00 +01:00
Thomas MONCHICOURT 974629794d Merge branch 'develop' 2018-02-07 09:17:43 +01:00
Thomas MONCHICOURT f23e906168 Feat: suppression voeux 2018 2018-02-07 09:17:19 +01:00
Thomas MONCHICOURT 5a47ac168e Fix : liste témoignages 2018-02-02 15:06:14 +01:00
Thomas MONCHICOURT a35647ca1d Merge branch 'develop' 2018-02-02 14:52:38 +01:00
Thomas MONCHICOURT 231a692369 Feat : Ajout des temoignage dans d’autre page #5662 @0h20 2018-02-02 14:52:28 +01:00
Thomas MONCHICOURT 1ad2d8bf1a Merge branch 'develop' 2018-02-02 14:28:47 +01:00
Thomas MONCHICOURT 2047322161 Feat : youtube #5845 @0h15 2018-02-02 14:28:29 +01:00
Thomas MONCHICOURT f90c907942 Feat : add a hover stop on carousel 2018-02-02 14:17:33 +01:00
Thomas MONCHICOURT a2d0a9539f Feat : modif temoignages #5662 @0h20 2018-02-02 12:02:49 +01:00
Thomas MONCHICOURT d5f448483c Feat : Modification #5662 @0h30 2018-01-25 15:15:54 +01:00
Thomas MONCHICOURT 8f12cddd86 Feat : template temoignages #5662 @1h15 2018-01-25 12:12:19 +01:00
Thomas MONCHICOURT 0f195907c5 Merge branch 'develop' 2018-01-24 12:04:38 +01:00
Thomas MONCHICOURT 8dabe7ba82 Fix : provider security 2018-01-24 12:04:20 +01:00
Thomas MONCHICOURT 0bfed4b932 Fix : probleme css dot nav tuto 2018-01-22 15:36:16 +01:00
Thomas MONCHICOURT bf875db942 Fix : dropzone js error 2018-01-22 15:09:57 +01:00
Thomas MONCHICOURT 5c47a00d0e Fix : Start to first panel tuto when restart 2018-01-22 15:09:49 +01:00
Thomas MONCHICOURT 0f8fe7732e Fix : amelioration graphique tuto 2018-01-22 15:09:36 +01:00
Thomas MONCHICOURT bed4cbc7b1 Fix : Start to first panel tuto when restart 2018-01-22 14:27:48 +01:00
Thomas MONCHICOURT b09ca38415 Fix : dropzone js error 2018-01-22 14:07:12 +01:00
Thomas MONCHICOURT c0f09f715c Fix : delevery address 2018-01-22 12:10:57 +01:00
Thomas MONCHICOURT 77d695f67a Fix : conf preprod 2018-01-22 09:30:44 +01:00
Thomas MONCHICOURT 4cb07a74b6 Fix : conf preprod 2018-01-22 09:29:58 +01:00
Thomas MONCHICOURT 43997a3493 Feat : Merge develop => master à la mano 2018-01-19 15:53:06 +01:00
Thomas MONCHICOURT e6316504f1 Feat : Voeux 2018 #5816 @2h 2018-01-18 11:21:05 +01:00
Thomas MONCHICOURT d8ac0993d6 Fix : port docker dev 2018-01-17 14:59:17 +01:00
Thomas MONCHICOURT 67575e53e4 Fix : stats 2018-01-15 11:27:29 +01:00
Thomas MONCHICOURT 182a1b5078 Fix : nginx conf prod 2018-01-11 11:00:33 +01:00
Thomas MONCHICOURT 4b9cd98266 Fix : correction 2018-01-11 10:50:58 +01:00
Thomas MONCHICOURT cf4e5020f5 Fix : conf static 2017-12-27 11:40:41 +01:00
sstolz 6a0b64c184 merge from develop
commit 6a05e05bf97e4e8f5bd30b81c192f0854f7746a8
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 12:22:53 2017 +0100

    update nginx docker listening port

commit 4f9b143d9d7de5fd303bd178014e54765c473fe1
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:25 2017 +0100

    gitignore env files

commit 7a03258d039f1d778b651485d57418173cf02534
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:16 2017 +0100

    remove unwanted env files

commit 9608afbd6068c114de14d08cb9505d0b72f2ed98
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:03 2017 +0100

    update production store database credential

commit 1ca654b460b85d6a198df72ad2863bc8e943235a
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 09:44:18 2017 +0100

    merge feature refactor docker

    commit 644eec0e84
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:19 2017 +0100

        gitignore backup folder

    commit 851ca86cb7
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:11 2017 +0100

        add mongo backup/restore

    commit a01e857b72
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:35:33 2017 +0100

        move store to right location :)

    commit 1363060c07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:42 2017 +0100

        symfony conf update

    commit c781458763
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:22 2017 +0100

        nginx conf update

    commit aa60d39522
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:07 2017 +0100

        docker conf refactoring

    commit 3ddc3bbd00
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:33 2017 +0100

        remove mlocate package on containers

    commit f2a0b27418
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:05 2017 +0100

        add volume to gitignore

    commit b638c63812
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 10:08:55 2017 +0100

        first docker struct

    commit 71c6f90685
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:51:30 2017 +0100

        rename nginx config file

    commit d667905f07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:38:27 2017 +0100

        add store to repo

    commit 3ef1d29081
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:27 2017 +0100

        move website gitignore patterns to new location

    commit 03604e29ff
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:03 2017 +0100

        move website files to new folder

    commit 722db3bb55
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:19 2017 +0100

        gitignore

    commit d5eb5b2f86
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:06 2017 +0100

        remove gitsubmodule config file

    commit ff5ca40f3f
    Author: Sébastien STOLZ <sstolz@zaxxon.local>
    Date:   Wed Dec 20 09:21:41 2017 +0100

        remove store submodule

commit deec5da92f9b430e60b97b5145f44dce33c6a508
Merge: d32c00c2 5c805db6
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Wed Dec 20 14:29:31 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit d32c00c2a3e8c9d63d9859c7cd9340e190df3fde
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 5c805db64e2f68f5b3e774cd64401122fdb7cfce
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Wed Dec 20 10:08:27 2017 +0100

    Fix: dashboard territory

commit 65b4ec05b9
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:56:19 2017 +0100

    Fix : date

commit 188e40fda4
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:53:30 2017 +0100

    Fix : probleme heure pour jour complet  #5737 @0h15

commit 0b1af02535
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:33:30 2017 +0100

    Fix : bug stats array

commit d277462d40
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 7f7678737c
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:08:11 2017 +0100

    Feat : ajout du chevron #5737 @0h15

commit 46aef95e61
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 14:33:07 2017 +0100

    Fix : date js

commit 1b8dbdf0b6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:41:36 2017 +0100

    Fix : no stats

commit 4409b75edf
Merge: 5652cbf9 b630d2fb
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:43 2017 +0100

    Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop

commit 5652cbf9d1
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:31 2017 +0100

    Fix : calcul #5737 @0h30

commit b630d2fb4e
Merge: bac003c3 58ac0b9e
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:48 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit bac003c30d
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:44 2017 +0100

    Fix : Display full lastname

    #5739

commit 58ac0b9e91
Merge: 1e9df9ce 73eb2761
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:41:12 2017 +0100

    Merge branch 'feat/stats_ajax' into develop

commit 73eb2761c6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:38:32 2017 +0100

    Feat : Modification des stats en ajax #5737  @4h30

commit 1e9df9ce55
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 09:31:22 2017 +0100

    Fix : missing typo in ad meta description

    #5746
2017-12-21 12:24:19 +01:00
sstolz e2b7c43c23 delete unwanted env files 2017-12-21 11:57:49 +01:00
sstolz d7731b78be merge from develop (minor docker fix)
commit 4f9b143d9d7de5fd303bd178014e54765c473fe1
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:25 2017 +0100

    gitignore env files

commit 7a03258d039f1d778b651485d57418173cf02534
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:16 2017 +0100

    remove unwanted env files

commit 9608afbd6068c114de14d08cb9505d0b72f2ed98
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 11:54:03 2017 +0100

    update production store database credential

commit 1ca654b460b85d6a198df72ad2863bc8e943235a
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 09:44:18 2017 +0100

    merge feature refactor docker

    commit 644eec0e84
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:19 2017 +0100

        gitignore backup folder

    commit 851ca86cb7
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:11 2017 +0100

        add mongo backup/restore

    commit a01e857b72
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:35:33 2017 +0100

        move store to right location :)

    commit 1363060c07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:42 2017 +0100

        symfony conf update

    commit c781458763
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:22 2017 +0100

        nginx conf update

    commit aa60d39522
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:07 2017 +0100

        docker conf refactoring

    commit 3ddc3bbd00
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:33 2017 +0100

        remove mlocate package on containers

    commit f2a0b27418
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:05 2017 +0100

        add volume to gitignore

    commit b638c63812
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 10:08:55 2017 +0100

        first docker struct

    commit 71c6f90685
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:51:30 2017 +0100

        rename nginx config file

    commit d667905f07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:38:27 2017 +0100

        add store to repo

    commit 3ef1d29081
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:27 2017 +0100

        move website gitignore patterns to new location

    commit 03604e29ff
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:03 2017 +0100

        move website files to new folder

    commit 722db3bb55
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:19 2017 +0100

        gitignore

    commit d5eb5b2f86
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:06 2017 +0100

        remove gitsubmodule config file

    commit ff5ca40f3f
    Author: Sébastien STOLZ <sstolz@zaxxon.local>
    Date:   Wed Dec 20 09:21:41 2017 +0100

        remove store submodule

commit deec5da92f9b430e60b97b5145f44dce33c6a508
Merge: d32c00c2 5c805db6
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Wed Dec 20 14:29:31 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit d32c00c2a3e8c9d63d9859c7cd9340e190df3fde
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 5c805db64e2f68f5b3e774cd64401122fdb7cfce
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Wed Dec 20 10:08:27 2017 +0100

    Fix: dashboard territory

commit 65b4ec05b9
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:56:19 2017 +0100

    Fix : date

commit 188e40fda4
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:53:30 2017 +0100

    Fix : probleme heure pour jour complet  #5737 @0h15

commit 0b1af02535
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:33:30 2017 +0100

    Fix : bug stats array

commit d277462d40
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 7f7678737c
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:08:11 2017 +0100

    Feat : ajout du chevron #5737 @0h15

commit 46aef95e61
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 14:33:07 2017 +0100

    Fix : date js

commit 1b8dbdf0b6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:41:36 2017 +0100

    Fix : no stats

commit 4409b75edf
Merge: 5652cbf9 b630d2fb
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:43 2017 +0100

    Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop

commit 5652cbf9d1
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:31 2017 +0100

    Fix : calcul #5737 @0h30

commit b630d2fb4e
Merge: bac003c3 58ac0b9e
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:48 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit bac003c30d
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:44 2017 +0100

    Fix : Display full lastname

    #5739

commit 58ac0b9e91
Merge: 1e9df9ce 73eb2761
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:41:12 2017 +0100

    Merge branch 'feat/stats_ajax' into develop

commit 73eb2761c6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:38:32 2017 +0100

    Feat : Modification des stats en ajax #5737  @4h30

commit 1e9df9ce55
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 09:31:22 2017 +0100

    Fix : missing typo in ad meta description

    #5746
2017-12-21 11:56:07 +01:00
sstolz aa4b8de814 merge from delevlop (docker refactor)
commit 1ca654b460b85d6a198df72ad2863bc8e943235a
Author: Sébastien STOLZ <sebastien@e-declic.com>
Date:   Thu Dec 21 09:44:18 2017 +0100

    merge feature refactor docker

    commit 644eec0e84
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:19 2017 +0100

        gitignore backup folder

    commit 851ca86cb7
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 17:16:11 2017 +0100

        add mongo backup/restore

    commit a01e857b72
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:35:33 2017 +0100

        move store to right location :)

    commit 1363060c07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:42 2017 +0100

        symfony conf update

    commit c781458763
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:22 2017 +0100

        nginx conf update

    commit aa60d39522
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:06:07 2017 +0100

        docker conf refactoring

    commit 3ddc3bbd00
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:33 2017 +0100

        remove mlocate package on containers

    commit f2a0b27418
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 16:05:05 2017 +0100

        add volume to gitignore

    commit b638c63812
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 10:08:55 2017 +0100

        first docker struct

    commit 71c6f90685
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:51:30 2017 +0100

        rename nginx config file

    commit d667905f07
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:38:27 2017 +0100

        add store to repo

    commit 3ef1d29081
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:27 2017 +0100

        move website gitignore patterns to new location

    commit 03604e29ff
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:28:03 2017 +0100

        move website files to new folder

    commit 722db3bb55
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:19 2017 +0100

        gitignore

    commit d5eb5b2f86
    Author: Sébastien STOLZ <sebastien@e-declic.com>
    Date:   Wed Dec 20 09:27:06 2017 +0100

        remove gitsubmodule config file

    commit ff5ca40f3f
    Author: Sébastien STOLZ <sstolz@zaxxon.local>
    Date:   Wed Dec 20 09:21:41 2017 +0100

        remove store submodule

commit deec5da92f9b430e60b97b5145f44dce33c6a508
Merge: d32c00c2 5c805db6
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Wed Dec 20 14:29:31 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit d32c00c2a3e8c9d63d9859c7cd9340e190df3fde
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 5c805db64e2f68f5b3e774cd64401122fdb7cfce
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Wed Dec 20 10:08:27 2017 +0100

    Fix: dashboard territory

commit 65b4ec05b9
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:56:19 2017 +0100

    Fix : date

commit 188e40fda4
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:53:30 2017 +0100

    Fix : probleme heure pour jour complet  #5737 @0h15

commit 0b1af02535
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 16:33:30 2017 +0100

    Fix : bug stats array

commit d277462d40
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:57:49 2017 +0100

    Feat : modif call stat

commit 7f7678737c
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 15:08:11 2017 +0100

    Feat : ajout du chevron #5737 @0h15

commit 46aef95e61
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 14:33:07 2017 +0100

    Fix : date js

commit 1b8dbdf0b6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:41:36 2017 +0100

    Fix : no stats

commit 4409b75edf
Merge: 5652cbf9 b630d2fb
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:43 2017 +0100

    Merge branch 'develop' of https://git.e-declic.net/talents-tube/website into develop

commit 5652cbf9d1
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 11:23:31 2017 +0100

    Fix : calcul #5737 @0h30

commit b630d2fb4e
Merge: bac003c3 58ac0b9e
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:48 2017 +0100

    Merge remote-tracking branch 'origin/develop' into develop

commit bac003c30d
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 11:11:44 2017 +0100

    Fix : Display full lastname

    #5739

commit 58ac0b9e91
Merge: 1e9df9ce 73eb2761
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:41:12 2017 +0100

    Merge branch 'feat/stats_ajax' into develop

commit 73eb2761c6
Author: Thomas MONCHICOURT <thomas@e-declic.com>
Date:   Tue Dec 19 10:38:32 2017 +0100

    Feat : Modification des stats en ajax #5737  @4h30

commit 1e9df9ce55
Author: Maxime Thévenot <mthevenot.perso@gmail.com>
Date:   Tue Dec 19 09:31:22 2017 +0100

    Fix : missing typo in ad meta description

    #5746
2017-12-21 11:47:55 +01:00
Maxime Thévenot 4c9021033c Merge branch 'develop' 2017-12-18 16:44:32 +01:00
Maxime Thévenot 451a95c646 Feat : add "AddThis" code
#5633
2017-12-18 16:44:07 +01:00
Maxime Thévenot 7dd0609353 Merge branch 'develop' 2017-12-15 10:10:56 +01:00
Maxime Thévenot 43b38d9111 Fix : update territory show css
#5476
2017-12-15 10:09:37 +01:00
Maxime Thévenot 83ad759bea Feat : update html balise on some pages
#5476
2017-12-15 10:01:14 +01:00
Maxime Thévenot e6b0f71c00 Feat : refactor sass files + update titles and meta
#5746
2017-12-15 09:42:22 +01:00
Maxime Thévenot 0ee59a3fcf Merge remote-tracking branch 'origin/master' 2017-12-13 12:09:41 +01:00
Maxime Thévenot ba32941fd1 Merge branch 'develop' 2017-12-13 12:09:35 +01:00
Maxime Thévenot d3494bdd9a Fix : Fix bad title in ad template 2017-12-13 12:06:52 +01:00
Maxime Thévenot ba5cf17def Fix : add escape to add title render 2017-12-13 11:32:36 +01:00
Maxime Thévenot 352fbae7b2 Fix : Update title to remove html fail quote 2017-12-13 11:28:39 +01:00
Maxime Thévenot 12dbc04e03 Fix : Update title to remove spaces and fail quote 2017-12-13 11:14:42 +01:00
Thomas MONCHICOURT 68ec4421cf Fix : redirect page tarif #5727 @0h10 2017-12-04 17:27:56 +01:00
Maxime Thévenot 4b3a573d26 Merge branch 'develop' 2017-12-01 15:30:09 +01:00
Maxime Thévenot c04ae7ab2d Fix : update territory title
#5714
2017-12-01 15:26:54 +01:00
Maxime Thévenot a1d0ac0ba8 Merge branch 'master' into develop 2017-12-01 15:12:32 +01:00
Maxime Thévenot 62c8d6df5f Merge remote-tracking branch 'origin/master' 2017-12-01 15:12:24 +01:00
Maxime Thévenot 65c60b8ff4 Feat : Update meta title and description for ad
#5715
2017-12-01 15:12:19 +01:00
Maxime Thévenot f159d43152 Feat : Update territory title and description (meta)
#5714
2017-12-01 15:11:53 +01:00
Thomas MONCHICOURT c67714a9e9 Fix : message no ad 2017-11-29 09:19:22 +01:00
24190 changed files with 1263148 additions and 324435 deletions
+8 -40
View File
@@ -1,44 +1,12 @@
# Email spool folder
www/app/spool/*
www/web/media/*
# Cache, session files and logs (Symfony3)
www/var/cache/*
www/var/logs/*
www/var/sessions/*
!www/var/cache/.gitkeep
!www/var/logs/.gitkeep
!www/var/sessions/.gitkeep
# Managed by Composer
www/app/bootstrap.php.cache
www/var/bootstrap.php.cache
www/bin/*
!www/bin/console
!www/bin/symfony_requirements
# Assets and user uploads
www/web/bundles/
www/web/uploads/
www/web/media/
www/web/.sass-cache/
# PHPUnit
www/app/phpunit.xml
www/phpunit.xml
# Build data
www/build/
# Composer PHAR
www/composer.phar
# local parameters
www/app/config/parameters.yml
www/app/DoctrineMigrations/*
log/*
conf/nginx.conf
.DS_Store
.idea/*
*~
/.vscode
/volume/*
!/volume/www
/volume/www/**/conf/nginx.conf
/backup
/conf/env/*.env
volume/www/website/.idea
/volume/www/website/store/themes/talentstube-20170413/cache/*
/volume/www/website/store/img/tmp/*
-3
View File
@@ -1,3 +0,0 @@
[submodule "store"]
path = store
url = http://code.e-declic.net:3000/talents-tube/store.git
+85 -20
View File
@@ -1,4 +1,12 @@
USAGE := Usage: make ENV={prod|preprod|dev} {cc|entities|db-diff|db-migrate|db-deploy}
CLIENT=tt-website
DOCKERCOMPOSE := $(shell command -v docker-compose 2> /dev/null)
USAGE := Usage: make ENV={prod|preprod|dev} {docker-build|docker-start|docker-stop|docker-restart}
ifndef DOCKERCOMPOSE
$(error docker-compose is not available)
endif
ifndef ENV
$(info Environment variable is not set)
@@ -6,36 +14,93 @@ $(info $(USAGE))
$(error Exiting)
endif
ifeq ($(ENV),prod)
DEXEC=ENV=$(ENV) docker exec -i tt.website su www-data --shell=/bin/bash -c
DIR=/home/www/www.talentstube.com
endif
ifeq ($(ENV),preprod)
DEXEC=ENV=$(ENV) docker exec -i tt.website-preprod su www-data --shell=/bin/bash -c
DIR=/home/www/pp.talentstube.com
endif
ifeq ($(ENV),dev)
DEXEC=ENV=$(ENV) docker exec -i tt.website su www-data --shell=/bin/bash -c
DIR=/home/www/talentstube.dev
endif
DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml")
DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml")
DC=ENV=$(ENV) CLIENT=$(CLIENT) $(DOCKERCOMPOSE) --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
default:
$(info $(USAGE))
$(error Exiting)
docker-build:
$(DC) build
$(DC) up -d
docker-start:
$(DC) start
docker-stop:
$(DC) stop
docker-restart: docker-stop docker-start
docker-rm: docker-stop
$(DC) rm
config:
@echo "Configuring docker for environment '$(ENV)'"
$(eval SERVER_NAME := $(shell cat volume/www/website/conf/nginx-$(ENV).conf | grep server_name | awk '{print $$NF}' | sed 's/;$$//'))
@echo " --> Generating nginx symlink for '$(SERVER_NAME)'"
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx-$(ENV).conf /home/www/website/conf/nginx.conf
@docker exec $(CLIENT).nginx.$(ENV) ln -s -f /home/www/website/conf/nginx.conf /etc/nginx/sites-enabled/$(SERVER_NAME).conf
@echo " --> Generating symfony symlink"
@docker exec $(CLIENT).php.$(ENV) ln -s -f /home/www/website/www/app/config/parameters-$(ENV).yml /home/www/website/www/app/config/parameters.yml
@echo " --> Generating store symlink"
@docker exec $(CLIENT).php.$(ENV) ln -s -f /home/www/website/store/config/settings-$(ENV).inc.php /home/www/website/store/config/settings.inc.php
@echo " --> Reloading nginx"
@docker exec $(CLIENT).nginx.$(ENV) nginx -t && docker exec $(CLIENT).nginx.$(ENV) nginx -s reload
@echo " --> Generating mysql auth file"
@cat conf/env/store-mysql.env \
| python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" \
| docker exec -i $(CLIENT).store-mysql.$(ENV) sh -c 'cat > /root/.my.cnf'
db-backup-all: db-backup-website db-backup-store
db-backup-website:
@echo "Backing up website database"
@mkdir -p backup/
@docker exec -t $(CLIENT).postgres.$(ENV) pg_dumpall --database database -c -U postgres > backup/postgres_`date +%d-%m-%Y"_"%H_%M_%S`.sql
@docker exec -t $(CLIENT).mongo.$(ENV) mongodump --db=tt_history --gzip --out=/mongo
@docker cp $(CLIENT).mongo.$(ENV):/dump backup/mongo
db-backup-store:
@echo "Backing up store database"
@mkdir -p backup/
@docker exec --tty --interactive $(CLIENT).store-mysql.$(ENV) mysqldump -uroot database > backup/store-mysql_`date +%d-%m-%Y"_"%H_%M_%S`.sql
db-restore-all: db-restore-website db-restore-store
db-restore-website:
@echo "Restoring file to database (backup/store-mysql.sql)"
@cat backup/postgres.sql | docker exec -i $(CLIENT).postgres.$(ENV) psql --dbname database -U postgres
@docker cp backup/mongo $(CLIENT).mongo.$(ENV):/
@docker exec -t $(CLIENT).mongo.$(ENV) mongorestore --drop --gzip --db=tt_history /mongo/tt_history
db-restore-store:
@echo "Restoring file to database (backup/store-mysql.sql)"
@docker exec -i $(CLIENT).store-mysql.$(ENV) mysql -uroot database < backup/store-mysql.sql
cc:
$(DEXEC) "$(DIR)/www/bin/console cache:clear --env=prod"
$(DEXEC) "$(DIR)/www/bin/console cache:clear --env=dev"
@echo "Clearing symfony cache"
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console cache:clear --env=prod"
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console cache:clear --env=dev"
entities:
$(DEXEC) "$(DIR)/www/bin/console doctrine:generate:entities AppBundle"
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:generate:entities AppBundle"
db-diff:
$(DEXEC) "$(DIR)/www/bin/console doctrine:migrations:diff"
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:migrations:diff"
db-migrate:
$(DEXEC) "$(DIR)/www/bin/console doctrine:migrations:migrate"
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:migrations:migrate"
db-deploy:
$(DEXEC) "$(DIR)/www/bin/console doctrine:migrations:diff" && $(DEXEC) "$(DIR)/www/bin/console doctrine:migrations:migrate"
db-deploy: db-diff db-migrate
es-populate:
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console fos:elastica:populate"
+9
View File
@@ -0,0 +1,9 @@
# https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-configuration-methods
FROM docker.elastic.co/elasticsearch/elasticsearch:5.3.0
# Allow external tools to make queries
RUN echo 'xpack.security.enabled: false' >> /usr/share/elasticsearch/config/elasticsearch.yml \
&& echo 'http.cors.enabled: true' >> /usr/share/elasticsearch/config/elasticsearch.yml \
&& echo 'http.cors.allow-origin: "/.*/"' >> /usr/share/elasticsearch/config/elasticsearch.yml \
&& echo 'http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization' >> /usr/share/elasticsearch/config/elasticsearch.yml \
&& echo 'http.cors.allow-credentials: true' >> /usr/share/elasticsearch/config/elasticsearch.yml \
+12
View File
@@ -0,0 +1,12 @@
FROM mysql:5.7
ENV TERM=xterm
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y lsof nano less
COPY mysql.cnf /etc/mysql/conf.d/
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+2
View File
@@ -0,0 +1,2 @@
[client]
password=$PASSWORD
+4
View File
@@ -0,0 +1,4 @@
[mysqld]
innodb_file_per_table = true
+17
View File
@@ -0,0 +1,17 @@
FROM nginx
ENV TERM=xterm
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y lsof nano less
RUN rm /etc/nginx/conf.d/default.conf \
&& sed -i 's|include /etc/nginx/conf.d/\*.conf;|include /etc/nginx/conf.d/\*.conf;\ninclude /etc/nginx/sites-enabled/\*.conf;\n|' /etc/nginx/nginx.conf
COPY log_format.conf /etc/nginx/conf.d/
COPY tt-dev.crt /etc/nginx/ssl/server.crt
COPY tt-dev.key /etc/nginx/ssl/server.key
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+2
View File
@@ -0,0 +1,2 @@
log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
+22
View File
@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDrjCCApYCCQD0c9mokUtilTANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMC
RlIxDDAKBgNVBAgMA0JaSDEOMAwGA1UEBwwFQXVyYXkxGTAXBgNVBAoMEHRhbGVu
dHN0dWJlLnRlc3QxETAPBgNVBAsMCGUtZGVjbGljMRkwFwYDVQQDDBB0YWxlbnRz
dHViZS50ZXN0MSIwIAYJKoZIhvcNAQkBFhN0aG9tYXNAZS1kZWNsaWMuY29tMB4X
DTE4MDQzMDA5MTkwMVoXDTE5MDQzMDA5MTkwMVowgZgxCzAJBgNVBAYTAkZSMQww
CgYDVQQIDANCWkgxDjAMBgNVBAcMBUF1cmF5MRkwFwYDVQQKDBB0YWxlbnRzdHVi
ZS50ZXN0MREwDwYDVQQLDAhlLWRlY2xpYzEZMBcGA1UEAwwQdGFsZW50c3R1YmUu
dGVzdDEiMCAGCSqGSIb3DQEJARYTdGhvbWFzQGUtZGVjbGljLmNvbTCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBANVTxapL6RtTjEoO4wWTswIqTW/zTI4B
bETbPHYOeb8+kgLTxH04ETmVzPYz0b5RfkotY0EZzwntv3c5JsLnqqrQAXN4fcl3
iIXCXMKUo1Nrbp0yAMGzGDmnpmvABE/nkg0ZJ3YeKV9xkEYcyMCU+DhUuazd1W3d
odjMs/BHeuoZau9HRE+6lE+/tqWhHrmgRghP8g2Z2g8lrHak5BuQNwnvVmg6oJae
94DWygKV7ZJ3vBHRkLIOaG+mVI8FRjrlHQke/tFStD2dd3TgsqvzYBM3f1VBm85y
qhyIxr2s+xgOl2/Z0VZzmVgI2jAPhvN8VNvXtlFM6BOkyHAFwm7jCtcCAwEAATAN
BgkqhkiG9w0BAQsFAAOCAQEAjlPu5wtZwW0jP0cBBBvZWLRe9+Wlz9uJXiOb2AMF
ibYeKgcGNbruY8Ayvmm++C/mMpkm50NG5ycEiO5rB/1665zB5ibWAswRD+F5rjzx
8qM4YsUVDkiuW5ul0RI2KO6llAbdQaCfaqXtsCZ+b/XVwe41S1ZkvigLaL99pscU
ghgD9yz/RY6C7PHPS+8dF0Uc+YND3vqWfAhUQCXdXetXndPMxwBOXnT08RQOWMBK
lTSHIsFACFhynL3wfQ6xH4+/TQkquxzqqh3MeB1LpqHiFChCoNmBPKWf7ZvFkg/p
4DzXTkLs6G6/WM7DuBmwB6e5tevJfe/BSkzCLaJKABDaOA==
-----END CERTIFICATE-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVU8WqS+kbU4xK
DuMFk7MCKk1v80yOAWxE2zx2Dnm/PpIC08R9OBE5lcz2M9G+UX5KLWNBGc8J7b93
OSbC56qq0AFzeH3Jd4iFwlzClKNTa26dMgDBsxg5p6ZrwARP55INGSd2HilfcZBG
HMjAlPg4VLms3dVt3aHYzLPwR3rqGWrvR0RPupRPv7aloR65oEYIT/INmdoPJax2
pOQbkDcJ71ZoOqCWnveA1soCle2Sd7wR0ZCyDmhvplSPBUY65R0JHv7RUrQ9nXd0
4LKr82ATN39VQZvOcqociMa9rPsYDpdv2dFWc5lYCNowD4bzfFTb17ZRTOgTpMhw
BcJu4wrXAgMBAAECggEACj5ikIHiqLBDXU8Hsb3c666yVzzcoTkKROguKBEb4YYU
ptQabFTj5tr9o5jranMpWFCDop2lpnlnJ0d0SAmt1VP1reDMUX9O6/VgVOukSB4x
ipTbGnIKKMKXKDdpPZkGF2Ds1ywtmmqund9F+JFute3DmLxyQjtRSULTJSeZjGIj
kk4mUHIZr71q2KocBEhDZhoaf6aiM3tfyXIlg0C6GzcfGKk4a2C6Ia7D24icPLa7
JE4Omh6w8duQsme8YeFbbixLlwm+74qvo7k8ubqZAvvODQlKz4xiT1App4cTq6nm
PbAuFvLX0DtkndBSgAUa3h8iuchdv15M2FkUWkenaQKBgQD7iup0vZqqIFh6Sk08
k3Skbit6TXwMt4yjP9/JTgMaIO5LfZiht2xyxN4gN2XVp6k4Jn5SPxGuGV+e5QSr
9R04x5wN6NwZAprL70UuztHZdXpzNVogF4hF4LdGDT8CbeFF5ciiTQaAKwX9euOT
HRf6RGT80qiKVcZ+C3zhR6CxAwKBgQDZG39+6DzdGetLzls7B6R1PPV7RLOn6bts
jbxSkx/VksHkS1Q4lG1fXM2q/VdSTFg/gNNKzLCADDVrO9KonvVrvMZlshiSLXTJ
GVgfe+UGSL7VjbH4G4bAqznK5zK8ADI1BRyCU3UrzFqRHoV9h9e2qIfjJrK4taX7
G5KAukDUnQKBgQC6GBLOnTtgY5+xkWjEyP6Ba7QkvlBpBB465FWGk31+BiDlnpyd
/5pu6jC/OtzPDUQG84t/A4Pr/n+ciShEo4mj6SENtVmn8yJcf776Gy5rKBuYQj9U
ALTjpZVRcRlNjccctBwT3tJRXgMHfbQBsYN8tr7TwHHKLh00QQF5lUlPywKBgB2a
SkAbmnDrX9HuSTI7UIlLzo0ISRbUH+IlUVBRDz4nzJg8TTeJxYADP2fZM1bdYgsG
ncjNMCPFhmMgvRCQ3BXcn5CuP/tuh0YEVqe0VP4OXTbxIxsZZb5Pmom4DIrl2/Ku
x7xddNSMAK1Y5ArBwv/86spmNGhLHF6o28kBnGVhAoGAOcGzpJi1l0BzNUKBS512
XlLUYswFW6OqcEk1iGTvEFUzZ9Agp2Yc7HZ3MrmCAjugx37tAfNKQglF2/AJ9Uuy
yoUpPtdXX6CuPTMkzCkvAYbRGohE/cw7ZjI6vTqoEPiyrQA1lJYTIMQm3FYivjJl
z84K0Vlv64BeiIpJrvzW+2A=
-----END PRIVATE KEY-----
+47
View File
@@ -0,0 +1,47 @@
FROM php:7.1-fpm
ENV TERM=xterm
RUN echo 'deb http://ftp.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/debian-backports.list
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y lsof nano less git locales
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
&& /usr/sbin/locale-gen
RUN apt-get update \
&& apt-get install -y ffmpeg exiftool graphviz libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client nodejs npm \
&& apt-get install -y --no-install-recommends libmagickwand-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
&& pecl install geoip-1.1.1 redis imagick mongodb \
&& docker-php-ext-enable geoip redis imagick mongodb
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.fast_shutdown=1'; \
echo 'opcache.enable_cli=1'; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
COPY zz-logformat.conf /usr/local/etc/php-fpm.d/
COPY php.ini /usr/local/etc/php/conf.d/
RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
&& mv composer.phar /usr/local/bin/composer
RUN curl --location --silent --show-error https://symfony.com/installer -o /usr/local/bin/symfony \
&& chmod a+x /usr/local/bin/symfony
RUN curl --location --silent --show-error https://s3.amazonaws.com/files.drush.org/drush.phar -o /usr/local/bin/drush \
&& chmod a+x /usr/local/bin/drush
RUN (npm install -g uglify-js) \
&& ln -s /usr/bin/nodejs /usr/local/bin/node
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+9
View File
@@ -0,0 +1,9 @@
date.timezone = Europe/Paris
display_errors = Off
memory_limit = 768M
log_errors = On
error_reporting = E_ALL
error_log = /dev/stdout
report_memleaks = On
upload_max_filesize = 512M
post_max_size = 512M
+2
View File
@@ -0,0 +1,2 @@
[www]
access.format = "%R [%t] \"%m %r%Q%q\" %s %f %{mili}dms %{kilo}MKb %C%%"
+36
View File
@@ -0,0 +1,36 @@
FROM php:7.1-fpm
ENV TERM=xterm
RUN apt-get clean \
&& apt-get update \
&& apt-get install -y lsof nano less git locales
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
&& /usr/sbin/locale-gen
RUN apt-get update \
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client \
&& apt-get install -y --no-install-recommends libmagickwand-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
&& pecl install geoip-1.1.1 redis imagick \
&& docker-php-ext-enable geoip redis imagick
RUN { \
echo 'opcache.memory_consumption=128'; \
echo 'opcache.interned_strings_buffer=8'; \
echo 'opcache.max_accelerated_files=4000'; \
echo 'opcache.revalidate_freq=60'; \
echo 'opcache.fast_shutdown=1'; \
echo 'opcache.enable_cli=1'; \
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
COPY zz-logformat.conf /usr/local/etc/php-fpm.d/
COPY php.ini /usr/local/etc/php/conf.d/
RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
&& mv composer.phar /usr/local/bin/composer
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/
+7
View File
@@ -0,0 +1,7 @@
date.timezone = Europe/Paris
display_errors = Off
memory_limit = 256M
log_errors = On
error_reporting = E_ALL
error_log = /dev/stdout
report_memleaks = On
+2
View File
@@ -0,0 +1,2 @@
[www]
access.format = "%R [%t] \"%m %r%Q%q\" %s %f %{mili}dms %{kilo}MKb %C%%"
+41
View File
@@ -0,0 +1,41 @@
version: '3'
services:
nginx:
ports:
- "80:80"
- "443:443"
volumes:
- ../volume/www:/home/www:cached
restart: "no"
php:
volumes:
- ../volume/www:/home/www:cached
restart: "no"
postgres:
ports:
- "5432:5432"
restart: "no"
mongo:
ports:
- "27017:27017"
restart: "no"
elasticsearch:
ports:
- "9200:9200"
restart: "no"
store-php:
volumes:
- ../volume/www:/home/www:cached
restart: "no"
store-mysql:
ports:
- "3306:3306"
restart: "no"
+13
View File
@@ -0,0 +1,13 @@
version: '3'
services:
nginx:
networks:
- default
- frontnginx_front
networks:
default:
driver: bridge
frontnginx_front:
external: true
+13
View File
@@ -0,0 +1,13 @@
version: '3'
services:
nginx:
networks:
- default
- frontnginx_front
networks:
default:
driver: bridge
frontnginx_front:
external: true
+72
View File
@@ -0,0 +1,72 @@
version: '3'
services:
##
## WEBSITE RESSOURCES
##
nginx:
build: build/nginx
container_name: ${CLIENT}.nginx.${ENV}
hostname: nginx
volumes:
- ../volume/nginx/etc.nginx.sites-enabled:/etc/nginx/sites-enabled
- ../volume/www:/home/www
restart: always
php:
build: build/php
container_name: ${CLIENT}.php.${ENV}
hostname: php
volumes:
- ../volume/www:/home/www
restart: always
postgres:
image: postgres:9.6
container_name: ${CLIENT}.postgres.${ENV}
hostname: postgres
env_file: env/postgres.env
volumes:
- ../volume/postgres/var.lib.postgresql.data:/var/lib/postgresql/data
restart: always
mongo:
image: mongo:3.4
container_name: ${CLIENT}.mongo.${ENV}
hostname: mongo
volumes:
- ../volume/mongo/data.db:/data/db
restart: always
elasticsearch:
build: build/elasticsearch
container_name: ${CLIENT}.elasticsearch.${ENV}
hostname: elasticsearch
volumes:
- search_db_data:/usr/share/elasticsearch/data
restart: always
##
## STORE RESSOURCES
##
store-php:
build: build/php_light
container_name: ${CLIENT}.store-php.${ENV}
hostname: store-php
volumes:
- ../volume/www:/home/www
restart: always
store-mysql:
build: build/mysql
container_name: ${CLIENT}.store-mysql.${ENV}
hostname: store-mysql
env_file: env/store-mysql.env
volumes:
- ../volume/store-mysql/var.lib.mysql:/var/lib/mysql
restart: always
# Elastic does not play well with physical volume (folder rights trouble)
volumes:
search_db_data:
+4
View File
@@ -0,0 +1,4 @@
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=database
MYSQL_USER=user
MYSQL_PASSWORD=
+3
View File
@@ -0,0 +1,3 @@
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DB=
-64
View File
@@ -1,64 +0,0 @@
upstream website_php {
server tt.website:9000;
}
upstream store_php {
server tt.store:9000;
}
server {
server_name talentstube.dev localhost 10.0.20.110;
root /home/www/talentstube.dev/www/web;
client_max_body_size 500M;
sendfile off;
# DEV
location / {
try_files $uri /app_dev.php$is_args$args;
}
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/talentstube.dev;
index index.php;
try_files $uri $uri/ /store/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
location ~ \.php$ {
return 404;
}
access_log /dev/stdout vhosts;
error_log /dev/stderr;
}
-118
View File
@@ -1,118 +0,0 @@
upstream website_php-preprod {
server tt.website-preprod:9000;
}
upstream store_php-preprod {
server tt.store-preprod:9000;
}
server {
listen 80;
server_name pp.talentstube.com;
return 301 https://pp.talentstube.com$request_uri;
}
server {
listen 443 ssl http2;
server_name pp.talentstube.com;
client_max_body_size 500M;
root /home/www/pp.talentstube.com/www/web;
access_log /home/www/pp.talentstube.com/log/access.log vhosts;
error_log /home/www/pp.talentstube.com/log/error.log;
ssl on;
ssl_certificate /etc/ssl/private/talentstube.com.chain.crt;
ssl_certificate_key /etc/ssl/private/talentstube.com.key;
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php-preprod;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php-preprod;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/pp.talentstube.com;
index index.php;
try_files $uri $uri/ /www/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php-preprod;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
sendfile off;
include /home/www/pp.talentstube.com/conf/redirect.conf;
include /home/www/pp.talentstube.com/conf/expires.conf;
}
-143
View File
@@ -1,143 +0,0 @@
upstream website_php {
server tt.website:9000;
}
upstream store_php {
server tt.store:9000;
}
server {
listen 80;
server_name talentstube.com www.talentstube.com;
return 301 https://www.talentstube.com$request_uri;
}
server {
listen 443 ssl http2;
server_name talentstube.com;
ssl on;
ssl_certificate /etc/ssl/private/talentstube.com.chain.crt;
ssl_certificate_key /etc/ssl/private/talentstube.com.key;
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
return 301 https://www.talentstube.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.talentstube.com;
client_max_body_size 500M;
root /home/www/www.talentstube.com/www/web;
access_log /home/www/www.talentstube.com/log/access.log vhosts;
error_log /home/www/www.talentstube.com/log/error.log;
ssl on;
ssl_certificate /etc/ssl/private/talentstube.com.chain.crt;
ssl_certificate_key /etc/ssl/private/talentstube.com.key;
ssl_session_timeout 24h;
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/media/cache/.* {
try_files $uri @rewriteapp;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/www.talentstube.com;
index index.php;
try_files $uri $uri/ /www/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
sendfile off;
include /home/www/www.talentstube.com/conf/redirect.conf;
include /home/www/www.talentstube.com/conf/expires.conf;
}
-11
View File
@@ -1,11 +0,0 @@
rewrite ^/reussir-son-offre-video$ https://www.talentstube.com/faire-offre-emploi-video permanent;
rewrite ^/page/presentation-territoire$ https://www.talentstube.com/territoires permanent;
rewrite ^/page/presentation-entreprise$ https://www.talentstube.com/offre-emploi-video permanent;
rewrite ^/accompagnement-talent$ https://www.talentstube.com/accompagnement-cv-video permanent;
rewrite ^/talent/16_yohann_charbonnel/$ https://www.talentstube.com/talent/16-yohann-charbonnel/ permanent;
rewrite ^/cvVideo$ https://www.talentstube.com/cv-video permanent;
rewrite ^/reussir-son-cv-video$ https://www.talentstube.com/faire-cv-video permanent;
rewrite ^/plateforme$ https://www.talentstube.com/ permanent;
rewrite ^/page/les-conseils$ https://www.talentstube.com/accompagnement-entreprise permanent;
rewrite ^/page/presentation-talent$ https://www.talentstube.com/cv-video permanent;
rewrite ^/page/la-plateforme$ https://www.talentstube.com/ permanent;
Submodule store deleted from 2b87d35e6a
+1
View File
@@ -0,0 +1 @@
conf/nginx.conf
+64
View File
@@ -0,0 +1,64 @@
upstream website_php {
server tt-website.php.dev:9000;
}
upstream store_php {
server tt-website.store-php.dev:9000;
}
server {
listen 80;
listen 443 ssl;
server_name talentstube.test;
root /home/www/website/www/web;
client_max_body_size 500M;
sendfile off;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# DEV
location / {
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/website;
index index.php;
try_files $uri $uri/ /store/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
}
location ~ \.php$ {
return 404;
}
access_log /dev/stdout vhosts;
error_log /dev/stderr;
}
@@ -0,0 +1,98 @@
upstream website_php-preprod {
server tt-website.php.preprod:9000;
}
upstream store_php-preprod {
server tt-website.store-php.preprod:9000;
}
server {
listen 80;
server_name pp.talentstube.com;
client_max_body_size 500M;
root /home/www/website/www/web;
access_log /home/www/website/log/access.log vhosts;
error_log /home/www/website/log/error.log;
location / {
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php-preprod;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param HTTPS on;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php-preprod;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
fastcgi_param HTTPS on;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/website;
index index.php;
try_files $uri $uri/ /www/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php-preprod;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
sendfile off;
include /home/www/website/conf/redirect.conf;
include /home/www/website/conf/expires.conf;
}
+120
View File
@@ -0,0 +1,120 @@
upstream website_php {
server tt-website.php.prod:9000;
}
upstream store_php {
server tt-website.store-php.prod:9000;
}
server {
listen 80;
server_name static.talentstube.com;
index index.html;
root /home/www/website/www/web/uploads/;
access_log /home/www/website/log/access.log vhosts;
error_log /home/www/website/log/error.log;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name www.talentstube.com;
client_max_body_size 500M;
root /home/www/website/www/web;
access_log /home/www/website/log/access.log vhosts;
error_log /home/www/website/log/error.log;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass website_php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# When you are using symlinks to link the document root to the
# current version of your application, you should pass the real
# application path instead of the path to the symlink to PHP
# FPM.
# Otherwise, PHP's OPcache may not properly detect changes to
# your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
# for more information).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/media/cache/.* {
try_files $uri @rewriteapp;
}
# ---- PRESTASHOP ----
location ^~ /store/ {
root /home/www/website;
index index.php;
try_files $uri $uri/ /www/index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass store_php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
sendfile off;
include /home/www/website/conf/redirect.conf;
include /home/www/website/conf/expires.conf;
}
+15
View File
@@ -0,0 +1,15 @@
rewrite ^/reussir-son-offre-video$ https://www.talentstube.com/faire-offre-emploi-video permanent;
rewrite ^/page/presentation-territoire$ https://www.talentstube.com/territoires permanent;
rewrite ^/page/presentation-entreprise$ https://www.talentstube.com/offre-emploi-video permanent;
rewrite ^/accompagnement-talent$ https://www.talentstube.com/accompagnement-cv-video permanent;
rewrite ^/talent/16_yohann_charbonnel/$ https://www.talentstube.com/talent/16-yohann-charbonnel/ permanent;
rewrite ^/cvVideo$ https://www.talentstube.com/cv-video permanent;
rewrite ^/reussir-son-cv-video$ https://www.talentstube.com/faire-cv-video permanent;
rewrite ^/plateforme$ https://www.talentstube.com/ permanent;
rewrite ^/page/les-conseils$ https://www.talentstube.com/accompagnement-entreprise permanent;
rewrite ^/page/presentation-talent$ https://www.talentstube.com/cv-video permanent;
rewrite ^/page/la-plateforme$ https://www.talentstube.com/ permanent;
rewrite ^/tarifs$ https://www.talentstube.com/accompagnement-entreprise permanent;
rewrite ^/annonce/38-charge-de-projets-developpement-h-f$ https://www.talentstube.com/annonce/38-charge-de-projets-developpement-cosmetique-h-f permanent;
rewrite ^/annonce/recherche/$ https://www.talentstube.com/annonce/recherche permanent;
rewrite ^/territoire/1573-communaute-d-agglomeration-castres-mazamet/$ https://www.talentstube.com/territoire/1573-castres-mazamet/ permanent;
+2
View File
@@ -0,0 +1,2 @@
*
!.gitignore
+1
View File
@@ -0,0 +1 @@
config/settings.inc.php
@@ -0,0 +1,51 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_AddressFactory
{
/**
* Initilize an address corresponding to the specified id address or if empty to the
* default shop configuration
* @param null $id_address
* @param bool $with_geoloc
* @return Address
*/
public function findOrCreate($id_address = null, $with_geoloc = false)
{
$func_args = func_get_args();
return call_user_func_array(array('Address', 'initialize'), $func_args);
}
/**
* Check if an address exists depending on given $id_address
* @param $id_address
* @return bool
*/
public function addressExists($id_address)
{
return Address::addressExists($id_address);
}
}
@@ -0,0 +1,38 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_CacheManager
{
/**
* Cleans the cache for specific cache key.
*
* @param $key
*/
public function clean($key)
{
Cache::clean($key);
}
}
@@ -0,0 +1,43 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_Configuration implements Core_Business_ConfigurationInterface
{
/**
* Returns constant defined by given $key if exists or check directly into PrestaShop
* Configuration
* @param $key
* @return mixed
*/
public function get($key)
{
if (defined($key)) {
return constant($key);
} else {
return Configuration::get($key);
}
}
}
@@ -0,0 +1,52 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_Database implements Core_Foundation_Database_DatabaseInterface
{
/**
* Perform a SELECT sql statement
* @param $sqlString
* @return array|false
* @throws PrestaShopDatabaseException
*/
public function select($sqlString)
{
return Db::getInstance()->executeS($sqlString);
}
/**
* Escape $unsafe to be used into a SQL statement
* @param $unsafeData
* @return string
*/
public function escape($unsafeData)
{
// Prepare required params
$html_ok = true;
$bq_sql = true;
return Db::getInstance()->escape($unsafeData, $html_ok, $bq_sql);
}
}
@@ -0,0 +1,104 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_EntityMapper
{
/**
* Load ObjectModel
* @param $id
* @param $id_lang
* @param $entity ObjectModel
* @param $entity_defs
* @param $id_shop
* @param $should_cache_objects
* @throws PrestaShopDatabaseException
*/
public function load($id, $id_lang, $entity, $entity_defs, $id_shop, $should_cache_objects)
{
// Load object from database if object id is present
$cache_id = 'objectmodel_' . $entity_defs['classname'] . '_' . (int)$id . '_' . (int)$id_shop . '_' . (int)$id_lang;
if (!$should_cache_objects || !Cache::isStored($cache_id)) {
$sql = new DbQuery();
$sql->from($entity_defs['table'], 'a');
$sql->where('a.`' . bqSQL($entity_defs['primary']) . '` = ' . (int)$id);
// Get lang informations
if ($id_lang && isset($entity_defs['multilang']) && $entity_defs['multilang']) {
$sql->leftJoin($entity_defs['table'] . '_lang', 'b', 'a.`' . bqSQL($entity_defs['primary']) . '` = b.`' . bqSQL($entity_defs['primary']) . '` AND b.`id_lang` = ' . (int)$id_lang);
if ($id_shop && !empty($entity_defs['multilang_shop'])) {
$sql->where('b.`id_shop` = ' . (int)$id_shop);
}
}
// Get shop informations
if (Shop::isTableAssociated($entity_defs['table'])) {
$sql->leftJoin($entity_defs['table'] . '_shop', 'c', 'a.`' . bqSQL($entity_defs['primary']) . '` = c.`' . bqSQL($entity_defs['primary']) . '` AND c.`id_shop` = ' . (int)$id_shop);
}
if ($object_datas = Db::getInstance()->getRow($sql)) {
if (!$id_lang && isset($entity_defs['multilang']) && $entity_defs['multilang']) {
$sql = 'SELECT *
FROM `' . bqSQL(_DB_PREFIX_ . $entity_defs['table']) . '_lang`
WHERE `' . bqSQL($entity_defs['primary']) . '` = ' . (int)$id
.(($id_shop && $entity->isLangMultishop()) ? ' AND `id_shop` = ' . (int)$id_shop : '');
if ($object_datas_lang = Db::getInstance()->executeS($sql)) {
foreach ($object_datas_lang as $row) {
foreach ($row as $key => $value) {
if ($key != $entity_defs['primary'] && array_key_exists($key, $entity)) {
if (!isset($object_datas[$key]) || !is_array($object_datas[$key])) {
$object_datas[$key] = array();
}
$object_datas[$key][$row['id_lang']] = $value;
}
}
}
}
}
$entity->id = (int)$id;
foreach ($object_datas as $key => $value) {
if (array_key_exists($key, $entity)) {
$entity->{$key} = $value;
} else {
unset($object_datas[$key]);
}
}
if ($should_cache_objects) {
Cache::store($cache_id, $object_datas);
}
}
} else {
$object_datas = Cache::retrieve($cache_id);
if ($object_datas) {
$entity->id = (int)$id;
foreach ($object_datas as $key => $value) {
$entity->{$key} = $value;
}
}
}
}
}
@@ -0,0 +1,51 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_EntityMetaDataRetriever
{
public function getEntityMetaData($className)
{
$metaData = new Core_Foundation_Database_EntityMetaData;
$metaData->setEntityClassName($className);
if (property_exists($className, 'definition')) {
// Legacy entity
$classVars = get_class_vars($className);
$metaData->setTableName($classVars['definition']['table']);
$metaData->setPrimaryKeyFieldNames(array($classVars['definition']['primary']));
} else {
throw new Adapter_Exception(
sprintf(
'Cannot get metadata for entity `%s`.',
$className
)
);
}
return $metaData;
}
}
@@ -0,0 +1,29 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_Exception extends Core_Foundation_Exception_Exception
{
}
@@ -0,0 +1,54 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_HookManager
{
/**
* Execute modules for specified hook
*
* @param string $hook_name Hook Name
* @param array $hook_args Parameters for the functions
* @param int $id_module Execute hook for this module only
* @param bool $array_return If specified, module output will be set by name in an array
* @param bool $check_exceptions Check permission exceptions
* @param bool $use_push Force change to be refreshed on Dashboard widgets
* @param int $id_shop If specified, hook will be execute the shop with this ID
*
* @throws PrestaShopException
*
* @return string/array modules output
*/
public function exec($hook_name,
$hook_args = array(),
$id_module = null,
$array_return = false,
$check_exceptions = true,
$use_push = false,
$id_shop = null)
{
return Hook::exec($hook_name, $hook_args, $id_module, $array_return, $check_exceptions, $use_push, $id_shop);
}
}
@@ -0,0 +1,87 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_PackItemsManager
{
/**
* Get the Products contained in the given Pack.
*
* @param Pack $pack
* @param integer $id_lang Optional
* @return Array[Product] The products contained in this Pack, with special dynamic attributes [pack_quantity, id_pack_product_attribute]
*/
public function getPackItems($pack, $id_lang = false)
{
if ($id_lang === false) {
$configuration = Adapter_ServiceLocator::get('Core_Business_ConfigurationInterface');
$id_lang = (int)$configuration->get('PS_LANG_DEFAULT');
}
return Pack::getItems($pack->id, $id_lang);
}
/**
* Get all Packs that contains the given item in the corresponding declination.
*
* @param Product $item
* @param integer $item_attribute_id
* @param integer $id_lang Optional
* @return Array[Pack] The packs that contains the given item, with special dynamic attribute [pack_item_quantity]
*/
public function getPacksContainingItem($item, $item_attribute_id, $id_lang = false)
{
if ($id_lang === false) {
$configuration = Adapter_ServiceLocator::get('Core_Business_ConfigurationInterface');
$id_lang = (int)$configuration->get('PS_LANG_DEFAULT');
}
return Pack::getPacksContainingItem($item->id, $item_attribute_id, $id_lang);
}
/**
* Is this product a pack?
*
* @param Product $product
* @return boolean
*/
public function isPack($product)
{
return Pack::isPack($product->id);
}
/**
* Is this product in a pack?
* If $id_product_attribute specified, then will restrict search on the given combination,
* else this method will match a product if at least one of all its combination is in a pack.
*
* @param Product $product
* @param integer $id_product_attribute Optional combination of the product
* @return boolean
*/
public function isPacked($product, $id_product_attribute = false)
{
return Pack::isPacked($product->id, $id_product_attribute);
}
}
@@ -0,0 +1,68 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_ProductPriceCalculator
{
public function getProductPrice(
$id_product,
$usetax = true,
$id_product_attribute = null,
$decimals = 6,
$divisor = null,
$only_reduc = false,
$usereduc = true,
$quantity = 1,
$force_associated_tax = false,
$id_customer = null,
$id_cart = null,
$id_address = null,
&$specific_price_output = null,
$with_ecotax = true,
$use_group_reduction = true,
Context $context = null,
$use_customer_price = true
) {
return Product::getPriceStatic(
$id_product,
$usetax,
$id_product_attribute,
$decimals,
$divisor,
$only_reduc,
$usereduc,
$quantity,
$force_associated_tax,
$id_customer,
$id_cart,
$id_address,
$specific_price_output,
$with_ecotax,
$use_group_reduction,
$context,
$use_customer_price
);
}
}
@@ -0,0 +1,54 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_ServiceLocator
{
/**
* Set a service container Instance
* @var Core_Foundation_IoC_Container
*/
private static $service_container;
public static function setServiceContainerInstance(Core_Foundation_IoC_Container $container)
{
self::$service_container = $container;
}
/**
* Get a service depending on its given $serviceName
* @param $serviceName
* @return mixed|object
* @throws Adapter_Exception
*/
public static function get($serviceName)
{
if (empty(self::$service_container) || is_null(self::$service_container)) {
throw new Adapter_Exception('Service container is not set.');
}
return self::$service_container->make($serviceName);
}
}
@@ -0,0 +1,34 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Adapter_StockManager
{
public function getStockAvailableByProduct($product, $id_product_attribute = null, $id_shop = null)
{
return new StockAvailable(StockAvailable::getStockAvailableIdByProductId($product->id, $id_product_attribute, $id_shop));
}
}
@@ -0,0 +1,80 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_CMS_CMSRepository extends Core_Foundation_Database_EntityRepository
{
/**
* Return CMSRepository lang associative table name
* @return string
*/
private function getLanguageTableNameWithPrefix()
{
return $this->getTableNameWithPrefix() . '_lang';
}
/**
* Return all CMSRepositories depending on $id_lang/$id_shop tuple
* @param $id_lang
* @param $id_shop
* @return array|null
*/
public function i10nFindAll($id_lang, $id_shop)
{
$sql = '
SELECT *
FROM `'.$this->getTableNameWithPrefix().'` c
JOIN `'.$this->getPrefix().'cms_lang` cl ON c.`id_cms`= cl.`id_cms`
WHERE cl.`id_lang` = '.(int)$id_lang.'
AND cl.`id_shop` = '.(int)$id_shop.'
';
return $this->hydrateMany($this->db->select($sql));
}
/**
* Return all CMSRepositories depending on $id_lang/$id_shop tuple
* @param $id_cms
* @param $id_lang
* @param $id_shop
* @return CMS|null
* @throws Core_Foundation_Database_Exception
*/
public function i10nFindOneById($id_cms, $id_lang, $id_shop)
{
$sql = '
SELECT *
FROM `'.$this->getTableNameWithPrefix().'` c
JOIN `'.$this->getPrefix().'cms_lang` cl ON c.`id_cms`= cl.`id_cms`
WHERE c.`id_cms` = '.(int)$id_cms.'
AND cl.`id_lang` = '.(int)$id_lang.'
AND cl.`id_shop` = '.(int)$id_shop.'
LIMIT 0 , 1
';
return $this->hydrateOne($this->db->select($sql));
}
}
@@ -0,0 +1,42 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_CMS_CMSRoleRepository extends Core_Foundation_Database_EntityRepository
{
/**
* Return all CMSRoles which are already associated
* @return array|null
*/
public function getCMSRolesAssociated()
{
$sql = '
SELECT *
FROM `'.$this->getTableNameWithPrefix().'`
WHERE `id_cms` != 0';
return $this->hydrateMany($this->db->select($sql));
}
}
@@ -0,0 +1,30 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
interface Core_Business_ConfigurationInterface
{
public function get($key);
}
@@ -0,0 +1,43 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_ContainerBuilder
{
/**
* Construct PrestaShop Core Service container
* @return Core_Foundation_IoC_Container
* @throws Core_Foundation_IoC_Exception
*/
public function build()
{
$container = new Core_Foundation_IoC_Container;
$container->bind('Core_Business_ConfigurationInterface', 'Adapter_Configuration', true);
$container->bind('Core_Foundation_Database_DatabaseInterface', 'Adapter_Database', true);
return $container;
}
}
@@ -0,0 +1,91 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_Email_EmailLister
{
private $filesystem;
public function __construct(Core_Foundation_FileSystem_FileSystem $fs)
{
// Register dependencies
$this->filesystem = $fs;
}
/**
* Return the list of available mails
* @param null $lang
* @param null $dir
* @return array|null
*/
public function getAvailableMails($dir)
{
if (!is_dir($dir)) {
return null;
}
$mail_directory = $this->filesystem->listEntriesRecursively($dir);
$mail_list = array();
// Remove unwanted .html / .txt / .tpl / .php / . / ..
foreach ($mail_directory as $mail) {
if (strpos($mail->getFilename(), '.') !== false) {
$tmp = explode('.', $mail->getFilename());
// Check for filename existence (left part) and if extension is html (right part)
if (($tmp === false || !isset($tmp[0])) || (isset($tmp[1]) && $tmp[1] !== 'html')) {
continue;
}
$mail_name_no_ext = $tmp[0];
if (!in_array($mail_name_no_ext, $mail_list)) {
$mail_list[] = $mail_name_no_ext;
}
}
}
return $mail_list;
}
/**
* Give in input getAvailableMails(), will output a human readable and proper string name
* @return string
*/
public function getCleanedMailName($mail_name)
{
if (strpos($mail_name, '.') !== false) {
$tmp = explode('.', $mail_name);
if ($tmp === false || !isset($tmp[0])) {
return $mail_name;
}
$mail_name = $tmp[0];
}
return ucfirst(str_replace(array('_', '-'), ' ', $mail_name));
}
}
@@ -0,0 +1,214 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_Payment_PaymentOption
{
private $callToActionText;
private $logo;
private $action;
private $method;
private $inputs;
private $form;
private $moduleName;
/**
* Return Call to Action Text
* @return string
*/
public function getCallToActionText()
{
return $this->callToActionText;
}
/**
* Set Call To Action Text
* @param $callToActionText
* @return $this
*/
public function setCallToActionText($callToActionText)
{
$this->callToActionText = $callToActionText;
return $this;
}
/**
* Return logo path
* @return string
*/
public function getLogo()
{
return $this->logo;
}
/**
* Set logo path
* @param $logo
* @return $this
*/
public function setLogo($logo)
{
$this->logo = $logo;
return $this;
}
/**
* Return action to perform (POST/GET)
* @return string
*/
public function getAction()
{
return $this->action;
}
/**
* Set action to be performed by this option
* @param $action
* @return $this
*/
public function setAction($action)
{
$this->action = $action;
return $this;
}
public function getMethod()
{
return $this->method;
}
public function setMethod($method)
{
$this->method = $method;
return $this;
}
/**
* Return inputs contained in this payment option
* @return mixed
*/
public function getInputs()
{
return $this->inputs;
}
/**
* Set inputs for this payment option
* @param $inputs
* @return $this
*/
public function setInputs($inputs)
{
$this->inputs = $inputs;
return $this;
}
/**
* Get payment option form
* @return mixed
*/
public function getForm()
{
return $this->form;
}
/**
* Set payment option form
* @param $form
* @return $this
*/
public function setForm($form)
{
$this->form = $form;
return $this;
}
/**
* Get related module name to this payment option
* @return string
*/
public function getModuleName()
{
return $this->moduleName;
}
/**
* Set related module name to this payment option
* @param $moduleName
* @return $this
*/
public function setModuleName($moduleName)
{
$this->moduleName = $moduleName;
return $this;
}
/**
* Legacy options were specified this way:
* - either an array with a top level property 'cta_text'
* and then the other properties
* - or a numerically indexed array or arrays as described above
* Since this was a mess, this method is provided to convert them.
* It takes as input a legacy option (in either form) and always
* returns an array of instances of Core_Business_Payment_PaymentOption
*/
public static function convertLegacyOption(array $legacyOption)
{
if (!$legacyOption) {
return;
}
if (array_key_exists('cta_text', $legacyOption)) {
$legacyOption = array($legacyOption);
}
$newOptions = array();
$defaults = array(
'action' => null,
'form' => null,
'method' => null,
'inputs' => array(),
'logo' => null
);
foreach ($legacyOption as $option) {
$option = array_merge($defaults, $option);
$newOption = new Core_Business_Payment_PaymentOption();
$newOption->setCallToActionText($option['cta_text'])
->setAction($option['action'])
->setForm($option['form'])
->setInputs($option['inputs'])
->setLogo($option['logo'])
->setMethod($option['method']);
$newOptions[] = $newOption;
}
return $newOptions;
}
}
@@ -0,0 +1,152 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Business_Stock_StockManager
{
/**
* This will update a Pack quantity and will decrease the quantity of containing Products if needed.
*
* @param Product $product A product pack object to update its quantity
* @param StockAvailable $stock_available the stock of the product to fix with correct quantity
* @param integer $delta_quantity The movement of the stock (negative for a decrease)
* @param integer|null $id_shop Opional shop ID
*/
public function updatePackQuantity($product, $stock_available, $delta_quantity, $id_shop = null)
{
$configuration = Adapter_ServiceLocator::get('Core_Business_ConfigurationInterface');
if ($product->pack_stock_type == 1 || $product->pack_stock_type == 2 || ($product->pack_stock_type == 3 && $configuration->get('PS_PACK_STOCK_TYPE') > 0)) {
$packItemsManager = Adapter_ServiceLocator::get('Adapter_PackItemsManager');
$products_pack = $packItemsManager->getPackItems($product);
$stockAvailable = new Core_Business_Stock_StockManager();
$stockManager = Adapter_ServiceLocator::get('Adapter_StockManager');
$cacheManager = Adapter_ServiceLocator::get('Adapter_CacheManager');
foreach ($products_pack as $product_pack) {
$productStockAvailable = $stockManager->getStockAvailableByProduct($product_pack, $product_pack->id_pack_product_attribute, $id_shop);
$productStockAvailable->quantity = $productStockAvailable->quantity + ($delta_quantity * $product_pack->pack_quantity);
$productStockAvailable->update();
$cacheManager->clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$product_pack->id.'*');
}
}
$stock_available->quantity = $stock_available->quantity + $delta_quantity;
if ($product->pack_stock_type == 0 || $product->pack_stock_type == 2 ||
($product->pack_stock_type == 3 && ($configuration->get('PS_PACK_STOCK_TYPE') == 0 || $configuration->get('PS_PACK_STOCK_TYPE') == 2))) {
$stock_available->update();
}
}
/**
* This will decrease (if needed) Packs containing this product
* (with the right declinaison) if there is not enough product in stocks.
*
* @param Product $product A product object to update its quantity
* @param integer $id_product_attribute The product attribute to update
* @param StockAvailable $stock_available the stock of the product to fix with correct quantity
* @param integer|null $id_shop Opional shop ID
*/
public function updatePacksQuantityContainingProduct($product, $id_product_attribute, $stock_available, $id_shop = null)
{
$configuration = Adapter_ServiceLocator::get('Core_Business_ConfigurationInterface');
$packItemsManager = Adapter_ServiceLocator::get('Adapter_PackItemsManager');
$stockManager = Adapter_ServiceLocator::get('Adapter_StockManager');
$cacheManager = Adapter_ServiceLocator::get('Adapter_CacheManager');
$packs = $packItemsManager->getPacksContainingItem($product, $id_product_attribute);
foreach($packs as $pack) {
// Decrease stocks of the pack only if pack is in linked stock mode (option called 'Decrement both')
if (!((int)$pack->pack_stock_type == 2) &&
!((int)$pack->pack_stock_type == 3 && $configuration->get('PS_PACK_STOCK_TYPE') == 2)
) {
continue;
}
// Decrease stocks of the pack only if there is not enough items to constituate the actual pack stocks.
// How many packs can be constituated with the remaining product stocks
$quantity_by_pack = $pack->pack_item_quantity;
$max_pack_quantity = max(array(0, floor($stock_available->quantity / $quantity_by_pack)));
$stock_available_pack = $stockManager->getStockAvailableByProduct($pack, null, $id_shop);
if ($stock_available_pack->quantity > $max_pack_quantity) {
$stock_available_pack->quantity = $max_pack_quantity;
$stock_available_pack->update();
$cacheManager->clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$pack->id.'*');
}
}
}
/**
* Will update Product available stock int he given declinaison. If product is a Pack, could decrease the sub products.
* If Product is contained in a Pack, Pack could be decreased or not (only if sub product stocks become not sufficient).
*
* @param Product $product The product to update its stockAvailable
* @param integer $id_product_attribute The declinaison to update (null if not)
* @param integer $delta_quantity The quantity change (positive or negative)
* @param integer|null $id_shop Optional
*/
public function updateQuantity($product, $id_product_attribute, $delta_quantity, $id_shop = null)
{
$stockManager = Adapter_ServiceLocator::get('Adapter_StockManager');
$stockAvailable = $stockManager->getStockAvailableByProduct($product, $id_product_attribute, $id_shop);
$packItemsManager = Adapter_ServiceLocator::get('Adapter_PackItemsManager');
$cacheManager = Adapter_ServiceLocator::get('Adapter_CacheManager');
$hookManager = Adapter_ServiceLocator::get('Adapter_HookManager');
// Update quantity of the pack products
if ($packItemsManager->isPack($product)) {
// The product is a pack
$this->updatePackQuantity($product, $stockAvailable, $delta_quantity, $id_shop);
} else {
// The product is not a pack
$stockAvailable->quantity = $stockAvailable->quantity + $delta_quantity;
$stockAvailable->id_product = (int)$product->id;
$stockAvailable->id_product_attribute = (int)$id_product_attribute;
$stockAvailable->update();
// Decrease case only: the stock of linked packs should be decreased too.
if ($delta_quantity < 0) {
// The product is not a pack, but the product combination is part of a pack (use of isPacked, not isPack)
if ($packItemsManager->isPacked($product, $id_product_attribute)) {
$this->updatePacksQuantityContainingProduct($product, $id_product_attribute, $stockAvailable, $id_shop);
}
}
}
$cacheManager->clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$product->id.'*');
$hookManager->exec('actionUpdateQuantity',
array(
'id_product' => $product->id,
'id_product_attribute' => $id_product_attribute,
'quantity' => $stockAvailable->quantity
)
);
}
}
@@ -0,0 +1,31 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
interface Core_Foundation_Database_DatabaseInterface
{
public function select($sqlString);
public function escape($unsafeData);
}
@@ -0,0 +1,42 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
interface Core_Foundation_Database_EntityInterface
{
/**
* Returns the name of the repository class for this entity.
* If unspecified, a generic repository will be used for the entity.
*
* @return string or falsey value
*/
public static function getRepositoryClassName();
public function save();
public function delete();
public function hydrate(array $keyValueData);
}
@@ -0,0 +1,114 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Database_EntityManager
{
private $db;
private $configuration;
private $entityMetaData = array();
public function __construct(
Core_Foundation_Database_DatabaseInterface $db,
Core_Business_ConfigurationInterface $configuration
) {
$this->db = $db;
$this->configuration = $configuration;
}
/**
* Return current database object used
* @return Core_Foundation_Database_DatabaseInterface
*/
public function getDatabase()
{
return $this->db;
}
/**
* Return current repository used
* @param $className
* @return mixed
*/
public function getRepository($className)
{
if (is_callable(array($className, 'getRepositoryClassName'))) {
$repositoryClass = call_user_func(array($className, 'getRepositoryClassName'));
} else {
$repositoryClass = null;
}
if (!$repositoryClass) {
$repositoryClass = 'Core_Foundation_Database_EntityRepository';
}
$repository = new $repositoryClass(
$this,
$this->configuration->get('_DB_PREFIX_'),
$this->getEntityMetaData($className)
);
return $repository;
}
/**
* Return entity's meta data
* @param $className
* @return mixed
* @throws Adapter_Exception
*/
public function getEntityMetaData($className)
{
if (!array_key_exists($className, $this->entityMetaData)) {
$metaDataRetriever = new Adapter_EntityMetaDataRetriever;
$this->entityMetaData[$className] = $metaDataRetriever->getEntityMetaData($className);
}
return $this->entityMetaData[$className];
}
/**
* Flush entity to DB
* @param Core_Foundation_Database_EntityInterface $entity
* @return $this
*/
public function save(Core_Foundation_Database_EntityInterface $entity)
{
$entity->save();
return $this;
}
/**
* DElete entity from DB
* @param Core_Foundation_Database_EntityInterface $entity
* @return $this
*/
public function delete(Core_Foundation_Database_EntityInterface $entity)
{
$entity->delete();
return $this;
}
}
@@ -0,0 +1,64 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Database_EntityMetaData
{
private $tableName;
private $primaryKeyFieldnames;
public function setTableName($name)
{
$this->tableName = $name;
return $this;
}
public function getTableName()
{
return $this->tableName;
}
public function setPrimaryKeyFieldNames(array $primaryKeyFieldnames)
{
$this->primaryKeyFieldnames = $primaryKeyFieldnames;
return $this;
}
public function getPrimaryKeyFieldnames()
{
return $this->primaryKeyFieldnames;
}
public function setEntityClassName($entityClassName)
{
$this->entityClassName = $entityClassName;
return $this;
}
public function getEntityClassName()
{
return $this->entityClassName;
}
}
@@ -0,0 +1,220 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Database_EntityRepository
{
protected $entityManager;
protected $db;
protected $tablesPrefix;
protected $entityMetaData;
protected $queryBuilder;
public function __construct(
Core_Foundation_Database_EntityManager $entityManager,
$tablesPrefix,
Core_Foundation_Database_EntityMetaData $entityMetaData
) {
$this->entityManager = $entityManager;
$this->db = $this->entityManager->getDatabase();
$this->tablesPrefix = $tablesPrefix;
$this->entityMetaData = $entityMetaData;
$this->queryBuilder = new Core_Foundation_Database_EntityManager_QueryBuilder($this->db);
}
public function __call($method, $arguments)
{
if (0 === strpos($method, 'findOneBy')) {
$one = true;
$by = substr($method, 9);
} elseif (0 === strpos($method, 'findBy')) {
$one = false;
$by = substr($method, 6);
} else {
throw new Core_Foundation_Database_Exception(sprintf('Undefind method %s.', $method));
}
if (count($arguments) !== 1) {
throw new Core_Foundation_Database_Exception(sprintf('Method %s takes exactly one argument.', $method));
}
if (!$by) {
$where = $arguments[0];
} else {
$where = array();
$by = $this->convertToDbFieldName($by);
$where[$by] = $arguments[0];
}
return $this->doFind($one, $where);
}
/**
* Convert a camelCase field name to a snakeCase one
* e.g.: findAllByIdCMS => id_cms
* @param $camel_case_field_name
* @return string
*/
private function convertToDbFieldName($camel_case_field_name)
{
return strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $camel_case_field_name));
}
/**
* Return ID field name
* @return mixed
* @throws Core_Foundation_Database_Exception
*/
protected function getIdFieldName()
{
$primary = $this->entityMetaData->getPrimaryKeyFieldnames();
if (count($primary) === 0) {
throw new Core_Foundation_Database_Exception(
sprintf(
'No primary key defined in entity `%s`.',
$this->entityMetaData->getEntityClassName()
)
);
} elseif (count($primary) > 1) {
throw new Core_Foundation_Database_Exception(
sprintf(
'Entity `%s` has a composite primary key, which is not supported by entity repositories.',
$this->entityMetaData->getEntityClassName()
)
);
}
return $primary[0];
}
/**
* Returns escaped+prefixed current table name
* @return mixed
*/
protected function getTableNameWithPrefix()
{
return $this->db->escape($this->tablesPrefix . $this->entityMetaData->getTableName());
}
/**
* Returns escaped DB table prefix
* @return mixed
*/
protected function getPrefix()
{
return $this->db->escape($this->tablesPrefix);
}
/**
* Return a new empty Entity depending on current Repository selected
* @return mixed
*/
public function getNewEntity()
{
$entityClassName = $this->entityMetaData->getEntityClassName();
return new $entityClassName;
}
/**
* This function takes an array of database rows as input
* and returns an hydrated entity if there is one row only.
*
* Null is returned when there are no rows, and an exception is thrown
* if there are too many rows.
*
* @param array $rows Database rows
*/
protected function hydrateOne(array $rows)
{
if (count($rows) === 0) {
return null;
} elseif (count($rows) > 1) {
throw new Core_Foundation_Database_Exception('Too many rows returned.');
} else {
$data = $rows[0];
$entity = $this-> getNewEntity();
$entity->hydrate($data);
return $entity;
}
}
protected function hydrateMany(array $rows)
{
$entities = array();
foreach ($rows as $row) {
$entity = $this->getNewEntity();
$entity->hydrate($row);
$entities[] = $entity;
}
return $entities;
}
/**
* Constructs and performs 'SELECT' in DB
* @param $one
* @param array $cumulativeConditions
* @return array|mixed|null
* @throws Core_Foundation_Database_Exception
*/
private function doFind($one, array $cumulativeConditions)
{
$whereClause = $this->queryBuilder->buildWhereConditions('AND', $cumulativeConditions);
$sql = 'SELECT * FROM ' . $this->getTableNameWithPrefix() . ' WHERE ' . $whereClause;
$rows = $this->db->select($sql);
if ($one) {
return $this->hydrateOne($rows);
} else {
return $this->hydrateMany($rows);
}
}
/**
* Find one entity in DB
* @param $id
* @return array|mixed|null
* @throws Core_Foundation_Database_Exception
*/
public function findOne($id)
{
$conditions = array();
$conditions[$this->getIdFieldName()] = $id;
return $this->doFind(true, $conditions);
}
/**
* Find all entities in DB
* @return array
*/
public function findAll()
{
$sql = 'SELECT * FROM ' . $this->getTableNameWithPrefix();
return $this->hydrateMany($this->db->select($sql));
}
}
@@ -0,0 +1,29 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Database_Exception extends Core_Foundation_Exception_Exception
{
}
@@ -0,0 +1,71 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Database_EntityManager_QueryBuilder
{
private $db;
public function __construct(Core_Foundation_Database_DatabaseInterface $db)
{
$this->db = $db;
}
public function quote($value)
{
$escaped = $this->db->escape($value);
if (is_string($value)) {
return "'" . $escaped . "'";
} else {
return $escaped;
}
}
public function buildWhereConditions($andOrOr, array $conditions)
{
$operator = strtoupper($andOrOr);
if ($operator !== 'AND' && $operator !== 'OR') {
throw new Core_Foundation_Database_Exception(sprintf('Invalid operator %s - must be "and" or "or".', $andOrOr));
}
$parts = array();
foreach ($conditions as $key => $value) {
if (is_scalar($value)) {
$parts[] = $key . ' = ' . $this->quote($value);
} else {
$list = array();
foreach ($value as $item) {
$list[] = $this->quote($item);
}
$parts[] = $key . ' IN (' . implode(', ', $list) . ')';
}
}
return implode(" $operator ", $parts);
}
}
@@ -0,0 +1,33 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_Exception_Exception extends Exception
{
public function __construct($message = null, $code = 0, Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
}
@@ -0,0 +1,29 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_FileSystem_Exception extends Core_Foundation_Exception_Exception
{
}
@@ -0,0 +1,141 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_FileSystem_FileSystem
{
/**
* Replaces directory separators with the system's native one
* and trims the trailing separator.
*/
public function normalizePath($path)
{
return rtrim(
str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path),
DIRECTORY_SEPARATOR
);
}
private function joinTwoPaths($a, $b)
{
return $this->normalizePath($a) . DIRECTORY_SEPARATOR . $this->normalizePath($b);
}
/**
* Joins an arbitrary number of paths, normalizing them along the way.
*/
public function joinPaths()
{
if (func_num_args() < 2) {
throw new Core_Foundation_FileSystem_Exception('joinPaths requires at least 2 arguments.');
} else if (func_num_args() === 2) {
$arg_O = func_get_arg(0);
$arg_1 = func_get_arg(1);
return $this->joinTwoPaths($arg_O, $arg_1);
} else if (func_num_args() > 2) {
$func_args = func_get_args();
$arg_0 = func_get_arg(0);
return $this->joinPaths(
$arg_0,
call_user_func_array(
array($this,
'joinPaths'),
array_slice($func_args, 1)
)
);
}
}
/**
* Performs a depth first listing of directory entries.
* Throws exception if $path is not a file.
* If $path is a file and not a directory, just gets the file info for it
* and return it in an array.
* @return an array of SplFileInfo object indexed by file path
*/
public function listEntriesRecursively($path)
{
if (!file_exists($path)) {
throw new Core_Foundation_FileSystem_Exception(
sprintf(
'No such file or directory: %s',
$path
)
);
}
if (!is_dir($path)) {
throw new Core_Foundation_FileSystem_Exception(
sprintf(
'%s is not a directory',
$path
)
);
}
$entries = array();
foreach (scandir($path) as $entry) {
if ($entry === '.' || $entry === '..') {
continue;
}
$newPath = $this->joinPaths($path, $entry);
$info = new SplFileInfo($newPath);
$entries[$newPath] = $info;
if ($info->isDir()) {
$entries = array_merge(
$entries,
$this->listEntriesRecursively($newPath)
);
}
}
return $entries;
}
/**
* Filter used by listFilesRecursively.
*/
private function matchOnlyFiles(SplFileInfo $info)
{
return $info->isFile();
}
/**
* Same as listEntriesRecursively but returns only files.
*/
public function listFilesRecursively($path)
{
return array_filter(
$this->listEntriesRecursively($path),
array($this, 'matchOnlyFiles')
);
}
}
@@ -0,0 +1,172 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_IoC_Container
{
private $bindings = array();
private $instances = array();
private $namespaceAliases = array();
public function knows($serviceName)
{
return array_key_exists($serviceName, $this->bindings);
}
private function knowsNamespaceAlias($alias)
{
return array_key_exists($alias, $this->namespaceAliases);
}
public function bind($serviceName, $constructor, $shared = false)
{
if ($this->knows($serviceName)) {
throw new Core_Foundation_IoC_Exception(
sprintf('Cannot bind `%s` again. A service name can only be bound once.', $serviceName)
);
}
$this->bindings[$serviceName] = array(
'constructor' => $constructor,
'shared' => $shared
);
return $this;
}
public function aliasNamespace($alias, $namespacePrefix)
{
if ($this->knowsNamespaceAlias($alias)) {
throw new Core_Foundation_IoC_Exception(
sprintf(
'Namespace alias `%1$s` already exists and points to `%2$s`',
$alias, $this->namespaceAliases[$alias]
)
);
}
$this->namespaceAliases[$alias] = $namespacePrefix;
return $this;
}
public function resolveClassName($className)
{
$colonPos = strpos($className, ':');
if (0 !== $colonPos) {
$alias = substr($className, 0, $colonPos);
if ($this->knowsNamespaceAlias($alias)) {
$class = ltrim(substr($className, $colonPos + 1), '\\');
return $this->namespaceAliases[$alias] . '\\' . $class;
}
}
return $className;
}
private function makeInstanceFromClassName($className, array $alreadySeen)
{
$className = $this->resolveClassName($className);
try {
$refl = new ReflectionClass($className);
} catch (ReflectionException $re) {
throw new Core_Foundation_IoC_Exception(sprintf('This doesn\'t seem to be a class name: `%s`.', $className));
}
$args = array();
if ($refl->isAbstract()) {
throw new Core_Foundation_IoC_Exception(sprintf('Cannot build abstract class: `%s`.', $className));
}
$classConstructor = $refl->getConstructor();
if ($classConstructor) {
foreach ($classConstructor->getParameters() as $param) {
$paramClass = $param->getClass();
if ($paramClass) {
$args[] = $this->doMake($param->getClass()->getName(), $alreadySeen);
} elseif ($param->isDefaultValueAvailable()) {
$args[] = $param->getDefaultValue();
} else {
throw new Core_Foundation_IoC_Exception(sprintf('Cannot build a `%s`.', $className));
}
}
}
if (count($args) > 0) {
return $refl->newInstanceArgs($args);
} else {
// newInstanceArgs with empty array fails in PHP 5.3 when the class
// doesn't have an explicitly defined constructor
return $refl->newInstance();
}
}
private function doMake($serviceName, array $alreadySeen = array())
{
if (array_key_exists($serviceName, $alreadySeen)) {
throw new Core_Foundation_IoC_Exception(sprintf(
'Cyclic dependency detected while building `%s`.',
$serviceName
));
}
$alreadySeen[$serviceName] = true;
if (!$this->knows($serviceName)) {
$this->bind($serviceName, $serviceName);
}
$binding = $this->bindings[$serviceName];
if ($binding['shared'] && array_key_exists($serviceName, $this->instances)) {
return $this->instances[$serviceName];
} else {
$constructor = $binding['constructor'];
if (is_callable($constructor)) {
$service = call_user_func($constructor);
} elseif (!is_string($constructor)) {
// user already provided the value, no need to construct it.
$service = $constructor;
} else {
// assume the $constructor is a class name
$service = $this->makeInstanceFromClassName($constructor, $alreadySeen);
}
if ($binding['shared']) {
$this->instances[$serviceName] = $service;
}
return $service;
}
}
public function make($serviceName)
{
return $this->doMake($serviceName, array());
}
}
@@ -0,0 +1,29 @@
<?php
/**
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Core_Foundation_IoC_Exception extends Core_Foundation_Exception_Exception
{
}
File diff suppressed because it is too large Load Diff
+47
View File
@@ -0,0 +1,47 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
require(_PS_ADMIN_DIR_.'/../config/config.inc.php');
require(_PS_ADMIN_DIR_.'/functions.php');
// For retrocompatibility with "tab" parameter
if (!isset($_GET['controller']) && isset($_GET['tab'])) {
$_GET['controller'] = strtolower($_GET['tab']);
}
if (!isset($_POST['controller']) && isset($_POST['tab'])) {
$_POST['controller'] = strtolower($_POST['tab']);
}
if (!isset($_REQUEST['controller']) && isset($_REQUEST['tab'])) {
$_REQUEST['controller'] = strtolower($_REQUEST['tab']);
}
// Retrocompatibility with 1.4
$_REQUEST['ajaxMode'] = $_POST['ajaxMode'] = $_GET['ajaxMode'] = $_REQUEST['ajax'] = $_POST['ajax'] = $_GET['ajax'] = 1;
Dispatcher::getInstance()->dispatch();
+130
View File
@@ -0,0 +1,130 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../config/config.inc.php');
/* Getting cookie or logout */
require_once(_PS_ADMIN_DIR_.'/init.php');
$context = Context::getContext();
if (Tools::isSubmit('ajaxReferrers')) {
require(_PS_CONTROLLER_DIR_.'admin/AdminReferrersController.php');
}
if (Tools::getValue('page') == 'prestastore' and @fsockopen('addons.prestashop.com', 80, $errno, $errst, 3)) {
readfile('http://addons.prestashop.com/adminmodules.php?lang='.$context->language->iso_code);
}
if (Tools::isSubmit('getAvailableFields') and Tools::isSubmit('entity')) {
$jsonArray = array();
$import = new AdminImportController();
$fields = $import->getAvailableFields(true);
foreach ($fields as $field) {
$jsonArray[] = '{"field":"'.addslashes($field).'"}';
}
die('['.implode(',', $jsonArray).']');
}
if (Tools::isSubmit('ajaxProductPackItems')) {
$jsonArray = array();
$products = Db::getInstance()->executeS('
SELECT p.`id_product`, pl.`name`
FROM `'._DB_PREFIX_.'product` p
NATURAL LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
WHERE pl.`id_lang` = '.(int)(Tools::getValue('id_lang')).'
'.Shop::addSqlRestrictionOnLang('pl').'
AND NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'pack` WHERE `id_product_pack` = p.`id_product`)
AND p.`id_product` != '.(int)(Tools::getValue('id_product')));
foreach ($products as $packItem) {
$jsonArray[] = '{"value": "'.(int)($packItem['id_product']).'-'.addslashes($packItem['name']).'", "text":"'.(int)($packItem['id_product']).' - '.addslashes($packItem['name']).'"}';
}
die('['.implode(',', $jsonArray).']');
}
if (Tools::isSubmit('getChildrenCategories') && Tools::isSubmit('id_category_parent')) {
$children_categories = Category::getChildrenWithNbSelectedSubCat(Tools::getValue('id_category_parent'), Tools::getValue('selectedCat'), Context::getContext()->language->id, null, Tools::getValue('use_shop_context'));
die(Tools::jsonEncode($children_categories));
}
if (Tools::isSubmit('getNotifications')) {
$notification = new Notification;
die(Tools::jsonEncode($notification->getLastElements()));
}
if (Tools::isSubmit('updateElementEmployee') && Tools::getValue('updateElementEmployeeType')) {
$notification = new Notification;
die($notification->updateEmployeeLastElement(Tools::getValue('updateElementEmployeeType')));
}
if (Tools::isSubmit('searchCategory')) {
$q = Tools::getValue('q');
$limit = Tools::getValue('limit');
$results = Db::getInstance()->executeS('SELECT c.`id_category`, cl.`name`
FROM `'._DB_PREFIX_.'category` c
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category`'.Shop::addSqlRestrictionOnLang('cl').')
WHERE cl.`id_lang` = '.(int)$context->language->id.' AND c.`level_depth` <> 0
AND cl.`name` LIKE \'%'.pSQL($q).'%\'
GROUP BY c.id_category
ORDER BY c.`position`
LIMIT '.(int)$limit);
if ($results) {
foreach ($results as $result) {
echo trim($result['name']).'|'.(int)$result['id_category']."\n";
}
}
}
if (Tools::isSubmit('getParentCategoriesId') && $id_category = Tools::getValue('id_category')) {
$category = new Category((int)$id_category);
$results = Db::getInstance()->executeS('SELECT `id_category` FROM `'._DB_PREFIX_.'category` c WHERE c.`nleft` < '.(int)$category->nleft.' AND c.`nright` > '.(int)$category->nright.'');
$output = array();
foreach ($results as $result) {
$output[] = $result;
}
die(Tools::jsonEncode($output));
}
if (Tools::isSubmit('getZones')) {
$html = '<select id="zone_to_affect" name="zone_to_affect">';
foreach (Zone::getZones() as $z) {
$html .= '<option value="'.$z['id_zone'].'">'.$z['name'].'</option>';
}
$html .= '</select>';
$array = array('hasError' => false, 'errors' => '', 'data' => $html);
die(Tools::jsonEncode($array));
}
if (Tools::isSubmit('getEmailHTML') && $email = Tools::getValue('email')) {
$email_html = AdminTranslationsController::getEmailHTML($email);
die($email_html);
}
@@ -0,0 +1,140 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../config/config.inc.php');
/* Getting cookie or logout */
require_once(_PS_ADMIN_DIR_.'/init.php');
$query = Tools::getValue('q', false);
if (!$query or $query == '' or strlen($query) < 1) {
die();
}
/*
* In the SQL request the "q" param is used entirely to match result in database.
* In this way if string:"(ref : #ref_pattern#)" is displayed on the return list,
* they are no return values just because string:"(ref : #ref_pattern#)"
* is not write in the name field of the product.
* So the ref pattern will be cut for the search request.
*/
if ($pos = strpos($query, ' (ref:')) {
$query = substr($query, 0, $pos);
}
$excludeIds = Tools::getValue('excludeIds', false);
if ($excludeIds && $excludeIds != 'NaN') {
$excludeIds = implode(',', array_map('intval', explode(',', $excludeIds)));
} else {
$excludeIds = '';
}
// Excluding downloadable products from packs because download from pack is not supported
$excludeVirtuals = (bool)Tools::getValue('excludeVirtuals', true);
$exclude_packs = (bool)Tools::getValue('exclude_packs', true);
$context = Context::getContext();
$sql = 'SELECT p.`id_product`, pl.`link_rewrite`, p.`reference`, pl.`name`, image_shop.`id_image` id_image, il.`legend`, p.`cache_default_attribute`
FROM `'._DB_PREFIX_.'product` p
'.Shop::addSqlAssociation('product', 'p').'
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.id_product = p.id_product AND pl.id_lang = '.(int)$context->language->id.Shop::addSqlRestrictionOnLang('pl').')
LEFT JOIN `'._DB_PREFIX_.'image_shop` image_shop
ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop='.(int)$context->shop->id.')
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$context->language->id.')
WHERE (pl.name LIKE \'%'.pSQL($query).'%\' OR p.reference LIKE \'%'.pSQL($query).'%\')'.
(!empty($excludeIds) ? ' AND p.id_product NOT IN ('.$excludeIds.') ' : ' ').
($excludeVirtuals ? 'AND NOT EXISTS (SELECT 1 FROM `'._DB_PREFIX_.'product_download` pd WHERE (pd.id_product = p.id_product))' : '').
($exclude_packs ? 'AND (p.cache_is_pack IS NULL OR p.cache_is_pack = 0)' : '').
' GROUP BY p.id_product';
$items = Db::getInstance()->executeS($sql);
if ($items && ($excludeIds || strpos($_SERVER['HTTP_REFERER'], 'AdminScenes') !== false)) {
foreach ($items as $item) {
echo trim($item['name']).(!empty($item['reference']) ? ' (ref: '.$item['reference'].')' : '').'|'.(int)($item['id_product'])."\n";
}
} elseif ($items) {
// packs
$results = array();
foreach ($items as $item) {
// check if product have combination
if (Combination::isFeatureActive() && $item['cache_default_attribute']) {
$sql = 'SELECT pa.`id_product_attribute`, pa.`reference`, ag.`id_attribute_group`, pai.`id_image`, agl.`name` AS group_name, al.`name` AS attribute_name,
a.`id_attribute`
FROM `'._DB_PREFIX_.'product_attribute` pa
'.Shop::addSqlAssociation('product_attribute', 'pa').'
LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON pac.`id_product_attribute` = pa.`id_product_attribute`
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)$context->language->id.')
LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group` AND agl.`id_lang` = '.(int)$context->language->id.')
LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` pai ON pai.`id_product_attribute` = pa.`id_product_attribute`
WHERE pa.`id_product` = '.(int)$item['id_product'].'
GROUP BY pa.`id_product_attribute`, ag.`id_attribute_group`
ORDER BY pa.`id_product_attribute`';
$combinations = Db::getInstance()->executeS($sql);
if (!empty($combinations)) {
foreach ($combinations as $k => $combination) {
$results[$combination['id_product_attribute']]['id'] = $item['id_product'];
$results[$combination['id_product_attribute']]['id_product_attribute'] = $combination['id_product_attribute'];
!empty($results[$combination['id_product_attribute']]['name']) ? $results[$combination['id_product_attribute']]['name'] .= ' '.$combination['group_name'].'-'.$combination['attribute_name']
: $results[$combination['id_product_attribute']]['name'] = $item['name'].' '.$combination['group_name'].'-'.$combination['attribute_name'];
if (!empty($combination['reference'])) {
$results[$combination['id_product_attribute']]['ref'] = $combination['reference'];
} else {
$results[$combination['id_product_attribute']]['ref'] = !empty($item['reference']) ? $item['reference'] : '';
}
if (empty($results[$combination['id_product_attribute']]['image'])) {
$results[$combination['id_product_attribute']]['image'] = str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $combination['id_image'], 'home_default'));
}
}
} else {
$product = array(
'id' => (int)($item['id_product']),
'name' => $item['name'],
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], 'home_default')),
);
array_push($results, $product);
}
} else {
$product = array(
'id' => (int)($item['id_product']),
'name' => $item['name'],
'ref' => (!empty($item['reference']) ? $item['reference'] : ''),
'image' => str_replace('http://', Tools::getShopProtocol(), $context->link->getImageLink($item['link_rewrite'], $item['id_image'], 'home_default')),
);
array_push($results, $product);
}
}
$results = array_values($results);
echo Tools::jsonEncode($results);
} else {
Tools::jsonEncode(new stdClass);
}
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 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;
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 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;
+86
View File
@@ -0,0 +1,86 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../config/config.inc.php');
if (!Context::getContext()->employee->isLoggedBack()) {
Tools::redirectAdmin(Context::getContext()->link->getAdminLink('AdminLogin'));
}
$tabAccess = Profile::getProfileAccess(Context::getContext()->employee->id_profile,
Tab::getIdFromClassName('AdminBackup'));
if ($tabAccess['view'] !== '1') {
die(Tools::displayError('You do not have permission to view this.'));
}
$backupdir = realpath(PrestaShopBackup::getBackupPath());
if ($backupdir === false) {
die(Tools::displayError('There is no "/backup" directory.'));
}
if (!$backupfile = Tools::getValue('filename')) {
die(Tools::displayError('No file has been specified.'));
}
// Check the realpath so we can validate the backup file is under the backup directory
$backupfile = realpath($backupdir.DIRECTORY_SEPARATOR.$backupfile);
if ($backupfile === false or strncmp($backupdir, $backupfile, strlen($backupdir)) != 0) {
die(Tools::dieOrLog('The backup file does not exist.'));
}
if (substr($backupfile, -4) == '.bz2') {
$contentType = 'application/x-bzip2';
} elseif (substr($backupfile, -3) == '.gz') {
$contentType = 'application/x-gzip';
} else {
$contentType = 'text/x-sql';
}
$fp = @fopen($backupfile, 'r');
if ($fp === false) {
die(Tools::displayError('Unable to open backup file(s).').' "'.addslashes($backupfile).'"');
}
// Add the correct headers, this forces the file is saved
header('Content-Type: '.$contentType);
header('Content-Disposition: attachment; filename="'.Tools::getValue('filename'). '"');
if (ob_get_level() && ob_get_length() > 0) {
ob_clean();
}
$ret = @fpassthru($fp);
fclose($fp);
if ($ret === false) {
die(Tools::displayError('Unable to display backup file(s).').' "'.addslashes($backupfile).'"');
}
@@ -0,0 +1,2 @@
Order deny,allow
Deny from all
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2014 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 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;
@@ -0,0 +1,41 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include(_PS_ADMIN_DIR_.'/../config/config.inc.php');
if (isset($_GET['secure_key'])) {
$secureKey = md5(_COOKIE_KEY_.Configuration::get('PS_SHOP_NAME'));
if (!empty($secureKey) && $secureKey === $_GET['secure_key']) {
$shop_ids = Shop::getCompleteListOfShopsID();
foreach ($shop_ids as $shop_id) {
Shop::setContext(Shop::CONTEXT_SHOP, (int)$shop_id);
Currency::refreshCurrencies();
}
}
}
@@ -0,0 +1,37 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
require_once(_PS_ADMIN_DIR_.'/../config/config.inc.php');
require_once(_PS_ADMIN_DIR_.'/init.php');
if (isset($_GET['img']) and Validate::isMd5($_GET['img']) and isset($_GET['name']) and Validate::isGenericName($_GET['name']) and file_exists(_PS_UPLOAD_DIR_.$_GET['img'])) {
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="'.$_GET['name'].'.jpg"');
echo file_get_contents(_PS_UPLOAD_DIR_.$_GET['img']);
}
+103
View File
@@ -0,0 +1,103 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', getcwd());
}
include_once(_PS_ADMIN_DIR_.'/../config/config.inc.php');
$module = Tools::getValue('module');
$render = Tools::getValue('render');
$type = Tools::getValue('type');
$option = Tools::getValue('option');
$layers = Tools::getValue('layers');
$width = Tools::getValue('width');
$height = Tools::getValue('height');
$id_employee = Tools::getValue('id_employee');
$id_lang = Tools::getValue('id_lang');
if (!isset($cookie->id_employee) || !$cookie->id_employee || $cookie->id_employee != $id_employee) {
die(Tools::displayError());
}
if (!Validate::isModuleName($module)) {
die(Tools::displayError());
}
if (!Tools::file_exists_cache($module_path = _PS_ROOT_DIR_.'/modules/'.$module.'/'.$module.'.php')) {
die(Tools::displayError());
}
$shop_id = '';
Shop::setContext(Shop::CONTEXT_ALL);
if (Context::getContext()->cookie->shopContext) {
$split = explode('-', Context::getContext()->cookie->shopContext);
if (count($split) == 2) {
if ($split[0] == 'g') {
if (Context::getContext()->employee->hasAuthOnShopGroup($split[1])) {
Shop::setContext(Shop::CONTEXT_GROUP, $split[1]);
} else {
$shop_id = Context::getContext()->employee->getDefaultShopID();
Shop::setContext(Shop::CONTEXT_SHOP, $shop_id);
}
} elseif (Shop::getShop($split[1]) && Context::getContext()->employee->hasAuthOnShop($split[1])) {
$shop_id = $split[1];
Shop::setContext(Shop::CONTEXT_SHOP, $shop_id);
} else {
$shop_id = Context::getContext()->employee->getDefaultShopID();
Shop::setContext(Shop::CONTEXT_SHOP, $shop_id);
}
}
}
// Check multishop context and set right context if need
if (Shop::getContext()) {
if (Shop::getContext() == Shop::CONTEXT_SHOP && !Shop::CONTEXT_SHOP) {
Shop::setContext(Shop::CONTEXT_GROUP, Shop::getContextShopGroupID());
}
if (Shop::getContext() == Shop::CONTEXT_GROUP && !Shop::CONTEXT_GROUP) {
Shop::setContext(Shop::CONTEXT_ALL);
}
}
// Replace existing shop if necessary
if (!$shop_id) {
Context::getContext()->shop = new Shop(Configuration::get('PS_SHOP_DEFAULT'));
} elseif (Context::getContext()->shop->id != $shop_id) {
Context::getContext()->shop = new Shop($shop_id);
}
require_once($module_path);
$graph = new $module();
$graph->setEmployee($id_employee);
$graph->setLang($id_lang);
if ($option) {
$graph->setOption($option, $layers);
}
$graph->create($render, $type, $width, $height, $layers);
$graph->draw();
@@ -0,0 +1,2 @@
Order deny,allow
Deny from all
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 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/osl-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 <contact@prestashop.com>
* @copyright 2007-2016 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 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;
@@ -0,0 +1 @@
This work is licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
@@ -0,0 +1,253 @@
<?php
include('config/config.php');
if ($_SESSION['verify'] != 'RESPONSIVEfilemanager') {
die('forbiden');
}
include('include/utils.php');
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'view':
if (isset($_GET['type'])) {
$_SESSION['view_type'] = $_GET['type'];
} else {
die('view type number missing');
}
break;
case 'sort':
if (isset($_GET['sort_by'])) {
$_SESSION['sort_by'] = $_GET['sort_by'];
}
if (isset($_GET['descending'])) {
$_SESSION['descending'] = $_GET['descending'] === 'true';
}
break;
case 'image_size':
if (realpath(dirname(_PS_ROOT_DIR_.$_POST['path'])) != realpath(_PS_ROOT_DIR_.$upload_dir)) {
die();
}
$pos = strpos($_POST['path'], $upload_dir);
if ($pos !== false) {
$info = getimagesize(substr_replace($_POST['path'], $current_path, $pos, strlen($upload_dir)));
echo json_encode($info);
}
break;
case 'save_img':
$info = pathinfo($_POST['name']);
if (strpos($_POST['path'], '/') === 0
|| strpos($_POST['path'], '../') !== false
|| strpos($_POST['path'], './') === 0
|| strpos($_POST['url'], 'http://featherfiles.aviary.com/') !== 0
|| $_POST['name'] != fix_filename($_POST['name'], $transliteration)
|| !in_array(strtolower($info['extension']), array('jpg', 'jpeg', 'png'))
) {
die('wrong data');
}
$image_data = get_file_by_url($_POST['url']);
if ($image_data === false) {
die('file could not be loaded');
}
$put_contents_path = $current_path;
if (isset($_POST['path'])) {
$put_contents_path .= str_replace("\0", "", $_POST['path']);
}
if (isset($_POST['name'])) {
$put_contents_path .= str_replace("\0", "", $_POST['name']);
}
file_put_contents($put_contents_path, $image_data);
//new thumb creation
//try{
create_img_gd($current_path.$_POST['path'].$_POST['name'], $thumbs_base_path.$_POST['path'].$_POST['name'], 122, 91);
new_thumbnails_creation($current_path.$_POST['path'], $current_path.$_POST['path'].$_POST['name'], $_POST['name'], $current_path, $relative_image_creation, $relative_path_from_current_pos, $relative_image_creation_name_to_prepend, $relative_image_creation_name_to_append, $relative_image_creation_width, $relative_image_creation_height, $fixed_image_creation, $fixed_path_from_filemanager, $fixed_image_creation_name_to_prepend, $fixed_image_creation_to_append, $fixed_image_creation_width, $fixed_image_creation_height);
/*} catch (Exception $e) {
$src_thumb=$mini_src="";
}*/
break;
case 'extract':
if (strpos($_POST['path'], '/') === 0 || strpos($_POST['path'], '../') !== false || strpos($_POST['path'], './') === 0) {
die('wrong path');
}
$path = $current_path.$_POST['path'];
$info = pathinfo($path);
$base_folder = $current_path.fix_dirname($_POST['path']).'/';
switch ($info['extension']) {
case 'zip':
$zip = new ZipArchive;
if ($zip->open($path) === true) {
//make all the folders
for ($i = 0; $i < $zip->numFiles; $i++) {
$OnlyFileName = $zip->getNameIndex($i);
$FullFileName = $zip->statIndex($i);
if ($FullFileName['name'][strlen($FullFileName['name']) - 1] == '/') {
create_folder($base_folder.$FullFileName['name']);
}
}
//unzip into the folders
for ($i = 0; $i < $zip->numFiles; $i++) {
$OnlyFileName = $zip->getNameIndex($i);
$FullFileName = $zip->statIndex($i);
if (!($FullFileName['name'][strlen($FullFileName['name']) - 1] == '/')) {
$fileinfo = pathinfo($OnlyFileName);
if (in_array(strtolower($fileinfo['extension']), $ext)) {
copy('zip://'.$path.'#'.$OnlyFileName, $base_folder.$FullFileName['name']);
}
}
}
$zip->close();
} else {
echo 'failed to open file';
}
break;
case 'gz':
$p = new PharData($path);
$p->decompress(); // creates files.tar
break;
case 'tar':
// unarchive from the tar
$phar = new PharData($path);
$phar->decompressFiles();
$files = array();
check_files_extensions_on_phar($phar, $files, '', $ext);
$phar->extractTo($current_path.fix_dirname($_POST['path']).'/', $files, true);
break;
}
break;
case 'media_preview':
$preview_file = $_GET['file'];
$info = pathinfo($preview_file);
?>
<div id="jp_container_1" class="jp-video " style="margin:0 auto;">
<div class="jp-type-single">
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div class="jp-gui">
<div class="jp-video-play">
<a href="javascript:;" class="jp-video-play-icon" tabindex="1">play</a>
</div>
<div class="jp-interface">
<div class="jp-progress">
<div class="jp-seek-bar">
<div class="jp-play-bar"></div>
</div>
</div>
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<div class="jp-controls-holder">
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a>
</li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max
volume</a></li>
</ul>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<ul class="jp-toggles">
<li><a href="javascript:;" class="jp-full-screen" tabindex="1" title="full screen">full
screen</a></li>
<li>
<a href="javascript:;" class="jp-restore-screen" tabindex="1" title="restore screen">restore
screen</a></li>
<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a>
</li>
<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat
off</a></li>
</ul>
</div>
<div class="jp-title" style="display:none;">
<ul>
<li></li>
</ul>
</div>
</div>
</div>
<div class="jp-no-solution">
<span>Update Required</span>
To play the media you will need to either update your browser to a recent version or update your
<a href="http://get.adobe.com/flashplayer/" class="_blank">Flash plugin</a>.
</div>
</div>
</div>
<?php
if (in_array(strtolower($info['extension']), $ext_music)) {
?>
<script type="text/javascript">
$(document).ready(function () {
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "<?php Tools::safeOutput($_GET['title']);
?>",
mp3: "<?php echo Tools::safeOutput($preview_file);
?>",
m4a: "<?php echo Tools::safeOutput($preview_file);
?>",
oga: "<?php echo Tools::safeOutput($preview_file);
?>",
wav: "<?php echo Tools::safeOutput($preview_file);
?>"
});
},
swfPath: "js",
solution: "html,flash",
supplied: "mp3, m4a, midi, mid, oga,webma, ogg, wav",
smoothPlayBar: true,
keyEnabled: false
});
});
</script>
<?php
} elseif (in_array(strtolower($info['extension']), $ext_video)) {
?>
<script type="text/javascript">
$(document).ready(function () {
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
title: "<?php Tools::safeOutput($_GET['title']);
?>",
m4v: "<?php echo Tools::safeOutput($preview_file);
?>",
ogv: "<?php echo Tools::safeOutput($preview_file);
?>"
});
},
swfPath: "js",
solution: "html,flash",
supplied: "mp4, m4v, ogv, flv, webmv, webm",
smoothPlayBar: true,
keyEnabled: false
});
});
</script>
<?php
}
break;
}
} else {
die('no action passed');
}
?>
@@ -0,0 +1,173 @@
<?php
session_start();
if (!defined('_PS_ADMIN_DIR_')) {
define('_PS_ADMIN_DIR_', dirname(__FILE__).'/../../');
}
require_once(_PS_ADMIN_DIR_.'/../config/config.inc.php');
require_once(_PS_ADMIN_DIR_.'/init.php');
if (function_exists('mb_internal_encoding')) {
mb_internal_encoding('UTF-8');
}
$products_accesses = Profile::getProfileAccess(Context::getContext()->employee->id_profile, Tab::getIdFromClassName('AdminProducts'));
$cms_accesses = Profile::getProfileAccess(Context::getContext()->employee->id_profile, Tab::getIdFromClassName('AdminCmsContent'));
if (!$products_accesses['edit'] && !$cms_accesses['edit']) {
die(Tools::displayError());
}
//------------------------------------------------------------------------------
// DON'T COPY THIS VARIABLES IN FOLDERS config.php FILES
//------------------------------------------------------------------------------
//**********************
//Path configuration
//**********************
// In this configuration the folder tree is
// root
// |- source <- upload folder
// |- thumbs <- thumbnail folder [must have write permission (755)]
// |- filemanager
// |- js
// | |- tinymce
// | | |- plugins
// | | | |- responsivefilemanager
// | | | | |- plugin.min.js
$base_url = Tools::getHttpHost(true); // DON'T TOUCH (base url (only domain) of site (without final /)).
$base_url = Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE') ? $base_url : str_replace('https', 'http', $base_url);
$upload_dir = Context::getContext()->shop->getBaseURI().'img/cms/'; // path from base_url to base of upload folder (with start and final /)
$current_path = _PS_ROOT_DIR_.'/img/cms/'; // relative path from filemanager folder to upload folder (with final /)
//thumbs folder can't put inside upload folder
$thumbs_base_path = _PS_ROOT_DIR_.'/img/tmp/cms/'; // relative path from filemanager folder to thumbs folder (with final /)
//--------------------------------------------------------------------------------------------------------
// YOU CAN COPY AND CHANGE THESE VARIABLES INTO FOLDERS config.php FILES TO CUSTOMIZE EACH FOLDER OPTIONS
//--------------------------------------------------------------------------------------------------------
$MaxSizeUpload=100; //Mb
$default_language="en"; //default language file name
$icon_theme="ico"; //ico or ico_dark you can cusatomize just putting a folder inside filemanager/img
$show_folder_size=true; //Show or not show folder size in list view feature in filemanager (is possible, if there is a large folder, to greatly increase the calculations)
$show_sorting_bar=true; //Show or not show sorting feature in filemanager
$loading_bar=true; //Show or not show loading bar
$transliteration=false; //active or deactive the transliteration (mean convert all strange characters in A..Za..z0..9 characters)
//*******************************************
//Images limit and resizing configuration
//*******************************************
// set maximum pixel width and/or maximum pixel height for all images
// If you set a maximum width or height, oversized images are converted to those limits. Images smaller than the limit(s) are unaffected
// if you don't need a limit set both to 0
$image_max_width=0;
$image_max_height=0;
//Automatic resizing //
// If you set $image_resizing to true the script converts all uploaded images exactly to image_resizing_width x image_resizing_height dimension
// If you set width or height to 0 the script automatically calculates the other dimension
// Is possible that if you upload very big images the script not work to overcome this increase the php configuration of memory and time limit
$image_resizing=false;
$image_resizing_width=0;
$image_resizing_height=0;
//******************
// Default layout setting
//
// 0 => boxes
// 1 => detailed list (1 column)
// 2 => columns list (multiple columns depending on the width of the page)
// YOU CAN ALSO PASS THIS PARAMETERS USING SESSION VAR => $_SESSION["VIEW"]=
//
//******************
$default_view=0;
//set if the filename is truncated when overflow first row
$ellipsis_title_after_first_row=true;
//*************************
//Permissions configuration
//******************
$delete_files=true;
$create_folders=true;
$delete_folders=true;
$upload_files=true;
$rename_files=true;
$rename_folders=true;
$duplicate_files=true;
//**********************
//Allowed extensions (lowercase insert)
//**********************
$ext_img = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg'); //Images
$ext_file = array('pdf'); //array('doc', 'docx','rtf', 'pdf', 'xls', 'xlsx', 'txt', 'csv','html','xhtml','psd','sql','log','fla','xml','ade','adp','mdb','accdb','ppt','pptx','odt','ots','ott','odb','odg','otp','otg','odf','ods','odp','css','ai'); //Files
$ext_video = array('mov', 'mpeg', 'mp4', 'avi', 'mpg', 'wma', 'flv', 'webm'); //Video
$ext_music = array();//array('mp3', 'm4a', 'ac3', 'aiff', 'mid','ogg','wav'); //Audio
$ext_misc = array();// array('zip', 'rar','gz','tar','iso','dmg'); //Archives
$ext=array_merge($ext_img, $ext_file, $ext_misc, $ext_video, $ext_music); //allowed extensions
/******************
* AVIARY config
*******************/
$aviary_active=false;
$aviary_key="dvh8qudbp6yx2bnp";
$aviary_secret="m6xaym5q42rpw433";
$aviary_version=3;
$aviary_language='en';
//The filter and sorter are managed through both javascript and php scripts because if you have a lot of
//file in a folder the javascript script can't sort all or filter all, so the filemanager switch to php script.
//The plugin automatic swich javascript to php when the current folder exceeds the below limit of files number
$file_number_limit_js=500;
//**********************
// Hidden files and folders
//**********************
// set the names of any folders you want hidden (eg "hidden_folder1", "hidden_folder2" ) Remember all folders with these names will be hidden (you can set any exceptions in config.php files on folders)
$hidden_folders = array();
// set the names of any files you want hidden. Remember these names will be hidden in all folders (eg "this_document.pdf", "that_image.jpg" )
$hidden_files = array('config.php');
/*******************
* JAVA upload
*******************/
$java_upload=false;
$JAVAMaxSizeUpload=200; //Gb
//************************************
//Thumbnail for external use creation
//************************************
// New image resized creation with fixed path from filemanager folder after uploading (thumbnails in fixed mode)
// If you want create images resized out of upload folder for use with external script you can choose this method,
// You can create also more than one image at a time just simply add a value in the array
// Remember than the image creation respect the folder hierarchy so if you are inside source/test/test1/ the new image will create at
// path_from_filemanager/test/test1/
// PS if there isn't write permission in your destination folder you must set it
$fixed_image_creation = false; //activate or not the creation of one or more image resized with fixed path from filemanager folder
$fixed_path_from_filemanager = array('../test/','../test1/'); //fixed path of the image folder from the current position on upload folder
$fixed_image_creation_name_to_prepend = array('','test_'); //name to prepend on filename
$fixed_image_creation_to_append = array('_test',''); //name to appendon filename
$fixed_image_creation_width = array(300,400); //width of image (you can leave empty if you set height)
$fixed_image_creation_height = array(200,''); //height of image (you can leave empty if you set width)
// New image resized creation with relative path inside to upload folder after uploading (thumbnails in relative mode)
// With Responsive filemanager you can create automatically resized image inside the upload folder, also more than one at a time
// just simply add a value in the array
// The image creation path is always relative so if i'm inside source/test/test1 and I upload an image, the path start from here
$relative_image_creation = false; //activate or not the creation of one or more image resized with relative path from upload folder
$relative_path_from_current_pos = array('thumb/','thumb/'); //relative path of the image folder from the current position on upload folder
$relative_image_creation_name_to_prepend= array('','test_'); //name to prepend on filename
$relative_image_creation_name_to_append = array('_test',''); //name to append on filename
$relative_image_creation_width = array(300,400); //width of image (you can leave empty if you set height)
$relative_image_creation_height = array(200,''); //height of image (you can leave empty if you set width)
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2016 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 <contact@prestashop.com>
* @copyright 2007-2016 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;
@@ -0,0 +1,6 @@
/*!
* bootstrap-lightbox.css v0.6.0
* Copyright 2013 Jason Butz
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
.lightbox{position:relative;top:70px;z-index:1050;line-height:0;text-align:center;background-color:transparent;outline:0}.lightbox .hide{display:none}.lightbox .in{display:block}.lightbox-content{display:inline-block;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.lightbox-content .lightbox-caption{position:absolute;right:12px;bottom:11px;left:11px;padding:2%;font-size:14px;line-height:18px;color:white;text-align:center;text-shadow:0 -1px 0 #000;text-shadow:0 -1px 0 rgba(0,0,0,0.3);background:#000;background:rgba(0,0,0,0.6)}.lightbox-header .close{margin-top:-16px;margin-right:-16px;font-size:2em;color:white;opacity:.8;filter:alpha(opacity=80)}.lightbox-header .close :hover{opacity:.4;filter:alpha(opacity=40)}
@@ -0,0 +1,8 @@
/*!
* Bootstrap Modal
*
* Copyright Jordan Schroter
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/.modal-open{overflow:hidden}.modal-open.page-overflow .page-container,.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom,.modal-open.page-overflow .modal-scrollable{overflow-y:scroll}@media (max-width:840px){.modal-open.page-overflow .page-container .navbar-fixed-top,.modal-open.page-overflow .page-container .navbar-fixed-bottom{overflow-y:visible}}.modal-scrollable{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.modal{outline:0;position:absolute;margin-top:0;top:50%;overflow:visible}.modal.fade{top:-100%;-webkit-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out}.modal.fade.in{top:50%}.modal-body{max-height:none;overflow:visible}.modal.modal-absolute{position:absolute;z-index:950}.modal .loading-mask{position:absolute;top:0;bottom:0;left:0;right:0;background:#fff;border-radius:6px}.modal-backdrop.modal-absolute{position:absolute;z-index:940}.modal-backdrop,.modal-backdrop.fade.in{opacity:.85;filter:alpha(opacity=85);background:#eee}.modal.container{width:940px;margin-left:-470px}.modal-overflow.modal{top:1%}.modal-overflow.modal.fade{top:-100%}.modal-overflow.modal.fade.in{top:1%}.modal-overflow .modal-body{overflow:auto;-webkit-overflow-scrolling:touch}@media (min-width:1200px){.modal.container{width:1170px;margin-left:-585px}}@media (max-width:840px){.modal,.modal.container,.modal.modal-overflow{top:1%;right:1%;left:1%;bottom:auto;width:auto!important;height:auto!important;margin:0!important;padding:0!important}.modal.fade.in,.modal.container.fade.in,.modal.modal-overflow.fade.in{top:1%;bottom:auto}.modal-body,.modal-overflow .modal-body{position:static;margin:0;height:auto!important;max-height:none!important;overflow:visible!important}.modal-footer,.modal-overflow .modal-footer{position:static}}.loading-spinner{position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px}.animated{-webkit-animation-duration:1s;-moz-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@-moz-keyframes shake{0%,100%{-moz-transform:translateX(0)}10%,30%,50%,70%,90%{-moz-transform:translateX(-10px)}20%,40%,60%,80%{-moz-transform:translateX(10px)}}@-o-keyframes shake{0%,100%{-o-transform:translateX(0)}10%,30%,50%,70%,90%{-o-transform:translateX(-10px)}20%,40%,60%,80%{-o-transform:translateX(10px)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.shake{-webkit-animation-name:shake;-moz-animation-name:shake;-o-animation-name:shake;animation-name:shake}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,410 @@
/* The MIT License */
.dropzone,
.dropzone *,
.dropzone-previews,
.dropzone-previews * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.dropzone {
position: relative;
border: 1px solid rgba(0,0,0,0.08);
background: rgba(0,0,0,0.02);
padding: 1em;
}
.dropzone.dz-clickable {
cursor: pointer;
}
.dropzone.dz-clickable .dz-message,
.dropzone.dz-clickable .dz-message span {
cursor: pointer;
}
.dropzone.dz-clickable * {
cursor: default;
}
.dropzone .dz-message {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone.dz-drag-hover {
border-color: rgba(0,0,0,0.15);
background: rgba(0,0,0,0.04);
}
.dropzone.dz-started .dz-message {
display: none;
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
background: rgba(255,255,255,0.8);
position: relative;
display: inline-block;
margin: 17px;
vertical-align: top;
border: 1px solid #acacac;
padding: 6px 6px 6px 6px;
}
.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail],
.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] {
display: none;
}
.dropzone .dz-preview .dz-details,
.dropzone-previews .dz-preview .dz-details {
width: 100px;
height: 100px;
position: relative;
background: #ebebeb;
padding: 5px;
margin-bottom: 22px;
}
.dropzone .dz-preview .dz-details .dz-filename,
.dropzone-previews .dz-preview .dz-details .dz-filename {
overflow: hidden;
height: 100%;
}
.dropzone .dz-preview .dz-details img,
.dropzone-previews .dz-preview .dz-details img {
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
}
.dropzone .dz-preview .dz-details .dz-size,
.dropzone-previews .dz-preview .dz-details .dz-size {
position: absolute;
bottom: -28px;
left: 3px;
height: 28px;
line-height: 28px;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
display: block;
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
display: block;
}
.dropzone .dz-preview:hover .dz-details img,
.dropzone-previews .dz-preview:hover .dz-details img {
display: none;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark,
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
display: none;
position: absolute;
width: 40px;
height: 40px;
font-size: 30px;
text-align: center;
right: -10px;
top: -10px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
color: #8cc657;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
color: #ee162d;
}
.dropzone .dz-preview .dz-progress,
.dropzone-previews .dz-preview .dz-progress {
position: absolute;
top: 100px;
left: 6px;
right: 6px;
height: 6px;
background: #d7d7d7;
display: none;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 0%;
background-color: #8cc657;
}
.dropzone .dz-preview.dz-processing .dz-progress,
.dropzone-previews .dz-preview.dz-processing .dz-progress {
display: block;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
display: none;
position: absolute;
top: -5px;
left: -20px;
background: rgba(245,245,245,0.8);
padding: 8px 10px;
color: #800;
min-width: 140px;
max-width: 500px;
z-index: 500;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
display: block;
}
.dropzone {
border: 1px solid rgba(0,0,0,0.03);
min-height: 360px;
-webkit-border-radius: 3px;
border-radius: 3px;
background: rgba(0,0,0,0.03);
padding: 23px;
}
.dropzone .dz-default.dz-message {
opacity: 1;
-ms-filter: none;
filter: none;
-webkit-transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
-ms-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
background-image: url("../img/spritemap.png");
background-repeat: no-repeat;
background-position: 0 0;
position: absolute;
width: 428px;
height: 123px;
margin-left: -214px;
margin-top: -61.5px;
top: 50%;
left: 50%;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-default.dz-message {
background-image: url("../img/spritemap@2x.png");
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-default.dz-message span {
display: none;
}
.dropzone.dz-square .dz-default.dz-message {
background-position: 0 -123px;
width: 268px;
margin-left: -134px;
height: 174px;
margin-top: -87px;
}
.dropzone.dz-drag-hover .dz-message {
opacity: 0.15;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)";
filter: alpha(opacity=15);
}
.dropzone.dz-started .dz-message {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
.dropzone .dz-preview,
.dropzone-previews .dz-preview {
-webkit-box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
box-shadow: 1px 1px 4px rgba(0,0,0,0.16);
font-size: 14px;
}
.dropzone .dz-preview.dz-image-preview:hover .dz-details img,
.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img {
display: block;
opacity: 0.1;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
filter: alpha(opacity=10);
}
.dropzone .dz-preview.dz-success .dz-success-mark,
.dropzone-previews .dz-preview.dz-success .dz-success-mark {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone .dz-preview.dz-error .dz-error-mark,
.dropzone-previews .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone .dz-preview.dz-error .dz-progress .dz-upload,
.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload {
background: #ee1e2d;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.4s ease-in-out;
-moz-transition: opacity 0.4s ease-in-out;
-o-transition: opacity 0.4s ease-in-out;
-ms-transition: opacity 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out;
background-image: url("../img/spritemap.png");
background-repeat: no-repeat;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark,
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
background-image: url("../img/spritemap@2x.png");
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-preview .dz-error-mark span,
.dropzone-previews .dz-preview .dz-error-mark span,
.dropzone .dz-preview .dz-success-mark span,
.dropzone-previews .dz-preview .dz-success-mark span {
display: none;
}
.dropzone .dz-preview .dz-error-mark,
.dropzone-previews .dz-preview .dz-error-mark {
background-position: -268px -123px;
}
.dropzone .dz-preview .dz-success-mark,
.dropzone-previews .dz-preview .dz-success-mark {
background-position: -268px -163px;
}
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
-webkit-animation: loading 0.4s linear infinite;
-moz-animation: loading 0.4s linear infinite;
-o-animation: loading 0.4s linear infinite;
-ms-animation: loading 0.4s linear infinite;
animation: loading 0.4s linear infinite;
-webkit-transition: width 0.3s ease-in-out;
-moz-transition: width 0.3s ease-in-out;
-o-transition: width 0.3s ease-in-out;
-ms-transition: width 0.3s ease-in-out;
transition: width 0.3s ease-in-out;
-webkit-border-radius: 2px;
border-radius: 2px;
position: absolute;
top: 0;
left: 0;
width: 0%;
height: 100%;
background-image: url("../img/spritemap.png");
background-repeat: repeat-x;
background-position: 0px -400px;
}
@media all and (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:1.5/1),(min-device-pixel-ratio:1.5),(min-resolution:138dpi),(min-resolution:1.5dppx) {
.dropzone .dz-preview .dz-progress .dz-upload,
.dropzone-previews .dz-preview .dz-progress .dz-upload {
background-image: url("../img/spritemap@2x.png");
-webkit-background-size: 428px 406px;
-moz-background-size: 428px 406px;
background-size: 428px 406px;
}
}
.dropzone .dz-preview.dz-success .dz-progress,
.dropzone-previews .dz-preview.dz-success .dz-progress {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.4s ease-in-out;
-moz-transition: opacity 0.4s ease-in-out;
-o-transition: opacity 0.4s ease-in-out;
-ms-transition: opacity 0.4s ease-in-out;
transition: opacity 0.4s ease-in-out;
}
.dropzone .dz-preview .dz-error-message,
.dropzone-previews .dz-preview .dz-error-message {
display: block;
opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
-webkit-transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
-ms-transition: opacity 0.3s ease-in-out;
transition: opacity 0.3s ease-in-out;
}
.dropzone .dz-preview:hover.dz-error .dz-error-message,
.dropzone-previews .dz-preview:hover.dz-error .dz-error-message {
opacity: 1;
-ms-filter: none;
filter: none;
}
.dropzone a.dz-remove,
.dropzone-previews a.dz-remove {
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fafafa), color-stop(1, #eee));
background-image: -webkit-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -moz-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -o-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: -ms-linear-gradient(top, #fafafa 0, #eee 100%);
background-image: linear-gradient(top, #fafafa 0, #eee 100%);
-webkit-border-radius: 2px;
border-radius: 2px;
border: 1px solid #eee;
text-decoration: none;
display: block;
padding: 4px 5px;
text-align: center;
color: #aaa;
margin-top: 26px;
}
.dropzone a.dz-remove:hover,
.dropzone-previews a.dz-remove:hover {
color: #666;
}
@-moz-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-webkit-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-o-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@-ms-keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
@keyframes loading {
0% {
background-position: 0 -400px;
}
100% {
background-position: -7px -400px;
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,35 @@
<?php
/*
* 2007-2016 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 <contact@prestashop.com>
* @copyright 2007-2016 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;
@@ -0,0 +1,37 @@
.context-menu-list{font-family:'Open Sans', sans-serif;width:200px;display:inline-block;position:absolute;list-style-type:none;border:1px solid #DDD;background:#fff;font-size:12px;margin:0;padding:5px}
.context-menu-item{background-color:#fff;position:relative;height:auto;word-wrap:break-word;-webkit-user-select:none;-moz-user-select:0;-ms-user-select:none;user-select:none;padding:5px 5px 5px 30px}
.context-menu-item:last-child{border:none}
.context-menu-separator{padding-bottom:0;border-bottom:1px solid #DDD}
.context-menu-item > label > input,.context-menu-item > label > textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}
.context-menu-item.hover{cursor:pointer;background-color:#DDD}
.context-menu-item.disabled{color:#666}
.context-menu-input.hover,.context-menu-item.disabled.hover{cursor:default;background-color:#EEE}
.context-menu-submenu:after{content:">";color:#666;position:absolute;top:0;right:3px;z-index:1}
.context-menu-item.icon{min-height:18px;vertical-align:middle;background-repeat:no-repeat;background-position:4px 5px;width:auto;display:list-item}
.context-menu-item.icon-edit{background-image:url(../img/page_white_edit.png)}
.context-menu-item.icon-cut{background-image:url(../img/cut.png)}
.context-menu-item.icon-copy{background-image:url(../img/page_white_copy.png)}
.context-menu-item.icon-rename{background-image:url(../img/rename.png)}
.context-menu-item.icon-preview{background-image:url(../img/preview.png)}
.context-menu-item.icon-dimension{background-image:url(../img/dimension.png)}
.context-menu-item.icon-date{background-image:url(../img/date.png)}
.context-menu-item.icon-label{background-image:url(../img/label.png)}
.context-menu-item.icon-size{background-image:url(../img/size.png)}
.context-menu-item.icon-download{background-image:url(../img/download.png)}
.context-menu-item.icon-paste{background-image:url(../img/page_white_paste.png)}
.context-menu-item.icon-delete{background-image:url(../img/page_white_delete.png)}
.context-menu-item.icon-add{background-image:url(../img/page_white_add.png)}
.context-menu-item.icon-quit{background-image:url(../img/door.png)}
.context-menu-item.icon-info{background-image:url(../img/info.png)}
.context-menu-item.icon-extract{background-image:url(../img/zip.png)}
.context-menu-item.icon-url{background-image:url(../img/url.png)}
.context-menu-item.icon-edit_img{background-image:url(../img/edit_img.png)}
.context-menu-item.icon-duplicate{background-image:url(../img/duplicate.png)}
.context-menu-input > label > *{vertical-align:top}
.context-menu-input > label > input[type=checkbox],.context-menu-input > label > input[type=radio]{margin-left:-17px}
.context-menu-input > label > span{margin-left:5px}
.context-menu-input > label,.context-menu-input > label > input[type=text],.context-menu-input > label > textarea,.context-menu-input > label > select{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}
.context-menu-input > label > textarea{height:100px}
.context-menu-item > .context-menu-list{display:none;right:-5px;top:5px}
.context-menu-item.hover > .context-menu-list{display:block}
.context-menu-accesskey{text-decoration:underline}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,895 @@
*, *:after, *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
body, html {
font-family: 'Open Sans', sans-serif;
font-size: 100%; padding: 0; margin: 0;}
body{
padding-top: 32px;
font-weight:200;
background:#ececec;
overflow: -moz-scrollbars-vertical;
}
#qLpercentage{
font-family: 'Open Sans', sans-serif;
font-size: 40px;
line-height: 40px;
color:#bbbbbb;
font-weight: 200;
height: 60px;
-webkit-border-radius: 10px;
border-radius: 10px;
padding: 10px;
text-shadow: 1px 1px 2px #ffffff;
filter: dropshadow(color=#ffffff, offx=1, offy=1);
}
#qLbar{
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzdhN2E3YSIgc3RvcC1vcGFjaXR5PSIwLjQiLz4KICAgIDxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzdhN2E3YSIgc3RvcC1vcGFjaXR5PSIwLjQiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==);
background: -moz-linear-gradient(top, rgba(122,122,122,0.4) 0%, rgba(122,122,122,0.4) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(122,122,122,0.4)), color-stop(100%,rgba(122,122,122,0.4))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(122,122,122,0.4) 0%,rgba(122,122,122,0.4) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#667a7a7a', endColorstr='#667a7a7a',GradientType=0 ); /* IE6-8 */
z-index:200;
margin:0px;
overflow: hidden;
}
.btn{
-webkit-border-radius: 0px;
border-radius: 0px;
}
.container-fluid{padding-right:0 !important;margin-top:10px !important;}
.img-precontainer{
margin: auto;
width: 100%;
text-align: center;
background: white;
border:none;
}
.img-container{
height: 91px;
width: 122px;
padding: 0px;
border:none;
overflow: hidden;
display: table-cell;
text-align: center;
vertical-align: middle;
margin: auto;
}
ul.breadcrumb{
margin-bottom:5px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 4px;
padding-top: 6px;
background: #f0f0f0;
-webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
box-shadow: 0 1px 4px rgba(0,0,0,0.065);
border-bottom: 1px solid #bbbbbb;
.pull-left i{ margin-top:2px;}
}
.alert {
padding: 8px 35px 8px 14px;
margin-bottom:2px;
border: 1px solid #aaaaaa;
color:#666666;
font-weight: 200;
font-size: 13px;
-webkit-border-radius: 0px;
border-radius: 0px;
background: white;
}
.img-container * ,.img-container-mini * {
vertical-align: middle;
}
#help{
display: none;
}
/*\*//*/
.img-container,.img-container-mini {
display: block;
}
.img-container span, .img-container-mini span {
display: inline-block;
height: 100%;
width: 1px;
}
/**/
iframe{
overflow: auto;
-webkit-overflow-scrolling:touch;
}
.upload-tabbable{
margin-left: 5px;
margin-right: 5px;
.upload-help{
font-size: 11px;
font-weight: 200;
color: #777;
text-shadow: 0 1px 0 #fff;
text-align: center;
}
.nav{
margin:0px;
li a{
font-size: 13px;
font-weight: 200;
color: #777;
text-shadow: 0 1px 0 #fff;
}
}
.tab-content{
padding: 5px;
border-bottom: 1px solid #dddddd;
border-left: 1px solid #dddddd;
border-rigth: 1px solid #dddddd;
background: white;
margin-bottom: 5px;
}
}
input#filter-input{
margin:0px;
width: 84px;
height: 26px;
vertical-align: bottom;
margin-bottom: 2px;
-webkit-border-radius: 0;
border-radius: 0;
font-size: 12px;
font-weight:200;
position:relative;
left:1px;
}
.qq-uploader .span9{margin-left:14px !important;width:690px !important;}
.space10{ clear:both; height:10px; }
h4{ font-size:12px; font-weight:200; margin: 0px; text-align: center; padding: 0px; margin-top:6px; line-height: 18px; }
h3{ font-size:14px; font-weight:200;}
.boxes{ border:1px solid #CCCCCC; word-wrap: break-word; background:white;
-webkit-box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, 0.2);box-shadow: 1px 1px 2px 0px rgba(0, 0, 0, 0.2); min-height:115px;
text-align: center;}
.container-fluid{ padding:0px 10px !important;}
body .avpw .avpw_primary_button,
body .avpw .avpw_primary_button:link,
body .avpw .avpw_primary_button:visited,
body .avpw .avpw_primary_button:active {
background-color: #999999;
color: #ffffff;
background-image:none;
border:none;
}
body .avpw .avpw_primary_button:hover{
border:none;
background-color: #666666;
}
.uploader{
position:fixed;
top:50px;
left:14px;
margin:auto;
width:100%;
z-index:9999;
overflow: hidden;
background:#eeeeee;
padding-top:20px;
border:1px solid #cccccc;
display:none;
-webkit-box-shadow: 0px 0px 10px 0px rgba(1, 1, 1, 0.5);
box-shadow: 0px 0px 10px 0px rgba(1, 1, 1, 0.5);
}
.download-form{
margin-bottom:25px;
}
.grid li i{
margin-left:2px;
margin-right: 2px;
z-index:0;
}
.box,.boxx{
text-align: center;
word-wrap: break-word;
vertical-align: top;
text-align: left;
position: relative;
border: none;
box-shadow: none;
z-index: 100;
padding: 4px;
}
.box .btn{
width: 100%;
background: none;
box-shadow: none;
border:none;
z-index: 200;
}
.navbar{
margin-bottom: 0px;
border-bottom: 1px solid #bbbbbb;
.navbar-inner{
border: none;
min-height: 35px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 2px;
margin: 0px;
padding-right: 8px;
padding-left: 8px;
.container-fluid{
margin: 0px;
margin-top: 0px !important;
padding: 0px;
.brand{
display: none;
}
.filters span{
margin-top:0px;
font-size:13px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff; }
}
}
}
ul.sorting{
position: absolute;
left: -25px;
top:20px;
min-width: 0px;
background: #eeeeee;
li a:hover{
background: #aaaaaa;
}
}
.btn-group .dropdown-toggle.sorting-btn{
background: none;
border: none;
box-shadow: none;
position: relative;
-webkit-box-shadow:none;
top:-5px;
font-size: 13px;
}
.btn-group .dropdown-toggle.sorting-btn:hover{
background: none;
border: none;
box-shadow: none;
-webkit-box-shadow:none;
}
ul.sorting.dropdown-menu>li>a{
font-size: 12px;
text-shadow: none;
&.ascending{
background-image: url(../img/down.png);
background-repeat: no-repeat;
background-position: 6px 8px;
}
&.descending{
background-image: url(../img/up.png);
background-repeat: no-repeat;
background-position: 6px 8px;
}
}
.sorter-container{
a.sorter{
color:black;
}
a.ascending{
padding-left:9px;
background-image: url(../img/down.png);
background-repeat: no-repeat;
background-position: 0px 3px;
}
a.descending{
padding-left:9px;
background-image: url(../img/up.png);
background-repeat: no-repeat;
background-position: 0px 4px;
}
margin-top:5px;
margin-bottom:0px;
-webkit-border-radius: 0px;
border-radius: 0px;
padding-bottom: 4px;
padding-top: 6px;
-webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
box-shadow: 0 1px 4px rgba(0,0,0,0.065);
background-color: #f5f5f5;
position: relative;
border-bottom: 1px solid #bbbbbb;
height: 24px;
.img-dimension,.file-date,.file-size,.file-extension,.file-name,.file-operations{
display: block;position: absolute;
top: 0px;
z-index: 100;
-webkit-box-shadow: none;
box-shadow: none;
text-align: left;
font-size: 13px;
margin-top: 1px;
color:#999999;
}
.file-operations{
width: 110px;
right:0px;
}
.img-dimension{
width: 65px;
right: 123px;
}
.file-date{
width: 70px;
right: 188px;
}
.file-size{
width: 55px;
right: 258px;
}
.file-extension{
width: 40px;
right: 313px;
}
.file-name{
width: 50px;
left: 52px;
}
}
.img-dimension,.file-date,.file-size,.file-extension,.file-name,.file-operations{
font-size:12px;
font-weight:200;
color:#777;text-shadow:0 1px 0 #fff;
display: none;
}
.view-controller{
text-align: left;
.btn-group>.btn:first-child,.btn-group>.btn:last-child{
-webkit-border-radius: 0px;
border-radius: 0px;
}
}
.navbar .filters .btn {
margin-bottom: 2px;
padding-top:2px;
padding-bottom:2px;
padding-left: 8px;
padding-right: 8px;
margin-top:5px;
}
.filters .types{
text-align: right;
}
@media(max-width:780px){
#view2{
display: none;
}
}
@media(max-width:839px){
body{
padding-top: 0px;
}
.filters .types{
text-align: left;
}
.navbar .navbar-inner .container-fluid .brand{
display: block;
}
.navbar .navbar-inner{
padding-bottom: 4px;
}
.container-fluid{
margin:0px !important;
padding: 0px;
}
#qLbar{
height:50px !important;
}
}
@media(min-width:400px) and (max-width:839px){
.filters .row-fluid .half{
width:48.61878453038674%;*width:48.56559304102504%; float:left;
}
}
.tooltip.in{
z-index: 10000;
opacity:1;
filter:alpha(opacity=1);
font-weight: bold;
}
.tooltip{
font-weight: bold;
z-index: 10000;
}
/* GRID */
.grid {
padding: 0px 0px;
margin: 0 auto;
list-style: none;
-webkit-overflow-scrolling: touch;
}
.grid li {
display: inline-block;
width: 124px;
border:none;
margin: 4px;
margin-bottom:8px;
padding: 0px;
vertical-align: top;
}
.grid figure {
margin: 0;
position: relative;
display: block;
width: 122px;
margin: auto;
&:hover{ background: #e0e0e0 !important;}
}
.list-view1.grid li{
width:100%;
figure{
width:100%;
}
}
.grid figcaption {
text-align: center;
padding: 2px;
padding-top: 8px;
color: white;
height: 30px;
width: 122px;
margin-left:0px;
margin-right: 0px;
position: absolute;
top: auto;
bottom: 0;
-webkit-box-shadow: inset 0px 0px 8px 0px rgba(41, 41, 41, 0.5);
box-shadow: inset 0px 0px 8px 0px rgba(41, 41, 41, 0.5);
a{
margin: 0px;
padding: 3px;
}
h3 {
margin: 0;
padding: 0;
color: #fff;
}
}
.grid h4{
text-align: center;
color: black;
padding: 0px;
margin-bottom: 4px;
margin-top: 4px;
}
/* Individual Caption Styles */
/* Caption Style 2 */
.grid figure .box {
box-sizing: content-box;
}
.list-view0.grid,.list-view1.grid,.list-view2.grid{
figure{
.box{
max-width: 100%;
display: block;
position: relative;
overflow: hidden;
z-index: 1;
h4.ellipsis{
height:18px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
h4{
z-index: 1;
a{
z-index: 1;
}
}
}
}
.selected{
-webkit-box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.2);
}
}
.no-touch .list-view0 figure .box{
z-index: 1;
-webkit-transition: -webkit-transform 0.3s;
-moz-transition: -moz-transform 0.3s;
transition: transform 0.3s;
}
.no-touch .list-view0 figure:hover .box,
.no-touch .list-view0 figure.cs-hover .box {
-webkit-box-shadow: 0px 0px 4px 0px rgba(1, 1, 1, 0.5);
box-shadow: 0px 0px 4px 0px rgba(1, 1, 1, 0.5);
-webkit-transform: translateY(-26px);
-moz-transform: translateY(-26px);
-ms-transform: translateY(-26px);
transform: translateY(-26px);
}
.list-view0 figure:hover .box.no-effect,
.list-view0 figure.cs-hover .box.no-effect,.no-effect{
-webkit-box-shadow: none;
box-shadow: none;
-webkit-transform: none;
-moz-transform: none;
-ms-transform: none;
transform: none;
}
.list-view0 .img-precontainer-mini{
display: none;
background: none;
}
a,a:hover{
color:black;
text-decoration: none;
}
.back-directory{
.img-precontainer,.img-precontainer-mini,.box{
background: none;
}
}
form{
margin:0px;
padding: 0px;
}
.modal-body{
form,input{
margin:0px;
}
}
.modal-header h3{
font-weight: 300;
font-size: 20px;
}
/* LIST VIEW */
.list-view1.sorter-container{
display: block;
}
.list-view0.sorter-container, .list-view2.sorter-container{
display: none;
}
.list-view0.grid{
.img-precontainer{
.img-container{
img{
max-width:122px !important;
max-height:91px !important;
}
img.icon{
width: 122px;
margin-top:0px;
}
}
.filetype{
position:absolute;
top:0px;
width:120px;
text-align:center;
color:white;
font-size: 13px;
line-height: 22px;
}
}
.cover{
/* IE9 SVG, needs conditional override of 'filter' to 'none' */
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjI1Ii8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMC4yNSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.25) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.25)), color-stop(100%,rgba(255,255,255,0.25))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(255,255,255,0.25) 0%,rgba(255,255,255,0.25) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40ffffff', endColorstr='#40ffffff',GradientType=0 ); /* IE6-8 */
width: 122px;
position:absolute;
top:22px;
right:0px;
height: 69px;
}
.box{
background: white;
}
.directory{
background: #dddddd;
}
figure.back-directory{
.directory{
background: #bbbbbb;
}
}
figcaption{
background:#ffffff;
}
}
.list-view1.grid , .list-view2.grid {
li{
margin: 0px;
&.back{
figure.back-directory{
height: 34px;
}
}
}
li:nth-child(odd) figure {background: #f9f9f9; }
li:nth-child(odd) figure.directory {background: #eaeaea; }
li figure{
border-bottom: 1px solid #cccccc;
background: white;
&.back-directory{
background: #bbbbbb;
.box{
background: none;
}
}
&.directory{
background: #efefef;
box{
padding: 0px;
min-height: 10px;
}
}
.box{
h4{
padding-top:1px;
font-size: 13px;
text-align: left;
}
margin-left: 50px;
-webkit-transition: none;
-moz-transition: none;
transition: none;
}
}
.img-precontainer-mini{
display: block;
position: absolute;
width: 45px;
height: 34px;
overflow: hidden;
text-align: center;
img{
height: 34px;
}
.filetype{
position:absolute;
top:5px;
text-align: center;
left:5px;
padding:1px 2px;
font-size: 13px;
line-height: 22px;
width:34px;
height: 24px;
color:white;
background: #333333;
}
}
.cover{
display: none;
}
.img-container-mini{
width: 45px;
height: 34px;
border:none;
overflow: hidden;
display: table-cell;
text-align: center;
vertical-align: middle;
margin: auto;
}
.img-precontainer-mini.original-thumb{
padding: 0px;
img{
width: auto;
margin: 0px;
height: 34px;
}
img.original{
width: auto;
width: auto;
height: auto;
}
}
.img-precontainer{
display: none;
}
figcaption{
background:none;
width: 120px;
position: absolute;
right: 0px;
top: 0px;
z-index: 1;
bottom: 0;
-webkit-box-shadow: none;
box-shadow: none;
text-align: right;
}
.selected{
-webkit-box-shadow: 0px 0px 3px 2px rgba(0, 0, 0, 0.2);
box-shadow: 0px 0px 3px 2px rgba(0, 0, 0, 0.2);
background: red;
}
}
.list-view1.grid{
.img-dimension,.file-date,.file-size,.file-extension{
overflow: hidden;
display: block;position: absolute;
top: 0px;
z-index: 1;
-webkit-box-shadow: none;
box-shadow: none;
text-align: left;
margin-top:7px;
}
.img-dimension{
width: 65px;
right: 120px;
}
.file-date{
width: 70px;
right: 185px;
}
.file-size{
width: 55px;
right: 255px;
}
.file-extension{
width: 40px;
right: 310px;
}
figure .box{
padding-right: 352px;
}
}
.list-view2.grid{
figure{
.box{
padding-right: 115px;
}
}
}
@media(max-width:610px){
.list-view1.grid figure{
.box{
padding-right: 312px;
}
.file-extension{
display: none;
}
}
.sorter-container .file-extension{
display: none;
}
}
@media(max-width:565px){
.list-view1.grid figure{
.box{
padding-right: 257px;
}
.file-size{
display: none;
}
}
.sorter-container .file-size{
display: none;
}
}
@media(max-width:495px){
.list-view1.grid figure{
.box{
padding-right: 187px;
}
.file-date{
display: none;
}
}
.sorter-container .file-date{
display: none;
}
}
@media(max-width:430px){
.list-view1.grid figure{
.box{
padding-right: 115px;
}
.img-dimension{
display: none;
}
}
.sorter-container .img-dimension{
display: none;
}
.breadcrumb{
margin-left:0px;
margin-right:0px;
}
}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.pdf{ background:#CB0011; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.css{ background:#D10698; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ai{ background:#D6772F; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.psd{ background:#0960A4; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.html,&.xhtml{ background:#035BC4; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.fla,&.flv{ background:#CF302E; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ppt,&.pptx{ background:#DA5B00; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.xls,&.xlsx,&.css{ background:#1A712C; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.rts,&.doc,&.docx{ background:#002093; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.rar,&.zip,&.gzip{ background:#FE9221; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.mp4,&.mpeg,&.mov,&.avi,&.mpg,&.wma,&.webm{ background:#31231E; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.mp3,&.m4a,&.ac3,&.aiff,&.mid,&.ogg,&.wav{ background:#9F008B; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.odt,&.ots,&.ott,&.odb,&.odg,&.otp,&.otg,&.odf,&.ods,&.odp{ background:#367BBE; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.jpg,&.jpeg,&.png,&.bmp,&.gif,&.tiff,&.svg{ background:#CFA554; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.txt,&.sql,&.xml,&.log,&.iso,&.dmg{ background:#CACACA; }}}
.list-view2.grid,.list-view1.grid{.img-precontainer-mini .filetype{&.ade,&.adp,&.mdb,&.accdb{ background:#B61C19; }}}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,207 @@
<?php
include('config/config.php');
if ($_SESSION['verify'] != 'RESPONSIVEfilemanager') {
die('forbiden');
}
include('include/utils.php');
$_POST['path_thumb'] = $thumbs_base_path.$_POST['path_thumb'];
if (!isset($_POST['path_thumb']) && trim($_POST['path_thumb']) == '') {
die('wrong path');
}
$thumb_pos = strpos($_POST['path_thumb'], $thumbs_base_path);
if ($thumb_pos === false
|| preg_match('/\.{1,2}[\/|\\\]/', $_POST['path_thumb']) !== 0
|| preg_match('/\.{1,2}[\/|\\\]/', $_POST['path']) !== 0
) {
die('wrong path');
}
$language_file = 'lang/en.php';
if (isset($_GET['lang']) && $_GET['lang'] != 'undefined' && $_GET['lang'] != '') {
$path_parts = pathinfo($_GET['lang']);
if (is_readable('lang/'.$path_parts['basename'].'.php')) {
$language_file = 'lang/'.$path_parts['basename'].'.php';
}
}
require_once $language_file;
$base = $current_path;
if (isset($_POST['path'])) {
$path = $current_path.str_replace("\0", "", $_POST['path']);
} else {
$path = $current_path;
}
$cycle = true;
$max_cycles = 50;
$i = 0;
while ($cycle && $i < $max_cycles) {
$i++;
if ($path == $base) {
$cycle = false;
}
if (file_exists($path.'config.php')) {
require_once($path.'config.php');
$cycle = false;
}
$path = fix_dirname($path).'/';
$cycle = false;
}
$path = $current_path.str_replace("\0", "", $_POST['path']);
$path_thumb = $_POST['path_thumb'];
if (isset($_POST['name'])) {
$name = $_POST['name'];
if (preg_match('/\.{1,2}[\/|\\\]/', $name) !== 0) {
die('wrong name');
}
}
$info = pathinfo($path);
if (isset($info['extension']) && !(isset($_GET['action']) && $_GET['action'] == 'delete_folder') && !in_array(strtolower($info['extension']), $ext)) {
die('wrong extension');
}
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'delete_file':
if ($delete_files) {
unlink($path);
if (file_exists($path_thumb)) {
unlink($path_thumb);
}
$info = pathinfo($path);
if ($relative_image_creation) {
foreach ($relative_path_from_current_pos as $k => $path) {
if ($path != '' && $path[strlen($path) - 1] != '/') {
$path .= '/';
}
if (file_exists($info['dirname'].'/'.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].'.'.$info['extension'])) {
unlink($info['dirname'].'/'.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].'.'.$info['extension']);
}
}
}
if ($fixed_image_creation) {
foreach ($fixed_path_from_filemanager as $k => $path) {
if ($path != '' && $path[strlen($path) - 1] != '/') {
$path .= '/';
}
$base_dir = $path.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'])) {
unlink($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension']);
}
}
}
}
break;
case 'delete_folder':
if ($delete_folders) {
if (is_dir($path_thumb)) {
deleteDir($path_thumb);
}
if (is_dir($path)) {
deleteDir($path);
if ($fixed_image_creation) {
foreach ($fixed_path_from_filemanager as $k => $paths) {
if ($paths != '' && $paths[strlen($paths) - 1] != '/') {
$paths .= '/';
}
$base_dir = $paths.substr_replace($path, '', 0, strlen($current_path));
if (is_dir($base_dir)) {
deleteDir($base_dir);
}
}
}
}
}
break;
case 'create_folder':
if ($create_folders) {
create_folder(fix_path($path, $transliteration), fix_path($path_thumb, $transliteration));
}
break;
case 'rename_folder':
if ($rename_folders) {
$name = fix_filename($name, $transliteration);
$name = str_replace('.', '', $name);
if (!empty($name)) {
if (!rename_folder($path, $name, $transliteration)) {
die(lang_Rename_existing_folder);
}
rename_folder($path_thumb, $name, $transliteration);
if ($fixed_image_creation) {
foreach ($fixed_path_from_filemanager as $k => $paths) {
if ($paths != '' && $paths[strlen($paths) - 1] != '/') {
$paths .= '/';
}
$base_dir = $paths.substr_replace($path, '', 0, strlen($current_path));
rename_folder($base_dir, $name, $transliteration);
}
}
} else {
die(lang_Empty_name);
}
}
break;
case 'rename_file':
if ($rename_files) {
$name = fix_filename($name, $transliteration);
if (!empty($name)) {
if (!rename_file($path, $name, $transliteration)) {
die(lang_Rename_existing_file);
}
rename_file($path_thumb, $name, $transliteration);
if ($fixed_image_creation) {
$info = pathinfo($path);
foreach ($fixed_path_from_filemanager as $k => $paths) {
if ($paths != '' && $paths[strlen($paths) - 1] != '/') {
$paths .= '/';
}
$base_dir = $paths.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'])) {
rename_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'], $fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k], $transliteration);
}
}
}
} else {
die(lang_Empty_name);
}
}
break;
case 'duplicate_file':
if ($duplicate_files) {
$name = fix_filename($name, $transliteration);
if (!empty($name)) {
if (!duplicate_file($path, $name)) {
die(lang_Rename_existing_file);
}
duplicate_file($path_thumb, $name);
if ($fixed_image_creation) {
$info = pathinfo($path);
foreach ($fixed_path_from_filemanager as $k => $paths) {
if ($paths != '' && $paths[strlen($paths) - 1] != '/') {
$paths .= '/';
}
$base_dir = $paths.substr_replace($info['dirname'].'/', '', 0, strlen($current_path));
if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'])) {
duplicate_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].'.'.$info['extension'], $fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k]);
}
}
}
} else {
die(lang_Empty_name);
}
}
break;
default:
die('wrong action');
break;
}
}
@@ -0,0 +1,31 @@
<?php
include('config/config.php');
if ($_SESSION['verify'] != 'RESPONSIVEfilemanager') {
die('forbiden');
}
include('include/utils.php');
if (preg_match('/\.{1,2}[\/|\\\]/', $_POST['path']) !== 0) {
die('wrong path');
}
if (strpos($_POST['name'], '/') !== false || strpos($_POST['name'], '\\') !== false) {
die('wrong path');
}
$path = $current_path.$_POST['path'];
$name = $_POST['name'];
$info = pathinfo($name);
if (!in_array(fix_strtolower($info['extension']), $ext)) {
die('wrong extension');
}
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header('Content-Type: application/octet-stream');
header('Content-Length: '.(string)filesize($path.$name));
header('Content-Disposition: attachment; filename="'.($name).'"');
readfile($path.$name);
exit;
Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

Some files were not shown because too many files have changed in this diff Show More