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" 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; }