晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/rainic/www/oldTZh/wp-content/plugins/persian-gravity-forms/includes/ |
Upload File : |
<?php
defined( 'ABSPATH' ) || exit;
class GFPersian_Snippets extends GFPersian_Core {
public function __construct() {
if ( $this->option( 'label_visibility', '1' ) == '1' ) {
add_filter( 'gform_enable_field_label_visibility_settings', '__return_true' );
}
if ( $this->option( 'private_post', '1' ) == '1' ) {
add_action( 'gform_post_status_options', [ $this, 'add_private_post_status' ] );
}
if ( $this->option( 'newsletter', '1' ) == '1' ) {
add_filter( 'gform_notification_events', [ $this, 'add_newsletter_notification_event' ] );
add_filter( 'gform_before_resend_notifications', [ $this, 'add_notification_filter' ] );
}
// Add payment statuses to notification events
add_filter( 'gform_notification_events', [ $this, 'add_payment_statuses_notification_event' ] );
add_action( 'gform_post_payment_action', [ $this, 'send_payment_status_notification' ], 10, 2 );
}
/**
* Append payment events to the form notifications
*
* @param array $events
*
* @return array
*/
public function add_payment_statuses_notification_event( array $events ): array {
$events['complete_payment'] = esc_html( 'پرداخت موفق' );
$events['fail_payment'] = esc_html( 'پرداخت ناموفق' );
return $events;
}
/**
* Send notifications based on payment status
*
* @param array $entry
* @param string $event
*
* @return void
*/
public function send_payment_status_notification( array $entry, string $event = 'fail_payment' ): void {
$allowed_events = [
'complete_payment',
'fail_payment',
];
if ( ! in_array( $event, $allowed_events, true ) ) {
return;
}
$form = GFAPI::get_form( rgar( $entry, 'form_id' ) );
// Get all notifications assigned to this event
$notifications = GFCommon::get_notifications( $event, $form );
// Retrieve already sent notification IDs for this entry
$sent_notifications = gform_get_meta( $entry['id'], '_gform_notification_sent' ) ?: [];
foreach ( $notifications as $nid => $notification ) {
// Skip if already sent
if ( in_array( $nid, $sent_notifications, true ) ) {
continue;
}
// Skip if conditional logic is not valid
if ( ! GFCommon::evaluate_conditional_logic( rgar( $notification, 'conditionalLogic' ), $form, $entry ) ) {
continue;
}
// Send the notification
GFCommon::send_notification( $notification, $form, $entry );
// Mark this notification as sent
$sent_notifications[] = $nid;
gform_update_meta( $entry['id'], '_gform_notification_sent', $sent_notifications );
}
}
public function add_private_post_status( $post_statuses ) {
$post_statuses['private'] = 'خصوصی';
return $post_statuses;
}
/*---------------------------------------------------------------------------------------------*/
/*----------Start of NewsLetter----------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------*/
public function add_newsletter_notification_event( $events ) {
$events['newsletter'] = 'خبرنامه';
return $events;
}
public function add_notification_filter( $form ) {
add_filter( 'gform_notification', [ $this, 'evaluate_notification_conditional_logic' ], 10, 3 );
return $form;
}
public function evaluate_notification_conditional_logic( $notification, $form, $entry ) {
// if it fails conditional logic, suppress it
if ( $notification['event'] == 'newsletter' && ! GFCommon::evaluate_conditional_logic( rgar( $notification, 'conditionalLogic' ), $form, $entry ) ) {
add_filter( 'gform_pre_send_email', [ $this, 'abort_next_notification' ] );
}
return $notification;
}
public function abort_next_notification( $args ) {
remove_filter( 'gform_pre_send_email', [ $this, 'abort_next_notification' ] );
$args['abort_email'] = true;
return $args;
}
/*---------------------------------------------------------------------------------------------*/
/*----------End of NewsLetter------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------*/
}
new GFPersian_Snippets();