public function __construct() { parent::__construct(); $authID = session::item('auth_id'); $userID = session::item('user_id'); $ipaddress = substr(input::ipaddress(), 0, 15); $useragent = substr(input::useragent(), 0, 255); $user = array(); if ($authID && ($user = $this->getSession($authID, $userID, $ipaddress, $useragent))) { if ($user['active_date'] < date_helper::now() - 60 * $this->timeout) { $this->saveSession($authID, $userID, $ipaddress, $useragent); if (isset($user['user_id']) && $user['user_id']) { $this->saveLastvisit($user['user_id']); } } } else { $cookie = cookie::item('sessdata'); $cookie = $cookie ? @json_decode($cookie, true) : array(); if ($cookie && is_array($cookie)) { $userID = isset($cookie['user_id']) ? $cookie['user_id'] : ''; $email = isset($cookie['email']) ? $cookie['email'] : ''; $passhash = isset($cookie['passhash']) ? $cookie['passhash'] : ''; if ($userID && is_numeric($userID) && $userID > 0) { if ($user = $this->getUser($userID, false, false)) { $newPasshash = $this->generatePasshash($email, $user['password']); if ($user['active'] && $user['verified'] && strcmp($email, $user['email']) == 0 && strcmp($passhash, $newPasshash) == 0) { $authID = $this->saveSession(0, $user['user_id'], $ipaddress, $useragent); $this->saveLastvisit($user['user_id']); } else { $user = array(); } } } } } if (!$user || !isset($user['user_id']) || !$user['user_id'] || !$this->createUserSession($user)) { $userID = 0; if (!$user) { $authID = $this->saveSession(0, $userID, $ipaddress, $useragent); } $this->createGuestSession(); } session::set('auth_id', $authID); session::set('user_id', $userID); // Is the site offline? if (!input::isCP() && !config::item('site_online', 'system') && !session::permission('site_access_offline', 'system') && uri::getURI() != 'site/offline' && uri::segment(1) != 'load') { router::redirect('site/offline'); } elseif (input::isCP() && !session::permission('site_access_cp', 'system') && (uri::getURI() != 'cp' && uri::getURI() != 'cp/users/login' && uri::getURI() != 'cp/users/login/license')) { router::redirect('cp/users/login'); } if (!input::isCP() && $this->isLoggedin() && session::permission('site_access_cp', 'system') && uri::segment(1) != 'load' && input::demo(0, '', session::item('user_id'))) { $this->logout(); view::setInfo('For the purposes of this demo you may not use front end of the site under the administrator account. As such we have now logged you out.<br/>Feel free ' . html_helper::anchor('users/signup', 'register on the site') . ' to test user end functionality or ' . html_helper::anchor('users/login', 'login') . ' using your existing account details if you have one already.'); router::redirect(); } }
public static function anchor($user, $attr = array()) { if (input::isCP()) { $user['slug'] = 'cp/users/edit/' . $user['user_id']; } if (!input::isCP() && ($user['group_id'] == config::item('group_cancelled_id', 'users') || !$user['verified'] || !$user['active'])) { $anchor = $user['name'] . ' (' . __('account_inactive', 'users') . ')'; } else { $attr = $attr ? array_merge($attr, array('class' => 'username')) : array('class' => 'username'); $anchor = html_helper::anchor($user['slug'], $user['name'], $attr); } return $anchor; }
public function usersSettingsAccountOptions($settings, $user = array()) { if (input::isCP()) { if (uri::segment(3) == 'edit') { loader::helper('array'); $expiration = array('name' => __('expire_date', 'users_account'), 'keyword' => 'expire_date', 'type' => 'date', 'value' => $user ? $user['expire_date'] : 0, 'rules' => array('valid_date'), 'select' => true); $credits = array('name' => __('credits_current', 'users_account'), 'keyword' => 'total_credits', 'type' => 'number', 'value' => $user ? $user['total_credits'] : 0, 'rules' => array('required' => 1, 'min_value' => 0)); $settings = array_helper::spliceArray($settings, 'group_id', $credits, 'total_credits'); $settings = array_helper::spliceArray($settings, 'group_id', $expiration, 'expire_date'); } } else { if (config::item('subscriptions_active', 'billing')) { $settings['subscription'] = array('name' => __('plan_current', 'users_account'), 'keyword' => 'subscription', 'type' => 'static', 'value' => config::item('usergroups', 'core', session::item('group_id')) . (session::item('expire_date') ? ' (' . __('expire_date', 'users_account') . ': ' . date_helper::formatDate(session::item('expire_date'), 'date') . ')' : '') . (session::permission('plans_purchase', 'billing') ? ' - ' . html_helper::anchor('billing/plans', __('plan_change', 'users_account')) : '')); } if (config::item('credits_active', 'billing')) { $settings['credits'] = array('name' => __('credits_current', 'users_account'), 'keyword' => 'subscription', 'type' => 'static', 'value' => session::item('total_credits') . (session::permission('credits_purchase', 'billing') ? ' - ' . html_helper::anchor('billing/credits', __('credits_purchase', 'users_account')) : '')); } } return $settings; }
public function getFields($plugin, $categoryID = 0, $type = 'view', $config = '', $search = false) { if (!($fields = $this->cache->item('db_fields_' . $plugin . '_' . session::item('language') . '_' . $categoryID . '_' . $type . '_' . $config . '_' . ($search ? 1 : 0))) && !is_array($fields)) { $fields = $fieldIDs = array(); // Get fields $qfields = $this->db->query("SELECT * FROM `:prefix:core_fields` WHERE `plugin`=? AND `category_id`=? ORDER BY `order_id` ASC", array($plugin, $categoryID))->result(); foreach ($qfields as $field) { // Set index $index = $field['field_id']; // Decode configuration array $field['config'] = $field['config'] ? @json_decode($field['config'], true) : array(); if (!is_array($field['config'])) { $field['config'] = array(); } // Is configuration item present? if ($config == '' || $config == 'all' || isset($field['config'][$config]) && $field['config'][$config]) { $fields[$index] = array(); $fields[$index]['keyword'] = $field['keyword']; $fields[$index]['multilang'] = $field['multilang']; $fields[$index]['class'] = $field['class']; $fields[$index]['style'] = $field['style']; if (isset($field['config']['html']) && $field['config']['html']) { $fields[$index]['html'] = 1; } // Basic field data if ($type == 'query') { if ($this->isMultiValue($field['type'])) { $fields[$index]['items'] = array(); } } else { if ($search && $field['sname_' . session::item('language')] != '') { $fields[$index]['name'] = $field['sname_' . session::item('language')]; } else { $fields[$index]['name'] = $type == 'view' && $field['vname_' . session::item('language')] ? $field['vname_' . session::item('language')] : $field['name_' . session::item('language')]; } $fields[$index]['type'] = $field['type']; } // Data for edit and grid/browse type of pages if ($type == 'full' || $type == 'edit' || $type == 'grid') { $fields[$index]['field_id'] = $field['field_id']; $fields[$index]['plugin'] = $field['plugin']; $fields[$index]['category_id'] = $field['category_id']; $fields[$index]['required'] = $field['required']; $fields[$index]['system'] = $field['system']; $fields[$index]['order_id'] = $field['order_id']; } // Data for edit type of pages if ($type == 'full' || $type == 'edit') { $fields[$index]['validate'] = $field['validate']; $fields[$index]['validate_error'] = $field['validate_error_' . session::item('language')]; $fields[$index]['config'] = $field['config']; // Check field's type if ($this->isMultiValue($field['type'])) { $fields[$index]['items'] = array(); } } // Check field's type if ($this->isMultiValue($field['type'])) { // Store field ID $fieldIDs[$field['field_id']] = $this->getValueFormat($field['type']); } } } // Do we have any field IDs if ($fieldIDs) { // Get items $items = $this->db->query("SELECT * FROM `:prefix:core_fields_items` WHERE `field_id` IN (" . implode(',', array_keys($fieldIDs)) . ") ORDER BY `order_id` ASC")->result(); // Assign items to the field foreach ($items as $item) { $id = $fieldIDs[$item['field_id']] == 'multiple' ? $item['item_id'] : $item['order_id']; if ($search && $item['sname_' . session::item('language')] != '') { $fields[$item['field_id']]['items'][$id] = $item['sname_' . session::item('language')]; } else { $fields[$item['field_id']]['items'][$id] = $item['name_' . session::item('language')]; } } } $this->cache->set('db_fields_' . $plugin . '_' . session::item('language') . '_' . $categoryID . '_' . $type . '_' . $config . '_' . ($search ? 1 : 0), $fields, 60 * 60 * 24 * 30); } if ($type == 'edit' && !$search && input::isCP()) { foreach ($fields as $field) { if ($field['type'] == 'textarea' && isset($field['config']['html']) && $field['config']['html']) { view::includeJavascript('externals/ckeditor/ckeditor.js'); } } } elseif ($config == 'in_view') { $names = array(); foreach ($fields as $field) { $names[$field['keyword']] = $field['name']; } config::set('fields_' . $plugin, $names, 'core'); } return $fields; }
public function updateConfig() { if (!input::isCP()) { if (!($settings = $this->cache->item('core_template_config_' . session::item('template'), true))) { loader::model('system/templates'); $template = $this->templates_model->getTemplate(session::item('template')); $settings = isset($template['settings']) ? $template['settings'] : array(); $this->cache->set('core_template_config_' . session::item('template'), $settings, 60 * 60 * 24 * 30, true); } config::set($settings, '', 'template'); } }