📄 field.class.php
字号:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
class field
{
var $table = '';
var $fieldtypes = array('varchar', 'int','date', 'text', 'mediumtext', 'longtext');
var $db;
var $fieldlist;
function field($table = '')
{
global $db;
$this->table = $table;
$this->db = &$db;
if($this->table) $this->fieldlist = $this->get_list();
}
function add($name, $type, $size, $defaultvalue = '', $options = '', $title = '', $note = '', $formtype = '', $inputtool = '', $inputlimit = '', $enablehtml = 1, $enablelist = 1, $enablesearch = 0)
{
if(!in_array($type, $this->fieldtypes) || $this->exists($name)) return FALSE;
$size = intval($size);
$fieldsize = $type == 'varchar' ? min($size, 255) : ($type == 'int' ? min($size, 10) : 0);
$fieldtype = strtoupper($type);
if($fieldsize) $fieldtype .= "( $fieldsize )";
$this->db->query("ALTER TABLE $this->table ADD $name $fieldtype NOT NULL");
$this->db->query("INSERT INTO ".TABLE_FIELD."(tablename,name,type,size,defaultvalue,options,title,note,formtype,inputtool,inputlimit,enablehtml,enablelist,enablesearch) VALUES('$this->table','$name','$type','$size','$defaultvalue','$options','$title','$note','$formtype','$inputtool','$inputlimit','$enablehtml','$enablelist','$enablesearch')");
$result = $this->db->affected_rows();
$this->cache();
return $result;
}
function edit($fieldid, $type, $size, $defaultvalue = '', $options = '', $title = '', $note = '', $formtype = '', $inputtool = '', $inputlimit = '', $enablehtml = 1, $enablelist = 1, $enablesearch = 0)
{
if(!in_array($type, $this->fieldtypes)) return FALSE;
$fieldid = intval($fieldid);
$field = $this->get_info($fieldid);
$name = $field['name'];
$size = intval($size);
$fieldsize = $type == 'varchar' ? min($size, 255) : ($type == 'int' ? min($size, 10) : 0);
$fieldtype = strtoupper($type);
if($fieldsize) $fieldtype .= "( $fieldsize )";
$this->db->query("ALTER TABLE `$this->table` CHANGE `$name` `$name` $fieldtype NOT NULL");
$this->db->query("UPDATE ".TABLE_FIELD." SET title='$title',note='$note',type='$type',size='$size',defaultvalue='$defaultvalue',options='$options',formtype='$formtype',inputtool='$inputtool',inputlimit='$inputlimit',enablehtml='$enablehtml',enablelist='$enablelist',enablesearch='$enablesearch' WHERE fieldid=$fieldid");
$result = $this->db->affected_rows();
$this->cache();
return $result;
}
function delete($fieldid)
{
$fieldid = intval($fieldid);
$r = $this->db->get_one("SELECT name FROM ".TABLE_FIELD." WHERE fieldid=$fieldid");
if(!$r) return FALSE;
$name = $r['name'];
$this->db->query("ALTER TABLE $this->table DROP $name");
$this->db->query("DELETE FROM ".TABLE_FIELD." WHERE fieldid=$fieldid");
$result = $this->db->affected_rows();
$this->cache();
return $result;
}
function get_columns()
{
$columns = $s = '';
$query = $this->db->query("SHOW COLUMNS FROM $this->table like 'my_%' ");
while($r = $this->db->fetch_row($query))
{
$columns .= $s.$r[0];
$s = ',';
}
$this->db->free_result($query);
return $columns;
}
function get_list()
{
$rs = array();
$query = $this->db->query("SELECT * FROM ".TABLE_FIELD." WHERE tablename='$this->table' ORDER BY listorder,fieldid");
while($r = $this->db->fetch_array($query))
{
$rs[] = $r;
}
$this->db->free_result($query);
return $rs;
}
function get_info($fieldid)
{
$fieldid = intval($fieldid);
return $this->db->get_one("SELECT * FROM ".TABLE_FIELD." WHERE fieldid=$fieldid");
}
function get_form($style = '<tr><td class="tablerow"><strong>$title</strong></td><td class="tablerow">$input $tool $note</td></tr>')
{
if(!$this->fieldlist) return FALSE;
$string = '';
foreach($this->fieldlist as $field)
{
if(isset($GLOBALS[$field['name']])) $field['defaultvalue'] = $GLOBALS[$field['name']];
if($field['inputlimit'] == 'unique' && $field['defaultvalue']) continue;
if($field['type'] == 'date' && $field['defaultvalue'] == '0000-00-00') $field['defaultvalue'] = '';
if($field['formtype'] == 'text')
{
$input = '<input type="text" size="40" name="'.$field['name'].'" id="'.$field['name'].'" value="'.$field['defaultvalue'].'" class="'.$field['name'].'" /> ';
}
elseif($field['formtype'] == 'textarea')
{
$input = '<textarea name="'.$field['name'].'" id="'.$field['name'].'" rows="8" cols="50" class="'.$field['name'].'">'.$field['defaultvalue'].'</textarea>';
}
elseif($field['formtype'] == 'select')
{
$input = "<select name='".$field['name']."' id='".$field['name']."' class='".$field['name']."'>\n";
$options = explode("\n",$field['options']);
foreach($options as $option)
{
if(strpos($option, '|'))
{
list($name, $value) = explode('|', trim($option));
}
else
{
$name = $value = trim($option);
}
$selected = $field['defaultvalue'] == $value ? 'selected' : '';
$input .= "<option value='".$value."' ".$selected.">".$name."</option>\n";
}
$input .= "</select>\n";
}
elseif($field['formtype'] == 'radio')
{
$input = '';
$options = explode("\n",$field['options']);
foreach($options as $option)
{
if(strpos($option, '|'))
{
list($name, $value) = explode('|', trim($option));
}
else
{
$name = $value = trim($option);
}
$checked = $field['defaultvalue'] == $value ? 'checked' : '';
$input .= '<input type="radio" name="'.$field['name'].'" value="'.$value.'" class="'.$field['name'].'" '.$checked.'> '.$name.' ';
}
}
elseif($field['formtype'] == 'checkbox')
{
$field['defaultvalue'] = strpos($field['defaultvalue'], ',') ? explode(',', $field['defaultvalue']) : array($field['defaultvalue']);
$input = '';
$options = explode("\n",$field['options']);
foreach($options as $option)
{
if(strpos($option, '|'))
{
list($name, $value) = explode('|', trim($option));
}
else
{
$name = $value = trim($option);
}
$checked = in_array($value, $field['defaultvalue']) ? 'checked' : '';
$input .= '<input type="checkbox" name="'.$field['name'].'[]" value="'.$value.'" class="'.$field['name'].'" '.$checked.'> '.$name.' ';
}
}
elseif($field['formtype'] == 'password')
{
$input = '<input type="password" name="'.$field['name'].'" id="'.$field['name'].'" value="'.$field['defaultvalue'].'" class="'.$field['name'].'" /> ';
}
elseif($field['formtype'] == 'hidden')
{
$input = '<input type="hidden" name="'.$field['name'].'" id="'.$field['name'].'" value="'.$field['defaultvalue'].'"/> ';
}
$title = $field['title'];
$note = $field['note'];
$tool = $this->get_tool($field['inputtool'], $field['name'], $field['defaultvalue']);
$string .= str_replace(array('$title','$input','$tool','$note'), array($title,$input,$tool,$note), $style);
}
return $string;
}
function get_tool($inputtool, $name, $value = '')
{
global $LANG;
if(empty($inputtool))
{
return '';
}
elseif($inputtool == 'dateselect')
{
global $iscalendarinit;
if($value == '0000-00-00') $value = '';
$id = str_replace(array('[',']'), array('',''), $name);
$str = '';
if(!$iscalendarinit)
{
$iscalendarinit = 1;
$str .= "<script language=\"javascript\">var imgDir = \"".PHPCMS_PATH."include/calendar/\";</script>\n<script language=\"javascript\" src=\"".PHPCMS_PATH."include/calendar/calendar.js\"></script>\n";
}
$str .= ' <img src="'.PHPCMS_PATH.'include/calendar/date_selector.gif" border="0" align="absMiddle" style="cursor:pointer" onclick="popUpCalendar(this,document.getElementById(\''.$id.'\'),\'yyyy-mm-dd\');">';
return $str;
}
elseif($inputtool == 'fileupload')
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -