public function toDoList()
 {
     // ToDo-list
     if (isset($this->user)) {
         $newmsgs = 0;
         $msgs = new pm();
         $msgs->recipient_id = $this->user->id;
         $msgs->recipient_delete = 0;
         $msgs->is_read = 0;
         if ($msgs->find()) {
             while ($msgs->fetch()) {
                 ++$newmsgs;
             }
         }
         $wait_res_count = 0;
         $waiting_res = $this->user->getWaitingRes();
         if (is_array($waiting_res)) {
             foreach ($waiting_res as $res) {
                 ++$wait_res_count;
             }
         }
         $waiting_user = new poolsUser();
         $wait_user_count = array();
         $waiting_user->wait = 1;
         $wait_user = false;
         if ($waiting_user->find()) {
             while ($waiting_user->fetch()) {
                 $user_admin = new poolsAdmin();
                 $user_admin->pool_id = $waiting_user->pool_id;
                 $user_admin->user_id = $this->user->id;
                 if ($user_admin->find()) {
                     $wait_user = true;
                     ++$wait_user_count["{$waiting_user->pool_id}"]["count"];
                     $wait_user_count["{$waiting_user->pool_id}"]["pool"] = new pools();
                     $wait_user_count["{$waiting_user->pool_id}"]["pool"]->get($waiting_user->pool_id);
                 }
             }
         }
         if ($wait_user || $wait_res_count > 0 || $newmsgs > 0) {
             $todo = array();
             if ($wait_res_count > 0) {
                 $todo['res'] = $wait_res_count;
             }
             if ($newmsgs > 0) {
                 $todo['msgs'] = $newmsgs;
             }
             if ($wait_user) {
                 $todo['user'] = $wait_user_count;
             }
             $this->todo = $todo;
         } else {
             $this->todo = false;
         }
     }
 }
 private function process()
 {
     $mail = services::getService('mail');
     $config = services::getService('config');
     $lang = services::getService('lang');
     $params = services::getService('pageParams');
     $categories = services::getService('cats');
     // function is set
     if ($params->getParam('function')) {
         $this->function = $params->getParam('function');
     } else {
         $this->function = 'inbox';
     }
     // view
     if ($this->function == 'view') {
         $view = new pm();
         $view->id = $params->getParam('msg_id');
         $view->find(true);
         if ($view->recipient_id == $this->user->id || $view->sender_id == $this->user->id) {
             if ($view->recipient_id == $this->user->id) {
                 $view->fetchSender();
                 $delete = clone $view;
                 $delete->delete();
                 $view->is_read = 1;
                 $view->insert();
             }
             if ($view->sender_id == $this->user->id) {
                 $view->fetchRecipient();
             }
             $this->view = clone $view;
         }
     }
     // inbox
     if ($this->function == 'inbox') {
         // delete
         if ($params->getParam('delete')) {
             $msg = new pm();
             $msg->id = $params->getParam('delete');
             $msg->find();
             $msg->fetch();
             if ($msg->recipient_id == $this->user->id) {
                 $delete = clone $msg;
                 $delete->delete();
                 $msg->recipient_delete = 1;
                 $msg->insert();
                 $this->addMsg('msg_msg_deleted');
             }
         }
         // mark read
         if ($params->getParam('markread')) {
             $msg = new pm();
             $msg->id = $params->getParam('markread');
             $msg->find();
             $msg->fetch();
             if ($msg->recipient_id == $this->user->id) {
                 $delete = clone $msg;
                 $delete->delete();
                 $msg->is_read = 1;
                 $msg->insert();
             }
         }
         // get list
         $msgs = new pm();
         $msgs->recipient_id = $this->user->id;
         $msgs->recipient_delete = 0;
         $msgs->orderBy('is_read ASC, date DESC');
         $msgs->find();
         while ($msgs->fetch()) {
             $msgs->fetchSender();
             $this->inbox[] = clone $msgs;
         }
     }
     // sent
     if ($this->function == 'sent') {
         $msgs = new pm();
         $msgs->sender_id = $this->user->id;
         $msgs->orderBy('date DESC');
         $msgs->find();
         while ($msgs->fetch()) {
             $msgs->fetchRecipient();
             $this->sent[] = clone $msgs;
         }
     }
     if ($this->function == 'new') {
         if ($params->getParam('recipient')) {
             $this->msgform = new formPM('msgform', $params->getParam('recipient'));
             $recipient = new user();
             $recipient->id = $params->getParam('recipient');
             $recipient->find(true);
             $this->recipient = clone $recipient;
             if ($params->getParam('answer')) {
                 $answer = new pm();
                 $answer->id = $params->getParam('answer');
                 $answer->find(true);
                 $this->msgform->setDefaults(array('title' => 'Re: ' . $answer->title));
             }
             if ($this->msgform->validate()) {
                 $msg = new pm();
                 $msg->recipient_id = $this->msgform->exportValue('recipient');
                 $msg->sender_id = $this->user->id;
                 $msg->title = $this->msgform->exportValue('title');
                 $msg->body = $this->msgform->exportValue('body');
                 $msg->is_in_draft = 0;
                 $msg->is_read = 0;
                 $msg->recipient_delete = 0;
                 $msg->sender_delete = 0;
                 $msg->date = time();
                 $msg->insert();
                 $addr = new adressbook();
                 $addr->recipient_id = $this->msgform->exportValue('recipient');
                 $addr->sender_id = $this->user->id;
                 if (!$addr->find()) {
                     $addr->insert();
                 }
                 // send email
                 $recipient = new user();
                 $recipient->id = $this->msgform->exportValue('recipient');
                 $recipient->find(true);
                 $mail->send('new_pm', $recipient, $this->user);
                 $this->switchPage('pm&function=inbox&msg=msg_msg_sent');
             }
         } else {
             if ($params->getParam('delete')) {
                 $delete = new adressbook();
                 $delete->sender_id = $this->user->id;
                 $delete->recipient_id = $params->getParam('delete');
                 $delete->delete();
                 $this->addMsg('msg_contact_deleted');
             }
             $addr = new adressbook();
             $addr->sender_id = $this->user->id;
             $addr->find();
             while ($addr->fetch()) {
                 $addr->fetchRecipient();
                 $this->adressbook[] = clone $addr;
             }
         }
     }
     $this->commonProcess();
 }