- Added my ezc user group talk.

This commit is contained in:
Derick Rethans
2007-05-12 22:23:40 +00:00
parent 1aa7c6dde0
commit 763ba870e5
31 changed files with 784 additions and 71 deletions

View File

@@ -15,46 +15,52 @@
<date>May 10th, 2007</date>
<speaker>Derick Rethans</speaker>
<email>dr@ez.no</email>
<url>http://files.derickrethans.nl/ezc-vancouver7.pdf</url>
<url>http://files.derickrethans.nl/ezc-php-norge.pdf</url>
<slide>slides/ezc/title-ezc-generic.xml</slide>
<!-- introduction -->
<slide>slides/toolbox/goals-process.xml</slide>
<slide>slides/toolbox/goals-library.xml</slide>
<slide>slides/toolbox/documentation.xml</slide>
<slide>slides/ezc/contributing.xml</slide>
<slide>slides/toolbox/dependencies.xml</slide>
<slide>slides/toolbox/classnames.xml</slide>
<slide>slides/toolbox/autoload.xml</slide>
<slide>slides/toolbox/autoload-arrays.xml</slide>
<slide>slides/toolbox/versioning.xml</slide>
<!-- overview -->
<slide>slides/ezc/overview.xml</slide>
<slide>slides/toolbox/dependencies.xml</slide>
<slide>slides/ezc/install-download.xml</slide>
<slide>slides/ezc/install-pear.xml</slide>
<slide>slides/ezc/example-consoletools-table.xml</slide>
<slide>slides/ezc/example-consoletools-progressbar.xml</slide>
<slide>slides/ezc/example-eventlog.xml</slide>
<!-- database -->
<slide>slides/ezc/example-database-instance.xml</slide>
<slide>slides/ezc/example-database-query.xml</slide>
<slide>slides/ezc/query-abstraction-intro.xml</slide>
<slide>slides/ezc/fluent-interface.xml</slide>
<slide>slides/ezc/bindvalue-bindparam.xml</slide>
<slide>slides/ezc/pesistent-object-abstraction-intro.xml</slide>
<slide>slides/ezc/example-persistentobject.xml</slide>
<slide>slides/ezc/example-imageconversion.xml</slide>
<slide>slides/ezc/example-imageconversion2.xml</slide>
<slide>slides/ezc/image-conversion-intro.xml</slide>
<slide>slides/ezc/example-imageconversion-album.xml</slide>
<slide>slides/xdebug/live-demo.xml</slide>
<slide>slides/ezc/example-mail.xml</slide>
<slide>slides/ezc/mail-diagram.xml</slide>
<slide>slides/ezc/example-mail-parse.xml</slide>
<slide>slides/ezc/example-mail-summary.xml</slide>
<slide>slides/ezc/example-template-mail.xml</slide>
<slide>slides/ezc/graph-overview.xml</slide>
<slide>slides/ezc/example-graph.xml</slide>
<slide>slides/ezc/example-graph-result.xml</slide>
<slide>slides/ezc/example-graph2.xml</slide>
<slide>slides/ezc/example-graph2-result.xml</slide>
<slide>slides/ezc/example-feed.xml</slide>
<slide>slides/ezc/example-feed2.xml</slide>
<slide>slides/xdebug/live-demo.xml</slide>
<!-- what's next? -->
<slide>slides/ezc/future-2006.2-2007.1.xml</slide>
<slide>slides/ezc/contributing.xml</slide>
<slide>slides/ezc/questions.xml</slide>
</presentation>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -0,0 +1,32 @@
<slide>
<title>Database</title>
<subtitle>Prepared Statements</subtitle>
<list>
<bullet>Safer: No manual quoting required</bullet>
<bullet>Faster: The query is only compiled once</bullet>
</list>
<example><![CDATA[<?php
$country = $normalized_name = $name = $province = $lat = $lon = null;
$sq = $db->createInsertQuery();
$sq->insertInto( 'city' )
->set( 'country', $sq->bindParam( $country ) )
->set( 'normalized_name', $sq->bindParam( $normalized_name ) )
->set( 'name', $sq->bindParam( $name ) )
->set( 'province', $sq->bindParam( $province ) )
->set( 'lat', $sq->bindParam( $lat ) )
->set( 'lon', $sq->bindParam( $lon ) );
$stmt = $sq->prepare();
do {
$line = fgets( $fd ); if ( feof( $fd ) ) break;
$elements = explode( "\t", $line );
list( $country, $normalized_name, $name, $province, $lat, $lon ) = $elements;
$stmt->execute();
} while ( true );
?>]]></example>
</slide>

View File

@@ -4,7 +4,7 @@ require 'ezc-setup.php';
$db1 = ezcDbFactory::create( 'mysql://root@localhost/ezc' );
ezcDbInstance::set( $db1, 'ezc' );
$trunk = ezcDbFactory::create( 'mysql://root@localhost/eztrunk' );
$trunk = ezcDbFactory::create( 'mysql://root@localhost/trip' );
ezcDbInstance::set( $trunk, 'ezt' );
$db = ezcDbInstance::get( 'ezt' );

View File

@@ -4,6 +4,7 @@
<blurb>Supported Handlers:</blurb>
<list>
<bullet>MS SQL</bullet>
<bullet>MySQL</bullet>
<bullet>PostgreSQL</bullet>
<bullet>Oracle</bullet>
@@ -11,7 +12,7 @@
</list>
<blurb>Using Instances:</blurb>
<example filename='database.php' result="1"/>
<example filename='database.php' result="0"/>
</slide>

View File

@@ -2,6 +2,10 @@
<title>Graph</title>
<subtitle>Line-graph - Result</subtitle>
<image filename='graph1.png'/>
<blurb><![CDATA[
<div id="graph">
<iframe id="graphIn" src="/presentations/slides/ezc/graph1.php"/>
</div>
]]></blurb>
</slide>

View File

@@ -2,7 +2,11 @@
<title>Graph</title>
<subtitle>Pie chart - Result</subtitle>
<image align="center" filename='graph5.png'/>
<blurb><![CDATA[
<div id="graph">
<iframe id="graphIn" src="/presentations/slides/ezc/graph2.php"/>
</div>
]]></blurb>
<break lines="8"/>
<blurb>The Graph component outputs:</blurb>

View File

@@ -0,0 +1,6 @@
<slide>
<title>ImageConversion</title>
<subtitle>Album thumbnailing</subtitle>
<example filename='imageconversion-thumbnail-transformation.php'/>
</slide>

View File

@@ -1,14 +1,17 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<slide fontsize="6em">
<title>Mail</title>
<subtitle>Supported Transports and Formats</subtitle>
<blurb>Parsing from:</blurb>
<blurb>Sending with:</blurb>
<list>
<bullet>POP3 Servers</bullet>
<bullet>IMAP Servers</bullet>
<bullet>MBOX Files</bullet>
<bullet>Single Mail Files</bullet>
<bullet>Variables</bullet>
<bullet>SMTP</bullet>
<bullet>"MTA" (PHP's mail())</bullet>
</list>
<blurb>Reading from:</blurb>
<list>
<bullet>POP3, IMAP, MBOX, Files, Variables</bullet>
</list>
<blurb>Supported formats:</blurb>
@@ -19,4 +22,7 @@
<bullet>multipart/digest: mailinglist digests</bullet>
</list>
<blurb>Overview:</blurb>
<link>http://ez.no/doc/components/view/latest/(file)/Mail_rfcs.html</link>
</slide>

View File

@@ -1,6 +1,6 @@
<slide>
<title>Mail</title>
<subtitle>Creating and Sending Mail</subtitle>
<subtitle>Easy Mail Creation</subtitle>
<example filename='mail.php' result="1"/>
<example filename='mail.php' result="0"/>
</slide>

View File

@@ -1,5 +1,6 @@
<slide>
<title>Persistent Object</title>
<title>PersistentObject</title>
<subtitle>Example</subtitle>
<example encoding="iso-8859-1" filename='persistent-object.php'/>

307
slides/ezc/ez-1400.css Normal file
View File

@@ -0,0 +1,307 @@
<style title="Default" type="text/css">
body {
font-size: 11px;
margin-left:24px;
margin-right:0px;
margin-top:0em;
margin-bottom:0em;
background-image: url(presentations/slides/ezc/ez-background-1400.jpg);
background-attachment: fixed;
background-repeat: no-repeat;
overflow: -moz-scrollbars-none;
font-family: Arial, helvetica, sans-serif;
}
body.title
{
background-image: url(presentations/slides/ezc/ez-background-title-1400.jpg);
overflow: none;
}
div.sticky {
margin: 0;
position: fixed;
top: -0.5em;
left: 406px;
right: auto;
bottom: auto;
}
div.navbar {
padding: 4;
margin: 0;
height: 14em;
font-family: "MaxOT-book", verdana, tahoma, arial, helvetica, sans-serif;
z-index: 99;
}
div.navbar_title, div.navbar_title a, div.subtitle {
font-size: 36px;
color: #000000;
text-decoration: none;
text-align: left;
font-weight: bold;
margin-top: 28px;
}
body.title div.navbar
{
visibility: hidden; display: none;
}
div.subtitle {
margin-top: 0px;
font-size: 25px;
font-weight: normal;
font-style: italic;
}
div.navbar_nr a {
font-size: 18px;
color: #77a;
text-decoration: none;
position: fixed;
right: 10px;
bottom: 0px;
}
div.mainarea {
margin-top: 180px;
margin-left: 20px;
padding-top: 10px;
padding-right: 20px;
width: 1335px;
height: 800px;
overflow: auto;
overflow: -moz-scrollbars-vertical;
}
body.title div.mainarea
{
margin-top: 380px;
overflow: -moz-scrollbars-none;
}
ul.pres {
list-style: circle;
font-size: 25pt;
}
ul.numbered
{
font-size: 28pt;
margin-right: 40px;
list-style-type: decimal;
}
ul.level2 {
list-style: circle;
font-size: 22pt;
margin-left: 40px;
margin-top: -15px;
}
li.pres_bullet, div.link {
font-size: 28pt;
margin-right: 40px;
}
li.pres_bullet_nr {
font-size: 28pt;
margin-right: 40px;
list-style-type: decimal;
}
ul.large div li.pres_bullet
{
font-size: 36pt;
}
ul.small div li.pres_bullet
{
font-size: 22pt;
}
div.title_blurb {
font-size: 90px;
text-align: center;
font-weight: bold;
}
div.small_blurb {
font-size: 25px;
}
div.blurb, div.bit_larger_output_text {
font-size: 28pt;
width: 100%;
}
div.bit_larger_output_text {
margin-top: 13px;
}
div.x_small_blurb {
font-size: 0.5em;
}
div.large_blurb {
font-size: 36pt;
}
div.large_blurb_center {
font-size: 53px;
text-align: center;
}
div.blurb_center {
text-align: center;
}
div.quote {
font-size: 45px;
text-align: center;
margin-left: 40px;
margin-right: 40px;
}
div.quote_attr {
font-size: 33px;
text-align: right;
margin-right: 40px;
}
div.xx_large_blurb_center {
font-size: 90px;
text-align: center;
}
div.q_mark {
text-align: center;
font-size: 538px;
}
div.shadow, code {
font-size: 16px; width: 1240px;
}
div.example code, div.highlight code, div.bit_larger, div.bit_larger code, div.bit_larger_output {
background: #eee;
font-size: 22px;
width: 100%;
font-weight: bold;
}
div.example, div.highlight, div.bit_larger, div.bit_larger_output {
margin-left: 20px;
margin-right: 20px;
}
div.bit_larger_output {
background: #e6e300;
font-size: 28pt;
font-weight: normal;
}
div.large code, div.large {
font-size: 36px;
background: #eee;
font-weight: bold;
margin-left: 20px;
margin-right: 20px;
}
div.highlight code, div.highlight {
background: #fffc00;
font-weight: bold;
}
div.code_small, div.code_medium, div.code_large, div.example {
background: #eee;
}
div.code_small code {
font-size: 14px;
}
div.code_medium code, div.code_medium pre {
font-size: 22px;
}
div.code_large code, div.code_large pre {
font-size: 25px;
}
div.example pre {
font-size: 22px;
font-weight: bold;
}
div.event, div.event-date, div.event-presenter {
text-align: center;
font-size: 36pt;
font-family: "MaxOT-book";
}
div.pres-url-small {
text-align: center;
font-size: 25pt;
font-family: "MaxOT-book";
}
img.spaced {
margin-right: 25px;
margin-left: 25px;
margin-top: 25px;
margin-bottom: 25px;
}
table {
font-size: 22pt;
}
table.dbtable {
border-spacing: 0px;
border-collapse: collapse;
}
table.dbtable tr {
margin: 0px;
padding: 0px;
background-color: #f00;
}
table.dbtable td {
margin: 0px;
padding: 1px 5px 1px 5px;
border: thin solid black;
background-color: #fff;
vertical-align: top;
}
table.dbtable td.header {
font-weight: bold;
text-align: center;
}
table.dbtable td.header-candidate-key {
font-weight: bold;
font-style: italic;
text-align: center;
color: blue;
}
table.dbtable td.header-key, table.dbtable td.header-key-moved-to {
font-weight: bold;
text-align: center;
color: red;
}
table.dbtable td.header-moved, table.dbtable td.moved {
border: 1px dotted #aaa;
color: #aaa;
}
table.dbtable td.header-moved, table.dbtable td.header-moved-to {
font-weight: bold;
}
table.dbtable td.header-moved-to, table.dbtable td.moved-to, table.dbtable td.header-key-moved-to {
border: 2px solid black;
}
div#graph {
text-align: center;
}
iframe#graphIn {
border-style: none; height: 700px; width: 1300px;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -92,7 +92,7 @@ ul.level2 {
}
li.pres_bullet, div.link {
font-size: 20pt;
font-size: 24pt;
margin-right: 40px;
}
@@ -122,8 +122,8 @@ div.small_blurb {
font-size: 18px;
}
div.blurb, div.bit_larger_output_text {
font-size: 20pt;
div.blurb, div.bit_larger_output_text, div.output {
font-size: 24pt;
width: 100%;
}
@@ -172,12 +172,13 @@ div.q_mark {
}
div.shadow, code {
font-size: 14px; width: 920px;
width: 920px;
font-size: 18px;
}
div.example code, div.highlight code, div.bit_larger, div.bit_larger code, div.bit_larger_output {
background: #eee;
font-size: 16px;
font-size: 20px;
width: 100%;
font-weight: bold;
}
@@ -294,4 +295,12 @@ table.dbtable td.header-moved, table.dbtable td.header-moved-to {
table.dbtable td.header-moved-to, table.dbtable td.moved-to, table.dbtable td.header-key-moved-to {
border: 2px solid black;
}
div#graph {
text-align: center;
}
iframe#graphIn {
border-style: none; height: 600px; width: 1000px;
}
</style>

View File

@@ -1,5 +1,5 @@
<?php
ini_set( 'include_path', '/home/httpd/ezcomponents/trunk:.' );
ini_set( 'include_path', '/home/derick/dev/ezcomponents/trunk:.' );
require 'Base/src/base.php';
function __autoload( $className )

View File

@@ -0,0 +1,31 @@
<slide>
<title>Database</title>
<subtitle>Fluent Interface</subtitle>
<blurb>Works by returning the object that a method is called on after
the method does it's work.</blurb>
<break lines="2"/>
<example><![CDATA[<?php
public function from()
{
if ( $this->fromString == '' )
{
$this->fromString = 'FROM ';
}
// ...
$this->fromString .= join( ', ', $tables );
return $this;
}
?>]]></example>
<break lines="2"/>
<blurb>Allows for chaining of calls:</blurb>
<break lines="2"/>
<example><![CDATA[<?php
$q->select( '*' )->from( 'quotes' )
->where( $e->eq( 'author', $q->bindValue( 'Robert Foster' ) ) );
?>]]></example>
</slide>

View File

@@ -5,18 +5,17 @@
<blurb>New components:</blurb>
<list>
<bullet>*Authentication*: Graphs and diagrams</bullet>
<bullet>*Feed*: Reading and writing RSS/Atom feeds</bullet>
<bullet>*Authentication*: Authentication against database, Typekey, (OpenID)</bullet>
<bullet>*Workflow*: Workflow engine</bullet>
</list>
<blurb>Additions to components:</blurb>
<list>
<bullet>*Database*: SQL Server driver, Debugging support</bullet>
<bullet>*DatabaseSchema*: Foreign Key support</bullet>
<bullet>*Mail*: Caching, other additions</bullet>
<bullet>*Database*: SQL Server driver</bullet>
<bullet>*Graph*: Radar charts, PDO data sets</bullet>
<bullet>*Mail*: Caching, SSL support</bullet>
<bullet>*PersistentObject*: Class stub generation</bullet>
<bullet>*Template*: Caching, Character set support and Translation Tie-in </bullet>
<bullet>*Template*: Caching</bullet>
</list>
<blurb>Roadmap: http://issues.ez.no/RoadMap.php?Id=487</blurb>

View File

@@ -0,0 +1,23 @@
<slide>
<title>Graph</title>
<subtitle>Introduction</subtitle>
<blurb>Creates different kinds of diagrams:</blurb>
<list>
<bullet>Line charts</bullet>
<bullet>Bar charts</bullet>
<bullet>Pie charts</bullet>
<bullet>Radar charts</bullet>
</list>
<blurb>Drivers: GD, SVG, Flash</blurb>
<break/>
<blurb>Renderers: 2D, 3D</blurb>
<break/>
<blurb>Datasets: Array, Numeric, PDO, Average (Polynomal)</blurb>
<break/>
<blurb>Axis: Date, Numeric, labeled, Logarithmic</blurb>
<break/>
<blurb>Palettes: Black, eZ, Tango, User Defined</blurb>
</slide>

View File

@@ -21,6 +21,6 @@ $chart->data['ips'] = new ezcGraphArrayDataSet( $ips );
$chart->data['ips']->label = 'IP addresses';
$chart->driver = new ezcGraphSvgDriver();
$chart->render( 700, 400, 'php://output' );
$chart->render( 600, 400, 'php://output' );
?>

View File

@@ -0,0 +1,19 @@
<slide>
<title>ImageConversion</title>
<subtitle>Introduction</subtitle>
<list>
<bullet>Filters and Transformations</bullet>
<bullet>Different backends: GD and ImageMagick</bullet>
</list>
<blurb>Supported filters:</blurb>
<list>
<bullet>Colorspace: monochrome, sepia and grey</bullet>
<bullet>Effects: border, noise, swirl</bullet>
<bullet>Geometry: crop, scale</bullet>
<bullet>Thumbnail</bullet>
<bullet>Watermark</bullet>
</list>
</slide>

View File

@@ -0,0 +1,25 @@
<?php
require 'ezc-setup.php';
// Setup
$filters = array();
$settings = new ezcImageConverterSettings(
array( new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ) )
);
$converter = new ezcImageConverter( $settings );
// Create transformation
$filters[] = new ezcImageFilter(
'croppedThumbnail', array( 'width' => 128, 'height' => 128 )
);
$converter->createTransformation(
'doThumbnail', $filters, array( 'image/png' )
);
foreach ( glob ( '*.[Jj][Pp][Gg]') as $file )
{
$converter->transform(
'doThumbnail', $file, "thumbnails/{$file}.png"
);
}
?>

View File

@@ -5,21 +5,19 @@
<blurb>Installation:</blurb>
<example><![CDATA[// download the bundle from http://ez.no/download/ez_components
tar -xjf ezcomponents-2006.2.tar.bz2
tar -xjf ezcomponents-2007.1beta1.tar.bz2
pwd]]></example>
<break lines="3"/>
<blurb>Setup:</blurb>
<example result='1'><![CDATA[<?php
ini_set( 'include_path', '/home/httpd/ezcomponents-2006.2:.' );
<example result='0'><![CDATA[<?php
ini_set( 'include_path', '/home/httpd/ezcomponents-2007.1beta1:.' );
require 'Base/src/base.php';
function __autoload( $className )
{
ezcBase::autoload( $className );
}
ezcBase::checkDependency( 'Test', ezcBase::DEP_PHP_VERSION, '5.3.0' );
?>]]></example>
</slide>

View File

@@ -11,14 +11,12 @@ pear install ezc/ezcomponents]]></example>
<break lines="3"/>
<blurb>Setup:</blurb>
<example result='1'><![CDATA[<?php
<example result='0'><![CDATA[<?php
require 'ezc/Base/base.php';
function __autoload( $className )
{
ezcBase::autoload( $className );
}
ezcBase::checkDependency( 'Test', ezcBase::DEP_PHP_VERSION, '5.3.0' );
?>]]></example>
</slide>

189
slides/ezc/mail-diagram.svg Normal file
View File

@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
<!ATTLIST svg xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
]>
<!-- Generated by dot version 2.8 (Fri Dec 8 12:52:02 UTC 2006)
For user: (derick) Derick Rethans,,, -->
<!-- Title: Test Pages: 1 -->
<svg width="100%" height="100%"
viewBox = "0 0 712 726"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" style="font-family:Times-Roman;font-size:14.00;">
<title>Test</title>
<polygon style="fill:white;stroke:white;" points="-2,728 -2,-2 714,-2 714,728 -2,728"/>
<!-- 0 -->
<g id="node1" class="node"><title>0</title>
<text text-anchor="middle" x="260" y="26" style="font-family:Arial;">From: </text>
<polygon style="fill:none;stroke:black;" points="218,31 218,11 301,11 301,31 218,31"/>
<text text-anchor="middle" x="444" y="26" style="font-family:Arial;">John Doe &lt;john@doe.com&gt;</text>
<polygon style="fill:none;stroke:black;" points="303,31 303,11 584,11 584,31 303,31"/>
<text text-anchor="middle" x="260" y="48" style="font-family:Arial;">To: </text>
<polygon style="fill:none;stroke:black;" points="218,53 218,33 301,33 301,53 218,53"/>
<text text-anchor="middle" x="444" y="48" style="font-family:Arial;">Derick Rethans &lt;dr@ez.no&gt;</text>
<polygon style="fill:none;stroke:black;" points="303,53 303,33 584,33 584,53 303,53"/>
<text text-anchor="middle" x="260" y="70" style="font-family:Arial;">Date: </text>
<polygon style="fill:none;stroke:black;" points="218,75 218,55 301,55 301,75 218,75"/>
<text text-anchor="middle" x="444" y="70" style="font-family:Arial;">Fri, 21 Apr 06 14:04:46 +0200</text>
<polygon style="fill:none;stroke:black;" points="303,75 303,55 584,55 584,75 303,75"/>
<text text-anchor="middle" x="260" y="92" style="font-family:Arial;">Subject: </text>
<polygon style="fill:none;stroke:black;" points="218,97 218,77 301,77 301,97 218,97"/>
<text text-anchor="middle" x="444" y="92" style="font-family:Arial;">Example of an HTML email with attachments</text>
<polygon style="fill:none;stroke:black;" points="303,97 303,77 584,77 584,97 303,97"/>
<text text-anchor="middle" x="260" y="114" style="font-family:Arial;">MessageId: </text>
<polygon style="fill:none;stroke:black;" points="218,119 218,99 301,99 301,119 218,119"/>
<text text-anchor="middle" x="444" y="114" style="font-family:Arial;">&lt;2006042114142146.32705.2@doe.com&gt;</text>
<polygon style="fill:none;stroke:black;" points="303,119 303,99 584,99 584,119 303,119"/>
<polygon style="fill:none;stroke:black;" points="215,122 215,8 587,8 587,122 215,122"/>
</g>
<!-- 1 -->
<g id="node3" class="node"><title>1</title>
<text text-anchor="middle" x="401" y="185" style="font-family:Arial;">1. ezcMailMultipartMixed</text>
<polygon style="fill:none;stroke:black;" points="322,190 322,170 480,170 480,190 322,190"/>
<polygon style="fill:none;stroke:black;" points="319,193 319,167 483,167 483,193 319,193"/>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge2" class="edge"><title>0&#45;&gt;1</title>
<path style="fill:none;stroke:black;" d="M401,126C401,135 401,144 401,152"/>
<polygon style="fill:black;stroke:black;" points="405,152 401,162 398,152 405,152"/>
</g>
<!-- 1.1 -->
<g id="node5" class="node"><title>1.1</title>
<text text-anchor="middle" x="291" y="257" style="font-family:Arial;">1.1. ezcMailMultipartAlternative</text>
<polygon style="fill:none;stroke:black;" points="192,262 192,242 390,242 390,262 192,262"/>
<polygon style="fill:none;stroke:black;" points="189,265 189,239 393,239 393,265 189,265"/>
</g>
<!-- 1&#45;&gt;1.1 -->
<g id="edge4" class="edge"><title>1&#45;&gt;1.1</title>
<path style="fill:none;stroke:black;" d="M373,198C359,207 342,218 327,228"/>
<polygon style="fill:black;stroke:black;" points="328,231 318,234 324,226 328,231"/>
</g>
<!-- 1.2 -->
<g id="node21" class="node"><title>1.2</title>
<text text-anchor="middle" x="512" y="257" style="font-family:Arial;">1.2. ezcMailFile</text>
<polygon style="fill:none;stroke:black;" points="461,262 461,242 563,242 563,262 461,262"/>
<polygon style="fill:none;stroke:black;" points="458,265 458,239 566,239 566,265 458,265"/>
</g>
<!-- 1&#45;&gt;1.2 -->
<g id="edge20" class="edge"><title>1&#45;&gt;1.2</title>
<path style="fill:none;stroke:black;" d="M429,198C443,207 461,218 476,228"/>
<polygon style="fill:black;stroke:black;" points="478,225 484,234 474,231 478,225"/>
</g>
<!-- 1.1.1 -->
<g id="node7" class="node"><title>1.1.1</title>
<text text-anchor="middle" x="96" y="372" style="font-family:Arial;">1.1.1. ezcMailText</text>
<polygon style="fill:none;stroke:black;" points="37,377 37,357 155,357 155,377 37,377"/>
<polygon style="fill:none;stroke:black;" points="34,380 34,354 158,354 158,380 34,380"/>
</g>
<!-- 1.1&#45;&gt;1.1.1 -->
<g id="edge6" class="edge"><title>1.1&#45;&gt;1.1.1</title>
<path style="fill:none;stroke:black;" d="M247,270C225,280 198,292 175,306 158,317 140,331 125,343"/>
<polygon style="fill:black;stroke:black;" points="127,346 117,349 123,340 127,346"/>
</g>
<!-- 1.1.2 -->
<g id="node11" class="node"><title>1.1.2</title>
<text text-anchor="middle" x="291" y="372" style="font-family:Arial;">1.1.2. ezcMailMultipartRelated</text>
<polygon style="fill:none;stroke:black;" points="195,377 195,357 387,357 387,377 195,377"/>
<polygon style="fill:none;stroke:black;" points="192,380 192,354 390,354 390,380 192,380"/>
</g>
<!-- 1.1&#45;&gt;1.1.2 -->
<g id="edge10" class="edge"><title>1.1&#45;&gt;1.1.2</title>
<path style="fill:none;stroke:black;" d="M291,270C291,289 291,317 291,339"/>
<polygon style="fill:black;stroke:black;" points="295,339 291,349 288,339 295,339"/>
</g>
<!-- 1.1.1.content -->
<g id="node9" class="node"><title>1.1.1.content</title>
<text text-anchor="middle" x="96" y="486" style="font-family:Arial;">Original Charset: us&#45;ascii</text>
<polygon style="fill:none;stroke:black;" points="15,491 15,471 177,471 177,491 15,491"/>
<text text-anchor="middle" x="96" y="508" style="font-family:Arial;">Charset: utf&#45;8</text>
<polygon style="fill:none;stroke:black;" points="15,513 15,493 177,493 177,513 15,513"/>
<text text-anchor="middle" x="96" y="530" style="font-family:Arial;">Encoding: 8bit</text>
<polygon style="fill:none;stroke:black;" points="15,535 15,515 177,515 177,535 15,535"/>
<text text-anchor="middle" x="96" y="552" style="font-family:Arial;">Type: plain</text>
<polygon style="fill:none;stroke:black;" points="15,557 15,537 177,537 177,557 15,557"/>
<polygon style="fill:none;stroke:black;" points="12,560 12,468 180,468 180,560 12,560"/>
</g>
<!-- 1.1.1&#45;&gt;1.1.1.content -->
<g id="edge8" class="edge"><title>1.1.1&#45;&gt;1.1.1.content</title>
<path style="fill:none;stroke:black;stroke-dasharray:5,2;" d="M96,385C96,402 96,428 96,454"/>
<polygon style="fill:black;stroke:black;" points="100,454 96,464 93,454 100,454"/>
</g>
<!-- 1.1.2.0 -->
<g id="node13" class="node"><title>1.1.2.0</title>
<text text-anchor="middle" x="286" y="519" style="font-family:Arial;">1.1.2.0. ezcMailText</text>
<polygon style="fill:none;stroke:black;" points="221,524 221,504 351,504 351,524 221,524"/>
<polygon style="fill:none;stroke:black;" points="218,527 218,501 354,501 354,527 218,527"/>
</g>
<!-- 1.1.2&#45;&gt;1.1.2.0 -->
<g id="edge12" class="edge"><title>1.1.2&#45;&gt;1.1.2.0</title>
<path style="fill:none;stroke:black;" d="M290,385C289,410 288,455 287,486"/>
<polygon style="fill:black;stroke:black;" points="291,486 287,496 284,486 291,486"/>
</g>
<!-- 1.1.2.1 -->
<g id="node17" class="node"><title>1.1.2.1</title>
<text text-anchor="middle" x="510" y="519" style="font-family:Arial;">1.1.2.1. ezcMailFile</text>
<polygon style="fill:none;stroke:black;" points="447,524 447,504 573,504 573,524 447,524"/>
<polygon style="fill:none;stroke:black;" points="444,527 444,501 576,501 576,527 444,527"/>
</g>
<!-- 1.1.2&#45;&gt;1.1.2.1 -->
<g id="edge16" class="edge"><title>1.1.2&#45;&gt;1.1.2.1</title>
<path style="fill:none;stroke:black;" d="M318,385C357,411 431,460 475,490"/>
<polygon style="fill:black;stroke:black;" points="477,487 483,496 473,493 477,487"/>
</g>
<!-- 1.1.2.0.content -->
<g id="node15" class="node"><title>1.1.2.0.content</title>
<text text-anchor="middle" x="258" y="633" style="font-family:Arial;">Original Charset: us&#45;ascii</text>
<polygon style="fill:none;stroke:black;" points="177,638 177,618 339,618 339,638 177,638"/>
<text text-anchor="middle" x="258" y="655" style="font-family:Arial;">Charset: utf&#45;8</text>
<polygon style="fill:none;stroke:black;" points="177,660 177,640 339,640 339,660 177,660"/>
<text text-anchor="middle" x="258" y="677" style="font-family:Arial;">Encoding: 8bit</text>
<polygon style="fill:none;stroke:black;" points="177,682 177,662 339,662 339,682 177,682"/>
<text text-anchor="middle" x="258" y="699" style="font-family:Arial;">Type: html</text>
<polygon style="fill:none;stroke:black;" points="177,704 177,684 339,684 339,704 177,704"/>
<polygon style="fill:none;stroke:black;" points="174,707 174,615 342,615 342,707 174,707"/>
</g>
<!-- 1.1.2.0&#45;&gt;1.1.2.0.content -->
<g id="edge14" class="edge"><title>1.1.2.0&#45;&gt;1.1.2.0.content</title>
<path style="fill:none;stroke:black;stroke-dasharray:5,2;" d="M283,532C279,549 274,576 270,601"/>
<polygon style="fill:black;stroke:black;" points="273,602 268,611 267,601 273,602"/>
</g>
<!-- 1.1.2.1.content -->
<g id="node19" class="node"><title>1.1.2.1.content</title>
<text text-anchor="middle" x="538" y="622" style="font-family:Arial;">Disposition Type: attachment</text>
<polygon style="fill:none;stroke:black;" points="379,627 379,607 697,607 697,627 379,627"/>
<text text-anchor="middle" x="538" y="644" style="font-family:Arial;">Content Type: application</text>
<polygon style="fill:none;stroke:black;" points="379,649 379,629 697,629 697,649 379,649"/>
<text text-anchor="middle" x="538" y="666" style="font-family:Arial;">Mime Type: octet&#45;stream</text>
<polygon style="fill:none;stroke:black;" points="379,671 379,651 697,651 697,671 379,671"/>
<text text-anchor="middle" x="538" y="688" style="font-family:Arial;">Content ID: consoletools&#45;table.png@1421450</text>
<polygon style="fill:none;stroke:black;" points="379,693 379,673 697,673 697,693 379,693"/>
<text text-anchor="middle" x="538" y="710" style="font-family:Arial;">Filename: /tmp/9609&#45;1/consoletools&#45;table.png</text>
<polygon style="fill:none;stroke:black;" points="379,715 379,695 697,695 697,715 379,715"/>
<polygon style="fill:none;stroke:black;" points="376,718 376,604 700,604 700,718 376,718"/>
</g>
<!-- 1.1.2.1&#45;&gt;1.1.2.1.content -->
<g id="edge18" class="edge"><title>1.1.2.1&#45;&gt;1.1.2.1.content</title>
<path style="fill:none;stroke:black;stroke-dasharray:5,2;" d="M513,532C516,547 520,568 524,590"/>
<polygon style="fill:black;stroke:black;" points="527,590 526,600 521,591 527,590"/>
</g>
<!-- 1.2.content -->
<g id="node23" class="node"><title>1.2.content</title>
<text text-anchor="middle" x="543" y="328" style="font-family:Arial;">Disposition Type: attachment</text>
<polygon style="fill:none;stroke:black;" points="427,333 427,313 659,313 659,333 427,333"/>
<text text-anchor="middle" x="543" y="350" style="font-family:Arial;">Content Type: application</text>
<polygon style="fill:none;stroke:black;" points="427,355 427,335 659,335 659,355 427,355"/>
<text text-anchor="middle" x="543" y="372" style="font-family:Arial;">Mime Type: octet&#45;stream</text>
<polygon style="fill:none;stroke:black;" points="427,377 427,357 659,357 659,377 427,377"/>
<text text-anchor="middle" x="543" y="394" style="font-family:Arial;">Content ID: </text>
<polygon style="fill:none;stroke:black;" points="427,399 427,379 659,379 659,399 427,399"/>
<text text-anchor="middle" x="543" y="416" style="font-family:Arial;">Filename: /tmp/9609&#45;2/mail.php</text>
<polygon style="fill:none;stroke:black;" points="427,421 427,401 659,401 659,421 427,421"/>
<polygon style="fill:none;stroke:black;" points="424,424 424,310 662,310 662,424 424,424"/>
</g>
<!-- 1.2&#45;&gt;1.2.content -->
<g id="edge22" class="edge"><title>1.2&#45;&gt;1.2.content</title>
<path style="fill:none;stroke:black;stroke-dasharray:5,2;" d="M517,270C519,277 522,287 524,296"/>
<polygon style="fill:black;stroke:black;" points="527,295 527,306 521,297 527,295"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<slide fontsize="6em">
<title>Mail Creation</title>
<subtitle>Diagram</subtitle>
<blurb><![CDATA[
<div id="graph">
<iframe id="graphIn" src="/presentations/slides/ezc/mail-diagram.svg"/>
</div>
]]></blurb>
</slide>

View File

@@ -1,29 +1,25 @@
<?php
require 'ezc-setup.php';
$dir = dirname( __FILE__ );
$mail = new ezcMailComposer();
// from and to addresses, and subject
$mail->from = new ezcMailAddress( 'john@doe.com', 'John Doe' );
$mail->addTo( new ezcMailAddress( 'dr@ez.no', 'Derick Rethans' ) );
$mail->subject = "Example of an HTML email with attachments";
$mail->plainText = "Here is the text version of the mail.
This is displayed if the client can not understand HTML";
// body: plain
$mail->plainText = "Here is the text version of the mail.";
// body: html
$mail->htmlText = <<<ENDHTML
<html>
Here is the HTML version of your mail
with an image: <img src='file://$dir/consoletools-table.png'/>
</html>
<html>Here is the HTML version of your mail with an image: <img
src='file://$dir/consoletools-table.png'/></html>
ENDHTML;
// add an attachment
$mail->addAttachment( "$dir/mail.php" );
$mail->build();
echo "<pre><font size='4'>",
htmlspecialchars(
$mail->generateHeaders() . "\r\n" . $mail->generateBody() );
// send the mail
$transport = new ezcMailTransportSmtp( 'localhost', null, null, 2525 );
//$transport->send( $mail );
$transport->send( $mail );
?>

View File

@@ -2,5 +2,9 @@
<slide fontsize="6em">
<title>Overview</title>
<image align="center" filename="all_your_base.png" pdf-scale="0.75"/>
<blurb><![CDATA[
<div id="graph">
<iframe id="graphIn" src="http://kossu/test/allyourbase.svg"/>
</div>
]]></blurb>
</slide>

View File

@@ -1,8 +1,7 @@
<?php
require 'ezc-setup.php';
$session = new ezcPersistentSession(
ezcDbInstance::get(),
new ezcPersistentCodeManager( "path/to/definitions" )
ezcDbInstance::get(), new ezcPersistentCodeManager( "path/to/definitions" )
);
// Creating New Objects
@@ -17,12 +16,10 @@ $q = $session->createFindQuery( 'City' );
$q->where(
$sq->expr->like( 'name', $sq->bindValue( 'oslo%' ) )
)
->orderBy( 'country', 'name' )
->limit( 10 );
->orderBy( 'country', 'name' )->limit( 10 );
$objects = $session->findIterator( $q, 'City' );
foreach ( $objects as $object )
{
// ...
}
?>

View File

@@ -0,0 +1,22 @@
<slide>
<title>PersistentObject</title>
<subtitle>Introduction</subtitle>
<list>
<bullet>Sits on top of Database</bullet>
<bullet>Object Relational Model</bullet>
<bullet>Based on Hibernate - not Active Record</bullet>
<bullet>Uses definition files, which can be auto generated by a script
as part of the PersistentObjectDatabaseSchemaTiein:</bullet>
</list>
<example><![CDATA[php rungenerator.php
-s mysql://root@localhost/geolocation -f mysql /tmp]]></example>
<list>
<bullet>The classes itself can also be generated by this script</bullet>
<bullet>Work is being done to allow definitions to be generated on the fly from annotated source code</bullet>
</list>
</slide>

View File

@@ -0,0 +1,25 @@
<slide>
<title>Database</title>
<subtitle>Query Abstraction</subtitle>
<blurb>Allows writing SQL that works for all supported databases, without
having to deal with differences in SQL dialects.</blurb>
<break lines="2"/>
<blurb>Supported SQL categories:</blurb>
<list>
<bullet>SELECT: %$db->createSelectQuery();%</bullet>
<bullet>INSERT: %$db->createInsertQuery();%</bullet>
<bullet>UPDATE: %$db->createUpdateQuery();%</bullet>
<bullet>DELETE: %$db->createDeleteQuery();%</bullet>
</list>
<blurb>Query object:</blurb>
<list>
<bullet>Uses a "fluent-interface"</bullet>
<bullet>Exposes an expression object through %$db->e%.</bullet>
</list>
</slide>