function getTextblocks($textblockIds, $idoffreetextblock, $view)
{
    global $app_list_strings;
    if (empty($textblockIds) && $view == 'DetailView') {
        return array();
    }
    $textblocks = array();
    if ($idoffreetextblock) {
        if (!in_array($idoffreetextblock, $textblockIds)) {
            $freetext = new oqc_EditedTextBlock();
            $freetext->retrieve($idoffreetextblock);
            $textblocks[] = $freetext;
        }
    }
    if (!empty($textblockIds)) {
        foreach ($textblockIds as $id) {
            $textblock = new oqc_Textblock();
            $editedTextblock = new oqc_EditedTextBlock();
            if ($textblock->retrieve($id)) {
                $textblocks[] = $textblock;
            } else {
                if ($editedTextblock->retrieve($id)) {
                    $textblocks[] = $editedTextblock;
                }
            }
        }
    } else {
        //	$GLOBALS['log']->error("creating empty textblock");
        $newTextblock = new oqc_EditedTextBlock();
        $newTextblock->id = create_guid();
        $newTextblock->name = $app_list_strings["oqc"]["Textblocks"]["freeText"];
        $newTextblock->description = '';
        $textblocks[0] = $newTextblock;
    }
    return $textblocks;
}
 protected function updateTextblockDescriptions()
 {
     global $sugar_version;
     $sequence = $_POST['textblockSequence'];
     $textblockIds = explode(' ', trim($sequence));
     foreach ($textblockIds as $textblockId) {
         $key = "description_{$textblockId}";
         $userEditedDescription = $_POST[$key];
         if ($userEditedDescription == '') {
             //$GLOBALS['log']->error('skipping texblock save- empty description');
             $sequence = trim(str_replace($textblockId, '', $sequence));
             //do not save if it is empty
             continue;
         }
         if ($originalTextblock = oqc_TextBlock::getFromId($textblockId)) {
             // it is a TextBlock instance
             // if the user changed the description copy the information from the TextBlock instance into a new instance of EditedTextBlock
             if ($originalTextblock->description != $userEditedDescription) {
                 $changes = array('field_name' => $originalTextblock->name, 'data_type' => 'text', 'before' => $originalTextblock->description, 'after' => $userEditedDescription);
                 if (floatval(substr($sugar_version, 0, 3)) > 6.3) {
                     $this->bean->db->save_audit_records($this->bean, $changes);
                 } else {
                     $this->bean->dbManager->helper->save_audit_records($this->bean, $changes);
                 }
                 $editedTextblock = new oqc_EditedTextBlock();
                 $editedTextblock->name = $originalTextblock->name;
                 $editedTextblock->textblock_id = $originalTextblock->id;
                 $editedTextblock->description = $userEditedDescription;
                 $editedTextblock->save();
                 //$GLOBALS['log']->error('saved as edited original template texblock');
                 if (!empty($textblockId) && !empty($editedTextblock->id)) {
                     $sequence = str_replace($textblockId, $editedTextblock->id, $sequence);
                 } else {
                     $GLOBALS['log']->fatal('textblockId or editedTextblock->id is empty');
                 }
             }
             // check if textBlock is newly added
             if (strpos($this->bean->textblocksequence, $textblockId) === false) {
                 $changes = array('field_name' => $originalTextblock->name, 'data_type' => 'text', 'before' => '<n/a>', 'after' => $userEditedDescription);
                 if (floatval(substr($sugar_version, 0, 3)) > 6.3) {
                     $this->bean->db->save_audit_records($this->bean, $changes);
                 } else {
                     $this->bean->dbManager->helper->save_audit_records($this->bean, $changes);
                 }
             }
         } else {
             if ($editedTextblock = oqc_EditedTextBlock::getFromId($textblockId)) {
                 // it has to be an EditedTextBlock instance
                 // update the description and save it
                 if ($editedTextblock->description != $userEditedDescription) {
                     //$GLOBALS['log']->error('saved as edited template texblock that was saved before');
                     $changes = array('field_name' => $editedTextblock->name, 'data_type' => 'text', 'before' => $editedTextblock->description, 'after' => $userEditedDescription);
                     if (floatval(substr($sugar_version, 0, 3)) > 6.3) {
                         $this->bean->db->save_audit_records($this->bean, $changes);
                     } else {
                         $this->bean->dbManager->helper->save_audit_records($this->bean, $changes);
                     }
                     $editedTextblock->id = '';
                     //1.7.6 avoid Quotes inheriting textblock from linked Contract and vice versa
                     $editedTextblock->description = $userEditedDescription;
                     $editedTextblock->save();
                     //1.7.6 getting new id
                     if (!empty($textblockId) && !empty($editedTextblock->id)) {
                         $sequence = str_replace($textblockId, $editedTextblock->id, $sequence);
                     }
                 }
             } else {
                 //2.0 this is former free text saving part
                 global $app_list_strings;
                 //$GLOBALS['log']->error('saving as free text edited texblock');
                 $changes = array('field_name' => $app_list_strings["oqc"]["Textblocks"]["freeText"], 'data_type' => 'text', 'before' => '<n/a>', 'after' => $userEditedDescription);
                 if (floatval(substr($sugar_version, 0, 3)) > 6.3) {
                     $this->bean->db->save_audit_records($this->bean, $changes);
                 } else {
                     $this->bean->dbManager->helper->save_audit_records($this->bean, $changes);
                 }
                 $newTextblock = new oqc_EditedTextBlock();
                 $newTextblock->name = $app_list_strings["oqc"]["Textblocks"]["freeText"];
                 $newTextblock->id = '';
                 //$newTextblock->id = $textblockId;
                 $newTextblock->textblock_id = '';
                 $newTextblock->description = $userEditedDescription;
                 $newTextblock->save();
                 if (!empty($textblockId) && !empty($newTextblock->id)) {
                     $sequence = str_replace($textblockId, $newTextblock->id, $sequence);
                 } else {
                     $GLOBALS['log']->fatal('textblockId or editedTextblock->id is empty');
                 }
             }
         }
     }
     return $sequence;
 }
 public static function getFromId($id)
 {
     $editedtextblock = new oqc_EditedTextBlock();
     return $editedtextblock->retrieve($id);
 }
 function get_all_linked_textblocks()
 {
     // return array_merge($this->get_linked_textblocks(), $this->get_linked_edited_textblocks());
     $textblockIds = explode(' ', trim($this->textblocksequence));
     $textblocks = array();
     foreach ($textblockIds as $id) {
         $textblock = new oqc_Textblock();
         $editedTextblock = new oqc_EditedTextBlock();
         if ($textblock->retrieve($id)) {
             $textblocks[] = $textblock;
         } else {
             if ($editedTextblock->retrieve($id)) {
                 $textblocks[] = $editedTextblock;
             }
         }
     }
     return $textblocks;
 }