/** * */ public function home($id) { $messages = new \Messages(); $message = $messages->getMessage($id); $this->_validateMessage($message); $controller = $this->_getController($message); $text = $controller->perform($message); if (!$text) { return; } // send text $chatId = $message->getChatId(); $messageId = BotHelper::sendMessage($chatId, $text); if (!$messageId) { di('log')->record("send fail: message id = {$message->getId()}"); } }
require '../loader.php'; /** * get user threads */ $userId = input_get('user_id'); if ($userId) { $users = new Users(); $threads = new Threads(); $messages = new Messages(); $user_threads = array(); $user_threads_ids = $users->getUserThreads($userId); if ($user_threads_ids) { for ($i = 0, $count = count($user_threads_ids); $i < $count; $i++) { $user_threads[] = array('id' => $user_threads_ids[$i]); $thread_users = $threads->getThreadUsers($user_threads_ids[$i]); $user_threads[$i]['users'] = array(); for ($j = 0, $jCount = count($thread_users); $j < $jCount; $j++) { $user_threads[$i]['users'][] = $users->getUser($thread_users[$j]); } $last_message = $messages->getMessage($threads->getLastMessageOfThread($user_threads_ids[$i])); $last_message['user'] = $users->getUser($last_message['sender_id']); unset($last_message['sender_id']); $user_threads[$i]['last_message'] = $last_message; } } echo output_json(TRUE, ERR_EMPTY, $user_threads); } else { echo output_json(FALSE, ERR_MISSING_DATA); } /* End of file get_user_threads.php */ /* Location ./scripts/get_user_threads.php */
<?php require '../loader.php'; /** * get thread messages */ $thread_id = input_get('thread_id'); if ($thread_id) { $users = new Users(); $threads = new Threads(); $messages = new Messages(); $thread_messages_ids = $threads->getThreadMessages($thread_id); $thread_users_ids = $threads->getThreadUsers($thread_id); $thread_users = array(); for ($i = 0, $count = count($thread_users_ids); $i < $count; $i++) { $thread_users[] = $users->getUser($thread_users_ids[$i]); } $thread_messages = array(); for ($i = 0, $count = count($thread_messages_ids); $i < $count; $i++) { $message = $messages->getMessage($thread_messages_ids[$i]); $message['user'] = $users->getUser($message['sender_id']); unset($message['sender_id']); $thread_messages[] = $message; } echo output_json(TRUE, ERR_EMPTY, array('users' => $thread_users, 'messages' => $thread_messages)); } else { echo output_json(FALSE, ERR_MISSING_DATA); } /* End of file get_thread_messages.php */ /* Location ./scripts/get_thread_messages.php */
<?php require '../loader.php'; /** * send message */ $thread_id = input_post('thread_id'); $message_body = input_post('message'); $sender_id = input_post('sender_id'); if ($thread_id && $message_body && $sender_id) { $users = new Users(); $threads = new Threads(); $messages = new Messages(); $push = new PushService(); $message_id = $messages->createMessage($thread_id, $sender_id, $message_body); $threads->addMessageToThread($thread_id, $message_id); $message = $messages->getMessage($message_id); $message['user'] = $users->getUser($message['sender_id']); unset($message['sender_id']); $push->pushMessage($message_id); echo output_json(TRUE, ERR_EMPTY, $message); } else { echo output_json(FALSE, ERR_MISSING_DATA); } /* End of file send_message.php */ /* Location ./scripts/send_message.php */
<?php require '../../../classes/AutoLoad.php'; $session = new Session(); $user = $session->getUser(); if ($user === NULL) { header('Location:../login.php'); exit; } $params = Request::reqFull(); $mensaje = Messages::getMessage($params); $db = new Database(); $manager = new ManagerUser($db); $params = array(); $params['administrator'] = 1; $admins = $manager->getList($params); $params = array(); $params['personal'] = 1; $personal = $manager->getList($params); $params = array(); $params['administrator'] = 0; $params['personal'] = 0; $normal = $manager->getList($params); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href="../css/style.css"/>
<?php include_once "../includes/webservice.inc.php"; $webService = new Webservices_Writer(); $webService->init(); $messageObj = new Messages(); $data = isset($_POST['data']) ? $_POST['data'] : ''; $result = $messageObj->getMessage($data); if ($result) { $webService->createXMLInstance(); $webService->appendArrayToRootNode('', $result); $webService->displayXML(); } else { $xmls = $webService->errorXML(join(",", $messageObj->errorMessages)); $webService->outputXML($xmls); }
/** * Validate a given class * A static method to validate your classes<br> * <code> * require_once 'path_to_lumine_package/LumineValidation.php'; * $person = new Person; * $results = LumineValidation::validate($person); * if($results === true) { * $person->save(); * } else { * print_r( $results ); * } * </code> * or * <code> * require_once 'path_to_lumine_package/LumineValidation.php'; * $person = new Person; * $results = $person->validate(); * </code> * @return mixed True on sucess, false if $class is not a LumineBase object and associative array of field with errors * @author Hugo Ferreira da Silva * @access public * @param object $class A class that extends LumineBase */ function validate(&$class) { // não é da classe LumineBase if (!is_a($class, "luminebase")) { return false; } //pega os campos da classe $table = $class->table(); $table = array_merge($table, $class->oTable->getForeignKeys()); // procura pelo arquivo de validaçao classname-validation.xml dentro do diretorio de mapeamentos $maps = $class->oTable->config->config['maps']; $maps = str_replace(".", "/", $maps); $xml = $class->oTable->config->config['class-path'] . '/' . $maps; $xml .= '/' . array_pop(explode(".", $class->oTable->class)) . '-validation.xml'; // erros $errors = array(); // se encontrou o arquivo, iremos fazer a validaçao pelo arquivo if (file_exists($xml)) { LumineLog::logger(1, "XML encontrado: " . $xml, __FILE__, __LINE__); // criamos uma nova instancia do DOMIT_Document $val =& new DOMIT_Document(); $val->resolveErrors(true); if (!$val->loadXML($xml)) { // erro no XML LumineLog::logger(1, "XML com erro: " . $val->getErrorString(), __FILE__, __LINE__); return false; } // pega o primeiro nó $first = $val->getElementsByPath("/lumine-validator", 1); if ($first) { $filename = $first->getAttribute("messages_file"); $fileparts = explode('.', $filename); $ext = array_pop($fileparts); $file = implode('/', $fileparts) . '.' . $ext; $file = $class->oTable->config->config['class-path'] . '/' . $file; if (file_exists($file) && is_file($file)) { Messages::parseFile($file); } } // Pega os validator $validator_list = $val->getElementsByPath("/lumine-validator/field"); // para cada validator for ($i = 0; $i < $validator_list->getLength(); $i++) { $node = $validator_list->item($i); $itens = $node->getElementsByPath("validator"); // pega o nome do campo a ser validado $key = $node->getAttribute("name"); // se não encontrar if ($key == '') { LumineLog::logger(1, "Informe o nome do campo para validação no arquivo <b>{$xml}</b>"); return false; } // se o campo no validator não existe na entidade if (!array_key_exists($key, $table)) { continue; } // pega o valor na entidade $value = $class->{$key}; // para cada validator encontrado para este campo for ($j = 0; $j < $itens->getLength(); $j++) { $vnode = $itens->item($j); $type = $vnode->getAttribute("type"); $msg_key = Messages::getMessage($vnode->getAttribute("msg-key")); $msg = $msg_key == false ? $vnode->getAttribute("msg") : $msg_key; $rule = $vnode->getAttribute("rule"); $cname = $vnode->getAttribute("name"); $cmethod = $vnode->getAttribute("method"); $minlength = $vnode->getAttribute("minlength"); $maxlength = $vnode->getAttribute("maxlength"); $minvalue = $vnode->getAttribute("minvalue"); $maxvalue = $vnode->getAttribute("maxvalue"); // faz um switch no tipo switch ($type) { case "requiredString": if (!array_key_exists($key, $errors) || $errors[$key] === true) { if ($class->{$key} == '') { $errors[$key] = $msg; continue; } if ($minlength != '' && strlen($class->{$key}) < $minlength) { $errors[$key] = $msg; continue; } if ($maxlength != '' && strlen($class->{$key}) > $maxlength) { $errors[$key] = $msg; continue; } $errors[$key] = true; } break; case "requiredNumber": if (!array_key_exists($key, $errors) || $errors[$key] === true) { if (!is_numeric($class->{$key})) { $errors[$key] = $msg; continue; } if ($minvalue != '' && $class->{$key} < $minvalue) { $errors[$key] = $msg; continue; } if ($maxvalue != '' && $class->{$key} > $maxvalue) { $errors[$key] = $msg; continue; } $errors[$key] = true; } break; case 'unique': if (!array_key_exists($key, $errors) || $errors[$key] === true) { $testClass = Util::Import($class->oTable->class); // se não encontrou a classe if ($testClass === false) { $erros[$key] = $msg; continue; } // se já existir um registro com este valor $testClass->{$key} = $class->{$key}; if ($testClass->find() > 0) { // pega as chaves primárias $pks = $testClass->oTable->getPrimaryKeys(); $todos = true; while ($testClass->fetch()) { // para cada pk foreach ($pks as $p => $prop) { // se ao menos UMA chave primária for diferente if ($testClass->{$p} != $class->{$p}) { // não passou na validação $todos = false; break; } } if ($todos == false) { break; } } // se houver uma chave diferente if ($todos == false) { // não passou $errors[$key] = $msg; continue; } } $errors[$key] = true; } break; case "rule": if (!array_key_exists($key, $errors) || $errors[$key] === true) { if ($rule != '') { // coloca os valores para a regra $regra = preg_replace("/#(.*?)#/e", "\$class->\\1", $rule); // executa o código $x = eval('if(' . $regra . ') return true;'); // se for falso, significa que não passou no teste if (!$x) { $errors[$key] = $msg; continue; } else { $errors[$key] = true; continue; } } else { $errors[$key] = '-- You must provide a rule to validate this field (' . $key . ')'; } } break; case "class": if (!array_key_exists($key, $errors) || $errors[$key] === true) { if ($cname != '') { $classname = array_pop(explode(".", $cname)); if (!class_exists($classname)) { Util::Import($cname); } $x = new $classname(); if (method_exists($x, $cmethod)) { $r = $x->{$cmethod}($class->{$key}); if ($r === true) { $errors[$key] = true; continue; } else { $errors[$key] = $msg; continue; } } else { $errors[$key] = '-- You must provida a valid method for class ' . $classname . ' to validate the field ' . $key; continue; } } else { $errors[$key] = '-- You must provide a class to validate this field(' . $key . ')'; continue; } } break; case "requiredEmail": if (!array_key_exists($key, $errors) || $errors[$key] === true) { if (Util::validateEmail($class->{$key})) { $errors[$key] = true; continue; } else { $errors[$key] = $msg; continue; } } break; case 'requiredDate': if (!array_key_exists($key, $errors) || $errors[$key] === true) { $reg = array(); if (preg_match('@^([0-9]{2})/([0-9]{2})/([0-9]{4})$@', $class->{$key}, $reg)) { if (checkdate($reg[2], $reg[1], $reg[3]) || checkdate($reg[1], $reg[2], $reg[3])) { $errors[$key] = true; continue; } else { $errors[$key] = $msg; continue; } } else { $errors[$key] = $msg; continue; } } break; case 'requiredISODate': if (!array_key_exists($key, $errors) || $errors[$key] === true) { $reg = array(); if (preg_match('@^([0-9]{4})-([0-9]{2})-([0-9]{2})$@', $class->{$key}, $reg)) { if (checkdate($reg[2], $reg[3], $reg[1])) { $errors[$key] = true; continue; } else { $errors[$key] = $msg; continue; } } else { $errors[$key] = $msg; continue; } } break; } } } // checa validações na classse foreach ($table as $key => $prop) { $m = "validate" . ucfirst($key); if (method_exists($class, $m)) { $x = $class->{$m}(); if ($x !== true) { if (is_bool($x)) { $errors[$key] = Messages::getMessage($class->tablename() . "." . $key); } else { $errors[$key] = $x; } } else { $errors[$key] = true; } } } foreach ($errors as $key => $msg) { if ($msg !== true) { $_REQUEST[$key . '_error'] = $msg; } } reset($errors); // terminou a validação dessa classe, porém verificamos se ela é uma classe extendida if (isset($class->oTable->extends) && $class->oTable->extends != '') { $x = Util::Import($class->oTable->extends); if ($x !== false) { $x->setFrom($class->toArray()); $r = $x->validate(); if ($r !== true) { $errors = array_merge($errors, $r); } } } foreach ($errors as $key => $msg) { if (isset($errors[$key]) && $errors[$key] !== true) { return $errors; } } return true; } LumineLog::logger(1, "XML não encontrado: " . $xml, __FILE__, __LINE__); /* somente entrará nesta parte se não encontrar o arquivo de validação */ // para cada campo (não sendo chaves many-to-many e one-to-many) $errors = array(); foreach ($table as $field => $prop) { if (isset($prop['not-null']) && $prop['not-null'] == 'true' && $field != $class->oTable->sequence_key) { if (!isset($class->{$field}) || $class->{$field} == '') { $errors[$field] = false; } } else { $errors[$field] = true; } /* if(isset($prop['foreign'])) { if($prop['foreign'] == false || ($prop['foreign'] && $prop['type'] == 'many-to-one')) { } } */ } foreach ($errors as $key => $value) { if ($value === false) { reset($errors); return $errors; } } return true; }
*/ require_once '../kernel/setup_inc.php'; require_once MESSAGES_PKG_PATH . 'Messages.php'; if (!$gBitUser->isRegistered()) { $gBitSystem->fatalError(tra("You are not logged in")); } $gBitSystem->isPackageActive('messages'); $gBitSystem->verifyPermission('p_messages_send'); $messages = new Messages(); if (isset($_REQUEST["msgdel"])) { $messages->expunge($gBitUser->mUserId, $_REQUEST['msgdel']); } if (!empty($_REQUEST['act'])) { $messages->flagMessage($_REQUEST); } $gBitSmarty->assign('msg_id', $_REQUEST['msg_id']); // get prev / next messages $listHash = $_REQUEST; $listHash['neighbour'] = 'next'; $next = $messages->getNeighbourMessage($listHash); $listHash['neighbour'] = 'prev'; $prev = $messages->getNeighbourMessage($listHash); $gBitSmarty->assign('next', $next); $gBitSmarty->assign('prev', $prev); // Mark the message as read $flagHash = array('msg_id' => $_REQUEST['msg_id'], 'act' => 'is_read', 'actval' => 'y'); $messages->flagMessage($flagHash); // Get the message and assign its data to template vars $msg = $messages->getMessage($gBitUser->mUserId, $_REQUEST['msg_id']); $gBitSmarty->assign('msg', $msg); $gBitSystem->display('bitpackage:messages/read.tpl', NULL, array('display_mode' => 'display'));