With Extbase - a new framework for extension development introduced in TYPO3 4.3 - you are able to develop with the paradigms of FLOW3 today. During this talk, you get in touch with the features of the framework to understand how it supports your development process to develop clean code cost efficient in less time. Extbase is one cornerstone for a smooth transition to TYPO3 v5, another is reusable business domain knowledge in form of Generic Domain Models available in 4.x and 5.x. The Generic Domain Models will enable you to add a Semantic Web topping.
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications including Drupal, and things to watch out for when using Enums.
Audience
This session is for those who are familiar with modern PHP practices such as Object Oriented Programming, and principles such as Liskov Substitution principle. A quick introduction will be given to catch up to speed, but familiarity with such concepts can help a lot.
What you will learn
What are Enums.
Why Enums are useful.
How to use Enums
Migrating from magic constants/values to Enums.
Backed Enums and storing/fetching Enum values with a database.
Using Enums in a Drupal context.
Caveats when using Enums.
Author
Ayesh Karunaratne is the author of PHP.Watch (https://php.watch), where he provides in-depth articles and documents on PHP and latest changes to the language.
PHP 8.0: https://php.watch/versions/8.0
PHP 8.1: https://php.watch/versions/8.1
Enums: https://php.watch/versions/8.1/enums
This session introduces most well known design patterns to build PHP classes and objects that need to store and fetch data from a relational databases. The session will describe the difference between of the Active Record, the Table and Row Data Gateway and the Data Mapper pattern. We will also examine some technical advantages and drawbacks of these implementations. This talk will expose some of the best PHP tools, which ease database interactions and are built on top of these patterns.
Persistence is one of the most important part in a PHP project. Persisting data to a database came with PHP/FI and its MySQL support. From native extensions and PHP4 database abstraction libraries to PDO and modern ORM frameworks, you will (re)discover how persistence has evolved during the last decade. This talk will also introduce the future of data persistence with the growing success of alternative storage engines.
This talk is an overview of the history of the PHP language and major framework projects that have emerged in the last 5 years. It examines what we've learned in the development of these frameworks, how that education has been brought to bear in Lithium. Most of this talk ended up being me demoing and answering questions, so there's not a lot of content in the slides, sorry.
Design Patterns avec PHP 5.3, Symfony et PimpleHugo Hamon
Cette conférence présente deux grands motifs de conception : l'observateur et l'injection de dépendance. Ce sujet allie à la fois théorie et pratique. Le composant autonome EventDispatcher de Symfony ainsi que le conteneur d'injection de dépendance Pimple sont mis à l'honneur avec des exemples pratiques d'usage. Ces cas pratiques combinent du code de l'ORM Propel ainsi que le composant autonome Zend\Search\Lucene du Zend Framework 2
PHP 8.1 brings Enums, one of the most requested features in PHP.
Enums, or Enumerations, allow creating strict and type-safe structures for fixed values. An Enum structure can hold a number of values that can also be backed with integer or string values.
In this comprehensive session, we will discover what Enums are, why they are useful, how to apply them on our applications including Drupal, and things to watch out for when using Enums.
Audience
This session is for those who are familiar with modern PHP practices such as Object Oriented Programming, and principles such as Liskov Substitution principle. A quick introduction will be given to catch up to speed, but familiarity with such concepts can help a lot.
What you will learn
What are Enums.
Why Enums are useful.
How to use Enums
Migrating from magic constants/values to Enums.
Backed Enums and storing/fetching Enum values with a database.
Using Enums in a Drupal context.
Caveats when using Enums.
Author
Ayesh Karunaratne is the author of PHP.Watch (https://php.watch), where he provides in-depth articles and documents on PHP and latest changes to the language.
PHP 8.0: https://php.watch/versions/8.0
PHP 8.1: https://php.watch/versions/8.1
Enums: https://php.watch/versions/8.1/enums
This session introduces most well known design patterns to build PHP classes and objects that need to store and fetch data from a relational databases. The session will describe the difference between of the Active Record, the Table and Row Data Gateway and the Data Mapper pattern. We will also examine some technical advantages and drawbacks of these implementations. This talk will expose some of the best PHP tools, which ease database interactions and are built on top of these patterns.
Persistence is one of the most important part in a PHP project. Persisting data to a database came with PHP/FI and its MySQL support. From native extensions and PHP4 database abstraction libraries to PDO and modern ORM frameworks, you will (re)discover how persistence has evolved during the last decade. This talk will also introduce the future of data persistence with the growing success of alternative storage engines.
This talk is an overview of the history of the PHP language and major framework projects that have emerged in the last 5 years. It examines what we've learned in the development of these frameworks, how that education has been brought to bear in Lithium. Most of this talk ended up being me demoing and answering questions, so there's not a lot of content in the slides, sorry.
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
Lithium: The Framework for People Who Hate FrameworksNate Abele
This is the presentation was given at ConFoo on March 11th by Nate Abele and Joël Perras, and is an introduction to the architectural problems with other frameworks that Lithium was designed to address, and how it addresses them. It also introduces programming paradigms like functional and aspect-oriented programming which address issues that OOP doesn't account for.
Finally, the talk provides a quick overview of the innovative and unparalleled features that Lithium provides, including the data layer, which supports both relational and non-relational databases.
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
PHP 5.3 and Lithium: the most rad php frameworkG Woo
Presentation given to the Orange County PHP meetup on Feb 24 2010. The presentation covers the new features in php 5.3 and goes on to show how they are used in Lithium, the most rad php framework.
Refactoring, Agile Entwicklung, Continuous Integration – all diese für nachhaltigen Erfolg wichtigen Vorgehensweisen setzen Erfahrung mit Unit Testing voraus. Abseits von den üblichen "Bowling"-Beispielen möchten wir gerne einen Crashkurs inkl. Best Practices für das erfolgreiche Unit Testing durchführen. Anhand eines Beispielprojekts auf Basis des Zend Frameworks werden wir nach der Installation von PHPUnit auf allen Notebooks gemeinsam eine kleine Applikation aufbauen, die durchgehend Test-driven entwickelt wird.
PHP 7.1 contains new exciting features and improvements that can facilitate the life of many PHP developers. During the talk I will show some of these new features like nullable types, catching of multiple exceptions, the curl HTTP/2 server push support, void return types, Class constant visibility, authenticated encryption in OpenSSL with GCM and CCM modes, and more.
PHP Data Objects (PDO) provides a clear, simple (but powerful), unified API for working with all our favorite databases. Features include prepared statements with bound parameters (for all databases, even those that don’t natively support them), transactions, cursors, LOBs, and flexible error handling.
Building Lithium Apps (Like a Boss) was a workshop presented on the structure and philosophy of the Lithium framework and its applications, and how best to take advantage of them.
Lithium: The Framework for People Who Hate FrameworksNate Abele
This is the presentation was given at ConFoo on March 11th by Nate Abele and Joël Perras, and is an introduction to the architectural problems with other frameworks that Lithium was designed to address, and how it addresses them. It also introduces programming paradigms like functional and aspect-oriented programming which address issues that OOP doesn't account for.
Finally, the talk provides a quick overview of the innovative and unparalleled features that Lithium provides, including the data layer, which supports both relational and non-relational databases.
Silex is a brand new PHP 5.3 micro framework built on top of the Symfony2 de decoupled components. In this session, we will discover how to build and deploy powerful REST web services with such a micro framework and its embedded tools.
The first part of this talk will introduce the basics of the REST architecture. We fill focus on the main concepts of REST like HTTP methods, URIs and open formats like XML and JSON.
Then, we will discover how to deploy REST services using most of interesting Silex tools like database abstraction layer, template engine and input validation. We will also look at unit and functional testing frameworks with PHPUnit and HTTP caching with Edge Side Includes and Varnish support to improve performances.
PHP 5.3 and Lithium: the most rad php frameworkG Woo
Presentation given to the Orange County PHP meetup on Feb 24 2010. The presentation covers the new features in php 5.3 and goes on to show how they are used in Lithium, the most rad php framework.
Refactoring, Agile Entwicklung, Continuous Integration – all diese für nachhaltigen Erfolg wichtigen Vorgehensweisen setzen Erfahrung mit Unit Testing voraus. Abseits von den üblichen "Bowling"-Beispielen möchten wir gerne einen Crashkurs inkl. Best Practices für das erfolgreiche Unit Testing durchführen. Anhand eines Beispielprojekts auf Basis des Zend Frameworks werden wir nach der Installation von PHPUnit auf allen Notebooks gemeinsam eine kleine Applikation aufbauen, die durchgehend Test-driven entwickelt wird.
PHP 7.1 contains new exciting features and improvements that can facilitate the life of many PHP developers. During the talk I will show some of these new features like nullable types, catching of multiple exceptions, the curl HTTP/2 server push support, void return types, Class constant visibility, authenticated encryption in OpenSSL with GCM and CCM modes, and more.
PHP Data Objects (PDO) provides a clear, simple (but powerful), unified API for working with all our favorite databases. Features include prepared statements with bound parameters (for all databases, even those that don’t natively support them), transactions, cursors, LOBs, and flexible error handling.
Introduction to Test-Driven Development and why using Dependency Injection as provided by FLOW3 makes it an even better development approach. Presented at the 4th International TYPO3 Conference 2008 in Berlin.
A key feature of TYPO3 today is its extendability and flexibility. Writing extensions was never easier since the Kickstarter, and tslib_piBase. But, time doesn't stand still: new programming paradigms other innovative frameworks came up. It's time to take a next step to faster, cleaner extension coding. With the new Version 5 of TYPO3 and its basis FLOW3 the way to develop extensions will change fundamentally. With Extbase - the new framework for extension development introduced in TYPO3 4.3 - you are able to develop with the paradigms of FLOW3 today. During this talk, you get in touch with the features of the framework to understand how it supports your development process. We also address the users perspective by discussing best practices how to migrate to TYPO3 v5.
Internationalizing CakePHP ApplicationsPierre MARTIN
Slides from the talk given by Mariano Iglesias during the CakeFest #3 - July 2009
Note: the original pdf and the code related to this talk can be found on cakephp.org (http://cakephp.org/downloads/CakeFest/CakeFest%203%20-%20Berlin%202009/Mariano%20Iglesias%20-%20Internationalizing%20CakePHP%20Applications)
Overview of the main ways to store data in Drupal 8 depending on data and needs. A detailed description of each way and examples of how to work with storages.
https://drupalcampkyiv.org/node/44
Meet Magento Sweden - Magento 2 Layout and Code Compilation for PerformanceIvan Chepurnyi
It is a pity, but I have to admit, that Magento 2 has issues in layout generation process. You'll learn during the talk about the benefits of compiling XML structures into PHP code, and even use the compilation of PHP code into PHP code to speed up your modules complex logic.
A lot of people using PHPunit for testing their source code. While I was observing my team
I recognized most of them are only using the standard ssertions like 'assertEquals()' or
'assertTrue()' and are complaining about how hard it is to test the code even when the tests are written first. This talk is about all the stuff not used on a daily basis. It shows you some nice features of PHPUnit and how to use them for your benefit.
TYPO3 Extension development using new Extbase frameworkChristian Trabold
My presentation for the TYPO3 community day in Tokyo, Japan.
The code is available at https://github.com/ctrabold/t3ski-workshop.
Due to copyright issues I had to remove all pictures of Miffy.
n 2010, I told everyone how to start unit testing Zend Framework applications. In 2011, let’s take this a step further by testing services, work flows and performance. Looking to raise the bar on quality? Let this talk be the push you need to improve your Zend Framework projects.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
35. /**
* Main news function: calls the init_news() function and decides by the given CODEs which of the
* functions to display news should by called.
*
* @param string $content : function output is added to this
* @param array
$conf : configuration array
* @return string $content: complete content generated by the tt_news plugin
*/
function main_news($content, $conf) {
$this->local_cObj = t3lib_div::makeInstance('tslib_cObj'); // Local cObj.
$this->init($conf);
if ($this->conf['displayCurrentRecord']) {
$this->config['code'] = $this->conf['defaultCode']?trim($this->conf['defaultCode']):'SINGLE';
$this->tt_news_uid = $this->cObj->data['uid'];
}
// get codes and decide which function is used to process the content
$codes = t3lib_div::trimExplode(',', $this->config['code']?$this->config['code']:$this->conf['defaultCode'], 1);
if (!count($codes)) { // no code at all
$codes = array();
$noCode = true;
}
while (list(, $theCode) = each($codes)) {
$theCode = (string)strtoupper(trim($theCode));
$this->theCode = $theCode;
switch ($theCode) {
case 'SINGLE':
$content .= $this->displaySingle();
break;
case 'VERSION_PREVIEW':
$content .= $this->displayVersionPreview();
break;
case 'LATEST':
case 'LIST':
case 'SEARCH':
case 'XML':
$content .= $this->displayList();
break;
case 'AMENU':
$content .= $this->newsArchiveMenu();
break;
case 'CATMENU':
$content .= $this->displayCatMenu();
break;
default:
36. /**
* Displays the "single view" of a news article. Is also used when displaying single news records with the "insert records" content element.
*
* @return string html-code for the "single view"
*/
function displaySingle() {
$singleWhere = 'tt_news.uid=' . intval($this->tt_news_uid);
$singleWhere .= ' AND type NOT IN(1,2)' . $this->enableFields; // only real news -> type=0
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'*',
'tt_news',
$singleWhere);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
// get the translated record if the content language is not the default language
if ($GLOBALS['TSFE']->sys_language_content) {
$OLmode = ($this->sys_language_mode == 'strict'?'hideNonTranslated':'');
$row = $GLOBALS['TSFE']->sys_page->getRecordOverlay('tt_news', $row, $GLOBALS['TSFE']->sys_language_content, $OLmode);
}
if ($this->versioningEnabled) {
// get workspaces Overlay
$GLOBALS['TSFE']->sys_page->versionOL('tt_news',$row);
// fix pid for record from workspace
$GLOBALS['TSFE']->sys_page->fixVersioningPid('tt_news',$row);
}
$GLOBALS['TSFE']->displayedNews[]=$row['uid'];
if (is_array($row) && ($row['pid'] > 0 || $this->vPrev)) { // never display versions of a news record (having pid=-1) for normal website users
// Get the subpart code
if ($this->conf['displayCurrentRecord']) {
$item = trim($this->getNewsSubpart($this->templateCode, $this->spMarker('###TEMPLATE_SINGLE_RECORDINSERT###'), $row));
}
if (!$item) {
$item = $this->getNewsSubpart($this->templateCode, $this->spMarker('###TEMPLATE_SINGLE###'), $row);
}
// reset marker array
$wrappedSubpartArray = array();
// build the backToList link
if ($this->conf['useHRDates']) {
$pointerName = 'pointer';
$wrappedSubpartArray['###LINK_ITEM###'] = explode('|', $this->pi_linkTP_keepPIvars('|', array(
'tt_news' => null,
'backPid' => null,
$this->config['singleViewPointerName'] => null,
'pS' => null,
'pL' => null), $this->allowCaching, ($this->conf['dontUseBackPid']?1:0), $this->config['backPid']));
37. if ($this->conf
['useHRDates']) {
$pointerName =
'pointer';
$wrappedSubpartArray
['###LINK_ITEM###'] =
explode('|', $this-
>pi_linkTP_keepPIvars
('|', array(
'tt_news' => null,
'backPid' => null,
$this->config
['singleViewPointerName
'] => null,
'pS' => null,
'pL' => null), $this-
>allowCaching, ($this-
>conf
['dontUseBackPid']?
1:0), $this->config
['backPid']));
} else {
$wrappedSubpartArray
['###LINK_ITEM###'] =
explode('|', $this-
>pi_linkTP_keepPIvars
('|', array(
'tt_news' => null,
'backPid' => null,
$this->config
['singleViewPointerName
'] => null), $this-
>allowCaching, ($this-
>conf
['dontUseBackPid']?
1:0), $this->config
['backPid']));
}
// set the title of the
single view page to the
title of the news
record
if ($this->conf
['substitutePagetitle']
) {
$GLOBALS['TSFE']->page
['title'] = $row
['title'];
// set pagetitle for
indexed search to news
title
$GLOBALS['TSFE']-
>indexedDocTitle = $row
['title'];
}
if ($this->conf
['displaySingle.']
['catOrderBy']) {
$this->config
['catOrderBy'] = $this-
>conf['displaySingle.']
['catOrderBy'];
}
$markerArray = $this-
>getItemMarkerArray
($row,
'displaySingle');
// Substitute
$content = $this->cObj-
>substituteMarkerArrayC
ached($item,
$markerArray, array(),
$wrappedSubpartArray);
} elseif ($this-
>sys_language_mode ==
'strict' && $this-
>tt_news_uid &&
$GLOBALS['TSFE']-
>sys_language_content)
{ // not existing
translation
$noTranslMsg = $this-
>local_cObj->stdWrap
($this->pi_getLL
('noTranslMsg'), $this-
>conf
['noNewsIdMsg_stdWrap.'
]);
$content =
$noTranslMsg;
} elseif ($row['pid'] <
0) { // a non-public
version of a record was
requested
$nonPlublicVersion =
$this->local_cObj-
>stdWrap($this-
>pi_getLL
('nonPlublicVersionMsg'
), $this->conf
['nonPlublicVersionMsg_
stdWrap.']);
$content =
$nonPlublicVersion;
} else { // if
singleview is shown
with no tt_news uid
given from GETvars
(&tx_ttnews[tt_news]=)
an error message is
displayed.
48. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
Controller
3
findByTitle('MyBlog')
Repository
Domain Model
Blog
Post
Comment Tag
49. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
Controller
3
findByTitle('MyBlog')
Blog
4
Repository
Domain Model
Blog
Post
Comment Tag
50. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
Controller
3 assign(Blog)
findByTitle('MyBlog') render() 5
Blog
4 View
Repository
Domain Model
Blog
Post
Comment Tag
51. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
HTML
Response Controller
6
3 assign(Blog)
findByTitle('MyBlog') render() 5
Blog
Response
4 View
Repository
Domain Model
Blog
Post
Comment Tag
52. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
HTML
Response Controller
6
3 assign(Blog)
findByTitle('MyBlog') render() 5
Blog
Response
4 View
Repository
Domain Model
Blog
Post
Comment Tag
53. 1
2
userFunc
Request
BlogExample
Extbase
TYPO3 Dispatcher
HTML
Response Controller
6
3 assign(Blog)
findByTitle('MyBlog') render() 5
Blog
Response
4 View
Repository
Domain Model
Blog
Post
Comment Tag
54. Hmmm.
Much better.
Lasagna code
de
Spagh etti co
65. William Street Rajan United
States Virginia Indian
x
WRUVI
William Street
Rajan
United States Virginia Indian
66. William Street Rajan United
States Virginia Indian
x
WRUVI
William Street
Rajan
United States Virginia Indian
67. William Street Rajan United
States Virginia Indian
x
WRUVI
William Street
Rajan
United States Virginia Indian
68.
69.
70.
71. Organization
Date
Customer
Event
Invoice
Publication
Product
Price
Article Location
Number
Image
Your Model
72. Generic Domain Models
based on high quality, open standards
OASIS CIQ 3.0 for persons, organizations, addresses, names
BMEcat for product, suppliers, catalogs, prices
iCalendar for calendar, events, dates
etc.
challenges
XML2PHP
interoperability
consistent semantics
@jochen: it's time for an example
93. Knublauch, Holger. KBeans Specification: Semantic Transparency for Components and
Domain Models. Technical Report FAW-TR-01001, FAW Ulm, 2001.
94. Semantic annotations
/**
* A container for defining the unique characteristics of a person only
*
* @version $Id$
* @copyright Copyright belongs to the respective authors
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later
* @prefix foaf: <http://xmlns.com/foaf/0.1/>
* @prefix owl: <http://www.w3.org/2002/07/owl#>
* @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
* @prefix core: <http://www.typo3.org/semantic/core/>
* @prefix gen: <http://www.typo3.org/semantic/ext/generic/domain/model/>
* @semantic gen:Person rdfs:subClassOf gen:Party
* @semantic gen:Person owl:disjointWith gen:Organization
* @semantic gen:Person core:isMemberOf gen:Organization
*/
class Tx_Generic_Domain_Model_Person extends Tx_Generic_Domain_Model_Party {
/**
* Party Names
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_Generic_Domain_Model_PersonName>
* @semantic gen:partyNames gen:areOfType foaf:name
*/
protected $partyNames;
/**
95. Semantic Query with SPARQL
## Find all authors of News Articles that are posted on a page with the english title "Welcome"
PREFIX core:<http:://www.typo3.org/ontology/core/#>
PREFIX generic:<http:://www.typo3.org/ontology/ext/generic/#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
SELECT $person $article
FROM <http:://localhost/repository.rdf>
WHERE {
$person rdfs:type generic:Person .
$person core:authorOf $article .
$article rdfs:type core:NewsArticle .
$article core:isPlacedOn $page .
$page core:title "Welcome"@en .
}
96. [TYPO3-dev] The state of support for the Semantic Web / RDFA /
Web 3.0 in TYPO3
Jochen Rau jochen.rau at typoplanet.de
Mon Aug 31 16:26:51 CEST 2009
• Previous message: [TYPO3-dev] The state of support for the Semantic Web / RDFA / Web 3.0 in TYPO3
• Next message: [TYPO3-dev] The state of support for the Semantic Web / RDFA / Web 3.0 in TYPO3
• Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
get Extbase ready ;-)
de ne generic domain models
bind objects to an ontology
elaborate on the use cases of semantic content
make the integration of semantic web technology a movement of the community
97. Bastian Waidelich
Sebastian Kurfürst
Sebastian Gebhard
Than k You Steffen Kamper
Felix Oertel
Franz Ripfel and the TYPO3 V5 Team for all the inspiration
and the beautiful code
Ingmar Schlecht
Patrick Lobacher
Franz Koch
Xavier Perseguers