function getFolderList(Asset_Folder $rootFolder, &$folderList = array()) { if ($rootFolder->getParent()) { $folderList[] = array("parent" => $rootFolder->getParent()->getFullPath(), "key" => $rootFolder->getKey()); } foreach ($rootFolder->getChilds() as $childFolder) { if ($childFolder instanceof Asset_Folder) { getFolderList($childFolder, $folderList); } } }
/** * creates an asset folder "unittestassets" to hold assets used later in tests * @return void */ public function testAssetFolderCreate() { $asset = Asset_Folder::create(1, array("filename" => uniqid() . "_data", "type" => "folder", "userOwner" => 1)); $this->assertTrue($asset->getId() > 0); //properties $asset->setProperties($this->getRandomProperties("asset")); $asset->save(); $refetch = Asset_Folder::getById($asset->getId()); $this->assertTrue(Test_Tool::assetsAreEqual($asset, $refetch, false)); }
protected function getOrCreateAssetFolderByPath($path) { $folder = Asset_Folder::getByPath($path); if (!$folder instanceof Asset_Folder) { str_replace("\\", "/", $path); $parts = explode("/", $path); if (empty($parts[count($parts) - 1])) { $parts = array_slice($parts, 0, -1); } $parts = array_slice($parts, 1); $parentPath = "/"; foreach ($parts as $part) { $parent = Asset_Folder::getByPath($parentPath); if ($parent instanceof Asset_Folder) { $part = Pimcore_File::getValidFilename($part); $folder = Asset_Folder::getByPath($parentPath . $part); if (!$folder instanceof Asset_Folder) { $folder = Asset::create($parent->getId(), array("filename" => $part, "type" => "folder", "userOwner" => $this->getUser()->getId(), "userModification" => $this->getUser()->getId())); } $parentPath .= $part . "/"; } else { Logger::error("parent not found!"); return null; } } } return $folder; }
/** * change general user permissions * @depends testModifyUserToAdmin * @var User $user */ public function testPermissionChanges() { $userGroup = User::getByName("unitTestUserGroup"); $username = $userGroup->getUsername(); $userGroup->setAdmin(false); $userGroup->save(); unset($userGroup); $userGroup = User::getByName($username); //test if admin is allowed all $permissionList = new User_Permission_Definition_List(); $permissionList->load(); $permissions = $permissionList->getDefinitions(); $setPermissions = array(); //gradually set all system permissions foreach ($permissions as $permission) { $userGroup->setPermission($permission->getKey()); $setPermissions[] = $permission->getKey(); $userGroup->save(); unset($userGroup); $userGroup = User::getByName($username); foreach ($setPermissions as $p) { $this->assertTrue($userGroup->isAllowed($p)); } } //remove system permissions $userGroup->setAllAclToFalse(); foreach ($setPermissions as $p) { $this->assertFalse($userGroup->isAllowed($p)); } //cannot list documents, assts, objects because no permissions by now $documentRoot = Document::getById(1); $documentRoot->getPermissionsForUser($userGroup); $this->assertFalse($documentRoot->isAllowed("list")); $objectRoot = Object_Abstract::getById(1); $objectRoot->getPermissionsForUser($userGroup); $this->assertFalse($objectRoot->isAllowed("list")); $assetRoot = Asset::getById(1); $assetRoot->getPermissionsForUser($userGroup); $this->assertFalse($assetRoot->isAllowed("list")); $objectFolder = new Object_Folder(); $objectFolder->setParentId(1); $objectFolder->setUserOwner(1); $objectFolder->setUserModification(1); $objectFolder->setCreationDate(time()); $objectFolder->setKey(uniqid() . rand(10, 99)); $objectFolder->save(); $documentFolder = Document_Folder::create(1, array("userOwner" => 1, "key" => uniqid() . rand(10, 99))); $assetFolder = Asset_Folder::create(1, array("filename" => uniqid() . "_data", "type" => "folder", "userOwner" => 1)); $user = User::getByName("unitTestUser"); $user->setAdmin(false); $user->save(); $userGroup->setPermission("objects"); $userGroup->setPermission("documents"); $userGroup->setPermission("assets"); $userGroup->save(); //test permissions with user group and user $this->permissionTest($objectRoot, $objectFolder, $userGroup, $user, $user, "object"); $this->permissionTest($assetRoot, $assetFolder, $userGroup, $user, $user, "asset"); $this->permissionTest($documentRoot, $documentFolder, $userGroup, $user, $user, "document"); //test permissions when there is no user group permissions $user = User::create(array("parentId" => 0, "username" => "unitTestUser2", "password" => md5("unitTestUser2"), "hasCredentials" => true, "active" => true)); unset($user); $user = User::getByName("unitTestUser2"); $user->setPermission("objects"); $user->setPermission("documents"); $user->setPermission("assets"); $user->save(); $this->assertTrue($user instanceof User and $user->getUsername() == "unitTestUser2"); $this->permissionTest($objectRoot, $objectFolder, null, $user, $user, "object"); $this->permissionTest($assetRoot, $assetFolder, null, $user, $user, "asset"); $this->permissionTest($documentRoot, $documentFolder, null, $user, $user, "document"); //test permissions when there is only user group permissions $user = User::create(array("parentId" => $userGroup->getId(), "username" => "unitTestUser3", "password" => md5("unitTestUser3"), "hasCredentials" => true, "active" => true)); unset($user); $user = User::getByName("unitTestUser3"); $this->assertTrue($user instanceof User and $user->getUsername() == "unitTestUser3"); $this->permissionTest($objectRoot, $objectFolder, $userGroup, null, $user, "object"); $this->permissionTest($assetRoot, $assetFolder, $userGroup, null, $user, "asset"); $this->permissionTest($documentRoot, $documentFolder, $userGroup, null, $user, "document"); }
public function testAssetFolder() { $client = $this->getSoapClient(); //get an asset list with 3 elements $condition = "`type`='folder'"; $generalCondition = $this->getListCondition(); if (!empty($generalCondition)) { if (!empty($condition)) { $condition .= " AND " . $generalCondition; } else { $condition = $generalCondition; } } $order = ""; $orderKey = ""; $offset = 0; $limit = 3; $groupBy = ""; $wsDocument = $client->getAssetList($condition, $order, $orderKey, $offset, $limit, $groupBy); $this->assertTrue(is_array($wsDocument) and $wsDocument[0] instanceof Webservice_Data_Asset_List_Item); //take the second element, first will be home $id = $wsDocument[0]->id; $this->assertTrue(is_numeric($id)); $wsDocument = $client->getAssetFolderById($id); $this->assertTrue($wsDocument instanceof Webservice_Data_Asset_Folder_Out); $asset = new Asset_Folder(); $wsDocument->reverseMap($asset); //some checks to see if we got a valid object $this->assertTrue($asset->getCreationDate() > 0); $this->assertTrue(strlen($asset->getPath()) > 0); //copy the object retrieved from ws $new = clone $asset; $new->id = null; $new->setFilename($asset->getFilename() . "_phpUnitTestCopy"); $new->setResource(null); //send new asset back via ws $apiAsset = Webservice_Data_Mapper::map($new, "Webservice_Data_Asset_Folder_In", "in"); $id = $client->createAssetFolder($apiAsset); $this->assertTrue($id > 0); $wsDocument = $client->getAssetFolderById($id); $this->assertTrue($wsDocument instanceof Webservice_Data_Asset_Folder_Out); $refetchAsset = new Asset_Folder(); $wsDocument->reverseMap($refetchAsset); //compare to original $original = Asset::getById($id); $original->getProperties(); $this->assertTrue(Test_Tool::assetsAreEqual($original, $refetchAsset, true)); //update asset file and set custom settings $refetchAsset->setCustomSettings(array("customSettingTest" => "This is a test")); $apiAsset = Webservice_Data_Mapper::map($refetchAsset, "Webservice_Data_Asset_Folder_In", "in"); $success = $client->updateAssetFolder($apiAsset); $this->assertTrue($success); $wsDocument = $client->getAssetFolderById($id); $this->assertTrue($wsDocument instanceof Webservice_Data_Asset_Folder_Out); $refetchAsset = new Asset_Folder(); $wsDocument->reverseMap($refetchAsset); $cs = $refetchAsset->getCustomSettings(); $this->assertTrue(is_array($cs)); $this->assertTrue($cs["customSettingTest"] == "This is a test"); Test_Tool::resetRegistry(); //compare to original $original = Asset_Folder::getById($id); $this->assertTrue(Test_Tool::assetsAreEqual($original, $refetchAsset, true)); //delete our test copy $success = $client->deleteAsset($refetchAsset->getId()); $this->assertTrue($success); }
/** * @param string base64 * @return Asset */ public function convertToAsset($imgstr) { $uploadDir = PIMCORE_TMP_DIRECTORY . '/asset-temporary/'; $content = base64_decode(preg_replace('#^data:image/\\w+;base64,#i', '', $imgstr)); $name = uniqid() . '.png'; $file = $uploadDir . $name; $success = file_put_contents($file, $content); if ($success) { $parentAsset = Asset_Folder::getById(71); $asset = Asset::create($parentAsset->getId(), array("filename" => $name, "data" => file_get_contents($file))); return $asset; } else { return false; } }
<?php /** * Created by PhpStorm. * User: jplaskonka * Date: 05.09.14 * Time: 09:11 * Migruje foldery assetów do pliku */ include dirname(__FILE__) . "/../../pimcore/cli/startup.php"; $file = file_get_contents(dirname(__FILE__) . "folders/list.txt"); if ($file) { $folderList = json_decode($file); foreach ($folderList as $folder) { $newFolder = new Asset_Folder(); $newFolder->setParent(Asset_Folder::getByPath($folder->parent)); $newFolder->setFilename($folder->key); try { $newFolder->save(); } catch (Exception $e) { echo $folder->parent . "/" . $folder->key . ": already exists\n"; } } }