function display($params) { $Log_Model = new Log_Model(); $options_cache = Option::getAll(); extract($options_cache); $page = isset($params[4]) && $params[4] == 'page' ? abs(intval($params[5])) : 1; $tag = isset($params[1]) && $params[1] == 'tag' ? addslashes(urldecode(trim($params[2]))) : ''; $pageurl = ''; //page meta $site_title = stripslashes($tag) . ' - ' . $site_title; $Tag_Model = new Tag_Model(); $blogIdStr = $Tag_Model->getTagByName($tag); if ($blogIdStr === false) { show_404_page(); } $sqlSegment = "and gid IN ({$blogIdStr}) order by date desc"; $lognum = $Log_Model->getLogNum('n', $sqlSegment); $total_pages = ceil($lognum / $index_lognum); if ($page > $total_pages) { $page = $total_pages; } $pageurl .= Url::tag(urlencode($tag), 'page'); $logs = $Log_Model->getLogsForHome($sqlSegment, $page, $index_lognum); $page_url = pagination($lognum, $index_lognum, $page, $pageurl); include View::getView('header'); include View::getView('log_list'); }
public static function getInstance() { if (self::$instance == null) { self::$instance = new Tag_Model(); } return self::$instance; }
<?php /** * 管理文章 * @copyright (c) Emlog All Rights Reserved */ require_once 'globals.php'; $Log_Model = new Log_Model(); //显示文章(草稿)管理页面 if ($action == '') { $Tag_Model = new Tag_Model(); $User_Model = new User_Model(); $pid = isset($_GET['pid']) ? $_GET['pid'] : ''; $tagId = isset($_GET['tagid']) ? intval($_GET['tagid']) : ''; $sid = isset($_GET['sid']) ? intval($_GET['sid']) : ''; $uid = isset($_GET['uid']) ? intval($_GET['uid']) : ''; $keyword = isset($_GET['keyword']) ? addslashes($_GET['keyword']) : ''; $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $checked = isset($_GET['checked']) ? addslashes($_GET['checked']) : ''; $sortView = isset($_GET['sortView']) && $_GET['sortView'] == 'ASC' ? 'DESC' : 'ASC'; $sortComm = isset($_GET['sortComm']) && $_GET['sortComm'] == 'ASC' ? 'DESC' : 'ASC'; $sortDate = isset($_GET['sortDate']) && $_GET['sortDate'] == 'DESC' ? 'ASC' : 'DESC'; $sqlSegment = ''; if ($tagId) { $blogIdStr = $Tag_Model->getTagById($tagId); $sqlSegment = "and gid IN ({$blogIdStr})"; } elseif ($sid) { $sqlSegment = "and sortid={$sid}"; } elseif ($uid) { $sqlSegment = "and author={$uid}"; } elseif ($checked) {
if ($action == '') { $Tag_Model = new Tag_Model(); $Sort_Model = new Sort_Model(); $sorts = $CACHE->readCache('sort'); $tags = $Tag_Model->getTag(); $localtime = time() + Option::get('timezone') * 3600; $postDate = gmdate('Y-m-d H:i:s', $localtime); include View::getView('header'); require_once View::getView('add_log'); include View::getView('footer'); View::output(); } //显示编辑文章页面 if ($action == 'edit') { $Log_Model = new Log_Model(); $Tag_Model = new Tag_Model(); $Sort_Model = new Sort_Model(); $logid = isset($_GET['gid']) ? intval($_GET['gid']) : ''; $blogData = $Log_Model->getOneLogForAdmin($logid); extract($blogData); $orig_date = $date - Option::get('timezone') * 3600; $sorts = $CACHE->readCache('sort'); //log tag $tags = array(); foreach ($Tag_Model->getTag($logid) as $val) { $tags[] = $val['tagname']; } $tagStr = implode(',', $tags); //old tag $tags = $Tag_Model->getTag(); $is_top = $top == 'y' ? 'checked="checked"' : '';
/** * 更新文章 */ function mw_editPost($args) { global $options_cache; escape($args); $username = $args[1]; $password = $args[2]; $user = login($username, $password); define('UID', $user['uid']); // 接受参数 $id = intval($args[0]); $username = $args[1]; $password = $args[2]; $data = $args[3]; $publish = $args[4]; $update_data['title'] = $data['title']; $update_data['content'] = htmlspecialchars_decode($data['description']); $update_data['author'] = UID; $update_data['hide'] = $publish == 1 ? 'n' : 'y'; // 根据分类名称取分类id,注意只取第一个分类 $sort_name = isset($data['categories']) && isset($data['categories'][0]) ? $data['categories'][0] : ''; $Sort_Model = new Sort_Model(); $sorts = $Sort_Model->getSorts(); unset($Sort_Model); $update_data['sortid'] = '-1'; foreach ($sorts as $sort) { if ($sort_name == $sort['sortname']) { $update_data['sortid'] = $sort['sid']; break; } } // 发布时间 if (isset($data['dateCreated']) && is_object($data['dateCreated'])) { $update_data['date'] = @gmmktime($data['dateCreated']->hour, $data['dateCreated']->minute, $data['dateCreated']->second, $data['dateCreated']->month, $data['dateCreated']->day, $data['dateCreated']->year) - $options_cache['timezone'] * 3600; } // 更新数据 $Log_Model = new Log_Model(); $Log_Model->updateLog($update_data, $id); // 更新标签 if (isset($data['mt_keywords']) && !empty($data['mt_keywords'])) { $Tag_Model = new Tag_Model(); $Tag_Model->updateTag($data['mt_keywords'], $id); } // 更新缓存 Cache::getInstance()->updateCache(); response('<boolean>1</boolean>'); }
<?php /** * 保存文章(增加、修改) * @copyright (c) Emlog All Rights Reserved */ require_once 'globals.php'; $Log_Model = new Log_Model(); $Tag_Model = new Tag_Model(); $title = isset($_POST['title']) ? addslashes(trim($_POST['title'])) : ''; $postDate = isset($_POST['postdate']) ? trim($_POST['postdate']) : ''; $date = isset($_POST['date']) ? addslashes($_POST['date']) : ''; //修改前的文章时间 $sort = isset($_POST['sort']) ? intval($_POST['sort']) : ''; $tagstring = isset($_POST['tag']) ? addslashes(trim($_POST['tag'])) : ''; $content = isset($_POST['content']) ? addslashes(trim($_POST['content'])) : ''; $excerpt = isset($_POST['excerpt']) ? addslashes(trim($_POST['excerpt'])) : ''; $author = isset($_POST['author']) && ROLE == ROLE_ADMIN ? intval(trim($_POST['author'])) : UID; $blogid = isset($_POST['as_logid']) ? intval(trim($_POST['as_logid'])) : -1; //如被自动保存为草稿则有blog id号 $alias = isset($_POST['alias']) ? addslashes(trim($_POST['alias'])) : ''; $top = isset($_POST['top']) ? addslashes(trim($_POST['top'])) : 'n'; $sortop = isset($_POST['sortop']) ? addslashes(trim($_POST['sortop'])) : 'n'; $allow_remark = isset($_POST['allow_remark']) ? addslashes(trim($_POST['allow_remark'])) : 'n'; $ishide = isset($_POST['ishide']) && !empty($_POST['ishide']) && !isset($_POST['pubdf']) ? addslashes($_POST['ishide']) : 'n'; $password = isset($_POST['password']) ? addslashes(trim($_POST['password'])) : ''; $postTime = $Log_Model->postDate(Option::get('timezone'), $postDate, $date); LoginAuth::checkToken(); //check alias if (!empty($alias)) { $logalias_cache = $CACHE->readCache('logalias');
/** * 文章标签缓存 */ private function mc_logtags() { $tag_model = new Tag_Model(); $newlog = $this->readCache("newlog"); $log_cache_tags = array(); foreach ($newlog as $each) { $gid = $each['gid']; $tag_ids = $tag_model->getTagIdsFromBlogId($gid); $tag_names = $tag_model->getNamesFromIds($tag_ids); $tags = array(); foreach ($tag_names as $key => $value) { $tag = array(); $tag['tagurl'] = rawurlencode($value); $tag['tagname'] = htmlspecialchars($value); $tag['tid'] = intval($key); $tags[] = $tag; } $log_cache_tags[$gid] = $tags; } $cacheData = serialize($log_cache_tags); $this->cacheWrite($cacheData, 'logtags'); }
<?php /** * 标签管理 * @copyright (c) Emlog All Rights Reserved */ require_once 'globals.php'; $Tag_Model = new Tag_Model(); if ($action == '') { $tags = $Tag_Model->getTag(); include View::getView('header'); require_once View::getView('tag'); include View::getView('footer'); View::output(); } if ($action == "mod_tag") { $tagId = isset($_GET['tid']) ? intval($_GET['tid']) : ''; $tag = $Tag_Model->getOneTag($tagId); extract($tag); include View::getView('header'); require_once View::getView('tagedit'); include View::getView('footer'); View::output(); } //标签修改 if ($action == 'update_tag') { $tagName = isset($_POST['tagname']) ? addslashes($_POST['tagname']) : ''; $tagId = isset($_POST['tid']) ? intval($_POST['tid']) : ''; if (empty($tagName)) { emDirect("tag.php?action=mod_tag&tid={$tagId}&error_a=1"); }
function blog_tag($blogid) { global $CACHE; $tag_model = new Tag_Model(); $log_cache_tags = $CACHE->readCache('logtags'); if (!empty($log_cache_tags[$blogid])) { $tag = '标签:'; foreach ($log_cache_tags[$blogid] as $value) { $tag .= "\t<a href=\"" . Url::tag($value['tagurl']) . "\">" . $value['tagname'] . '</a>'; } echo $tag; } else { $tag_ids = $tag_model->getTagIdsFromBlogId($blogid); $tag_names = $tag_model->getNamesFromIds($tag_ids); if (!empty($tag_names)) { $tag = '标签:'; foreach ($tag_names as $key => $value) { $tag .= "\t<a href=\"" . Url::tag(rawurlencode($value)) . "\">" . htmlspecialchars($value) . '</a>'; } echo $tag; } } }
/** * 相关日志插件的功能集合到J3中;related_log插件没有用了 模板中也不再埋入相关日志加载点 * @param array $logData 文章显示时的文章数据 * @return array */ function getRelatedLog($logData) { global $CACHE; $logid = $logData['logid']; $sortid = $logData['sortid']; $sortType = _g('related_log_sort_type'); $sortBy = _g('related_log_sort_by'); $countNum = _g('related_log_count'); #DbModel $DbModel = Database::getInstance(); $sql = "SELECT gid,title,date FROM " . DB_PREFIX . "blog WHERE hide='n' AND type='blog'"; #排序类别的sql拼装 if ($sortType == 'tags') { $log_cache_tags = $CACHE->readCache('logtags'); // dump($log_cache_tags[$logid]); $TagModel = new Tag_Model(); $log_id_str = '0'; foreach ($log_cache_tags[$logid] as $key => $val) { $log_id_str .= ',' . $TagModel->getTagByName($val['tagname']); } $log_id_str = implode(',', array_unique(explode(',', ltrim($log_id_str, '0,')))); $sql .= " AND gid!={$logid} AND gid IN ({$log_id_str})"; } else { $sql .= " AND gid!={$logid} AND sortid={$sortid}"; } #排序规则 switch ($sortBy) { case 'viewDesc': $sql .= " ORDER BY views DESC"; break; case 'viewASC': $sql .= " ORDER BY views ASC"; break; case 'comnuDesc': $sql .= " ORDER BY comnum DESC"; break; case 'comnuASC': $sql .= " ORDER BY comnum ASC"; break; default: #按索引键随机降序或升序多读出几行 随后使用php随机处理,不再在mysql中使用rand函数 if (mt_rand(1, 10) >= 5) { $sql .= " ORDER BY gid DESC"; } else { $sql .= " ORDER BY gid ASC"; } break; } #结果条数限制 if ($sortBy == 'random') { $sliceLen = $countNum; $countNum = $countNum * 2; #随机的情况多一倍的数据出来 } $sql .= " LIMIT 0,{$countNum}"; $relatedLogs = array(); $res = $DbModel->query($sql); while ($row = $DbModel->fetch_array($res)) { $row['gid'] = intval($row['gid']); $row['title'] = htmlspecialchars($row['title']); $row['time'] = date('Y-m-d', $row['date']); $relatedLogs[] = $row; } if (!$relatedLogs) { return ''; #没有相关日志数据 } #随机处理 if ($sortBy == 'random') { shuffle($relatedLogs); #打乱数组,引用传值函数 $relatedLogs = array_slice($relatedLogs, 0, $sliceLen); } // dump($relatedLogs); $relatedString = '<div class="article_related"><h3>相关推荐</h3><ul>'; foreach ($relatedLogs as $key => $val) { $relatedString .= '<li><a href="' . Url::log($val['gid']) . '">' . $val['title'] . '</a><time>' . $val['time'] . '</time></li>'; } return $relatedString . '</ul></div>'; }
/** * Edit tag * * @param integer|string $tag_id * @param integer|string $group_id */ public function _tag_edit($tag_id = false, $group_id = false) { $this->history = false; // for authenticated users only if (!$this->user) { url::redirect('/tags'); } $errors = $form_errors = array(); $tag = new Tag_Model((int) $tag_id); $form_values = $tag->get_defaults(); // check post if (request::method() == 'post') { $post = $this->input->post(); $extra = array('author_id' => $this->user->id); if ($tag->validate($post, true, $extra)) { url::redirect(url::model($tag)); } else { $form_errors = $post->errors(); } $form_values = arr::overwrite($form_values, $post->as_array()); } // editing old? if ($tag_id) { $this->page_subtitle = __('Edit tag'); $this->breadcrumb[] = html::anchor(url::model($tag->tag_group), $tag->tag_group->name); $this->breadcrumb[] = html::anchor(url::model($tag), $tag->name); if ($this->visitor->logged_in('admin')) { $this->page_actions[] = array('link' => url::model($tag) . '/delete', 'text' => __('Delete tag'), 'class' => 'tag-delete'); } if (!$tag->id) { $errors = array('tags.error_tag_not_found'); } } else { $this->page_subtitle = __('Add tag'); if ($group_id) { $tag_group = new Tag_Group_Model((int) $group_id); $this->breadcrumb[] = html::anchor(url::model($tag_group), $tag_group->name); $this->breadcrumb[] = html::anchor(url::model($tag_group) . '/add', __('Add tag')); if ($tag_group->id) { $form_values['tag_group_id'] = $tag_group->id; } else { $errors = array('tags.error_tag_group_not_found'); } } } // show form if (empty($errors)) { widget::add('main', View_Mod::factory('tags/tag_edit', array('values' => $form_values, 'errors' => $form_errors))); } else { $this->_error(Kohana::lang('generic.error'), $errors); } $this->_side_views(); }