public function jump_to_epesi_registration() { Base_BoxCommon::push_module('Base_EssClient'); return false; }
public static function update_version_check_indicator($force = false) { $version_no = __('version %s', array(EPESI_VERSION)); if (CHECK_VERSION && Base_EpesiStoreInstall::is_installed()) { load_js('modules/Base/Box/check_for_new_version.js'); if ($force) { eval_js('jq("#epesi_new_version").attr("done","0");'); } eval_js('check_for_new_version();'); $version_no = '<span id="epesi_new_version">' . Utils_TooltipCommon::create($version_no, __('Checking if there are updates available...'), false) . '</span>'; if (isset($_REQUEST['go_to_epesi_store_for_updates'])) { Base_BoxCommon::push_module('Base_EpesiStore', 'admin'); return; } } return $version_no; }
public static function submit_attachment($values, $mode) { static $new_values, $old_password; switch ($mode) { case 'browse': if (isset($values['id']) && isset($values['crypted']) && $values['crypted'] == false) { // store to mark as read. Do not mark it here, because // we won't get red eye in the table view self::$mark_as_read[] = $values['id']; } return $values; case 'index': if($values['crypted']) unset($values['note']); return $values; case 'adding': $values['edited_on'] = time(); return $values; case 'add': case 'edit': if(isset($values['__date'])) $values['edited_on'] = $values['__date']; else $values['edited_on'] = time(); $crypted = 0; $old_pass = ($mode=='edit' && isset($_SESSION['client']['cp'.$values['id']]))?$_SESSION['client']['cp'.$values['id']]:($mode=='add' && isset($values['clone_id']) && isset($_SESSION['client']['cp'.$values['clone_id']])?$_SESSION['client']['cp'.$values['clone_id']]:''); if((is_array($values['crypted']) && isset($values['crypted']['crypted']) && $values['crypted']['crypted']) || (!is_array($values['crypted']) && $values['crypted'])) { if(is_array($values['crypted']) && isset($values['crypted']['note_password'])) { if($values['crypted']['note_password']=='*@#old@#*') $values['crypted']['note_password'] = $old_pass; } $crypted = 1; } if(is_array($values['crypted']) && isset($values['crypted']['note_password']) && $mode=='edit' && $old_pass!=$values['crypted']['note_password']) { //reencrypt old revisions $old_notes = DB::GetAssoc('SELECT hd.edit_id,hd.old_value FROM utils_attachment_edit_history h INNER JOIN utils_attachment_edit_history_data hd ON h.id=hd.edit_id WHERE h.utils_attachment_id=%d AND hd.field="note"', array($values['id'])); foreach($old_notes as $old_id=>$old_note) { if($old_pass!=='') $old_note = Utils_AttachmentCommon::decrypt($old_note,$old_pass); if($old_note===false) continue; if($crypted && $values['crypted']['note_password']) $old_note = Utils_AttachmentCommon::encrypt($old_note,$values['crypted']['note_password']); if($old_note===false) continue; DB::Execute('UPDATE utils_attachment_edit_history_data SET old_value=%s WHERE edit_id=%d AND field="note"',array($old_note,$old_id)); } //file reencryption $old_files = DB::GetCol('SELECT uaf.id as id FROM utils_attachment_file uaf WHERE uaf.attach_id=%d',array($values['id'])); foreach($old_files as $old_id) { $filename = DATA_DIR.'/Utils_Attachment/'.$values['id'].'/'.$old_id; $content = @file_get_contents($filename); if($content===false) continue; if($old_pass!=='') $content = Utils_AttachmentCommon::decrypt($content,$old_pass); if($content===false) continue; if($crypted && $values['crypted']['note_password']) $content = Utils_AttachmentCommon::encrypt($content,$values['crypted']['note_password']); if($content===false) continue; file_put_contents($filename,$content); } } if($crypted) { if(is_array($values['crypted']) && isset($values['crypted']['note_password'])) { $values['note'] = Utils_AttachmentCommon::encrypt($values['note'],$values['crypted']['note_password']); $values['note_password']=$values['crypted']['note_password']; } $values['crypted'] = 1; } else { $values['crypted'] = 0; } $new_values = $values; break; case 'cloning': $values['clone_id']=$values['id']; break; case 'added': if(isset($values['local'])) DB::Execute('INSERT INTO utils_attachment_local(attachment,local,func,args) VALUES(%d,%s,%s,%s)',array($values['id'],$values['local'],$values['func'],$values['args'])); $new_values = $values; break; case 'edit_changes': if(isset($values['note']) && isset($values['crypted']) && $new_values['crypted']!=$values['crypted']) { if($new_values['crypted'] && isset($new_values['note_password'])) { $values['note'] = Utils_AttachmentCommon::encrypt($values['note'],$new_values['note_password']); } elseif(!$new_values['crypted'] && isset($_SESSION['client']['cp'.$new_values['id']])) { $values['note'] = Utils_AttachmentCommon::decrypt($values['note'],$_SESSION['client']['cp'.$new_values['id']]); unset($_SESSION['client']['cp'.$new_values['id']]); } } elseif(isset($new_values['note_password']) && isset($old_password) && $new_values['note_password']!=$old_password) { $values['note'] = Utils_AttachmentCommon::decrypt($values['note'],$old_password); $values['note'] = Utils_AttachmentCommon::encrypt($values['note'],$new_values['note_password']); } break; case 'view': $ret = self::get_access($values['id']); if(!$ret) print(__('Access denied')); return $ret; case 'display': if(DB::GetOne('SELECT 1 FROM utils_attachment_file WHERE attach_id=%d',array($values['id']))) { $ret = array(); $ret['new'] = array(); $ret['new']['crm_filter'] = '<a '.Utils_TooltipCommon::open_tag_attrs(__('File history')).' '.Module::create_href(array('file_history'=>1)).'>F</a>'; if (isset($_REQUEST['file_history']) && (!$values['crypted'] || isset($_SESSION['client']['cp'.$values['id']]))) Base_BoxCommon::push_module('Utils_Attachment','file_history',array($values)); // CRM_FiltersCommon::set_profile('c'.$values['id']); return $ret; } break; case 'delete': if($values['crypted'] && !isset($_SESSION['client']['cp'.$values['id']])) { Epesi::alert(__('Cannot delete encrypted note')); return false; } $count_locals = DB::GetOne('SELECT count(DISTINCT local) FROM utils_attachment_local WHERE attachment=%d',array($values['id'])); if($count_locals>1) { $is_local = false; if(isset($_SESSION['client']['utils_attachment_group'])) $is_local = DB::GetOne('SELECT 1 FROM utils_attachment_local WHERE attachment=%d AND local=%s',array($values['id'],$_SESSION['client']['utils_attachment_group'])); if($is_local) { DB::Execute('DELETE FROM utils_attachment_local WHERE attachment=%d AND local=%s',array($values['id'],$_SESSION['client']['utils_attachment_group'])); self::new_watchdog_event($_SESSION['client']['utils_attachment_group'], '-', $values['id']); } else Epesi::alert(__('This note is attached to multiple records - please go to record and delete note there.')); location(array()); return false; } location(array()); return true; } switch($mode) { case 'edit': case 'added': if(isset($values['note_password'])) { $old_password = isset($_SESSION['client']['cp' . $values['id']]) ? $_SESSION['client']['cp' . $values['id']] : ''; $_SESSION['client']['cp'.$values['id']] = $values['note_password']; } $note_id = $values['id']; $files_dir = self::Instance()->get_data_dir().$note_id; if(isset($values['delete_files'])) $deleted_files = array_filter(explode(';',$values['delete_files'])); else $deleted_files = array(); foreach ($deleted_files as $k=>$v) $deleted_files[$k] = intVal($v); if($deleted_files) $deleted_files = array_combine($deleted_files,$deleted_files); if($mode=='added' && isset($values['clone_id'])) { //on cloning $locals = DB::Execute('SELECT local,func,args FROM utils_attachment_local WHERE attachment=%d',array($values['clone_id'])); while($local = $locals->FetchRow()) DB::Execute('INSERT INTO utils_attachment_local(attachment,local,func,args) VALUES(%d,%s,%s,%s)',array($note_id,$local['local'],$local['func'],$local['args'])); $clone_files = DB::GetAll('SELECT id,original,created_by,created_on FROM utils_attachment_file uaf WHERE uaf.attach_id=%d AND uaf.deleted=0', array($values['clone_id'])); foreach($clone_files as $file) { $cf = self::Instance()->get_data_dir().$values['clone_id'].'/'.$file['id']; if(!file_exists($cf)) continue; if(!file_exists($files_dir)) mkdir($files_dir,0777,true); DB::Execute('INSERT INTO utils_attachment_file (attach_id,deleted,original,created_by,created_on) VALUES(%d,0,%s,%d,%T)',array($note_id,$file['original'],$file['created_by'],$file['created_on'])); $new_file_id = DB::Insert_ID('utils_attachment_file','id'); if(isset($deleted_files[$file['id']])) $deleted_files[$file['id']] = $new_file_id; $cf2 = $files_dir.'/'.$new_file_id; copy($cf,$cf2); if(isset($_SESSION['client']['cp'.$values['clone_id']]) && $_SESSION['client']['cp'.$values['clone_id']]) file_put_contents($cf2,Utils_AttachmentCommon::decrypt(file_get_contents($cf2),$_SESSION['client']['cp'.$values['clone_id']])); if($values['crypted']) file_put_contents($cf2,Utils_AttachmentCommon::encrypt(file_get_contents($cf2),$values['note_password'])); } } $current_files = DB::GetAssoc('SELECT id, id FROM utils_attachment_file uaf WHERE uaf.attach_id=%d AND uaf.deleted=0', array($note_id)); $remaining_files = $current_files; foreach ($deleted_files as $k=>$v) { if (!isset($remaining_files[$v])) unset($deleted_files[$k]); else unset($remaining_files[$v]); } foreach ($deleted_files as $v) DB::Execute('UPDATE utils_attachment_file SET deleted=1 WHERE id=%d', array($v)); if(isset($values['clipboard_files'])) { $clipboard_files = array_filter(explode(';',$values['clipboard_files'])); foreach ($clipboard_files as $cf_id) { $cf = DB::GetOne('SELECT filename FROM utils_attachment_clipboard WHERE id=%d', array($cf_id)); if($values['crypted']) file_put_contents($cf,Utils_AttachmentCommon::encrypt(file_get_contents($cf),$values['note_password'])); Utils_AttachmentCommon::add_file($note_id, Acl::get_user(), __('clipboard').'.png', $cf); } } $files = isset($_SESSION['client']['utils_attachment'][CID]['files'])?$_SESSION['client']['utils_attachment'][CID]['files']:array(); $_SESSION['client']['utils_attachment'][CID]['files'] = array(); foreach ($files as $f) { $file_path = $f['path']; $file_name = $f['name']; if($values['crypted']) file_put_contents($file_path,Utils_AttachmentCommon::encrypt(file_get_contents($file_path),$values['note_password'])); Utils_AttachmentCommon::add_file($note_id, Acl::get_user(), $file_name, $file_path); } $locals = DB::GetCol('SELECT local FROM utils_attachment_local WHERE attachment=%d',array($note_id)); foreach ($locals as $local) { $param = explode('/', $local); if (count($param) == 2 && preg_match('/^[1-9][0-9]*$/', $param[1])) { $subscribers = Utils_WatchdogCommon::get_subscribers($param[0], $param[1]); foreach ($subscribers as $user_id) { Utils_WatchdogCommon::user_subscribe($user_id, 'utils_attachment', $note_id); } } } break; } return $values; }
public static function QFfield_attachments(&$form, $field, $label, $mode, $default, $desc, $rb_obj) { if (isset($_GET['rc_reply']) || isset($_GET['rc_replyall']) || isset($_GET['rc_forward'])) { $attachments = DB::GetAssoc('SELECT mime_id,name FROM rc_mails_attachments WHERE mail_id=%d AND attachment=1', array($rb_obj->record['id'])); $data = array(); if ($attachments) { $hash = md5(time() . ' ' . serialize($rb_obj->record)); DB::Execute('INSERT INTO rc_mails_attachments_download(mail_id,hash) VALUES(%d,%s)', array($rb_obj->record['id'], $hash)); foreach ($attachments as $k => &$n) { $filename = DATA_DIR . '/CRM_Roundcube/attachments/' . $rb_obj->record['id'] . '/' . $k; if (file_exists($filename)) { $data[] = '<a href="' . rtrim(get_epesi_url() . '/') . '/modules/CRM/Roundcube/get_remote.php?' . http_build_query(array('mime_id' => $k, 'mail_id' => $rb_obj->record['id'], 'hash' => $hash)) . '" target="_blank">' . $n . '</a>'; } } } $attachments = implode('<br />', $data); } else { $attachments = ''; } if (isset($_GET['rc_reply']) && $_GET['rc_reply'] == $rb_obj->record['id']) { Base_BoxCommon::push_module('CRM_Roundcube', 'new_mail', array(html_entity_decode($rb_obj->record['from']), (preg_match('/^Re:/i', $rb_obj->record['subject']) ? '' : 'Re: ') . $rb_obj->record['subject'], '<br /><br /><strong>' . __('On %s wrote', array(Base_RegionalSettingsCommon::time2reg($rb_obj->record['date']) . ', ' . $rb_obj->record['from'])) . ':</strong><br/>' . $rb_obj->record['body'] . ($attachments ? '<hr /><strong>' . __('Attachments') . ':</strong><br/>' . $attachments : ''), $rb_obj->record['message_id'], html_entity_decode($rb_obj->record['references']))); } elseif (isset($_GET['rc_replyall']) && $_GET['rc_replyall'] == $rb_obj->record['id']) { $to = explode(',', $rb_obj->record['to']); $to[] = $rb_obj->record['from']; $mails = Utils_RecordBrowserCommon::get_records('rc_accounts', array('epesi_user' => Acl::get_user()), array('email')); foreach ($to as $k => $t) { $to[$k] = trim($t); foreach ($mails as $m) { if (strpos($t, $m['email']) !== false) { unset($to[$k]); break; } } } Base_BoxCommon::push_module('CRM_Roundcube', 'new_mail', array(html_entity_decode(implode(', ', $to)), (preg_match('/^Re:/i', $rb_obj->record['subject']) ? '' : 'Re: ') . $rb_obj->record['subject'], '<br /><br /><strong>' . __('On %s wrote', array(Base_RegionalSettingsCommon::time2reg($rb_obj->record['date']) . ', ' . $rb_obj->record['from'])) . ':</strong><br/>' . $rb_obj->record['body'] . ($attachments ? '<hr /><strong>' . __('Attachments') . ':</strong><br/>' . $attachments : ''), $rb_obj->record['message_id'], html_entity_decode($rb_obj->record['references']))); } elseif (isset($_GET['rc_forward']) && $_GET['rc_forward'] == $rb_obj->record['id']) { Base_BoxCommon::push_module('CRM_Roundcube', 'new_mail', array('', (preg_match('/^Re:/i', $rb_obj->record['subject']) ? '' : 'Re: ') . $rb_obj->record['subject'], '<br /><br /><strong>' . __('On %s wrote', array(Base_RegionalSettingsCommon::time2reg($rb_obj->record['date']) . ', ' . $rb_obj->record['from'])) . ':</strong><br/>' . $rb_obj->record['body'] . ($attachments ? '<hr /><strong>' . __('Attachments') . ':</strong><br/>' . $attachments : ''))); } Base_ActionBarCommon::add('reply', __('Reply'), Module::create_href(array('rc_reply' => $rb_obj->record['id']))); Base_ActionBarCommon::add('reply', __('Reply All'), Module::create_href(array('rc_replyall' => $rb_obj->record['id']))); Base_ActionBarCommon::add('forward', __('Forward'), Module::create_href(array('rc_forward' => $rb_obj->record['id']))); }