コード例 #1
0
 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>';
         }
     }
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * 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}");
         }
     }
 }
コード例 #4
0
 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'));
 }
コード例 #5
0
 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;
 }
コード例 #6
0
 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;
 }
コード例 #7
0
 /**
  * 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);
 }
コード例 #8
0
 /**
  * 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);
         }
     }
 }