From f52572568aa25a2d11747cadd4ffa05cf8b8fb16 Mon Sep 17 00:00:00 2001 From: hpatel-mm Date: Tue, 21 Sep 2021 14:36:21 +0100 Subject: [PATCH 1/2] Locking version at what MOA has --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e1f6b73..1baa174 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ } ], "require": { - "cloudinary/cloudinary_php": "^2", + "cloudinary/cloudinary_php": "1.20.0", "php": ">=7.0.0", "silverstripe/assets": "^1", "silverstripe/asset-admin": "^1" From f56718769904733ea0cf8e32f545ec8304a12e13 Mon Sep 17 00:00:00 2001 From: hpatel-mm Date: Wed, 22 Sep 2021 09:30:06 +0100 Subject: [PATCH 2/2] Prevent renames from breaking everything --- src/Controllers/APIController.php | 33 ++++++++++++++++++++++++++----- src/Tasks/SyncTask.php | 2 +- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/Controllers/APIController.php b/src/Controllers/APIController.php index f4d548f..b13c1b5 100644 --- a/src/Controllers/APIController.php +++ b/src/Controllers/APIController.php @@ -13,6 +13,7 @@ use SilverStripe\Assets\File; use SilverStripe\Assets\Folder; use SilverStripe\Core\Convert; +use SilverStripe\ORM\Queries\SQLUpdate; class APIController extends Controller// implements PermissionProvider { @@ -72,17 +73,39 @@ protected function renameResource($data) if (!$item) { throw $this->httpError(400, sprintf('Failed to rename %s', $from)); } - $item->File->PublicID = $to; - $parentFolder = Folder::find_or_make(dirname($to)); - if (!$parentFolder->exists()) { - $parentFolder->write(); + + $parentID = 0; + + $dirName = dirname($to); + + if ($dirName !== '.') { + $parentFolder = Folder::find_or_make($dirName); + $parentID = $parentFolder->ID; } - $item->ParentID = $parentFolder->ID; + + $item->FilePublicID = $to; + $item->write(); + + SQLUpdate::create('File') + ->addWhere([ 'ID = ?' => $item->ID ]) + ->addAssignments([ 'ParentID' => $parentID ]) + ->execute(); + if ($item->isPublished()) { $item->publishSingle(); + + SQLUpdate::create('File_Live') + ->addWhere([ 'ID = ?' => $item->ID ]) + ->addAssignments([ 'ParentID' => $parentID ]) + ->execute(); } + SQLUpdate::create('File_Versions') + ->addWhere([ 'RecordID = ?' => $item->ID, 'Version' => $item->Version ]) + ->addAssignments([ 'ParentID' => $parentID ]) + ->execute(); + $this->extend('updateRenameResource', $item, $data); return $this->output($data); diff --git a/src/Tasks/SyncTask.php b/src/Tasks/SyncTask.php index c27df4e..af0f555 100644 --- a/src/Tasks/SyncTask.php +++ b/src/Tasks/SyncTask.php @@ -73,7 +73,7 @@ public function run($request) array_walk($data['resources'], array($this, 'addOrUpdateResource')); $count+= count($data['resources']); - $data = (array_key_exists('next_cursor', $data)) ? + $data = (property_exists($data, 'next_cursor')) ? $this->getPageFromCloudinary($resourceType, $data['next_cursor']) : false; }