Compare commits

...

76 Commits

Author SHA1 Message Date
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
23497 changed files with 1209585 additions and 317659 deletions
+6 -40
View File
@@ -1,44 +1,10 @@
# 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
-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).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
+15
View File
@@ -0,0 +1,15 @@
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/
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"';
+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%%"
+40
View File
@@ -0,0 +1,40 @@
version: '3'
services:
nginx:
ports:
- "80:80"
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
+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;
}
Submodule store deleted from 2b87d35e6a
+1
View File
@@ -0,0 +1 @@
conf/nginx.conf
+61
View File
@@ -0,0 +1,61 @@
upstream website_php {
server tt-website.php.dev:9000;
}
upstream store_php {
server tt-website.store-php.dev:9000;
}
server {
server_name talentstube.test;
root /home/www/website/www/web;
client_max_body_size 500M;
sendfile off;
# 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;
}
+120
View File
@@ -0,0 +1,120 @@
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;
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/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;
}
+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;
}
+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

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

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