static function copyTemplate()
 {
     $msgTplId = CRM_Utils_Request::retrieve('id', 'Positive', CRM_Core_DAO::$_nullObject, TRUE);
     $mosaicoMsgTplId = CRM_Mosaico_Utils::getMosaicoMsgTplIdFromMsgTplId($msgTplId);
     // get the message template which is going to be copied.
     $messageTemplate = new CRM_Core_DAO_MessageTemplate();
     $messageTemplate->id = $msgTplId;
     if ($messageTemplate->find(TRUE)) {
         $buildNewMsgTemplate = array();
         $buildNewMsgTemplate['msg_title'] = 'Copy of ' . $messageTemplate->msg_title;
         $buildNewMsgTemplate['msg_subject'] = 'Copy of ' . $messageTemplate->msg_subject;
         $buildNewMsgTemplate['msg_html'] = $messageTemplate->msg_html;
         $newMessageTemplate = new CRM_Core_DAO_MessageTemplate();
         $newMessageTemplate->copyValues($buildNewMsgTemplate);
         $newMessageTemplate->save();
         $copiedMsgTplId = $newMessageTemplate->id;
         $copiedMsgTplName = $newMessageTemplate->msg_title;
         // Build mosaico message template params to create new mosaico msg template
         $mosaicoTemplate = CRM_Mosaico_Utils::getMosaicoMsgTemplate($mosaicoMsgTplId);
         $mosaicoTemplate['msg_tpl_id'] = $copiedMsgTplId;
         $mosaicoTemplate['name'] = $copiedMsgTplName;
         $mosTpl = new CRM_Mosaico_DAO_MessageTemplate();
         $mosTpl->copyValues($mosaicoTemplate);
         $mosTpl->save();
         $result = array('newMosaicoTplId' => $mosTpl->id, 'from_hash_key' => $mosTpl->hash_key, 'name' => $mosTpl->name);
         CRM_Utils_JSON::output($result);
     }
 }