Ticket #1998: php.patch

File php.patch, 21.2 KB (added by JCD <frasch@…>, 3 years ago)

Patch for client subdomain manage files

  • gui/client/domains_manage.php

     
    136136       } 
    137137} 
    138138 
     139function gen_user_sub_forward($sub_id, $sub_status, $url_forward, $dmn_type) { 
     140       if ($url_forward === 'no') { 
     141               if ($sub_status === 'ok') { 
     142                       return array("-", "subdomain_edit.php?edit_id=" . $sub_id . "&amp;dmn_type=" . $dmn_type, tr("Edit")); 
     143               } else if ($sub_status === 'ordered') { 
     144                               return array("-", "#", tr("N/A")); 
     145                       } else { 
     146                               return array(tr("N/A"), "#", tr("N/A")); 
     147                       } 
     148       } else { 
     149               if ($sub_status === 'ok') { 
     150                       return array($url_forward, "subdomain_edit.php?edit_id=" . $sub_id . "&amp;dmn_type=" . $dmn_type, tr("Edit")); 
     151               } else if ($sub_status === 'ordered') { 
     152                               return array($url_forward, "#", tr("N/A")); 
     153                       } else { 
     154                               return array(tr("N/A"), "#", tr("N/A")); 
     155                       } 
     156       } 
     157} 
     158 
    139159function gen_user_sub_list(&$tpl, &$sql, $user_id) { 
    140160       $domain_id = get_user_domain_id($sql, $user_id); 
    141161 
     
    144164                       `subdomain_id`, 
    145165                       `subdomain_name`, 
    146166                       `subdomain_mount`, 
     167                       `subdomain_url_forward`, 
    147168                       `subdomain_status`, 
    148169                       `domain_name` 
    149170               FROM 
     
    161182                       `subdomain_alias_id`, 
    162183                       `subdomain_alias_name`, 
    163184                       `subdomain_alias_mount`, 
     185                       `subdomain_alias_url_forward`, 
    164186                       `subdomain_alias_status`, 
    165187                       `alias_name` 
    166188               FROM 
     
    185207                       $tpl->assign('ITEM_CLASS', ($counter % 2 == 0) ? 'content' : 'content2'); 
    186208 
    187209                       list($sub_action, $sub_action_script) = gen_user_sub_action($rs->fields['subdomain_id'], $rs->fields['subdomain_status']); 
     210                       list($sub_forward, $sub_edit_link, $sub_edit) = gen_user_sub_forward($rs->fields['subdomain_id'], $rs->fields['subdomain_status'], $rs->fields['subdomain_url_forward'], 'dmn'); 
    188211                       $sbd_name = decode_idna($rs->fields['subdomain_name']); 
     212                       $sub_forward = decode_idna($sub_forward); 
    189213                       $tpl->assign( 
    190214                               array( 
    191215                                       'SUB_NAME'                      => $sbd_name, 
    192216                                       'SUB_ALIAS_NAME'        => $rs->fields['domain_name'], 
    193217                                       'SUB_MOUNT'                     => $rs->fields['subdomain_mount'], 
     218                                       'SUB_FORWARD'           => $sub_forward, 
    194219                                       'SUB_STATUS'            => translate_dmn_status($rs->fields['subdomain_status']), 
     220                                       'SUB_EDIT_LINK'         => $sub_edit_link, 
     221                                       'SUB_EDIT'                      => $sub_edit, 
    195222                                       'SUB_ACTION'            => $sub_action, 
    196223                                       'SUB_ACTION_SCRIPT'     => $sub_action_script 
    197224                               ) 
     
    204231                       $tpl->assign('ITEM_CLASS', ($counter % 2 == 0) ? 'content' : 'content2'); 
    205232 
    206233                       list($sub_action, $sub_action_script) = gen_user_alssub_action($rs2->fields['subdomain_alias_id'], $rs2->fields['subdomain_alias_status']); 
     234                       list($sub_forward, $sub_edit_link, $sub_edit) = gen_user_sub_forward($rs2->fields['subdomain_alias_id'], $rs2->fields['subdomain_alias_status'], $rs2->fields['subdomain_alias_url_forward'], 'als'); 
    207235                       $sbd_name = decode_idna($rs2->fields['subdomain_alias_name']); 
     236                       $sub_forward = decode_idna($sub_forward); 
    208237                       $tpl->assign( 
    209238                               array( 
    210239                                       'SUB_NAME'                      => $sbd_name, 
    211240                                       'SUB_ALIAS_NAME'        => $rs2->fields['alias_name'], 
    212241                                       'SUB_MOUNT'                     => $rs2->fields['subdomain_alias_mount'], 
     242                                       'SUB_FORWARD'           => $sub_forward, 
    213243                                       'SUB_STATUS'            => translate_dmn_status($rs2->fields['subdomain_alias_status']), 
     244                                       'SUB_EDIT_LINK'         => $sub_edit_link, 
     245                                       'SUB_EDIT'                      => $sub_edit, 
    214246                                       'SUB_ACTION'            => $sub_action, 
    215247                                       'SUB_ACTION_SCRIPT'     => $sub_action_script 
    216248                               ) 
  • gui/client/subdomain_add.php

     
    8585               $tpl->assign( 
    8686                       array( 
    8787                               'SUBDOMAIN_NAME' => clean_input($_POST['subdomain_name']), 
    88                                'SUBDOMAIN_MOUNT_POINT' => clean_input($_POST['subdomain_mnt_pt']) 
     88                       'SUBDOMAIN_MOUNT_POINT' => clean_input($_POST['subdomain_mnt_pt']), 
     89                       'FORWARD' => clean_input($_POST['forward']) 
    8990                       ) 
    9091               ); 
    9192       } else { 
    9293               $tpl->assign( 
    9394                       array( 
    9495                               'SUBDOMAIN_NAME' => '', 
    95                                'SUBDOMAIN_MOUNT_POINT' => '' 
     96                       'SUBDOMAIN_MOUNT_POINT' => '', 
     97                       'FORWARD' => 'no' 
    9698                       ) 
    9799               ); 
    98100       } 
     
    268270       return false; 
    269271} 
    270272 
    271 function subdomain_schedule(&$sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt) { 
     273function subdomain_schedule(&$sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt, $forward) { 
    272274       $status_add = Config::get('ITEM_ADD_STATUS'); 
    273275 
    274276       if ($_POST['dmn_type'] == 'als') { 
     
    278280                                       (`alias_id`, 
    279281                                       `subdomain_alias_name`, 
    280282                                       `subdomain_alias_mount`, 
     283                                       `subdomain_alias_url_forward`, 
    281284                                       `subdomain_alias_status`) 
    282285                       VALUES 
    283                                (?, ?, ?, ?) 
     286                               (?, ?, ?, ?, ?) 
    284287               "; 
    285288       } else { 
    286289               $query = " 
     
    289292                                       (`domain_id`, 
    290293                                       `subdomain_name`, 
    291294                                       `subdomain_mount`, 
     295                                       `subdomain_url_forward`, 
    292296                                       `subdomain_status`) 
    293297                       VALUES 
    294                                (?, ?, ?, ?) 
     298                               (?, ?, ?, ?, ?) 
    295299               "; 
    296300       } 
    297301 
    298        $rs = exec_query($sql, $query, array($domain_id, $sub_name, $sub_mnt_pt, $status_add)); 
     302       $rs = exec_query($sql, $query, array($domain_id, $sub_name, $sub_mnt_pt, $forward, $status_add)); 
    299303 
    300304       update_reseller_c_props(get_reseller_id($domain_id)); 
    301305 
     
    308312       send_request(); 
    309313} 
    310314 
    311 function check_subdomain_data(&$tpl, &$sql, $user_id, $dmn_name) { 
     315function check_subdomain_data(&$tpl, &$sql, &$err_sub, $user_id, $dmn_name) { 
    312316       $dmn_id = $domain_id = get_user_domain_id($sql, $user_id); 
    313317 
    314318       if (isset($_POST['uaction']) && $_POST['uaction'] === 'add_subd') { 
    315319               if (empty($_POST['subdomain_name'])) { 
    316                        set_page_message(tr('Please specify subdomain name!')); 
     320                       $err_sub =  tr('Please specify subdomain name!'); 
    317321                       return; 
    318322               } 
    319323 
    320324               $sub_name = strtolower($_POST['subdomain_name']); 
    321325               $sub_name = encode_idna($sub_name); 
     326               $forward = strtolower(clean_input($_POST['forward'])); 
    322327 
    323328               if (isset($_POST['subdomain_mnt_pt']) && $_POST['subdomain_mnt_pt'] !== '') { 
    324329                       $sub_mnt_pt = strtolower($_POST['subdomain_mnt_pt']); 
     
    329334 
    330335               if ($_POST['dmn_type'] === 'als') { 
    331336                       if (!isset($_POST['als_id'])) { 
    332                                set_page_message(tr('No valid alias domain selected!')); 
     337                               $err_sub = tr('No valid alias domain selected!'); 
    333338                               return; 
    334339                       } 
    335340                       $query_alias = " 
     
    351356               } 
    352357 
    353358               if (subdmn_exists($sql, $user_id, $domain_id, $sub_name)) { 
    354                        set_page_message(tr('Subdomain already exists or is not allowed!')); 
     359                       $err_sub = tr('Subdomain already exists or is not allowed!'); 
    355360               } else if (!chk_subdname($sub_name . "." . $dmn_name)) { 
    356                        set_page_message(tr('Wrong subdomain syntax!')); 
     361                               $err_sub = tr('Wrong subdomain syntax!'); 
    357362               } else if (mount_point_exists($dmn_id, array_decode_idna($sub_mnt_pt, true))) { 
    358                        set_page_message(tr('Mount point already in use!')); 
     363                                       $err_sub = tr('Mount point already in use!'); 
    359364               } else if (!chk_mountp($sub_mnt_pt)) { 
    360                        set_page_message(tr('Incorrect mount point syntax')); 
     365                                               $err_sub = tr('Incorrect mount point syntax'); 
     366                                       } else if ($forward != 'no') { 
     367                                                       if (!chk_forward_url($forward)) { 
     368                                                               $err_sub = tr("Incorrect forward syntax"); 
     369                                                       } 
     370                                                       /* TODO: Adding a trailing slash is under discussion: see http://www.isp-control.net/ispcp/ticket/1979 
     371                                                       if (!preg_match("/\/$/", $forward) && !preg_match("/\?/", $forward)) { 
     372                                                               $forward .= "/"; 
     373                                                       }*/ 
    361374               } else { 
    362375                       // now let's fix the mountpoint 
    363376                       $sub_mnt_pt = array_decode_idna($sub_mnt_pt, true); 
     377                                               } 
    364378 
    365                        subdomain_schedule($sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt); 
     379               if ('_off_' !== $err_sub) { 
     380                       return; 
     381               } 
     382               subdomain_schedule($sql, $user_id, $domain_id, $sub_name, $sub_mnt_pt, $forward); 
    366383                       set_page_message(tr('Subdomain scheduled for addition!')); 
    367384                       user_goto('domains_manage.php'); 
    368385               } 
    369        } 
    370386} 
    371387 
    372388// common page data. 
     
    391407 
    392408$dmn_name = check_subdomain_permissions($sql, $_SESSION['user_id']); 
    393409gen_user_add_subdomain_data($tpl, $sql, $_SESSION['user_id']); 
    394 check_subdomain_data($tpl, $sql, $_SESSION['user_id'], $dmn_name); 
     410 
     411$err_txt = '_off_'; 
     412check_subdomain_data($tpl, $sql, $err_txt, $_SESSION['user_id'], $dmn_name); 
    395413 
    396414// static page messages. 
    397415 
     
    408426               'TR_SUBDOMAIN_DATA' => tr('Subdomain data'), 
    409427               'TR_SUBDOMAIN_NAME' => tr('Subdomain name'), 
    410428               'TR_DIR_TREE_SUBDOMAIN_MOUNT_POINT' => tr('Directory tree mount point'), 
     429       'TR_FORWARD' => tr('Forward to URL'), 
    411430               'TR_ADD' => tr('Add'), 
    412431               'TR_DMN_HELP' => tr("You do not need 'www.' ispCP will add it on its own.") 
    413432       ) 
    414433); 
    415434 
    416 gen_page_message($tpl); 
     435function gen_page_msg(&$tpl, $erro_txt) { 
     436 
     437       if ($erro_txt != '_off_') { 
     438               $tpl->assign('MESSAGE', $erro_txt); 
     439               $tpl->parse('PAGE_MESSAGE', 'page_message'); 
     440       } else { 
     441               $tpl->assign('PAGE_MESSAGE', ''); 
     442       } 
     443 
     444} // End of gen_page_msg() 
     445 
     446gen_page_message($tpl, $err_txt); 
    417447 
    418448$tpl->parse('PAGE', 'page'); 
    419449$tpl->prnt(); 
  • gui/client/subdomain_edit.php

     
     1<?php 
     2/** 
     3 * ispCP ω (OMEGA) a Virtual Hosting Control System 
     4 * 
     5 * @copyright  2001-2006 by moleSoftware GmbH 
     6 * @copyright  2006-2009 by ispCP | http://isp-control.net 
     7 * @version            SVN: $ID$ 
     8 * @link               http://isp-control.net 
     9 * @author             ispCP Team 
     10 * 
     11 * @license 
     12 *   This program is free software; you can redistribute it and/or modify it under 
     13 *   the terms of the MPL General Public License as published by the Free Software 
     14 *   Foundation; either version 1.1 of the License, or (at your option) any later 
     15 *   version. 
     16 *   You should have received a copy of the MPL Mozilla Public License along with 
     17 *   this program; if not, write to the Open Source Initiative (OSI) 
     18 *   http://opensource.org | osi@opensource.org 
     19 */ 
     20 
     21require '../include/ispcp-lib.php'; 
     22 
     23check_login(__FILE__); 
     24 
     25$tpl = new pTemplate(); 
     26$tpl->define_dynamic('page', Config::get('CLIENT_TEMPLATE_PATH') . '/subdomain_edit.tpl'); 
     27$tpl->define_dynamic('page_message', 'page'); 
     28$tpl->define_dynamic('logged_from', 'page'); 
     29 
     30$theme_color = Config::get('USER_INITIAL_THEME'); 
     31 
     32$tpl->assign( 
     33       array( 
     34       'TR_EDIT_SUBDOMAIN_PAGE_TITLE' => tr('ispCP - Manage Subdomain/Edit Subdomain'), 
     35       'THEME_COLOR_PATH' => "../themes/$theme_color", 
     36       'THEME_CHARSET' => tr('encoding'), 
     37       'ISP_LOGO' => get_logo($_SESSION['user_id']) 
     38       ) 
     39); 
     40 
     41/* 
     42 * 
     43 * static page messages. 
     44 * 
     45 */ 
     46$tpl->assign( 
     47       array( 
     48       'TR_MANAGE_SUBDOMAIN' => tr('Manage subdomain'), 
     49       'TR_EDIT_SUBDOMAIN' => tr('Edit subdomain'), 
     50       'TR_SUBDOMAIN_NAME' => tr('Subdomain name'), 
     51       'TR_FORWARD' => tr('Forward to URL'), 
     52       'TR_MOUNT_POINT' => tr('Mount Point'), 
     53       'TR_MODIFY' => tr('Modify'), 
     54       'TR_CANCEL' => tr('Cancel'), 
     55       'TR_ENABLE_FWD' => tr("Enable Forward"), 
     56       'TR_ENABLE' => tr("Enable"), 
     57       'TR_DISABLE' => tr("Disable"), 
     58       'TR_FWD_HELP' => tr("A Forward URL has to start with 'http://'") 
     59       ) 
     60); 
     61 
     62gen_client_mainmenu($tpl, Config::get('CLIENT_TEMPLATE_PATH') . '/main_menu_manage_domains.tpl'); 
     63gen_client_menu($tpl, Config::get('CLIENT_TEMPLATE_PATH') . '/menu_manage_domains.tpl'); 
     64 
     65gen_logged_from($tpl); 
     66 
     67// "Modify" button has been pressed 
     68if (isset($_POST['uaction']) && ($_POST['uaction'] === 'modify')) { 
     69       if (isset($_GET['edit_id'])) { 
     70               $editid = $_GET['edit_id']; 
     71       } else if (isset($_SESSION['edit_ID'])) { 
     72               $editid = $_SESSION['edit_ID']; 
     73       } else { 
     74               unset($_SESSION['edit_ID']); 
     75 
     76               $_SESSION['subedit'] = '_no_'; 
     77               user_goto('domains_manage.php'); 
     78       } 
     79       // Get subdomain type 
     80       if (isset($_POST['dmn_type'])) { 
     81               $dmntype = $_POST['dmn_type']; 
     82       } else { 
     83               unset($_SESSION['edit_ID']); 
     84 
     85               $_SESSION['subedit'] = '_no_'; 
     86               user_goto('domains_manage.php'); 
     87       } 
     88       // Save data to db 
     89       if (check_fwd_data($tpl, $editid, $dmntype)) { 
     90               $_SESSION['subedit'] = "_yes_"; 
     91               user_goto('domains_manage.php'); 
     92       } 
     93} else { 
     94// Get user id that comes for edit 
     95       if (isset($_GET['edit_id'])) { 
     96               $editid = $_GET['edit_id']; 
     97       } 
     98 
     99       // Get subdomain type 
     100       if (isset($_GET['dmn_type'])) { 
     101               $dmntype = $_GET['dmn_type']; 
     102       } else { 
     103               user_goto('domains_manage.php'); 
     104       } 
     105 
     106       $_SESSION['edit_ID'] = $editid; 
     107       $tpl->assign('PAGE_MESSAGE', ""); 
     108} 
     109gen_editsubdomain_page($tpl, $editid, $dmntype); 
     110 
     111$tpl->parse('PAGE', 'page'); 
     112$tpl->prnt(); 
     113 
     114if (Config::get('DUMP_GUI_DEBUG')) { 
     115       dump_gui_debug(); 
     116} 
     117unset_messages(); 
     118 
     119// Begin function block 
     120 
     121/** 
     122 * Show user data 
     123 */ 
     124function gen_editsubdomain_page(&$tpl, $edit_id, $dmn_type) { 
     125       $sql = Database::getInstance(); 
     126 
     127       // Get data from sql 
     128       list($domain_id, $domain_name) = get_domain_default_props($sql, $_SESSION['user_id']); 
     129 
     130       if ($dmn_type === 'dmn') { 
     131               $res = exec_query($sql, "SELECT * FROM `subdomain` WHERE `subdomain_id` = ? AND `domain_id` = ?", array($edit_id, $domain_id)); 
     132       } else { 
     133               $query = " 
     134                       SELECT 
     135                               t1.`subdomain_alias_name` AS subdomain_name, 
     136                               t1.`subdomain_alias_mount` AS subdomain_mount, 
     137                               t1.`subdomain_alias_url_forward` AS subdomain_url_forward, 
     138                               t2.`alias_name` AS domain_name 
     139                       FROM 
     140                               `subdomain_alias` t1 
     141                       LEFT JOIN (`domain_aliasses` AS t2) ON (t1.`alias_id` = t2.`alias_id`) 
     142                       WHERE 
     143                               t1.`alias_id` IN (SELECT `alias_id` FROM `domain_aliasses` WHERE `domain_id` = ?) 
     144                       AND 
     145                               `subdomain_alias_id` = ?"; 
     146 
     147               $res = exec_query($sql, $query, array($domain_id, $edit_id)); 
     148       } 
     149 
     150       if ($res->RecordCount() <= 0) { 
     151               $_SESSION['subedit'] = '_no_'; 
     152               user_goto('domains_manage.php'); 
     153       } 
     154 
     155       $data = $res->FetchRow(); 
     156 
     157       if ($dmn_type === 'als') { 
     158               $domain_name = $data['domain_name']; 
     159       } 
     160 
     161       if (isset($_POST['uaction']) && ($_POST['uaction'] == 'modify')) { 
     162               $url_forward = decode_idna($_POST['forward']); 
     163       } else { 
     164               $url_forward = decode_idna($data['subdomain_url_forward']); 
     165       } 
     166 
     167       if ($url_forward == "no") { 
     168               $check_en = ''; 
     169               $check_dis = 'checked="checked"'; 
     170               $url_forward = ''; 
     171       } else { 
     172               $check_en = 'checked="checked"'; 
     173               $check_dis = ''; 
     174       } 
     175       // Fill in the fields 
     176       $tpl->assign( 
     177               array( 
     178               'SUBDOMAIN_NAME' => decode_idna($data['subdomain_name']) . '.' . $domain_name, 
     179               'FORWARD' => $url_forward, 
     180               'MOUNT_POINT' => $data['subdomain_mount'], 
     181               'CHECK_EN' => $check_en, 
     182               'CHECK_DIS' => $check_dis, 
     183               'ID' => $edit_id, 
     184               'DMN_TYPE' => $dmn_type 
     185               ) 
     186       ); 
     187} // End of gen_editalias_page() 
     188 
     189/** 
     190 * Check input data 
     191 */ 
     192function check_fwd_data(&$tpl, $subdomain_id, $dmn_type) { 
     193       $sql = Database::getInstance(); 
     194 
     195       $forward_url = encode_idna($_POST['forward']); 
     196       $status = $_POST['status']; 
     197       // unset errors 
     198       $ed_error = '_off_'; 
     199       $admin_login = ''; 
     200 
     201       if ($status != '0') { 
     202               if (!chk_forward_url($forward_url)) { 
     203                       $ed_error = tr("Incorrect forward syntax"); 
     204               } 
     205               /* TODO: Adding a trailing slash is under discussion: see http://www.isp-control.net/ispcp/ticket/1979 
     206               if (!preg_match("/\/$/", $forward) && !preg_match("/\?/", $forward)) { 
     207                       $forward_url .= "/"; 
     208               }*/ 
     209       } 
     210 
     211       if ($ed_error === '_off_') { 
     212               if ($_POST['status'] == 0) { 
     213                       $forward_url = "no"; 
     214               } 
     215 
     216               if ($dmn_type === 'dmn') { 
     217                       $query = " 
     218                               UPDATE 
     219                                       `subdomain` 
     220                               SET 
     221                                       `subdomain_url_forward` = ?, 
     222                                       `subdomain_status` = ? 
     223                               WHERE 
     224                                       `subdomain_id` = ? 
     225                       "; 
     226               } else { 
     227                       $query = " 
     228                               UPDATE 
     229                                       `subdomain_alias` 
     230                               SET 
     231                                       `subdomain_alias_url_forward` = ?, 
     232                                       `subdomain_alias_status` = ? 
     233                               WHERE 
     234                                       `subdomain_alias_id` = ? 
     235                       "; 
     236               } 
     237 
     238               exec_query($sql, $query, array($forward_url, Config::get('ITEM_CHANGE_STATUS'), $subdomain_id)); 
     239 
     240 
     241               send_request(); 
     242 
     243               $admin_login = $_SESSION['user_logged']; 
     244               write_log("$admin_login: change domain alias forward: " . $rs->fields['t1.alias_name']); 
     245               unset($_SESSION['edit_ID']); 
     246               $tpl->assign('MESSAGE', ""); 
     247               return true; 
     248       } else { 
     249               $tpl->assign('MESSAGE', $ed_error); 
     250               $tpl->parse('PAGE_MESSAGE', 'page_message'); 
     251               return false; 
     252       } 
     253} // End of check_user_data()