За последние 24 часа нас посетил 22751 программист и 1272 робота. Сейчас ищут 732 программиста ...

как оценить качество кода нашего прогера?

Тема в разделе "Вопросы от блондинок", создана пользователем progman_rus, 18 фев 2011.

  1. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    камрады, есть прогер, что то пишет, это что то вроде как то работает, поскольку никто толком в пхп ни бум бум то сложно понять по ушам товарищ ездит или кропотливо и качественно делает свою работу.

    как разобраться?
    может есть какой аудит признанный ?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Анализ кода штука сложная.
    Хотя в целом говнокод видно сразу =)
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    progman_rus
    легко, выложите сюда пару скриптов)
     
  4. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    пля.. не сдавайте чела если что, своих же закладываете [​IMG] солидарность и все такое.
     
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Апельсин
    [​IMG]
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ну и зачем вам его оценять?
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    давайте увольнять жену за то что французский повар оценил ее готовку как "не очень"
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    igordata
    но тут ньюанс - жена то "отработать" может за плохо сваренный суп, а программер тут в проигрышном положении оказывается [​IMG]
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    давайте уволим жену за то что ее способности по отработке были низко оценены мадам с Тверской улицы.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    И прогер кстати может отработать точно так также. А некоторые и лучше... хыы... [​IMG]
     
  12. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    черт побери, а это хорошая мотивация для написания качественного кода [​IMG]
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  14. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  15. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    камрады, как бы хочется денег платить за хорошую работу а не говнокод
    все таки мы не альтруисты хочется за вложенные деньги иметь КПД не 25% а 125% )))))

    вобщем хочется лаконичное что то
    1 гнат в шею и искать нового
    2. вобщем то пойдет для сельской местности
    3. да парень талантище
    ну или что то промежуточное между 2 и 3 )))
    заранее спасибо

    ну вот самый маленьки cron.php я так разумею с кроном работает
    PHP:
    1. <?php
    2.  
    3. class controller_cron extends controller_base
    4. {
    5.    
    6.     /**
    7.      * Class entry point
    8.      */
    9.     function cron()
    10.     {
    11.         $act = isset($_GET['act'])?$_GET['act']:false;
    12.         switch($act)
    13.         {
    14.             case 'sendtextmsg':
    15.                 self::sendtextmsg();
    16.             break;
    17.            
    18.             case 'rates':
    19.                 self::rates();
    20.             break;
    21.         }
    22.        
    23.         exit();
    24.     }
    25.    
    26.    
    27.    
    28.     /**
    29.      * Add messages to sendtextmsg table
    30.      */
    31.     function sendtextmsg()
    32.     {
    33.         $lang = lang::getmass();
    34.         $db = $this->registry['db'];
    35.        
    36.         //get msgs
    37.         $msgs = $db->fetch_assoc('SELECT *
    38.                                     FROM sendtextmsg_cron
    39.                                     ORDER BY id ASC');
    40.         foreach($msgs as $msg)
    41.         {
    42.             $msg['timing'] = unserialize($msg['timing']);
    43.            
    44.             if($msg['timing']['type'] == 'one_time_repeat')
    45.             {
    46.                 if($msg['timing']['date'] <= time() && $msg['timing']['repeat'] > $msg['send_count'])
    47.                 {
    48.                     $interval = $msg['timing']['interval'] * 60;
    49.                     if(($msg['send_last_time'] + $interval) < time()) //SEND!
    50.                     {
    51.                         //add messsage
    52.                         $q = 'INSERT INTO sendtextmsg (target, owner, text, repeatcount, sended)
    53.                                     VALUES ('.$msg['target'].', '.$msg['owner'].', \''.$msg['text'].'\', '.$msg['repeatcount'].', \'f\')';
    54.                         $db->query($q);
    55.                         //update msg
    56.                         $db->query('UPDATE sendtextmsg_cron
    57.                                         SET send_count = send_count + 1, send_last_time = '.time().'
    58.                                         WHERE id = '.$msg['id']);
    59.                     }
    60.                 }
    61.             }
    62.             elseif($msg['timing']['type'] == 'regular')
    63.             {
    64.                 if($msg['timing']['date_from'] <= time() && $msg['timing']['date_to'] >= time())
    65.                 {
    66.                     $interval = $msg['timing']['interval'] * 60;
    67.                     if(($msg['send_last_time'] + $interval) < time())
    68.                     {
    69.                         //add messsage
    70.                         $q = 'INSERT INTO sendtextmsg (target, owner, text, repeatcount, sended)
    71.                                     VALUES ('.$msg['target'].', '.$msg['owner'].', \''.$msg['text'].'\', '.$msg['repeatcount'].', \'f\')';
    72.                         $db->query($q);
    73.                         //update msg
    74.                         $db->query('UPDATE sendtextmsg_cron
    75.                                         SET send_count = send_count + 1, send_last_time = '.time().'
    76.                                         WHERE id = '.$msg['id']);                      
    77.                     }
    78.                 }
    79.             }
    80.         }
    81.        
    82.        
    83.         //send notify to control email
    84.        
    85.         exit('sendtextmsg called');
    86.     }
    87.    
    88.     /**
    89.     * Get CBRF rates
    90.     */
    91.     function rates()
    92.     {
    93.         $db = $this->registry['db'];
    94.         $rates = $this->registry->getClass('rates');
    95.  
    96.         //clean currency table
    97.         $db->query('TRUNCATE TABLE curr_rates');
    98.         //get new rates
    99.         $currencies = array(643 => 1);
    100.         foreach($rates->rates->ValuteData->ValuteCursOnDate as $val)
    101.         {
    102.             //insert new rates
    103.             $db->query('INSERT INTO curr_rates (vcode, vchcode, vcurs)
    104.                     VALUES ('.(int)$val->Vcode.', \''.$val->VchCode.'\', '.(float)$val->Vcurs.')');
    105.             //the array
    106.             $currencies[(int)$val->Vcode] = (float)$val->Vcurs;
    107.         }
    108.  
    109.         //get halls
    110.         $halls = $db->fetch_assoc('SELECT * FROM hall');
    111.         foreach($halls as $hall)
    112.         {
    113.             $db->query('UPDATE hall
    114.                     SET currency = '.(float)$currencies[$hall['curr']].'
    115.                     WHERE id = '.$hall['id']);
    116.         }
    117.         //send notify to control email
    118.        
    119.         exit('rates called');
    120.     }
    121.  
    122. } //endof class
    123.  
    124. ?>
    хотя не факт что он писал сам - мог где нить скачать


    вот кусок кода из engine/base.php
    PHP:
    1. <?php
    2. abstract class controller_base
    3. {
    4.     protected $registry;
    5.    
    6.     function __construct($registry, $id = 0) {
    7.         $this->registry = $registry;
    8.         $this->id = $id;
    9.  
    10.         $this->sess = $_SESSION['CFG_USER'];
    11.         $this->arrDvesti = array (1, 256, 65536, 16777216 );
    12.     }
    13.     function get_route()
    14.     {
    15.         $route = (empty ( $_GET ['route'] )) ? '' : $_GET ['route'];
    16.         if (empty ( $route ))
    17.             $route = 'online-models';
    18.             //$route = $_GET['route'];
    19.         $route = trim ( $route, '/\\' );
    20.         $parts = explode ( '/', $route );
    21.         // Находим правильный контроллер
    22.         //print_r($parts);
    23.         return $alias = array_shift ( $parts );
    24.     }
    25.     function protect($out, $arr = array()) {
    26.         $lang = lang::getmass();
    27.  
    28.         $_CFG_USER = $this->sess;
    29.         if(!in_array($_CFG_USER['permission'], $arr))
    30.             return $lang['basefile_not_permission'];
    31.         return $out;
    32.     }
    33.     function redirect($url)
    34.     {
    35.         exit(header('Location: '.site_url.'/'.$url));
    36.     }
    37.     function get_text($id) {
    38.         $db = $this->registry ['db'];
    39.         $sql = "select `text` from `text` where `id`='$id'";
    40.         $result = $db->fetch_rows ( $sql );
    41.         return $result [0] ['text'];
    42.     }
    43.  
    это 100% он писал
     
  16. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    ну и третий кусок да простите меня за длинную портянку но хотел какой нить модуль целиком бросить ибо за cron.php как уже писал я не уверен

    PHP:
    1. <?php
    2.  
    3.  
    4. class controller_gateway extends controller_base
    5. {
    6.  
    7.     /**
    8.     * Allowed servers adresses - $_SERVER['REMOTE_HOST']
    9.     *
    10.     * @var array
    11.     */
    12.     private $allowedServers = array();
    13.    
    14.     /**
    15.     * Handle errors
    16.     *
    17.     * @var array
    18.     */
    19.     private $errors = array();
    20.  
    21.     /**
    22.     * Hall data
    23.     *
    24.     * @var array
    25.     */
    26.     private $_hallData = array();
    27.  
    28.     /**
    29.     * User data
    30.     *
    31.     * @var array
    32.     */
    33.     private $_userData = array();
    34.  
    35.     /**
    36.     * Operator data
    37.     *
    38.     * @var array
    39.     */
    40.     private $_operData = array();
    41.  
    42.     /**
    43.     * Request array
    44.     *
    45.     * @var array()
    46.     */
    47.     private $reqData = array();
    48.  
    49.    
    50.     /**
    51.     * Handle payment request from remote server
    52.     */
    53.     public function payment_gateway()
    54.     {
    55.         $lang = lang::getmass();
    56.         $out = null;
    57.  
    58.         //Act
    59.         if(isset($_GET['act']))
    60.         {
    61.             switch($_GET['act'])
    62.             {
    63.                 case 'user_add_money':
    64.                     $this->_actUserAddMoney($_POST);
    65.                 break;
    66.             }
    67.         }
    68.  
    69.         $this->_getAllowedServers();
    70.    
    71.         //check server name
    72.         if(!in_array($_SERVER['REMOTE_HOST'], $this->allowedServers))
    73.             $this->errors[] = $lang['gatefile_error1'];
    74.  
    75.         /* Check for requested data
    76.         --------------------------------------*/
    77.         if(!isset($_POST['srv']) || ($_POST['srv'] != 'RU' && $_POST['srv'] != 'UA'))
    78.             $this->errors[] = $lang['gatefile_error2'];
    79.  
    80.         if(!isset($_POST['pays']) || !ctype_digit($_POST['pays']))
    81.             $this->errors[] = $lang['gatefile_error3'];
    82.  
    83.  
    84.         if(!isset($_POST['from']) || !ctype_digit($_POST['from']))
    85.             $this->errors[] = $lang['gatefile_error4'];
    86.  
    87.         if(!isset($_POST['operid']) || !ctype_digit($_POST['operid']))
    88.             $this->errors[] = $lang['gatefile_error5'];
    89.  
    90.  
    91.         if(!isset($_POST['to']) || !ctype_digit($_POST['to']))
    92.             $this->errors[] = $lang['gatefile_error6'];
    93.  
    94.         if(!isset($_POST['hash']) || !isset($_POST['key']))
    95.             $this->errors[] = $lang['gatefile_error7'];
    96.  
    97.         /* Handle request
    98.         ------------------------------------*/
    99.         $this->_handleRequest();
    100.  
    101.         if(!empty($this->errors))
    102.             $out = 'res=error&errors='.serialize($this->errors);
    103.         else
    104.             $out = 'res=ok';
    105.  
    106.         print_r($out);
    107.         exit();
    108.     }
    109.  
    110.  
    111.     /**
    112.     * Get allowed server names from console config
    113.     */
    114.     private function _getAllowedServers()
    115.     {
    116.         $this->allowedServers[] = ''; //allow from all
    117.     }
    118.  
    119.     /**
    120.     * Trying to halnde request and process payment_gateway
    121.     */
    122.     private function _handleRequest()
    123.     {
    124.         $lang = lang::getmass();
    125.  
    126.         if(empty($this->errors))
    127.         {
    128.             //get db
    129.             $db = $this->registry['db'];
    130.  
    131.             //set up request data
    132.             $this->reqData['srv']   = $_POST['srv'];
    133.             $this->reqData['summ']  = (int)$_POST['pays'];
    134.             $this->reqData['hall']  = (int)$_POST['from'];
    135.             $this->reqData['operid']= (int)$_POST['operid'];
    136.             $this->reqData['user']  = (int)$_POST['to'];
    137.             $this->reqData['hash']  = $_POST['hash'];
    138.             $this->reqData['key']   = $_POST['key'];
    139.  
    140.             /* Check user, hall and operator
    141.             -------------------------------------------*/
    142.             $this->_getData();
    143.             if(empty($this->_userData))
    144.             {
    145.                 $this->errors[] = $lang['gatefile_error14'];
    146.                 return;
    147.             }
    148.             if(empty($this->_userData))
    149.             {
    150.                 $this->errors[] = $lang['gatefile_error8'];
    151.                 return;
    152.             }
    153.             if(empty($this->_operData))
    154.             {
    155.                 $this->errors[] = $lang['gatefile_error9'];
    156.                 return;
    157.             }
    158.  
    159.             //check for op_id = hall op_id
    160.             $q = 'SELECT idhall
    161.                     FROM hall_operators
    162.                     WHERE idoperator = '.$this->reqData['operid'];
    163.             $halls = array();
    164.             $a = $db->fetch_assoc($q);
    165.             foreach($a as $t => $row)
    166.                 $halls[] = $row['idhall'];
    167.  
    168.             if(!in_array($this->reqData['hall'], $halls))
    169.             {
    170.                 $this->errors[] = $lang['gatefile_error10'];
    171.                 return;
    172.             }
    173.  
    174.  
    175.             //check hash
    176.             $generatedHash = md5('srv='.$this->reqData['srv'].' pays='.$this->reqData['summ'].' from='.$this->reqData['hall'].' operid='.$this->reqData['operid'].' to='.$this->reqData['user'].' key='.$this->reqData['key']);
    177.             if($generatedHash != $this->reqData['hash'])
    178.             {
    179.                 $this->errors[] = $lang['gatefile_error11'];
    180.                 return;
    181.             }
    182.  
    183.  
    184.             /* Change balance
    185.             -------------------------------------------*/
    186.             $balance = $this->reqData['summ'];
    187.  
    188.             //generate ticket
    189.             $secretkey = self::generation();
    190.             $query = 'SELECT tid
    191.                     FROM tickets
    192.                     WHERE secretkey=\''.$secretkey.'\'';
    193.             $db->query($query);
    194.             while( $db->num_rows() || strlen( $secretkey ) < 10 )
    195.             {
    196.                 $secretkey  = self::generation();
    197.                 $query      = 'SELECT tid
    198.                             FROM tickets
    199.                             WHERE secretkey=\''.$secretkey.'\'';
    200.                 $db->query($query);
    201.             }
    202.  
    203.             //calculate new balance
    204.             $query  = 'SELECT balance, roomnumber
    205.                     FROM users
    206.                     WHERE uid='.$this->reqData['user'];
    207.             $terminalbalance = $db->fetch_assoc($query);
    208.             $terminalbalance = $terminalbalance[0];
    209.             $newbalance_t = $newbalance = $terminalbalance['balance'] + $balance;
    210.             $roomnumber =  $terminalbalance['roomnumber'];
    211.  
    212.             if($balance < $this->_hallData['minamount'])
    213.             {
    214.                 $this->errors[] = $lang['gatefile_error12'];
    215.                 return;
    216.             }
    217.  
    218.             if($balance > $this->_hallData['balance'])
    219.             {
    220.                 $this->errors[] = $lang['gatefile_error13'];
    221.                 return;
    222.             }
    223.  
    224.             //insert ticket and payment
    225.             $q = 'INSERT INTO tickets ( creator, balance, secretkey, active, cancelby )
    226.                 VALUES ('.$this->reqData['operid'].', '.$balance.', \''.$secretkey.'\', 3, '.$this->reqData['user'].')';
    227.             $db->query($q);
    228.  
    229.             $q = 'INSERT INTO payments ( uid, payment )
    230.                 VALUES ( '.$this->reqData['user'].', '.$balance.' );';
    231.             $db->query($q);
    232.  
    233.             //update operator and hall balance
    234.             $this->_operData['balance'] += $balance;
    235.  
    236.             $q = 'UPDATE administrators
    237.                 SET balance = '.$this->_operData['balance'].'
    238.                 WHERE aid = '.$this->_operData['aid'];
    239.             $db->query($q);
    240.  
    241.             $q = 'UPDATE hall
    242.                 SET balance = balance-'.$balance.'
    243.                 WHERE id = '.$roomnumber;
    244.             $db->query($q);
    245.  
    246.             //insert payment
    247.             /* $qPayment = 'UPDATE users
    248.                     SET balance = (balance + '.$this->reqData['summ'].')
    249.                     WHERE id = '.$this->reqData['user']; */
    250.             //$db->query($qPayment);
    251.  
    252.             // insert history data
    253.             $qHistory = 'INSERT INTO remote_payments (pdate, ip, hall_id, user_id, oper_id, summ)
    254.                     VALUES ('.mktime().', \''.$_SERVER['REMOTE_ADDR'].'\', '.$this->reqData['hall'].', '.$this->reqData['user'].', '.$this->reqData['operid'].', '.$this->reqData['summ'].')
    255.                     ';
    256.             $db->query($qHistory);
    257.         }
    258.     }
    259.  
    260.  
    261.     /**
    262.     * Get hall and user data
    263.     */
    264.     private function _getData()
    265.     {
    266.         $db = $this->registry['db'];
    267.         //get hall
    268.         $qHall = 'SELECT *
    269.                 FROM hall
    270.                 WHERE id = '.$this->reqData['hall'].' AND secret_code = \''.$this->reqData['key'].'\'
    271.             ';
    272.         if($db->num_rows($qHall) > 0)
    273.         {
    274.             $hdata = $db->fetch_assoc($qHall);
    275.             $this->_hallData = $hdata[0];
    276.         }
    277.         else
    278.             return; //hall not exist
    279.  
    280.  
    281.         //check for op_id = hall op_id
    282.         $qOper = 'SELECT *
    283.                 FROM administrators
    284.                 WHERE aid = '.$this->reqData['operid'];
    285.         if($db->num_rows($qOper) > 0)
    286.         {
    287.             $opdata = $db->fetch_assoc($qOper);
    288.             $this->_operData = $opdata[0];
    289.         }
    290.         else
    291.             return;
    292.  
    293.         //get user
    294.         $qUser = 'SELECT *
    295.                 FROM users
    296.                 WHERE uid = '.$this->reqData['user'];
    297.         if($db->num_rows($qUser) > 0)
    298.         {
    299.             $udata = $db->fetch_assoc($qUser);
    300.             $this->_userData = $udata[0];
    301.         }
    302.     }
    303.  
    304.  
    305.  
    306.     function _actUserAddMoney($PaymentSystemResponse)
    307.     {
    308.  
    309.         $log = "answer: ".print_r($PaymentSystemResponse, 1)."\r\nxml: ".base64_decode($PaymentSystemResponse['operation_xml']);
    310.         $filename = ROOT_PATH.'public/'.time().'.txt';
    311.         file_put_contents($filename, $log);
    312.         chmod($filename, 0777);
    313.  
    314.         $db = $this->registry['db'];
    315.         $lang = lang::getmass();
    316.  
    317.         if(!isset($_GET['uid']) || !ctype_digit($_GET['uid']) || !isset($_GET['hid']) || !ctype_digit($_GET['hid']))
    318.             exit('Incorrect user id or hall id');
    319.  
    320.         //hall data
    321.         $hall = $db->fetch_assoc('SELECT * FROM hall WHERE id = '.(int)$_GET['hid']);
    322.         $hallData = $hall[0];
    323.  
    324.         $response = array(
    325.             'merchant_id'   => null,
    326.             'order_id'      => null,
    327.             'amount'        => null,
    328.             'currency'      => null,
    329.             'description'   => null,
    330.             'status'        => null,
    331.             'code'          => null,
    332.             'transaction_id'=> null,
    333.             'pay_way'       => null,
    334.             'sender_phone'  => null,
    335.             );
    336.  
    337.         $xml_string = base64_decode($PaymentSystemResponse['operation_xml']);
    338.         $got_signature = $PaymentSystemResponse['signature'];
    339.  
    340.         $Xml = simplexml_load_string($xml_string);
    341.         if (!$Xml) {
    342.         exit('Invalid XML received');
    343.         }
    344.  
    345.         foreach ($Xml->children() as $k => $node) {
    346.         if (array_key_exists($k, $response)) {
    347.             $response[$k] = (string)$node;
    348.         }
    349.         }
    350.  
    351.         $expected_signature = base64_encode(
    352.         sha1(
    353.             $hallData['merch_sign'] . $xml_string . $hallData['merch_sign'],
    354.             true
    355.         )
    356.         );
    357.  
    358.         //check for payment
    359.         $extOrder = $db->fetch_assoc('SELECT * FROM visa_log WHERE order_id = \''.$response['order_id'].'\'');
    360.         if(empty($extOrder) || $extOrder[0]['status'] != 'process')
    361.             exit('Payment already successed');
    362.  
    363.         list($invoice_id, $user_id) = explode(':', $response['order_id']);
    364.  
    365.         if ($invoice_id < 1 || $user_id < 1 || $expected_signature !== $got_signature)
    366.             exit('Incorrect result data');
    367.  
    368.         if($response['status'] == 'success')
    369.         {
    370.             $amount = (float)$response['amount'] * 100;
    371.             //add balance to user
    372.             /* $db->query('UPDATE users
    373.                     SET balance = balance + '.$amount.'
    374.                     WHERE uid = '.(int)$user_id
    375.                     );
    376.             //delete from hall
    377.             $db->query('UPDATE hall
    378.                     SET balance = balance - '.$amount.'
    379.                     WHERE id = '.(int)$_GET['hid']
    380.                     );*/
    381.             //---------------------------------
    382.             // Increase user balance
    383.             //---------------------------------    
    384.             $roomnumber = (int)$_GET['hid']; //hall id compability
    385.             $terminalid = $user_id; //user id compability
    386.             $balance = $amount; //entered balance
    387.             $_CFG_USER['userid'] = $hallData['creatorid'];
    388.            
    389.             $secretkey      = parent::generation();
    390. $query      = 'SELECT tid FROM tickets WHERE secretkey=\''.$secretkey.'\'';
    391. while( $db->num_rows($query) || strlen( $secretkey ) < 10 )
    392. {
    393.     $secretkey  = $this->generation();
    394.     $query      = 'SELECT tid FROM tickets WHERE secretkey=\''.$secretkey.'\'';
    395. }
    396.  
    397. //увеличиваем баланс терминала
    398. $query              = 'SELECT balance,roomnumber FROM users WHERE uid='.$terminalid;
    399. $terminalbalance    = $db->fetch_rows($query);
    400. $terminalbalance = $terminalbalance[0];
    401.  
    402. $newbalance_t       = $newbalance = $terminalbalance[0] + $balance;
    403. $roomnumber =  $terminalbalance[1];
    404.  
    405. /*if(($balance/100) < $this->get_hall_minamount($roomnumber)) {
    406. exit('Less than min hall amount');
    407. }
    408.  
    409. if(($balance) > $this->get_hall_balance($roomnumber)) {
    410. exit('Too low hall balance');
    411. } */
    412.  
    413. //пишем тикет как уже активированный юзером $terminalid - статус 3
    414. $query      = 'INSERT INTO tickets ( creator, balance, secretkey, active, cancelby )
    415. VALUES (\''.$_CFG_USER['userid'].'\', '.$balance.', \''.$secretkey.'\', 3, '.$terminalid.')';
    416. $db->query($query);
    417.  
    418. //------------------------------------
    419. // Add bonus money
    420. //------------------------------------
    421. $sql        = 'SELECT mbonus,pbonus from hall where id = (select roomnumber from users where uid = '.$terminalid.' limit 1)';
    422. $bonusres   = $db->fetch_rows( $sql );
    423.  
    424. $bonusmoney = 0;
    425.  
    426. if( $bonusres )
    427. {
    428.     $mbonus = $bonusres[0][0];
    429.     $pbonus = $bonusres[0][1];
    430.  
    431.     if( $balance/100 > $mbonus )
    432.     $bonusmoney = ( $balance * $pbonus ) / 100;
    433.     else
    434.         $bonusmoney = 0;
    435. }
    436. else
    437.     $bonusmoney = 0;
    438.  
    439. $query      = 'INSERT INTO payments ( uid, payment, bonus ) VALUES ( '.$terminalid.', '.$balance.', '.$bonusmoney.' )';
    440. $db->query($query);
    441.  
    442.  
    443. /* увеличиваем текущий баланс на операторе
    444. $newbalance = $_CFG_USER['balance'];
    445. $newbalance += $balance;
    446. $_CFG_USER['balance'] = $newbalance;
    447. $_SESSION['CFG_USER'] = $_CFG_USER;
    448.  
    449. //$query        = 'UPDATE administrators SET balance='.$_CFG_USER['balance'].' WHERE aid='.$_CFG_USER['userid'];
    450. //$db->query($query); */
    451.  
    452. $query      = 'UPDATE hall SET balance=balance-'.$balance.' WHERE id='.$roomnumber;
    453. $db->query($query);
    454.  
    455. //$this->write_log(22, 'terminal: '. $this->get_user_name($terminalid) . ' , new balance: ' . $this->balance_to_rubles($newbalance_t));    
    456.            
    457.            
    458.             //---------------------------------
    459.             // Update VISA log
    460.             //---------------------------------
    461.             $db->query('UPDATE visa_log
    462.                     SET status = \'success\'
    463.                     WHERE order_id = \''.$response['order_id'].'\'
    464.                     ');
    465.             exit('Payment success');
    466.         }
    467.         elseif($response['status'] == 'wait_secure')
    468.         {
    469.             exit('Awating for payment');
    470.         }
    471.         else
    472.         {
    473.             $db->query('UPDATE visa_log
    474.                     SET status = \'failure\'
    475.                     WHERE order_id = \''.$response['order_id'].'\'
    476.                     ');
    477.             exit('Payment failure');
    478.         }
    479.     }
    480.  
    481.  
    482.     /**
    483.     * Get CBRF rates
    484.    
    485.     function rates()
    486.     {
    487.         $db = $this->registry['db'];
    488.         $rates = $this->registry->getClass('rates');
    489.  
    490.         //clean currency table
    491.         $db->query('TRUNCATE TABLE curr_rates');
    492.         //get new rates
    493.         $currencies = array(643 => 1);
    494.         foreach($rates->rates->ValuteData->ValuteCursOnDate as $val)
    495.         {
    496.             //insert new rates
    497.             $db->query('INSERT INTO curr_rates (vcode, vchcode, vcurs)
    498.                     VALUES ('.(int)$val->Vcode.', \''.$val->VchCode.'\', '.(float)$val->Vcurs.')');
    499.             //the array
    500.             $currencies[(int)$val->Vcode] = (float)$val->Vcurs;
    501.         }
    502.  
    503.         //get halls
    504.         $halls = $db->fetch_assoc('SELECT * FROM hall');
    505.         foreach($halls as $hall)
    506.         {
    507.             $db->query('UPDATE hall
    508.                     SET currency = '.(float)$currencies[$hall['curr']].'
    509.                     WHERE id = '.$hall['id']);
    510.         }
    511.  
    512.  
    513.  
    514.  
    515.         exit();
    516.     }*/
    517.  
    518. }
    519. ?>
     
  17. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    говнокод =)
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    progman_rus
    по поводу первого куска
    Это все он писал, что тут можно сказать, он знает mvc, приводит типы, оптимизирует работу со строками
    из минусов не придерживается определенного стиля в задании имен переменных и функций (но это качество работы кода никак не сказывается)
    Покажите лучше какой нибудь контроллер controller_что то, только не index
     
  19. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Дак тебе ж показали
     
  20. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    ну вот еще контроллер logs.php
    PHP:
    1. <?php
    2.  
    3. class controller_logs extends controller_base
    4. {  
    5.     /**
    6.      *
    7.      * Class router
    8.      */
    9.     function logs()
    10.     {
    11.         $arguments = self::_parseArguments();
    12.        
    13.         switch($argumenets['act'])
    14.         {
    15.             case 'halls':
    16.                 self::_showHallList();
    17.             break;
    18.            
    19.             case 'users':
    20.                 self::_showUserList();
    21.             break;
    22.            
    23.             case 'logs':
    24.                 self::_showLogList();
    25.             break;
    26.            
    27.             case 'game':
    28.                 self::_showGame();
    29.             break;
    30.         }
    31.     }
    32.    
    33.  
    34.     function _parseArguments()
    35.     {
    36.         $args = array();
    37.         if(isset($this->registry['arguments'][0]) && !empty($this->registry['arguments'][0]))
    38.         {
    39.             $args['act'] = 'users';
    40.             $hallid = explode('-', $this->registry['arguments'][0]);
    41.             $args['hallid'] = parent::dsCrypt($hallid[1], 1);
    42.         }
    43.         else
    44.             $args['act'] = 'halls';
    45.            
    46.         if(isset($this->registry['arguments'][1]))
    47.         {
    48.             $args['act'] = 'logs';
    49.             $userid = explode('-', $this->registry['arguments'][1]);
    50.             $args['userid'] = parent::dsCrypt($userid[1], 1);
    51.         }
    52.         if(isset($this->registry['arguments'][2]))
    53.         {
    54.             $args['act'] = 'game';
    55.             $gameid = explode('-', $this->registry['arguments'][2]);
    56.             $args['gameid'] = parent::dsCrypt($gameid[1], 1);
    57.         }
    58.        
    59.         return $args;  
    60.     }
    61.                    
    62.     /**
    63.      * Show hall list for logs
    64.      */
    65.     function _showHallList()
    66.     {
    67.        
    68.     }          
    69. }
    70.  
    71.  
    72. ?>
     
  21. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Apple
    я просто пока отправлял небыло еше
    progman_rus
    PHP:
    1. <?php
    2. if(!isset($_POST['srv']) || ($_POST['srv'] != 'RU' && $_POST['srv'] != 'UA'))
    3.              $this->errors[] = $lang['gatefile_error2'];
    4.  
    5.          if(!isset($_POST['pays']) || !ctype_digit($_POST['pays']))
    6.              $this->errors[] = $lang['gatefile_error3'];
    7.  
    8.  
    9.          if(!isset($_POST['from']) || !ctype_digit($_POST['from']))
    10.              $this->errors[] = $lang['gatefile_error4'];
    11.  
    12.          if(!isset($_POST['operid']) || !ctype_digit($_POST['operid']))
    13.              $this->errors[] = $lang['gatefile_error5'];
    14.  
    15.  
    16.          if(!isset($_POST['to']) || !ctype_digit($_POST['to']))
    17.              $this->errors[] = $lang['gatefile_error6'];
    18.  
    19.          if(!isset($_POST['hash']) || !isset($_POST['key']))
    20.              $this->errors[] = $lang['gatefile_error7'];
    еше не пришел к универсальной обработке форм, но уже близок (скоро ему это должно надоесть :)))

    да нормально все, в принципе, смотря как давно эти куски были написаны, скорее всего сейчас лучше пишет
    самописная система, человек сам думает/развивается
    сколько платите ему если не сикрет?
     
  22. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    да не секрет, 35 штук, сидит дома на удаленке
    ну пишет уже 3й или 4й месяц.

    ну в целом ясно - значит по чисто писанию зачот, спасибо успокоил ;-)
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Кавайно
    по-ходу mysqli, это хорошо.
    считается, что вместо такого приведения лучше делать проверку и если не тот - выводить ошибку
    и что убивать скрипт внутри класса - плохо. Хотя если это у вас скрипт, который должен быть вызван удаленно другим скриптом и получить простой ответ - почему бы и нет.
    имена классов по-соглашению пишутся с большой буквы.

    Куски закомментированного кода - мусор, который признак того, что программист не уверен, что сейчас все правильно. Хотя на стадии разработки тоже не страшно.

    Грубых ошибок нет.
     
  24. progman_rus

    progman_rus Активный пользователь

    С нами с:
    17 сен 2008
    Сообщения:
    44
    Симпатии:
    0
    [vs] спасибо за коммент.
    возможно то что закоментарено писал другой программист.
    когда он к нам пришел, старый прогер процентов 10 написал там кода.
    или мы сменили какие то условия по ходу пьессы.
     
  25. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    progman_rus
    можно конечно лучше, но для этого нужно уделить намного больше времени самой основе системы, для этого быть nolife задротом и фанатиком типа меня либо иметь больший опыт