So I finally tried to get my head around extensions and took a run at this.
It seems to work, but since this is my first run, I’d be very grateful for any tips or improvements anyone can offer:
<?php
class entry_id_in_url_title
{
var $settings = array();
var $name = 'Entry_id in url_title';
var $version = '1.0';
var $description = 'Inserts entry_id into url_title when submitting new entry';
var $settings_exist = 'n';
var $docs_url = '';
function entry_id_in_url_title($settings='')
{
$this->settings = $settings;
}
function insert_entry_id($entry_id, $data, $ping_message)
{
if (array_key_exists('entry_id', $data)) // only perform if this is a new entry (not an update)
{
$new_url_title = $entry_id.'-'.$data['url_title'];
$_POST['url_title'] = $new_url_title; // in case any other extensions are making use of the $_POST data
// save to the database
global $DB, $FNS;
$update_data = array('url_title' => $new_url_title);
$sql = $DB->update_string('exp_weblog_titles', $update_data, "entry_id = '{$entry_id}'");
$DB->query($sql);
$FNS->clear_caching('all');
}
}
function activate_extension()
{
global $DB;
$DB->query($DB->insert_string('exp_extensions',
array(
'extension_id' => '',
'class' => 'entry_id_in_url_title',
'method' => 'insert_entry_id',
'hook' => 'submit_new_entry_end',
'settings' => '',
'priority' => 10,
'version' => $this->version,
'enabled' => 'y'
)
)
);
}
function disable_extension()
{
global $DB;
$DB->query("DELETE FROM exp_extensions WHERE class = 'entry_id_in_url_title'");
}
}
?>