Ejemplo n.º 1
0
 public static function run()
 {
     if (self::$instance === null) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Ejemplo n.º 2
0
 public function index_na()
 {
     Header('Content-Type: text/html; charset=utf-8');
     set_time_limit(0);
     require_once ROOT_DIR . 'classes' . DS . 'simple_html_dom_class.php';
     $base_url = 'http://my.mail.ru';
     $users = $this->model('user_base')->getByField('used', '0', true, 'create_date', '20');
     if (!$users) {
         $this->writeLog('PARSER_ERRORS', 'No data to parse');
         tools_class::mail('Mail Parser error', 'No data to parse', '*****@*****.**');
     }
     foreach ($users as $user) {
         $html = file_get_html($base_url . $user['mail_url']);
         if (!$html) {
             $user['used'] = 1;
             $this->model('user_base')->insert($user);
             exit;
         }
         $friends = $html->find('.mm_friends_list_user');
         $date = date('Y-m-d H:i:s');
         foreach ($friends as $friend) {
             $url = $friend->href;
             $arr = explode('/', trim($url, '/'));
             $email = $arr[1] . '@' . $arr[0] . '.ru';
             $name = $friend->find('span')[0]->innertext;
             $arr = explode('<br />', $name);
             $first_name = $arr[0];
             $last_name = $arr[1];
             $row = [];
             if (!$this->model('user_base')->getByField('email', $friend->attr['data-email'])) {
                 if (!$email || !$url) {
                     continue;
                 }
                 //                    if($last_name) {
                 //                        $ending = $last_name[strlen($last_name - 2)] . $last_name[strlen($last_name - 1)];
                 //                        if(in_array($ending, array('ев', 'ов', 'ин', 'ий'))) {
                 //                            $row['gender'] = 1;
                 //                        } elseif(in_array($ending, array('ва', 'на', 'ая'))) {
                 //                            $row['gender'] = 2;
                 //                        } else {
                 //                            $row['gender'] = 0;
                 //                        }
                 //                    }
                 $row['email'] = $email;
                 $row['mail_url'] = $url;
                 $row['user_name'] = $first_name ? $first_name : '';
                 $row['user_surname'] = $last_name ? $last_name : '';
                 $row['create_date'] = $date;
                 $this->model('user_base')->insert($row);
             }
         }
         $this->model('user_base')->insert(array('id' => $user['id'], 'used' => 1));
         sleep(2);
     }
 }
Ejemplo n.º 3
0
 protected function tools()
 {
     return tools_class::run();
 }
Ejemplo n.º 4
0
 public function index()
 {
     if ($_FILES) {
         $error = false;
         $mapping_errors = [];
         $type_errors = [];
         $date_errors = [];
         $values = [];
         $unclosed = [];
         $tmp = $this->model('asanatt_excel_time')->getByField('work_end', '0000-00-00 00:00:00', true);
         foreach ($tmp as $row) {
             $unclosed[$row['username']] = $row;
         }
         foreach ($_FILES as $file) {
             // print_r(tools_class::readXLS($file['tmp_name']));
             //                exit;
             //                $simpleXLSX = new simpleXLSX_class($file['tmp_name']);
             //$array = $simpleXLSX->rows(1);
             $sheet = tools_class::readXLS($file['tmp_name'])[0];
             if (is_array($sheet)) {
                 $this->model('asanatt_excel_time')->beginTransaction();
                 $arr = [];
                 foreach ($sheet as $k => $row) {
                     foreach ($row as $key => $val) {
                         $row[$key] = trim($val);
                         $row[5] = $k + 1;
                     }
                     $user_name = $row[0];
                     if ($k == 0) {
                         continue;
                     }
                     $exp_date = explode('-', $row[3]);
                     $date = '20' . $exp_date[2] . '-' . $exp_date[0] . '-' . $exp_date[1];
                     $date_time = date('Y-m-d H:i:s', strtotime($date . ' ' . $row[4]));
                     //                        $exp = explode(' ', $row[4]);
                     //$offset = (int) gmdate( 'h', abs( date( 'Z' ) ) );
                     //$unix_time = $simpleXLSX->unixstamp($row[3] + $row[4]);
                     //$date_time = date('Y-m-d H:i:s', $unix_time);
                     //$date_time = date('Y-m-d H:i:s', strtotime($date_time . ' + ' . $offset . ' hour'));
                     //$date_time = date('Y-m-d H:i:s', $unix_time + $offset*3600);
                     //if($user_name == 'Nicdao, Gladys') echo date('Y-m-d H:i:s', strtotime($date . ' ' . $row[4])) . "\n";
                     //                        if(date('s', strtotime($date_time)) == '59') {
                     ////                            $date_time = date('Y-m-d H:i:s', $unix_time + ($offset + 1)*3600 + 1);
                     ////                            echo $date_time . "\n";
                     //                        }
                     //                        if($user_name == 'Bairan, Christian') {
                     //                            //print_r($row);
                     //                        //echo $unix_time;
                     //                            //echo date('Y-m-d H:i:s', $unix_time . ' + ' . $offset . ' hour') . "\n";
                     //                            echo date('Y-m-d H:i:s', $this->ExcelToPHP($row[3] + $row[4])) . "=\n";
                     //                            echo date('Y-m-d H:i:s', $unix_time) . "-2\n";
                     //                            echo $date_time . "-3\n";
                     ////                            exit;
                     //                        }
                     if ($unclosed[$user_name]) {
                         $arr[$user_name][$unclosed[$user_name]['work_begin']] = array($user_name, '', 'Clock In', '', '', 0, $unclosed[$user_name]['id']);
                     }
                     if (!$arr[$user_name][$date_time]) {
                         $arr[$user_name][$date_time] = $row;
                     } else {
                         $arr[$user_name][date('Y-m-d H:i:s', strtotime($date_time . ' + 1 minute'))] = $row;
                     }
                 }
                 foreach ($arr as $user_name => $rows) {
                     ksort($rows);
                     foreach ($rows as $date_time => $row) {
                         if (!($user = $this->model('asanatt_user_mapping')->getByField('user_name', $user_name))) {
                             $mapping_errors[$user_name] = $row;
                         }
                         if ($row[2] == 'Clock In') {
                             $index = count($values[$user_name]);
                             if ($row[6]) {
                                 $index = 0;
                                 $values[$user_name][$index]['id'] = $row[6];
                             }
                             $values[$user_name][$index]['k'] = $row[5];
                             $values[$user_name][$index]['work_begin'] = $date_time;
                             $values[$user_name][$index]['username'] = $user_name;
                         } elseif ($row[2] == 'Clock Out') {
                             $index = count($values[$user_name]) - 1;
                             $values[$user_name][$index]['work_end'] = $date_time;
                             $values[$user_name][$index]['username'] = $user_name;
                         } else {
                             $type_errors[] = array($row['k'], $user_name, $row[2]);
                         }
                     }
                 }
                 if ($values) {
                     foreach ($values as $v) {
                         foreach ($v as $row) {
                             //                                if(!$row['work_begin'] || date('Y-m-d', strtotime($row['work_begin']) == '1970-01-01' || $row['work_begin']) == '000-00-00 00:00:00'
                             //                                || !$row['work_end'] || date('Y-m-d', strtotime($row['work_end']) == '1970-01-01' || $row['work_end']) == '000-00-00 00:00:00') {
                             //                                    $date_errors[] = array($row['k'], $row['username'], 2);
                             //                                } else
                             if ($row['work_end'] && $row['work_end'] <= $row['work_begin']) {
                                 //$date_errors[] = array($row['k'], $row['username'], 2);
                             }
                             unset($row['k']);
                             $this->model('asanatt_excel_time')->insert($row);
                         }
                     }
                 }
                 if (!$type_errors && !$mapping_errors && !$date_errors) {
                     $this->model('asanatt_excel_time')->commitTransaction();
                 } else {
                     $this->model('asanatt_excel_time')->rollbackTransaction();
                 }
             } else {
                 $error = 'File could not be read';
             }
         }
         if ($error) {
             echo json_encode(array('status' => 2, 'error' => $error));
         } elseif ($mapping_errors) {
             echo json_encode(array('status' => 3, 'result' => $mapping_errors));
         } elseif ($type_errors) {
             echo json_encode(array('status' => 4, 'result' => $type_errors));
         } elseif ($date_errors) {
             echo json_encode(array('status' => 5, 'result' => $date_errors));
         } else {
             echo json_encode(array('status' => 1, 'values' => $values));
         }
         exit;
     }
     $this->view('upload' . DS . 'index');
 }
Ejemplo n.º 5
0
 private function team_member_table($data)
 {
     $stats = [];
     foreach ($data as $k => $v) {
         $stats[$v['username']][$v['date']] = tools_class::formatTime($v['seconds']);
         $dates[$v['date']] = $v['date'];
     }
     foreach ($stats as $k => $v) {
         foreach ($dates as $date) {
             if (!$stats[$k][$date]) {
                 $stats[$k][$date] = ' ';
             }
         }
     }
     foreach ($stats as $k => $v) {
         ksort($v);
         $stats[$k] = $v;
     }
     $this->render('stats', $stats);
     $this->render('dates', $dates);
 }