public static function modify($fields) { $info = null; do { $values = array(); $types = array(); /* @var $acStr ZeActiveString */ $acStr = new ZeActiveString(); $acStr->putAll(array('update' => 'UPDATE `news_e` SET `edit_time` = :edit_time ', 'update.category' => ',`category` = :category ', 'where' => 'where 1 = 1 ', 'where.id' => 'AND FIND_IN_SET(`id`,:ids) > 0 ', 'where.state' => 'AND `state` < :state_del ', 'limit' => 'limit 20 ')); $acStr->active('update'); $acStr->active('where'); $acStr->active('limit'); if (true) { $values['edit_time'] = $fields['edit_time']; $types['edit_time'] = PDO::PARAM_INT; $values['ids'] = join(',', $fields['id']); $types['ids'] = PDO::PARAM_STR; $acStr->active('where.id'); } $category = $fields['category']; if (strlen($category) > 0) { $values['category'] = $category; $types['category'] = PDO::PARAM_INT; $acStr->active('update.category'); } $recorder = new ZeRecorder(Conn::getConn()); $sql = $acStr->toString(); $info = $recorder->query($sql)->bind($values, $types)->execute(); } while (false); return $info; }
/** * 单信息显示 * @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); }