nextcloud/lib/public/util.php

272 lines
6.7 KiB
PHP

<?php
/**
* ownCloud
*
* @author Frank Karlitschek
* @copyright 2010 Frank Karlitschek karlitschek@kde.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Public interface of ownCloud for apps to use.
* Utility Class.
*
*/
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
/**
* This class provides different helper functions to make the life of a developer easier
*/
class Util {
// consts for Logging
const DEBUG=0;
const INFO=1;
const WARN=2;
const ERROR=3;
const FATAL=4;
/**
* @brief get the current installed version of ownCloud
* @return array
*/
public static function getVersion(){
return(\OC_Util::getVersion());
}
/**
* @brief send an email
* @param string $toaddress
* @param string $toname
* @param string $subject
* @param string $mailtext
* @param string $fromaddress
* @param string $fromname
* @param bool $html
*/
public static function sendMail( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='') {
// call the internal mail class
\OC_MAIL::send( $toaddress, $toname, $subject, $mailtext, $fromaddress, $fromname, $html=0, $altbody='', $ccaddress='', $ccname='', $bcc='');
}
/**
* @brief write a message in the log
* @param string $app
* @param string $message
* @param int level
*/
public static function writeLog( $app, $message, $level ) {
// call the internal log class
\OC_LOG::write( $app, $message, $level );
}
/**
* @brief add a css file
* @param url $url
*/
public static function addStyle( $application, $file = null ){
\OC_Util::addStyle( $application, $file );
}
/**
* @brief add a javascript file
* @param appid $application
* @param filename $file
*/
public static function addScript( $application, $file = null ){
\OC_Util::addScript( $application, $file );
}
/**
* @brief Add a custom element to the header
* @param string tag tag name of the element
* @param array $attributes array of attributes for the element
* @param string $text the text content for the element
*/
public static function addHeader( $tag, $attributes, $text=''){
\OC_Util::addHeader( $tag, $attributes, $text );
}
/**
* @brief formats a timestamp in the "right" way
* @param int timestamp $timestamp
* @param bool dateOnly option to ommit time from the result
*/
public static function formatDate( $timestamp,$dateOnly=false){
return(\OC_Util::formatDate( $timestamp,$dateOnly ));
}
/**
* @brief Creates an absolute url
* @param $app app
* @param $file file
* @returns the url
*
* Returns a absolute url to the given app and file.
*/
public static function linkToAbsolute( $app, $file ) {
return(\OC_Helper::linkToAbsolute( $app, $file ));
}
/**
* @brief Creates an absolute url for remote use
* @param $service id
* @returns the url
*
* Returns a absolute url to the given app and file.
*/
public static function linkToRemote( $service ) {
return(\OC_Helper::linkToRemote( $service ));
}
/**
* @brief Creates an url
* @param $app app
* @param $file file
* @returns the url
*
* Returns a url to the given app and file.
*/
public static function linkTo( $app, $file ){
return(\OC_Helper::linkTo( $app, $file ));
}
/**
* @brief Returns the server host
* @returns the server host
*
* Returns the server host, even if the website uses one or more
* reverse proxies
*/
public static function getServerHost() {
return(\OC_Helper::serverHost());
}
/**
* @brief Returns the server protocol
* @returns the server protocol
*
* Returns the server protocol. It respects reverse proxy servers and load balancers
*/
public static function getServerProtocol() {
return(\OC_Helper::serverProtocol());
}
/**
* @brief Creates path to an image
* @param $app app
* @param $image image name
* @returns the url
*
* Returns the path to the image.
*/
public static function imagePath( $app, $image ){
return(\OC_Helper::imagePath( $app, $image ));
}
/**
* @brief Make a human file size
* @param $bytes file size in bytes
* @returns a human readable file size
*
* Makes 2048 to 2 kB.
*/
public static function humanFileSize( $bytes ){
return(\OC_Helper::humanFileSize( $bytes ));
}
/**
* @brief Make a computer file size
* @param $str file size in a fancy format
* @returns a file size in bytes
*
* Makes 2kB to 2048.
*
* Inspired by: http://www.php.net/manual/en/function.filesize.php#92418
*/
public static function computerFileSize( $str ){
return(\OC_Helper::computerFileSize( $str ));
}
/**
* @brief connects a function to a hook
* @param $signalclass class name of emitter
* @param $signalname name of signal
* @param $slotclass class name of slot
* @param $slotname name of slot
* @returns true/false
*
* This function makes it very easy to connect to use hooks.
*
* TODO: write example
*/
static public function connectHook( $signalclass, $signalname, $slotclass, $slotname ){
return(\OC_Hook::connect( $signalclass, $signalname, $slotclass, $slotname ));
}
/**
* @brief emitts a signal
* @param $signalclass class name of emitter
* @param $signalname name of signal
* @param $params defautl: array() array with additional data
* @returns true if slots exists or false if not
*
* Emits a signal. To get data from the slot use references!
*
* TODO: write example
*/
static public function emitHook( $signalclass, $signalname, $params = array()){
return(\OC_Hook::emit( $signalclass, $signalname, $params ));
}
/**
* Register an get/post call. This is important to prevent CSRF attacks
* TODO: write example
*/
public static function callRegister(){
return(\OC_Util::callRegister());
}
/**
* Check an ajax get/post call if the request token is valid. exit if not.
* Todo: Write howto
*/
public static function callCheck(){
return(\OC_Util::callCheck());
}
}
?>