151 lines
3.9 KiB
PHP
151 lines
3.9 KiB
PHP
<?php
|
|
|
|
/* Copyright (C) 2009 Winch Gate Property Limited
|
|
*
|
|
* This file is part of ryzom_api.
|
|
* ryzom_api is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* ryzom_api 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 Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with ryzom_api. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
function getDirLinks($url_params, $path, $getvar, $home) {
|
|
$ret = '';
|
|
$dirs = explode('/', $path);
|
|
$dirpath = '';
|
|
$ret .= _l($home, $url_params, array($getvar => ''));
|
|
foreach($dirs as $dirname) {
|
|
if ($dirname) {
|
|
$ret .= ' » '._l($dirname, $url_params, array($getvar => '/'.$dirpath.$dirname));
|
|
$dirpath .= $dirname.'/';
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function isEmptyDir($dir)
|
|
{
|
|
if (($files = scandir($dir)) && count($files) <= 2) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
class ryDataFileManager {
|
|
|
|
public $id;
|
|
public $log_dir;
|
|
public $data_dir;
|
|
public $user_dir;
|
|
public $app_name;
|
|
|
|
function __construct($id, $app_name=APP_NAME) {
|
|
$this->app_name = $app_name;
|
|
$id = (strlen($id) == 0?'0':'').$id;
|
|
$id = (strlen($id) == 1?'0':'').$id;
|
|
$this->id = $id;
|
|
$this->log_dir = RYAPP_PATH.$app_name.'/data/logs/';
|
|
$this->data_dir = RYAPP_PATH.$app_name.'/data/app/';
|
|
$this->user_dir = RYAPP_PATH.$app_name.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/';
|
|
|
|
if (!is_dir($this->user_dir))
|
|
@mkdir($this->user_dir, 0777, true);
|
|
|
|
if (!is_dir($this->log_dir)) {
|
|
@mkdir($this->log_dir, 0777, true);
|
|
@mkdir($this->data_dir, 0777, true);
|
|
}
|
|
}
|
|
|
|
/*** Generic datafiles access methods ***/
|
|
|
|
function getData($name, $default=null) {
|
|
if (file_exists($name))
|
|
return unserialize(file_get_contents($name));
|
|
if ($default !== NULL) {
|
|
@file_put_contents($name, serialize($default));
|
|
return $default;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
function saveData($name, $datas, $create_folders=true) {
|
|
if ($create_folders) {
|
|
if (!is_dir(dirname($name)))
|
|
@mkdir(dirname($name), 0777, true);
|
|
}
|
|
if ($datas !== NULL)
|
|
@file_put_contents($name, serialize($datas));
|
|
else
|
|
@unlink($name);
|
|
}
|
|
|
|
function listDataFiles($dir) {
|
|
$ret = array();
|
|
if ($handle = @opendir($dir)) {
|
|
while (false !== ($file = readdir($handle))) {
|
|
if ($file != '.' && $file != '..' && $file[0] != '.')
|
|
$ret[] = $file;
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
/*** App Datas ***/
|
|
|
|
function loadAppData($name, $default=null) {
|
|
return $this->getData($this->data_dir.$name, $default);
|
|
}
|
|
|
|
function saveAppData($name, $datas, $create_folders=true) {
|
|
return $this->saveData($this->data_dir.$name, $datas, $create_folders);
|
|
}
|
|
|
|
function listAppDataFiles($basedir='') {
|
|
return $this->listDataFiles($this->data_dir.$basedir);
|
|
}
|
|
|
|
|
|
/*** User Datas ***/
|
|
|
|
function loadUserData($name, $default=null) {
|
|
return $this->getData($this->user_dir.$name, $default);
|
|
}
|
|
|
|
function saveUserData($name, $datas, $create_folders=true) {
|
|
return $this->saveData($this->user_dir.$name, $datas, $create_folders);
|
|
}
|
|
|
|
function listUserDataFiles($basedir='') {
|
|
return $this->listDataFiles($this->user_dir.$basedir);
|
|
}
|
|
|
|
function loadUserDataFromApp($name, $app, $default=null) {
|
|
$id = $this->id;
|
|
$file = RYAPP_PATH.$app.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/'.$name;
|
|
if (file_exists($file))
|
|
return unserialize(file_get_contents($file));
|
|
if ($default !== null)
|
|
return $default;
|
|
return null;
|
|
}
|
|
|
|
function saveUserDataFromApp($name, $app, $datas) {
|
|
$id = $this->id;
|
|
$dir = RYAPP_PATH.$app.'/data/chars/'.$id[0].'/'.$id[1].'/'.$id.'/';
|
|
if (!is_dir($dir))
|
|
@mkdir($dir, 0777, true);
|
|
file_put_contents($dir.$name, serialize($datas));
|
|
}
|
|
}
|
|
|
|
|
|
?>
|