コード例 #1
0
ファイル: core.php プロジェクト: amitchouhan004/barchat
 function widget_names($initial, $data)
 {
     $presence = new PresenceController();
     return $presence->namebar();
 }
コード例 #2
0
ファイル: projects.php プロジェクト: amitchouhan004/barchat
    function _stats($params)
    {
        $nickname = $params['nickname'];
        $user = $params['user'];
        $channel = $params['channel'];
        $statsql = "\r\n\t\t\tselect\r\n\t\t\t\tnp.title as project,\r\n\t\t\t\tccs.csid as csid,\r\n\t\t\t\tccs.case_state_name as status,\r\n\t\t\t\tcount(*) as case_count,\r\n\t\t\t\tp.value as purl\r\n\t\t\tfrom\r\n\t\t\t\tpurl p,\r\n\t\t\t\tog_ancestry oa,\r\n\t\t\t\tnode n,\r\n\t\t\t\tnode_revisions r,\r\n\t\t\t\tusers u,\r\n\t\t\t\tcasetracker_case cc,\r\n\t\t\t\tcasetracker_case cc2,\r\n\t\t\t\tcasetracker_case cc3,\r\n\t\t\t\tcasetracker_case_states ccs,\r\n\t\t\t\tcasetracker_case_states ccs2,\r\n\t\t\t\tcasetracker_case_states ccs3,\r\n\t\t\t\tnode np\r\n\t\t\twhere\r\n\t\t\t\tp.id = oa.group_nid\r\n\t\t\t\tand oa.nid = n.nid\r\n\t\t\t\tand n.vid = r.vid\r\n\t\t\t\tand n.type = 'casetracker_basic_case'\r\n\t\t\t\tand u.uid = n.uid\r\n\t\t\t\tand cc.vid = n.vid\r\n\t\t\t\tand cc.case_status_id = ccs.csid\r\n\t\t\t\tand cc2.vid = n.vid\r\n\t\t\t\tand cc2.case_priority_id = ccs2.csid\r\n\t\t\t\tand cc3.vid = n.vid\r\n\t\t\t\tand cc3.case_type_id = ccs3.csid\r\n\t\t\t\tand ccs.case_state_name <> 'Closed'\r\n\t\t\t\tand ccs.case_state_name <> 'Duplicate'\r\n\t\t\t\tand p.id = np.nid\r\n\t\t";
        $uid = false;
        if ($nickname == '*') {
            $statsql .= '
				group by
					project, status
				order by
					project, status;';
            $uid = -1;
            $sqlparams = array();
        } elseif ($nickname != '') {
            $msg = 'The user "' . htmlspecialchars($params['nickname']) . '" does not exist.';
            $target = PresenceController::_userstr($nickname);
            if ($target) {
                $msg = 'The user "' . htmlspecialchars($params['nickname']) . '" does not have a PD account associated in the options table.';
                $sql = "SELECT value FROM options WHERE grouping = 'identity' AND name = 'pduid' AND user_id = :user_id;";
                $uid = DB::get()->val($sql, array('user_id' => $target->id));
            }
            $statsql .= '
				and cc.assign_to = :uid
				group by
					project, status
				order by
					project, status;';
            $sqlparams = array('uid' => $uid);
        } else {
            $msg = 'You do not have a PD account associated in the options table.';
            $uid = Option::get('identity', 'pduid');
            $statsql .= '
				and cc.assign_to = :uid
				group by
					project, status
				order by
					project, status;';
            $sqlparams = array('uid' => $uid);
        }
        if (!$uid || $uid == 0) {
            Status::create()->data(Utils::cmdout($params) . $msg)->type('system')->cssclass('error')->channel($channel)->insert();
            return true;
        }
        if (!$this->pdb()) {
            Status::create()->data('Could not connect to the projects database.')->type('system')->user_to($user->id)->cssclass('error')->channel($channel)->insert();
            return true;
        }
        $stats = $this->pdb()->results($statsql, $sqlparams);
        if (count($stats) == 0) {
            $msg = Utils::cmdout($params);
            Status::create()->data($msg . 'No open cases found.')->type('system')->cssclass('stats')->channel($channel)->insert();
        } else {
            $msg = Utils::cmdout($params);
            foreach ($stats as $stat) {
                $statuses[$stat->csid] = $stat->status;
                $projects[$stat->purl] = $stat->project;
                $count[$stat->project][$stat->status] = $stat->case_count;
            }
            $msg .= '<table><thead><tr><th>Project Name</th>';
            foreach ($statuses as $status) {
                $msg .= '<th>' . $status . '</th>';
            }
            $msg .= '</tr></thead>';
            foreach ($projects as $purl => $project) {
                $msg .= '<tr><th><a href="http://projects.rockriverstar.com/' . $purl . '/casetracker" target="_blank" onclick="send(\':' . $purl . '\');return false;">' . $project . '</a></th>';
                foreach ($statuses as $csid => $status) {
                    if (isset($count[$project][$status])) {
                        $msg .= '<td><a href="http://projects.rockriverstar.com/' . $purl . '/casetracker/filter?keys=';
                        if ($uid > 0) {
                            $msg .= '&assign_to[]=' . $uid;
                        }
                        $msg .= '&pid=All&case_priority_id=All&case_status_id=' . $csid . '" target="_blank">' . $count[$project][$status] . '</a></td>';
                    } else {
                        $msg .= '<td class="no_cases">&#151;</td>';
                    }
                }
                $msg .= '</tr>';
            }
            $msg .= '</table>';
            Status::create()->data($msg)->user_id($user->id)->cssclass('stats')->channel($channel)->insert();
        }
        return true;
    }
コード例 #3
0
ファイル: pbx.php プロジェクト: amitchouhan004/barchat
 function _call($params)
 {
     $user = $params['user'];
     $mysip = self::get_sip_info($user->id);
     $user_to = PresenceController::_userstr($params['callee']);
     if ($user_to) {
         // They want to call another user, so grab SIP data for target user.
         $sip = self::get_sip_info($user_to->id);
         $to = 'sip:' . $sip->ext . '@' . $sip->domain;
     } elseif (preg_match('/^[-0-9]+$/', $params['callee'])) {
         // Valid dial string.
         $to = 'sip:' . $params['callee'] . '@' . $mysip->domain;
     } else {
         // Invalid!
         self::notify($user, 'You can call a chat user or a phone number (only numbers or dashes).');
     }
     if (isset($to)) {
         // MAKE THE CALL!
         try {
             include 'php-sip/PhpSIP.class.php';
             $from = "sip:{$mysip->ext}@{$mysip->domain}";
             $api = new PhpSIP();
             $agent = "sip:{$mysip->user}@{$mysip->domain}";
             $api->setUsername($mysip->user);
             $api->setPassword($mysip->pass);
             // First get the initiator on the line.
             self::notify($user, "Calling you first...");
             $api->setMethod('INVITE');
             $api->setFrom($agent);
             $api->setUri($from);
             switch ($api->send()) {
                 case 200:
                     // Initiator answered, so now we ring the other guy.
                     if ($user_to) {
                         self::notify($user_to, ($user->nickname ? $user->nickname : $user->name) . ' is calling you!');
                     }
                     $api->setMethod('REFER');
                     $api->addHeader("Refer-to: {$to}");
                     $api->addHeader("Referred-By: {$agent}");
                     $api->send();
                     // Let those guys talk, get out of dodge.
                     $api->setMethod('BYE');
                     $api->send();
                     $api->listen('NOTIFY');
                     $api->reply(481, 'Call Leg/Transaction Does Not Exist');
                     break;
                 default:
                     self::notify($user, "You didn't answer!");
             }
         } catch (Exception $e) {
             try {
                 $api->setMethod('CANCEL');
                 $api->send();
                 self::notify($user, 'Error placing call!');
             } catch (Exception $e) {
                 self::notify($user, 'Error placing call, and another error cleaning up!');
             }
         }
     }
     return true;
 }