root/modules/branches/2.11/cdr/install.php

Revision 14027, 4.9 kB (checked in by p_lindheimer, 1 year ago)

syntax error in sql statement re #5782 and proper use of cdr db handle re #5788

Line 
1 <?php
2 if (!defined('FREEPBX_IS_AUTH')) { die('No direct script access allowed'); }
3 //This file is part of FreePBX.
4 //
5 //    FreePBX is free software: you can redistribute it and/or modify
6 //    it under the terms of the GNU General Public License as published by
7 //    the Free Software Foundation, either version 2 of the License, or
8 //    (at your option) any later version.
9 //
10 //    FreePBX is distributed in the hope that it will be useful,
11 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //    GNU General Public License for more details.
14 //
15 //    You should have received a copy of the GNU General Public License
16 //    along with FreePBX.  If not, see <http://www.gnu.org/licenses/>.
17 //
18 //    cdr module for FreePBX 2.7+
19 //    Copyright (C) Mikael Carlsson
20 //
21 // Update cdr database with did field
22 //
23 global $db;
24 global $amp_conf;
25
26 // Retrieve database and table name if defined, otherwise use FreePBX default
27 $db_name = !empty($amp_conf['CDRDBNAME'])?$amp_conf['CDRDBNAME']:"asteriskcdrdb";
28 $db_table_name = !empty($amp_conf['CDRDBTABLENAME'])?$amp_conf['CDRDBTABLENAME']:"cdr";
29
30 // if CDRDBHOST and CDRDBTYPE are not empty then we assume an external connection and don't use the default connection
31 //
32 if (!empty($amp_conf["CDRDBHOST"]) && !empty($amp_conf["CDRDBTYPE"])) {
33     $db_hash = array('mysql' => 'mysql', 'postgres' => 'pgsql');
34     $db_type = $db_hash[$amp_conf["CDRDBTYPE"]];
35     $db_host = $amp_conf["CDRDBHOST"];
36     $db_port = empty($amp_conf["CDRDBPORT"]) ? '' ':' . $amp_conf["CDRDBPORT"];
37     $db_user = empty($amp_conf["CDRDBUSER"]) ? $amp_conf["AMPDBUSER"] : $amp_conf["CDRDBUSER"];
38     $db_pass = empty($amp_conf["CDRDBPASS"]) ? $amp_conf["AMPDBPASS"] : $amp_conf["CDRDBPASS"];
39     $datasource = $db_type . '://' . $db_user . ':' . $db_pass . '@' . $db_host . $db_port . '/' . $db_name;
40     $dbcdr = DB::connect($datasource); // attempt connection
41     if(DB::isError($dbcdr)) {
42         die_freepbx($dbcdr->getDebugInfo());
43     }
44 } else {
45     $dbcdr = $db;
46 }
47
48 if (! function_exists("out")) {
49         function out($text) {
50                 echo $text."<br />";
51         }
52 }
53 out(_("Checking if field did is present in cdr table.."));
54 $sql = "SELECT did FROM $db_name.$db_table_name";
55 $confs = $dbcdr->getRow($sql, DB_FETCHMODE_ASSOC);
56 if (DB::IsError($confs)) { // no error... Already there
57   out(_("Adding did field to cdr"));
58   out(_("This might take a while......"));
59   $sql = "ALTER TABLE $db_name.$db_table_name ADD did VARCHAR ( 50 ) NOT NULL DEFAULT ''";
60   $results = $dbcdr->query($sql);
61   if(DB::IsError($results)) {
62     die($results->getMessage());
63   }
64   out(_("Added field did to cdr"));
65 } else {
66   out(_("did field already present."));
67 }
68
69 out(_("Checking if field recordingfile is present in cdr table.."));
70 $sql = "SELECT recordingfile FROM $db_name.$db_table_name";
71 $confs = $dbcdr->getRow($sql, DB_FETCHMODE_ASSOC);
72 if (DB::IsError($confs)) { // no error... Already there
73     out(_("Adding recordingfile field to cdr"));
74     $sql = "ALTER TABLE $db_name.$db_table_name ADD recordingfile VARCHAR ( 255 ) NOT NULL DEFAULT ''";
75     $results = $dbcdr->query($sql);
76     if(DB::IsError($results)) {
77         out(_('Unable to add recordingfile field to cdr table'));
78         freepbx_log(FPBX_LOG_ERROR,"failed to add recordingfile field to cdr table");
79     } else {
80         out(_("Added field recordingfile to cdr"));
81     }
82 } else {
83       out(_("recordingfile field already present."));
84 }
85
86 //TODO: Unix ODBC, MySQL Connector, Asteirsk ODBC, CEL and CEL_ODBC must all be configured for this to work
87 //      and specifying this file for CEL data.
88 //
89 $db_cel_name = !empty($amp_conf['CELDBNAME'])?$amp_conf['CELDBNAME']:"asteriskcdrdb";
90 $db_cel_table_name = !empty($amp_conf['CELDBTABLENAME'])?$amp_conf['CELDBTABLENAME']:"cel";
91 outn(_("Creating $db_cel_table_name if needed.."));
92 $sql = "
93 CREATE TABLE IF NOT EXISTS `" . $db_cel_name . "`.`" . $db_cel_table_name . "` (
94   `id` int(11) NOT NULL auto_increment,
95   `eventtype` varchar(30) NOT NULL,
96   `eventtime` datetime NOT NULL,
97   `cid_name` varchar(80) NOT NULL,
98   `cid_num` varchar(80) NOT NULL,
99   `cid_ani` varchar(80) NOT NULL,
100   `cid_rdnis` varchar(80) NOT NULL,
101   `cid_dnid` varchar(80) NOT NULL,
102   `exten` varchar(80) NOT NULL,
103   `context` varchar(80) NOT NULL,
104   `channame` varchar(80) NOT NULL,
105   `src` varchar(80) NOT NULL,
106   `dst` varchar(80) NOT NULL,
107   `channel` varchar(80) NOT NULL,
108   `dstchannel` varchar(80) NOT NULL,
109   `appname` varchar(80) NOT NULL,
110   `appdata` varchar(80) NOT NULL,
111   `amaflags` int(11) NOT NULL,
112   `accountcode` varchar(20) NOT NULL,
113   `uniqueid` varchar(32) NOT NULL,
114   `linkedid` varchar(32) NOT NULL,
115   `peer` varchar(80) NOT NULL,
116   `userdeftype` varchar(255) NOT NULL,
117   `eventextra` varchar(255) NOT NULL,
118   `userfield` varchar(255) NOT NULL,
119   PRIMARY KEY  (`id`),
120   KEY `uniqueid_index` (`uniqueid`),
121   KEY `linkedid_index` (`linkedid`)
122 )
123 ";
124 $check = $dbcdr->query($sql);
125 if(DB::IsError($check)) {
126     die_freepbx("Can not create $db_cel_table_name table");
127 } else {
128     out(_("OK"));
129 }
130
Note: See TracBrowser for help on using the browser.