Пример #1
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $url = OSSMail_Record_Model::GetSite_URL() . 'modules/OSSMail/roundcube/';
     $config = Settings_Mail_Config_Model::getConfig('autologin');
     if ($config['autologinActive'] == 'true') {
         $account = OSSMail_Autologin_Model::getAutologinUsers();
         if ($account) {
             $rcUser = isset($_SESSION['AutoLoginUser']) && array_key_exists($_SESSION['AutoLoginUser'], $account) ? $account[$_SESSION['AutoLoginUser']] : reset($account);
             require_once 'modules/OSSMail/RoundcubeLogin.class.php';
             $rcl = new RoundcubeLogin($url, false);
             //$rcl->setHostname('fdc.org.pl');
             //$rcl->setPort(143);
             //$rcl->setSSL(false);
             try {
                 if ($rcl->isLoggedIn()) {
                     if ($rcl->getUsername() != $rcUser['username']) {
                         $rcl->logout();
                         $rcl->login($rcUser['username'], $rcUser['password']);
                     }
                 } else {
                     $rcl->login($rcUser['username'], $rcUser['password']);
                 }
             } catch (RoundcubeLoginException $ex) {
                 $log = vglobal('log');
                 $log->error('OSSMail_index_View|RoundcubeLoginException: ' . $ex->getMessage());
             }
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('URL', $url);
     $viewer->view('index.tpl', $moduleName);
 }
Пример #2
0
 public function process(Vtiger_Request $request)
 {
     $adb = PearDatabase::getInstance();
     $metod = $request->get('metod');
     $params = $request->get('params');
     $params['folder'] = urldecode($params['folder']);
     $return = false;
     if (Vtiger_Functions::getModuleId('OSSMailView') && Vtiger_Functions::getModuleId('OSSMailScanner')) {
         $return = 0;
         $account = OSSMail_Record_Model::get_account_detail_by_name($params['username']);
         $result = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview WHERE id = ? AND mbox = ? AND rc_user = ?", array($params['uid'], $params['folder'], $account[0]['user_id']), true);
         if ($adb->num_rows($result) > 0) {
             $return = $adb->query_result($result, 0, 'ossmailviewid');
         } else {
             $scannerModel = Vtiger_Record_Model::getCleanInstance('OSSMailScanner');
             $params['actions'] = '0_created_Email';
             $mail_Scan_mail = $scannerModel->manualScanMail($params);
             if ($mail_Scan_mail['0_created_Email']) {
                 $return = $mail_Scan_mail['0_created_Email']['created_Email'];
             }
         }
     }
     $response = new Vtiger_Response();
     $response->setResult($return);
     $response->emit();
 }
Пример #3
0
function _0_created_Email($user_id, $mail_detail, $folder, $return)
{
    $folder_group = OSSMailScanner_Record_Model::getConfigFolderList($folder);
    $adb = PearDatabase::getInstance();
    $result_user_id = $adb->pquery("SELECT crm_user_id FROM roundcube_users where user_id = ? ", [$user_id]);
    $assigned_user_id = $adb->query_result($result_user_id, 0, 'crm_user_id');
    $result = $adb->pquery("SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ", [$mail_detail['message_id'], $user_id]);
    if ($adb->num_rows($result) == 0 && $mail_detail['message_id'] != '') {
        $OSSMailViewInstance = CRMEntity::getInstance('OSSMailView');
        $OSSMailViewInstance->column_fields['assigned_user_id'] = $assigned_user_id;
        $OSSMailViewInstance->column_fields['subject'] = $mail_detail['subject'];
        $OSSMailViewInstance->column_fields['to_email'] = $mail_detail['toaddress'];
        $OSSMailViewInstance->column_fields['from_email'] = $mail_detail['fromaddress'];
        $OSSMailViewInstance->column_fields['reply_to_email'] = $mail_detail['reply_toaddress'];
        $OSSMailViewInstance->column_fields['ossmailview_sendtype'] = OSSMailScanner_Record_Model::getTypeEmail($mail_detail, true);
        $OSSMailViewInstance->column_fields['content'] = $mail_detail['body'];
        $OSSMailViewInstance->column_fields['orginal_mail'] = $mail_detail['clean'];
        $OSSMailViewInstance->column_fields['cc_email'] = $mail_detail['ccaddress'];
        $OSSMailViewInstance->column_fields['bcc_email'] = $mail_detail['bccaddress'];
        $OSSMailViewInstance->column_fields['fromaddress'] = $mail_detail['from'];
        $OSSMailViewInstance->column_fields['uid'] = $mail_detail['message_id'];
        $OSSMailViewInstance->column_fields['id'] = $mail_detail['id'];
        $OSSMailViewInstance->column_fields['mbox'] = $folder;
        $OSSMailViewInstance->column_fields['type'] = OSSMailScanner_Record_Model::getTypeEmail($mail_detail);
        $OSSMailViewInstance->column_fields['rc_user'] = $user_id;
        $OSSMailViewInstance->column_fields['from_id'] = OSSMailScanner_Record_Model::findEmail($mail_detail['fromaddress'], false, false);
        if ($mail_detail['toaddress']) {
            $adress = $mail_detail['toaddress'];
        }
        if ($mail_detail['ccaddress']) {
            if ($adress != '') {
                $adress .= ',';
            }
            $adress .= $mail_detail['ccaddress'];
        }
        if ($mail_detail['bccaddress']) {
            if ($adress != '') {
                $adress .= ',';
            }
            $adress .= $mail_detail['bccaddress'];
        }
        $OSSMailViewInstance->column_fields['to_id'] = OSSMailScanner_Record_Model::findEmail($adress, false, false);
        if (count($mail_detail['attachments']) > 0) {
            $OSSMailViewInstance->column_fields['attachments_exist'] = 1;
        }
        $OSSMailViewInstance->save('OSSMailView');
        $id = $OSSMailViewInstance->id;
        $DocumentsIDs = OSSMail_Record_Model::_SaveAttachements($mail_detail['attachments'], $assigned_user_id, $mail_detail['udate_formated'], $id);
        $adb->pquery('UPDATE vtiger_crmentity SET smcreatorid = ?,modifiedby = ? WHERE crmid = ? ', array($assigned_user_id, $assigned_user_id, $id));
        $adb->pquery('UPDATE vtiger_ossmailview SET date = ? WHERE ossmailviewid = ?;', array($mail_detail['udate_formated'], $id));
    }
    return ['created_Email' => $id];
}
Пример #4
0
 public function process(Vtiger_Request $request)
 {
     $users = $request->get('users');
     $output = [];
     if (count($users) > 0) {
         OSSMail_Record_Model::updateMailBoxmsgInfo($users);
         $output = OSSMail_Record_Model::getMailBoxmsgInfo($users);
     }
     $response = new Vtiger_Response();
     $response->setResult($output);
     $response->emit();
 }
Пример #5
0
 function handleEvent($eventName, $entityData)
 {
     $adb = PearDatabase::getInstance();
     $log = vglobal('log');
     if ($eventName == 'user.logout.before') {
         $log->debug("Start LogoutHandler: user.logout.before");
         $mainUrl = OSSMail_Record_Model::GetSite_URL() . 'modules/OSSMail/roundcube/';
         vimport('~modules/OSSMail/RoundcubeLogin.class.php');
         $rcl = new RoundcubeLogin($mainUrl);
         if ($rcl->isLoggedIn()) {
             $rcl->logout();
         }
         $log->debug("End LogoutHandler: user.logout.before");
     }
 }
Пример #6
0
 public function process(Vtiger_Request $request)
 {
     $metod = $request->get('metod');
     $params = $request->get('params');
     $result = false;
     if (Vtiger_Functions::getModuleId('OSSMailView')) {
         $params['folder'] = urldecode($params['folder']);
         $account = OSSMail_Record_Model::get_account_detail_by_name($params['username']);
         $params['user_id'] = $account['user_id'];
         $OSSMailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
         $result = $OSSMailModel->findCrmDetail($params, $metod);
     }
     $response = new Vtiger_Response();
     $response->setResult($result);
     $response->emit();
 }
Пример #7
0
 function handleEvent($eventName, $entityData)
 {
     $adb = PearDatabase::getInstance();
     $log = vglobal('log');
     if ($eventName == 'user.logout.before') {
         $log->debug("Start LogoutHandler: user.logout.before");
         $mainUrl = OSSMail_Record_Model::GetSite_URL() . 'modules/OSSMail/roundcube/';
         vimport('~modules/OSSMail/RoundcubeLogin.class.php');
         $rcl = new RoundcubeLogin($mainUrl);
         try {
             $rcl->logout();
         } catch (RoundcubeLoginException $ex) {
             $log->error('OSSMail_index_View|RoundcubeLoginException: ' . $ex->getMessage());
         }
         $log->debug("End LogoutHandler: user.logout.before");
     }
 }
Пример #8
0
 public function process(Vtiger_Request $request, $widget = NULL)
 {
     $viewer = $this->getViewer($request);
     $moduleName = $request->getModule();
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $user = $request->get('user');
     $linkId = $request->get('linkid');
     $widget = Vtiger_Widget_Model::getInstance($linkId, $currentUser->getId());
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('WIDGET', $widget);
     $viewer->assign('USER', $user);
     $viewer->assign('ACCOUNTSLIST', OSSMail_Record_Model::getAccountsList(false, true));
     $content = $request->get('content');
     if (!empty($content)) {
         $viewer->view('dashboards/MailsListContents.tpl', $moduleName);
     } else {
         $viewer->view('dashboards/MailsList.tpl', $moduleName);
     }
 }
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $uid = $request->get('uid');
     $folder = $request->get('folder');
     $rcId = $request->get('rcId');
     $account = OSSMail_Record_Model::getAccountByHash($rcId);
     if (!$account) {
         throw new NoPermittedException('LBL_PERMISSION_DENIED');
     }
     $rcId = $account['user_id'];
     $mailViewModel = OSSMailView_Record_Model::getCleanInstance('OSSMailView');
     $record = $mailViewModel->checkMailExist($uid, $folder, $rcId);
     $viewer = $this->getViewer($request);
     $viewer->assign('RECORD', $record);
     if ($record) {
         $reletedRecords = $mailViewModel->getReletedRecords($record);
         $viewer->assign('RELETED_RECORDS', $reletedRecords);
     }
     Vtiger_Module_Model::getModulesByLevel();
     $viewer->assign('MODULE_NAME', $moduleName);
     $viewer->assign('URL', AppConfig::main('site_URL'));
     $viewer->view('MailActionBar.tpl', $moduleName);
 }
Пример #10
0
function _0_created_Email($user_id, $mailDetail, $folder, $return)
{
    $type = OSSMailScanner_Record_Model::getTypeEmail($mailDetail);
    $folder_group = OSSMailScanner_Record_Model::getConfigFolderList($folder);
    $exceptionsAll = OSSMailScanner_Record_Model::getConfig('exceptions');
    $adb = PearDatabase::getInstance();
    $result_user_id = $adb->pquery('SELECT crm_user_id FROM roundcube_users where user_id = ? ', [$user_id]);
    $assigned_user_id = $adb->query_result($result_user_id, 0, 'crm_user_id');
    $result = $adb->pquery('SELECT ossmailviewid FROM vtiger_ossmailview where uid = ? AND rc_user = ? ', [$mailDetail['message_id'], $user_id]);
    if ($type == 0) {
        $mailForExceptions = $mailDetail['toaddress'];
    } else {
        $mailForExceptions = $mailDetail['fromaddress'];
    }
    if (!empty($exceptionsAll['crating_mails'])) {
        $exceptions = explode(',', $exceptionsAll['crating_mails']);
        foreach ($exceptions as $exception) {
            if (strpos($mailForExceptions, $exception) !== FALSE) {
                return ['created_Email' => ''];
            }
        }
    }
    if ($adb->num_rows($result) == 0 && $mailDetail['message_id'] != '') {
        $OSSMailViewInstance = CRMEntity::getInstance('OSSMailView');
        $OSSMailViewInstance->column_fields['assigned_user_id'] = $assigned_user_id;
        $OSSMailViewInstance->column_fields['subject'] = $mailDetail['subject'];
        $OSSMailViewInstance->column_fields['to_email'] = $mailDetail['toaddress'];
        $OSSMailViewInstance->column_fields['from_email'] = $mailDetail['fromaddress'];
        $OSSMailViewInstance->column_fields['reply_to_email'] = $mailDetail['reply_toaddress'];
        $OSSMailViewInstance->column_fields['ossmailview_sendtype'] = OSSMailScanner_Record_Model::getTypeEmail($mailDetail, true);
        $OSSMailViewInstance->column_fields['content'] = $mailDetail['body'];
        $OSSMailViewInstance->column_fields['orginal_mail'] = $mailDetail['clean'];
        $OSSMailViewInstance->column_fields['cc_email'] = $mailDetail['ccaddress'];
        $OSSMailViewInstance->column_fields['bcc_email'] = $mailDetail['bccaddress'];
        $OSSMailViewInstance->column_fields['fromaddress'] = $mailDetail['from'];
        $OSSMailViewInstance->column_fields['uid'] = $mailDetail['message_id'];
        $OSSMailViewInstance->column_fields['id'] = $mailDetail['id'];
        $OSSMailViewInstance->column_fields['mbox'] = $folder;
        $OSSMailViewInstance->column_fields['type'] = $type;
        $OSSMailViewInstance->column_fields['rc_user'] = $user_id;
        $adress = [];
        if ($mailDetail['fromaddress']) {
            $adress[] = $mailDetail['fromaddress'];
        }
        if ($mailDetail['reply_toaddress']) {
            $adress[] = $mailDetail['reply_toaddress'];
        }
        $OSSMailViewInstance->column_fields['from_id'] = OSSMailScanner_Record_Model::findEmail(implode(',', $adress), false, false);
        $adress = [];
        if ($mailDetail['toaddress']) {
            $adress[] = $mailDetail['toaddress'];
        }
        if ($mailDetail['ccaddress']) {
            $adress[] = $mailDetail['ccaddress'];
        }
        if ($mailDetail['bccaddress']) {
            $adress[] = $mailDetail['bccaddress'];
        }
        $OSSMailViewInstance->column_fields['to_id'] = OSSMailScanner_Record_Model::findEmail(implode(',', $adress), false, false);
        if (count($mailDetail['attachments']) > 0) {
            $OSSMailViewInstance->column_fields['attachments_exist'] = 1;
        }
        $OSSMailViewInstance->save('OSSMailView');
        $id = $OSSMailViewInstance->id;
        $DocumentsIDs = OSSMail_Record_Model::_SaveAttachements($mailDetail['attachments'], $assigned_user_id, $mailDetail['udate_formated'], $id);
        $adb->pquery('UPDATE vtiger_crmentity SET smcreatorid = ?,modifiedby = ? WHERE crmid = ? ', [$assigned_user_id, $assigned_user_id, $id]);
        $adb->pquery('UPDATE vtiger_ossmailview SET date = ? WHERE ossmailviewid = ?;', [$mailDetail['udate_formated'], $id]);
    }
    return ['created_Email' => $id];
}
Пример #11
0
 function createConfigFile()
 {
     /* open template configuration file read only */
     $templateFilename = 'config/config.template.php';
     $templateHandle = fopen($templateFilename, "r");
     if ($templateHandle) {
         /* open include configuration file write only */
         $includeFilename = 'config/config.inc.php';
         $includeHandle = fopen($includeFilename, "w");
         if ($includeHandle) {
             while (!feof($templateHandle)) {
                 $buffer = fgets($templateHandle);
                 /* replace _DBC_ variable */
                 $buffer = str_replace("_DBC_SERVER_", $this->dbHostname, $buffer);
                 $buffer = str_replace("_DBC_PORT_", $this->dbPort, $buffer);
                 $buffer = str_replace("_DBC_USER_", $this->dbUsername, $buffer);
                 $buffer = str_replace("_DBC_PASS_", $this->dbPassword, $buffer);
                 $buffer = str_replace("_DBC_NAME_", $this->dbName, $buffer);
                 $buffer = str_replace("_DBC_TYPE_", $this->dbType, $buffer);
                 $buffer = str_replace("_SITE_URL_", $this->siteUrl, $buffer);
                 /* replace dir variable */
                 $buffer = str_replace("_VT_ROOTDIR_", $this->rootDirectory, $buffer);
                 $buffer = str_replace("_VT_CACHEDIR_", $this->cacheDir, $buffer);
                 $buffer = str_replace("_VT_TMPDIR_", $this->cacheDir . "images/", $buffer);
                 $buffer = str_replace("_DB_STAT_", "true", $buffer);
                 /* replace charset variable */
                 $buffer = str_replace("_VT_CHARSET_", $this->vtCharset, $buffer);
                 /* replace master currency variable */
                 $buffer = str_replace("_MASTER_CURRENCY_", $this->currencyName, $buffer);
                 /* replace the application unique key variable */
                 $buffer = str_replace("_VT_APP_UNIQKEY_", md5(time() + rand(1, 9999999) + md5($this->rootDirectory)), $buffer);
                 /* replace support email variable */
                 $buffer = str_replace("_USER_SUPPORT_EMAIL_", $this->adminEmail, $buffer);
                 $buffer = str_replace("_LANG_", $this->default_language, $buffer);
                 $buffer = str_replace("_TIMEZONE_", $this->timezone, $buffer);
                 fwrite($includeHandle, $buffer);
             }
             fclose($includeHandle);
         }
         fclose($templateHandle);
     }
     $language = explode("_", $this->default_language);
     OSSMail_Record_Model::setConfigData(array('language' => $language[0] . '_' . strtoupper($language[1])), false);
     if ($templateHandle && $includeHandle) {
         return true;
     }
     return false;
 }
Пример #12
0
 function manualScanMail($params)
 {
     $account = OSSMail_Record_Model::getAccountByHash($params['rcId']);
     if (!$account) {
         throw new NoPermittedException('LBL_PERMISSION_DENIED');
     }
     $params['folder'] = urldecode($params['folder']);
     $mailModel = Vtiger_Record_Model::getCleanInstance('OSSMail');
     $mbox = $mailModel->imapConnect($account['username'], $account['password'], $account['mail_host'], $params['folder']);
     $mailDetail = $mailModel->get_mail_detail($mbox, $params['uid']);
     $return = self::executeActions($account, $mailDetail, $params['folder'], $params);
     return $return;
 }
Пример #13
0
 function __construct()
 {
     parent::__construct();
     $this->mainUrl = OSSMail_Record_Model::GetSite_URL() . 'modules/OSSMail/roundcube/?_task=mail&_action=compose';
 }
Пример #14
0
 function roundcubeConfig()
 {
     global $log, $root_directory;
     $log->debug("Entering YetiForceUpdate::roundcubeConfig() method ...");
     if (!$root_directory) {
         $root_directory = getcwd();
     }
     $fileName = $root_directory . '/modules/OSSMail/roundcube/config/config.inc.php';
     if (file_exists($fileName)) {
         $config = OSSMail_Record_Model::getViewableData();
         if (!is_array($config['default_host'])) {
             $fileContent = file_get_contents($fileName);
             $value = $config['default_host'];
             if ($value == 'ssl://imap.gmail.com') {
                 $value = 'ssl://smtp.gmail.com';
             }
             $saveValue = "['{$value}' => '{$value}',]";
             $patternString = "\$config['default_host'] = %s;";
             $pattern = '/(\\$config\\[\'default_host\'\\])[\\s]+=([^;]+);/';
             $replacement = sprintf($patternString, $saveValue);
             $fileContent = preg_replace($pattern, $replacement, $fileContent);
             $filePointer = fopen($fileName, 'w');
             fwrite($filePointer, $fileContent);
             fclose($filePointer);
         }
     }
     $log->debug("Exiting YetiForceUpdate::roundcubeConfig() method ... ");
 }
Пример #15
0
 public function process(Vtiger_Request $request)
 {
     $url = '';
     if ($request->get('to') != '') {
         $to = $request->get('to');
     }
     if ($request->get('subject') != '') {
         $subject = $request->get('subject');
     }
     if (!empty($_SESSION['POST']['to'])) {
         $to = implode(",", $_SESSION['POST']['to']);
     }
     if (!empty($_SESSION['POST']['cc'])) {
         $cc = implode(",", $_SESSION['POST']['cc']);
     }
     if (!empty($_SESSION['POST']['bcc'])) {
         $bcc = implode(",", $_SESSION['POST']['bcc']);
     }
     if (!empty($_SESSION['POST']['subject'])) {
         $subject = implode(",", $_SESSION['POST']['subject']);
     }
     $mod = $_SESSION['POST']['sourceModule'];
     if ($mod == 'Campaigns') {
         if ($to != '') {
             $url .= '&bcc=' . $to;
         }
         if ($_SESSION['POST']['sourceRecord'] != '') {
             $Record_Model = Vtiger_Record_Model::getInstanceById($_SESSION['POST']['sourceRecord'], $mod);
             $campaign_no = $Record_Model->get('campaign_no');
             $url .= '&subject=' . $campaign_no . ': ' . $Record_Model->get('campaignname');
         }
     } else {
         if ($to != '') {
             $url .= '&to=' . $to;
         }
         if ($cc != '') {
             $url .= '&cc=' . $cc;
         }
         if ($bcc != '') {
             $url .= '&bcc=' . $bcc;
         }
     }
     if ($subject != '') {
         $url .= '&subject=' . $subject;
     }
     $pdfPath = $request->get('pdf_path');
     if ($pdfPath) {
         $url .= '&pdf_path=' . $pdfPath;
     }
     if ($url == '' && $request->get('record') != '' && $request->get('mod') != '') {
         $UrlToCompose = OSSMail_Record_Model::getUrlToCompose($request->get('mod'), $request->get('record'));
         $url .= $UrlToCompose;
     }
     if ($url == '' && $request->get('id') != '' && $request->get('type') != '') {
         $url .= '&crmid=' . (int) $request->get('id') . '&type=' . $request->get('type');
     }
     $mainUrl = OSSMail_Record_Model::GetSite_URL() . 'modules/OSSMail/roundcube/?_task=mail&_action=compose';
     $url = $mainUrl . $url;
     $config = Settings_Mail_Config_Model::getConfig('autologin');
     if ($config['autologinActive'] == 'true') {
         $account = OSSMail_Autologin_Model::getAutologinUsers();
         if ($account) {
             $rcUser = isset($_SESSION['AutoLoginUser']) && array_key_exists($_SESSION['AutoLoginUser'], $account) ? $account[$_SESSION['AutoLoginUser']] : reset($account);
             require_once 'modules/OSSMail/RoundcubeLogin.class.php';
             $rcl = new RoundcubeLogin($mainUrl, false);
             try {
                 if ($rcl->isLoggedIn()) {
                     if ($rcl->getUsername() != $rcUser['username']) {
                         $rcl->logout();
                         $rcl->login($rcUser['username'], $rcUser['password']);
                     }
                 } else {
                     $rcl->login($rcUser['username'], $rcUser['password']);
                 }
             } catch (RoundcubeLoginException $ex) {
                 $log = vglobal('log');
                 $log->error('OSSMail_index_View|RoundcubeLoginException: ' . $ex->getMessage());
             }
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign("URL", $url);
     $viewer->view('index.tpl', 'OSSMail');
 }