protected function insert($connection = null)
 {
     if (!isset($this->slug)) {
         $this->slug = QubitSlug::slugify($this->__get('name', array('sourceCulture' => true)));
     }
     return parent::insert($connection);
 }
 protected function insert($connection = null)
 {
     $this->identifier = self::generateAccessionIdentifier(true);
     if (!isset($this->slug)) {
         $this->slug = QubitSlug::slugify($this->__get('identifier', array('sourceCulture' => true)));
     }
     parent::insert($connection);
 }
 /**
  * @see sfTask
  */
 public function execute($arguments = array(), $options = array())
 {
     $databaseManager = new sfDatabaseManager($this->configuration);
     $conn = $databaseManager->getDatabase('propel')->getConnection();
     $tables = array('actor' => 'QubitActor', 'information_object' => 'QubitInformationObject', 'term' => 'QubitTerm', 'event' => 'QubitEvent');
     // Create hash of slugs already in database
     $sql = "SELECT slug FROM slug ORDER BY slug";
     foreach ($conn->query($sql, PDO::FETCH_NUM) as $row) {
         $slugs[$row[0]] = true;
     }
     foreach ($tables as $table => $classname) {
         $this->logSection('propel', "Generate {$table} slugs...");
         $newRows = array();
         // reset
         switch ($table) {
             case 'actor':
                 $sql = 'SELECT base.id, i18n.authorized_form_of_name';
                 break;
             case 'information_object':
                 $sql = 'SELECT base.id, i18n.title';
                 break;
             default:
                 $sql = 'SELECT base.id, i18n.name';
         }
         $sql .= ' FROM ' . constant($classname . '::TABLE_NAME') . ' base';
         $sql .= ' INNER JOIN ' . constant($classname . 'I18n::TABLE_NAME') . ' i18n';
         $sql .= '  ON base.id = i18n.id';
         $sql .= ' LEFT JOIN ' . QubitSlug::TABLE_NAME . ' sl';
         $sql .= '  ON base.id = sl.object_id';
         $sql .= ' WHERE base.id > 3';
         $sql .= '  AND base.source_culture = i18n.culture';
         $sql .= '  AND sl.id is NULL';
         foreach ($conn->query($sql, PDO::FETCH_NUM) as $row) {
             // Get unique slug
             if (null !== $row[1]) {
                 $slug = QubitSlug::slugify($row[1]);
                 // Truncate at 250 chars
                 if (250 < strlen($slug)) {
                     $slug = substr($slug, 0, 250);
                 }
                 $count = 0;
                 $suffix = '';
                 while (isset($slugs[$slug . $suffix])) {
                     $count++;
                     $suffix = '-' . $count;
                 }
                 $slug .= $suffix;
             } else {
                 $slug = QubitSlug::random();
                 while (isset($slugs[$slug])) {
                     $slug = QubitSlug::random();
                 }
             }
             $slugs[$slug] = true;
             // Add to lookup table
             $newRows[] = array($row[0], $slug);
             // To add to slug table
         }
         // Do inserts
         $inc = 1000;
         for ($i = 0; $i < count($newRows); $i += $inc) {
             $sql = "INSERT INTO slug (object_id, slug) VALUES ";
             $last = min($i + $inc, count($newRows));
             for ($j = $i; $j < $last; $j++) {
                 $sql .= '(' . $newRows[$j][0] . ', \'' . $newRows[$j][1] . '\'), ';
             }
             $sql = substr($sql, 0, -2) . ';';
             $conn->exec($sql);
         }
     }
     $this->logSection('propel', 'Done!');
 }
 protected function insert($connection = null)
 {
     $this->slug = QubitSlug::slugify($this->slug);
     return parent::insert($connection);
 }