Skip to content

Commit

Permalink
Revert "Revert "WhatCms""
Browse files Browse the repository at this point in the history
This reverts commit e44fef3.
  • Loading branch information
hzp1993 committed Oct 27, 2016
1 parent e44fef3 commit fa4f6cd
Show file tree
Hide file tree
Showing 261 changed files with 40,270 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
32 changes: 32 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

ThinkPHP遵循Apache2开源协议发布,并提供免费使用。
版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn)
All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。

Apache Licence是著名的非盈利开源组织Apache采用的协议。
该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,
允许代码修改,再作为开源或商业软件发布。需要满足
的条件:
1. 需要给代码的用户一份Apache Licence ;
2. 如果你修改了代码,需要在被修改的文件中说明;
3. 在延伸的代码中(修改和有源代码衍生的代码中)需要
带有原来代码中的协议,商标,专利声明和其他原来作者规
定需要包含的说明;
4. 如果再发布的产品中包含一个Notice文件,则在Notice文
件中需要带有本协议内容。你可以在Notice中增加自己的
许可,但不可以表现为对Apache Licence构成更改。
具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
136 changes: 136 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
ThinkPHP 5.0 RC4
===============

[![Downloads](https://img.shields.io/github/downloads/top-think/think/total.svg)](https://github.com/top-think/think/releases)
[![Releases](https://img.shields.io/github/release/top-think/think.svg)](https://github.com/top-think/think/releases/latest)
[![Releases Downloads](https://img.shields.io/github/downloads/top-think/think/latest/total.svg)](https://github.com/top-think/think/releases/latest)
[![Packagist Status](https://img.shields.io/packagist/v/top-think/think.svg)](https://packagist.org/packages/topthink/think)
[![Packagist Downloads](https://img.shields.io/packagist/dt/top-think/think.svg)](https://packagist.org/packages/topthink/think)

ThinkPHP5在保持快速开发和大道至简的核心理念不变的同时,PHP版本要求提升到5.4,对已有的CBD模式做了更深的强化,优化核心,减少依赖,基于全新的架构思想和命名空间实现,是ThinkPHP突破原有框架思路的颠覆之作,其主要特性包括:

+ 基于命名空间和众多PHP新特性
+ 核心功能组件化
+ 强化路由功能
+ 更灵活的控制器
+ 重构的模型和数据库类
+ 配置文件可分离
+ 重写的自动验证和完成
+ 简化扩展机制
+ API支持完善
+ 改进的Log类
+ 命令行访问支持
+ REST支持
+ 引导文件支持
+ 方便的自动生成定义
+ 真正惰性加载
+ 分布式环境支持
+ 更多的社交类库

> ThinkPHP5的运行环境要求PHP5.4以上。
详细开发文档参考 [ThinkPHP5完全开发手册](http://www.kancloud.cn/manual/thinkphp5)

## 使用 Composer 安装 ThinkPHP5
~~~
composer create-project topthink/think tp5 dev-master --prefer-dist
~~~
> 因为目前 ThinkPHP 5 正处于高速发展阶段,所以目前只能通过 dev-master 分支来初始化项目
## 目录结构

初始的目录结构如下:

~~~
www WEB部署目录(或者子目录)
├─composer.json composer定义文件
├─README.md README文件
├─LICENSE.txt 授权说明文件
├─think 命令行入口文件
├─application 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─runtime 应用的运行时目录(可写,可定制)
│ ├─module_name 模块目录
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ ├─config.php 公共配置文件
│ ├─route.php 路由配置文件
│ └─database.php 数据库配置文件
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ └─.htaccess 用于apache的重写
├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─mode 应用模式目录
│ ├─tpl 系统模板目录
│ ├─tests 单元测试文件目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
├─extend 扩展类库目录
├─vendor 第三方类库目录(Composer依赖库)
~~~

> router.php用于php自带webserver支持,可用于快速测试
> 切换到public目录后,启动命令:php -S localhost:8888 router.php
> 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。
## 命名规范

`ThinkPHP5`遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:

### 目录和文件

* 目录不强制规范,驼峰和小写+下划线模式均支持;
* 类库、函数文件统一以`.php`为后缀;
* 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
* 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);

### 函数和类、属性命名
* 类的命名采用驼峰法,并且首字母大写,例如 `User``UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`
* 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`
* 方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`
* 属性的命名使用驼峰法,并且首字母小写,例如 `tableName``instance`
* 以双下划线“__”打头的函数或方法作为魔法方法,例如 `__call``__autoload`

### 常量和配置
* 常量以大写字母和下划线命名,例如 `APP_PATH``THINK_PATH`
* 配置参数以小写字母和下划线命名,例如 `url_route_on``url_convert`

### 数据表和字段
* 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。

## 参与开发
注册并登录 Github 帐号, fork 本项目并进行改动。

更多细节参阅 [CONTRIBUTING.md](CONTRIBUTING.md)

## 版权信息

ThinkPHP遵循Apache2开源协议发布,并提供免费使用。

本项目包含的第三方源码和二进制文件之版权信息另行标注。

版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn)

All rights reserved。

ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。

更多细节参阅 [LICENSE.txt](LICENSE.txt)
1 change: 1 addition & 0 deletions application/.htaccess
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deny from all
184 changes: 184 additions & 0 deletions application/admin/common.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
<?php
define('IS_ROOT', is_administrator());
/**
* 获取配置类型
*/
function set_config_type($id='')
{
$value = [
'1' => '文本框',
'2' => '下拉列表',
'3' => '单选框',
'4' => '多行文本',
'5' => '上传图片',
];
if($id){
return $value[$id];
}
return $value;
}

/**
* 获取配置分组
*/
function set_config_group($id=null)
{
$value = [
'0' => '不分组',
'1' => '基本信息',
'2' => '核心配置',
'3' => '邮箱配置',
'4' => '数据配置',
'5' => '会员配置',
'6' => '上传设置'
];
if(isset($id)){
return $value[$id];
}
return $value;
}

/**
* 获取状态
*/
function set_status($id=null)
{
$value = [
'0' => '',
'1' => '',
];
if(isset($id)){
return $value[$id];
}else{

return $value;
}
}

function set_form_config($type, $name, $value, $tvalue)
{
$str = '';
$status_arr = set_status();
switch ($type)
{
case 1:
$str = '<input class="am-form-field" name="config['.$name.']" value="'.$value.'" />';
break;
case 2:
$str = '<select name="config['.$name.']">';
if(!empty($tvalue)){
$arr = explode(PHP_EOL, trim($tvalue));
foreach($arr as $k => $v)
{
$array = explode('|', $v);
if($array[0] == $value) $selected = 'selected'; else $selected = '';
$str .= '<option value="'.$array[0].'" '.$selected.'>'.$array[1].'</option>';
}
}else{
foreach($status_arr as $k => $v){
if($k == $value) $selected = 'selected'; else $selected = '';
$str .= '<option value="'.$k.'" '.$selected.'>'.$v.'</option>';
}
}
$str .= '</select>';
break;
case 3:
if(!empty($tvalue)){
$arr = explode(PHP_EOL, trim($tvalue));
foreach($arr as $k => $v)
{
$array = explode('|', $v);
if($array[0] == $value) $checked = 'checked'; else $checked = '';
$str .= '<label class="am-radio-inline"><input type="radio" value="'.$array[0].'" name="config['.$name.']" '.$checked.' >'.$array[1].'</label>';
}
}else{
foreach($status_arr as $k => $v){
if($k == $value) $checked = 'checked'; else $checked = '';
$str .= '<label class="am-radio-inline"><input type="radio" value="'.$k.'" name="config['.$name.']" '.$checked.' >'.$v.'</label>';
}
}
break;
case 4:
$str = '<textarea rows="5" name="config['.$name.']">'.$value.'</textarea>';
break;
default:
$str = '<div class="am-form-inline"><input class="am-form-field" id="uploadOne" name="config['.$name.']" value="'.$value.'" style="width:75%;"/> <div class="am-btn am-btn-primary am-radius am-btn-sm up-picture-btn"> <span>添加图片</span><input id="fileupload" type="file" name="mypic" data-url="'.url("attachment/upload").'"></div> <a href="javascript:;" onclick="openWindow(this);" data-url="'.url("attachment/browseFile").'" title="站内图片" class="am-btn am-btn-success am-radius am-btn-sm ">站内图片</a></div>';
}
return $str;
}

/**
* 无限极分类
* @param $list
* @param int $pid
* @param int $level
* @return array
*/
function unlimitedForLevel($list, $pid = 0, $level = 0)
{
$arr = [];
foreach ($list as $k => $v) {
if ($v['pid'] == $pid) {
$v['level'] = $level + 1;
$arr[] = $v;
$arr = array_merge($arr, unlimitedForLevel($list, $v['id'], $level + 1));
}
}
return $arr;
}

/**
* 检测是否是超级管理
*/
function is_administrator($uid = null){
$uid = is_null($uid) ? session('user_id') : $uid;
return $uid && (intval($uid) === config('USER_ADMINISTRATOR'));
}

/**
* 获取字段表单类型
*/
function get_attribute_type($type = '')
{
// TODO 可以加入系统配置
static $_type = [
'hidden' => ['隐藏', 'varchar(32) NOT NULL'],
'text' => ['单行文本','varchar(128) NOT NULL'],
'textarea' => ['多行文本','varchar(256) NOT NULL'],
'array' => ['数组', 'varchar(32) NOT NULL'],
'radio' => ['单选','varchar(32) NOT NULL'],
'checkbox' => ['复选框','varchar(32) NOT NULL'],
'select' => ['下拉框','varchar(32) NOT NULL'],
'date' => ['时间','int(10) NOT NULL'],
'picture' => ['上传图片','int(10) UNSIGNED NOT NULL'],
'pictures' => ['多张图片','varchar(32) NOT NULL'],
'file' => ['单个附件','int(10) UNSIGNED NOT NULL'],
'files' => ['多个附件','varchar(32) NOT NULL'],
'media' => ['单个媒体','int(10) UNSIGNED NOT NULL'],
'medias' => ['多个媒体','varchar(32) NOT NULL'],
'editor' => ['编辑器','text NOT NULL'],
];
return $type?$_type[$type][0]:$_type;
}

function get_attribute_validate($id = null)
{
$value = [
'regex' => '正则验证',
'function' => '函数验证',
'unique' => '唯一验证',
'length' => '长度验证',
'in' => '验证在范围内',
'notIn' => '验证不在范围内',
'between' => '验证不在范围内',
'notbetween' => '不在区间验证',
];
if(isset($id)){
return $value[$id];
}
return $value;
}

function get_cohesion(){

}
5 changes: 5 additions & 0 deletions application/admin/config.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php
return [
'USER_ADMINISTRATOR' => 1,
]
?>
Loading

0 comments on commit fa4f6cd

Please sign in to comment.