2014-03-24 17:03:13 -04:00
< ? php
2014-04-02 16:51:28 -04:00
namespace ProcessMaker\BusinessModel\Cases ;
2014-03-24 17:03:13 -04:00
class OutputDocument
{
/**
* Get data of Cases OutputDocument
*
2014-03-25 16:43:50 -04:00
* @ param string $applicationUid
2014-03-24 17:03:13 -04:00
* @ param string $userUid
*
* return array Return an array with data of an OutputDocument
*/
2014-03-25 16:43:50 -04:00
public function getCasesOutputDocuments ( $applicationUid , $userUid )
2014-03-24 17:03:13 -04:00
{
try {
\G :: LoadClass ( 'case' );
$oCase = new \Cases ();
2014-03-25 16:43:50 -04:00
$fields = $oCase -> loadCase ( $applicationUid );
2014-03-24 17:03:13 -04:00
$sProcessUID = $fields [ 'PRO_UID' ];
$sTaskUID = '' ;
2014-04-02 16:51:28 -04:00
$oCriteria = new \ProcessMaker\BusinessModel\Cases ();
2014-03-25 16:43:50 -04:00
$oCriteria -> getAllGeneratedDocumentsCriteria ( $sProcessUID , $applicationUid , $sTaskUID , $userUid );
2014-03-24 17:03:13 -04:00
$result = array ();
global $_DBArray ;
foreach ( $_DBArray [ 'outputDocuments' ] as $key => $row ) {
if ( isset ( $row [ 'DOC_VERSION' ] )) {
$docrow = array ();
$docrow [ 'app_doc_uid' ] = $row [ 'APP_DOC_UID' ];
$docrow [ 'app_doc_filename' ] = $row [ 'DOWNLOAD_FILE' ];
$docrow [ 'doc_uid' ] = $row [ 'DOC_UID' ];
$docrow [ 'app_doc_version' ] = $row [ 'DOC_VERSION' ];
$docrow [ 'app_doc_create_date' ] = $row [ 'CREATE_DATE' ];
$docrow [ 'app_doc_create_user' ] = $row [ 'CREATED_BY' ];
$docrow [ 'app_doc_type' ] = $row [ 'TYPE' ];
$docrow [ 'app_doc_index' ] = $row [ 'APP_DOC_INDEX' ];
$docrow [ 'app_doc_link' ] = 'cases/' . $row [ 'DOWNLOAD_LINK' ];
$result [] = $docrow ;
}
}
return $result ;
} catch ( \Exception $e ) {
throw $e ;
}
}
/**
* Get data of Cases OutputDocument
*
2014-03-25 16:43:50 -04:00
* @ param string $applicationUid
2014-03-24 17:03:13 -04:00
* @ param string $userUid
2014-03-26 11:39:59 -04:00
* @ param string $applicationDocumentUid
2014-03-24 17:03:13 -04:00
*
2014-03-26 17:03:49 -04:00
* return object Return an object with data of an OutputDocument
2014-03-24 17:03:13 -04:00
*/
2014-03-26 11:39:59 -04:00
public function getCasesOutputDocument ( $applicationUid , $userUid , $applicationDocumentUid )
2014-03-24 17:03:13 -04:00
{
try {
2014-03-25 16:43:50 -04:00
$sApplicationUID = $applicationUid ;
2014-03-24 17:03:13 -04:00
$sUserUID = $userUid ;
\G :: LoadClass ( 'case' );
$oCase = new \Cases ();
$fields = $oCase -> loadCase ( $sApplicationUID );
$sProcessUID = $fields [ 'PRO_UID' ];
$sTaskUID = '' ;
2014-04-02 16:51:28 -04:00
$oCaseRest = new \ProcessMaker\BusinessModel\Cases ();
2014-03-24 17:03:13 -04:00
$oCaseRest -> getAllGeneratedDocumentsCriteria ( $sProcessUID , $sApplicationUID , $sTaskUID , $sUserUID );
$result = array ();
global $_DBArray ;
foreach ( $_DBArray [ 'outputDocuments' ] as $key => $row ) {
if ( isset ( $row [ 'DOC_VERSION' ] )) {
$docrow = array ();
$docrow [ 'app_doc_uid' ] = $row [ 'APP_DOC_UID' ];
$docrow [ 'app_doc_filename' ] = $row [ 'DOWNLOAD_FILE' ];
$docrow [ 'doc_uid' ] = $row [ 'DOC_UID' ];
$docrow [ 'app_doc_version' ] = $row [ 'DOC_VERSION' ];
$docrow [ 'app_doc_create_date' ] = $row [ 'CREATE_DATE' ];
$docrow [ 'app_doc_create_user' ] = $row [ 'CREATED_BY' ];
$docrow [ 'app_doc_type' ] = $row [ 'TYPE' ];
$docrow [ 'app_doc_index' ] = $row [ 'APP_DOC_INDEX' ];
$docrow [ 'app_doc_link' ] = 'cases/' . $row [ 'DOWNLOAD_LINK' ];
2014-03-26 11:39:59 -04:00
if ( $docrow [ 'app_doc_uid' ] == $applicationDocumentUid ) {
2014-04-22 10:37:10 -04:00
$oAppDocument = \AppDocumentPeer :: retrieveByPK ( $applicationDocumentUid , $row [ 'DOC_VERSION' ] );
if ( is_null ( $oAppDocument )) {
throw ( new \Exception ( 'This output document with id: ' . $applicationDocumentUid . ' doesn\'t exist!' ));
}
2014-03-24 17:03:13 -04:00
$result = $docrow ;
}
}
}
2014-03-26 17:03:49 -04:00
$oResponse = json_decode ( json_encode ( $result ), false );
return $oResponse ;
2014-03-24 17:03:13 -04:00
} catch ( \Exception $e ) {
throw $e ;
}
}
/**
* Delete OutputDocument
*
2014-03-26 11:39:59 -04:00
* @ param string $applicationDocumentUid
2014-03-24 17:03:13 -04:00
*
*/
2014-03-26 11:39:59 -04:00
public function removeOutputDocument ( $applicationDocumentUid )
2014-03-24 17:03:13 -04:00
{
try {
2014-03-26 11:39:59 -04:00
$oAppDocument = \AppDocumentPeer :: retrieveByPK ( $applicationDocumentUid , 1 );
2014-03-24 17:03:13 -04:00
if ( is_null ( $oAppDocument ) || $oAppDocument -> getAppDocStatus () == 'DELETED' ) {
2014-03-26 17:08:19 -04:00
throw ( new \Exception ( 'This output document with id: ' . $applicationDocumentUid . ' doesn\'t exist!' ));
2014-03-24 17:03:13 -04:00
}
\G :: LoadClass ( 'wsBase' );
$ws = new \wsBase ();
2014-03-26 11:39:59 -04:00
$ws -> removeDocument ( $applicationDocumentUid );
2014-03-24 17:03:13 -04:00
} catch ( \Exception $e ) {
throw $e ;
}
}
/**
* Get data of Cases OutputDocument
*
2014-03-25 16:43:50 -04:00
* @ param string $applicationUid
2014-03-24 17:03:13 -04:00
* @ param string $outputDocumentUid
* @ param string $userUid
*
2014-03-26 17:03:49 -04:00
* return object Return an object with data of an OutputDocument
2014-03-24 17:03:13 -04:00
*/
2014-03-25 16:43:50 -04:00
public function addCasesOutputDocument ( $applicationUid , $outputDocumentUid , $userUid )
2014-03-24 17:03:13 -04:00
{
try {
2014-03-26 11:39:59 -04:00
$sApplication = $applicationUid ;
$index = \AppDelegation :: getCurrentIndex ( $applicationUid );
$sUserLogged = $userUid ;
$outputID = $outputDocumentUid ;
$g = new \G ();
$g -> sessionVarSave ();
\G :: LoadClass ( 'case' );
$oCase = new \Cases ();
$oCase -> thisIsTheCurrentUser ( $sApplication , $index , $sUserLogged , '' , 'casesListExtJs' );
//require_once 'classes/model/OutputDocument.php';
$oOutputDocument = new \OutputDocument ();
$aOD = $oOutputDocument -> load ( $outputID );
$Fields = $oCase -> loadCase ( $sApplication );
$sFilename = preg_replace ( '[^A-Za-z0-9_]' , '_' , \G :: replaceDataField ( $aOD [ 'OUT_DOC_FILENAME' ], $Fields [ 'APP_DATA' ] ) );
require_once ( PATH_TRUNK . " workflow " . PATH_SEP . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppFolder.php " );
require_once ( PATH_TRUNK . " workflow " . PATH_SEP . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDocument.php " );
//Get the Custom Folder ID (create if necessary)
$oFolder = new \AppFolder ();
$folderId = $oFolder -> createFromPath ( $aOD [ 'OUT_DOC_DESTINATION_PATH' ], $sApplication );
//Tags
$fileTags = $oFolder -> parseTags ( $aOD [ 'OUT_DOC_TAGS' ], $sApplication );
//Get last Document Version and apply versioning if is enabled
$oAppDocument = new \AppDocument ();
$lastDocVersion = $oAppDocument -> getLastDocVersion ( $outputID , $sApplication );
$oCriteria = new \Criteria ( 'workflow' );
$oCriteria -> add ( \AppDocumentPeer :: APP_UID , $sApplication );
$oCriteria -> add ( \AppDocumentPeer :: DOC_UID , $outputID );
$oCriteria -> add ( \AppDocumentPeer :: DOC_VERSION , $lastDocVersion );
$oCriteria -> add ( \AppDocumentPeer :: APP_DOC_TYPE , 'OUTPUT' );
$oDataset = \AppDocumentPeer :: doSelectRS ( $oCriteria );
$oDataset -> setFetchmode ( \ResultSet :: FETCHMODE_ASSOC );
$oDataset -> next ();
if (( $aOD [ 'OUT_DOC_VERSIONING' ]) && ( $lastDocVersion != 0 )) {
//Create new Version of current output
$lastDocVersion ++ ;
if ( $aRow = $oDataset -> getRow ()) {
$aFields = array ( 'APP_DOC_UID' => $aRow [ 'APP_DOC_UID' ], 'APP_UID' => $sApplication , 'DEL_INDEX' => $index , 'DOC_UID' => $outputID , 'DOC_VERSION' => $lastDocVersion + 1 , 'USR_UID' => $sUserLogged , 'APP_DOC_TYPE' => 'OUTPUT' , 'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ), 'APP_DOC_FILENAME' => $sFilename , 'FOLDER_UID' => $folderId , 'APP_DOC_TAGS' => $fileTags );
$oAppDocument = new \AppDocument ();
$oAppDocument -> create ( $aFields );
$sDocUID = $aRow [ 'APP_DOC_UID' ];
}
} else {
////No versioning so Update a current Output or Create new if no exist
if ( $aRow = $oDataset -> getRow ()) {
//Update
$aFields = array ( 'APP_DOC_UID' => $aRow [ 'APP_DOC_UID' ], 'APP_UID' => $sApplication , 'DEL_INDEX' => $index , 'DOC_UID' => $outputID , 'DOC_VERSION' => $lastDocVersion , 'USR_UID' => $sUserLogged , 'APP_DOC_TYPE' => 'OUTPUT' , 'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ), 'APP_DOC_FILENAME' => $sFilename , 'FOLDER_UID' => $folderId , 'APP_DOC_TAGS' => $fileTags
);
$oAppDocument = new \AppDocument ();
$oAppDocument -> update ( $aFields );
$sDocUID = $aRow [ 'APP_DOC_UID' ];
} else {
//we are creating the appdocument row
//create
if ( $lastDocVersion == 0 ) {
$lastDocVersion ++ ;
}
$aFields = array ( 'APP_UID' => $sApplication , 'DEL_INDEX' => $index , 'DOC_UID' => $outputID , 'DOC_VERSION' => $lastDocVersion , 'USR_UID' => $sUserLogged , 'APP_DOC_TYPE' => 'OUTPUT' , 'APP_DOC_CREATE_DATE' => date ( 'Y-m-d H:i:s' ), 'APP_DOC_FILENAME' => $sFilename , 'FOLDER_UID' => $folderId , 'APP_DOC_TAGS' => $fileTags
);
$oAppDocument = new \AppDocument ();
$aFields [ 'APP_DOC_UID' ] = $sDocUID = $oAppDocument -> create ( $aFields );
}
}
$sFilename = $aFields [ 'APP_DOC_UID' ] . " _ " . $lastDocVersion ;
$pathOutput = PATH_DOCUMENT . \G :: getPathFromUID ( $sApplication ) . PATH_SEP . 'outdocs' . PATH_SEP ; //G::pr($sFilename);die;
\G :: mk_dir ( $pathOutput );
$aProperties = array ();
if ( ! isset ( $aOD [ 'OUT_DOC_MEDIA' ] )) {
$aOD [ 'OUT_DOC_MEDIA' ] = 'Letter' ;
}
if ( ! isset ( $aOD [ 'OUT_DOC_LEFT_MARGIN' ] )) {
$aOD [ 'OUT_DOC_LEFT_MARGIN' ] = '15' ;
}
if ( ! isset ( $aOD [ 'OUT_DOC_RIGHT_MARGIN' ] )) {
$aOD [ 'OUT_DOC_RIGHT_MARGIN' ] = '15' ;
}
if ( ! isset ( $aOD [ 'OUT_DOC_TOP_MARGIN' ] )) {
$aOD [ 'OUT_DOC_TOP_MARGIN' ] = '15' ;
}
if ( ! isset ( $aOD [ 'OUT_DOC_BOTTOM_MARGIN' ] )) {
$aOD [ 'OUT_DOC_BOTTOM_MARGIN' ] = '15' ;
}
$aProperties [ 'media' ] = $aOD [ 'OUT_DOC_MEDIA' ];
$aProperties [ 'margins' ] = array ( 'left' => $aOD [ 'OUT_DOC_LEFT_MARGIN' ], 'right' => $aOD [ 'OUT_DOC_RIGHT_MARGIN' ], 'top' => $aOD [ 'OUT_DOC_TOP_MARGIN' ], 'bottom' => $aOD [ 'OUT_DOC_BOTTOM_MARGIN' ]
);
if ( isset ( $aOD [ 'OUT_DOC_REPORT_GENERATOR' ])) {
$aProperties [ 'report_generator' ] = $aOD [ 'OUT_DOC_REPORT_GENERATOR' ];
}
$this -> generate ( $outputID , $Fields [ 'APP_DATA' ], $pathOutput , $sFilename , $aOD [ 'OUT_DOC_TEMPLATE' ], ( boolean ) $aOD [ 'OUT_DOC_LANDSCAPE' ], $aOD [ 'OUT_DOC_GENERATE' ], $aProperties , $applicationUid );
//Plugin Hook PM_UPLOAD_DOCUMENT for upload document
//G::LoadClass('plugin');
$oPluginRegistry = & \PMPluginRegistry :: getSingleton ();
if ( $oPluginRegistry -> existsTrigger ( PM_UPLOAD_DOCUMENT ) && class_exists ( 'uploadDocumentData' )) {
$triggerDetail = $oPluginRegistry -> getTriggerInfo ( PM_UPLOAD_DOCUMENT );
$aFields [ 'APP_DOC_PLUGIN' ] = $triggerDetail -> sNamespace ;
$oAppDocument1 = new \AppDocument ();
$oAppDocument1 -> update ( $aFields );
$sPathName = PATH_DOCUMENT . \G :: getPathFromUID ( $sApplication ) . PATH_SEP ;
$oData [ 'APP_UID' ] = $sApplication ;
$oData [ 'ATTACHMENT_FOLDER' ] = true ;
switch ( $aOD [ 'OUT_DOC_GENERATE' ]) {
case " BOTH " :
$documentData = new \uploadDocumentData ( $sApplication , $sUserLogged , $pathOutput . $sFilename . '.pdf' , $sFilename . '.pdf' , $sDocUID , $oAppDocument -> getDocVersion () );
$documentData -> sFileType = " PDF " ;
$documentData -> bUseOutputFolder = true ;
$uploadReturn = $oPluginRegistry -> executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData );
if ( $uploadReturn ) {
//Only delete if the file was saved correctly
unlink ( $pathOutput . $sFilename . '.pdf' );
}
$documentData = new \uploadDocumentData ( $sApplication , $sUserLogged , $pathOutput . $sFilename . '.doc' , $sFilename . '.doc' , $sDocUID , $oAppDocument -> getDocVersion () );
$documentData -> sFileType = " DOC " ;
$documentData -> bUseOutputFolder = true ;
$uploadReturn = $oPluginRegistry -> executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData );
if ( $uploadReturn ) {
//Only delete if the file was saved correctly
unlink ( $pathOutput . $sFilename . '.doc' );
}
break ;
case " PDF " :
$documentData = new \uploadDocumentData ( $sApplication , $sUserLogged , $pathOutput . $sFilename . '.pdf' , $sFilename . '.pdf' , $sDocUID , $oAppDocument -> getDocVersion () );
$documentData -> sFileType = " PDF " ;
$documentData -> bUseOutputFolder = true ;
$uploadReturn = $oPluginRegistry -> executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData );
if ( $uploadReturn ) {
//Only delete if the file was saved correctly
unlink ( $pathOutput . $sFilename . '.pdf' );
}
break ;
case " DOC " :
$documentData = new \uploadDocumentData ( $sApplication , $sUserLogged , $pathOutput . $sFilename . '.doc' , $sFilename . '.doc' , $sDocUID , $oAppDocument -> getDocVersion () );
$documentData -> sFileType = " DOC " ;
$documentData -> bUseOutputFolder = true ;
$uploadReturn = $oPluginRegistry -> executeTriggers ( PM_UPLOAD_DOCUMENT , $documentData );
if ( $uploadReturn ) {
//Only delete if the file was saved correctly
unlink ( $pathOutput . $sFilename . '.doc' );
}
break ;
}
}
$g -> sessionVarRestore ();
2014-04-22 10:37:10 -04:00
$oAppDocument = \AppDocumentPeer :: retrieveByPK ( $aFields [ 'APP_DOC_UID' ], $lastDocVersion );
if ( $oAppDocument -> getAppDocStatus () == 'DELETED' ) {
$oAppDocument -> setAppDocStatus ( 'ACTIVE' );
$oAppDocument -> save ();
}
2014-04-21 11:48:27 -04:00
$response = $this -> getCasesOutputDocument ( $applicationUid , $userUid , $aFields [ 'APP_DOC_UID' ]);
2014-04-01 16:24:45 -04:00
return $response ;
2014-03-24 17:03:13 -04:00
} catch ( \Exception $e ) {
throw $e ;
}
}
2014-03-26 11:39:59 -04:00
/*
* Generate the output document
* @ param string $sUID
* @ param array $aFields
* @ param string $sPath
* @ return variant
*/
public function generate ( $sUID , $aFields , $sPath , $sFilename , $sContent , $sLandscape = false , $sTypeDocToGener = 'BOTH' , $aProperties = array (), $sApplication )
{
if (( $sUID != '' ) && is_array ( $aFields ) && ( $sPath != '' )) {
$sContent = \G :: replaceDataGridField ( $sContent , $aFields );
\G :: verifyPath ( $sPath , true );
//Start - Create .doc
$oFile = fopen ( $sPath . $sFilename . '.doc' , 'wb' );
$size = array ();
$size [ " Letter " ] = " 216mm 279mm " ;
$size [ " Legal " ] = " 216mm 357mm " ;
$size [ " Executive " ] = " 184mm 267mm " ;
$size [ " B5 " ] = " 182mm 257mm " ;
$size [ " Folio " ] = " 216mm 330mm " ;
$size [ " A0Oversize " ] = " 882mm 1247mm " ;
$size [ " A0 " ] = " 841mm 1189mm " ;
$size [ " A1 " ] = " 594mm 841mm " ;
$size [ " A2 " ] = " 420mm 594mm " ;
$size [ " A3 " ] = " 297mm 420mm " ;
$size [ " A4 " ] = " 210mm 297mm " ;
$size [ " A5 " ] = " 148mm 210mm " ;
$size [ " A6 " ] = " 105mm 148mm " ;
$size [ " A7 " ] = " 74mm 105mm " ;
$size [ " A8 " ] = " 52mm 74mm " ;
$size [ " A9 " ] = " 37mm 52mm " ;
$size [ " A10 " ] = " 26mm 37mm " ;
$size [ " Screenshot640 " ] = " 640mm 480mm " ;
$size [ " Screenshot800 " ] = " 800mm 600mm " ;
$size [ " Screenshot1024 " ] = " 1024mm 768mm " ;
$sizeLandscape [ " Letter " ] = " 279mm 216mm " ;
$sizeLandscape [ " Legal " ] = " 357mm 216mm " ;
$sizeLandscape [ " Executive " ] = " 267mm 184mm " ;
$sizeLandscape [ " B5 " ] = " 257mm 182mm " ;
$sizeLandscape [ " Folio " ] = " 330mm 216mm " ;
$sizeLandscape [ " A0Oversize " ] = " 1247mm 882mm " ;
$sizeLandscape [ " A0 " ] = " 1189mm 841mm " ;
$sizeLandscape [ " A1 " ] = " 841mm 594mm " ;
$sizeLandscape [ " A2 " ] = " 594mm 420mm " ;
$sizeLandscape [ " A3 " ] = " 420mm 297mm " ;
$sizeLandscape [ " A4 " ] = " 297mm 210mm " ;
$sizeLandscape [ " A5 " ] = " 210mm 148mm " ;
$sizeLandscape [ " A6 " ] = " 148mm 105mm " ;
$sizeLandscape [ " A7 " ] = " 105mm 74mm " ;
$sizeLandscape [ " A8 " ] = " 74mm 52mm " ;
$sizeLandscape [ " A9 " ] = " 52mm 37mm " ;
$sizeLandscape [ " A10 " ] = " 37mm 26mm " ;
$sizeLandscape [ " Screenshot640 " ] = " 480mm 640mm " ;
$sizeLandscape [ " Screenshot800 " ] = " 600mm 800mm " ;
$sizeLandscape [ " Screenshot1024 " ] = " 768mm 1024mm " ;
if ( ! isset ( $aProperties [ 'media' ])) {
$aProperties [ 'media' ] = 'Letter' ;
}
if ( $sLandscape ) {
$media = $sizeLandscape [ $aProperties [ 'media' ]];
} else {
$media = $size [ $aProperties [ 'media' ]];
}
$marginLeft = '15' ;
if ( isset ( $aProperties [ 'margins' ][ 'left' ])) {
$marginLeft = $aProperties [ 'margins' ][ 'left' ];
}
$marginRight = '15' ;
if ( isset ( $aProperties [ 'margins' ][ 'right' ])) {
$marginRight = $aProperties [ 'margins' ][ 'right' ];
}
$marginTop = '15' ;
if ( isset ( $aProperties [ 'margins' ][ 'top' ])) {
$marginTop = $aProperties [ 'margins' ][ 'top' ];
}
$marginBottom = '15' ;
if ( isset ( $aProperties [ 'margins' ][ 'bottom' ])) {
$marginBottom = $aProperties [ 'margins' ][ 'bottom' ];
}
fwrite ( $oFile , ' < html xmlns : v = " urn:schemas-microsoft-com:vml "
xmlns : o = " urn:schemas-microsoft-com:office:office "
xmlns : w = " urn:schemas-microsoft-com:office:word "
xmlns = " http://www.w3.org/TR/REC-html40 " >
< head >
< meta http - equiv = Content - Type content = " text/html; charset=utf-8 " >
< meta name = ProgId content = Word . Document >
< meta name = Generator content = " Microsoft Word 9 " >
< meta name = Originator content = " Microsoft Word 9 " >
<!-- [ if ! mso ] >
< style >
v\ :* { behavior : url ( #default#VML);}
o\ :* { behavior : url ( #default#VML);}
w\ :* { behavior : url ( #default#VML);}
. shape { behavior : url ( #default#VML);}
</ style >
<! [ endif ] -->
<!-- [ if gte mso 9 ] >< xml >
< w : WordDocument >
< w : View > Print </ w : View >
< w : DoNotHyphenateCaps />
< w : PunctuationKerning />
< w : DrawingGridHorizontalSpacing > 9.35 pt </ w : DrawingGridHorizontalSpacing >
< w : DrawingGridVerticalSpacing > 9.35 pt </ w : DrawingGridVerticalSpacing >
</ w : WordDocument >
</ xml ><! [ endif ] -->
< style >
<!--
@ page WordSection1
{ size : ' . $media . ' ;
margin - left : ' . $marginLeft . ' mm ;
margin - right : ' . $marginRight . ' mm ;
margin - bottom : ' . $marginBottom . ' mm ;
margin - top : ' . $marginTop . ' mm ;
mso - header - margin : 35.4 pt ;
mso - footer - margin : 35.4 pt ;
mso - paper - source : 0 ;}
div . WordSection1
{ page : WordSection1 ;}
-->
</ style >
</ head >
< body >
< div class = WordSection1 > ' );
fwrite ( $oFile , $sContent );
fwrite ( $oFile , " \n </div></body></html> \n \n " );
fclose ( $oFile );
/* End - Create .doc */
if ( $sTypeDocToGener == 'BOTH' || $sTypeDocToGener == 'PDF' ) {
$oFile = fopen ( $sPath . $sFilename . '.html' , 'wb' );
fwrite ( $oFile , $sContent );
fclose ( $oFile );
/* Start - Create .pdf */
if ( isset ( $aProperties [ 'report_generator' ])) {
switch ( $aProperties [ 'report_generator' ]) {
case 'TCPDF' :
$o = new \OutputDocument ();
2014-03-27 16:20:14 -04:00
if ( strlen ( $sContent ) == 0 ) {
libxml_use_internal_errors ( true );
$o -> generateTcpdf ( $sUID , $aFields , $sPath , $sFilename , ' ' , $sLandscape , $aProperties );
libxml_use_internal_errors ( false );
} else {
$o -> generateTcpdf ( $sUID , $aFields , $sPath , $sFilename , $sContent , $sLandscape , $aProperties );
}
2014-03-26 11:39:59 -04:00
break ;
case 'HTML2PDF' :
default :
$this -> generateHtml2ps_pdf ( $sUID , $aFields , $sPath , $sFilename , $sContent , $sLandscape , $aProperties , $sApplication );
break ;
}
} else {
$this -> generateHtml2ps_pdf ( $sUID , $aFields , $sPath , $sFilename , $sContent , $sLandscape , $aProperties );
}
}
//end if $sTypeDocToGener
/* End - Create .pdf */
} else {
return \PEAR :: raiseError (
null , G_ERROR_USER_UID , null , null , 'You tried to call to a generate method without send the Output Document UID, fields to use and the file path!' , 'G_Error' , true
);
}
}
2014-03-26 17:03:49 -04:00
/*
* Generate Html2ps_pdf
* @ param string $sUID
* @ param array $aFields
* @ param string $sPath
* @ param string $sApplication
* @ return variant
*/
2014-03-26 11:39:59 -04:00
public function generateHtml2ps_pdf ( $sUID , $aFields , $sPath , $sFilename , $sContent , $sLandscape = false , $aProperties = array (), $sApplication )
{
define ( " MAX_FREE_FRACTION " , 1 );
define ( 'PATH_OUTPUT_FILE_DIRECTORY' , PATH_HTML . 'files/' . $sApplication . '/outdocs/' );
\G :: verifyPath ( PATH_OUTPUT_FILE_DIRECTORY , true );
require_once ( PATH_THIRDPARTY . 'html2ps_pdf/config.inc.php' );
require_once ( PATH_THIRDPARTY . 'html2ps_pdf/pipeline.factory.class.php' );
parse_config_file ( PATH_THIRDPARTY . 'html2ps_pdf/html2ps.config' );
$GLOBALS [ 'g_config' ] = array (
'cssmedia' => 'screen' ,
'media' => 'Letter' ,
'scalepoints' => false ,
'renderimages' => true ,
'renderfields' => true ,
'renderforms' => false ,
'pslevel' => 3 ,
'renderlinks' => true ,
'pagewidth' => 800 ,
'landscape' => $sLandscape ,
'method' => 'fpdf' ,
'margins' => array ( 'left' => 15 , 'right' => 15 , 'top' => 15 , 'bottom' => 15 ,),
'encoding' => '' ,
'ps2pdf' => false ,
'compress' => true ,
'output' => 2 ,
'pdfversion' => '1.3' ,
'transparency_workaround' => false ,
'imagequality_workaround' => false ,
'draw_page_border' => isset ( $_REQUEST [ 'pageborder' ]),
'debugbox' => false ,
'html2xhtml' => true ,
'mode' => 'html' ,
'smartpagebreak' => true
);
$GLOBALS [ 'g_config' ] = array_merge ( $GLOBALS [ 'g_config' ], $aProperties );
$g_media = \Media :: predefined ( $GLOBALS [ 'g_config' ][ 'media' ]);
$g_media -> set_landscape ( $GLOBALS [ 'g_config' ][ 'landscape' ]);
$g_media -> set_margins ( $GLOBALS [ 'g_config' ][ 'margins' ]);
$g_media -> set_pixels ( $GLOBALS [ 'g_config' ][ 'pagewidth' ]);
if ( isset ( $GLOBALS [ 'g_config' ][ 'pdfSecurity' ])) {
if ( isset ( $GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'openPassword' ]) &&
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'openPassword' ] != " "
) {
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'openPassword' ] = G :: decrypt (
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'openPassword' ], $sUID
);
}
if ( isset ( $GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'ownerPassword' ]) &&
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'ownerPassword' ] != " "
) {
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'ownerPassword' ] = G :: decrypt (
$GLOBALS [ 'g_config' ][ 'pdfSecurity' ][ 'ownerPassword' ], $sUID
);
}
$g_media -> set_security ( $GLOBALS [ 'g_config' ][ 'pdfSecurity' ]);
2014-04-02 16:51:28 -04:00
require_once ( HTML2PS_DIR . 'pdf.fpdf.encryption.php' );
2014-03-26 11:39:59 -04:00
}
$pipeline = new \Pipeline ();
if ( extension_loaded ( 'curl' )) {
2014-04-02 16:51:28 -04:00
require_once ( HTML2PS_DIR . 'fetcher.url.curl.class.php' );
2014-03-26 11:39:59 -04:00
$pipeline -> fetchers = array ( new \FetcherURLCurl ());
if ( isset ( $proxy )) {
if ( $proxy != '' ) {
$pipeline -> fetchers [ 0 ] -> set_proxy ( $proxy );
}
}
} else {
2014-04-02 16:51:28 -04:00
require_once ( HTML2PS_DIR . 'fetcher.url.class.php' );
2014-03-26 11:39:59 -04:00
$pipeline -> fetchers [] = new \FetcherURL ();
}
$pipeline -> data_filters [] = new \DataFilterDoctype ();
$pipeline -> data_filters [] = new \DataFilterUTF8 ( $GLOBALS [ 'g_config' ][ 'encoding' ]);
if ( $GLOBALS [ 'g_config' ][ 'html2xhtml' ]) {
$pipeline -> data_filters [] = new \DataFilterHTML2XHTML ();
} else {
$pipeline -> data_filters [] = new \DataFilterXHTML2XHTML ();
}
$pipeline -> parser = new \ParserXHTML ();
$pipeline -> pre_tree_filters = array ();
$header_html = '' ;
$footer_html = '' ;
$filter = new \PreTreeFilterHeaderFooter ( $header_html , $footer_html );
$pipeline -> pre_tree_filters [] = $filter ;
if ( $GLOBALS [ 'g_config' ][ 'renderfields' ]) {
$pipeline -> pre_tree_filters [] = new \PreTreeFilterHTML2PSFields ();
}
if ( $GLOBALS [ 'g_config' ][ 'method' ] === 'ps' ) {
$pipeline -> layout_engine = new \LayoutEnginePS ();
} else {
$pipeline -> layout_engine = new \LayoutEngineDefault ();
}
$pipeline -> post_tree_filters = array ();
if ( $GLOBALS [ 'g_config' ][ 'pslevel' ] == 3 ) {
$image_encoder = new \PSL3ImageEncoderStream ();
} else {
$image_encoder = new \PSL2ImageEncoderStream ();
}
switch ( $GLOBALS [ 'g_config' ][ 'method' ]) {
case 'fastps' :
if ( $GLOBALS [ 'g_config' ][ 'pslevel' ] == 3 ) {
$pipeline -> output_driver = new \OutputDriverFastPS ( $image_encoder );
} else {
$pipeline -> output_driver = new \OutputDriverFastPSLevel2 ( $image_encoder );
}
break ;
case 'pdflib' :
$pipeline -> output_driver = new \OutputDriverPDFLIB16 ( $GLOBALS [ 'g_config' ][ 'pdfversion' ]);
break ;
case 'fpdf' :
$pipeline -> output_driver = new \OutputDriverFPDF ();
break ;
case 'png' :
$pipeline -> output_driver = new \OutputDriverPNG ();
break ;
case 'pcl' :
$pipeline -> output_driver = new \OutputDriverPCL ();
break ;
default :
die ( 'Unknown output method' );
}
if ( isset ( $GLOBALS [ 'g_config' ][ 'watermarkhtml' ])) {
$watermark_text = $GLOBALS [ 'g_config' ][ 'watermarkhtml' ];
} else {
$watermark_text = '' ;
}
$pipeline -> output_driver -> set_watermark ( $watermark_text );
if ( $watermark_text != '' ) {
$dispatcher = & $pipeline -> getDispatcher ();
}
if ( $GLOBALS [ 'g_config' ][ 'debugbox' ]) {
$pipeline -> output_driver -> set_debug_boxes ( true );
}
if ( $GLOBALS [ 'g_config' ][ 'draw_page_border' ]) {
$pipeline -> output_driver -> set_show_page_border ( true );
}
if ( $GLOBALS [ 'g_config' ][ 'ps2pdf' ]) {
$pipeline -> output_filters [] = new \OutputFilterPS2PDF ( $GLOBALS [ 'g_config' ][ 'pdfversion' ]);
}
if ( $GLOBALS [ 'g_config' ][ 'compress' ] && $GLOBALS [ 'g_config' ][ 'method' ] == 'fastps' ) {
$pipeline -> output_filters [] = new \OutputFilterGZip ();
}
if ( ! isset ( $GLOBALS [ 'g_config' ][ 'process_mode' ])) {
$GLOBALS [ 'g_config' ][ 'process_mode' ] = '' ;
}
if ( $GLOBALS [ 'g_config' ][ 'process_mode' ] == 'batch' ) {
$filename = 'batch' ;
} else {
$filename = $sFilename ;
}
switch ( $GLOBALS [ 'g_config' ][ 'output' ]) {
case 0 :
$pipeline -> destination = new \DestinationBrowser ( $filename );
break ;
case 1 :
$pipeline -> destination = new \DestinationDownload ( $filename );
break ;
case 2 :
$pipeline -> destination = new \DestinationFile ( $filename );
break ;
}
copy ( $sPath . $sFilename . '.html' , PATH_OUTPUT_FILE_DIRECTORY . $sFilename . '.html' );
try {
$status = $pipeline -> process ((( isset ( $_SERVER [ 'HTTPS' ])) && ( $_SERVER [ 'HTTPS' ] == 'on' ) ? 'https://' : 'http://' ) . $_SERVER [ 'HTTP_HOST' ] . '/files/' . $sApplication . '/outdocs/' . $sFilename . '.html' , $g_media );
copy ( PATH_OUTPUT_FILE_DIRECTORY . $sFilename . '.pdf' , $sPath . $sFilename . '.pdf' );
unlink ( PATH_OUTPUT_FILE_DIRECTORY . $sFilename . '.pdf' );
unlink ( PATH_OUTPUT_FILE_DIRECTORY . $sFilename . '.html' );
} catch ( \Exception $e ) {
if ( $e -> getMessage () == 'ID_OUTPUT_NOT_GENERATE' ) {
include_once 'classes/model/AppDocument.php' ;
$dataDocument = explode ( '_' , $sFilename );
if ( ! isset ( $dataDocument [ 1 ])) {
$dataDocument [ 1 ] = 1 ;
}
$oAppDocument = new \AppDocument ();
$oAppDocument -> remove ( $dataDocument [ 0 ], $dataDocument [ 1 ]);
\G :: SendTemporalMessage ( \G :: LoadTranslation ( 'ID_OUTPUT_NOT_GENERATE' ), 'Error' );
}
}
}
2014-03-24 17:03:13 -04:00
}
2014-04-22 11:11:03 -04:00