Changeset View
Changeset View
Standalone View
Standalone View
src/applications/pholio/xaction/PholioImageFileTransaction.php
<?php | <?php | ||||
final class PholioImageFileTransaction | final class PholioImageFileTransaction | ||||
extends PholioImageTransactionType { | extends PholioImageTransactionType { | ||||
const TRANSACTIONTYPE = 'image-file'; | const TRANSACTIONTYPE = 'image-file'; | ||||
public function generateOldValue($object) { | public function generateOldValue($object) { | ||||
$images = $object->getImages(); | $images = $object->getActiveImages(); | ||||
return array_values(mpull($images, 'getPHID')); | return array_values(mpull($images, 'getPHID')); | ||||
} | } | ||||
public function generateNewValue($object, $value) { | public function generateNewValue($object, $value) { | ||||
$new_value = array(); | $new_value = array(); | ||||
foreach ($value as $key => $images) { | foreach ($value as $key => $images) { | ||||
$new_value[$key] = mpull($images, 'getPHID'); | $new_value[$key] = mpull($images, 'getPHID'); | ||||
} | } | ||||
$old = array_fuse($this->getOldValue()); | $old = array_fuse($this->getOldValue()); | ||||
return $this->getEditor()->getPHIDList($old, $new_value); | return $this->getEditor()->getPHIDList($old, $new_value); | ||||
} | } | ||||
public function applyInternalEffects($object, $value) { | public function applyInternalEffects($object, $value) { | ||||
$old_map = array_fuse($this->getOldValue()); | $old_map = array_fuse($this->getOldValue()); | ||||
$new_map = array_fuse($this->getNewValue()); | $new_map = array_fuse($this->getNewValue()); | ||||
$obsolete_map = array_diff_key($old_map, $new_map); | $obsolete_map = array_diff_key($old_map, $new_map); | ||||
$images = $object->getImages(); | $images = $object->getActiveImages(); | ||||
foreach ($images as $seq => $image) { | foreach ($images as $seq => $image) { | ||||
if (isset($obsolete_map[$image->getPHID()])) { | if (isset($obsolete_map[$image->getPHID()])) { | ||||
$image->setIsObsolete(1); | $image->setIsObsolete(1); | ||||
$image->save(); | $image->save(); | ||||
unset($images[$seq]); | unset($images[$seq]); | ||||
} | } | ||||
} | } | ||||
$object->attachImages($images); | $object->attachImages($images); | ||||
▲ Show 20 Lines • Show All 85 Lines • Show Last 20 Lines |