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 searchFieldListSelect($params) { $asset = $params['asset'] ? $params['asset'] : null; $searched_field = $params['searched_field'] ? $params['searched_field'] : null; if (isset($searched_field)) { $searched_field = str_replace(" ", "_", strtolower($searched_field)); } $model = NModel::factory($asset); $fields = $model->fields(); // Remove a bunch of fields if you're not an admin - makes it a little bit simpler. $auth = new NAuth(); $current_user_level = $auth->getAuthData('user_level'); unset($auth); // Preload for the search_field default. $acon = NController::factory('asset'); $select = 'Search Field: <select name="search_field">'; foreach ($fields as $field) { if ($current_user_level < N_USER_ADMIN) { if (in_array($field, $this->admin_only_fields)) { continue; } } $select .= '<option value="' . $field . '"'; if (isset($searched_field) && $searched_field == $field) { $select .= ' selected="selected"'; } elseif (isset($model->search_field) && $field == $model->search_field && !$searched_field) { $select .= ' selected="selected"'; } elseif (!isset($model->search_field) && $field == $acon->search_field && !$searched_field) { $select .= ' selected="selected"'; } $select .= '>' . ucwords(str_replace('_', ' ', $field)) . '</option>'; } $select .= '</select>'; unset($model); unset($acon); print $select; }
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); }
/** * dashboardVersionCheck - This runs for ADMIN users or higher and lets them know * if there is an upgrade available for nterchange. Called from the dashboard * helper and displays on the dashboard. * * @return void **/ function dashboardVersionCheck() { // Check the user level - this only shows up for admins or higher. $auth = new NAuth(); $current_user_level = $auth->getAuthData('user_level'); unset($auth); if ($current_user_level >= N_USER_ADMIN) { $newest = $this->versionCheck(); if (is_array($newest)) { $upgrade = $this->compareVersions(NTERCHANGE_VERSION, $newest['version']); if ($upgrade == true) { $this->set('upgrade', $newest); $this->set('nterchange_version', NTERCHANGE_VERSION); } else { $this->set('uptodate', true); } $this->render(array('action' => 'dashboard_version_check', 'return' => false)); } else { NDebug::debug('There was an error with the version check.', N_DEBUGTYPE_INFO); } } }