/**
  * Delete a record
  *
  * @param   integer $oid  The primary key value of the item to delete
  *
  * @throws  UnexpectedValueException
  *
  * @return  boolean  True on success
  */
 public function delete($oid = null)
 {
     if ($oid) {
         $this->load($oid);
     }
     $k = $this->_tbl_key;
     $pk = !$oid ? $this->{$k} : $oid;
     // If no primary key is given, return false.
     if (!$pk) {
         throw new UnexpectedValueException('Null primary key not allowed.');
     }
     // Execute the logic only if I have a primary key, otherwise I could have weird results
     if (!$this->onBeforeDelete($oid)) {
         return false;
     }
     // Delete the row by primary key.
     $query = $this->_db->getQuery(true);
     $query->delete();
     $query->from($this->_tbl);
     $query->where($this->_tbl_key . ' = ' . $this->_db->q($pk));
     $this->_db->setQuery($query);
     $this->_db->execute();
     $result = $this->onAfterDelete($oid);
     return $result;
 }