SlideShare a Scribd company logo
1 of 24
Download to read offline
EXT:
Community

  Tymoteusz Motylewski
                T3DD12
Tymoteusz Motylewski
AOE media
Wiesbaden

TYPO3 & Magento

Twitter: @tmotyl
Mail: t.motylewski@gmail.com
You?!
• Have you played around with Community?
• What are you interested in?
• Do you have Extbase experience?
EXT:Community
•   Started around 2008 as pibase extension
•   Rewritten during GSoC 2010
•   Currently based on Extbase
•   Finally stable beta
Where to find it?
• Forge:
http://forge.typo3.org/projects/show/extension-
community

• Mailing list
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-
project-community
or news://lists.typo3.org/typo3.projects.community

• Git repository
git://git.typo3.org/TYPO3v4/Extensions/community.git

• Gerrit
Websites running Community

• Caremaid.net            • Ambasadapiekna.pl




                 http://www.flickr.com/photos/dieselbug2007/414348333/
Features
•   Friends
•   Messages
•   Wall
•   Gallery
•   Simple search
•   Notification service
•   Access control configurable in TS
•   Easy to extend
•   Documentation!!!
Not covered by Community
• Registration
• Access on a page level
• Groups (but planned)
Features - Profile
•   View
•   Edit
•   Delete
•   Report bad profile
Features - Messages
• Classic view
  – Inbox
  – Unread
  – Sent
• Threaded view
  – List of conversations
  – Whole conversation with one user on one
    page
Features – Relation management
• Requesting, canceling, confirming
  friendship
• List of friends
• Possible states of the relationship:
  – New
  – Confirmed
  – Rejected
Features - Wall
• Posting messages
• Smiles (requires ext. „smile”)
• Deleting messages
Features - Gallery
• Gallery
  – Albums list
  – Photos list of one album
• Album
  – Title
  – Cover image
  – Privacy settings
• Special album with profile pictures
Features – Notification service
• Mail, private message, wall message….
• Multiple notifications per event
• Easy to use API
$notification = new Tx_Community_Service_Notification_Notification(
                                        'relationRequest',
                                        $this->requestingUser,
                                        $this->requestedUser
                             );
$notification->setFoo(„BAR”);
$this->notificationService->notify($notification);

• Configurable in TS
relationRequest {
10 {
         template = RelationRequest
         handler = Tx_Community_Service_Notification_MailHandler
         serverEmail = {$plugin.tx_community.serverEmail}
}}
Features – Notification service
Want to notify by SMS after receiving private message?
   1. Create own notification handler which implements
       Tx_Community_Service_Notification_HandlerInterface
       - send() method is required
       e.g. Tx_CommunityLocal_Service_Notification_SmsHandler

   2. Add typoscript configuration
   plugin.tx_community.settings.notification.rules {
       messageSend {
            20 {
            handler = Tx_CommunityLocal_Service_Notification_SmsHandler
            }
       }
   }
Architecture




        Architecture
Architecture – Base controller
• Base class for all controllers
• Resolves requested and requesting user
• Access control in initializeAction()
  – Return nothing if user has no access
Architecture – Access control
 Types of access for different requests:
Requesting    Requested   Are       Access type         Notes
(logged in)   user        friends
user
NULL          NULL        -         ACCESS_PUBLIC       Public, guest access. No logged in
                                                        user, no requested (target) user.
                                                        Used e.g. for “list of 10 newest users”.
NULL          John        -         ACCESS_NOBODY       Public, guest access, no logged in
                                                        user. Public, but user specific plugins.
Bill          John        NO        ACCESS_OTHER        Bill is logged in, but he is not a friend
                                                        with John
Bill          John        YES       ACCESS_FRIEND
John          John | NULL -         Access granted by   If requested user is not set, and we
                                    default.            are logged in, then requestedUser =
                                                        requestingUser
                                                        – e.g. we are seeing our own profile
Architecture – Access control
• On action level
• Configured in TS
    – Actions are mapped to „resource names”
    accessActionResourceMap {
    User {
        image = profile.image        //image action from UserController
        edit = profile.edit
    }
    – Access rules are set for resource names
    accessRules.friend {
       profile.image.access = 1
       profile.relation.access = 1
}
Roadmap
•   Use Ajax wherever possible
•   Privacy settings for user properties
•   Groups
•   Performance tuning
•   Notification queue
•   Advanced search
•   Standard image sizes defined in TS
•   Commenting on wall posts
Workshop tasks
• Installing community
• Features/roadmap brainstorming
• Discussion
  – groups handling
  – privacy settings
• ???
Privacy/access control challenges
• Levels
  – Action level (MessageController->sendAction)
  – Record level e.g. user/ album
  – Record property level – $user->email,
                             $user->name
• Defaults
  – Global defaults: deny or allow
  – Defaults for table/record/property
Privacy/access control challenges
• Allow user to change his privacy settings
• Easy to extend (new models, new
  controllers)
• Fast
• Transparent
• Configured in single place
• …
Questions?




Mail:   t.motylewski@gmail.com
Twitter: @tmotyl

More Related Content

More from AOE

Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)AOE
 
rock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentrock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentAOE
 
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013AOE
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverAOE
 
SONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentSONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentAOE
 
The typo3.org Relaunch Project
The typo3.org Relaunch ProjectThe typo3.org Relaunch Project
The typo3.org Relaunch ProjectAOE
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling  am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling  am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience IndexierungspipelineAOE
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudAOE
 
Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)AOE
 
Angrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAngrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAOE
 
T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with VarnishAOE
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuningAOE
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignAOE
 
Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3AOE
 
Panasonic search
Panasonic searchPanasonic search
Panasonic searchAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch CachingAOE
 
Open Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExOpen Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExAOE
 
Case Study NDD Distribution on TYPO3
Case Study NDD Distribution on TYPO3Case Study NDD Distribution on TYPO3
Case Study NDD Distribution on TYPO3AOE
 

More from AOE (20)

Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)Multithreaded XML Import (San Francisco Magento Meetup)
Multithreaded XML Import (San Francisco Magento Meetup)
 
rock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deploymentrock-solid TYPO3 development with continuous integration and deployment
rock-solid TYPO3 development with continuous integration and deployment
 
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
Agile Management - Best Practice Day der Deutschen Bahn am 17.10.2013
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
 
SONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS DeploymentSONY on TYPO3 - Rapid Global CMS Deployment
SONY on TYPO3 - Rapid Global CMS Deployment
 
The typo3.org Relaunch Project
The typo3.org Relaunch ProjectThe typo3.org Relaunch Project
The typo3.org Relaunch Project
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling  am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling  am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience Indexierungspipeline
 
High Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der CloudHigh Performance Multi-Server Magento in der Cloud
High Performance Multi-Server Magento in der Cloud
 
Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)Selenium 2 for PHP(Unit)
Selenium 2 for PHP(Unit)
 
Angrybirds Magento Cloud Deployment
Angrybirds Magento Cloud DeploymentAngrybirds Magento Cloud Deployment
Angrybirds Magento Cloud Deployment
 
T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with Varnish
 
Performance measurement and tuning
Performance measurement and tuningPerformance measurement and tuning
Performance measurement and tuning
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3Debugging, Monitoring and Profiling in TYPO3
Debugging, Monitoring and Profiling in TYPO3
 
Panasonic search
Panasonic searchPanasonic search
Panasonic search
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Performance durch Caching
Performance durch CachingPerformance durch Caching
Performance durch Caching
 
Open Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebExOpen Source CMS TYPO3 at Cisco WebEx
Open Source CMS TYPO3 at Cisco WebEx
 
Case Study NDD Distribution on TYPO3
Case Study NDD Distribution on TYPO3Case Study NDD Distribution on TYPO3
Case Study NDD Distribution on TYPO3
 

Recently uploaded

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

T3DD12 community extension

  • 1. EXT: Community Tymoteusz Motylewski T3DD12
  • 2. Tymoteusz Motylewski AOE media Wiesbaden TYPO3 & Magento Twitter: @tmotyl Mail: t.motylewski@gmail.com
  • 3. You?! • Have you played around with Community? • What are you interested in? • Do you have Extbase experience?
  • 4. EXT:Community • Started around 2008 as pibase extension • Rewritten during GSoC 2010 • Currently based on Extbase • Finally stable beta
  • 5. Where to find it? • Forge: http://forge.typo3.org/projects/show/extension- community • Mailing list http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3- project-community or news://lists.typo3.org/typo3.projects.community • Git repository git://git.typo3.org/TYPO3v4/Extensions/community.git • Gerrit
  • 6. Websites running Community • Caremaid.net • Ambasadapiekna.pl http://www.flickr.com/photos/dieselbug2007/414348333/
  • 7. Features • Friends • Messages • Wall • Gallery • Simple search • Notification service • Access control configurable in TS • Easy to extend • Documentation!!!
  • 8. Not covered by Community • Registration • Access on a page level • Groups (but planned)
  • 9. Features - Profile • View • Edit • Delete • Report bad profile
  • 10. Features - Messages • Classic view – Inbox – Unread – Sent • Threaded view – List of conversations – Whole conversation with one user on one page
  • 11. Features – Relation management • Requesting, canceling, confirming friendship • List of friends • Possible states of the relationship: – New – Confirmed – Rejected
  • 12. Features - Wall • Posting messages • Smiles (requires ext. „smile”) • Deleting messages
  • 13. Features - Gallery • Gallery – Albums list – Photos list of one album • Album – Title – Cover image – Privacy settings • Special album with profile pictures
  • 14. Features – Notification service • Mail, private message, wall message…. • Multiple notifications per event • Easy to use API $notification = new Tx_Community_Service_Notification_Notification( 'relationRequest', $this->requestingUser, $this->requestedUser ); $notification->setFoo(„BAR”); $this->notificationService->notify($notification); • Configurable in TS relationRequest { 10 { template = RelationRequest handler = Tx_Community_Service_Notification_MailHandler serverEmail = {$plugin.tx_community.serverEmail} }}
  • 15. Features – Notification service Want to notify by SMS after receiving private message? 1. Create own notification handler which implements Tx_Community_Service_Notification_HandlerInterface - send() method is required e.g. Tx_CommunityLocal_Service_Notification_SmsHandler 2. Add typoscript configuration plugin.tx_community.settings.notification.rules { messageSend { 20 { handler = Tx_CommunityLocal_Service_Notification_SmsHandler } } }
  • 16. Architecture Architecture
  • 17. Architecture – Base controller • Base class for all controllers • Resolves requested and requesting user • Access control in initializeAction() – Return nothing if user has no access
  • 18. Architecture – Access control Types of access for different requests: Requesting Requested Are Access type Notes (logged in) user friends user NULL NULL - ACCESS_PUBLIC Public, guest access. No logged in user, no requested (target) user. Used e.g. for “list of 10 newest users”. NULL John - ACCESS_NOBODY Public, guest access, no logged in user. Public, but user specific plugins. Bill John NO ACCESS_OTHER Bill is logged in, but he is not a friend with John Bill John YES ACCESS_FRIEND John John | NULL - Access granted by If requested user is not set, and we default. are logged in, then requestedUser = requestingUser – e.g. we are seeing our own profile
  • 19. Architecture – Access control • On action level • Configured in TS – Actions are mapped to „resource names” accessActionResourceMap { User { image = profile.image //image action from UserController edit = profile.edit } – Access rules are set for resource names accessRules.friend { profile.image.access = 1 profile.relation.access = 1 }
  • 20. Roadmap • Use Ajax wherever possible • Privacy settings for user properties • Groups • Performance tuning • Notification queue • Advanced search • Standard image sizes defined in TS • Commenting on wall posts
  • 21. Workshop tasks • Installing community • Features/roadmap brainstorming • Discussion – groups handling – privacy settings • ???
  • 22. Privacy/access control challenges • Levels – Action level (MessageController->sendAction) – Record level e.g. user/ album – Record property level – $user->email, $user->name • Defaults – Global defaults: deny or allow – Defaults for table/record/property
  • 23. Privacy/access control challenges • Allow user to change his privacy settings • Easy to extend (new models, new controllers) • Fast • Transparent • Configured in single place • …
  • 24. Questions? Mail: t.motylewski@gmail.com Twitter: @tmotyl