示例#1
0
$fields = $object['Field'];
?>


<tr>
  <td><?php 
echo $object['created_at'];
?>
</td>
  <td><strong><?php 
echo ModificationTable::getName($object);
?>
</strong></td>
  <td><em><?php 
echo ModificationTable::getType($object);
?>
</em></td>

<?php 
if (!$object['is_delete'] && count($fields) && ($field = array_shift($fields))) {
    ?>
  <?php 
    $field['Modification'] = $object;
    ?>
  <td>
    <strong><?php 
    echo ModificationFieldTable::getFieldNameForDisplay($field);
    ?>
</strong> 
    (<?php 
示例#2
0
 public function getName()
 {
     return ModificationTable::getName($this);
 }
示例#3
0
 static function safeRevertByUserId($userId)
 {
     //get all user modifications grouped by object
     $modifications = ModificationTable::getByUserIdGroupedByObjectQuery($userId)->leftJoin('m.Field f')->execute();
     foreach ($modifications as $m) {
         $q = LsDoctrineQuery::create()->from('Modification m')->where('m.object_model = ? AND m.object_id = ?', array($m->object_model, $m->object_id));
         //if nobody else modified this object and it exists, we delete it and continue
         if ($object = $m->getObject()) {
             if (!$q->addWhere('m.user_id <> ?', $userId)->count()) {
                 $object->delete();
             }
         } else {
             //if user deleted this object, we recreate it
             if ($delete = $q->addWhere('m.user_id = ? AND m.is_delete = ?', array($userId, true))->execute()) {
                 $object = $m->getObject(true);
                 foreach ($delete->Field as $f) {
                     $fieldName = $f->field_name;
                     $object->{$fieldName} = $f->old_value;
                 }
             }
         }
         if ($object) {
             //get all fields user modified
             $modifiedFields = array();
             foreach ($m->Field as $f) {
                 $modifiedFields[] = $f->field_name;
             }
             $modifiedFields = array_unique($modifiedFields);
             foreach ($modifiedFields as $fieldName) {
                 //if user is last to modify, we revert field to last value entered by another user, or null
                 $q = LsDoctrineQuery::create()->from('Modification m')->leftJoin('m.Field f')->where('m.user_id <> ?', $userId)->addWhere('f.field_name = ?', $fielName)->orderBy('m.created_at DESC');
                 if ($m = $q->fetchOne()) {
                     $object->{$fieldName} = $m->Field->new_value;
                 } else {
                     $object->{$fieldName} = null;
                 }
             }
         }
     }
 }