/** * Get list of messages */ public static function getPage($page = 0) { $app = \Slim\Slim::getInstance(); $dao = new MessageDAO(); $userDAO = new UserDAO(); $users = $userDAO->getList(); $groupDAO = new GroupDAO(); $groupsQuery = array(); $senderDAO = new SenderDAO(); $sendersQuery = array(); if (!$userDAO->hasRole('ADMIN')) { $strong = \Strong\Strong::getInstance(); $user = $strong->getUser(); $groupsQuery['user_id'] = $user['id']; $sendersQuery['user_id'] = $user['id']; } $groups = $groupDAO->getList($groupsQuery); if (0 == $groups['total']) { return $app->redirect(MAINURL . '/groups'); } $senders = $senderDAO->getList($sendersQuery); if (0 == $senders['total']) { return $app->redirect(MAINURL . '/senders'); } $app->expires(time()); $query = $_GET; if (!$userDAO->hasRole('ADMIN')) { $strong = \Strong\Strong::getInstance(); $user = $strong->getUser(); $query['user_id'] = $user['id']; } $pager = new Pager(MAINURL . '/messages/', 25); $pager->setPage($page); $query = $pager->getQueryArray($query); $list = $dao->getList($query); $pager->setCount(count($list['list'])); if (isset($list['total'])) { $pager->setTotal($list['total']); } foreach ($list['list'] as $k => $v) { $list['list'][$k]->dataHuman = self::getHumanUrl($v); } $app->view->set('menu', 'messages'); $app->view->set('result', $list); $app->view->set('pager', $pager); $app->view->set('groups', $groups); $app->view->set('senders', $senders); $app->view->set('users', $users); $app->render('messages/list.twig.html'); }
public static function getSentPage($page = 0) { $app = \Slim\Slim::getInstance(); $limit = 50; if ($_GET['format'] == 'csv') { $page = 0; $limit = 10000; } $userDAO = new UserDAO(); $messageDAO = new MessageDAO(); $groupDAO = new GroupDAO(); $groups = $groupDAO->getList(); $groups = $groups['list']; $formUtils = new FormUtils(); $startTime = $formUtils->toTimestamp($_GET['start_date'] . ' 00:00'); $endTime = $formUtils->toTimestamp($_GET['end_date'] . ' 23:59'); if ($endTime <= 0) { $endTime = time(); } if ($startTime <= 0) { $startTime = $endTime - 7 * 24 * 3600; } $app->view->set('start_date', $startTime); $app->view->set('end_date', $endTime); $query = $_GET; $query['start_date'] = $startTime; $query['end_date'] = $endTime; if (!$userDAO->hasRole('ADMIN')) { $strong = \Strong\Strong::getInstance(); $user = $strong->getUser(); $query['user_id'] = $user['id']; } $pager = new Pager(MAINURL . '/reports/sent/?' . http_build_query($_GET), $limit); $pager->setPage($page); $query = $pager->getQueryArray($query); $list = $messageDAO->getList($query); $pager->setCount(count($list['list'])); if (isset($list['total'])) { $pager->setTotal($list['total']); } $reportTable = array(); foreach ($list['list'] as $message) { $statuses = $messageDAO->getStatuses($message); foreach ($statuses as $status) { if (empty($status['target'])) { continue; } $key = $status['message_id']; if (!empty($reportTable[$key])) { $reportRow = $reportTable[$key]; } else { $reportRow = array(); $group = $groups[$message->getGroupId()]; $reportRow['group'] = $group->getNickname(); $reportRow['groupCnt'] = count($groupDAO->getNumbers($group->getId())); $reportRow['ctime'] = $message->getCtime(); $reportRow['msg'] = $message->getData(); $reportRow['targets'] = array(); $reportRow['sent'] = array(); $reportRow['recv'] = array(); $reportRow['error'] = 0; $reportRow['status'] = 0; } $reportRow['targets'] = $message->getTarget(); switch ($status['status']) { case Message::MESSAGE_STATUS_ERROR: $reportRow['status'] = 'ERR'; break; case Message::MESSAGE_STATUS_RECEIVED_BY_SERVER: case Message::MESSAGE_STATUS_RECEIVED_BY_PHONE: $reportRow['status'] = 'RECV'; $reportRow['recv'][$status['target']] = 1; break; case Message::MESSAGE_STATUS_SENT: $reportRow['status'] = 'SENT'; $reportRow['sent'][$status['target']] = 1; if ($reportRow['sent_time'] < $status['mtime']) { $reportRow['sent_time'] = $status['mtime']; } break; } $reportTable[$key] = $reportRow; } } foreach ($reportTable as $k => $v) { $v['sentCnt'] = count($v['sent']); $v['recvCnt'] = count($v['recv']); $reportTable[$k] = $v; } $app->view->set('menu', 'reports'); $app->view->set('reportTable', array_values($reportTable)); $app->view->set('query', $query); $app->view->set('pager', $pager); if ($_GET['format'] == 'csv') { header("Content-type: text/csv"); header("Content-disposition: attachment; filename=sent.csv"); $app->render('reports/sent.twig.csv'); } else { $app->render('reports/sent.twig.html'); } }
} } $contacts = array_keys($contacts); try { $whatsDAO = WhatsappDAO::instance($sender); $whatsDAO->syncContacts($sender, $contacts); $flags = $sender->getFlags(); $flags &= ~\GitGis\Whatsapp\Model\Sender::FLAG_UNSYNC; $sender->setFlags($flags); $senderDAO->save($sender); } catch (\Exception $ex) { echo $ex; } } } $messagesList = $messageDAO->getList(array('toSend' => time())); $messages = $messagesList['list']; usort($messages, function ($a, $b) { return $a->getGroupId() - $b->getGroupId(); }); logToCronFile("Fetched messages to send: " . count($messages)); foreach ($messages as $message) { $messageDAO->clearRetry($message); $groupId = $message->getGroupId(); $sender = $senderDAO->fetch($message->getSenderId()); if (!$sender->getId()) { continue; } if ('' == $sender->getPassword()) { echo "Empty password for " . $sender->getUsername() . ' ' . $sender->getNickname() . "\n"; $messageDAO->addStatus($message, Message::MESSAGE_STATUS_ERROR, 'Sender not registered - go sender and use confirm SMS function');