EllisLab text mark

Better Model Searching in ExpressionEngine 3.4

With ExpressionEngine 3.4 we’ve added a new search() function to our models. It’s a clean API that developers will love. No more debugging of LIKE queries or complex string pre-processing. In the past you may have done something like this:

    ->join('channel_data', 'exp_channel_titles.entry_id = exp_channel_data.entry_id ', 'left');

$words = explode(' ', $search);

foreach ($words as $word)
    ee()->db->like('title', $word);

$entries =

Continue Reading

ExpressionEngine Conference 2016 Call for Papers

Madison Event Center auditorium

The ExpressionEngine Conference is coming to the midwest this year on October 3 & 4th. Details for attendees will be made available soon via the conference website. This year we’re lending a hand in getting the best speakers and presenters. We sent out a call for papers via our newsletter and Twitter, and the response has been great. The lineup is looking fantastic so far!

If you haven’t submitted your proposal to speak yet, there are only 10 days left to do so. And the bar has been set high

Continue Reading

ExpressionEngine 3.4.0 Developer Preview

Developers now have their hands on a preview of ExpressionEngine 3.4.0. The primary reason for a developer preview is a new feature available to third-party developers: custom control panel menus.

custom control panel navigation items

Third-party developers can now add control panel navigation items with a dead simple API. It allows the creation of single item menus, dropdown menus, fuzzy search filtering, and call to action items.

$sub = $menu->addSubmenu('Widget Maker');

foreach ($widgets as $id => $title)

Continue Reading

MySQL 5.7 on OS X: Server Has Gone Away

Exception Caught

SQLSTATE[HY000] [2006] MySQL server has gone away

Have you seen this error show up randomly while working in your local environment? I started getting this error randomly after updating to MySQL 5.7, and it’s really bugged me. I finally tracked it down so I thought I’d share my frustration and make this issue a bit more discoverable. MySQL and Unix internals are not my wheelhouse, so if I get some details wrong, please let me know so I can correct them.

tl;dr: MySQL 5.7 will break on OS X after too many connections are left open within eight hours. Restarting the server will fix it until the next time this occurs. You might be able to prevent this by dramatically reducing MySQL’s interactive_timeout and wait_timeout.

Continue Reading

GeeUp 2016: Automated Testing—It’s Not Just for Programmers

Kevin Cupp: Automated Testing

Adding features or making changes to a web site or app can cause anxiety. What if you break something and cause a bug? This week at the GeeUp conference in Leiden, EllisLab engineer Kevin Cupp will demistify automated testing. He will show you how you can know right away if your new changes are really working, increasing trust and stability of your code base.

The benefits of automated testing go beyond a programmer’s code. Kevin will also share some tips for automating tests that can help

Continue Reading

Time to Upgrade PHP

Now that both ExpressionEngine 3 and ExpressionEngine 2 are compatible with PHP 7, you may be wondering whether it’s worth the trouble asking your host to upgrade PHP. Why fix what’s not broken, right? If your host is resistant, certainly it’s not worth shopping for a better host, right?

There are three common myths for not updating your PHP version:

  • Web hosts don’t offer the newer version.
  • You don’t really gain a lot.
  • Things will break.

Let’s dispell these myths.

Continue Reading

In-App Add-On Documentation Tip

Hey developers, thought I’d pass along a sweet GitHub feature I just discovered. No doubt you are already taking advantage of ExpressionEngine 3’s in-app documentation feature for your add-ons. And you probably are also using GitHub or Bitbucket to maintain your source code. Both of these fantastic sites render README.md files on the home page of your repository.

If you use the following package structure, then your build/distribution path is clean for end users, and your in-app documentation

Continue Reading

ExpressionEngine 3.0 Public Preview, Beta 4

The fourth release of ExpressionEngine 3.0 Public Beta is here. For those of you following along at home, here’s what you need to know:

Beta 4 - released September 25, 2015

  • 70 Commits
  • 236 files have changed
  • 2,382 new lines of code and 1,829 deletions.

There were 29 notable changes:

  • Improved behavior of entry filtering in Relationship fields on the publish form.
  • Model properties can now be checked for emptiness with empty().
  • A custom database port can be specified in the database

Continue Reading

ExpressionEngine 3.0 Public Preview, Beta 3

Here is a brief update on the ExpressionEngine 3.0 Public Beta, now in its 3rd release.

Beta 3 - released September 18, 2015

  • 60 Commits
  • 100 files changed
  • 750 new lines of code and 2,897 deletions

There were 17 notable changes:

  • Relationships are hard, but finding the right one isn’t now that you can search ​all​ of them, not just the ones loaded into your publish page.
  • The Entry Manager has live filtering, and you can now bookmark the results directly.
  • Tables generated with the Table

Continue Reading

Public Preview Status Update for 3.0.0-beta.2

Here is a brief status update on the ExpressionEngine 3.0 Public Beta, now in its 2nd release.

Beta 2 - released September 11, 2015

  • 114 commits
  • 83 changed files
  • 1,178 new lines of code and 885 deletions.
  • 51 issues addressed:
    • Fixed a bug where Relationships were not saved on new entries.
    • Fixed a bug (#21095) where the post_save() fieldtype method was not being called on new entry submissions.
    • Fixed a bug (#21090) where the submit buttons on the template creation form performed the wrong

Continue Reading