не работает ооп
This commit is contained in:
101
backend/modules/reports/models/Month.php
Normal file
101
backend/modules/reports/models/Month.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
namespace backend\modules\reports\models;
|
||||
|
||||
use common\classes\Debug;
|
||||
use yii\base\Model;
|
||||
use function GuzzleHttp\Psr7\str;
|
||||
|
||||
class Month
|
||||
{
|
||||
|
||||
public $inactive_begin;
|
||||
public $inactive_end;
|
||||
public $active;
|
||||
public $days;
|
||||
|
||||
public function __construct($date = null)
|
||||
{
|
||||
// $date = '2021-08-10';
|
||||
$this->inactive_begin = [];
|
||||
$this->inactive_end = [];
|
||||
// Debug::prn($date);
|
||||
if (!$date and !self::is_date($date)) {
|
||||
|
||||
$date = date('Y-m-d');
|
||||
Debug::dd($date);
|
||||
}
|
||||
// Debug::dd($date);
|
||||
|
||||
$first_day_of_week = self::get_day_week(self::get_first_day($date));
|
||||
$quantity_days = self::get_days_month($date);
|
||||
|
||||
$day = 1;
|
||||
|
||||
for (
|
||||
$index = $first_day_of_week;
|
||||
$index < $first_day_of_week + $quantity_days;
|
||||
$index++, $day++
|
||||
) {
|
||||
$this->active[$index] = $day;
|
||||
}
|
||||
|
||||
$prev_month = date('Y-m-d', strtotime(self::get_first_day($date)) - 3600 * 37);
|
||||
|
||||
$day = self::get_days_month($prev_month);
|
||||
|
||||
for ($index = $first_day_of_week - 1; $index >= 1; $index--, $day--) {
|
||||
$this->inactive_begin[$index] = $day;
|
||||
}
|
||||
|
||||
$day = 1;
|
||||
$index_end = ($first_day_of_week==7?42:35);
|
||||
for ($index = $quantity_days + $first_day_of_week; $index <=$index_end; $index++, $day++) {
|
||||
$this->inactive_end[$index] = $day;
|
||||
}
|
||||
|
||||
$this->days = array_merge($this->inactive_end, $this->inactive_begin, $this->active);
|
||||
// Debug::dd($this);
|
||||
|
||||
}
|
||||
|
||||
public static function next_day($date, $number)
|
||||
{
|
||||
return date('Y-m-d', strtotime($date) + 3600 * 24 * $number);
|
||||
}
|
||||
|
||||
public static function get_first_day($date)
|
||||
{
|
||||
return date('Y-m-01', strtotime($date));
|
||||
}
|
||||
|
||||
public static function get_day_week($date)
|
||||
{
|
||||
$day = date('w', strtotime(date($date)));
|
||||
if($day==0)
|
||||
return 7;
|
||||
return $day;
|
||||
}
|
||||
|
||||
public static function is_date($date)
|
||||
{
|
||||
$date = date_parse($date);
|
||||
if ($date or checkdate($date['month'], $date['day'], $date['year']))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public static function get_days_month($date)
|
||||
{
|
||||
return date("t", strtotime($date));
|
||||
}
|
||||
|
||||
|
||||
public function a()
|
||||
{
|
||||
// $a = date('w', strtotime(date('')))
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user