This file is indexed.

/usr/share/php/Date/Human.php is in php-date 1.4.7-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */

// {{{ Header

/**
 * Class to convert date strings between Gregorian and Human calendar formats
 *
 * The Human Calendar format has been proposed by Scott Flansburg and can be
 * explained as follows:
 *  The year is made up of 13 months
 *  Each month has 28 days
 *  Counting of months starts from 0 (zero) so the months will run from 0 to 12
 *  New Years day (00) is a monthless day
 *  Note: Leap Years are not yet accounted for in the Human Calendar system
 *
 * PHP versions 4 and 5
 *
 * LICENSE:
 *
 * Copyright (c) 1997-2006 Allan Kent
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted under the terms of the BSD License.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @category   Date and Time
 * @package    Date
 * @author     Allan Kent <allan@lodestone.co.za>
 * @copyright  1997-2006 Allan Kent
 * @license    http://www.opensource.org/licenses/bsd-license.php
 *             BSD License
 * @version    CVS: $Id: Human.php,v 1.6 2006/11/21 17:38:15 firman Exp $
 * @link       http://pear.php.net/package/Date
 * @since      File available since Release 1.3
 */

// }}}
// {{{ Class: Date_Human

/**
 * Class to convert date strings between Gregorian and Human calendar formats
 *
 * The Human Calendar format has been proposed by Scott Flansburg and can be
 * explained as follows:
 *  The year is made up of 13 months
 *  Each month has 28 days
 *  Counting of months starts from 0 (zero) so the months will run from 0 to 12
 *  New Years day (00) is a monthless day
 *  Note: Leap Years are not yet accounted for in the Human Calendar system
 *
 * @author     Allan Kent <allan@lodestone.co.za>
 * @copyright  1997-2005 Allan Kent
 * @license    http://www.opensource.org/licenses/bsd-license.php
 *             BSD License
 * @version    Release: 1.4.7
 * @link       http://pear.php.net/package/Date
 * @since      Class available since Release 1.3
 */
class Date_Human
{
    // {{{ gregorianToHuman()

    /**
     * Returns an associative array containing the converted date information
     * in 'Human Calendar' format.
     *
     * @param int day in DD format, default current local day
     * @param int month in MM format, default current local month
     * @param int year in CCYY format, default to current local year
     *
     * @access public
     *
     * @return associative array(
     *               hdom,       // Human Day Of Month, starting at 1
     *               hdow,       // Human Day Of Week, starting at 1
     *               hwom,       // Human Week of Month, starting at 1
     *               hwoy,       // Human Week of Year, starting at 1
     *               hmoy,       // Human Month of Year, starting at 0
     *               )
     *
     * If the day is New Years Day, the function will return
     * "hdom" =>  0
     * "hdow" =>  0
     * "hwom" =>  0
     * "hwoy" =>  0
     * "hmoy" => -1
     *  Since 0 is a valid month number under the Human Calendar, I have left
     *  the month as -1 for New Years Day.
     */
    function gregorianToHuman($day=0, $month=0, $year=0)
    {
        /*
         * Check to see if any of the arguments are empty
         * If they are then populate the $dateinfo array
         * Then check to see which arguments are empty and fill
         * those with the current date info
         */
        if ((empty($day) || (empty($month)) || empty($year))) {
            $dateinfo = getdate(time());
        }
        if (empty($day)) {
            $day = $dateinfo["mday"];
        }
        if (empty($month)) {
            $month = $dateinfo["mon"];
        }
        if (empty($year)) {
            $year = $dateinfo["year"];
        }
        /*
         * We need to know how many days into the year we are
         */
        $dateinfo = getdate(mktime(0, 0, 0, $month, $day, $year));
        $dayofyear = $dateinfo["yday"];
        /*
         * Human Calendar starts at 0 for months and the first day of the year
         * is designated 00, so we need to start our day of the year at 0 for
         * these calculations.
         * Also, the day of the month is calculated with a modulus of 28.
         * Because a day is 28 days, the last day of the month would have a
         * remainder of 0 and not 28 as it should be.  Decrementing $dayofyear
         * gets around this.
         */
        $dayofyear--;
        /*
         * 28 days in a month...
         */
        $humanMonthOfYear = floor($dayofyear / 28);
        /*
         * If we are in the first month then the day of the month is $dayofyear
         * else we need to find the modulus of 28.
         */
        if ($humanMonthOfYear == 0) {
            $humanDayOfMonth = $dayofyear;
        } else {
            $humanDayOfMonth = ($dayofyear) % 28;
        }
        /*
         * Day of the week is modulus 7
         */
        $humanDayOfWeek = $dayofyear % 7;
        /*
         * We can now increment $dayofyear back to it's correct value for
         * the remainder of the calculations
         */
        $dayofyear++;
        /*
         * $humanDayOfMonth needs to be incremented now - recall that we fudged
         * it a bit by decrementing $dayofyear earlier
         * Same goes for $humanDayOfWeek
         */
        $humanDayOfMonth++;
        $humanDayOfWeek++;
        /*
         * Week of the month is day of the month divided by 7, rounded up
         * Same for week of the year, but use $dayofyear instead $humanDayOfMonth
         */
        $humanWeekOfMonth = ceil($humanDayOfMonth / 7);
        $humanWeekOfYear = ceil($dayofyear / 7);
        /*
         * Return an associative array of the values
         */
        return array(
                     "hdom" => $humanDayOfMonth,
                     "hdow" => $humanDayOfWeek,
                     "hwom" => $humanWeekOfMonth,
                     "hwoy" => $humanWeekOfYear,
                     "hmoy" => $humanMonthOfYear );
    }

    // }}}
    // {{{ humanToGregorian()

    /**
     * Returns unix timestamp for a given Human Calendar date
     *
     * @param int day in DD format
     * @param int month in MM format
     * @param int year in CCYY format, default to current local year
     *
     * @access public
     *
     * @return int unix timestamp of date
     */
    function humanToGregorian($day, $month, $year=0)
    {
        /*
         * Check to see if the year has been passed through.
         * If not get current year
         */
        if (empty($year)) {
            $dateinfo = getdate(time());
            $year = $dateinfo["year"];
        }
        /*
         * We need to get the day of the year that we are currently at so that
         * we can work out the Gregorian Month and day
         */
        $DayOfYear = $month * 28;
        $DayOfYear += $day;
        /*
         * Human Calendar starts at 0, so we need to increment $DayOfYear
         * to take into account the day 00
         */
        $DayOfYear++;
        /*
         * the mktime() function will correctly calculate the date for out of
         * range values, so putting $DayOfYear instead of the day of the month
         * will work fine.
         */
        $GregorianTimeStamp = mktime(0, 0, 0, 1, $DayOfYear, $year);
        return $GregorianTimeStamp;
    }

    // }}}
}

// }}}

/*
 * Local variables:
 * mode: php
 * tab-width: 4
 * c-basic-offset: 4
 * c-hanging-comment-ender-p: nil
 * End:
 */
?>