DiscuzX/upload/source/class/discuz/discuz_model.php

174 lines
3.8 KiB
PHP

<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
abstract class discuz_model extends discuz_base
{
public $data;
public $methods = array();
public $showmessage = 'showmessage';
public $app;
public $member;
public $group;
public $setting;
public $param = array();
public function __construct() {
$this->app = C::app();
$this->setting = &$this->app->var['setting'];
$this->group = &$this->app->var['group'];
$this->member = &$this->app->var['member'];
parent::__construct();
}
public function config($name) {
return getglobal('config/'.$name);
}
public function setting($name = null, $val = null) {
if(isset($val)) {
return $this->setvar($this->setting, $name, $val);
}
return $this->getvar($this->setting, $name);
}
public function table($name) {
return C::t($name);
}
public function cache($name, $val = null) {
if(isset($val)) {
savecache($name, $val);
$this->app->var['cache'][$name] = $val;
return true;
} else {
if (!isset($this->app->var['cache'][$name])) {
loadcache($name);
}
if($this->app->var['cache'][$name] === null) {
return null;
} else {
return getglobal('cache/'.$name);
}
}
}
public function member($name = null, $val = null){
if(isset($val)) {
return $this->setvar($this->member, $name, $val);
} else {
return $this->getvar($this->member, $name);
}
}
public function group($name = null, $val = null){
if(isset($val)) {
return $this->setvar($this->group, $name, $val);
} else {
return $this->getvar($this->group, $name);
}
}
public function param($name = null, $val = null){
if(isset($val)) {
return $this->setvar($this->param, $name, $val);
}
return $this->getvar($this->param, $name);
}
public function setvar(&$var, $key, $value) {
if(isset($key)) {
$key = explode('/', $key);
$p = &$var;
foreach ($key as $k) {
if(!isset($p[$k]) || !is_array($p[$k])) {
$p[$k] = array();
}
$p = &$p[$k];
}
$p = $value;
} else {
$var = $value;
}
return true;
}
public function getvar(&$var, $key = null) {
if(isset($key)) {
$key = explode('/', $key);
foreach ($key as $k) {
if (!isset($var[$k])) {
return null;
}
$var = &$var[$k];
}
}
return $var;
}
public function showmessage() {
if(!empty($this->showmessage) && is_callable($this->showmessage)) {
$p = func_get_args();
if(is_string($this->showmessage)) {
$fn = $this->showmessage;
switch (func_num_args()) {
case 0: return $fn();break;
case 1: return $fn($p[0]);break;
case 2: return $fn($p[0], $p[1]);break;
case 3: return $fn($p[0], $p[1], $p[2]);exit;break;
case 4: return $fn($p[0], $p[1], $p[2], $p[3]);break;
case 5: return $fn($p[0], $p[1], $p[2], $p[3], $p[4]);break;
default: return call_user_func_array($this->showmessage, $p);break;
}
} else {
return call_user_func_array($this->showmessage, $p);
}
} else {
return func_get_args();
}
}
public function attach_before_method($name, $fn) {
$this->methods[$name][0][] = $fn;
}
public function attach_after_method($name, $fn) {
$this->methods[$name][1][] = $fn;
}
public function attach_before_methods($name, $methods){
if(!empty($methods)) {
foreach($methods as $method) {
$this->methods[$name][0][] = $method;
}
}
}
public function attach_after_methods($name, $methods){
if(!empty($methods)) {
foreach($methods as $method) {
$this->methods[$name][1][] = $method;
}
}
}
abstract protected function _init_parameters($parameters);
}
?>