Changeset 447


Ignore:
Timestamp:
Oct 16, 2012, 8:26:33 PM (12 years ago)
Author:
chronos
Message:
  • Přidáno: Podpora pro NULL hodnoty v tříde Database.
  • Přidáno: Podpora pro NULL hodnoty v editačních formulářích.
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Common/Database.php

    r438 r447  
    8888    {
    8989      $Name .= ',`'.$Key.'`';
    90       if(!in_array($Value, $this->Functions)) $Value = $this->PDO->quote($Value);
     90      if(!in_array($Value, $this->Functions))
     91      {
     92        if($Value == NULL) $Value = 'NULL';
     93        else $Value = $this->PDO->quote($Value);
     94      }
    9195      $Values .= ','.$Value;
    9296    }
     
    102106    foreach($Data as $Key => $Value)
    103107    {
    104       if(!in_array($Value, $this->Functions)) $Value = $this->PDO->quote($Value);
     108      if(!in_array($Value, $this->Functions))
     109      {
     110        if($Value == NULL) $Value = 'NULL';
     111        else $Value = $this->PDO->quote($Value);
     112      }
    105113      $Values .= ', `'.$Key.'`='.$Value;
    106114    }
     
    115123    foreach($Data as $Key => $Value)
    116124    {
    117             if(!in_array($Value, $this->Functions)) $Value = $this->PDO->quote($Value);
     125      if(!in_array($Value, $this->Functions))
     126      {
     127        if($Value == NULL) $Value = 'NULL';
     128        else $Value = $this->PDO->quote($Value);
     129      }
    118130      $Name .= ',`'.$Key.'`';
    119131      $Values .= ','.$Value;
  • trunk/Common/Forms.php

    r445 r447  
    7171    {
    7272      if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    73         if(array_key_exists($Item['Type'], $FormTypes))
    74         {           
    75           if(!array_key_exists($Item['Type'], $System->Type->TypeDefinitionList))
    76             $System->Type->RegisterType($Item['Type'], '',
    77               $FormTypes[$Item['Type']]);
    78           if($FormTypes[$Item['Type']]['Type'] == 'Reference')
    79             $UseType = 'OneToMany';
    80           else if($FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    81             $UseType = 'Enumeration';
    82         } else $UseType = $Item['Type'];
    83         $Edit = ''.$System->Type->ExecuteTypeEvent($UseType, 'OnEdit',
    84             array('Value' => $this->Values[$Index], 'Name' => $Index,
    85             'Type' => $Item['Type'])).'';
     73        $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
     74            'Type' => $Item['Type']);
     75        if(array_key_exists('Null', $Item)) $Parameters['Null'] = $Item['Null'];
     76          else unset($Parameters['Null']);
     77
     78        if(array_key_exists($Item['Type'], $FormTypes))
     79        {           
     80          if(!array_key_exists($Item['Type'], $System->Type->TypeDefinitionList))
     81            $System->Type->RegisterType($Item['Type'], '',
     82              $FormTypes[$Item['Type']]);
     83          if($FormTypes[$Item['Type']]['Type'] == 'Reference')
     84          {
     85            $UseType = 'OneToMany';
     86          } else if($FormTypes[$Item['Type']]['Type'] == 'Enumeration')
     87            $UseType = 'Enumeration';
     88        } else $UseType = $Item['Type'];
     89        $Edit = ''.$System->Type->ExecuteTypeEvent($UseType, 'OnEdit', $Parameters).'';
    8690
    8791      array_push($Table['Rows'], array($Item['Caption'].':', $Edit));
     
    131135    {
    132136      if(!array_key_exists($Index, $this->Values) and isset($Item['Default'])) $this->Values[$Index] = $Item['Default'];
    133         if(array_key_exists($Item['Type'], $FormTypes))
    134         {           
    135           if(!array_key_exists($Item['Type'], $System->Type->TypeDefinitionList))
    136             $System->Type->RegisterType($Item['Type'], '',
    137               $FormTypes[$Item['Type']]);
    138           if($FormTypes[$Item['Type']]['Type'] == 'Reference')
    139             $UseType = 'OneToMany';
    140           else if($FormTypes[$Item['Type']]['Type'] == 'Enumeration')
    141             $UseType = 'Enumeration';
    142         } else $UseType = $Item['Type'];
    143         $Values[$Index] = ''.$System->Type->ExecuteTypeEvent($UseType, 'OnSaveDb',
    144           array('Value' => $this->Values[$Index], 'Name' => $Index,
    145           'Type' => $Item['Type'])).'';
     137      $Parameters = array('Value' => $this->Values[$Index], 'Name' => $Index,
     138          'Type' => $Item['Type']);
     139     
     140        if(array_key_exists($Item['Type'], $FormTypes))
     141        {           
     142          if(!array_key_exists($Item['Type'], $System->Type->TypeDefinitionList))
     143            $System->Type->RegisterType($Item['Type'], '',
     144              $FormTypes[$Item['Type']]);
     145          if($FormTypes[$Item['Type']]['Type'] == 'Reference')
     146          {
     147            $UseType = 'OneToMany';
     148          }
     149          else if($FormTypes[$Item['Type']]['Type'] == 'Enumeration')
     150            $UseType = 'Enumeration';
     151        } else $UseType = $Item['Type'];
     152        $Values[$Index] = ''.$System->Type->ExecuteTypeEvent($UseType, 'OnSaveDb', $Parameters).'';
    146153       
    147154        //echo($DbRow[$Index].'='.$this->Values[$Index].'<br/>');
     
    152159      $DbResult = $Database->insert($this->Definition['Table'], $Values);
    153160    } else
    154     $DbResult = $Database->update($this->Definition['Table'], 'Id='.$Id, $Values);
     161      $DbResult = $Database->update($this->Definition['Table'], 'Id='.$Id, $Values);
    155162    //echo($Database->LastQuery);
    156163  }
  • trunk/Common/Types/OneToMany.php

    r442 r447  
    2626    if(array_key_exists('Condition', $Type['Parameters'])) $Where = ' WHERE '.$Type['Parameters']['Condition'];
    2727      else $Where = '';
     28    print_r($Item);
     29    if(array_key_exists('Null', $Item) and $Item['Null'])
     30    {
     31      if($Item['Value'] == NULL) $Selected = ' selected="1"'; else $Selected = '';
     32      $Output .= '<option value=""'.$Selected.'></option>';
     33    }
    2834    $DbResult = $this->System->Database->query('SELECT '.$Type['Parameters']['Name'].' AS `Name`,'.$Type['Parameters']['Id'].' AS `Id` FROM `'.$Type['Parameters']['Table'].'`'.$Where.' ORDER BY `Name`');
    2935    while($DbRow = $DbResult->fetch_assoc())
     
    3844  function OnLoad($Item)
    3945  {
    40     return($_POST[$Item['Name']]);
     46    if($_POST[$Item['Name']] == '') return(NULL);
     47      else return($_POST[$Item['Name']]);
     48  }
     49
     50  function OnLoadDb($Item)
     51  {
     52    if($Item['Value'] == '') return(NULL);
     53      else return($Item['Value']);
    4154  }
    4255}
  • trunk/form_classes.php

    r446 r447  
    1111      'Norm' => array('Type' => 'String', 'Caption' => 'Video norma', 'Default' => ''),
    1212      'Homepage' => array('Type' => 'Hyperlink', 'Caption' => 'Web', 'Default' => ''),
    13       'Language' => array('Type' => 'TLanguage', 'Caption' => 'Jazyk', 'Default' => ''),
     13      'Language' => array('Type' => 'TLanguage', 'Caption' => 'Jazyk', 'Default' => '', 'Null' => true),
    1414      'ShortName' => array('Type' => 'String', 'Caption' => 'Zkratka', 'Default' => ''),
    1515      'Stream' => array('Type' => 'Hyperlink', 'Caption' => 'Proud', 'Default' => ''),
    1616      'StreamWeb' => array('Type' => 'Hyperlink', 'Caption' => 'Proud web', 'Default' => ''),
    1717      'SourceType' => array('Type' => 'String', 'Caption' => 'Typ zdroje', 'Default' => ''),
    18       'Category' => array('Type' => 'TTVGroup', 'Caption' => 'Kategorie', 'Default' => ''),
     18      'Category' => array('Type' => 'TTVGroup', 'Caption' => 'Kategorie', 'Default' => '', 'Null' => true),
    1919    ),
    2020  ),
     
    2424    'DefaultSortColumn' => 'Name',
    2525    'Items' => array(
    26       'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
     26      'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),       
    2727    ),
    2828  ),
     
    4949      'Public' => array('Type' => 'Boolean', 'Caption' => 'Veřejné', 'Default' => '0'),
    5050      'Progress' => array('Type' => 'Integer', 'Caption' => 'Průběh', 'Default' => '0'),
    51       'Group' => array('Type' => 'TTaskGroup', 'Caption' => 'Kategorie', 'Default' => ''),
     51      'Group' => array('Type' => 'TTaskGroup', 'Caption' => 'Kategorie', 'Default' => '', 'Null' => true),
    5252    ),
    5353  ),
     
    6868      'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    6969      'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
    70       'Parent' => array('Type' => 'TTaskGroup', 'Caption' => 'Kategorie', 'Default' => ''),
     70      'Parent' => array('Type' => 'TTaskGroup', 'Caption' => 'Kategorie', 'Default' => '', 'Null' => true),
    7171      'Tasks' => array('Type' => 'TTaskList', 'Caption' => 'Úkoly', 'Default' => ''),
    7272    ),
     
    8181      'VAT' => array('Type' => 'Integer', 'Caption' => 'DPH', 'Default' => '0'),
    8282      'Consumption' => array('Type' => 'Integer', 'Caption' => 'Spotřeba', 'Default' => ''),
    83       'Manufacturer' => array('Type' => 'TSubject', 'Caption' => 'Výrobce', 'Default' => ''),
     83      'Supplier' => array('Type' => 'TSubject', 'Caption' => 'Výrobce', 'Default' => '', 'Null' => true),
     84      'Manufacturer' => array('Type' => 'TSubject', 'Caption' => 'Výrobce', 'Default' => '', 'Null' => true),
    8485      'Code' => array('Type' => 'String', 'Caption' => 'Kód', 'Default' => ''),
    85       'UnitOfMeasure' => array('Type' => 'TUnitOfMeasure', 'Caption' => 'Měrná jednotka', 'Default' => ''),
     86      'UnitOfMeasure' => array('Type' => 'TUnitOfMeasure', 'Caption' => 'Měrná jednotka', 'Default' => '', 'Null' => true),
    8687      'StockItems' => array('Type' => 'TStockItemListProduct', 'Caption' => 'Položky na skladě', 'Default' => ''),
    8788    ),
     
    9899      'Amount' => array('Type' => 'Integer', 'Caption' => 'Množství', 'Default' => '1'),
    99100      'SerialNumber' => array('Type' => 'String', 'Caption' => 'Sériové číslo', 'Default' => ''),
    100       'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => ''),
    101       'Segment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Úsek sítě', 'Default' => ''),
     101      'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => '', 'Null' => true),
     102      'Segment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Úsek sítě', 'Default' => '', 'Null' => true),
    102103    ),
    103104  ),
     
    108109    'Items' => array(
    109110      'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    110       'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => ''),
     111      'Location' => array('Type' => 'TMember', 'Caption' => 'Umístění', 'Default' => '', 'Null' => true),
    111112      'Items' => array('Type' => 'TStockItemListStock', 'Caption' => 'Položky', 'Default' => ''),
    112113    ),
     
    118119    'Items' => array(
    119120      'Time' => array('Type' => 'DateTime', 'Caption' => 'Čas', 'Default' => ''),
    120       'User' => array('Type' => 'TUser', 'Caption' => 'Uživatel', 'Default' => ''),
     121      'User' => array('Type' => 'TUser', 'Caption' => 'Uživatel', 'Default' => '', 'Null' => true),
    121122      'Module' => array('Type' => 'String', 'Caption' => 'Modul', 'Default' => ''),
    122123      'Operation' => array('Type' => 'String', 'Caption' => 'Operace', 'Default' => ''),
     
    139140    'Items' => array(
    140141      'Name' => array('Type' => 'String', 'Caption' => 'Jméno', 'Default' => ''),
    141       'Group' => array('Type' => 'TFinanceTariffGroup', 'Caption' => 'Skupina', 'Default' => ''),
     142      'Group' => array('Type' => 'TFinanceTariffGroup', 'Caption' => 'Skupina', 'Default' => '', 'Null' => true),
    142143      'SpeedMin' => array('Type' => 'Integer', 'Caption' => 'Min. rychlost', 'Default' => '0'),
    143144      'SpeedMax' => array('Type' => 'Integer', 'Caption' => 'Max. rychlost', 'Default' => '0'),
     
    145146      'Price' => array('Type' => 'Integer', 'Caption' => 'Cena', 'Default' => '0'),
    146147      'MemberCount' => array('Type' => 'Integer', 'Caption' => 'Počet členů', 'Default' => ''),
    147       'ReplaceId' => array('Type' => 'TFinanceTariff', 'Caption' => 'Nahradí tarif', 'Default' => ''),
     148      'ReplaceId' => array('Type' => 'TFinanceTariff', 'Caption' => 'Nahradí tarif', 'Default' => '', 'Null' => true),
    148149      'Public' => array('Type' => 'Boolean', 'Caption' => 'Veřejné', 'Default' => ''),
    149150    ),
     
    165166      'BillingPeriodNext' => array('Type' => 'TFinanceBillingPeriod', 'Caption' => 'Fakturační období příští', 'Default' => ''),
    166167      'BillingPeriodLastDate' => array('Type' => 'Date', 'Caption' => 'Datum poslední fakturace', 'Default' => ''),
    167       'NetworkSegment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Úsek sítě', 'Default' => ''),
     168      'NetworkSegment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Úsek sítě', 'Default' => '', 'Null' => true),
    168169      'Hire' => array('Type' => 'Integer', 'Caption' => 'Nájem', 'Default' => '0'),
    169170      'Blocked' => array('Type' => 'Boolean', 'Caption' => 'Blokování', 'Default' => '0'),
     
    305306      'Domain' => array('Type' => 'String', 'Caption' => 'Doména', 'Default' => ''),
    306307      'NTP' => array('Type' => 'String', 'Caption' => 'NTP', 'Default' => ''),
    307       'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => ''),
     308      'Member' => array('Type' => 'TMember', 'Caption' => 'Zákazník', 'Default' => '', 'Null' => true),
    308309      'ExtAddressRange' => array('Type' => 'String', 'Caption' => 'Vnější rozsah adres', 'Default' => ''),
    309310      'ExtMask' => array('Type' => 'String', 'Caption' => 'Vnější prefix', 'Default' => ''),
     
    359360      'Text' => array('Type' => 'String', 'Caption' => 'Popis', 'Default' => ''),
    360361      'Network' => array('Type' => 'Boolean', 'Caption' => 'Týkající sítě', 'Default' => ''),
    361       'BankAccount' => array('Type' => 'TFinanceBankAccount', 'Caption' => 'Účet', 'Default' => ''),
    362       'Treasury' => array('Type' => 'TFinanceTreasury', 'Caption' => 'Pokladna', 'Default' => ''),
     362      'BankAccount' => array('Type' => 'TFinanceBankAccount', 'Caption' => 'Účet', 'Default' => '', 'Null' => true),
     363      'Treasury' => array('Type' => 'TFinanceTreasury', 'Caption' => 'Pokladna', 'Default' => '', 'Null' => true),
    363364    ),
    364365  ),
     
    375376      'Value' => array('Type' => 'Integer', 'Caption' => 'Částka', 'Default' => '0', 'Unit' => 'Kč'),
    376377      'Text' => array('Type' => 'String', 'Caption' => 'Popis', 'Default' => ''),
    377       'Bill' => array('Type' => 'TFinanceBill', 'Caption' => 'Doklad', 'Default' => ''),
     378      'Bill' => array('Type' => 'TFinanceBill', 'Caption' => 'Doklad', 'Default' => '', 'Null' => true),
    378379    ),
    379380  ),
     
    464465      'Count' => array('Type' => 'Integer', 'Caption' => 'Počet', 'Default' => 1),
    465466      'Date' => array('Type' => 'Time', 'Caption' => 'Datum zakoupení', 'Default' => 'Now'),
    466       'Segment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Segment sítě', 'Default' => 0),
     467      'Segment' => array('Type' => 'TNetworkSegment', 'Caption' => 'Segment sítě', 'Default' => 0, 'Null' => true),
    467468      'Date' => array('Type' => 'Time', 'Caption' => 'Datum zakoupení', 'Default' => 'Now'),
    468469      'Used' => array('Type' => 'TNetworkDeviceState', 'Caption' => 'Stav', 'Default' => 0),
    469470      'Consumption' => array('Type' => 'Integer', 'Caption' => 'Spotřeba', 'Default' => 0),
    470       'User' => array('Type' => 'TFinanceSubject', 'Caption' => 'Subjekt', 'Default' => 0),
     471      'Member' => array('Type' => 'TMember', 'Caption' => 'Subjekt', 'Default' => 0),
    471472      'Info' => array('Type' => 'String', 'Caption' => 'Poznámky', 'Default' => ''),
    472473      'Shop' => array('Type' => 'String', 'Caption' => 'Obchod', 'Default' => ''),
  • trunk/sql/updates/446.sql

    r446 r447  
    6565(5, 'Regionální'),
    6666(6, 'Filmový');
     67
     68UPDATE `TV` SET `Category`=1 WHERE `Category`="Sportovní";
     69UPDATE `TV` SET `Category`=2 WHERE `Category`="Zábavný";
     70UPDATE `TV` SET `Category`=3 WHERE `Category`="Hudební";
     71UPDATE `TV` SET `Category`=4 WHERE `Category`="Zpravodajský";
     72UPDATE `TV` SET `Category`=5 WHERE `Category`="Regionální";
     73UPDATE `TV` SET `Category`=6 WHERE `Category`="Filmový";
     74ALTER TABLE `TV` CHANGE `Category` `Category` INT( 11 ) NULL ;
     75UPDATE `TV` SET `Category`=NULL WHERE `Category`=0;
     76ALTER TABLE `TV` ADD INDEX ( `Category` );
     77ALTER TABLE `TV` ADD FOREIGN KEY ( `Category` ) REFERENCES `TVGroup` (`Id`) ON DELETE RESTRICT ON UPDATE RESTRICT ;
Note: See TracChangeset for help on using the changeset viewer.