📄 mtdb_base.php
字号:
$daterange = ''; } if ($limit > 0) { $limit = "limit $limit"; } else { $limit = ''; } if ($cat_name = isset($args['category']) ? $args['category'] : null) { $cats = preg_split('/\s+(AND|OR)\s+/', $cat_name); $is_and = preg_match('/\sAND\s/', $args['category']); $name_list = ''; foreach ($cats as $cat) { if ($name_list != '') $name_list .= ','; $name_list .= "'".$this->escape($cat)."'"; } $sql = " select $distinct mt_entry.*, mt_category.*, mt_placement.*, mt_trackback.*, mt_author.* from mt_placement, mt_category, mt_entry left outer join mt_trackback on trackback_entry_id = entry_id, mt_author $comment_join where category_id = placement_category_id $blog_filter $entry_filter and entry_id = placement_entry_id and entry_status = 2 and entry_author_id = author_id $author_filter and category_label in ($name_list) $daterange $day_limit order by $sort_field $order $limit $offset "; } else { $sql = " select $distinct mt_entry.*, mt_placement.*, mt_trackback.*, mt_author.* from mt_entry left outer join mt_placement on placement_entry_id = entry_id and placement_is_primary = 1 left outer join mt_trackback on trackback_entry_id = entry_id, mt_author $comment_join where entry_status = 2 $blog_filter $entry_filter and entry_author_id = author_id $author_filter $daterange $day_limit order by $sort_field $order $limit $offset "; } $entries = $this->get_results($sql, ARRAY_A); $id_list = array(); $last_date = ''; $seen = array(); if (is_array($entries)) { foreach ($entries as $key => $entry) { if (isset($seen[$entry['entry_id']])) continue; $id_list[] = $entry['entry_id']; $entries[$key]['entry_created_on'] = preg_replace('/[^0-9]/', '', $entries[$key]['entry_created_on']); $entries[$key]['EntriesHeader'] = $key == 0; $entries[$key]['EntriesFooter'] = $key == count($entries)-1; $entry_date = substr($entry['entry_created_on'],0,10); $entries[$key]['DateHeader'] = 0; $entries[$key]['DateFooter'] = 0; $entries[$key]['EntryBreak'] = 0; if ($last_date != $entry_date) { $entries[$key]['DateHeader'] = 1; $entries[$key]['DateFooter'] = $key > 0; $last_date = $entry_date; } if ($key == count($entries)-1) { $entries[$key]['DateFooter'] = 1; } else { $entries[$key]['DateFooter'] = $last_date != substr($entries[$key+1]['entry_created_on'],0,10); } if (!$entries[$key]['DateFooter']) { if (!$entries[$key]['EntriesFooter']) { $entries[$key]['EntryBreak'] = 1; } } $seen[$entries[$key]['entry_id']] = 1; } } # pre-cache comment counts and categories for these entries $this->cache_comment_counts($id_list); $this->cache_ping_counts($id_list); $this->cache_categories($id_list); $this->cache_permalinks($id_list); return $entries; }/* function now_ts($blog) { $tsa = offset_time_list(time(), $blog); $now = sprintf("%04d%02d%02d%02d%02d%02d", $tsa[5] + 1900, $tsa[4] + 1, $tsa[3], $tsa[2], $tsa[1], $tsa[0]); return $now; }*/ function &fetch_categories($args) { # load categories if (isset($args['blog_id'])) { $blog_filter = 'and category_blog_id = '.intval($args['blog_id']); } if (isset($args['category_id'])) { if (isset($args['children'])) { if (isset($this->_cat_id_cache['c'.$args['category_id']])) { $cat = $this->_cat_id_cache['c'.$args['category_id']]; if (isset($cat['_children'])) { $children = $cat['_children']; if ($children === false) { return null; } else { return $children; } } } $cat_filter = 'and category_parent = '.intval($args['category_id']); } else { $cat_filter = 'and category_id = '.intval($args['category_id']); $limit = 1; } } elseif (isset($args['label'])) { $cat_filter = 'and category_label = \''.$this->escape($args['label']).'\''; $limit = 1; } else { $limit = $args['lastn']; if (isset($args['sort_order'])) { if ($args['sort_order'] == 'ascend') { $sort_order = 'asc'; } elseif ($args['sort_order'] == 'descend') { $sort_order = 'desc'; } } else { $sort_order = ''; } } if ($args['show_empty']) { $join_clause = 'left outer join mt_placement on placement_category_id = category_id left outer join mt_entry on entry_id = placement_entry_id and entry_status = 2'; if (isset($args['entry_id'])) { $join_clause .= ' and entry_id = ' . intval($args['entry_id']); } } else { $join_clause = ', mt_placement, mt_entry'; $cat_filter .= ' and placement_category_id = category_id and entry_id = placement_entry_id'; if (isset($args['entry_id'])) { $cat_filter .= ' and entry_id = ' . intval($args['entry_id']); } } if ($limit > 0) { $limit = "limit $limit"; } else { $limit = ''; } $sql = " select mt_category.*, mt_trackback.*, count(mt_placement.placement_id) as category_count from mt_category $join_clause left outer join mt_trackback on trackback_category_id = category_id where 1 = 1 $cat_filter $blog_filter group by category_id order by category_label $sort_order $limit "; if (empty($cat_filter) && (!isset($args['entry_id']))) { $args['top_level_categories'] = 1; } $categories = $this->get_results($sql, ARRAY_A); if (!$categories) { return null; } if (isset($args['children']) && isset($parent_cat)) { $parent_cat['_children'] =& $categories; } else { $id_list = array(); foreach ($categories as $cid => $cat) { $cat_id = $cat['category_id']; if (isset($args['top_level_categories']) || !isset($this->_cat_id_cache['c'.$cat_id])) { $id_list[] = $cat_id; $this->_cat_id_cache['c'.$cat_id] = $categories[$cid]; } if (isset($args['top_level_categories'])) { $this->_cat_id_cache['c'.$cat_id]['_children'] = false; } } $top_cats = array(); foreach ($categories as $cid => $cat) { if ($cat['category_parent'] > 0) { if (!isset($categories[$cid]['category_parent'])) { $parent_id = $cat['category_parent']; if (isset($this->_cat_id_cache['c'.$parent_id])) { if (isset($args['top_level_categories'])) { $parent =& $this->fetch_category($categories[$cid]['category_parent']); if (!isset($parent['_children']) || ($parent['_children'] === false)) { $parent['_children'] = array(&$categories[$cid]); } else { $parent['_children'][] = $categories[$cid]; } } } } else { if (isset($args['top_level_categories'])) { $parent =& $this->fetch_category($categories[$cid]['category_parent']); $parent['_children'][] = $categories[$cid]; } } } if ((!$cat['category_parent']) && ($args['top_level_categories'])) { $top_cats[] = $categories[$cid]; } } $this->cache_category_links($id_list); if ($args['top_level_categories']) { return $top_cats; } } return $categories; } function &fetch_entry($entry_id) { if (isset($this->_entry_id_cache['entry_id'])) { return $this->_entry_id_cache[$entry_id]; } list($entry) = $this->fetch_entries(array('entry_id' => $entry_id)); $this->_entry_id_cache[$entry_id] = $entry; return $entry; } function &fetch_author($author_id) { if (isset($this->_author_id_cache[$author_id])) { return $this->_author_id_cache[$author_id]; } $author = $this->get_row(" select * from mt_author where author_id=$author_id ", ARRAY_A); $this->_author_id_cache[$author_id] = $author; return $author; } function cache_permalinks(&$entry_list) { $id_list = ''; foreach ($entry_list as $entry_id) { if (!isset($this->_entry_link_cache[$entry_id.';Individual'])) { $id_list .= ','.$entry_id; $this->_entry_link_cache[$entry_id.';Individual'] = ''; } } if (empty($id_list)) return; $id_list = substr($id_list, 1); $query = " select fileinfo_entry_id, fileinfo_url, blog_site_url from mt_fileinfo, mt_templatemap, mt_blog where fileinfo_entry_id in ($id_list) and fileinfo_archive_type = 'Individual' and blog_id = fileinfo_blog_id and templatemap_id = fileinfo_templatemap_id and templatemap_is_preferred = 1 "; $results = $this->get_results($query, ARRAY_N); if ($results) { foreach ($results as $row) { $blog_url = $row[2]; $blog_url = preg_replace('!(https?://(?:[^/]+))/.*!', '$1', $blog_url); $url = $blog_url . $row[1]; $this->_entry_link_cache[$row[0].';Individual'] = $url; } } } function cache_category_links(&$cat_list) { $id_list = ''; foreach ($cat_list as $cat_id) { if (!isset($this->_cat_link_cache[$cat_id])) { $id_list .= ','.$cat_id; $this->_cat_link_cache[$cat_id] = ''; } } if (empty($id_list)) return; $id_list = substr($id_list, 1); $query = " select fileinfo_category_id, fileinfo_url, blog_site_url from mt_fileinfo, mt_templatemap, mt_blog where fileinfo_category_id in ($id_list) and fileinfo_archive_type = 'Category' and blog_id = fileinfo_blog_id and templatemap_id = fileinfo_templatemap_id and templatemap_is_preferred = 1 "; $results = $this->get_results($query, ARRAY_N); if ($results) { foreach ($results as $row) { $blog_url = $row[2]; $blog_url = preg_replace('!(https?://(?:[^/]+))/.*!', '$1', $blog_url); $url = $blog_url . $row[1]; $this->_cat_link_cache[$row[0]] = $url; } } } function cache_comment_counts(&$entry_list) { $id_list = ''; foreach ($entry_list as $entry_id) { if (!isset($this->_comment_count_cache[$entry_id])) { $id_list .= ','.$entry_id; } } if (empty($id_list)) return; $id_list = substr($id_list, 1); $query = " select comment_entry_id, count(*) from mt_comment where comment_entry_id in ($id_list) and comment_visible = 1 group by comment_entry_id "; $results = $this->get_results($query, ARRAY_N); foreach ($entry_list as $entry_id) { $this->_comment_count_cache[$entry_id] = 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -