|
|
|
@ -23,87 +23,92 @@ namespace OC\Search\Result; |
|
|
|
|
* A found file |
|
|
|
|
*/ |
|
|
|
|
class File extends \OC\Search\Result { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Type name; translated in templates |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $type = 'file'; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Path to file |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $path; |
|
|
|
|
/** |
|
|
|
|
* Type name; translated in templates |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $type = 'file'; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Size, in bytes |
|
|
|
|
* @var int |
|
|
|
|
*/ |
|
|
|
|
public $size; |
|
|
|
|
/** |
|
|
|
|
* Path to file |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $path; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Date modified, in human readable form |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $modified; |
|
|
|
|
/** |
|
|
|
|
* Size, in bytes |
|
|
|
|
* @var int |
|
|
|
|
*/ |
|
|
|
|
public $size; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* File mime type |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $mime_type; |
|
|
|
|
/** |
|
|
|
|
* Date modified, in human readable form |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $modified; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* File permissions: |
|
|
|
|
* |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $permissions; |
|
|
|
|
/** |
|
|
|
|
* File mime type |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $mime_type; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Create a new file search result |
|
|
|
|
* @param string $id unique identifier from application: '[app_name]/[item_identifier_in_app]' |
|
|
|
|
* @param string $name displayed text of result |
|
|
|
|
* @param string $link URL to the result within its app |
|
|
|
|
* @param array $data file data given by provider |
|
|
|
|
*/ |
|
|
|
|
public function __construct(array $data = null) { |
|
|
|
|
$info = pathinfo($data['path']); |
|
|
|
|
$this->id = $data['fileid']; |
|
|
|
|
$this->name = $info['basename']; |
|
|
|
|
$this->link = \OCP\Util::linkTo('files', 'index.php', array('dir' => $info['dirname'], 'file' => $info['basename'])); |
|
|
|
|
$this->permissions = self::get_permissions($data['path']); |
|
|
|
|
$this->path = (strpos($data['path'], 'files') === 0) ? substr($data['path'], 5) : $data['path']; |
|
|
|
|
$this->size = $data['size']; |
|
|
|
|
$this->modified = $data['mtime']; |
|
|
|
|
$this->mime_type = $data['mimetype']; |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* File permissions: |
|
|
|
|
* |
|
|
|
|
* @var string |
|
|
|
|
*/ |
|
|
|
|
public $permissions; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Determine permissions for a given file path |
|
|
|
|
* @param string $path |
|
|
|
|
* @return int |
|
|
|
|
*/ |
|
|
|
|
function get_permissions($path) { |
|
|
|
|
// add read permissions |
|
|
|
|
$permissions = \OCP\PERMISSION_READ; |
|
|
|
|
// get directory |
|
|
|
|
$fileinfo = pathinfo($path); |
|
|
|
|
$dir = $fileinfo['dirname'] . '/'; |
|
|
|
|
// add update permissions |
|
|
|
|
if (\OC_Filesystem::isUpdatable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_UPDATE; |
|
|
|
|
} |
|
|
|
|
// add delete permissions |
|
|
|
|
if (\OC_Filesystem::isDeletable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_DELETE; |
|
|
|
|
} |
|
|
|
|
// add share permissions |
|
|
|
|
if (\OC_Filesystem::isSharable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_SHARE; |
|
|
|
|
} |
|
|
|
|
// return |
|
|
|
|
return $permissions; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/** |
|
|
|
|
* Create a new file search result |
|
|
|
|
* @param string $id unique identifier from application: '[app_name]/[item_identifier_in_app]' |
|
|
|
|
* @param string $name displayed text of result |
|
|
|
|
* @param string $link URL to the result within its app |
|
|
|
|
* @param array $data file data given by provider |
|
|
|
|
*/ |
|
|
|
|
public function __construct(array $data = null) { |
|
|
|
|
$info = pathinfo($data['path']); |
|
|
|
|
$this->id = $data['fileid']; |
|
|
|
|
$this->name = $info['basename']; |
|
|
|
|
$this->link = \OCP\Util::linkTo( |
|
|
|
|
'files', |
|
|
|
|
'index.php', |
|
|
|
|
array('dir' => $info['dirname'], 'file' => $info['basename']) |
|
|
|
|
); |
|
|
|
|
$this->permissions = self::get_permissions($data['path']); |
|
|
|
|
$this->path = (strpos($data['path'], 'files') === 0) ? substr($data['path'], 5) : $data['path']; |
|
|
|
|
$this->size = $data['size']; |
|
|
|
|
$this->modified = $data['mtime']; |
|
|
|
|
$this->mime_type = $data['mimetype']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Determine permissions for a given file path |
|
|
|
|
* @param string $path |
|
|
|
|
* @return int |
|
|
|
|
*/ |
|
|
|
|
function get_permissions($path) { |
|
|
|
|
// add read permissions |
|
|
|
|
$permissions = \OCP\PERMISSION_READ; |
|
|
|
|
// get directory |
|
|
|
|
$fileinfo = pathinfo($path); |
|
|
|
|
$dir = $fileinfo['dirname'] . '/'; |
|
|
|
|
// add update permissions |
|
|
|
|
if (\OC_Filesystem::isUpdatable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_UPDATE; |
|
|
|
|
} |
|
|
|
|
// add delete permissions |
|
|
|
|
if (\OC_Filesystem::isDeletable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_DELETE; |
|
|
|
|
} |
|
|
|
|
// add share permissions |
|
|
|
|
if (\OC_Filesystem::isSharable($dir)) { |
|
|
|
|
$permissions |= \OCP\PERMISSION_SHARE; |
|
|
|
|
} |
|
|
|
|
// return |
|
|
|
|
return $permissions; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|