function saveFile($document, $portal = false)
 {
     global $sugar_config;
     $focus = new Document();
     if (!empty($document['id'])) {
         $focus->retrieve($document['id']);
     } else {
         return '-1';
     }
     if (!empty($document['file'])) {
         $decodedFile = base64_decode($document['file']);
         $this->upload_file->set_for_soap($document['filename'], $decodedFile);
         $ext_pos = strrpos($this->upload_file->stored_file_name, ".");
         $this->upload_file->file_ext = substr($this->upload_file->stored_file_name, $ext_pos + 1);
         if (in_array($this->upload_file->file_ext, $sugar_config['upload_badext'])) {
             $this->upload_file->stored_file_name .= ".txt";
             $this->upload_file->file_ext = "txt";
         }
         $revision = new DocumentRevision();
         $revision->filename = $this->upload_file->get_stored_file_name();
         $revision->file_mime_type = $this->upload_file->getMimeSoap($revision->filename);
         $revision->file_ext = $this->upload_file->file_ext;
         //$revision->document_name = ;
         $revision->revision = $document['revision'];
         $revision->document_id = $document['id'];
         $revision->save();
         $focus->document_revision_id = $revision->id;
         $focus->save();
         $return_id = $revision->id;
         $this->upload_file->final_move($revision->id);
     } else {
         return '-1';
     }
     return $return_id;
 }
 public function testSaveAndRetrieve()
 {
     error_reporting(E_ERROR | E_PARSE);
     $documentRevision = new DocumentRevision();
     $documentRevision->document_id = '1';
     $documentRevision->doc_id = '1';
     $documentRevision->doc_type = 'text';
     $documentRevision->filename = 'test';
     $documentRevision->file_ext = 'ext';
     $documentRevision->save();
     //test for record ID to verify that record is saved
     $this->assertTrue(isset($documentRevision->id));
     $this->assertEquals(36, strlen($documentRevision->id));
     //test document retrieve method
     $docRev = $documentRevision->retrieve($documentRevision->id);
     $this->assertEquals('1', $docRev->document_id);
     $this->assertEquals('1', $docRev->doc_id);
     $this->assertEquals('text', $docRev->doc_type);
     $this->assertEquals('test', $docRev->filename);
     $this->assertEquals('ext', $docRev->file_ext);
     //mark the record as deleted and verify that this record cannot be retrieved anymore.
     $docRev->mark_deleted($docRev->id);
     $result = $docRev->retrieve($docRev->id);
     $this->assertEquals(null, $result);
 }
Esempio n. 3
0
 public function setUp()
 {
     SugarTestHelper::setUp('beanFiles');
     SugarTestHelper::setUp('beanList');
     SugarTestHelper::setUp('current_user');
     $this->relate_doc = new Document();
     $this->relate_doc->document_name = 'Relate doc';
     $this->relate_doc->save();
     $this->parent_doc = new Document();
     $this->parent_doc->document_name = 'Parent doc';
     $this->parent_doc->related_doc_id = $this->relate_doc->id;
     $this->parent_doc->save();
     $this->revision = new DocumentRevision();
     $this->revision->revision = 1;
     $this->revision->doc_id = $this->relate_doc->id;
     $this->revision->save();
 }
Esempio n. 4
0
 function save($check_notify = false)
 {
     if (empty($this->id) || $this->new_with_id) {
         if (!empty($this->uploadfile)) {
             $this->filename = $this->uploadfile;
             if (empty($this->id)) {
                 $this->id = create_guid();
                 $this->new_with_id = true;
             }
             $Revision = new DocumentRevision();
             //save revision.
             $Revision->change_log = translate('DEF_CREATE_LOG', 'Documents');
             $Revision->revision = $this->revision;
             $Revision->document_id = $this->id;
             $Revision->filename = $this->filename;
             $Revision->file_ext = $this->file_ext;
             $Revision->file_mime_type = $this->file_mime_type;
             $Revision->save();
             //Move file saved during populatefrompost to match the revision id rather than document id
             rename(UploadFile::get_url($this->filename, $this->id), UploadFile::get_url($this->filename, $Revision->id));
             //update document with latest revision id
             $this->process_save_dates = false;
             //make sure that conversion does not happen again.
             $this->document_revision_id = $Revision->id;
         }
         //set relationship field values if contract_id is passed (via subpanel create)
         if (!empty($_POST['contract_id'])) {
             $save_revision['document_revision_id'] = $this->document_revision_id;
             $this->load_relationship('contracts');
             $this->contracts->add($_POST['contract_id'], $save_revision);
         }
         if (isset($_POST['load_signed_id']) and !empty($_POST['load_signed_id'])) {
             $query = "update linked_documents set deleted=1 where id='" . $_POST['load_signed_id'] . "'";
             $this->db->query($query);
         }
     }
     return parent::save($check_notify);
 }
Esempio n. 5
0
 function save($check_notify = false)
 {
     if (empty($this->doc_type)) {
         $this->doc_type = 'Sugar';
     }
     if (empty($this->id) || $this->new_with_id) {
         if (empty($this->id)) {
             $this->id = create_guid();
             $this->new_with_id = true;
         }
         if (isset($_REQUEST) && isset($_REQUEST['duplicateSave']) && $_REQUEST['duplicateSave'] == true && isset($_REQUEST['filename_old_doctype'])) {
             $this->doc_type = $_REQUEST['filename_old_doctype'];
             $isDuplicate = true;
         } else {
             $isDuplicate = false;
         }
         $Revision = new DocumentRevision();
         //save revision.
         $Revision->in_workflow = true;
         $Revision->not_use_rel_in_req = true;
         $Revision->new_rel_id = $this->id;
         $Revision->new_rel_relname = 'Documents';
         $Revision->change_log = translate('DEF_CREATE_LOG', 'Documents');
         $Revision->revision = $this->revision;
         $Revision->document_id = $this->id;
         $Revision->filename = $this->filename;
         if (isset($this->file_ext)) {
             $Revision->file_ext = $this->file_ext;
         }
         if (isset($this->file_mime_type)) {
             $Revision->file_mime_type = $this->file_mime_type;
         }
         $Revision->doc_type = $this->doc_type;
         if (isset($this->doc_id)) {
             $Revision->doc_id = $this->doc_id;
         }
         if (isset($this->doc_url)) {
             $Revision->doc_url = $this->doc_url;
         }
         $Revision->id = create_guid();
         $Revision->new_with_id = true;
         $createRevision = false;
         //Move file saved during populatefrompost to match the revision id rather than document id
         if (!empty($_FILES['filename_file'])) {
             rename("upload://{$this->id}", "upload://{$Revision->id}");
             $createRevision = true;
         } else {
             if ($isDuplicate && (empty($this->doc_type) || $this->doc_type == 'Sugar')) {
                 // Looks like we need to duplicate a file, this is tricky
                 $oldDocument = new Document();
                 $oldDocument->retrieve($_REQUEST['duplicateId']);
                 $old_name = "upload://{$oldDocument->document_revision_id}";
                 $new_name = "upload://{$Revision->id}";
                 $GLOBALS['log']->debug("Attempting to copy from {$old_name} to {$new_name}");
                 copy($old_name, $new_name);
                 $createRevision = true;
             }
         }
         // For external documents, we just need to make sure we have a doc_id
         if (!empty($this->doc_id) && $this->doc_type != 'Sugar') {
             $createRevision = true;
         }
         if ($createRevision) {
             $Revision->save();
             //update document with latest revision id
             $this->process_save_dates = false;
             //make sure that conversion does not happen again.
             $this->document_revision_id = $Revision->id;
         }
         //set relationship field values if contract_id is passed (via subpanel create)
         if (!empty($_POST['contract_id'])) {
             $save_revision['document_revision_id'] = $this->document_revision_id;
             $this->load_relationship('contracts');
             $this->contracts->add($_POST['contract_id'], $save_revision);
         }
         if (isset($_POST['load_signed_id']) and !empty($_POST['load_signed_id'])) {
             $query = "update linked_documents set deleted=1 where id='" . $_POST['load_signed_id'] . "'";
             $this->db->query($query);
         }
     }
     return parent::save($check_notify);
 }
 private function createNewRevision($productCatalog, &$document)
 {
     global $timedate;
     global $app_list_strings;
     $productCatalogFilename = $this->categoryPagesToPdf($productCatalog);
     if (!$productCatalogFilename) {
         $GLOBALS['log']->fatal('OQC: Failed to create new catalog revision');
         return false;
     }
     $revision = new DocumentRevision();
     if (!$revision->retrieve($document->document_revision_id)) {
         $revision->document_id = $document->id;
         $revision->revision = 0;
     }
     $revision->revision = $revision->revision + 1;
     if (DEBUG_PDF_CREATION) {
         $revision->file_mime_type = 'text/plain';
         $revision->file_ext = 'log';
         $revision->filename = $app_list_strings['oqc']['pdf']['common']['filenamePrefixCatalog'] . "_" . date("Ymd") . "_{$revision->revision}.log";
     } else {
         $revision->file_mime_type = 'application/pdf';
         $revision->file_ext = 'pdf';
         $revision->filename = $app_list_strings['oqc']['pdf']['common']['filenamePrefixCatalog'] . "_" . date("Ymd") . "_{$revision->revision}.pdf";
     }
     // set fields to null in order to correctly generate new values
     $revision->date_entered = '';
     $revision->date_modified = '';
     //$revision->filename = $app_list_strings['oqc']['pdf']['common']['filenamePrefixCatalog'] . "_" . date("Ymd") . "_{$revision->revision}.pdf";
     $revision->id = '';
     $revision->save();
     rename($productCatalogFilename, getDocumentFilename($revision->id));
     $document->document_revision_id = $revision->id;
     return true;
 }
Esempio n. 7
0
 $kbdoc->status_id = 'Published';
 $kbdoc->team_id = 1;
 $kbdoc->assigned_user_id = 'seed_will_id';
 $kbdoc->active_date = $v['start_date'];
 $kbdoc->exp_date = $v['exp_date'];
 $kbdoc->is_external_article = 1;
 $kbdoc->save();
 $kbdocRevision = new KBDocumentRevision();
 $kbdocRevision->change_log = translate('DEF_CREATE_LOG', 'KBDocuments');
 $kbdocRevision->revision = '1';
 $kbdocRevision->kbdocument_id = $kbdoc->id;
 $kbdocRevision->latest = true;
 $kbdocRevision->save();
 $docRevision = new DocumentRevision();
 $docRevision->filename = $kbdoc->kbdocument_name;
 $docRevision->save();
 $kbdocContent = new KBContent();
 $kbdocContent->document_revision_id = $docRevision->id;
 $kbdocContent->team_id = $kbdoc->team_id;
 $kbdocContent->kbdocument_body = $v['body'];
 $kbdocContent->save();
 $kbdocRevision->kbcontent_id = $kbdocContent->id;
 $kbdocRevision->document_revision_id = $docRevision->id;
 $kbdocRevision->save();
 $kbdoc->kbdocument_revision_id = $kbdocRevision->id;
 $kbdoc->save();
 foreach ($v['tags'] as $tag) {
     $kbdocKBTag = new KBDocumentKBTag();
     $kbdocKBTag->kbtag_id = array_search($tag, $kbtags_hash);
     $kbdocKBTag->kbdocument_id = $kbdoc->id;
     $kbdocKBTag->team_id = $kbdoc->team_id;
Esempio n. 8
0
function gen_prosmotr()
{
    require_once 'custom/include/PHPWord/PHPWord.php';
    $bean = loadBean('Meetings');
    $bean->retrieve($_REQUEST['record']);
    $user = loadBean('Users');
    // получаем реелтора
    $user->retrieve($bean->assigned_user_id);
    $client = loadBean($bean->parent_type);
    // получаем клиента
    $client->retrieve($bean->parent_id);
    $realty = loadBean('Realty');
    // получаем объект
    $realty->retrieve($bean->realty_id);
    /*$client = loadBean('Contacts');// получаем клиента
    	$client->retrieve($bean->contact_id);*/
    $doc = new Document();
    // создаем запись в документах и описание файла к нему
    $doc->id = create_guid();
    $doc->new_with_id = true;
    $doc->document_name = "Просмотровый лист по показу {$bean->name}";
    $doc->status_id = "Active";
    $doc_rev = new DocumentRevision();
    $doc_rev->filename = "просмотровый лист - {$bean->name}.docx";
    $doc_rev->file_ext = "docx";
    $doc_rev->file_mime_type = "application/octet-stream";
    $doc_rev->revision = "1";
    $doc_rev->document_id = $doc->id;
    $doc_rev->save();
    $doc->document_revision_id = $doc_rev->id;
    $doc->save();
    /*$client->load_relationship('documents'); // цепляем документ к клиенту
    	$client->documents->add($doc->id,array());*/
    //Set table cells style
    $cellStyle = array('borderTopSize' => 1, 'borderTopColor' => '000000', 'borderLeftSize' => 1, 'borderLeftColor' => '000000', 'borderRightSize' => 1, 'borderRightColor' => '000000', 'borderBottomSize' => 1, 'borderBottomColor' => '000000');
    // New Word Document
    $PHPWord = new PHPWord();
    // New portrait section
    $section = $PHPWord->createSection();
    //Add title
    $section->addText('Просмотровый лист', array('size' => 18, 'bold' => true), array('align' => 'center'));
    // Add table
    $table = $section->addTable();
    $table->addRow();
    // Add Cell
    $table->addCell(1750, $cellStyle)->addText("Дата и время");
    $table->addCell(1750, $cellStyle)->addText("Адрес");
    $table->addCell(1750, $cellStyle)->addText("Описание");
    $table->addCell(1750, $cellStyle)->addText("Объект");
    $table->addCell(1750, $cellStyle)->addText("Клиент");
    $table->addCell(1750, $cellStyle)->addText("Риэлтор");
    $table->addRow();
    $table->addCell(1750, $cellStyle)->addText($bean->date_start);
    $table->addCell(1750, $cellStyle)->addText($bean->location);
    $table->addCell(1750, $cellStyle)->addText($bean->description);
    $table->addCell(1750, $cellStyle)->addText($realty->name);
    $table->addCell(1750, $cellStyle)->addText($client->first_name . ' ' . $client->last_name);
    $table->addCell(1750, $cellStyle)->addText($user->first_name . ' ' . $user->last_name);
    // Save File
    $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
    $objWriter->save("upload/{$doc_rev->id}");
    echo "<h1>Просмотровый лист создан</h1><br/>\n\t\t<a href='index.php?entryPoint=download&id={$doc_rev->id}&type=Documents'>Скачать файл</a><br/>\n\t\t<a href='index.php?module=Documents&action=DetailView&record={$doc->id}'>Перейти в документ</a><hr/>\n\t\t<a href='index.php?module=Meetings&action=DetailView&record={$_REQUEST['record']}'>Вернуться в карточку показа</a>\n\t\t";
}
Esempio n. 9
0
        $Revision->filename = $old_revision->filename;
        $Revision->file_mime_type = $old_revision->file_mime_type;
        $Revision->file_ext = $old_revision->file_ext;
    }
}
if (isset($Document->id)) {
    //save document
    $return_id = $Document->save();
} else {
    //save document
    $return_id = $Document->save();
    //save revision.
    $Revision->change_log = $mod_strings['DEF_CREATE_LOG'];
    $Revision->revision = $Document->revision;
    $Revision->document_id = $Document->id;
    $Revision->save();
    //update document with latest revision id
    $Document->process_save_dates = false;
    //make sure that conversion does not happen again.
    $Document->document_revision_id = $Revision->id;
    $Document->save();
    //set relationship field values if parent_id is passed.
    //this happens only in the new mode because document edit view
    //does not have a way to change the parent.
    //also we want to stamp the document revision only once.
    if (!empty($_POST['parent_id']) && !empty($_POST['parent_type'])) {
        $save_revision['document_revision_id'] = $Document->document_revision_id;
        switch (strtolower($_POST['parent_type'])) {
            case "contracts":
                $Document->load_relationship('contracts');
                $Document->contracts->add($_POST['parent_id'], $save_revision);
function createNewRevision($contract, &$document)
{
    // TODO add some logic to select different templates for Contracts/Quotes/Additions
    //1. Get template paths. 2. get contract/services variables.3 Proceed to fetching partial templates. 4. Proceed to fetching main template and creating pdf file.
    if ($contract->oqc_template == null) {
        $beanName = substr(trim($contract->object_name), 4);
        $templatePaths = getTemplatesPath($beanName);
    } else {
        $templatePaths = getTemplatesPath($contract->oqc_template);
    }
    $pdfData = getPdfVariables($contract);
    $segmentFilenames = array();
    $segmentFilenames['titlePage'] = titlePageToLatex($pdfData, $templatePaths);
    $segmentFilenames['textBlocks'] = textBlocksToLatex($contract, $pdfData, $templatePaths);
    //if ($segmentFilenames['textBlocks'] == null ) {
    //$GLOBALS['log']->fatal('OQC: TextBloks are empty or You do not have html2tex convertor installed!');
    //return null;
    //	}
    $segmentFilenames['services'] = servicesToLatex($pdfData, $templatePaths);
    $contractFilename = null;
    $contractFilename = templateToPdf($templatePaths["CONTRACT_TEMPLATE"], $segmentFilenames);
    if ($contractFilename == null) {
        //$GLOBALS['log']->fatal('OQC: You likely do not have PDFLATEX package installed!');
        return null;
    }
    if (DEBUG_PDF_CREATION) {
        $contractWithAttachmentsFilename = $contractFilename;
        // Add information about pdftk to the log file
        $returnTestValue = null;
        $outputArray = array();
        $returnTestValue = execute(PDFTK, '--version', $outputArray);
        $GLOBALS['log']->error('createNewRevision: pdftk $returnTestValue is: ' . $returnTestValue);
        if (!empty($outputArray)) {
            $addString = "\n\rpdftk --version output: \n\r" . implode("\n", $outputArray);
        } else {
            $addString = "\n\rpdftk --version output: null \nreturn value: {$returnTestValue}";
        }
        sugar_file_put_contents($contractWithAttachmentsFilename, $addString, FILE_APPEND | LOCK_EX);
    } else {
        $contractWithAttachmentsFilename = attachDocuments($contract, $contractFilename);
        if ($contractWithAttachmentsFilename == null) {
            $GLOBALS['log']->fatal('OQC: You likely do not have PDFTK package installed!');
            $contractWithAttachmentsFilename = $contractFilename;
        }
    }
    // unlink segmentFilenames
    foreach ($segmentFilenames as $filename) {
        unlink($filename);
    }
    $revision = new DocumentRevision();
    $revision->document_id = $document->id;
    $revision->revision = $contract->version;
    //1.7.6 Make document version the same as seed
    if (DEBUG_PDF_CREATION) {
        $revision->file_mime_type = 'text/plain';
        $revision->file_ext = 'log';
        $revision->filename = $document->category_id . '_' . $contract->svnumber . '_v' . $revision->revision . '.log';
    } else {
        $revision->file_mime_type = 'application/pdf';
        $revision->file_ext = 'pdf';
        $revision->filename = $document->category_id . '_' . $contract->svnumber . '_v' . $revision->revision . '.pdf';
    }
    $revision->save();
    rename($contractWithAttachmentsFilename, getDocumentFilename($revision->id));
    $document->document_revision_id = $revision->id;
    //$document->save();
    return true;
}