') }}
') }}
') }}
56 | {% include 'common/footer.html.twig' %} 57 |
├── web
├── robots.txt
├── favicon.ico
├── img
│ ├── aperophp.gif
│ ├── logo_apero_php.png
│ ├── glyphicons-halflings.png
│ ├── glyphicons-halflings-white.png
│ └── jquery-ui
│ │ ├── ui-icons_0073ea_256x240.png
│ │ ├── ui-icons_454545_256x240.png
│ │ ├── ui-icons_666666_256x240.png
│ │ ├── ui-icons_ff0084_256x240.png
│ │ ├── ui-icons_ffffff_256x240.png
│ │ ├── ui-bg_flat_0_aaaaaa_40x100.png
│ │ ├── ui-bg_flat_0_eeeeee_40x100.png
│ │ ├── ui-bg_flat_55_ffffff_40x100.png
│ │ ├── ui-bg_flat_75_ffffff_40x100.png
│ │ ├── ui-bg_glass_65_ffffff_1x400.png
│ │ ├── ui-bg_highlight-soft_100_f6f6f6_1x100.png
│ │ ├── ui-bg_highlight-soft_25_0073ea_1x100.png
│ │ └── ui-bg_highlight-soft_50_dddddd_1x100.png
├── index.php
├── font
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ └── fontawesome-webfont.woff
├── js
│ ├── datepicker.js
│ ├── gmap.autocomplete.js
│ └── stats.js
└── css
│ ├── apero.css
│ └── app.css
├── composer.phar
├── Capfile
├── config
├── recipes
│ ├── railsless.rb
│ ├── app_config.rb
│ ├── composer.rb
│ └── database.rb
└── deploy.rb
├── tests
├── units_db
│ ├── bootstrap.php
│ └── Aperophp
│ │ ├── Repository
│ │ ├── City.php
│ │ ├── DrinkComment.php
│ │ ├── Member.php
│ │ ├── DrinkParticipant.php
│ │ ├── User.php
│ │ └── Drink.php
│ │ ├── Lib
│ │ └── Utils.php
│ │ └── Provider
│ │ └── Controller
│ │ └── Comment.php
└── units
│ └── Aperophp
│ └── Meetup
│ ├── UserTransformer.php
│ └── EventTransformer.php
├── Gemfile
├── src
├── Resources
│ └── views
│ │ ├── error
│ │ └── default.html.twig
│ │ ├── common
│ │ ├── footer.html.twig
│ │ ├── Form
│ │ │ └── fields.html.twig
│ │ ├── ga.html.twig
│ │ ├── connection.html.twig
│ │ └── topbar.html.twig
│ │ ├── member
│ │ ├── forget_mail.html.twig
│ │ ├── remember_mail.html.twig
│ │ ├── forget.html.twig
│ │ ├── signin.html.twig
│ │ ├── edit.html.twig
│ │ └── signup.html.twig
│ │ ├── drink
│ │ ├── _preview.html.twig
│ │ ├── participation_mail.html.twig
│ │ ├── forget_mail.html.twig
│ │ ├── invite_ics.twig
│ │ ├── forget.html.twig
│ │ ├── list.atom.twig
│ │ ├── _participations.html.twig
│ │ ├── list.html.twig
│ │ ├── index.html.twig
│ │ ├── _participate.html.twig
│ │ ├── new.html.twig
│ │ ├── edit.html.twig
│ │ └── view.html.twig
│ │ ├── comment
│ │ ├── _list.html.twig
│ │ └── _new.html.twig
│ │ ├── layout.html.twig
│ │ └── stats
│ │ └── stats.html.twig
└── Aperophp
│ ├── Test
│ ├── AkismetMock.php
│ ├── Test.php
│ └── Client.php
│ ├── Validator
│ └── Constraints
│ │ ├── FutureDate.php
│ │ └── FutureDateValidator.php
│ ├── Meetup
│ ├── UserTransformer.php
│ └── EventTransformer.php
│ ├── Provider
│ ├── RepositoryServiceProvider.php
│ ├── Error.php
│ └── Controller
│ │ ├── Stats.php
│ │ └── Comment.php
│ ├── Lib
│ ├── Utils.php
│ ├── MailFactory.php
│ ├── AutoLinkTwigExtension.php
│ └── Stats.php
│ ├── Form
│ ├── FormExtension.php
│ ├── Type
│ │ ├── ForgetMemberType.php
│ │ ├── ForgetParticipationType.php
│ │ ├── SigninType.php
│ │ ├── EditMemberType.php
│ │ ├── DrinkCommentType.php
│ │ ├── SignupType.php
│ │ ├── DrinkParticipationType.php
│ │ └── DrinkType.php
│ └── EventListener
│ │ └── DataFilterSubscriber.php
│ ├── Repository
│ ├── Member.php
│ ├── City.php
│ ├── DrinkComment.php
│ ├── User.php
│ ├── DrinkParticipant.php
│ ├── Repository.php
│ └── Drink.php
│ └── Command
│ └── SyncWithMeetup.php
├── bin
├── tests.sh
└── assets.sh
├── package.json
├── app
├── config_travis.php
├── app.php
├── config_test.php
├── config.php.dist
├── console
└── bootstrap.php
├── .gitignore
├── .travis.yml
├── Gemfile.lock
├── .atoum.php
├── .atoum_db.php
├── assets
├── apero-responsive.less
└── apero.less
├── data
└── sql
│ └── fixtures.sql
├── composer.json
└── README.md
/web/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/composer.phar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/composer.phar
--------------------------------------------------------------------------------
/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/favicon.ico
--------------------------------------------------------------------------------
/Capfile:
--------------------------------------------------------------------------------
1 | require "railsless-deploy"
2 |
3 | load 'deploy'
4 | load 'config/deploy'
5 |
--------------------------------------------------------------------------------
/config/recipes/railsless.rb:
--------------------------------------------------------------------------------
1 | set :shared_children, []
2 | set :public_children, []
3 |
--------------------------------------------------------------------------------
/tests/units_db/bootstrap.php:
--------------------------------------------------------------------------------
1 | run();
--------------------------------------------------------------------------------
/web/img/logo_apero_php.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/logo_apero_php.png
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'capistrano', '~> 2.1'
4 | gem 'railsless-deploy'
5 |
6 |
--------------------------------------------------------------------------------
/web/font/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/font/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/web/font/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/font/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/web/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/web/font/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/font/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/src/Resources/views/error/default.html.twig:
--------------------------------------------------------------------------------
1 | {% extends "layout.html.twig" %}
2 |
3 | {% block content %}
4 | {% endblock %}
5 |
--------------------------------------------------------------------------------
/web/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-icons_0073ea_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-icons_0073ea_256x240.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-icons_454545_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-icons_454545_256x240.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-icons_666666_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-icons_666666_256x240.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-icons_ff0084_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-icons_ff0084_256x240.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-icons_ffffff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-icons_ffffff_256x240.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_flat_0_eeeeee_40x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_flat_55_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_flat_55_ffffff_40x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_flat_75_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_flat_75_ffffff_40x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/bin/tests.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | php app/console db:install --test --load-fixtures
4 |
5 | ./vendor/bin/atoum -c .atoum_db.php
6 | ./vendor/bin/atoum
7 |
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_highlight-soft_100_f6f6f6_1x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_highlight-soft_25_0073ea_1x100.png
--------------------------------------------------------------------------------
/web/img/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/afup/aperophp/HEAD/web/img/jquery-ui/ui-bg_highlight-soft_50_dddddd_1x100.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "aperophp",
3 | "version": "1.0.0",
4 | "dependencies": {
5 | "jshint": "^0.9.1",
6 | "recess": "1.1.9",
7 | "uglify-js": "^2.0.0"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/config_travis.php:
--------------------------------------------------------------------------------
1 | 'root',
7 | 'password' => '',
8 | )
9 | );
10 |
--------------------------------------------------------------------------------
/src/Resources/views/common/footer.html.twig:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/src/Aperophp/Test/AkismetMock.php:
--------------------------------------------------------------------------------
1 |
3 | suivez ce lien pour obtenir un nouveau mot de passe
4 |
5 |
--------------------------------------------------------------------------------
/config/recipes/app_config.rb:
--------------------------------------------------------------------------------
1 | namespace :deploy do
2 | task :set_app_config do
3 | app_config.map do |c|
4 | run "rm -f #{latest_release}/#{c} && ln -s #{shared_path}/config/#{c} #{latest_release}/#{c}"
5 | end
6 | end
7 | end
8 |
9 | after "deploy:finalize_update", "deploy:set_app_config"
10 |
--------------------------------------------------------------------------------
/src/Resources/views/common/Form/fields.html.twig:
--------------------------------------------------------------------------------
1 | {% block field_errors %}
2 | {% spaceless %}
3 | {% for error in errors %}
4 | {{ error.messageTemplate|trans(error.messageParameters, 'validators') }}
5 | {% endfor %}
6 | {% endspaceless %}
7 | {% endblock field_errors %}
--------------------------------------------------------------------------------
/src/Resources/views/member/remember_mail.html.twig:
--------------------------------------------------------------------------------
1 | Vous venez de demander la régénération de votre mot de passe.
2 | Vos identifiants sont :
3 |
3 |20 | {% endfor %} 21 | -------------------------------------------------------------------------------- /src/Aperophp/Repository/City.php: -------------------------------------------------------------------------------- 1 | findAll() as $city) { 26 | $cities[$city['id']] = $city['name']; 27 | } 28 | 29 | return $cities; 30 | } 31 | 32 | /** 33 | * 34 | * @return array 35 | */ 36 | public function findRecurrentInAssociativeArray() 37 | { 38 | $cities = array(); 39 | $sql = sprintf( 40 | 'SELECT c.id as id, c.name as name 41 | FROM Drink d, City c 42 | WHERE d.city_id = c.id 43 | GROUP BY c.id 44 | HAVING COUNT(d.id) > %s 45 | ORDER BY name 46 | ', Stats::RECURRENT_MINIMUM); 47 | 48 | foreach ($this->db->fetchAll($sql) as $city) { 49 | $cities[$city['id']] = $city['name']; 50 | } 51 | 52 | return $cities; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/Aperophp/Repository/DrinkComment.php: -------------------------------------------------------------------------------- 1 | db->fetchAll($sql, $params); 29 | } 30 | 31 | public function findOne($drinkId, $userId) 32 | { 33 | $sql = 'SELECT * FROM Drink_Comment WHERE drink_id = ? AND user_id = ? LIMIT 1'; 34 | 35 | return $this->db->fetchAssoc($sql, array((int) $drinkId, (int) $userId)); 36 | } 37 | 38 | public function groupByEmail($email, $userId) 39 | { 40 | $sql = 'UPDATE Drink_Comment SET user_id = ? WHERE user_id IN (SELECT id FROM User WHERE email = ?)'; 41 | 42 | $this->db->prepare($sql)->execute(array((int) $userId, $email)); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tests/units_db/Aperophp/Repository/DrinkComment.php: -------------------------------------------------------------------------------- 1 | assert 14 | ->if($drinkComments = $this->app['drink_comments']->findByDrinkId(1)) 15 | ->then 16 | ->boolean(is_array($drinkComments))->isTrue() 17 | ->integer(count($drinkComments))->isEqualTo(2) 18 | ; 19 | 20 | foreach ($drinkComments as $drinkComment) { 21 | $this->assert 22 | ->boolean(is_array($drinkComment))->isTrue() 23 | ->boolean(array_key_exists('user_email', $drinkComment))->isTrue() 24 | ; 25 | } 26 | } 27 | 28 | public function testFindOne_withExistingEntry_returnArray() 29 | { 30 | $this->assert 31 | ->if($comment = $this->app['drink_comments']->findOne(1, 2)) 32 | ->then 33 | ->boolean(is_array($comment))->isTrue() 34 | ; 35 | } 36 | 37 | public function testFindOne_withInexistingEntry_returnFalse() 38 | { 39 | $this->assert 40 | ->if($comment = $this->app['drink_comments']->findOne(231, 2341)) 41 | ->then 42 | ->boolean($comment)->isFalse() 43 | ; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Resources/views/member/forget.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "layout.html.twig" %} 2 | 3 | {% block content %} 4 |4 | 5 | {% if comment.username is not null%} 6 | {{ comment.username }}, 7 | {% else %} 8 | {{ comment.firstname }}, 9 | {% endif %} 10 | le {{ comment.created_at|date("d") }} {{ comment.created_at|date("F")|trans|lower }} {{ comment.created_at|date("Y") }} à {{ comment.created_at|date("H:i") }} 11 | 12 | {% if display_spam_buttons %} 13 | {% if comment.is_spam %} 14 | Signaler comme non spam 15 | {% else %} 16 | Signaler comme spam 17 | {% endif %} 18 | {% endif %} 19 |
{{ comment.content|raw }}
Total : {{ nb }}
20 | 21 || Participant | 25 |Présence | 26 ||
|---|---|---|
| {{ presences[participant.percentage]|trans }} | 37 |
Nous avons le plaisir de vous annoncer l'organisation du premier Meetup Ansible Lyonnais !
En fonction du nombre de personnes présentes l'évènement aura lieu soit chez ELAO soit chez Amabla si nous sommes nombreux.
Au programme:
• 19h30 Émilien MANTEL : "Ansible et AWS, approche de l'autoscale"
• 20h10 : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
A tous les speakers intéressés n'hésitez pas à m'envoyer vos propositions de talks pour les futurs meetups !
Pizza et boissons vous attendent !
Sponsors : ELAO & Ansible
---
Hi everyone !
We are pleased to announce the date of the first Ansible Lyon Meetup. According to how many "Ansi-bulls" we'll be, the event will be hosted by ELAO or Amabla.
69 | 70 | • 7h30 PM Émilien MANTEL : "Ansible and AWS, approach to auto-scaling"
• 8h10 PM : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
To every speakers, you can send me your suggestions for Talks, more meetups are comming !
Pizzas and drinks awaiting you :) Sponsors : ELAO & Ansible
Nous avons le plaisir de vous annoncer l'organisation du premier Meetup Ansible Lyonnais !
En fonction du nombre de personnes présentes l'évènement aura lieu soit chez ELAO soit chez Amabla si nous sommes nombreux.
Au programme:
• 19h30 Émilien MANTEL : "Ansible et AWS, approche de l'autoscale"
• 20h10 : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
A tous les speakers intéressés n'hésitez pas à m'envoyer vos propositions de talks pour les futurs meetups !
Pizza et boissons vous attendent !
Sponsors : ELAO & Ansible
---
Hi everyone !
We are pleased to announce the date of the first Ansible Lyon Meetup. According to how many "Ansi-bulls" we'll be, the event will be hosted by ELAO or Amabla.
13 | 14 | • 7h30 PM Émilien MANTEL : "Ansible and AWS, approach to auto-scaling"
• 8h10 PM : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
To every speakers, you can send me your suggestions for Talks, more meetups are comming !
Pizzas and drinks awaiting you :) Sponsors : ELAO & Ansible
Bonjour à tous,
Nous avons le plaisir de vous annoncer l\'organisation du premier Meetup Ansible Lyonnais !
En fonction du nombre de personnes présentes l\'évènement aura lieu soit chez ELAO soit chez Amabla si nous sommes nombreux.
Au programme:
• 19h30 Émilien MANTEL : "Ansible et AWS, approche de l\'autoscale"
• 20h10 : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
A tous les speakers intéressés n\'hésitez pas à m\'envoyer vos propositions de talks pour les futurs meetups !
Pizza et boissons vous attendent !
Sponsors : ELAO & Ansible
---
Hi everyone !
We are pleased to announce the date of the first Ansible Lyon Meetup. According to how many "Ansi-bulls" we\'ll be, the event will be hosted by ELAO or Amabla.
85 | 86 | • 7h30 PM Émilien MANTEL : "Ansible and AWS, approach to auto-scaling"
• 8h10 PM : Guewen FAIVRE (ELAO) : "The automation journey of a web agency"
To every speakers, you can send me your suggestions for Talks, more meetups are comming !
Pizzas and drinks awaiting you :) Sponsors : ELAO & Ansible
Les commentaires
69 |