Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- error_reporting(E_ALL);
- ini_set('display_errors', 1);
- $now = date('d.n.Y H:i:s');
- $startWork = 9;
- $endWork = 18;
- $weekend = [6,7];
- $holidays = [date('01.01.2017'), date('23.02.2017')];
- $countTasks = 2;
- $hoursForTasks = [9, 1];
- $priority = [10, 20];
- $deadLines = [];
- class TaskManager{
- private static $tasks = [];
- public static $datetime;
- public static $holidays = [];
- public static $startWork = 0;
- public static $endWork = 0;
- public $hours = 0;
- public $priority = 0;
- public $deadline;
- public static function init($params){
- self::$datetime = new DateTime(date('23.12.2016 12:15:00'));
- if(isset($params['start']) && !empty($params['start']))
- self::$startWork = $params['start'];
- if(isset($params['end']) && !empty($params['end']))
- self::$endWork = $params['end'];
- }
- function __construct($params){
- if(isset($params['hours']) && !empty($params['hours']))
- $this->hours = $params['hours'];
- if(isset($params['priority']) && !empty($params['priority']))
- $this->priority = $params['priority'];
- $this->deadline = self::$datetime;
- self::$tasks[] = $this;
- }
- /**
- * Сортировка по приоритету
- */
- public static function sort(&$tasksArr){
- function cmp($a, $b)
- {
- if ($a == $b) {
- return 0;
- }
- return ($a->priority > $b->priority) ? -1 : 1;
- }
- usort($tasksArr, "cmp");
- }
- public static function calcDeadLines($tasks){
- }
- public static function isWork($time){
- if($time >= self::$startWork && $time < self::$endWork)
- return true;
- else
- return false;
- }
- public static function isHoliday($date){
- return (boolean)in_array($date, self::$holidays);
- }
- public static function showDeadLines(){
- echo '<pre>';
- print_r(self::$tasks);
- echo '</pre>';
- }
- public static function count(){
- return count(self::$tasks);
- }
- }
- TaskManager::init([
- 'start' => 9,
- 'end' => 18
- ]);
- $tasks[] = new TaskManager([
- 'hours' => 9,
- 'priority' => 10
- ]);
- $tasks[] = new TaskManager([
- 'hours' => 1,
- 'priority' => 20
- ]);
- echo '<pre>';
- print_r($tasks);
- echo '</pre>';
- TaskManager::sort($tasks); // Сортировка по приоритету
- echo '<pre>';
- print_r($tasks);
- echo '</pre>';
- $count = count($tasks);
- for($i = 0; $i < $count; $i++){
- echo '<pre>';
- print_r('task');
- echo '</pre>';
- $task = &$tasks[$i];
- $task->deadline = TaskManager::$datetime;
- for($j = 0; $j < $task->hours; $j++){
- $time = TaskManager::$datetime->format('H');
- $date = TaskManager::$datetime->format('d.m.Y');
- echo 'time';
- echo '<pre>';
- print_r($time);
- echo '</pre>';
- if(TaskManager::isWork($time)){
- if(TaskManager::isHoliday($date))
- TaskManager::$datetime = new DateTime($date . '+ 1day');
- else
- TaskManager::$datetime->add(new DateInterval('PT1H'));
- echo '<pre>';
- print_r(TaskManager::$datetime);
- echo '</pre>';
- }else{
- TaskManager::$datetime = new DateTime($date . '+ 1day');
- TaskManager::$datetime->setTime(TaskManager::$startWork, 0,0);
- }
- echo '-------------------';
- echo '<pre>';
- print_r($tasks);
- echo '</pre>';
- echo '-------------------';
- }
- echo '<pre>';
- print_r('set deadline');
- echo '</pre>';
- echo '<pre>';
- print_r(TaskManager::$datetime);
- echo '</pre>';
- $task->deadline = TaskManager::$datetime;
- echo '<pre>';
- print_r($task);
- echo '</pre>';
- //$tasks[$i] = $task;
- }
- echo '<pre>';
- print_r('tasks');
- echo '</pre>';
- echo '<pre>';
- print_r($tasks);
- echo '</pre>';
- //TaskManager::showDeadLines();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement