/**
  * Gets the owner mail account
  *
  * @return MailAccount
  */
 function getAccount()
 {
     if (is_null($this->account)) {
         $this->account = MailAccounts::findById($this->getAccountId());
     }
     //if
     return $this->account;
 }
		if (!config_option("sent_mails_sync")){
				echo(lang('no access permissions'));
				?><br><a href="<?php echo ROOT_URL?>/index.php?c=access&a=index" target="_top">Go back to Feng Office</a><?php 		
				return;
		}
		
		set_time_limit(0);		
		if (logged_user()->isGuest()) {
			echo(lang('no access permissions'));
			?><br><a href="<?php echo ROOT_URL?>/index.php?c=access&a=index" target="_top">Go back to Feng Office</a><?php
			return;
		}

		$id = get_id();
		if ($id>0){
			$account = MailAccounts::findById($id);
		}
		else{ 
			$email_address = array_var($_GET, 'email');			
			$user_name = array_var($_GET, 'username');
			if (isset ($email_address) && isset ($user_name)){
				$user_conditions = array("conditions" => array("`username`='".$user_name."'"));
			
				$user = Users::findOne($user_conditions);
			
				if (!isset ($user)){	
					echo(lang('cant find user'));
					?><br><a href="<?php echo ROOT_URL?>/index.php?c=access&a=index" target="_top">Go back to Feng Office</a><?php 		
					return;
				}			
											
 /**
  * Delete specific mail account
  *
  * @access public
  * @param void
  * @return null
  */
 function delete_account()
 {
     if (logged_user()->isGuest()) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $account = MailAccounts::findById(get_id());
     if (!$account instanceof MailAccount) {
         flash_error(lang('error delete mail account'));
         ajx_current("empty");
         return;
     }
     if (!$account->canDelete(logged_user())) {
         flash_error(lang('no access permissions'));
         ajx_current("empty");
         return;
     }
     $deleteMails = array_var($_GET, 'deleteMails', false);
     try {
         $accId = $account->getId();
         $accName = $account->getName();
         $accEmail = $account->getEmail();
         DB::beginWork();
         $account->delete($deleteMails);
         DB::commit();
         evt_add("mail account deleted", array("id" => $accId, "name" => $accName, "email" => $accEmail));
         flash_success(lang('success delete mail account'));
         if (array_var($_GET, 'reload', false)) {
             ajx_current("reload");
         } else {
             ajx_current("back");
         }
     } catch (Exception $e) {
         DB::rollback();
         flash_error(lang('error delete mail account'));
         ajx_current("empty");
     }
 }
/**
 * Return true is $user has $access_level (R/W) over $object
 *
 * @param User $user
 * @param ApplicationDataObject $object
 * @param int $access_level // 1 = read ; 2 = write
 * @return unknown
 */
function can_access(User $user, ApplicationDataObject $object, $access_level)
{
    try {
        if (!$object instanceof ApplicationDataObject) {
            throw new Exception(lang('object dnx'));
        }
        $hookargs = array("user" => $user, "object" => $object, "access_level" => $access_level);
        $ret = null;
        Hook::fire('can_access', $hookargs, $ret);
        if (is_bool($ret)) {
            return $ret;
        }
        if ($object instanceof Comment) {
            return can_access($user, $object->getObject(), $access_level);
        }
        if ($user->isGuest() && $access_level == ACCESS_LEVEL_WRITE) {
            return false;
        }
        if ($object instanceof ProjectFileRevision) {
            return can_access($user, $object->getFile(), $access_level);
        }
        if ($object->columnExists('project_id')) {
            $user_id = $user->getId();
            if (!$object instanceof ProjectContact && $object->getCreatedById() == $user_id) {
                return true;
            }
            // the user is the creator of the object
            if ($object instanceof ProjectDataObject && $object->getProject() instanceof Project && $object->getProject()->getId() == $user->getPersonalProjectId()) {
                return true;
            }
            // The object belongs to the user's personal project
            $perms = ObjectUserPermissions::getAllPermissionsByObject($object, $user->getId());
            if ($perms && is_array($perms)) {
                //if the permissions for the user in the object are specially set
                return has_access_level($perms[0], $access_level);
            }
            $group_ids = GroupUsers::getGroupsCSVsByUser($user_id);
            if ($group_ids && $group_ids != '') {
                //user belongs to at least one group
                $perms = ObjectUserPermissions::getAllPermissionsByObject($object, $group_ids);
                if ($perms) {
                    foreach ($perms as $perm) {
                        if (has_access_level($perm, $access_level)) {
                            return true;
                        }
                        //there is one group permission that allows the user to access
                    }
                }
            }
            if ($object instanceof ProjectDataObject && $object->getProject()) {
                //if the object has a project assigned to it
                $proj_perm = ProjectUsers::findOne(array('conditions' => array('user_id = ? AND project_id = ? ', $user_id, $object->getProject()->getId())));
                if ($proj_perm && can_manage_type(get_class($object->manager()), $proj_perm, $access_level)) {
                    return true;
                    // if user has permissions over type of object in the project
                }
                if ($group_ids && $group_ids != '') {
                    //user belongs to at least one group
                    $proj_perms = ProjectUsers::findAll(array('conditions' => array('project_id = ' . $object->getProject()->getId() . ' AND user_id in (' . $group_ids . ')')));
                    if ($proj_perms) {
                        foreach ($proj_perms as $perm) {
                            if (can_manage_type(get_class($object->manager()), $perm, $access_level)) {
                                return true;
                            }
                            // if any group has permissions over type of object in the project
                        }
                    }
                }
            }
        } else {
            // handle object in multiple workspaces
            $user_id = $user->getId();
            if ($object->getCreatedById() == $user_id) {
                return true;
                // the user is the creator of the object
            }
            if ($object instanceof MailContent) {
                $acc = MailAccounts::findById($object->getAccountId());
                if (!$acc instanceof MailAccount) {
                    return false;
                    // it's an email with no account and not created by the user
                } else {
                    if ($access_level == ACCESS_LEVEL_READ && $acc->canView($user) || $access_level == ACCESS_LEVEL_WRITE && $acc->canDelete($user)) {
                        return true;
                    }
                }
            }
            $perms = ObjectUserPermissions::getAllPermissionsByObject($object, $user->getId());
            if ($perms && is_array($perms)) {
                //if the permissions for the user in the object are specially set
                return has_access_level($perms[0], $access_level);
            }
            $group_ids = GroupUsers::getGroupsCSVsByUser($user_id);
            if ($group_ids && $group_ids != '') {
                //user belongs to at least one group
                $perms = ObjectUserPermissions::getAllPermissionsByObject($object, $group_ids);
                if ($perms) {
                    foreach ($perms as $perm) {
                        if (has_access_level($perm, $access_level)) {
                            return true;
                            //there is one group permission that allows the user to access
                        }
                    }
                }
            }
            if ($object instanceof ProjectDataObject) {
                $ws = $object->getWorkspaces();
                foreach ($ws as $w) {
                    // if the object has a project assigned to it
                    $proj_perm = ProjectUsers::findOne(array('conditions' => array('user_id = ? AND project_id = ? ', $user_id, $w->getId())));
                    if ($proj_perm && can_manage_type(get_class($object->manager()), $proj_perm, $access_level)) {
                        return true;
                        // if user has permissions over type of object in the project
                    }
                    if ($group_ids && $group_ids != '') {
                        //user belongs to at least one group
                        $proj_perms = ProjectUsers::findAll(array('conditions' => array('project_id = ' . $w->getId() . ' AND user_id in (' . $group_ids . ')')));
                        if ($proj_perms) {
                            foreach ($proj_perms as $perm) {
                                if (can_manage_type(get_class($object->manager()), $perm, $access_level)) {
                                    return true;
                                }
                                // if any group has permissions over type of object in the project
                            }
                        }
                    }
                }
            }
        }
    } catch (Exception $e) {
        tpl_assign('error', $e);
        return false;
    }
    return false;
}
Exemple #5
0
;
og.emailFilters = {};
og.emailFilters.classif = '<?php 
echo user_config_option('mails classification filter');
?>
';
og.emailFilters.read = '<?php 
echo user_config_option('mails read filter');
?>
';
og.emailFilters.account = '<?php 
echo user_config_option('mails account filter');
?>
';
if (og.emailFilters.account != 0 && og.emailFilters.account != '') {
	og.emailFilters.accountName = '<?php 
$acc_id = user_config_option('mails account filter');
$acc = $acc_id > 0 ? MailAccounts::findById($acc_id) : null;
echo $acc instanceof MailAccount ? mysql_real_escape_string($acc->getName()) : '';
?>
';
} else og.emailFilters.accountName = '';
og.lastSelectedRow = {messages:0, mails:0, contacts:0, documents:0, weblinks:0, overview:0, linkedobjs:0, archived:0};

</script>
<?php 
include_once Env::getLayoutPath("listeners");
?>
</body>
</html>
 function getAccount()
 {
     return MailAccounts::findById($this->getAccountId());
 }
echo $genid;
?>
')">
			<?php 
echo lang("fetch imap folders");
?>
			</a>  
		</th>
	</tr>
	</table>
	<div class="mail-account-item">
	
	<?php 
$options = array();
if (isset($mail_acc_id) && config_option('sent_mails_sync')) {
    $mail_acc = MailAccounts::findById($mail_acc_id);
    $selected_folder = $mail_acc->getSyncFolder();
}
foreach ($imap_folders as $folder) {
    if (isset($selected_folder) && $folder->getFolderName() == $selected_folder) {
        $options[] = option_tag($folder->getFolderName(), null, array('selected' => "selected"));
    } else {
        $options[] = option_tag($folder->getFolderName(), null, null);
    }
}
$outbox_select_box_attrib = array('id' => $genid . 'outbox_select_box');
echo select_box('outbox_select_box', $options, $outbox_select_box_attrib);
?>
 </div>