2009-06-18 19 views
5

मैन, मैंने अभी यह परियोजना मुझे दी थी - इस पर विस्तार करें।यदि आप इस कोड को अपने गोद में डाल चुके हैं तो आप क्या करेंगे?

इस एक समारोह का एक उदाहरण है:

<?php 


//500+ lines of pure wonder. 
function page_content_vc($content) { 
    global $_DBH, $_TPL, $_SET; 

$_SET['ignoreTimezone'] = true; 

    lu_CheckUpdateLogin(); 

    if($_SESSION['dash']['VC']['switch'] == 'unmanned' || $_SESSION['dash']['VC']['switch'] == 'touchscreen') { 
     if($content['page_name'] != 'vc') { 
      header('Location: /vc/'); 
      die(); 
     } 
    } 

    if($_GET['l']) { 
     unset($_SESSION['dash']['VC']); 
     if($loc_id = lu_GetFieldValue('ID', 'Location', $_GET['l'])) { 

      if(lu_CheckPermissions('vc', $loc_id)) { 

    $timezone = lu_GetFieldValue('Time Zone', 'Location', $loc_id, 'ID'); 
    if(strlen($timezone) > 0) { 
    $_SESSION['time_zone'] = $timezone; 
    } 

       $_SESSION['dash']['VC']['loc_ID'] = $loc_id; 
       header('Location: /vc/'); 
       die(); 
      } 
     } 
    } 

    if($_SESSION['dash']['VC']['loc_ID']) { 

    $timezone = lu_GetFieldValue('Time Zone', 'Location', $_SESSION['dash']['VC']['loc_ID'], 'ID'); 
    if(strlen($timezone) > 0) { 
    $_SESSION['time_zone'] = $timezone; 
    } 

     $loc_id = $_SESSION['dash']['VC']['loc_ID']; 
     $org_id = lu_GetFieldValue('record_ID', 'Location', $loc_id); 

     $_TPL->assign('loc_id', $loc_id); 

     $location_name = lu_GetFieldValue('Location Name', 'Location', $loc_id); 
     $_TPL->assign('LocationName', $location_name); 

     $customer_name = lu_GetFieldValue('Customer Name', 'Organisation', $org_id); 
     $_TPL->assign('CustomerName', $customer_name); 

     $enable_visitor_snap = lu_GetFieldValue('VisitorSnap', 'Location', $loc_id); 
     $_TPL->assign('EnableVisitorSnap', $enable_visitor_snap); 

    $lacps = explode("\n", lu_GetFieldValue('Location Access Control Point', 'Location', $loc_id)); 
     array_walk($lacps, 'trim_value'); 

    if(count($lacps) > 0) { 
    if(count($lacps) == 1) { 
    $_SESSION['dash']['VC']['lacp'] = $lacps[0]; 
    } 
    else { 
    if($_GET['changeLACP'] && in_array($_GET['changeLACP'], $lacps)) { 
    $_SESSION['dash']['VC']['lacp'] = $_GET['changeLACP']; 
    header('Location: /vc/'); 
    die(); 
    } 
    else if(!in_array($_SESSION['dash']['VC']['lacp'], $lacps)) { 
    $_SESSION['dash']['VC']['lacp'] = $lacps[0]; 
    } 
    $_TPL->assign('LACP_array', $lacps); 
    } 
    $_TPL->assign('current_LACP', $_SESSION['dash']['VC']['lacp']); 
    $_TPL->assign('showContractorSearch', true); 
    /* 
    if($contractorStaff = lu_GetTableRow('ContractorStaff', $org_id, 'record_ID', 'record_Inactive != "checked"')) { 
    foreach($contractorStaff['rows'] as $contractor) { 
    $lacp_rights = lu_OrganiseCustomDataFunctionMultiselect($contractor[lu_GetFieldName('Location Access Rights', 'ContractorStaff')]); 
    if(in_array($_SESSION['dash']['VC']['lacp'], $lacp_rights)) { 
     $_TPL->assign('showContractorSearch', true); 
    } 
    } 
    } 
    */ 
    } 

    $selectedOptions = explode(',', lu_GetFieldValue('Included Fields', 'Location', $_SESSION['dash']['VC']['loc_ID'])); 
    $newOptions = array(); 
    foreach($selectedOptions as $selOption) { 
    $so_array = explode('|', $selOption, 2); 
    if(count($so_array) > 1) { 
    $newOptions[$so_array[0]] = $so_array[1]; 
    } 
    else { 
    $newOptions[$so_array[0]] = "Both"; 
    } 
    } 

    if($newOptions[lu_GetFieldName('Expected Length of Visit', 'Visitor')]) { 

    $alert = false; 

      if($visitors = lu_OrganiseVisitors(
       lu_GetTableRow('Visitor', 'checked', 
        lu_GetFieldName('Checked In', 'Visitor'), 
        lu_GetFieldName('Location for Visit', 'Visitor').'="'.$_SESSION['dash']['VC']['loc_ID'].'" 
        AND '.lu_GetFieldName('Checked Out', 'Visitor').' != "checked"'), false, true, true)) { 

       foreach($visitors['rows'] as $key => $visitor) { 
    if($visitor['expected'] && $visitor['expected'] + (60*30) < time()) { 
     $alert = true; 
    } 
       } 
      } 
    if($alert == true) { 
    $_TPL->assign('showAlert', 'red'); 
    } 
    else { 
    //$_TPL->assign('showAlert', 'green'); 
    } 
    } 


     $_TPL->assign('switch', $_SESSION['dash']['VC']['switch']); 
    if($_SESSION['dash']['VC']['switch'] == 'touchscreen') { 
    $_TPL->assign('VC_unmanned', true); 
    } 

     if($_GET['check'] == 'in') { 
    if($_SESSION['dash']['VC']['switch'] == 'touchscreen') { 
    lu_CheckInTouchScreen(); 
      } 
    else { 
    lu_CheckIn(); 
    } 
     } 
     else if($_GET['check'] == 'out') { 
    if($_SESSION['dash']['VC']['switch'] == 'touchscreen') { 
    lu_CheckOutTouchScreen(); 
      } 
    else { 
    lu_CheckOut(); 
    } 
     } 
     else if($_GET['switch'] == 'unmanned') { 
      $_SESSION['dash']['VC']['switch'] = 'unmanned'; 
      if($_GET['printing'] == true && (lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "No" && lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "")) { 
       $_SESSION['dash']['VC']['printing'] = true; 
      } 
      else { 
       $_SESSION['dash']['VC']['printing'] = false; 
      } 
      header('Location: /vc/'); 
      die(); 
     } 
     else if($_GET['switch'] == 'touchscreen') { 
      $_SESSION['dash']['VC']['switch'] = 'touchscreen'; 
      if($_GET['printing'] == true && (lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "No" && lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "")) { 
       $_SESSION['dash']['VC']['printing'] = true; 
      } 
      else { 
       $_SESSION['dash']['VC']['printing'] = false; 
      } 
      header('Location: /vc/'); 
      die(); 
     } 

     else if($_GET['switch'] == 'manned') { 
      if($_POST['password']) { 
       if(md5($_POST['password']) == $_SESSION['dash']['password']) { 
        unset($_SESSION['dash']['VC']['switch']); 
        //setcookie('email', "", time() - 3600); 
        //setcookie('location', "", time() - 3600); 
        header('Location: /vc/'); 
        die(); 
       } 
       else { 
        $_TPL->assign('switchLoginError', 'Incorrect Password'); 
       } 
      } 

      $_TPL->assign('switchLogin', 'true'); 
     } 
     else if($_GET['m'] == 'visitor') { 
      lu_ModifyVisitorVC(); 
     } 

     else if($_GET['m'] == 'enote') { 
      lu_ModifyEnoteVC(); 
     } 

     else if($_GET['m'] == 'medical') { 
      lu_ModifyMedicalVC(); 
     } 

     else if($_GET['print'] == 'label' && $_GET['v']) { 
      lu_PrintLabelVC(); 
     } 

     else { 
      unset($_SESSION['dash']['VC']['checkin']); 
      unset($_SESSION['dash']['VC']['checkout']); 

      $_TPL->assign('icon', 'GroupCheckin'); 

      if($_SESSION['dash']['VC']['switch'] != 'unmanned' && $_SESSION['dash']['VC']['switch'] != 'touchscreen') { 

       $staff_ids = array(); 
       if($staffs = lu_GetTableRow('Staff', $_SESSION['dash']['VC']['loc_ID'], 'record_ID')) { 
        foreach($staffs['rows'] as $staff) { 
         $staff_ids[] = $staff['ID']; 
        } 
       } 

       if($_GET['view'] == "tomorrow") { 
        $dateStart = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d")+1, date("Y"))); 
        $dateEnd = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d")+1, date("Y"))); 
       } 
       else if($_GET['view'] == "month") { 
        $dateStart = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); 
        $dateEnd = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")+30, date("Y"))); 
       } 
       else if($_GET['view'] == "week") { 
        $dateStart = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y"))); 
        $dateEnd = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")+7, date("Y"))); 
       } 
       else { 
        $dateStart = date('Y-m-d'); 
        $dateEnd = date('Y-m-d'); 
       } 

    if(lu_GetFieldValue('Enable Survey', 'Location', $_SESSION['dash']['VC']['loc_ID']) == 'checked' 
    && lu_GetFieldValue('Add Survey', 'Location', $_SESSION['dash']['VC']['loc_ID']) == 'checked') { 
     $_TPL->assign('enableSurvey', true); 
    } 

       //lu_GetFieldName('Checked In', 'Visitor') 
       //!= "checked" 

       //date('d/m/Y'), lu_GetFieldName('Date of Visit', 'Visitor') 

       if($visitors = lu_OrganiseVisitors(lu_GetTableRow('Visitor', $_SESSION['dash']['VC']['loc_ID'], lu_GetFieldName('Location for Visit', 'Visitor'), lu_GetFieldName('Checked In', 'Visitor').' != "checked" AND '.lu_GetFieldName('Checked Out', 'Visitor').' != "checked" AND '.lu_GetFieldName('Date of Visit', 'Visitor').' >= "'.$dateStart.'" AND '.lu_GetFieldName('Date of Visit', 'Visitor').' <= "'.$dateEnd.'"'))) { 
        foreach($visitors['days'] as $day => $visitors_day) { 
         foreach($visitors_day['rows'] as $key => $visitor) { 
          $visitors['days'][$day]['rows'][$key]['visiting'] = lu_GetTableRow('Staff', $visitor['record_ID'], 'ID'); 
          $visitors['days'][$day]['rows'][$key]['visiting']['notify'] = $_DBH->getRow('SELECT * FROM lu_notification WHERE ent_ID = "'.$visitor['record_ID'].'"'); 
         } 
        } 

        //array_dump($visitors); 

        $_TPL->assign('visitors', $visitors); 
       } 

    if($_GET['conGroup']) { 
    if($_GET['action'] == 'add') { 
     $_SESSION['dash']['VC']['conGroup'][$_GET['conGroup']] = $_GET['conGroup']; 
    } 
    else { 
     unset($_SESSION['dash']['VC']['conGroup'][$_GET['conGroup']]); 
    } 
    } 

    if(count($_SESSION['dash']['VC']['conGroup']) > 0) { 
        if($conGroupResult = lu_GetTableRow('ContractorStaff', '1', '1', ' ID IN ('.implode(',', $_SESSION['dash']['VC']['conGroup']).')')) { 

     if($_POST['_submit'] == 'Check-In Group >>') { 

         $form = lu_GetForm('VisitorStandard'); 
     $standarddata = array(); 

     foreach($form['items'] as $key=>$item) { 
     $standarddata[$key] = $_POST[lu_GetFieldName($item['name'], 'Visitor')]; 
     } 

     foreach($conGroupResult['rows'] as $conStaff) { 
     $data = $standarddata; 

     foreach($form['items'] as $key=>$item) { 
     if($key != 'ID' && $key != 'record_ID' && $conStaff[lu_GetFieldName(lu_GetNameField($key, 'Visitor'), 'ContractorStaff')]) { 
      $data[$key] = $conStaff[lu_GetFieldName(lu_GetNameField($key, 'Visitor'), 'ContractorStaff')]; 
     } 
     } 

     $data['record_ID'] = $data[lu_GetFieldName('Visiting', 'Visitor')]; 
          $data[lu_GetFieldName('Date of Visit', 'Visitor')] = date('Y-m-d'); 
          $data[lu_GetFieldName('Time of Visit', 'Visitor')] = date('H:i'); 
          $data[lu_GetFieldName('Checked In', 'Visitor')] = 'checked'; 
          $data[lu_GetFieldName('Location for Visit', 'Visitor')] = $_SESSION['dash']['VC']['loc_ID']; 
          $data[lu_GetFieldName('ConStaff ID', 'Visitor')] = $conStaff['ID']; 
     $data[lu_GetFieldName('From', 'Visitor')] = lu_GetFieldValue('Legal Name', 'Contractor', $conStaff[lu_GetFieldName('Contractor', 'ContractorStaff')]); 

          $id = lu_UpdateData($form, $data); 
          lu_VisitorCheckIn($id); 

     //array_dump($data); 
     //array_dump($id); 
     } 


     unset($_SESSION['dash']['VC']['conGroup']); 
     header('Location: /vc/'); 
     die(); 
     } 

     if(count($conGroupResult['rows'])) { 
         foreach($conGroupResult['rows'] as $key => $cstaff) { 
          $conGroupResult['rows'][$key]['contractor'] = lu_GetTableRow('Contractor', $cstaff[lu_GetFieldName('Contractor', 'ContractorStaff')], 'ID'); 
         } 
         $_TPL->assign('conGroupResult', $conGroupResult); 
     } 

     $conGroupForm = lu_GetForm('VisitorConGroup'); 
     $conGroupForm = lu_OrganiseVisitorForm($conGroupForm, $_SESSION['dash']['VC']['loc_ID'], 'Contractor'); 

      $secure_options_array = lu_GetSecureOptions($org_id); 
      if($secure_options_array[$_SESSION['dash']['VC']['loc_ID']]) { 
      $conGroupForm['items'][lu_GetFieldName('Secure Area', 'Visitor')]['options']['values'] = $secure_options_array[$_SESSION['dash']['VC']['loc_ID']]; 
     $conGroupForm['items'][lu_GetFieldName('Secure Area', 'Visitor')]['name'] = 'Secure Area'; 
     } 
     else { 
       unset($conGroupForm['items'][lu_GetFieldName('Secure Area', 'Visitor')]); 
     } 

     if($secure_options_array) { 
      $form['items'][lu_GetFieldName('Secure Area', 'Visitor')]['options']['values'] = $secure_options_array; 
     $form['items'][lu_GetFieldName('Secure Area', 'Visitor')]['name'] = 'Secure Area'; 
     } 
     else { 
      unset($form['items'][lu_GetFieldName('Secure Area', 'Visitor')]); 
     } 

     $_TPL->assign('conGroupForm', $conGroupForm); 
     $_TPL->assign('hideFormCancel', true); 
    } 
    } 

       if($_GET['searchVisitors']) { 
        $_TPL->assign('searchVisitorsQuery', $_GET['searchVisitors']); 
        $where = ''; 

        if($_GET['searchVisitorsIn'] == 'Yes') { 
         $where .= ' AND '.lu_GetFieldName('Checked In', 'Visitor').' = "checked"'; 
         $_TPL->assign('searchVisitorsIn', 'Yes'); 
        } 
        else { 
         $where .= ' AND '.lu_GetFieldName('Checked In', 'Visitor').' != "checked"'; 
         $_TPL->assign('searchVisitorsIn', 'No'); 
        } 

        if($_GET['searchVisitorsOut'] == 'Yes') { 
         $where = ''; 
         $where .= ' AND '.lu_GetFieldName('Checked Out', 'Visitor').' = "checked"'; 
         $_TPL->assign('searchVisitorsOut', 'Yes'); 
        } 
        else { 
         $where .= ' AND '.lu_GetFieldName('Checked Out', 'Visitor').' != "checked"'; 
         $_TPL->assign('searchVisitorsOut', 'No'); 
        } 

        if($searchVisitors = lu_OrganiseVisitors(lu_GetTableRow('Visitor', $_GET['searchVisitors'], '#search#', lu_GetFieldName('Location for Visit', 'Visitor').'="'.$_SESSION['dash']['VC']['loc_ID'].'"'.$where))) { 
         foreach($searchVisitors['rows'] as $key => $visitor) { 
          $searchVisitors['rows'][$key]['visiting'] = lu_GetTableRow('Staff', $visitor['record_ID'], 'ID'); 
         } 

         $_TPL->assign('searchVisitors', $searchVisitors); 
        } 
        else { 
         $_TPL->assign('searchVisitorsNotFound', true); 
        } 
       } 
       else if($_GET['searchStaff']) { 

        if($_POST['staff_id']) { 
         if(lu_CheckPermissions('staff', $_POST['staff_id'])) { 
          $_DBH->query('UPDATE '.lu_GetTableName('Staff').' SET '.lu_GetFieldName('Current Location', 'Staff').' = "'.$_POST['current_location'].'" WHERE ID="'.$_POST['staff_id'].'"'); 
         } 
        } 


        $locations = lu_GetTableRow('Location', $org_id, 'record_ID'); 

        if(count($locations['rows']) > 1) { 
         $_TPL->assign('staffLocations', $locations); 
        } 

        $loc_ids = array(); 
        foreach($locations['rows'] as $location) { 
         $loc_ids[] = $location['ID']; 
        } 

        // array_dump($locations); 
        // array_dump($_POST); 

        $_TPL->assign('searchStaffQuery', $_GET['searchStaff']); 
        $where = ' AND record_Inactive != "checked"'; 

        if($_GET['searchStaffIn'] == 'Yes' && $_GET['searchStaffOut'] != 'Yes') { 
         $where .= ' AND ('.lu_GetFieldName('Staff Status', 'Staff').' = "" OR '.lu_GetFieldName('Staff Status', 'Staff').' = "On-Site")'. 

         $_TPL->assign('searchStaffIn', 'Yes'); 
         $_TPL->assign('searchStaffOut', 'No'); 
        } 
        else if($_GET['searchStaffOut'] == 'Yes' && $_GET['searchStaffIn'] != 'Yes') { 
         $where .= ' AND ('.lu_GetFieldName('Staff Status', 'Staff').' != "" AND '.lu_GetFieldName('Staff Status', 'Staff').' != "On-Site")'. 
         $_TPL->assign('searchStaffOut', 'Yes'); 
         $_TPL->assign('searchStaffIn', 'No'); 
        } 
        else { 
         $_TPL->assign('searchStaffOut', 'Yes'); 
         $_TPL->assign('searchStaffIn', 'Yes'); 
        } 

        if($searchStaffs = lu_GetTableRow('Staff', $_GET['searchStaff'], '#search#', 'record_ID IN ('.implode(',', $loc_ids).')'.$where, lu_GetFieldName('First Name', 'Staff').','.lu_GetFieldName('Surname', 'Staff'))) { 
         $_TPL->assign('searchStaffs', $searchStaffs); 
        } 
        else { 
         $_TPL->assign('searchStaffNotFound', true); 
        } 
       } 
    else if($_GET['searchContractor']) { 

        $_TPL->assign('searchContractorQuery', $_GET['searchContractor']); 
        //$where = ' AND '.lu_GetTableName('ContractorStaff').'.record_Inactive != "checked"'; 
    $where = ' '; 

        if($_GET['searchContractorIn'] == 'Yes' && $_GET['searchContractorOut'] != 'Yes') { 
         $where .= ' AND ('.lu_GetFieldName('Onsite Status', 'ContractorStaff').' = "Onsite")'; 

         $_TPL->assign('searchContractorIn', 'Yes'); 
         $_TPL->assign('searchContractorOut', 'No'); 
        } 
        else if($_GET['searchContractorOut'] == 'Yes' && $_GET['searchContractorIn'] != 'Yes') { 
         $where .= ' AND ('.lu_GetFieldName('Onsite Status', 'ContractorStaff').' != "Onsite")'. 
         $_TPL->assign('searchContractorOut', 'Yes'); 
         $_TPL->assign('searchContractorIn', 'No'); 
        } 
        else { 
         $_TPL->assign('searchContractorOut', 'Yes'); 
         $_TPL->assign('searchContractorIn', 'Yes'); 
        } 

    $join = 'LEFT JOIN '.lu_GetTableName('Contractor').' ON '.lu_GetTableName('Contractor').'.ID = '.lu_GetTableName('ContractorStaff').'.'.lu_GetFieldName('Contractor', 'ContractorStaff'); 

    $extrasearch = array (
     lu_GetTableName('Contractor').'.'.lu_GetFieldName('Legal Name', 'Contractor') 
    ); 

        if($searchContractorResult = lu_GetTableRow('ContractorStaff', $_GET['searchContractor'], '#search#', lu_GetTableName('ContractorStaff').'.record_ID = "'.$org_id.'" '.$where, lu_GetFieldName('First Name', 'ContractorStaff').','.lu_GetFieldName('Surname', 'ContractorStaff'), $join, $extrasearch)) { 

     /* 
     foreach($searchContractorResult['rows'] as $key=>$contractor) { 
     $lacp_rights = lu_OrganiseCustomDataFunctionMultiselect($contractor[lu_GetFieldName('Location Access Rights', 'ContractorStaff')]); 
     if(!in_array($_SESSION['dash']['VC']['lacp'], $lacp_rights)) { 
     unset($searchContractorResult['rows'][$key]); 
     } 
     } 
     */ 

     if(count($searchContractorResult['rows'])) { 
         foreach($searchContractorResult['rows'] as $key => $cstaff) { 
     /* 
     if($cstaff[lu_GetFieldName('Onsite_Status', 'Contractor')] == 'Onsite')) { 
     if($visitor['rows'][0][lu_GetFieldName('ConStaff ID', 'Visitor')]) { 
        $_DBH->query('UPDATE '.lu_GetTableName('ContractorStaff').' SET '.lu_GetFieldName('Onsite Status', 'ContractorStaff').' = "" WHERE ID="'.$visitor['rows'][0][lu_GetFieldName('ConStaff ID', 'Visitor')].'"'); 
     } 
     } 
     */ 
     if($cstaff[lu_GetFieldName('SACN Expiry Date', 'ContractorStaff')] != '0000-00-00') { 
     if(strtotime($cstaff[lu_GetFieldName('SACN Expiry Date', 'ContractorStaff')]) < time()) { 
      $searchContractorResult['rows'][$key]['sacn_expiry'] = true; 
     } 
     else { 
      $searchContractorResult['rows'][$key]['sacn_expiry'] = false; 
     } 
     } 
     else { 
     $searchContractorResult['rows'][$key]['sacn_expiry'] = false; 
     } 

     if($cstaff[lu_GetFieldName('Induction Valid Until', 'ContractorStaff')] != '0000-00-00') { 
     if(strtotime($cstaff[lu_GetFieldName('Induction Valid Until', 'ContractorStaff')]) < time()) { 
      $searchContractorResult['rows'][$key]['induction_expiry'] = true; 
     } 
     else { 
      $searchContractorResult['rows'][$key]['induction_expiry'] = false; 
     } 
     } 
     else { 
     $searchContractorResult['rows'][$key]['induction_expiry'] = false; 
     } 

          $searchContractorResult['rows'][$key]['contractor'] = lu_GetTableRow('Contractor', $cstaff[lu_GetFieldName('Contractor', 'ContractorStaff')], 'ID'); 
         } 
         $_TPL->assign('searchContractorResult', $searchContractorResult); 
     } 
     else { 
         $_TPL->assign('searchContractorNotFound', true); 
     } 
        } 
        else { 
         $_TPL->assign('searchContractorNotFound', true); 
        } 
    } 

       $occupancy = array(); 
       $occupancy['staffNumber'] = $_DBH->getOne('SELECT count(*) FROM '.lu_GetTableName('Staff').' WHERE record_ID = "'.$_SESSION['dash']['VC']['loc_ID'].'" AND record_Inactive != "checked" AND '.lu_GetFieldName('Ignore Counts', 'Staff').' != "checked"'); 
       $occupancy['staffNumberOnsite']= $_DBH->getOne(
         'SELECT count(*) FROM '.lu_GetTableName('Staff').' WHERE 
         (
          (record_ID = "'.$_SESSION['dash']['VC']['loc_ID'].'" 
           AND 
           ('.lu_GetFieldName('Staff Status', 'Staff').' = "" OR '.lu_GetFieldName('Staff Status', 'Staff').' = "On-Site")) 
           OR '.lu_GetFieldName('Current Location', 'Staff').' = "'.$_SESSION['dash']['VC']['loc_ID'].'") 
           AND record_Inactive != "checked" 
     AND '.lu_GetFieldName('Ignore Counts', 'Staff').' != "checked"'); 

       $occupancy['visitorsOnsite'] = $_DBH->getOne('SELECT count(*) FROM '.lu_GetTableName('Visitor').' WHERE '.lu_GetFieldName('Location for Visit', 'Visitor').' = "'.$_SESSION['dash']['VC']['loc_ID'].'" AND '.lu_GetFieldName('Checked In', 'Visitor').' = "checked" AND '.lu_GetFieldName('Checked Out', 'Visitor').' != "checked"'); 
       $_TPL->assign('occupancy', $occupancy); 

       if($enotes = lu_GetTableRow('Enote', $org_id, 'record_ID', lu_GetFieldName('Note Emailed', 'Enote').' = "0000-00-00" AND '.lu_GetFieldName('Note Passed On', 'Enote').' != "Yes"')) { 
        $_TPL->assign('EnoteNotice', true); 
       } 

       if($medical = lu_GetTableRow('MedicalRoom', $_SESSION['dash']['VC']['loc_ID'], 'record_ID', 'record_Inactive != "Yes"')) { 
        $_TPL->assign('MedicalNotice', true); 
       } 

       if(lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "No" && lu_GetFieldValue('Printing', 'Location', $_SESSION['dash']['VC']['loc_ID']) != "") { 
        $_TPL->assign('UnmannedPrinting', true); 
       } 
      } 
      else { 
       if($_SESSION['dash']['VC']['printing'] == true) { 
        $_TPL->assign('UnmannedPrinting', true); 
       } 
      } 

    // enable if contractor check-in buttons should be enabled 
      if(lu_GetFieldValue('Enable Contractor Check In', 'Location', $_SESSION['dash']['VC']['loc_ID']) == "checked") { 
       $_TPL->assign('ContractorCheckin', true); 
      } 

     } 


    if($_SESSION['dash']['entity_id'] && $_GET['fixupCon'] == 'true') { 
     $conStaffs = lu_GetTableRow('ContractorStaff', $_SESSION['dash']['ModifyConStaffs']['org_ID'], 'record_ID', '', lu_GetFieldName('First Name', 'ContractorStaff').','.lu_GetFieldName('Surname', 'ContractorStaff')); 
     foreach($conStaffs['rows'] as $key => $cstaff) { 
    if($cstaff[lu_GetFieldName('Site Access Card Number', 'ContractorStaff')] && $cstaff[lu_GetFieldName('Site Access Card Type', 'ContractorStaff')]) { 
    echo $cstaff['ID'].' '; 
    $_DBH->query('UPDATE '.lu_GetTableName('Visitor').' SET '.lu_GetFieldName('Site Access Card Number', 'Visitor').' = "'.$cstaff[lu_GetFieldName('Site Access Card Number', 'ContractorStaff')].'", '.lu_GetFieldName('Site Access Card Type', 'Visitor').' = "'.$cstaff[lu_GetFieldName('Site Access Card Type', 'ContractorStaff')].'" WHERE '.lu_GetFieldName('ConStaff ID', 'Visitor').'="'.$cstaff['ID'].'"'); 
    } 
     } 
    } 

    } 
    else { 
     if($_SESSION['dash']['staffs']) { 
      foreach($_SESSION['dash']['staffs']['rows'] as $staff) { 
       if($staff[lu_GetFieldName('Reception Manager', 'Staff')] == 'checked') { 
        $loc_id = $staff['record_ID']; 
        unset($_SESSION['dash']['VC']); 
        if($loc_id = lu_GetFieldValue('ID', 'Location', $loc_id)) { 
         $_SESSION['dash']['VC']['loc_ID'] = $loc_id; 
         header('Location: /vc/'); 
         die(); 
        } 
       } 
      } 
     } 

     $_TPL->assign('mode', 'public'); 
    } 

    $content['page_content'] = $_TPL->fetch('modules/vc.htm'); 
    return $content; 
} 


?> 

यह सवाल शायद बंद कर दिया जाएगा - मैं बस अपना कोडिंग भाइयों और बहनों से कुछ समर्थन की जरूरत है। * एसओबी *

+0

समस्या क्या है? क्या समारोह चौंकाने वाला लंबा है? – sharptooth

+0

आप अपने गोद में केवल एक समारोह गिरा दिया नहीं है। – dkretz

+0

@ शार्पतोथ - बस थोड़ा सा; ओपी 500 लाइनों का सुझाव देता है, और हालांकि मैंने गिनती नहीं की है, यह (बहुत दूर) लंबी और बेहद अनजान है। –

उत्तर

25

वैश्विक खोज और प्रतिस्थापन आपके मित्र हैं।

प्रारंभ द्वारा:

  1. तोड़कर विशाल "अगर ... कुछ" अलग-अलग कार्य करता है जो आप बाद में नाम बदल सकते हैं एक बार आप वे क्या करते हैं यह पता लगाने में।
  2. वैश्विक खोज करो/$ _GET [...] और $ _SESSION [ 'पानी का छींटा'] चर पर बदलने के लिए उन्हें और अधिक सार्थक नाम
  3. देने के लिए

संक्षेप में साफ करने के लिए जारी रखें, का उपयोग बुनियादी कंप्यूटर प्रोग्रामिंग तकनीक: विभाजित करें और जीतें। कार्यक्षमता को छोटे भागों में विभाजित करें, फिर अलग-अलग हिस्सों को साफ करें। एक घंटे से ज्यादा नहीं लेना चाहिए।

+1

को बेहतर बनाने के लिए समय और संसाधनों पर बातचीत करें और, एक अतिरिक्त नोट के रूप में, मुझे इस तरह के बकवास को साफ करना पसंद है। लेकिन फिर, जब यह पू का पूरा ढेर है, तो मैं नहीं - बस इसे फिर से लिखूंगा। – razzed

+0

जब तक कि सभी कोड काम करता है। और वास्तव में प्रयोग किया जाता है। यह सिर्फ एक समारोह है, एक मॉड्यूल नहीं। और # शामिल कहां हैं? – dkretz

+4

एक घंटा कम अनुमान लगता है। सबसे बड़ा मुद्दा यह सुनिश्चित करना होगा कि यह काम करता रहता है। और जब कोड की गुणवत्ता उस स्तर पर होती है, तो संभवतः यह दुष्प्रभावों से भरा होता है जहां आप उन्हें कम से कम उम्मीद करते हैं। – tommym

5

मैं बताता हूं कि जिसने मुझे परियोजना पर डंप किया है कि अगर वे साइट के साथ कुछ भी करना चाहते हैं तो कुल पुनः लिखना आवश्यक है। (इस सलाह ने आपको निकाला नहीं जाने की गारंटी नहीं दी है।)

+2

शायद आखिरी वाक्य डबल नकारात्मक को रद्द करके स्पष्ट हो जाएगा "(यह सलाह आपको निकाल सकती है।)", लेकिन वैसे भी +1 :) –

3

इस तरह विरासत कोड के लिए मेरी सामान्य प्रतिक्रिया मूल डेवलपर के घर के पते को एक सामान्य मामले के रूप में ट्रैक करना है- इस तरह की चीज़।

+1

पिछली आशा खत्म होने पर उसे मारने के लिए? :) –

3

वहां पर रुको। मैं जानता हूं कि तुम कैसा महसूस करते हो।

1

मैं फिर से लिखने का विकल्प दूंगा, हालांकि, अगर मैं मूल कोड के लिए अधिक यूनिट टेस्ट केस लिखने की भी सिफारिश करता हूं, जिसमें यह कोड पूरी तरह से लिखने से पहले यह कोड कर रहा है, तो यह बहुत महत्वपूर्ण हो जाएगा मान्य करें कि आपका पुनर्लेख एक ही काम कर रहा है।

+1

यह कोड यूनिट परीक्षण के लिए असंभव होगा (मुझे हिम्मत है)। इसमें कई बाहरी चर निर्भरताएं हैं, जैसे ट्रिपल अप्रत्यक्ष $ _SESSION ['foo'] ['bar'] ['baz']। भगवान जानता है कि यह कहां सेट हो रहा है। और क्वेरी स्ट्रिंग पैरामीटर संयोजन के दसियों की मदद नहीं करता है। इस monstrosity के आसपास हैंड क्राफ्टिंग यूनिट परीक्षण पूर्णकालिक नौकरी हो सकता है;) –

+0

यदि आप इसका परीक्षण नहीं कर सकते हैं, तो आप इसे अवधि को फिर से लिख नहीं सकते हैं। यदि आपको पता नहीं है कि इससे कैसे निपटना है, तो बस यह सुनिश्चित करने का प्रयास करें कि इसमें कोई कोड शामिल नहीं है, यदि यह कोड काम करता है, तो इसे चिह्नित करें जैसा कि यह काम करता है, तब तक संशोधित न करें जब तक कि आप नहीं जानते कि आप क्या जानते हैं कर रहे हैं, यदि अधिक कार्यक्षमता की आवश्यकता है, तो कोड बेस – bashmohandes

2

जब मैं बच्चा था तब मैं कोड लिखता था। भयानक था। सबसे बुरा हिस्सा था, उन कार्यों के बड़े हिस्से को कहीं और कॉपी/पेस्ट किया गया था। मुझे बैंड के प्रशंसक साइट के लिए रजिस्ट्री के एक संपूर्ण "प्रशंसक खोजक" प्रकार की याद आती है। इसने आपको एक विश्व मानचित्र दिया और उन सभी के स्थानों की ओर इशारा किया जिन्होंने इसे हस्ताक्षर किया था। आप अलग-अलग देशों पर क्लिक कर सकते हैं, नाम - आदि से खोज सकते हैं, और आपको दुनिया भर के इन सभी प्रशंसकों की सूचियां और सूचियां मिलेंगी, जिनमें से सभी की अपनी छोटी प्रोफ़ाइल थी जिसे वे संपादित कर सकते थे (पसंदीदा गीत, बैंड सदस्य इत्यादि।)। PHP में सभी जो इस तरह दिखते थे। सभी फ्लैट पाठ फ़ाइलों का उपयोग कर ... यह अत्याचारी था। मैंने बस फाइल फार्सिंग कार्यों में से अधिकांश को फिर से लिखा है, हर फंक्शन में मैंने टेक्स्ट फ़ाइलों को बार-बार संभाला है ... मेरे भगवान यह भयानक था। मुझे एहसास है कि आप शायद इसके लिए मुझे परेशान करना चाहते हैं, यही कारण है कि मुझे खुशी है कि आप नहीं जानते कि मैं कहाँ रहता हूं।

+4

"यही कारण है कि मुझे खुशी है कि आप नहीं जानते कि मैं कहाँ रहता हूं।" एस्टेवन, सास्काचेचेवान, कनाडा – Aamir

+0

पता लगाने में इतना मुश्किल नहीं था यह एक चुनौती से वास्तव में एक मजाक था। –

1

ऐसा लगता है कि किसी को उच्च समेकन के सिद्धांत पर थोड़ा ताज़ा करने की आवश्यकता है।

1

उस व्यक्ति को बताएं जिसने आपको यह दिया है उसे एक पुनर्लेख की आवश्यकता होगी।

ऐसा लगता है कि यह फ़ंक्शन उपयोगकर्ता जनरेटर के लिए उपयोगकर्ता प्रकार, सेट ध्वज और सामग्री निर्धारित करता है। आप इस कार्यक्षमता को प्रवाह चार्ट में डाल सकते हैं और इस प्रोजेक्ट को पुनर्गठित कर सकते हैं। यह पूरी बात प्रतीत होती है जैसे यह ऑब्जेक्ट उन्मुख प्रोग्रामिंग के लिए बहुत अच्छी तरह से मोल्ड होगा। आप वास्तव में सत्र ग्लोबल्स पर परस्पर निर्भरता की मात्रा को कम कर सकते हैं, छोटे कोड प्राप्त कर सकते हैं और इस पूरी चीज को और अधिक मजबूत बना सकते हैं।

1

मेरे पास इस तरह की जंक का एक गुच्छा था। अंत में सबसे अच्छी रणनीति जो मैं सामने आया था, यह पता लगाने के लिए बाहर की ओर से बाहर से क्या किया गया था। तो यह पहले उत्तरदाता के विपरीत है (जो वर्णन करता है कि मैंने क्या करना शुरू किया)। अगर कोड में कुछ छिद्रित संरचना है, तो यह समझ में आता है, लेकिन यह कुछ भी नहीं माना जा सकता है। मैं कोड का एक गुच्छा लगाने के लिए समाप्त हुआ जो उदाहरण के लिए कभी नहीं कहा जा सकता था। उन मामलों में से, एक ही कार्यक्षमता को कई अलग-अलग तरीकों से लागू किया गया था। बर्बाद समय के बहुत सारे।

आखिरकार यह एक वेब पेज उत्पन्न करता है। यह पता लगाना आसान हो सकता है कि वेब पेज कैसा दिखता है और यह आम तौर पर कैसे काम करता है, और संकेतों के लिए केवल कोड का उपयोग करें जो स्वयं स्पष्ट नहीं है।

3

मजबूत हो, मेरे दोस्त।

यह वास्तव में बदसूरत कोड है, लेकिन असंभव रूप से अपठनीय नहीं है।

मेरा सुझाव, पहले बताए गए प्रतिस्थापन रणनीति (जो मैं भी सुझाव देता हूं) से परे, इस कार्य में क्या हो रहा है, इस पर नोट्स लेना है, क्योंकि आप इसे बेहतर समझते हैं - यह कोड में अस्थायी टिप्पणियों में हो सकता है अलग पाठ फ़ाइल, या कागज के टुकड़े पर। महत्वपूर्ण बात यह है कि आपके पास इस मामले में कुछ उल्लेख है कि आप एक लंबा ब्रेक लेते हैं या सप्ताहांत आता है। बुरा कोड के साथ इसे भूलना चाहते हैं मन की आदत आता है - सुनिश्चित करें कि आपकी खोजों का बैक अप लिया गया है।

एक अन्य सुझाव, आपके उदाहरण समारोह की लंबाई पर विचार करते हुए यह है कि एक बार जब आप आम तर्क के वर्गों को निर्धारित करने के लिए पर्याप्त कोड समझते हैं, तो इन मेगा-फ़ंक्शंस को छोटे में विभाजित करें। यह आपके लिए और दूसरों के लिए पठनीयता में सुधार करेगा।

5

मेरा विश्वास करो, मैंने बहुत खराब कोड देखा है। जैसा कि अन्य लोगों ने कहा, कुछ रिफैक्टरिंग लागू करें।

मेरे हमले के सामान्य योजना:

  • कोड कसकर प्रणाली में सब कुछ के लिए युग्मित नहीं है, तो एक बहुत इकाई परीक्षण लिखें। वे आपको यह सुनिश्चित करने में मदद करेंगे कि रिफैक्टर कोड का व्यवहार नहीं बदला है।
  • तार्किक परिचालनों से विभाजित, जितना संभव हो उतना कार्य निकालें। यहां तक ​​कि अगर इसका मतलब है कि कुछ फ़ंक्शन में कोड की दो पंक्तियां होंगी।
  • इनलाइन 200 तरीकों के कुछ आपके द्वारा बनाए :)

अनुशंसित पढ़ने:

alt text http://www.martinfowler.com/refactoringBook.gif

+0

मुझे यह पुस्तक पसंद है। मेरी इच्छा है कि मेरे कोडबेज में मौजूदा आपदाओं को पूरी तरह से दोबारा करने के लिए मेरे पास नौकरी पर अधिक समय लगे ... जिसमें दुर्भाग्य से मैंने वहां भी रखा था। :) –

9

सॉफ्टवेयर एक व्यवसाय है।

आपको कोड दिया गया है जो अनिवार्य रूप से अनजान है, और इसके साथ कुछ करने के लिए कहा गया है। इसके लिए भारी रिफैक्टरिंग की आवश्यकता होगी।

बुरी खबर यह है कि यह चूसना होगा।

अच्छी खबर यह है कि अपने समय के बदले में कंपनी आप पैसे, जो आप माल और सेवाओं भोजन, वस्त्र, बियर और कंसर्ट के टिकट के रूप में के लिए आदान-प्रदान करने में सक्षम हो जाएगा दे देंगे।

जब तक सभी के पास शामिल समय लागत की सही या कम से कम अनुमानित समझ हो, तो आपको ठीक होना चाहिए।

+1

रिफैक्टरिंग के साथ, किसी को शामिल समय लागत की सही समझ नहीं है। शायद मैं निराशावादी हूं, लेकिन "रिफैक्टरिंग" कभी ऐसा काम नहीं है जिसे मुझे करने के लिए कहा गया है, या करने का समय दिया गया है। मुझे इसे करने के लिए समय प्राप्त करने के लिए हमेशा कुछ अन्य महत्वपूर्ण विकास कार्य के रूप में इसे तैयार करना होता है, और तब भी मुझे आवंटित किए जाने पर भी चलाया जाता है। – jasonmp85

1

इसे स्पर्श न करें! मुझ पर विश्वास करो !

संबंधित मुद्दे