public function insertSlug($connection) { if (!isset($connection)) { $connection = QubitTransactionFilter::getConnection(QubitObject::DATABASE_NAME); } if (isset($this->slug)) { $statement = $connection->prepare(' INSERT INTO ' . QubitSlug::TABLE_NAME . ' (' . QubitSlug::OBJECT_ID . ', ' . QubitSlug::SLUG . ') VALUES (?, ?)'); // Unless it is set, get random, digit and letter slug if (1 > strlen($this->slug)) { $statement->execute(array($this->id, QubitSlug::getUnique($connection))); return $this; } // Compute unique slug adding contiguous numeric suffix $suffix = 2; do { try { $statement->execute(array($this->id, $this->slug)); unset($suffix); } catch (PDOException $e) { if (2 == $suffix) { $this->slug .= "-{$suffix}"; } else { $this->slug = preg_replace('/-\\d+$/', '', $this->slug, 1) . "-{$suffix}"; } $suffix++; } } while (isset($suffix)); } return $this; }