<?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)); } } ?>