/**
 * 单信息显示
 * @param type $params
 * @param Tpl $tpl
 * @return type
 */
function smarty_function_newsView($params, &$tpl)
{
    $values = array();
    $types = array();
    /* @var $acStr ZeActiveString */
    $acStr = new ZeActiveString();
    $acStr->putAll(array('select' => 'SELECT
                         `id`,`title`,`category`
                          ,`detail`,`create_time`,`edit_time`
                FROM `news_e` news
                WHERE 1=1
         ', 'where.id' => 'AND `id` = :id ', 'where.next' => 'AND `id` > :id ', 'where.category' => 'AND `category` = :category ', 'where.category.set' => 'AND FIND_IN_SET(`category`,:category) > 0 ', 'where.search' => 'AND (`title` LIKE "%" || :search || "%"
                                 OR `detail` LIKE "%" || :search || "%") ', 'limit' => 'LIMIT 1 '));
    $acStr->active('select');
    $acStr->active('limit');
    $id = $tpl->getArg($params, 'id', null);
    if (is_numeric($id) && $id > 0) {
        $values['id'] = intval($id);
        $types['id'] = PDO::PARAM_INT;
        $acStr->active('where.id');
    }
    $next = $tpl->getArg($params, 'next', null);
    if (is_numeric($next) && $next > 0) {
        $values['id'] = intval($next);
        $types['id'] = PDO::PARAM_INT;
        $acStr->active('where.next');
    }
    /* todo prev */
    /* @var $recorder ZeRecorder */
    $recorder = new ZeRecorder(Conn::getConn());
    /* @var $pageSet ZePageSet */
    $pageSet = $tpl->getPageSet($params);
    $as = $tpl->getArg($params, 'as', 'news');
    $sql = $acStr->toString();
    $row = $recorder->query($sql)->bind($values, $types)->fetch();
    $tpl->assign($as, $row);
}
/**
 *
 * 新闻列表调用函数
 *
 * @param array $params
 * @param Tpl $tpl
 * @param bool $repeat
 */
function smarty_function_newsList($params, &$tpl)
{
    $values = array();
    $types = array();
    /* @var $acStr ZeActiveString */
    $acStr = new ZeActiveString();
    $acStr->putAll(array('select' => 'SELECT
                          `id`,`title`,`category`
                          ,`detail`,`create_time`,`edit_time`
                   FROM news_e news ', 'count' => 'SELECT count(1) FROM news_e news ', 'where' => 'WHERE 1=1 ', 'where.category' => 'AND `category` = :category ', 'where.category.set' => 'AND FIELD(`category`,:categorys) > 0 ', 'where.search' => 'AND (`title` LIKE "%" || :search || "%"
                                 OR `detail` LIKE "%" || :search || "%") ', 'order' => 'ORDER BY ', 'order.id.desc' => '`id` DESC ', 'order.id.asc' => '`id` ASC ', 'order.editTime.desc' => '`edit_time` DESC ', 'order.editTime.asc' => '`edit_time` ASC ', 'limit' => 'LIMIT :offset,:pageSize '));
    $acStr->active('count');
    $acStr->active('where');
    /* @var $category Integer 分类编号 */
    $category = $tpl->getArg($params, 'category', null);
    $category = !is_null($category) ? $category : $tpl->getVar('info.category');
    /*  默认分类选择到的是 0 ,有时需要仅调用默认分类信息,所以将-1指定为所有分类 */
    if ($category > -1) {
        if (strpos($category, ',') === FALSE) {
            $values['category'] = $category;
            $types['category'] = PDO::PARAM_INT;
            $acStr->active('where.category');
        } else {
            $values['categorys'] = $category;
            $types['categorys'] = PDO::PARAM_STR;
            $acStr->active('where.category.set');
        }
    }
    /* @var $search string 搜索 标题,内容 */
    $search = $tpl->getArg($params, 'search');
    $search = $search = $search ? $search : $tpl->getVar('info.search');
    if (!empty($search)) {
        $values['search'] = $search;
        $types['search'] = PDO::PARAM_STR;
        $acStr->active('where.search');
    }
    /* @var $recorder ZeRecorder */
    $recorder = new ZeRecorder(Conn::getConn());
    /* @var $pageSet ZePageSet */
    $pageSet = $tpl->getPageSet($params);
    /* @var $pageAs String */
    $pageAs = $tpl->getArg($params, 'pageAs', null);
    if (!is_null($pageAs)) {
        $sql = $acStr->toString();
        $recordCount = $recorder->query($sql)->bind($values, $types)->getInt();
        $pageSet->setRecordCount($recordCount);
        $tpl->assign($pageAs, $pageSet);
    }
    $acStr->update('count', 'select');
    /**
     * order
     */
    $order = $tpl->getArg($params, 'order');
    $order = $order ? $order : $tpl->getVar('info.order', 'editTime.desc');
    if (!empty($order) && in_array($order, array('id.desc', 'id.asc', 'editTime.desc', 'editTime.asc'))) {
        $acStr->active('order');
        $acStr->active('order.' . $order);
    }
    /**
     * limit
     */
    $acStr->active('limit');
    $values['offset'] = $pageSet->getOffset();
    $types['offset'] = PDO::PARAM_INT;
    $values['pageSize'] = $pageSet->getPageSize();
    $types['pageSize'] = PDO::PARAM_INT;
    $sql = $acStr->toString();
    $list = $recorder->query($sql)->bind($values, $types)->fetchAll();
    $as = $tpl->getArg($params, 'as', 'news_list');
    $tpl->assign($as, $list);
}
Пример #3
0
$dir_check_result = null;
foreach ($dirs as $dir) {
    $msg = '<span class="success">可写</span>';
    if (!is_writable(DIR_ROOT . $dir['path'])) {
        $is_success &= false;
        $msg = '<span class="error">不可写</span>';
    }
    $dir_check_result .= sprintf('<li>%s %s</li>', $msg, $dir['name']);
}
/* zoeey loaded */
$zoeey_check_result = '<span class="error">ZoeeyPHP 加载失败</span>';
if (extension_loaded('zoeey')) {
    $zoeey_check_result = '<span class="success">ZoeeyPHP 加载成功</span>';
}
/* database check */
$recorder = new ZeRecorder(Conn::getConn());
$recorder->query('DROP TABLE IF EXISTS news_e')->execute();
$recorder->query('CREATE TABLE news_e (
                          id integer PRIMARY KEY autoincrement
                        , title VARCHAR(300)
                        , category INT(11)
                        , detail VARCHAR(3000)
                        , edit_time INT(11)
                        , create_time INT(11)
                        )  ')->execute();
$time = time();
for ($i = 1; $i <= 50; $i++) {
    $recorder->query('INSERT INTO news_e values (null,:title,:category,:detail,:time,:time)')->bind(array('title' => 'title_' . $i, 'detail' => 'content_' . $i, 'category' => array_rand(array(1, 2, 3)), 'time' => $time))->execute();
}
$rows = $recorder->query('SELECT * FROM news_e LIMIT 0,5')->fetchAll();
$database_check_result = null;
Пример #4
0
 /**
  *
  * @global UserInfo $userInfo
  * @param array $fields
  * @return array
  */
 public static function view($fields)
 {
     $info = null;
     do {
         $values = array();
         $types = array();
         $sql = 'SELECT
                       `id`,`title`,`category`
                       ,`detail`,`create_time`,`edit_time`
                FROM `news_e`
                WHERE `id` = :id
               ';
         $values['id'] = $fields['id'];
         $types['id'] = PDO::PARAM_INT;
         $recorder = new ZeRecorder(Conn::getConn());
         $info = $recorder->query($sql)->bind($values)->fetch();
     } while (false);
     return $info;
 }