syren7/owncloud-api-bundle

This Bundle allows you to manage owncloud users throug provisioning api and managing files through sabre dav

1.3.5 2018-04-03 12:56 UTC

This package is not auto-updated.

Last update: 2022-05-15 11:54:35 UTC


README

This ownCloud API Bundle allows you to access user, groups, shares, files and calendars of your ownCloud. At the moment there are only party of the full features available but I will try to implement every feature. If there are any questions, problems or if you would try to participate at the project leave me a comment or send an email

Installation

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require syren7/owncloud-api-bundle

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the app/AppKernel.php file of your project:

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel {
    public function registerBundles() {
        $bundles = array(
            // ...

            new Syren7\OwncloudApiBundle\Syren7OwncloudApiBundle(),
        );

        // ...
    }

    // ...
}

Step 3: Configure the Bundle

You will need now to configure your parameters for using this bundle.

IMPORTANT: Make sure that you're using https for encryption because passwords will be transmitted in plaintext

    // app/config/config.yml
    // YOU SHOULD NOT SET SENSITIVE DATA HERE!
    syren7_owncloud:
        host: '%owncloud_host%'
        user: '%owncloud_user%'
        pass: '%owncloud_pass%'
        folder: '%owncloud_folder%' #NOTE: this setting is optional
    // app/config/parameters.yml
    owncloud_host: 'UrlToYouOwncloudServer' #e.g. https://cloud.yourhost.com/ or https://yourhost.com/owncloud/
    owncloud_user: 'YourOwncloudUsername' #if you want to access user specific functions (like adding and removeing), make sure your owncloud user has enough rights
    owncloud_pass: 'YourOwncloudPassword'
    owncloud_folder: 'RootFolderForStoringFiles' # You can add here some folder where you want to store your files. Leave empty if you want to user the users root directory

Take care about the owncloud_folder parameter. If you leave it empty, the bundle always uses the home (or root) directory of the user given in owncloud_user. If you would like to store the data in a subfolder of the user, please set it in owncloud_folder relative to the users home directory!
e.g. you have folder named files of bob in bobs home directory and you would like to store all files created by the bundle inside this directory, set owncloud_folder to owncloud_folder: "files of bob/".

As mentioned in the example Filesystem example:
If you scan the directory with getDirectoryContents() with no parameters, the bundle will now scan files of bob/ instead of bob's home directory.

Step 4: Using the Bundle

You have now three services for contacting an owncloud server. syren7_owncloud.filesystem for accessing the webDav service and syren7_owncloud.user for managing users, groups and subadmins on your owncloud instance.

 // in some controller file you can do the following
 $this->get('syren7_owncloud.filesystem'); //using filesystem tools on owncloud
 $this->get('syren7_owncloud.user'); //managing users and groups
 $this->get('syren7_owncloud.calendar'); //reading calendars and events

Debbuging

For debugging purposes you could call the getLastRequest() Method from the service. It will return the response from your OwnCloud server. So you can see which type of error was thrown corresponding to the docs on OwnCloud Api.

#Example of an response from server

Examples

You can see other examples and further documentation within the docs/ folder

Filesystem example

If you want to work with this api without symfony you can do this simply with the following example:

//Basic example for the filesystem api  
  
//edit the following line, if you have your vendors not installed to vendor/ Folder  
require_once 'vendor/autoload.php';  
//create a new object with your owncloud credentials  
$fs = new \Syren7\OwncloudApiBundle\Service\OwncloudFilesystem('YourHostNameHere', 'YourOcUserName', 'YourOcPassword', 'LeaveBlankIfYouWantToWriteIntoUsersRootDirectory');  
  
//do your operations as you would do in symfony  
//List all files and directories (optional give a subdirectory as parameter)  
$fs->getDirectoryContents('Optional:YourPathToADirectory');
  
//returns a file handle from Oc. Filname as parameter  
$file = $fs->getFile('Path/To/File.txt');
//write file to local filesystem
file_put_contents('Path/To/New/Local/File.txt', $file->read());

//create a directory  
$fs->createDirectory('Path/To/New/Directory/On/Your/Oc');
  
//remove a directory  
$fs->removeDirectory('Path/To/Remove/Directory/On/Your/Oc');
  
//uploads a file to your oc  
$fs->createFile('Local/Path/To/File.txt', 'Optional: Remote/Path/To/File');
  
//removes a file from your oc  
$fs->removeFile($path='');  

//rename a file on your cloud ($file is the file returned by $fs->getFile())
$fs->renameFile(File $file, 'newFileName.txt');

//copy a file on your cloud ($file is the file returned by $fs->getFile())
$fs->copyFile(File $file, 'newFileName.txt');
  

Development

This bundle is still under development and if you would like to participate, let me know! You can also write an email

Donations

This is a completely free project and you can use it wherever you want. If you like this bundle and would like to donate some "coffee" feel free to do that on PayPal