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();
 }
示例#2
0
 /**
  * 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;
 }