protected function execute($arguments = array(), $options = array()) { $configuration = ProjectConfiguration::getApplicationConfiguration($arguments['application'], $options['env'], true); $databaseManager = new sfDatabaseManager($configuration); $databaseManager->initialize($configuration); $db = Doctrine_Manager::connection(); //get person entities with all-caps names $sql = 'SELECT e.id, e.name FROM entity e ' . 'WHERE e.name <> \'\' AND e.primary_ext = ? AND CAST(UPPER(e.name) AS BINARY) = CAST(e.name AS BINARY)'; $stmt = $db->execute($sql, array('Person')); $names = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($names as $ary) { $new = PersonTable::nameizePersonName($ary['name']); if ($new != $ary['name']) { $sql = 'UPDATE entity SET name = ? WHERE id = ?'; $stmt = $db->execute($sql, array($new, $ary['id'])); print "Changed Entity name " . $ary['name'] . " to " . $new . "\n"; } } //get aliases with all-caps names $sql = 'SELECT a.id, a.name FROM alias a LEFT JOIN entity e ON (e.id = a.entity_id) ' . 'WHERE a.name <> \'\' AND a.is_primary = 1 AND e.primary_ext = ? AND ' . 'CAST(UPPER(a.name) AS BINARY) = CAST(a.name AS BINARY)'; $stmt = $db->execute($sql, array('Person')); $names = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($names as $ary) { $new = PersonTable::nameizePersonName($ary['name']); if ($new != $ary['name']) { $sql = 'UPDATE alias SET name = ? WHERE id = ?'; $stmt = $db->execute($sql, array($new, $ary['id'])); print "Changed Alias " . $ary['name'] . " to " . $new . "\n"; } } //DONE LsCli::beep(); }
/** * Saves Entity and (by default) adds/removes/updates extensions * * @param Doctrine_Connection $conn Optional connection instance * @param boolean $saveExtensions Whether to save extensions & their data; true by default * @return Entity The saved Entity * * @see Doctrine_record */ public function save(Doctrine_Connection $conn = null, $saveExtensions = true, array $networkIds = null) { if (!$this->exists()) { $this->_isFirstSave = true; } if ($conn === null) { $conn = Doctrine_Manager::connection(); } //make sure extensions are loaded $this->_loadExtensions(); try { $conn->beginTransaction(); if ($saveExtensions) { //run extensions' onEntitySave methods foreach ($this->_extensionObjects as $name => $object) { if (method_exists($object, 'onEntitySave')) { $object->onEntitySave($this); } } } //set primary extension if (!$this->primary_ext) { $this->primary_ext = $this->getPrimaryExtension(); } if ($this->primary_ext == 'Person') { $this->name = PersonTable::nameizePersonName($this->name); } //set delta field for sphinx indexing (in rails) $this->delta = true; //save entity $ret = parent::save($conn); //add primary alias if needed if (!LsDoctrineQuery::create()->from('Alias a')->where('a.entity_id = ?', $this->id)->count()) { $a = new Alias(); $a->entity_id = $this->id; $a->name = $this->rawGet('name'); $a->is_primary = true; $a->save(null, false); } if ($saveExtensions) { //save extensions foreach ($this->_extensionObjects as $name => $object) { //set entity_id in case it isn't set $object->entity_id = $this->id; $object->save($conn); } //save new extensions foreach (array_keys($this->_extensionsAdded) as $name) { $def = $this->_extensionDefinitions[$name]; //record shouldn't already exist if ($this->getExtensionRecordForDefinition($def)) { throw new Exception("Can't add record for extension " . $name . "; alrady exists"); } //create record $record = new ExtensionRecord(); $record->Entity = $this; $record->Definition = $def; $record->save($conn); } $this->_extensionsAdded = array(); //remove extensions foreach ($this->_extensionsRemoved as $name => $extAry) { $def = $extAry['definition']; if ($def->has_fields) { $object = $extAry['object']; $object->delete($conn); } if (!($record = $this->getExtensionRecordForDefinition($def))) { throw new Exception("Can't remove record for extension " . $name . "; doesn't exist"); } $record->delete($conn); } } //if creating, add entity to specified networks, otherwise, default network if ($this->_isFirstSave) { if ($networkIds) { foreach ($networkIds as $networkId) { $le = new LsListEntity(); $le->list_id = $networkId; $le->entity_id = $this->id; $le->save(null, true, false); //prevents it from trying to update the entity updated_at and last_user_id fields } } else { if (sfContext::hasInstance() && ($user = sfContext::getInstance()->getUser()->getGuardUser())) { $networkId = $user->Profile->home_network_id; } else { $networkId = LsListTable::US_NETWORK_ID; } $le = new LsListEntity(); $le->list_id = $networkId; $le->entity_id = $this->id; $le->save(null, true, false); //prevents it from trying to update the entity updated_at and last_user_id fields } } $conn->commit(); } catch (Exception $e) { $conn->rollback(); throw $e; } $this->_isFirstSave = false; return $ret; }