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); }