From ce62b1a4747b5ad7e34aad8821d0223ca385074e Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Fri, 26 Jun 2009 19:37:34 +0000 Subject: [PATCH] Criado o diretório pacotes/classesphp para armazenar arquivos PHP de terceiros e de uso geral. Incluída classe para manipulação de arquivos CSV. --- pacotes/classesphp/class.CSVHandler.php | 231 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+), 0 deletions(-) create mode 100644 pacotes/classesphp/class.CSVHandler.php diff --git a/pacotes/classesphp/class.CSVHandler.php b/pacotes/classesphp/class.CSVHandler.php new file mode 100644 index 0000000..1f07594 --- /dev/null +++ b/pacotes/classesphp/class.CSVHandler.php @@ -0,0 +1,231 @@ +DataFile=$Filename; + $this->DataKey=$KeyFieldName; + $this->Separator=$Separator; + $this->color="#FFFFFF"; + } + function ReadCSV() { //read data into this->ItemsList and return it in an array + $this->Items_Count=0; + $this->ItemsList=array(); + $Item=array(); + $fp = fopen ($this->DataFile,"r"); + $this->HeaderData = fgetcsv ($fp, 3000, $this->Separator); + while ($DataLine = fgetcsv ($fp, 3000, $this->Separator)) { + for($i=0;$iHeaderData);$i++){ + $Item[$this->HeaderData[$i]]=$DataLine[$i]; + } + array_push($this->ItemsList,$Item); + $this->Items_Count++; + } + fclose($fp); + return ($this->ItemsList); + } + function Select($needle,$column="all") { //get items in a sort of SQL Select query and return them in an array + $this->ReadCSV(); + if($needle=="*") { + $result=$this->ItemsList; + } else { + $result=array(); + if($column=="all") { + while(list($key,$line)=each($this->ItemsList)) { + if (stristr(implode("",$line),$needle)) array_push($result,$line); + } + } else { + while(list($key,$line)=each($this->ItemsList)) { + if (stristr($line[$column],$needle)) array_push($result,$line); + } + } + } + return ($result); + } + function ListAll() { //prints a list of all Data + $Data=$this->ReadCSV(); + reset ($this->ItemsList); + reset ($this->HeaderData); + $HHeaders=""; + $HData=""; + while(list($HKey,$HVal)=each($this->HeaderData)) { //Create Headers Line + $HHeaders.=$this->HTTD($HVal); + } + $HHeaders=$this->HTTR($HHeaders); + while(list($LineKey,$LineVal)=each($this->ItemsList)) { //Read Data Lines + $HDataLine=""; + while(list($DataKey,$DataVal)=each($LineVal)) { //Dissect one Data Line + $HDataLine.=$this->HTTD($DataVal); + } + $HData.=$this->HTTR($HDataLine); //and add HTML to Data + } + print ($this->HTPage($this->HTTable($HHeaders.$HData))); + } + function GetValues($field) { //Fetch all values of a specified field and return values in array + $Data=$this->ReadCSV(); + $values=array(); + while(list($key,$val)=each($this->ItemsList)) { + if(!in_array($val[$field],$values)) array_push($values,$val[$field]); + } + sort($values); + return $values; + } + function Edit() { //All edit function in one Table + $Data=$this->ReadCSV(); + if(isset($_POST['commit'])) { + $this->Update($_POST[$this->DataKey],$_POST); + $Data=$this->ReadCSV(); + } + if(isset($_POST['add'])) { + $this->Add($_POST[$this->DataKey],$_POST); + $Data=$this->ReadCSV(); + } + if(isset($_POST['delete'])) { + $this->Delete($_POST[$this->DataKey]); + $Data=$this->ReadCSV(); + } + $PAGE=$this->EditList(); + print $PAGE; + } + +// Administration Area + function Update($key,$data) { //Updating Item "key" with "data" named array + $this->ReadCSV(); + for($i=0;$iItemsList);$i++) { + If($this->ItemsList[$i][$this->DataKey]==$key){ + while(list($key,$val)=each($this->HeaderData)) { + if(isset($data[$val])) $this->ItemsList[$i][$val]=$data[$val]; + } + } + } + $this->WriteData(); + return($this->ItemsList); + } + function Add($key,$data) { //add an Item "key" with "data" named array + $this->ReadCSV(); + $NewLine=array(); + $NewItem=array($this->DataKey=>$key); + while(list($key,$val)=each($this->HeaderData)) { + if(isset($data[$val])) { + $NewItem[$val]=$data[$val]; + } else { + $NewItem[$val]=$data[$val]=""; + } + } + array_push($this->ItemsList,$NewItem); + $this->WriteData(); + return($this->ItemsList); + } + function EditList() { //returns Editor's List of Items + reset ($this->ItemsList); + reset ($this->HeaderData); + $HHeaders=$this->HTTD(" "); + $HData=""; + while(list($HKey,$HVal)=each($this->HeaderData)) { //Create Headers Line + $HHeaders.=$this->HTTD($HVal); + } + $HHeaders=$this->HTTR($HHeaders); + while(list($LineKey,$LineVal)=each($this->ItemsList)) { //Read Data Lines + $HDataLine=""; + while(list($DataKey,$DataVal)=each($LineVal)) { //Dissect one Data Line + $HDataLine.=$this->HTInput($DataKey,$DataVal); + } + $HData.=$this->HTForm($LineVal[$this->DataKey],$this->HTTR($this->HTButton("commit").$HDataLine.$this->HTButton("delete"))); //and add HTML to Data + } + $HDataLine=""; + reset($this->HeaderData); + while(list($DataKey,$DataVal)=each($this->HeaderData)) { // Add an extra Line for Adding a record + $HDataLine.=$this->HTInput($DataVal,""); + } + $HData.=$this->HTForm($LineVal[$this->DataKey],$this->HTTR($this->HTButton("add").$HDataLine)); //and add HTML to Data + return($this->HTPage($this->HTTable($HHeaders.$HData))); + } + function Delete($DeleteKey) { //Remove Item "Key" from the file + $inter=array(); + while(list($key,$val)=each($this->ItemsList)) { + If($val[$this->DataKey]!=$DeleteKey) array_push($inter,$val); + } + $this->ItemsList=$inter; + $this->WriteData(); + return($this->ItemsList); + } + function WriteData() { //writing contents of ItemList to Datafile + reset($this->ItemsList); + $Output=implode($this->Separator, $this->HeaderData)."\n"; + while(list($key,$val)=each($this->ItemsList)) { + for($i=0;$iHeaderData);$i++){ + $writekey=$this->HeaderData[$i]; + $writeitem[$writekey]=$val[$writekey]; + } + $Output.=implode($this->Separator, $writeitem)."\n"; + } + $fp = fopen ($this->DataFile,"w"); + flock($fp,2); + fputs($fp,$Output); + flock($fp,3); + fclose($fp); + } + +// Accessory HTML output functions + function HTPage($value) { // Places $value into BODY of HTML Page + $result = "\n"; + $result.="".$this->DataFile." Editor\n"; + $result.="\n"; + $result.="\n"; + $result.="\n".$value."\n"; + return $result; + } + function HTForm($item,$data) { //places $data into form $item + return "
\n".$data."
\n"; + } + function HTTable($value) { //places $value into TABLE + return "\n".$value."
\n"; + } + function HTTR($value) { //places $value into TR + $this->SRotate(); + return "\n".$value."\n"; + } + function HTTD($value) { // places $value into TD + return "color."\">".$value."\n"; + } + function HTInput($field,$value) { //returns TD input field + $Olen=strlen($value); + if($Olen<3) { + $Ilen=12; + } else { + $Ilen=$Olen; + } + return "color."\">\n"; + } + function HTButton($value) { // returns "$value" button + return "\n"; + } + function SRotate() { //rotating colors for more readability of tables + if($this->color=="#FFFFFF") { + $this->color="#CCEEFF"; + } else { + $this->color="#FFFFFF"; + } + } +} +?> -- libgit2 0.21.2