Fields 7 API
Barry Jaspan, Acquia, Inc.
D6: CCK with hook_nodeapi, Many field types,
But tied to nodeapi, not users or comments.
D7: Field Attach API - Field module
Node calls field everywhere it would call nodeapi, but first.
Effectively, field is a nodeapi that gets called first. nodeapi still there
Just like cck calls to field modules to cool stuff - the fields module calls the same, some in core and some like date, image go into contrib.
field.module is the field attach api
Then, the field type api is what provides the fields for nodes and such
Creating fields in D7 Field uses a CRUD API that's in the CCK UI. CCK UI creates fields, but doesn't automatically attach only to nodes.
Anyone can use field attach - Users, Nodes, Comments and maybe fields in time.
Business Analytics in Drupal with Views
phase ii technology - does a lot of contrib work.
Recurring problems are fun - every now and then try to create a generic solution that works 80% of the time - rest of the time charge money for custom development
Work with a lot ofdata, working with data is fun, but you need to visual data in different ways
Use views to visualize some data - unfortunately, it's limited to rendering data in tabular ways, and lots of clients want charts and graphs. Wondered if this was cool for other people, and
People were wondering if this was even possible - cool idea, but what?
busyness analytics is a series thing - done with sap, or microsoft - nobody really thinks about ba with drupal/php. Showed list of famous PHP website as well as list of famous/serious Drupal sites like Onion, FastCompany, NY Observer, recovery.gov. So, Drupal is big business/serious
Databases: The Next Generation
Works for palantir.net
drupal 6 database layer
ext/mysql, ext/mysqli, ext/pgsql
PHP 3 based database handling.
Swapping include files
- can't use more than one db driver at once
Requires manual blob encoding because of postgressql
can't do custom field handling - can't support oracle or db2
No db-specific optimizations - lowest common dominator.
which means most folks do general mysql, postgres in the cold.
Requires manual type escaping, etc, which uses preg_callback, regex-based (slow)
No database replication support - sites will handle by hacking core.
no transaction support - node_save fails haflway, you get half of a node
String-concatination used to construct dynamic queries
all of it adds up to major DB fail
In 1997, 'Go PHP 5' started, we need to drop PHP 4.
Now can use PDO now that php5 is requried for drupal 7 Totally object oriented api
Handling asynchronous Data with drupal
link to notes at http://www.chapterthree.com/blog/josh_koenig/handling_aysnchronous_data_...
Technical - concepts then code - joy!
Josh_k giving the talk.
chapterthree.com - drupal-dojo cofounder
Old timer - user/3313
wants to help us prevent his mistakes.
Asynchronous data is the hotness - ajax/ahah, web 2.0
escape the page - become a platform/application
Provide a block of links to non-promoted posts - links clicked will cause data to appear at top of /node
* Build Object-Level Data into the DOM class, title, id
* Use drupal.settings for global Info
* Keep your HTML Compliant
* Degrade as Gracefully as Possible.
(Example of embedding data as class/title/link/id)
* Hook to DOM elements w/jQuery
* Better than $(document).ready()
* Override friendly
Apache Solr module
Jacob Singh and Peter Wolanin
cloud based for free on aquia - dropal.org is using solr.
relevant and fast results in apache solr. Filter down based on metadata - sortable. And content recommendation - that sounds good.
change how you navigate sites showing craigslist as bad example.
Information architecture is the science and art of guessing what your users want to see or do on your site and helping them get there.
architeypes - who
content - you got it
organzie and prosper - name groups as navigation
sports - menu item, international news - menu item
That's how we make sites - 1996 - what's wrong with that? Primary problem is that websites are more complicated than they used to be and content comes from other places.
also, websites do a lot more than they used to. And they grow, sometimes very fast, and in directions you didn't expect. So, in a month your content and menus are overflowing.
Keynote starting! :)
wants everyone to say hi.
State of Drupal
"Drupal rocks" - gets applause
Dries starting at 19/20?
showing off original message board - drop.org
own improvements + suggestions -> open source, 1.0.0 january 15, 2001
Need to continue to convince people to use drupal and your own modules.
history of drupal, mostly.
small meeting room in hotel, sold out 20 people, booked a second room, sold out again, and then a suite. 45 people - "amazing"
robert douglass - first drupal book - building online communities
lots of drupal books now.
showing off new drupal look.
code sprint for new drupal
drupal keeps doubling - 3 terabytes data per month?
more than 4000 modules
and it's free!
long tail of contributions - collaboration over planning
Code Freeze September 1 2009 -> six months until then.
tests - 78% and 100% pass.
linking machines, pages, data, things
"Giant global graph" - web 3.0
Aquia room 9am - Building apis that rock
Congratulations, you're a nerd. We knew that.
Eaton - lullabot
worked on a lot of apis, token, voting, form, amazon, twitter.
wants to help us avoid pitfalls
No Elmo - he has not written any code worth anything. :)
Drupal 2004: Lego blocks that fit together.
Now, even more lego blocks - easy to step on and hurt.
Not a 'bad' thing,
Need modules we can combine easily and effectively. Need to be able to build in layers, and pieces need to work together properly, and that's where apis fit in. apis are like the little divits on top of lego pieces that make them fit together.
picture of tug of war, knot on rope is your module. tug of war between all the cool things that your module does and what people want, Building code that does stuff is important.
What is an API?
99% of stuff we build is based on clicking around to set things up.
Setting up a view these days with Views2 can get you 90-95% of the way to what your client, or you, want, but sometimes you've got to go in and make a few tweaks to customize a view to what's needed. One hook that's useful for customizing is
In this helpful hook, you can add something to the foot of your view by using the
$view->attachment_after property and setting it to the proper html, or to the head by using the
$view->attachment_before property. You can also adjust what the view is doing, and since this is before the query execution, you can easily change settings such as the number of rows being returned.
I've got two Drupal modules that depend on reading through text to do something useful - the first is the 'Drupal Markup Engine', or dme, and the second is currently called 'pingv_coder', an extension to coder to check for what I think are poor programming practices, which isn't done yet.
In both of them I'm currently using regexp to scan and look for what I need - in the first I'm using some truly twisted regular expressions to find and isolate the tags that are left in the text. DME allows programmers to define custom tags in the format of <dme:tagname/> or <dme:tagname>...</dme:tagname>, and the code looks for these tags with regex. At the time I started, I read a lot of sites saying that parsing html-like or xml-like tags with regex wasn't the right way to go, and as I've improved and used my code, it seems more and more that that's true. It works well for the simple cases, but when you have tags nested inside of other tags, you start running into problems making sure you've got the right things nested. Happily, for the production sites we've used it in, the tags have been very simple, on the order of 'put this image here' and so on, and so there haven't been any problems.