public function appendPosList ($client_id,$project_list,$doc_type){ $condition = new CDbCriteria(); $condition->condition =' documents.Client_ID = '.$client_id; $condition->addInCondition('documents.Project_ID ',$project_list); $condition->join = 'left join documents on documents.Document_ID = t.Document_ID'; $models = Pos::model()->with('document')->findAll($condition); $xml_doc = $this->xml->createElement("document"); if($models) { foreach ($models as $model) { $xml_row = $this->xml->createElement("row"); foreach ($model->attributes as $key => $value) { $xml_field = $this->xml->createElement("field",htmlentities($value,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', $key); $xml_row->appendChild($xml_field); } //+ we need to insert several columns from document model $xml_field = $this->xml->createElement("field",htmlentities($model->document->Origin,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', 'DocumentsOrigin'); $xml_row->appendChild($xml_field); $xml_field = $this->xml->createElement("field",htmlentities($model->document->Created,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', 'DocumentsCreated'); $xml_row->appendChild($xml_field); $xml_field = $this->xml->createElement("field",htmlentities($model->document->Project_ID,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', 'DocumentsProject_ID'); $xml_row->appendChild($xml_field); // end of block /*documents processing*/ $xml_doc_row = $this->xml->createElement("documents"); foreach ($model->document->attributes as $key => $value) { $xml_field = $this->xml->createElement("field",htmlentities($value,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', $key); $xml_doc_row->appendChild($xml_field); } /*end of documents processing*/ /*bacups processing*/ $bacup = Documents::model()->findByPk($model->PO_Backup_Document_ID); $xml_backup_row = $this->xml->createElement("backup"); if ($bacup){ foreach ($bacup->attributes as $key => $value) { $xml_field = $this->xml->createElement("field",htmlentities($value,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', $key); $xml_backup_row->appendChild($xml_field); } } /*end of bacups processing*/ /*po descriptions connected processing*/ $xml_desc = $this->xml->createElement("po_desc_detail"); foreach ($model->decr_details as $descs) { $xml_dist_row = $this->xml->createElement("desc_row"); foreach ($descs as $key=>$value) { $xml_field = $this->xml->createElement("field",htmlentities($value,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', $key); $xml_dist_row->appendChild($xml_field); } $xml_desc->appendChild($xml_dist_row); /*end of descriptions processing*/ /*dists processing*/ $xml_dists = $this->xml->createElement("po_dists"); foreach ($model->dists as $dist) { $xml_dist_row = $this->xml->createElement("dist_row"); foreach ($dist as $key=>$value) { $xml_field = $this->xml->createElement("field",htmlentities($value,ENT_QUOTES | 'ENT_XML1')); $xml_field->setAttribute('name', $key); $xml_dist_row->appendChild($xml_field); } $xml_dists->appendChild($xml_dist_row); } /*end of dists processing*/ /*images processing*/ $xml_image_row = $this->xml->createElement("images"); $xml_field = $this->xml->createElement("field",$model->document->image->Image_ID); $xml_field->setAttribute('name', 'Image_ID'); $xml_image_row->appendChild($xml_field); $filename = FileModification::prepareFileForExport($model->document->image->Document_ID,$doc_type,$this->filepath); $xml_field = $this->xml->createElement("field",$filename); $xml_field->setAttribute('name', 'File_Name'); $xml_image_row->appendChild($xml_field); $xml_row->appendChild($xml_field); $xml_field = $this->xml->createElement("field",$model->document->image->Mime_Type); $xml_field->setAttribute('name', 'Mime_Type'); $xml_image_row->appendChild($xml_field); $xml_row->appendChild($xml_field); $xml_field = $this->xml->createElement("field",$model->document->image->Pages_Count); $xml_field->setAttribute('name', 'Pages_Count'); $xml_image_row->appendChild($xml_field); $xml_row->appendChild($xml_field); /*end of images processing*/ $xml_row->appendChild($xml_dists); $xml_row->appendChild($xml_desc); $xml_row->appendChild($xml_backup_row); $xml_row->appendChild($xml_doc_row); $xml_row->appendChild($xml_image_row); $xml_doc->appendChild($xml_row); } $this->wrapper->appendChild($xml_doc); } } }