Support System

Discussion in 'Developers' Forum' started by Tribal-Dolphin, Aug 16, 2005.

  1. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    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

    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 file to add the 'userid' field of sys_user table ?

  2. till

    till Super Moderator

    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 and the to write the correct email address when creating a new controlpanel user.

    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

    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.
  3. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    Ok, i'll go to modify this files.

    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 ?
  4. till

    till Super Moderator

    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.
  5. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    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 : and the Where they are ?
  6. falko

    falko Super Moderator

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

    till Super Moderator

    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"];


    Sorry, i posted the wrong filenames:

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


    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')
  8. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    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,domain,land) VALUES ('$vorname','$name','$strasse','$plz','$ort','$telefon','$fax','$email','$domain','$land') WHERE doc_id = '$userid'";
    EDIT :

    Otherwise, I have another idea.
    Why do not to modify the file to get back the information unavailable in the table sys_user.
    What do you think of it?
    Last edited: Aug 17, 2005
  9. falko

    falko Super Moderator

    You have an error here:

  10. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    This error isn't in my file. it's an error of copy/paste.
    Sorry :eek:
  11. till

    till Super Moderator

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

    Tribal-Dolphin ISPConfig Developer

    I've another question :eek:

    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 ?

  13. till

    till Super Moderator


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

    falko Super Moderator

    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.
  15. Tribal-Dolphin

    Tribal-Dolphin ISPConfig Developer

    I attach a little manual in HTML.

    Attached Files:

  16. till

    till Super Moderator

    This looks really nice! :)
  17. falko

    falko Super Moderator

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

    Tribal-Dolphin ISPConfig Developer

    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.

  19. falko

    falko Super Moderator

    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 ).

Share This Page