PHP 8.3.27
Preview: class.collaborator.php Size: 5.65 KB
/home7/doctorbruno/public_html/taeionline.com/support/include/class.collaborator.php
<?php
/*********************************************************************
    class.collaborator.php

    Ticket collaborator

    Peter Rotich <peter@osticket.com>
    Copyright (c)  2006-2013 osTicket
    http://www.osticket.com

    Released under the GNU General Public License WITHOUT ANY WARRANTY.
    See LICENSE.TXT for details.

    vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
require_once(INCLUDE_DIR . 'class.user.php');
require_once(INCLUDE_DIR . 'class.client.php');

class Collaborator
extends VerySimpleModel
implements EmailContact, ITicketUser {

    static $meta = array(
        'table' => THREAD_COLLABORATOR_TABLE,
        'pk' => array('id'),
        'select_related' => array('user'),
        'joins' => array(
            'thread' => array(
                'constraint' => array('thread_id' => 'Thread.id'),
            ),
            'user' => array(
                'constraint' => array('user_id' => 'User.id'),
            ),
        ),
    );

    const FLAG_ACTIVE = 0x0001;
    const FLAG_CC = 0x0002;

    var $active;


    function getId() {
        return $this->id;
    }

    function isActive() {
        return !!($this->flags & self::FLAG_ACTIVE);
    }

    function getCreateDate() {
        return $this->created;
    }

    function getThreadId() {
        return $this->thread_id;
    }

    function getTicketId() {
        if ($this->thread && $this->thread->object_type == ObjectModel::OBJECT_TYPE_TICKET)
            return $this->thread->object_id;
    }

    function getTicket() {
        // TODO: Change to $this->thread->ticket when Ticket goes to ORM
        if ($id = $this->getTicketId())
            return Ticket::lookup($id);
    }

    function getUser() {
        return $this->user;
    }

    // EmailContact interface
    function getEmail() {
        return $this->user->getEmail();
    }

    function getEmailAddress() {
        $emailaddr =  (string) $this->getEmail();
        if (($name=$this->getName()))
            $emailaddr = sprintf('"%s" <%s>',
                    (string) $name,
                    $emailaddr);
        return $emailaddr;
    }

    function getName() {
        return $this->user->getName();
    }

    static function getIdByUserId($userId, $threadId) {
        $row = Collaborator::objects()
            ->filter(array('user_id'=>$userId, 'thread_id'=>$threadId))
            ->values_flat('id')
            ->first();

        return $row ? $row[0] : 0;
    }

    // VariableReplacer interface
    function getVar($what) {
        global $cfg;

        switch (strtolower($what)) {
        case 'ticket_link':
            $qstr = array();
            if ($this->getTicket()->getAuthToken($this)
                && ($ticket=$this->getTicket())
                && !$ticket->getThread()->getNumCollaborators()) {
                  $qstr['auth'] = $ticket->getAuthToken($this);
                  return sprintf('%s/view.php?%s',
                          $cfg->getBaseUrl(),
                          Http::build_query($qstr, false)
                          );
                }
                else {
                  return sprintf('%s/tickets.php?id=%s',
                          $cfg->getBaseUrl(),
                          $ticket->getId()
                          );
                }
        }
    }

    // ITicketUser interface
    var $_isguest;

    function isOwner() {
        return false;
    }
    function flagGuest() {
        $this->_isguest = true;
    }
    function isGuest() {
        return $this->_isguest;
    }
    function getUserId() {
        return $this->user_id;
    }

    function __toString() {
        return Format::htmlchars($this->getEmailAddress());
    }

    function hasFlag($flag) {
        return ($this->get('flags', 0) & $flag) != 0;
    }

    public function setFlag($flag, $val) {
        if ($val)
            $this->flags |= $flag;
        else
            $this->flags &= ~$flag;
    }

    public function setCc($active=true) {
      $this->setFlag(Collaborator::FLAG_ACTIVE, $active);
      $this->setFlag(Collaborator::FLAG_CC, true);
      $this->save();
    }

    function isCc() {
        return !!($this->flags & self::FLAG_CC);
    }

    function getCollabList($collabs) {
      $collabList = array();
      foreach ($collabs as $c) {
        $u = User::lookup($c);
        if ($u) {
          $email = $u->getEmail()->address;
          $collabList[$c] = $email;
        }
      }
      return $collabList;
    }

    static function create($vars=false) {
        $inst = new static($vars);
        $inst->setFlag(Collaborator::FLAG_ACTIVE, true);
        $inst->setFlag(Collaborator::FLAG_CC, true);
        $inst->created = SqlFunction::NOW();
        return $inst;
    }

    function save($refetch=false) {
        if ($this->dirty)
            $this->updated = SqlFunction::NOW();
        return parent::save($refetch || $this->dirty);
    }

    static function add($info, &$errors) {
        if (!$info || !$info['threadId'] || !$info['userId'])
            $errors['err'] = __('Invalid or missing information');
        elseif ($c = Collaborator::lookup(array(
            'thread_id' => $info['threadId'],
            'user_id' => $info['userId'],
        )))
          $errors['err'] = sprintf(__('%s is already a collaborator'),
                      $c->getName());

        if ($errors) return false;

        $collab = static::create(array(
            'thread_id' => $info['threadId'],
            'user_id' => $info['userId'],
        ));
        if ($collab->save(true))
            return $collab;

        $errors['err'] = __('Unable to add collaborator.')
            .' '.__('Internal error occurred');

        return false;
    }

}
?>

Directory Contents

Dirs: 11 × Files: 132
Name Size Perms Modified Actions
cli DIR
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
client DIR
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
config DIR
- drwxr-xr-x 2017-09-15 04:26:55
Edit Download
fpdf DIR
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
i18n DIR
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
mpdf DIR
- drwxr-xr-x 2026-10-02 10:08:28
Edit Download
pear DIR
- drwxr-xr-x 2026-10-02 10:08:29
Edit Download
plugins DIR
- drwxr-xr-x 2026-10-02 10:08:29
Edit Download
staff DIR
- drwxr-xr-x 2026-10-02 10:08:29
Edit Download
upgrader DIR
- drwxr-xr-x 2026-10-02 10:08:29
Edit Download
14 B lrw-r--r-- 2025-02-04 09:58:56
Edit Download
194.97 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.29 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.61 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.76 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
13.03 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.33 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1006 B lrw-r--r-- 2025-02-04 09:58:56
Edit Download
874 B lrw-r--r-- 2025-02-04 09:58:56
Edit Download
13.84 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.10 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.93 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.05 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.73 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.15 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.29 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
12.72 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.20 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.62 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
33.87 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
8.81 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
79.70 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.66 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.24 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
18.33 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.06 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
10.36 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.76 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.45 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
15.31 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.49 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.95 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
50.73 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.44 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.58 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.07 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.08 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.05 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.73 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.14 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.41 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.48 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
15.39 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.65 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.65 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
60.36 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.15 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.60 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
18.92 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.38 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
33.21 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.12 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.23 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
64.98 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
49.00 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.69 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
32.92 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
15.05 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
34.59 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
31.90 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
23.67 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
44.30 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
195.58 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.16 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
24.28 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.90 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.71 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.80 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
42.00 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.05 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.55 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
35.76 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
25.75 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.72 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
30.99 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.42 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.20 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.50 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.30 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
14.15 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
2.39 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.04 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
22.45 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
120.90 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
20.64 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
21.86 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
10.59 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.53 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.21 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.83 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
36.13 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.81 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
103.51 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.76 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.27 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
46.28 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
61.66 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.27 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
19.25 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.55 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
4.16 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.11 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
60.21 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
56.21 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
12.31 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
23.45 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
108.96 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
17.08 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
167.39 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
21.94 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
20.06 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
34.79 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
13.76 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
43.40 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
7.55 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
10.07 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
12.94 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
11.93 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
3.23 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
1.15 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
33.71 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
53.53 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
37 B lrw-r--r-- 2025-02-04 09:58:56
Edit Download
44 B lrw-r--r-- 2026-10-02 10:08:28
Edit Download
33.13 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
9.55 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
5.63 KB lr--r--r-- 2017-09-16 04:37:08
Edit Download
6.24 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
6.92 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
31.74 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
19.82 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
8.61 KB lrw-r--r-- 2025-02-04 09:58:56
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).