You're right, that's what I did.
I created an extension called catalog_auto_insert_id and hooked it to catalogFrontendInsert using
Code:
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('catalog_auto_insert_id', 'insert_id');
in config.php
This is the code I wrote for the extension in catalog_auto_insert_id.php
Code:
<?php
class catalog_auto_insert_id extends Frontend {
/*
* Marco Zanetti - 2013-03-12
* Questa funzione viene chiamata ogni volta
* che un record viene inserito. Nel caso in cui
* il record venga inserito nella tabella
* va a salvare l'ID massimo precedentemente inserito
* per tale gruppo nel nuovo record
* L'ID viene salvato nel campo id_edizione che non ha
* vincoli di integrità. In questo modo l'utente può editarlo
* come preferisce senza andare ad intaccare l'ID vero e proprio del record
*
* This function is called each time
* a record is inserted. It takes the max ID previously
* inserted for the same tipology
* and uses that ID + 1
* The new ID is saved in the id_edizione field so it can be
* edited by the user while not changing the real record ID
*/
public function insert_id(&$strArticle, $objModule, $strTable)
{
if($strTable=='cat_edizioni' && is_null($strArticle['id_edition']))
{
//Extracts max numeric ID inserted for selected tipology
//Estrae il massimo ID numerico inserito finora per quella tipologia di record
$idToInsert = $this->Database->prepare("SELECT MAX(CAST(id_edition AS SIGNED INTEGER)) as id_to_use from ".$strTable." WHERE tipologia=?")->execute(intval($strArticle['
//We pick next counter
//Aumenta di uno il contatore
$idToInsert->id_to_use = ($idToInsert->id_to_use) + 1;
//Updates table edition ID with the new one
//Update dei dati in tabella con il nuovo ID
$objUpdatedItem = $this->Database->prepare('UPDATE '.$strTable.' set id_edition='.$idToInsert->id_to_use.' WHERE id=?')->execute($strArticle['id']);
}
}
}
?>
and it works!
Bookmarks