function displayEditStatus($items) { $time_now = time(); foreach ($items as $item) { $time_diff = $time_now - $item['timestamp']; // Grab information about the person editing. $user_info = NModel::factory('cms_auth'); $user_info->id = $item['user_id']; if ($user_info->find()) { while ($user_info->fetch()) { $name = $user_info->real_name; $email = $user_info->email; } } unset($cms_auth); // Check to see if you're the one editing. $auth = new NAuth(); $current_user_id = $auth->currentUserID(); unset($auth); // Output the item. if ($current_user_id == $item['user_id']) { print '<div id="actiontrack">You have been editing this record for ' . $time_diff . ' seconds.</div>'; } else { print '<div id="actiontrack"><a href="mailto:' . $email . '">' . $name . '</a> was editing this item ' . $time_diff . ' seconds ago.</div>'; } } }
/** * getSetting - Get a user's setting from the database - or use the defaults. * * @param int The id of the particular setting. * @return boolean **/ function getSetting($setting) { $auth = new NAuth(); $this->user_id = $auth->currentUserID(); $this->setting = $setting; if ($this->find(null, true)) { $ret = (bool) $this->value; } else { $user_settings = $GLOBALS['USER_SETTINGS']; $ret = isset($user_settings[$setting]) ? $user_settings[$setting] : true; } $this->reset(); return $ret; }
/** * generateFeedToken - Generate a feed_token for a logged in user. * Puts it into the database and returns to the passed url. * * @return void **/ function generateFeedToken() { $redirect_url = isset($_GET['redirect']) ? $_GET['redirect'] : '/nterchange'; $random = $_SERVER['REMOTE_ADDR'] . rand(0, 1000000) . time(); $tmp_feed_token = md5($random); $auth = new NAuth(); $user_id = $auth->currentUserID(); unset($auth); $cms_user = NModel::factory('cms_auth'); $cms_user->id = $user_id; if ($cms_user->find()) { while ($cms_user->fetch()) { $cms_user->feed_token = $tmp_feed_token; $cms_user->save(); header("Location:{$redirect_url}"); } } }
function login() { NDebug::debug('Redirecting ' . $_SERVER['REMOTE_ADDR'] . ' to login to nterchange.', N_DEBUGTYPE_AUTH); $auth = new NAuth(); $auth->start(); $username = $auth->username; $status = $auth->status; $form = new NQuickForm('login_form', 'post', preg_replace('/logout=1[\\&]?/', '', $_SERVER['REQUEST_URI'])); $form->setDefaults(array('username' => $username)); if (isset($_GET['logout']) && $_GET['logout'] == 1) { $form->addElement('cmsalert', 'logout_header', 'You have signed out. Sign back in to continue.'); } else { if ($status < 0 && !empty($username)) { $form->addElement('cmserror', 'login_status', $auth->statusMessage($status)); } else { $form->addElement('cmsalert', 'login_status', 'Please sign in and you will be sent right along.'); } } $form->addElement('text', 'username', 'Username', array('maxlength' => 32, 'style' => 'width:300px;')); $form->addElement('password', 'password', 'Password', array('maxlength' => 32, 'style' => 'width:150px;')); // $form->addElement('checkbox', 'remember', null, 'Remember me for 2 weeks.'); $form->addElement('submit', 'login', 'Sign In'); $referer = isset($_GET['_referer']) ? urlencode($_GET['_referer']) : urlencode('/' . $this->base_dir); $form->addElement('hidden', '_referer', $referer); if ($auth->checkAuth()) { NDebug::debug('Logged ' . $_POST['username'] . ' from ' . $_SERVER['REMOTE_ADDR'] . ' in to nterchange.', N_DEBUGTYPE_AUTH); // Log this in the audit trail. $user_id = $auth->currentUserID(); $audit_trail =& NController::factory('audit_trail'); $audit_trail->insert(array('asset' => 'users', 'asset_id' => $user_id, 'action_taken' => AUDIT_ACTION_LOGIN)); unset($audit_trail); // Redirect to the page requested. header('Location:' . urldecode($referer)); exit; } $content = $form->toHTML(); $this->set(array('MAIN_CONTENT' => $content, 'username' => $username, 'status' => $status)); $this->auto_render = false; $this->render(array('layout' => 'login')); }
function getWorkflowUser($workflow_group_id) { $model =& $this->loadModel('workflow_users'); if ($model) { $auth = new NAuth(); $current_user = $auth->currentUserID(); $model->workflow_group_id = $workflow_group_id; $model->user_id = $current_user; if ($model->find(null, true)) { return $model; } } return false; }
/** * checkRSSFeed - Checks the level of the user and exposes a link to an audit trail RSS feed * to that user if they're an admin level or higher. * * @return void **/ function checkRSSFeed() { // Check the user level - this only shows up for admins or higher. $auth = new NAuth(); $current_user_level = $auth->getAuthData('user_level'); $user_id = $auth->currentUserID(); if ($current_user_level >= N_USER_ADMIN) { // Get their feed token if they have it. $cms_user = NModel::factory('cms_auth'); $feed_token = $cms_user->getFeedToken($user_id); unset($cms_user); // If they don't have one, we should help them to generate it. if (!isset($feed_token)) { $rss = '<p><a href="/nterchange/rss/generate_feed_token?redirect=' . urlencode('/nterchange/audit_trail/viewlist') . '">Click here to generate a private RSS feed</a></p>'; } else { $rss = '<p><a href="/nterchange/rss/audit_trail?token=' . $feed_token . '">Private RSS Feed of Audit Trail Activity</a> - <a href="/nterchange/audit_trail/generate_feed_token">Regenerate Token</a></p>'; } // Then show the link so that they can put it into their feed reader. $this->set('rss_feed', $rss); } unset($auth); }