Ejemplo n.º 1
0
 /**
  * getRecordAsString
  *
  * returns a string representation of Doctrine_Record object
  *
  * @param Doctrine_Record $record
  * @return string
  */
 public static function getRecordAsString(Doctrine_Record $record)
 {
     $r[] = '<pre>';
     $r[] = 'Component  : ' . $record->getTable()->getComponentName();
     $r[] = 'ID         : ' . $record->obtainIdentifier();
     $r[] = 'References : ' . count($record->getReferences());
     $r[] = 'State      : ' . Doctrine_Lib::getRecordStateAsString($record->getState());
     $r[] = 'OID        : ' . $record->getOID();
     $r[] = 'data       : ' . Doctrine::dump($record->getData(), false);
     $r[] = '</pre>';
     return implode("\n", $r) . "<br />";
 }
Ejemplo n.º 2
0
 /**
  * @param Doctrine_Record $record
  * @param string $key
  * @param mixed $value
  * @param string $args
  * @return boolean
  */
 public function validate(Doctrine_Record $record, $key, $value, $args)
 {
     $table = $record->getTable();
     $pks = $table->getIdentifier();
     if (is_array($pks)) {
         $pks = join(',', $pks);
     }
     $sql = 'SELECT ' . $pks . ' FROM ' . $table->getTableName() . ' WHERE ' . $key . ' = ?';
     $values = array();
     $values[] = $value;
     // If the record is not new we need to add primary key checks because its ok if the
     // unique value already exists in the database IF the record in the database is the same
     // as the one that is validated here.
     $state = $record->getState();
     if (!($state == Doctrine_Record::STATE_TDIRTY || $state == Doctrine_Record::STATE_TCLEAN)) {
         foreach ($table->getPrimaryKeys() as $pk) {
             $sql .= " AND {$pk} != ?";
             $values[] = $record->{$pk};
         }
     }
     $stmt = $table->getConnection()->getDbh()->prepare($sql);
     $stmt->execute($values);
     return !is_array($stmt->fetch());
 }