PDA

View Full Version : Support System


Tribal-Dolphin
16th August 2005, 22:09
Hi all,
I'm working on support system and I have some question.

Why the sys_user table don't have the user email address ? (in my ISPConfig install, it's always @ispconfig.de)

The field 'userid' (on sys_user table) of a resseller contains the 'doc_id' of the admin and for a client, it contains the resseller creator's doc_id (or the admin doc_id). I'm right ?

Can I modify the go_info.inc.php file to add the 'userid' field of sys_user table ?

Thanks.
Tribal-Dolphin

till
17th August 2005, 00:14
Why the sys_user table don't have the user email address ? (in my ISPConfig install, it's always @ispconfig.de)

Thats a good question :confused: The Field was there from another application that used the same framework. It is a good idea to use it in ISPConfig too, so we have to modify the isp_isp_kunde.inc.php and the isp_isp_reseller.inc.php to write the correct email address when creating a new controlpanel user.

The field 'userid' (on sys_user table) of a resseller contains the 'doc_id' of the admin and for a client, it contains the resseller creator's doc_id (or the admin doc_id). I'm right ?

Yes, thats right.

The external relations are:

ID Relations Resellers:

sys_user.doc_id => isp_isp_reseller.reseller_userid

ID Relations Clients:

sys_user.doc_id => isp_isp_kunde.webadmin_userid




Can I modify the go_info.inc.php file to add the 'userid' field of sys_user table ?

Yes, but i think in most cases you need the doc_id of the user. This is needed to check the permissions against the *_nodes tables. The doc_id of the user is alredy part of the $go_info array.

Tribal-Dolphin
17th August 2005, 08:33
It is a good idea to use it in ISPConfig too, so we have to modify the isp_isp_kunde.inc.php and the isp_isp_reseller.inc.php to write the correct email address when creating a new controlpanel user.

Ok, i'll go to modify this files.

Yes, but i think in most cases you need the doc_id of the user. This is needed to check the permissions against the *_nodes tables. The doc_id of the user is alredy part of the $go_info array.

I need the creator's ID for sent the support question to him. I've take a look to the *_nodes tables and i don't find how to retrieve the creator's ID.
Can you help me for that ?

till
17th August 2005, 12:27
I need the creator's ID for sent the support question to him. I've take a look to the *_nodes tables and i don't find how to retrieve the creator's ID.
Can you help me for that ?

Who do you mean with creator? The client that sends a support question to the admin / reseller?

General explanation: If a user saves a form that was build with the form generator, the contents of the form are stored in the form specific table, the user and permission information is stored in the *_nodes table.

Example for isp_nodes and isp_isp_web:

isp_nodes.tree_id = unique index field of the nodes table.
isp_nodes.userid => sys_user.doc_id // Sorry, i know that this is a bit misleading with the userid column in sys_user, but doc_id is always the name of the primary index field of an table.
isp_nodes.groupid => groups.groupid
isp_nodes.parent => this field is for building the tree view, it can contain the tree ID of the parent item (folder) or the string group[GROUPID] when it is not in a folder and belongs to a group with the ID [GROUPID].
isp_nodes.type => contains 'n' if it is a folder, or 'i' if it is form document.
isp_nodes.doctype_id => isp_isp_web.doctype_id => doctype.doctype_id // in the doctype table are the form definitions stored that are made with the foem designer
isp_nodes.doc_id => isp_isp_web.doc_id // The doc_id's are the primary index fields of the content tables
isp_nodes.status // 1 = active, 0 = Deleted / stored in the trash
isp_nodes.icon // may contain the name of the icon file, if it is empty, a default icon is used
isp_nodes.modul // not used in ISPConfig
isp_nodes.title // The title that is displayed in the tree view, if the form is from the type that is displayed in the tree.

Tribal-Dolphin
17th August 2005, 12:38
The Creator is the person who have created the reseller/client account.
I'll need to know if the question is for admin, Reseller1, Reseller2, ......

I don't find this file : isp_isp_kunde.inc.php and the isp_isp_reseller.inc.php. Where they are ?

falko
17th August 2005, 12:49
I don't find this file : isp_isp_kunde.inc.php and the isp_isp_reseller.inc.php. Where they are ?

Actually it's ispconfig_isp_kunde.lib.php and ispconfig_isp_reseller.lib.php. They are in /home/admispconfig/ispconfig/lib/classes.

till
17th August 2005, 13:13
The Creator is the person who have created the reseller/client account.
I'll need to know if the question is for admin, Reseller1, Reseller2, ......

I assume you have the sys_user.doc_id of the reseller/client and want to get the sys_user.doc_id of the creator. First we will find out if it is a reseller or a client. When it is a reseller, the support requests have to be send to the admin:

$groups = $go_api->groups->myGroups();
if(is_array($groups)) {
//This user is a reseller, because clients do not have a group!
} else {
// This must be a client, now get the sys_user.doc_id of the reseller
$reseller = $go_api->db->queryOneRecord("SELECT doc_id FROM sys_user WHERE userid = $client_sys_doc_id");
$reseller_sys_doc_id = $reseller["doc_id"];

}


I don't find this file : isp_isp_kunde.inc.php and the isp_isp_reseller.inc.php. Where they are ?

Sorry, i posted the wrong filenames:

in /home/admispconfig/ispconfig/web/lib/classes/

ispconfig_isp_kunde.lib.php
ispconfig_isp_reseller.lib.php

Every class contains functions that are called when an event like insert update or delete happens for a form. The functions are:

*_insert($doc_id, $doctype_id, $die_on_error = '1')
*_update($doc_id, $doctype_id, $die_on_error = '1')
*_delete($doc_id, $doctype_id, $die_on_error = '1')

Tribal-Dolphin
17th August 2005, 19:41
I'll try to modify the two class (ispconfig_isp_kunde.lib.php & ispconfig_isp_reseller.lib.php) for insert into sys_user table the field name, vorname, email, domain, ..... but it don't works.

Can anyone can tell me where (the line) I can add my code.

Thanks a lot

Exemple of code I'll try to insert into ispconfig_isp_kunde.lib.php at the line 105 (insert new client) :
$kunde = $go_api->db->queryOneRecord("SELECT * FROM isp_isp_kunde where webadmin_userid = '$userid'");

$vorname = $kunde["kunde_vorname"];
$name = $kunde["kunde_name"];
$strasse = $kunde["kunde_strasse"];
$plz = $kunde["kunde_plz"];
$ort = $kunde["kunde_ort"];
$telefon = $kunde["kunde_telefon"];
$fax = $kunde["kunde_fax"];
$kunde_email = explode("@", $kunde["kunde_email"]); $email=$kunde_email[0]; $domain=$kunde_email[1];
$land = $kunde["kunde_land"];

$sql = "UPDATE sys_user (vorname,name,strasse,plz,ort,telefon,fax,email,do main,land) VALUES ('$vorname','$name','$strasse','$plz','$ort','$tel efon','$fax','$email','$domain','$land') WHERE doc_id = '$userid'";
$go_api->db->query($sql);

--------------------------------------------------------------
EDIT :

Otherwise, I have another idea.
Why do not to modify the file go_info.inc.php to get back the information unavailable in the table sys_user.
What do you think of it?

falko
17th August 2005, 22:08
You have an error here:

$sql = "UPDATE sys_user (vorname,name,strasse,plz,ort,telefon,fax,email,do main,land) VALUES ('$vorname','$name','$strasse','$plz','$ort','$tel efon','$fax','$email','$domain','$land') WHERE doc_id = '$userid'";

Tribal-Dolphin
17th August 2005, 23:47
This error isn't in my file. it's an error of copy/paste.
Sorry :o

till
18th August 2005, 12:27
Otherwise, I have another idea.
Why do not to modify the file go_info.inc.php to get back the information unavailable in the table sys_user.
What do you think of it?

I think thats a good idea, so we dont have to duplicate the information in two locations.

Tribal-Dolphin
18th August 2005, 20:44
Hello,
I've another question :o

Does a classe have a function which allows to know if sys_user.doc_id is a reseller or a customer?

If not, in wich classe can I add it ?

Thanks.

till
18th August 2005, 21:42
Hello,
I've another question :o

Does a classe have a function which allows to know if sys_user.doc_id is a reseller or a customer?

No.



If not, in wich classe can I add it ?


I think the auth class is the best location for this function.

falko
23rd August 2005, 01:27
Hi all,
I'm working on support system

Hi Tribal-Dolphin,

can you describe how your support ticket system works? I found it under Help, but don't know how to use it.

Tribal-Dolphin
23rd August 2005, 11:14
I attach a little manual in HTML.

till
23rd August 2005, 12:01
I attach a little manual in HTML.

This looks really nice! :)

falko
23rd August 2005, 12:25
I attach a little manual in HTML.

The menu item "New Ticket" is missing on my system... :( I only have "Opened Tickets" and "Closed Tickets".

Tribal-Dolphin
23rd August 2005, 12:39
Because you're connected as Admin. The admin can no send ticket. He only can answer to Reseller/Client ticket.

Connect to ISPConfig as Reseller or Client, the "New Ticket" menu appears.

Thanks.

falko
24th August 2005, 01:38
Because you're connected as Admin. The admin can no send ticket. He only can answer to Reseller/Client ticket.

Connect to ISPConfig as Reseller or Client, the "New Ticket" menu appears.

Thanks.

Ok, it's working! :) One thing: Can you format the Unix timestamps behind "Date:" into a human readable format? Like 24/08/2005 or 24.08.2005 or 24-08-2005 (I think in the U.S. it's 08/24/2005 but I'll never get used to that... :D ).