晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/akaindir/www/crm/modules/Mobile/third-party/qCal/qCal/Value/ |
Upload File : |
<?php
/**
* Recur Value
* Specifies a pattern of dates, often for recurring events. This is an
* extremely versitile data type. It can represent a very wide range of
* recurring dates, as well as include and exclude dates.
* @package qCal
* @copyright Luke Visinoni (luke.visinoni@gmail.com)
* @author Luke Visinoni (luke.visinoni@gmail.com)
* @license GNU Lesser General Public License
*
* Value Name: RECUR
*
* Purpose: This value type is used to identify properties that contain
* a recurrence rule specification.
*
* Formal Definition: The value type is defined by the following
* notation:
*
* recur = "FREQ"=freq *(
*
* ; either UNTIL or COUNT may appear in a 'recur',
* ; but UNTIL and COUNT MUST NOT occur in the same 'recur'
*
* ( ";" "UNTIL" "=" enddate ) /
* ( ";" "COUNT" "=" 1*DIGIT ) /
*
* ; the rest of these keywords are optional,
* ; but MUST NOT occur more than once
*
* ( ";" "INTERVAL" "=" 1*DIGIT ) /
* ( ";" "BYSECOND" "=" byseclist ) /
* ( ";" "BYMINUTE" "=" byminlist ) /
* ( ";" "BYHOUR" "=" byhrlist ) /
* ( ";" "BYDAY" "=" bywdaylist ) /
* ( ";" "BYMONTHDAY" "=" bymodaylist ) /
* ( ";" "BYYEARDAY" "=" byyrdaylist ) /
* ( ";" "BYWEEKNO" "=" bywknolist ) /
* ( ";" "BYMONTH" "=" bymolist ) /
* ( ";" "BYSETPOS" "=" bysplist ) /
* ( ";" "WKST" "=" weekday ) /
* ( ";" x-name "=" text )
* )
*
* freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
* / "WEEKLY" / "MONTHLY" / "YEARLY"
*
* enddate = date
* enddate =/ date-time ;An UTC value
*
* byseclist = seconds / ( seconds *("," seconds) )
*
* seconds = 1DIGIT / 2DIGIT ;0 to 59
*
* byminlist = minutes / ( minutes *("," minutes) )
*
* minutes = 1DIGIT / 2DIGIT ;0 to 59
*
* byhrlist = hour / ( hour *("," hour) )
*
* hour = 1DIGIT / 2DIGIT ;0 to 23
*
* bywdaylist = weekdaynum / ( weekdaynum *("," weekdaynum) )
*
* weekdaynum = [([plus] ordwk / minus ordwk)] weekday
*
* plus = "+"
*
* minus = "-"
*
* ordwk = 1DIGIT / 2DIGIT ;1 to 53
*
* weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA"
* ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
* ;FRIDAY, SATURDAY and SUNDAY days of the week.
*
* bymodaylist = monthdaynum / ( monthdaynum *("," monthdaynum) )
*
* monthdaynum = ([plus] ordmoday) / (minus ordmoday)
*
* ordmoday = 1DIGIT / 2DIGIT ;1 to 31
*
* byyrdaylist = yeardaynum / ( yeardaynum *("," yeardaynum) )
*
* yeardaynum = ([plus] ordyrday) / (minus ordyrday)
*
* ordyrday = 1DIGIT / 2DIGIT / 3DIGIT ;1 to 366
*
* bywknolist = weeknum / ( weeknum *("," weeknum) )
*
* weeknum = ([plus] ordwk) / (minus ordwk)
*
* bymolist = monthnum / ( monthnum *("," monthnum) )
*
* monthnum = 1DIGIT / 2DIGIT ;1 to 12
*
* bysplist = setposday / ( setposday *("," setposday) )
*
* setposday = yeardaynum
*
* Description: If the property permits, multiple "recur" values are
* specified by a COMMA character (US-ASCII decimal 44) separated list
* of values. The value type is a structured value consisting of a list
* of one or more recurrence grammar parts. Each rule part is defined by
* a NAME=VALUE pair. The rule parts are separated from each other by
* the SEMICOLON character (US-ASCII decimal 59). The rule parts are not
* ordered in any particular sequence. Individual rule parts MUST only
* be specified once.
*
* The FREQ rule part identifies the type of recurrence rule. This rule
* part MUST be specified in the recurrence rule. Valid values include
* SECONDLY, to specify repeating events based on an interval of a
* second or more; MINUTELY, to specify repeating events based on an
* interval of a minute or more; HOURLY, to specify repeating events
* based on an interval of an hour or more; DAILY, to specify repeating
* events based on an interval of a day or more; WEEKLY, to specify
* repeating events based on an interval of a week or more; MONTHLY, to
* specify repeating events based on an interval of a month or more; and
* YEARLY, to specify repeating events based on an interval of a year or
* more.
*
* The INTERVAL rule part contains a positive integer representing how
* often the recurrence rule repeats. The default value is "1", meaning
* every second for a SECONDLY rule, or every minute for a MINUTELY
* rule, every hour for an HOURLY rule, every day for a DAILY rule,
* every week for a WEEKLY rule, every month for a MONTHLY rule and
* every year for a YEARLY rule.
*
* The UNTIL rule part defines a date-time value which bounds the
* recurrence rule in an inclusive manner. If the value specified by
* UNTIL is synchronized with the specified recurrence, this date or
* date-time becomes the last instance of the recurrence. If specified
* as a date-time value, then it MUST be specified in an UTC time
* format. If not present, and the COUNT rule part is also not present,
* the RRULE is considered to repeat forever.
*
* The COUNT rule part defines the number of occurrences at which to
* range-bound the recurrence. The "DTSTART" property value, if
* specified, counts as the first occurrence.
*
* The BYSECOND rule part specifies a COMMA character (US-ASCII decimal
* 44) separated list of seconds within a minute. Valid values are 0 to
* 59. The BYMINUTE rule part specifies a COMMA character (US-ASCII
* decimal 44) separated list of minutes within an hour. Valid values
* are 0 to 59. The BYHOUR rule part specifies a COMMA character (US-
* ASCII decimal 44) separated list of hours of the day. Valid values
* are 0 to 23.
*
* The BYDAY rule part specifies a COMMA character (US-ASCII decimal 44)
* separated list of days of the week; MO indicates Monday; TU indicates
* Tuesday; WE indicates Wednesday; TH indicates Thursday; FR indicates
* Friday; SA indicates Saturday; SU indicates Sunday.
*
* Each BYDAY value can also be preceded by a positive (+n) or negative
* (-n) integer. If present, this indicates the nth occurrence of the
* specific day within the MONTHLY or YEARLY RRULE. For example, within
* a MONTHLY rule, +1MO (or simply 1MO) represents the first Monday
* within the month, whereas -1MO represents the last Monday of the
* month. If an integer modifier is not present, it means all days of
* this type within the specified frequency. For example, within a
* MONTHLY rule, MO represents all Mondays within the month.
*
* The BYMONTHDAY rule part specifies a COMMA character (ASCII decimal
* 44) separated list of days of the month. Valid values are 1 to 31 or
* -31 to -1. For example, -10 represents the tenth to the last day of
* the month.
*
* The BYYEARDAY rule part specifies a COMMA character (US-ASCII decimal
* 44) separated list of days of the year. Valid values are 1 to 366 or
* -366 to -1. For example, -1 represents the last day of the year
* (December 31st) and -306 represents the 306th to the last day of the
* year (March 1st).
*
* The BYWEEKNO rule part specifies a COMMA character (US-ASCII decimal
* 44) separated list of ordinals specifying weeks of the year. Valid
* values are 1 to 53 or -53 to -1. This corresponds to weeks according
* to week numbering as defined in [ISO 8601]. A week is defined as a
* seven day period, starting on the day of the week defined to be the
* week start (see WKST). Week number one of the calendar year is the
* first week which contains at least four (4) days in that calendar
* year. This rule part is only valid for YEARLY rules. For example, 3
* represents the third week of the year.
*
* Note: Assuming a Monday week start, week 53 can only occur when
* Thursday is January 1 or if it is a leap year and Wednesday is
* January 1.
*
* The BYMONTH rule part specifies a COMMA character (US-ASCII decimal
* 44) separated list of months of the year. Valid values are 1 to 12.
*
* The WKST rule part specifies the day on which the workweek starts.
* Valid values are MO, TU, WE, TH, FR, SA and SU. This is significant
* when a WEEKLY RRULE has an interval greater than 1, and a BYDAY rule
* part is specified. This is also significant when in a YEARLY RRULE
* when a BYWEEKNO rule part is specified. The default value is MO.
*
* The BYSETPOS rule part specifies a COMMA character (US-ASCII decimal
* 44) separated list of values which corresponds to the nth occurrence
* within the set of events specified by the rule. Valid values are 1 to
* 366 or -366 to -1. It MUST only be used in conjunction with another
* BYxxx rule part. For example "the last work day of the month" could
* be represented as:
*
* RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1
*
* Each BYSETPOS value can include a positive (+n) or negative (-n)
* integer. If present, this indicates the nth occurrence of the
* specific occurrence within the set of events specified by the rule.
*
* If BYxxx rule part values are found which are beyond the available
* scope (ie, BYMONTHDAY=30 in February), they are simply ignored.
*
* Information, not contained in the rule, necessary to determine the
* various recurrence instance start time and dates are derived from the
* Start Time (DTSTART) entry attribute. For example,
* "FREQ=YEARLY;BYMONTH=1" doesn't specify a specific day within the
* month or a time. This information would be the same as what is
* specified for DTSTART.
*
* BYxxx rule parts modify the recurrence in some manner. BYxxx rule
* parts for a period of time which is the same or greater than the
* frequency generally reduce or limit the number of occurrences of the
* recurrence generated. For example, "FREQ=DAILY;BYMONTH=1" reduces the
* number of recurrence instances from all days (if BYMONTH tag is not
* present) to all days in January. BYxxx rule parts for a period of
* time less than the frequency generally increase or expand the number
* of occurrences of the recurrence. For example,
* "FREQ=YEARLY;BYMONTH=1,2" increases the number of days within the
* yearly recurrence set from 1 (if BYMONTH tag is not present) to 2.
*
* If multiple BYxxx rule parts are specified, then after evaluating the
* specified FREQ and INTERVAL rule parts, the BYxxx rule parts are
* applied to the current set of evaluated occurrences in the following
* order: BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYDAY, BYHOUR,
* BYMINUTE, BYSECOND and BYSETPOS; then COUNT and UNTIL are evaluated.
*
* Here is an example of evaluating multiple BYxxx rule parts.
*
* DTSTART;TZID=US-Eastern:19970105T083000
* RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU;BYHOUR=8,9;
* BYMINUTE=30
*
* First, the "INTERVAL=2" would be applied to "FREQ=YEARLY" to arrive
* at "every other year". Then, "BYMONTH=1" would be applied to arrive
* at "every January, every other year". Then, "BYDAY=SU" would be
* applied to arrive at "every Sunday in January, every other year".
* Then, "BYHOUR=8,9" would be applied to arrive at "every Sunday in
* January at 8 AM and 9 AM, every other year". Then, "BYMINUTE=30"
* would be applied to arrive at "every Sunday in January at 8:30 AM and
* 9:30 AM, every other year". Then, lacking information from RRULE, the
* second is derived from DTSTART, to end up in "every Sunday in January
* at 8:30:00 AM and 9:30:00 AM, every other year". Similarly, if the
* BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY or BYMONTH rule part were
* missing, the appropriate minute, hour, day or month would have been
* retrieved from the "DTSTART" property.
*
* No additional content value encoding (i.e., BACKSLASH character
* encoding) is defined for this value type.
*
* Example: The following is a rule which specifies 10 meetings which
* occur every other day:
*
* FREQ=DAILY;COUNT=10;INTERVAL=2
*
* There are other examples specified in the "RRULE" specification.
*/
class qCal_Value_Recur extends qCal_Value {
/**
* @todo: implement this - this one's gonna be a doozy
*/
protected function doCast($value) {
// return new qCal_Date_Recur();
return $value;
}
}