Modelx.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace addons\cms\model;
  3. use addons\cms\library\Service;
  4. use think\Config;
  5. use think\Model;
  6. /**
  7. * 模型
  8. */
  9. class Modelx extends Model
  10. {
  11. protected $name = "cms_model";
  12. // 开启自动写入时间戳字段
  13. protected $autoWriteTimestamp = 'int';
  14. // 定义时间戳字段名
  15. protected $createTime = 'createtime';
  16. protected $updateTime = 'updatetime';
  17. // 追加属性
  18. protected $append = [
  19. ];
  20. public function getFieldsAttr($value, $data)
  21. {
  22. return is_array($value) ? $value : ($value ? explode(',', $value) : []);
  23. }
  24. public function getSettingAttr($value, $data)
  25. {
  26. return (array)json_decode($value, true);
  27. }
  28. public function getFieldsListAttr($value, $data)
  29. {
  30. return Fields::where('source', 'model')->where('source_id', $data['id'])->where('status', 'normal')->cache(true)->select();
  31. }
  32. /**
  33. * 判断字段是否可投稿
  34. * @param string $field 字段名称
  35. * @return bool
  36. */
  37. public function iscontribute($field)
  38. {
  39. $setting = $this->setting;
  40. $contributefields = isset($setting['contributefields']) ? $setting['contributefields'] : [];
  41. return in_array($field, $contributefields);
  42. }
  43. /**
  44. * 获取排序字段信息
  45. * @return array
  46. */
  47. public function getOrderFields()
  48. {
  49. $setting = $this->setting;
  50. $orderfields = isset($setting['orderfields']) ? $setting['orderfields'] : [];
  51. $result = [];
  52. $prefix = Config::get('database.prefix');
  53. $fields = Service::getTableFields($prefix . "cms_archives");
  54. $titles = [];
  55. foreach ($fields as $index => $field) {
  56. $titles[$field['name']] = $field['title'];
  57. }
  58. $titles = array_merge($titles, isset($setting['titlelist']) ? $setting['titlelist'] : []);
  59. foreach ($orderfields as $index => $orderfield) {
  60. $title = isset($titles[$orderfield]) ? $titles[$orderfield] : $orderfield;
  61. $result[] = ['name' => $orderfield, 'field' => $orderfield, 'title' => $title];
  62. }
  63. return $result;
  64. }
  65. }