Initial project files: BESCMS full source

This commit is contained in:
bes
2026-08-13 23:37:46 +08:00
parent fa6cddb540
commit 2e26f85723
2166 changed files with 396625 additions and 0 deletions
+129
View File
@@ -0,0 +1,129 @@
<?php namespace Phpcmf\Model\Block;
// 模型类
class Block extends \Phpcmf\Model
{
// 格式化结果
public function getValueAll($v) {
foreach ($v as $i => $value) {
$v[$i] = $this->getValue($value);
}
return $v;
}
public function getValue($value) {
if (!$value['content']) {
$value['i'] = 0;
$value['value_0'] = '';
} else {
if (preg_match('/\{i-([0-9]+)\}:/U', $value['content'], $preg)) {
$value['i'] = intval($preg[1]);
$value['value_'.$value['i']] = str_replace((string)$preg[0], '', $value['content']);
if ($value['i'] == 4) {
$value['value_'.$value['i']] = dr_string2array($value['value_'.$value['i']]);
}
} else {
$value['i'] = 1;
$value['value_1'] = $value['content'];
}
}
return $value;
}
/**
* 确保当前站点的资料块表存在(替代 Install_site.sql
* 表名:{dbprefix}{siteid}_block
*/
protected function _ensure_site_table($siteid) {
$siteid = intval($siteid);
$table = $siteid.'_block';
$full = $this->dbprefix($table);
if ($this->is_table_exists($full)) {
return $table;
}
$rt = \Phpcmf\Service::M('table')->create_table(
$full,
[
'id' => 'smallint(5) unsigned NOT NULL AUTO_INCREMENT',
'name' => 'varchar(100) NOT NULL COMMENT \'名称\'',
'code' => 'varchar(100) NOT NULL COMMENT \'别名\'',
'hide' => 'tinyint(1) unsigned NOT NULL COMMENT \'隐藏\'',
'content' => 'text NOT NULL COMMENT \'内容\'',
],
[
'PRIMARY KEY (`id`)',
'KEY `code` (`code`)',
],
'资料块表'
);
if (!$rt['code']) {
log_message('error', 'Block 站点表创建失败['.$full.']'.($rt['msg'] ?? ''));
}
return $table;
}
// 缓存(按站点执行;缺表时自动建表)
public function cache($siteid = SITE_ID) {
$this->_ensure_site_table($siteid);
$table = \Phpcmf\Service::M()->dbprefix($siteid.'_block');
if (!\Phpcmf\Service::M()->is_field_exists($table, 'hide')) {
\Phpcmf\Service::M('table')->add_field($table, 'hide', 'int(5)', 'DEFAULT 0', '');
}
$data = $this->table($siteid.'_block')->getAll();
$cache = [];
if ($data) {
foreach ($data as $t) {
if ($t['hide']) {
continue;
}
$t = $this->getValue($t);
if (!$t['code']) {
// 填充默认code
$t['code'] = $t['id'];
$this->table($siteid.'_block')->update($t['id'], [
'code' => $t['id'],
]);
}
switch (intval($t['i'])) {
case 0:
// 文本内容
$value = $t['value_0'];
break;
case 1:
// 文本内容
$value = $t['value_1'];
break;
case 2:
// 丰富文本
$value = htmlspecialchars_decode($t['value_2']);
break;
case 3:
// 单文件
$value = $t['value_3'];
break;
case 4:
// 多文件
$value = dr_string2array($t['value_4']);
break;
}
$cache[$t['code']] = [
1 => $t['name'],
0 => $value
];
}
}
\Phpcmf\Service::L('cache')->set_file('block-'.$siteid, $cache);
return;
}
}