Example #1
0
 /**
  *
  */
 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 */
Example #5
0
<?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"/>
Example #6
0
<?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;
 }
Example #8
0
 */
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'));