зеркало из https://github.com/nextcloud/server.git
OC_HELPER, OC_LOG and OC_TEMPLATE prepared for refactoring
This commit is contained in:
Родитель
59847bb901
Коммит
a3070405d9
|
@ -83,6 +83,7 @@ class OC_APP{
|
|||
*
|
||||
*/
|
||||
public static function register( $data ){
|
||||
// TODO: write function
|
||||
OC_APP::$apps[] = $data;
|
||||
}
|
||||
|
||||
|
@ -93,6 +94,7 @@ class OC_APP{
|
|||
* This function returns all data it got via register().
|
||||
*/
|
||||
public static function get(){
|
||||
// TODO: write function
|
||||
return OC_APP::$apps;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,19 @@
|
|||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* An example of config.php
|
||||
*
|
||||
* <?php
|
||||
* $CONFIG = array(
|
||||
* "database" => "mysql",
|
||||
* "firstrun" => false,
|
||||
* "pi" => 3.14
|
||||
* );
|
||||
* ?>
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class is responsible for reading and writing config.php, the very basic
|
||||
|
@ -86,5 +99,3 @@ class OC_CONFIG{
|
|||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
|
|
|
@ -1,64 +1,62 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
* ownCloud
|
||||
*
|
||||
* @author Frank Karlitschek
|
||||
* @author Jakob Sack
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class for utility functions
|
||||
*
|
||||
* Collection of useful functions
|
||||
*/
|
||||
class OC_HELPER {
|
||||
/**
|
||||
* Create an url
|
||||
* @brief Creates an url
|
||||
* @param $app app
|
||||
* @param $file file
|
||||
* @returns the url
|
||||
*
|
||||
* @param string $application
|
||||
* @param string $file
|
||||
* Returns a url to the given app and file.
|
||||
*/
|
||||
public static function linkTo( $application, $file = null ){
|
||||
public static function linkTo( $app, $file ){
|
||||
global $WEBROOT;
|
||||
if( is_null( $file )){
|
||||
$file = $application;
|
||||
$application = "";
|
||||
}
|
||||
return "$WEBROOT/$application/$file";
|
||||
return "$WEBROOT/$app/$file";
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an image link
|
||||
* @brief Creates path to an image
|
||||
* @param $app app
|
||||
* @param $image image name
|
||||
* @returns the url
|
||||
*
|
||||
* @param string $application
|
||||
* @param string $file
|
||||
* Returns the path to the image.
|
||||
*/
|
||||
public static function imagePath( $application, $file = null ){
|
||||
public static function imagePath( $app, $image ){
|
||||
global $WEBROOT;
|
||||
if( is_null( $file )){
|
||||
$file = $application;
|
||||
$application = "";
|
||||
}
|
||||
return "$WEBROOT/$application/img/$file";
|
||||
return "$WEBROOT/$app/img/$image";
|
||||
}
|
||||
|
||||
/**
|
||||
* show an icon for a filetype
|
||||
* @brief get path to icon of mime type
|
||||
* @param $mimetype mimetype
|
||||
* @returns the url
|
||||
*
|
||||
* Returns the path to the image of this mime type.
|
||||
*/
|
||||
public static function mimetypeIcon( $mimetype ){
|
||||
global $SERVERROOT;
|
||||
|
@ -81,8 +79,11 @@ class OC_HELPER {
|
|||
}
|
||||
|
||||
/**
|
||||
* Human filesize (1 kB for 1024 etc. )
|
||||
* @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 ){
|
||||
if( $bytes < 1024 ){
|
||||
|
|
133
lib/log.php
133
lib/log.php
|
@ -1,75 +1,90 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Class for logging features
|
||||
* ownCloud
|
||||
*
|
||||
* @author Frank Karlitschek
|
||||
* @author Jakob Sack
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
*
|
||||
* The following SQL statement is just a help for developers and will not be
|
||||
* executed!
|
||||
*
|
||||
* CREATE TABLE `log` (
|
||||
* `id` INT PRIMARY KEY AUTO INCREMENT,
|
||||
* `timestamp` DATETIME NOT NULL,
|
||||
* `appid` VARCHAR( 255 ) NOT NULL ,
|
||||
* `subject` VARCHAR( 255 ),
|
||||
* `predicate` VARCHAR( 255 ),
|
||||
* `object` TEXT
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This class is for logging
|
||||
*/
|
||||
class OC_LOG {
|
||||
|
||||
/**
|
||||
* array to define different log types
|
||||
* @brief adds an entry to the log
|
||||
* @param $appid id of the app
|
||||
* @param $subject username
|
||||
* @param $predicate action
|
||||
* @param $object = null; additional information
|
||||
* @returns true/false
|
||||
*
|
||||
* This function adds another entry to the log database
|
||||
*/
|
||||
public static $TYPE = array (
|
||||
1=>'login',
|
||||
2=>'logout',
|
||||
3=>'read',
|
||||
4=>'write' );
|
||||
|
||||
|
||||
/**
|
||||
* log an event
|
||||
*
|
||||
* @param username $user
|
||||
* @param type $type
|
||||
* @param message $message
|
||||
*/
|
||||
public static function event($user,$type,$message){
|
||||
global $CONFIG_DBTABLEPREFIX;
|
||||
$result = OC_DB::query('INSERT INTO `' . $CONFIG_DBTABLEPREFIX . 'log` (`timestamp`,`user`,`type`,`message`) VALUES ('.time().',\''.addslashes($user).'\','.addslashes($type).',\''.addslashes($message).'\');');
|
||||
public static function add( $subject, $predicate, $object = null ){
|
||||
// TODO: write function
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Fetches log entries
|
||||
* @param $filter = array(); array with filter options
|
||||
* @returns array with entries
|
||||
*
|
||||
* This function fetches the log entries according to the filter options
|
||||
* passed.
|
||||
*
|
||||
* $filter is an associative array.
|
||||
* The following keys are optional:
|
||||
* - from: all entries after this date
|
||||
* - until: all entries until this date
|
||||
* - user: username (default: current user)
|
||||
* - app: only entries for this app
|
||||
*/
|
||||
public static function get( $filter = array()){
|
||||
// TODO: write function
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* get log entries
|
||||
* @brief removes log entries
|
||||
* @param $date delete entries older than this date
|
||||
* @returns true/false
|
||||
*
|
||||
* This function deletes all entries that are older than $date.
|
||||
*/
|
||||
public static function get(){
|
||||
global $CONFIG_DATEFORMAT;
|
||||
global $CONFIG_DBTABLEPREFIX;
|
||||
|
||||
$result;
|
||||
|
||||
if(OC_USER::ingroup($_SESSION['username_clean'],'admin')){
|
||||
$result = OC_DB::select('select `timestamp`,`user`,`type`,`message` from '.$CONFIG_DBTABLEPREFIX.'log order by timestamp desc limit 20');
|
||||
}
|
||||
else{
|
||||
$user=$_SESSION['username_clean'];
|
||||
$result = OC_DB::select('select `timestamp`,`user`,`type`,`message` from '.$CONFIG_DBTABLEPREFIX.'log where user=\''.$user.'\' order by timestamp desc limit 20');
|
||||
}
|
||||
|
||||
return $result;
|
||||
public static function deleteBefore( $date ){
|
||||
// TODO: write function
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
162
lib/template.php
162
lib/template.php
|
@ -1,100 +1,155 @@
|
|||
<?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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* ownCloud
|
||||
*
|
||||
* @author Frank Karlitschek
|
||||
* @author Jakob Sack
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief make OC_HELPER::linkTo available as a simple function
|
||||
* @param $app app
|
||||
* @param $file file
|
||||
* @returns link to the file
|
||||
*
|
||||
* For further information have a look at OC_HELPER::linkTo
|
||||
*/
|
||||
function link_to( $app, $file ){
|
||||
return OC_HELPER::linkTo( $app, $file );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief make OC_HELPER::imagePath available as a simple function
|
||||
* @param $app app
|
||||
* @param $image image
|
||||
* @returns link to the image
|
||||
*
|
||||
* For further information have a look at OC_HELPER::imagePath
|
||||
*/
|
||||
function image_path( $app, $file ){
|
||||
return OC_HELPER::imagePath( $app, $file );
|
||||
function image_path( $app, $image ){
|
||||
return OC_HELPER::imagePath( $app, $image );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief make OC_HELPER::mimetypeIcon available as a simple function
|
||||
* @param $mimetype mimetype
|
||||
* @returns link to the image
|
||||
*
|
||||
* For further information have a look at OC_HELPER::mimetypeIcon
|
||||
*/
|
||||
function mimetype_icon( $mimetype ){
|
||||
return OC_HELPER::mimetypeIcon( $mimetype );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief make OC_HELPER::humanFileSize available as a simple function
|
||||
* @param $bytes size in bytes
|
||||
* @returns size as string
|
||||
*
|
||||
* For further information have a look at OC_HELPER::humanFileSize
|
||||
*/
|
||||
function human_file_size( $bytes ){
|
||||
return OC_HELPER::humanFileSize( $bytes );
|
||||
}
|
||||
|
||||
/**
|
||||
* This class provides the templates for owncloud.
|
||||
*/
|
||||
class OC_TEMPLATE{
|
||||
private $renderas; // Create a full page?
|
||||
private $application; // template Application
|
||||
private $vars; // The smarty object
|
||||
private $template; // The smarty object
|
||||
|
||||
public function __construct( $application, $name, $renderas = "" ){
|
||||
/**
|
||||
* @brief Constructor
|
||||
* @param $app app providing the template
|
||||
* @param $file name of the tempalte file (without suffix)
|
||||
* @param $renderas = ""; produce a full page
|
||||
* @returns OC_TEMPLATE object
|
||||
*
|
||||
* This function creates an OC_TEMPLATE object.
|
||||
*
|
||||
* If $renderas is set, OC_TEMPLATE will try to produce a full page in the
|
||||
* according layout. For now, renderas can be set to "guest", "user" or
|
||||
* "admin".
|
||||
*/
|
||||
public function __construct( $app, $name, $renderas = "" ){
|
||||
// Global vars we need
|
||||
global $SERVERROOT;
|
||||
|
||||
$template = "$SERVERROOT/templates/";
|
||||
// Get the right template folder
|
||||
if( $application != "core" && $application != "" ){
|
||||
$template = "$SERVERROOT/$application/templates/";
|
||||
$template = "$SERVERROOT/templates/";
|
||||
if( $app != "core" && $app != "" ){
|
||||
$template = "$SERVERROOT/$app/templates/";
|
||||
}
|
||||
|
||||
// Templates have the ending .tmpl
|
||||
$template .= "$name.php";
|
||||
$template .= "$name.html";
|
||||
|
||||
// Set the private data
|
||||
$this->renderas = $renderas;
|
||||
$this->application = $application;
|
||||
$this->application = $app;
|
||||
$this->template = $template;
|
||||
$this->vars = array();
|
||||
}
|
||||
|
||||
public function assign( $a, $b ){
|
||||
$this->vars[$a] = $b;
|
||||
/**
|
||||
* @brief Assign variables
|
||||
* @param $key key
|
||||
* @param $value value
|
||||
* @returns true
|
||||
*
|
||||
* This function assigns a variable. It can be accessed via $_[$key] in
|
||||
* the template.
|
||||
*
|
||||
* If the key existed before, it will be overwritten
|
||||
*/
|
||||
public function assign( $key, $value ){
|
||||
$this->vars[$key] = $value;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function append( $a, $b ){
|
||||
if( array_key_exists( $a, $this->vars )){
|
||||
if( is_array( $this->vars[$a] )){
|
||||
$this->vars[$a][] = $b;
|
||||
}
|
||||
else
|
||||
{
|
||||
$array = array( $this->vars[$a], $b );
|
||||
$this->vars[$a] = $array;
|
||||
}
|
||||
/**
|
||||
* @brief Appends a variable
|
||||
* @param $key key
|
||||
* @param $value value
|
||||
* @returns true
|
||||
*
|
||||
* This function assigns a variable in an array context. If the key already
|
||||
* exists, the value will be appended. It can be accessed via
|
||||
* $_[$key][$position] in the template.
|
||||
*/
|
||||
public function append( $key, $value ){
|
||||
if( array_key_exists( $key, $this->vars )){
|
||||
$this->vars[$key][] = $value;
|
||||
}
|
||||
else{
|
||||
$this->vars[$a] = $b;
|
||||
$this->vars[$key] = array( $value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Prints the proceeded template
|
||||
* @returns true/false
|
||||
*
|
||||
* This function proceeds the template and prints its output.
|
||||
*/
|
||||
public function printPage()
|
||||
{
|
||||
$data = $this->fetchPage();
|
||||
|
@ -109,6 +164,13 @@ class OC_TEMPLATE{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Proceeds the template
|
||||
* @returns content
|
||||
*
|
||||
* This function proceeds the template. If $this->renderas is set, it will
|
||||
* will produce a full page.
|
||||
*/
|
||||
public function fetchPage()
|
||||
{
|
||||
// global Data we need
|
||||
|
@ -143,8 +205,8 @@ class OC_TEMPLATE{
|
|||
}
|
||||
|
||||
// Add navigation entry and personal menu
|
||||
$page->assign( "navigation", OC_UTIL::$navigation );
|
||||
$page->assign( "personalmenu", OC_UTIL::$personalmenu );
|
||||
$page->assign( "navigation", OC_APP::getNavigation());
|
||||
$page->assign( "personalmenu", OC_UTIL::getPersonalMenu());
|
||||
|
||||
// Add css files and js files
|
||||
$page->assign( "content", $data );
|
||||
|
@ -155,9 +217,13 @@ class OC_TEMPLATE{
|
|||
return $data;
|
||||
}
|
||||
}
|
||||
public function __destruct(){
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief doing the actual work
|
||||
* @returns content
|
||||
*
|
||||
* Includes the template file, fetches its output
|
||||
*/
|
||||
private function _fetch(){
|
||||
// Register the variables
|
||||
$_ = $this->vars;
|
||||
|
@ -184,7 +250,7 @@ class OC_TEMPLATE{
|
|||
foreach( $parameters as $key => $value ){
|
||||
$content->assign( $key, $value );
|
||||
}
|
||||
return $content->printPage();
|
||||
print $content->printPage();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче