Sadece bu kod kucağına atılmış olsaydı ne yapardınız?

14 Cevap

Dostum, ben sadece bana verilen bu proje vardı - dedikleri bu genişletmek.

Bu ONE fonksiyonun bir örneğidir:

<?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;
}


?>

Bu soru muhtemelen kapalı olacak - Ben sadece benim kodlama kardeşlerimin bazı desteğine ihtiyacımız var. * SOB *

14 Cevap

Küresel arama ve değiştirme senin arkadaş oldular.

Başlayın:

  1. Ne yaptıklarını anlamaya bir kez daha sonra yeniden adlandırabilir tek tek işlevleri içine dev "if ... else" Breaking.
  2. Küresel arama / onları daha anlamlı isimler vermek için $ _GET [...] ve $ _SESSION ['tire'] değişkenleri üzerinde değiştiririm
  3. Temizlemek için devam

Böl ve yönet: Kısacası, temel bilgisayar programlama tekniğini kullanın. Küçük parçalara bölün işlevselliği, daha sonra tek tek parçaları temizlemek. Bir saatten fazla sürmez.

Yazılım iş.

Sen aslında unmaintainable kodu teslim edilmiş, ve onunla bir şeyler yapmak istendi. Bu ağır üstlenmeden gerektirir.

Kötü haber bu kadar olur suck olduğunu.

İyi haber zaman karşılığında şirket için değişimi mümkün olacak, size money verecek olması goods and services, gıda, giyim, bira ve konser biletleri gibi.

Sürece herkes yer zaman maliyetleri doğru ya da en azından yaklaşık bir anlayışa sahip olarak, iyi olmalıdır.

Ben onlar site ile bir şey yapmak istiyorsanız, toplam yeniden-yazma gerekli olduğunu bana projeyi dökülüyor kişiye söylerdim. (Garanti değil Bu öneri ateş almak için değil.)

İnan bana, ben çok daha kötü kod gördüm. Diğer çocuklar dediği gibi, bazı üstlenmeden geçerlidir.

Saldırı Benim zamanki planı:

  • Kod sıkıca sistemde her şeyin birleştiğinde değilse, bir sürü birim testleri yazmak. Bu size Refactored kod davranışı değişmedi emin olun yardımcı olacaktır.
  • Mantıksal işlemleri tarafından bölünmesi, mümkün olduğunca çok sayıda fonksiyonları ayıklayın. Anlamına gelse bile bazı fonksiyon kod iki satır içerir.
  • Oluşturduğunuz 200 yöntemlerden bazıları satır içi :)

Önerilen okuma:

alt text

Böyle bir kod miras benim normal bir tepki şey just-in-case-I-gerek-bu tür olarak orijinal geliştirici ev adresini izini etmektir.

Orada bekle. Ben nasıl hissettiğini biliyorum.

arkadaşım, güçlü ol.

Gerçekten çirkin kod, ama inanılmayacak okunmaz değil.

Benim önerim, ötesinde daha önceki (ben de önermek olan) stratejisi yerine, daha iyi anlamak gibi, işlevi ne oluyor notlar almak olduğunu belirtti - bu ayrı bir metin dosyası, kod geçici yorumlarda olabilir, ya da bir kağıt parçası üzerinde. Önemli olan uzun bir mola veya hafta sonu geliyor durumunda başvurmak için bir şey olması. Pis kodu ile unutmak isteyen zihin alışkanlığı geliyor - emin senin keşifler yedeklenen var olun.

Başka bir öneri, senin örnek fonksiyon uzunluğunu göz önünde bulundurarak ortak mantık bölümlerini belirlemek için yeterli kodu anlamak kez, küçük olanları içine bu mega-fonksiyonları kırmak olduğunu. Okunabilirliği artırmak olacaktır - sizin için ve başkaları için.

Ben çocukken böyle bir kod yazmak için kullanılır. Korkunçtu. Kötü kısmı bu işlevlerin büyük boyutta sadece başka yapıştırılan / kopyasını aldım, oldu. Ben bir grubun fan sitesi için sicil tüm "fan bulucu" çeşit bina hatırlıyorum. Size bir dünya haritası verdi ve bunu imzalamış herkesin yerlere işaret etti. Sen, farklı ülkelerde tıklayın adına göre arama yapabilir - vb, ve hepsi vb (en sevdiğiniz şarkı, grup üyesi, düzenleme olabilir kendi küçük profili vardı hepsi tüm dünyada bu hayranları listeleri ve listeleri almak istiyorum .) Bu benzediğini PHP Tüm. Tüm düz metin dosyalarını kullanarak ... Bu iğrenç oldu. Ben sadece her fonksiyonu ben metin bu korkunç oldu ... tekrar ve tekrar benim tanrı dosyaları ele, HER YERDE dosya ayrıştırma fonksiyonların çoğu yeniden yazdı. Ben muhtemelen Yaşadığım nerede bilmiyorum sevindim neden olduğu, bunun için beni boğmak istiyorum biliyoruz.

Ben de orijinal kodu için olduğu kadar birim test durumlarda yazılı tavsiye ederim ben ikinci yeniden seçenek, ancak, bu kod tam bir yeniden başlamadan önce yapıyor neredeyse eveything kapsar ederim, doğrulamak için çok önemli olacağını sizin rewrite aynı işi yapıyor.

Biri yüksek uyum ilkesine biraz tazelemeye ihtiyacı var gibi görünüyor.

Bir yeniden yazma gerektirir verdi sana bunu kişiyi söyle.

Bu işlev, kullanıcı tipini belirleyen bayrakları ve bir sayfa jeneratör içeriğini ayarlar gibi görünüyor. Sen bir akış şemasında bu işlevselliği koymak ve bu projeyi yeniden olabilir. Çok güzel nesne yönelimli programlamaya kaynaştırılacağı gibi bütün bu şey gibi görünüyor. Eğer gerçekten, oturum globalleri üzerinde bağımlılık miktarını düşürmek küçük kodu var ve bu her şeyi daha güçlü yapabilir.

Eskiden böyle önemsiz bir grup vardı. Sonunda geldi iyi strateji oldukça içten dışa daha, dışarıdan gelen ne yaptığını anlamaya oldu. Yani bu (ben yapmaya başladı açıklar) ilk cevap karşısında türüdür. Kod bazı kamufle yapıya sahipse, hangi mantıklı, ama hafife almak bir şey olmayabilir. Örneğin ben, adı olmuştur asla kod bir demet sergiyi sona erdi. Bu davaların bazılarında, aynı işlevselliği birkaç farklı şekilde uygulanmıştır. Boşa zaman sürü.

Sonunda bunun bir web sayfası üretir. Bu web sayfası neye benzediğini ve genellikle nasıl çalıştığını anlamaya ve sadece apaçık değil ne hakkında ipuçları için kodu kullanmak daha kolay olabilir.

Don't Touch It! Trust Me !