📄 object.php
字号:
break 1;
case 'p':
case 'preview':
$ts =& MyTextSanitizer::getInstance();
$html = !empty($this->vars['dohtml']['value']) ? 1 : 0;
$xcode = (!isset($this->vars['doxcode']['value']) || $this->vars['doxcode']['value'] == 1) ? 1 : 0;
$smiley = (!isset($this->vars['dosmiley']['value']) || $this->vars['dosmiley']['value'] == 1) ? 1 : 0;
$image = (!isset($this->vars['doimage']['value']) || $this->vars['doimage']['value'] == 1) ? 1 : 0;
$br = (!isset($this->vars['dobr']['value']) || $this->vars['dobr']['value'] == 1) ? 1 : 0;
return $ts->previewTarea($ret, $html, $smiley, $xcode, $image, $br);
break 1;
case 'f':
case 'formpreview':
$ts =& MyTextSanitizer::getInstance();
return htmlspecialchars($ts->stripSlashesGPC($ret), ENT_QUOTES);
break 1;
case 'n':
case 'none':
default:
break 1;
}
break;
case XOBJ_DTYPE_ARRAY:
$ret = unserialize($ret);
break;
case XOBJ_DTYPE_SOURCE:
switch (strtolower($format)) {
case 's':
case 'show':
break 1;
case 'e':
case 'edit':
return htmlspecialchars($ret, ENT_QUOTES);
break 1;
case 'p':
case 'preview':
$ts =& MyTextSanitizer::getInstance();
return $ts->stripSlashesGPC($ret);
break 1;
case 'f':
case 'formpreview':
$ts =& MyTextSanitizer::getInstance();
return htmlspecialchars($ts->stripSlashesGPC($ret), ENT_QUOTES);
break 1;
case 'n':
case 'none':
default:
break 1;
}
break;
default:
if ($this->vars[$key]['options'] != '' && $ret != '') {
switch (strtolower($format)) {
case 's':
case 'show':
$selected = explode('|', $ret);
$options = explode('|', $this->vars[$key]['options']);
$i = 1;
$ret = array();
foreach ($options as $op) {
if (in_array($i, $selected)) {
$ret[] = $op;
}
$i++;
}
return implode(', ', $ret);
case 'e':
case 'edit':
$ret = explode('|', $ret);
break 1;
default:
break 1;
}
}
break;
}
return $ret;
}
/**
* clean values of all variables of the object for storage.
* also add slashes whereever needed
*
* @return bool true if successful
* @access public
*/
function cleanVars()
{
$ts =& MyTextSanitizer::getInstance();
$existing_errors = $this->getErrors();
$this->_errors = array();
foreach ($this->vars as $k => $v) {
$cleanv = $v['value'];
if (!$v['changed']) {
} else {
$cleanv = is_string($cleanv) ? trim($cleanv) : $cleanv;
switch ($v['data_type']) {
case XOBJ_DTYPE_TXTBOX:
if ($v['required'] && $cleanv != '0' && $cleanv == '') {
$this->setErrors( sprintf( _XOBJ_ERR_REQUIRED, $k ) );
continue;
}
if (isset($v['maxlength']) && strlen($cleanv) > intval($v['maxlength'])) {
$this->setErrors( sprintf( _XOBJ_ERR_SHORTERTHAN, $k, intval( $v['maxlength'] ) ) );
continue;
}
if (!$v['not_gpc']) {
$cleanv = $ts->stripSlashesGPC($ts->censorString($cleanv));
} else {
$cleanv = $ts->censorString($cleanv);
}
break;
case XOBJ_DTYPE_TXTAREA:
if ($v['required'] && $cleanv != '0' && $cleanv == '') {
$this->setErrors( sprintf( _XOBJ_ERR_REQUIRED, $k ) );
continue;
}
if (!$v['not_gpc']) {
$cleanv = $ts->stripSlashesGPC($ts->censorString($cleanv));
} else {
$cleanv = $ts->censorString($cleanv);
}
break;
case XOBJ_DTYPE_SOURCE:
if (!$v['not_gpc']) {
$cleanv = $ts->stripSlashesGPC($cleanv);
} else {
$cleanv = $cleanv;
}
break;
case XOBJ_DTYPE_INT:
$cleanv = intval($cleanv);
break;
case XOBJ_DTYPE_EMAIL:
if ($v['required'] && $cleanv == '') {
$this->setErrors( sprintf( _XOBJ_ERR_REQUIRED, $k ) );
continue;
}
if ($cleanv != '' && !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+([\.][a-z0-9-]+)+$/i",$cleanv)) {
$this->setErrors("Invalid Email");
continue;
}
if (!$v['not_gpc']) {
$cleanv = $ts->stripSlashesGPC($cleanv);
}
break;
case XOBJ_DTYPE_URL:
if ($v['required'] && $cleanv == '') {
$this->setErrors( sprintf( _XOBJ_ERR_REQUIRED, $k ) );
continue;
}
if ($cleanv != '' && !preg_match("/^http[s]*:\/\//i", $cleanv)) {
$cleanv = 'http://' . $cleanv;
}
if (!$v['not_gpc']) {
$cleanv =& $ts->stripSlashesGPC($cleanv);
}
break;
case XOBJ_DTYPE_ARRAY:
$cleanv = serialize($cleanv);
break;
case XOBJ_DTYPE_STIME:
case XOBJ_DTYPE_MTIME:
case XOBJ_DTYPE_LTIME:
$cleanv = !is_string($cleanv) ? intval($cleanv) : strtotime($cleanv);
break;
default:
break;
}
}
$this->cleanVars[$k] =& $cleanv;
unset($cleanv);
}
if (count($this->_errors) > 0) {
$this->_errors = array_merge($existing_errors, $this->_errors);
return false;
}
$this->_errors = array_merge($existing_errors, $this->_errors);
$this->unsetDirty();
return true;
}
/**
* dynamically register additional filter for the object
*
* @param string $filtername name of the filter
* @access public
*/
function registerFilter($filtername)
{
$this->_filters[] = $filtername;
}
/**
* load all additional filters that have been registered to the object
*
* @access private
*/
function _loadFilters()
{
//include_once XOOPS_ROOT_PATH.'/class/filters/filter.php';
//foreach ($this->_filters as $f) {
// include_once XOOPS_ROOT_PATH.'/class/filters/'.strtolower($f).'php';
//}
}
/**
* create a clone(copy) of the current object
*
* @access public
* @return object clone
*/
function &xoopsClone()
{
$class = get_class($this);
$clone =& new $class();
foreach ($this->vars as $k => $v) {
$clone->assignVar($k, $v['value']);
}
// need this to notify the handler class that this is a newly created object
$clone->setNew();
return $clone;
}
/**
* add an error
*
* @param string $value error to add
* @access public
*/
function setErrors($err_str)
{
$this->_errors[] = trim($err_str);
}
/**
* return the errors for this object as an array
*
* @return array an array of errors
* @access public
*/
function getErrors()
{
return $this->_errors;
}
/**
* return the errors for this object as html
*
* @return string html listing the errors
* @access public
*/
function getHtmlErrors()
{
$ret = '<h4>Errors</h4>';
if (!empty($this->_errors)) {
foreach ($this->_errors as $error) {
$ret .= $error.'<br />';
}
} else {
$ret .= 'None<br />';
}
return $ret;
}
}
/**
* XOOPS object handler class.
* This class is an abstract class of handler classes that are responsible for providing
* data access mechanisms to the data source of its corresponsing data objects
* @package kernel
* @abstract
*
* @author Kazumi Ono <onokazu@xoops.org>
* @copyright copyright © 2000 The XOOPS Project
*/
class XoopsObjectHandler
{
/**
* holds referenced to {@link XoopsDatabase} class object
*
* @var object
* @see XoopsDatabase
* @access protected
*/
var $db;
//
/**
* called from child classes only
*
* @param object $db reference to the {@link XoopsDatabase} object
* @access protected
*/
function XoopsObjectHandler(&$db)
{
$this->db =& $db;
}
/**
* creates a new object
*
* @abstract
*/
function &create()
{
}
/**
* gets a value object
*
* @param int $int_id
* @abstract
*/
function &get($int_id)
{
}
/**
* insert/update object
*
* @param object $object
* @abstract
*/
function insert(&$object)
{
}
/**
* delete obejct from database
*
* @param object $object
* @abstract
*/
function delete(&$object)
{
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -