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

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 

Recently uploaded (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 

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