Ignore:
Timestamp:
Aug 2, 2009, 4:56:48 PM (15 years ago)
Author:
george
Message:
  • Upraveno: Výrazné zrychlení načítání seznamů pomocí print terse.
  • Upraveno: Pro použití nové třídy Routerboard přizpůsoben i skript pro generování řízení toku.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/system/routerboard.php

    r240 r241  
    109109  }
    110110
     111  function ListGetPrint($Path, $Properties, $Conditions = array())
     112  {
     113    $ConditionList = '';
     114    foreach($Conditions as $Index => $Item)
     115    {
     116      $ConditionList .= $Index.'="'.$Item.'" ';
     117    }
     118    $ConditionList = substr($ConditionList, 0, -1);
     119    if(trim($ConditionList) != '')
     120      $ConditionList = ' where '.$ConditionList;   
     121
     122    $Result = $this->Execute(implode(' ', $Path).' print terse'.$ConditionList);
     123    $List = array();
     124    foreach($Result as $ResultLine)
     125    {
     126      $ResultLineParts = explode(' ', $ResultLine);
     127      $ListItem = array();
     128      foreach($ResultLineParts as $ResultLinePart)
     129      {
     130        $Value = explode('=', $ResultLinePart);
     131        if(in_array($Value[0], $Properties))
     132        {
     133          if(count($Value) > 1)
     134          {
     135            if($Value[1]{0} == '"') $Value[1] = substr($Value[1], 1, -1);           
     136            //if(strlen($Value[1]) > 0)
     137            $ListItem[$Value[0]] = $Value[1];
     138          } else $ListItem[$Value[0]] = '';
     139        }
     140      }
     141      if(count($ListItem) > 0) $List[] = $ListItem;
     142    }
     143    return($List);
     144  }
     145
    111146  function ListEraseAll($Path)
    112147  {
     
    114149  }
    115150 
    116   function ListUpdate($Path, $Properties, $Values, $Condition = array())
    117   {
    118     $List = $this->ListGet($Path, $Properties, $Condition);
     151  function ListUpdate($Path, $Properties, $Values, $Condition = array(), $UsePrint = false)
     152  {
     153    if($UsePrint == 0) $List = $this->ListGet($Path, $Properties, $Condition);
     154      else $List = $this->ListGetPrint($Path, $Properties, $Condition);
    119155    $Commands = array();
    120156   
     
    129165      $Values[$Index] = $Item;     
    130166    }
    131    
     167    foreach($List as $Index => $Item)
     168    {
     169      foreach($Properties as $Property)
     170      {
     171        if(!array_key_exists($Property, $Item))
     172           $Item[$Property] = '';
     173      }
     174      $List[$Index] = $Item;     
     175    }
     176   
     177    // Sort properties
     178    foreach($Values as $Index => $Item)
     179    {
     180      ksort($Values[$Index]);
     181    }
     182    foreach($List as $Index => $Item)
     183    {
     184      ksort($List[$Index]);
     185    }
    132186    print_r($List);
    133187    print_r($Values);
     
    144198        }
    145199        $Prop = substr($Prop, 0, -1);
    146         $Commands[] = implode(' ', $Path).' remove [find '.$Prop.']';
     200        if(trim($Prop) != '')
     201          $Commands[] = implode(' ', $Path).' remove [find '.$Prop.']';
    147202      }
    148203    }
Note: See TracChangeset for help on using the changeset viewer.