private function create_admin_modules_instances() { foreach (get_declared_classes() as $class) { $rclass = new ReflectionClass($class); if ($rclass->isSubclassOf("AdminModule") && !$rclass->isAbstract()) { $module = new $class(); if (Base_AclCommon::i_am_sa() || Base_AclCommon::i_am_admin() && $module->access_admin() || Base_AclCommon::i_am_user() && $module->access_user()) { $this->admin_modules[$class] = $module; } } } ksort($this->admin_modules); }
public static function get_access($module, $section = '', $force_check = false) { if (!$force_check && Base_AclCommon::i_am_sa()) { return true; } static $cache = array(); if (!isset($cache[$module])) { $cache[$module] = array(); $ret = DB::GetAssoc('SELECT section, allow FROM base_admin_access WHERE module=%s', array($module)); $defaults = array('' => 1); if (class_exists($module . 'Common') && method_exists($module . 'Common', 'admin_access_levels')) { $raws = call_user_func(array($module . 'Common', 'admin_access_levels')); if ($raws == false) { $defaults[''] = $raws; } else { $defaults[''] = 1; if (is_array($raws)) { foreach ($raws as $s => $v) { if (isset($v['default'])) { $defaults[$s] = $v['default']; } else { $defaults[$s] = 0; } } } } } foreach ($defaults as $s => $v) { if (isset($ret[$s])) { $cache[$module][$s] = $ret[$s]; } else { $cache[$module][$s] = $v; } } } return $cache[$module][$section]; }
public function admin($store = false) { if (!Base_AclCommon::i_am_sa()) { return; } if ($this->is_back()) { $this->parent->reset(); return; } if (!$store) { Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href()); } if (Base_EssClientCommon::is_no_ssl_allowed()) { Base_ActionBarCommon::add('settings', __('SSL settings'), $this->create_callback_href(array('Base_BoxCommon', 'push_module'), array('Base_EssClient', 'no_ssl_settings'))); } if (Base_EssClientCommon::has_license_key() == false) { $this->terms_and_conditions(); Base_EssClientCommon::server(true); } try { if (Base_EssClientCommon::has_license_key()) { $data = Base_EssClientCommon::server()->installation_registered_data(); if ($data) { $data['license_key'] = Base_EssClientCommon::get_license_key(); $data['status'] = Base_EssClientCommon::get_installation_status(); ///////// Status //////// print '<div class="important_notice">'; print '<div style="margin: 5px">' . __('Thank you for registering your EPESI installation.') . '</div>'; $status_description = ''; $verbose_description = ''; if (stripos($data['status'], 'confirmed') !== false || stripos($data['status'], 'validated') !== false) { $status_description = __('registration done'); $verbose_description = __('The registration process is complete.'); } else { $status_description = __('waiting for e-mail confirmation'); $verbose_description = __('You need to verify your e-mail address. An e-mail was sent to the Administrator\'s e-mail address with a link to confirm the e-mail address.'); } print '<div class="important_notice_frame"><span style="font-weight:bold;">' . __('License Key') . ': ' . '</span>' . $data['license_key'] . '<br/>'; print '<span style="font-weight:bold;">' . __('Status') . ': ' . '</span>' . $status_description . '</div>'; print '<div style="margin: 5px">' . $verbose_description . '</div>'; print '</div>'; Base_ActionBarCommon::add('edit', __('Edit company details'), $this->create_callback_href(array($this, 'register_form'), array($data))); } else { $email = Base_EssClientCommon::get_support_email(); print '<div class="important_notice">' . __('Your EPESI ID is not recognized by EPESI Store Server. Please contact EPESI team at %s.', array($email)) . '</div>'; Base_ActionBarCommon::add('delete', __('Revoke license key'), $this->create_confirm_callback_href(__('Are you sure you want to revoke your EPESI License Key?'), array('Base_EssClientCommon', 'clear_license_key'))); } $url = get_epesi_url() . '/modules/Base/EssClient/tos/tos.php'; Base_ActionBarCommon::add('search', __('Terms & Conditions'), 'target="_blank" href="' . $url . '"'); Base_ActionBarCommon::add('settings', __('Edit license key'), $this->create_callback_href(array($this, 'license_key_form'))); } } catch (Exception $e) { print '<div class="important_notice">' . __('There was an error while trying to connect to Epesi Store Server. Please try again later.') . '<br>'; print __('If the problem persists, please contact us at %s', array('<a href="http://forum.epesibim.com/" target="_blank">http://forum.epesibim.com/</a>')) . '<br>'; print '<br>'; print __('Error message: ') . '<br>'; print '<div class="important_notice_frame">' . $e->getMessage(); print '</div></div>'; Base_ActionBarCommon::add('retry', __('Retry'), $this->create_href(array())); return; } print Base_EssClientCommon::client_messages_frame(); }
protected function login_form() { if (Base_AclCommon::i_am_user() && !Base_AclCommon::i_am_sa()) { Base_User_LoginCommon::logout(); } $form = SimpleLogin::form(); return "<p>$form</p>"; }
public static function admin_access() { $trial = defined('TRIAL_MODE') ? TRIAL_MODE : 0; return Base_AclCommon::i_am_sa() && !$trial && !DEMO_MODE; }
public function admin() { if (!Base_AclCommon::i_am_sa() || $this->is_back()) { $this->parent->reset(); return; } Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href()); $cmr = ModuleManager::call_common_methods('admin_caption'); foreach ($cmr as $name => $caption) { if (!ModuleManager::check_access($name, 'admin') || $name == 'Base_Admin') { continue; } if (!isset($caption)) { continue; } if (!is_array($caption)) { $caption = array('label' => $caption); } if (!isset($caption['section'])) { $caption['section'] = __('Misc'); } $mod_ok[$name] = $caption; } uksort($mod_ok, 'strcasecmp'); $form = $this->init_module('Libs_QuickForm'); $buttons = array(); load_js('modules/Base/Admin/js/main.js'); foreach ($mod_ok as $name => $caption) { if (method_exists($name . 'Common', 'admin_icon')) { $icon = call_user_func(array($name . 'Common', 'admin_icon')); } else { $icon = Base_ThemeCommon::get_template_file($name, 'icon.png'); if (!file_exists($icon)) { $icon = Base_ThemeCommon::get_template_file('Base_Admin', 'icon.png'); } } $button_id = $name . '__button'; $enable_field = $name . '_enable'; $sections = array(); $sections_id = $name . '__sections'; $enable_default = Base_AdminCommon::get_access($name, '', true); $form->addElement('checkbox', $enable_field, $enable_default === null ? __('Access blocked') : __('Allow access'), null, array('onchange' => 'admin_switch_button("' . $button_id . '",this.checked, "' . $sections_id . '");', 'id' => $enable_field, 'style' => $enable_default === null ? 'display:none;' : '')); $form->setDefaults(array($enable_field => $enable_default)); eval_js('admin_switch_button("' . $button_id . '",$("' . $enable_field . '").checked, "' . $sections_id . '", 1);'); if (class_exists($name . 'Common') && is_callable(array($name . 'Common', 'admin_access_levels'))) { $raws = call_user_func(array($name . 'Common', 'admin_access_levels')); if (is_array($raws)) { foreach ($raws as $s => $v) { $type = isset($v['values']) ? 'select' : 'checkbox'; $vals = isset($v['values']) ? $v['values'] : null; $s_field = $name . '__' . $s . '__switch'; $form->addElement($type, $s_field, $v['label'], $vals); $form->setDefaults(array($s_field => Base_AdminCommon::get_access($name, $s, true))); $sections[$s] = $s_field; } } } $buttons[$caption['section']][$name] = array('label' => $caption['label'], 'icon' => $icon, 'id' => $button_id, 'enable_switch' => $enable_field, 'sections_id' => $sections_id, 'sections' => $sections); } if ($form->validate()) { $vals = $form->exportValues(); DB::Execute('DELETE FROM base_admin_access'); foreach ($buttons as $section => $bs) { foreach ($bs as $name => $b) { DB::Execute('INSERT INTO base_admin_access (module, section, allow) VALUES (%s, %s, %d)', array($name, '', isset($vals[$b['enable_switch']]) && $vals[$b['enable_switch']] ? 1 : 0)); foreach ($b['sections'] as $s => $f) { DB::Execute('INSERT INTO base_admin_access (module, section, allow) VALUES (%s, %s, %d)', array($name, $s, isset($vals[$f]) ? $vals[$f] : 0)); } } } $this->parent->reset(); return; } Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); $sections = array(); foreach ($buttons as $section => $b) { $sections[$section] = array('header' => $section, 'buttons' => $b); } $sections = $this->sort_sections($sections); $theme = $this->pack_module('Base/Theme'); $form->assign_theme('form', $theme); $theme->assign('header', __('Admin Panel Access')); $theme->assign('sections', $sections); $theme->display('access_panel'); }
* @copyright Copyright © 2007, Telaxus LLC * @license MIT * @package epesi-base */ $fullscreen = !defined("_VALID_ACCESS"); !$fullscreen || define("_VALID_ACCESS", true); define('CID', false); require_once 'include/data_dir.php'; $config = file_exists(DATA_DIR . '/config.php'); if ($config) { include_once 'include.php'; ModuleManager::load_modules(); } if ($config && class_exists('Base_AclCommon')) { if (Base_AclCommon::i_am_user()) { if (!Base_AclCommon::i_am_sa()) { die('Only super admin can access this page'); } } else { $auth = SimpleLogin::form(); if ($auth) { print $auth; die; } } } if (class_exists('Base_LangCommon')) { Base_LangCommon::update_translations(); } if (class_exists('Base_ThemeCommon')) { Base_ThemeCommon::create_cache();
public static function submit_contact($values, $mode) { switch ($mode) { case 'cloning': $values['login'] = ''; return $values; case 'display': // display copy company data button and do update if needed self::copy_company_data_subroutine($values); $is_employee = false; if (isset($values['related_companies']) && is_array($values['related_companies']) && in_array(CRM_ContactsCommon::get_main_company(), $values['related_companies'])) { $is_employee = true; } if (isset($values['company_name']) && $values['company_name'] == CRM_ContactsCommon::get_main_company()) { $is_employee = true; } $me = CRM_ContactsCommon::get_my_record(); $emp = array($me['id']); $cus = array(); if ($is_employee) { $emp[] = $values['id']; } else { $cus[] = 'P:' . $values['id']; } $ret = array(); $ret['new'] = array(); $ret['new']['crm_filter'] = '<a ' . Utils_TooltipCommon::open_tag_attrs(__('Set CRM Filter')) . ' ' . Module::create_href(array('set_crm_filter' => 1)) . '>F</a>'; if (isset($_REQUEST['set_crm_filter'])) { CRM_FiltersCommon::set_profile('c' . $values['id']); } if (ModuleManager::is_installed('CRM/Meeting') !== -1 && Utils_RecordBrowserCommon::get_access('crm_meeting', 'add')) { $ret['new']['event'] = '<a ' . Utils_TooltipCommon::open_tag_attrs(__('New Meeting')) . ' ' . Utils_RecordBrowserCommon::create_new_record_href('crm_meeting', array('employees' => $emp, 'customers' => $cus, 'status' => 0, 'priority' => 1, 'permission' => 0)) . '><img border="0" src="' . Base_ThemeCommon::get_template_file('CRM_Calendar', 'icon-small.png') . '"></a>'; } if (ModuleManager::is_installed('CRM/Tasks') !== -1 && Utils_RecordBrowserCommon::get_access('task', 'add')) { $ret['new']['task'] = '<a ' . Utils_TooltipCommon::open_tag_attrs(__('New Task')) . ' ' . Utils_RecordBrowserCommon::create_new_record_href('task', array('employees' => $emp, 'customers' => $cus, 'status' => 0, 'priority' => 1, 'permission' => 0)) . '><img border="0" src="' . Base_ThemeCommon::get_template_file('CRM_Tasks', 'icon-small.png') . '"></a>'; } if (ModuleManager::is_installed('CRM/PhoneCall') !== -1 && Utils_RecordBrowserCommon::get_access('phonecall', 'add')) { $ret['new']['phonecall'] = '<a ' . Utils_TooltipCommon::open_tag_attrs(__('New Phonecall')) . ' ' . Utils_RecordBrowserCommon::create_new_record_href('phonecall', array('date_and_time' => date('Y-m-d H:i:s'), 'customer' => 'P:' . $values['id'], 'employees' => $me['id'], 'status' => 0, 'permission' => 0, 'priority' => 1), 'none', false) . '><img border="0" src="' . Base_ThemeCommon::get_template_file('CRM_PhoneCall', 'icon-small.png') . '"></a>'; } $ret['new']['note'] = Utils_RecordBrowser::$rb_obj->add_note_button('contact/' . $values['id']); return $ret; case 'adding': $values['permission'] = Base_User_SettingsCommon::get('CRM_Common', 'default_record_permission'); break; case 'add': if (isset($values['email']) && $values['email'] == '' && $values['login'] != 0 && $mode == 'add') { $values['email'] = DB::GetOne('SELECT mail FROM user_password WHERE user_login_id=%d', array($values['login'])); } case 'edit': if (isset($values['create_company'])) { $comp_id = Utils_RecordBrowserCommon::new_record('company', array('company_name' => $values['create_company_name'], 'address_1' => $values['address_1'], 'address_2' => $values['address_2'], 'country' => $values['country'], 'city' => $values['city'], 'zone' => isset($values['zone']) ? $values['zone'] : '', 'postal_code' => $values['postal_code'], 'phone' => $values['work_phone'], 'fax' => $values['fax'], 'web_address' => $values['web_address'], 'permission' => $values['permission'])); if (!isset($values['company_name'])) { $values['company_name'] = null; } if (!isset($values['related_companies'])) { $values['related_companies'] = array(); } if (!is_array($values['related_companies'])) { $values['related_companies'] = array($values['related_companies']); } if (!$values['company_name']) { $values['company_name'] = $comp_id; } else { $values['related_companies'][] = $comp_id; } } if (Base_AclCommon::i_am_admin()) { if ($values['login'] == 'new') { if (!$values['set_password']) { $values['set_password'] = null; } Base_User_LoginCommon::add_user($values['username'], $values['email'], $values['set_password']); $values['login'] = Base_UserCommon::get_user_id($values['username']); } else { if ($values['login']) { Base_User_LoginCommon::change_user_preferences($values['login'], isset($values['email']) ? $values['email'] : '', isset($values['set_password']) ? $values['set_password'] : null); if (isset($values['username']) && $values['username']) { Base_UserCommon::rename_user($values['login'], $values['username']); } } } if (Base_AclCommon::i_am_sa() && $values['login'] && isset($values['admin']) && $values['admin'] !== '') { $old_admin = Base_AclCommon::get_admin_level($values['login']); if ($old_admin != $values['admin']) { $admin_arr = array(0 => 'No', 1 => 'Administrator', 2 => 'Super Administrator'); if (Base_UserCommon::change_admin($values['login'], $values['admin']) !== true) { Utils_RecordBrowserCommon::new_record_history('contact', $values['id'], 'Admin set from "' . $admin_arr[$old_admin] . '" to "' . $admin_arr[$values['admin']]); } } } } unset($values['admin']); unset($values['username']); unset($values['set_password']); unset($values['confirm_password']); } return $values; }
public function edit_user_form($edit_id) { if ($this->is_back()) { if ($this->parent->get_type() != 'Base_Admin') { $x = ModuleManager::get_instance('/Base_Box|0'); if (!$x) { trigger_error('There is no base box module instance', E_USER_ERROR); } $x->pop_main(); } return false; } $form = $this->init_module(Libs_QuickForm::module_name(), $edit_id >= 0 ? __('Applying changes') : __('Creating new user')); //create new user $form->addElement('header', null, $edit_id >= 0 ? __('Edit user') : __('Create new user')); $form->addElement('hidden', $this->create_unique_key('edit_user'), $edit_id); $form->addElement('text', 'username', __('Username')); // require a username $form->addRule('username', __('A username must be between 3 and 32 chars'), 'rangelength', array(3, 32)); $form->addRule('username', __('Field required'), 'required'); $form->addElement('text', 'mail', __('E-mail')); $form->addRule('mail', __('Field required'), 'required'); $form->addRule('mail', __('Invalid e-mail address'), 'email'); $form->addElement('select', 'admin', __('Administrator'), array(0 => __('No'), 1 => __('Administrator'), 2 => __('Super Administrator'))); if ($edit_id < 0) { $form->addElement('html', '<tr><td colspan=2><b>' . __('If you leave password fields empty random password is automatically generated and e-mailed to the user.') . '</b></td></tr>'); } else { $form->addElement('html', '<tr><td colspan=2><b>' . __('If you leave password fields empty, password is not changed.') . '</b></td></tr>'); } //$form->addElement('header',null,__('If you leave this fields empty, password is not changed.')); $form->addElement('password', 'pass', __('Password')); $form->addElement('password', 'pass_c', __('Confirm Password')); $form->addRule(array('pass', 'pass_c'), __('Passwords don\'t match'), 'compare'); $form->addRule('pass', __('Your password must be longer then 5 chars'), 'minlength', 5); if ($edit_id >= 0) { $form->addElement('select', 'active', __('Active'), array(1 => __('Yes'), 0 => __('No'))); //set defaults $ret = DB::Execute('SELECT u.login, p.mail, u.active, u.admin FROM user_login u INNER JOIN user_password p ON (p.user_login_id=u.id) WHERE u.id=%d', $edit_id); if ($ret && ($row = $ret->FetchRow())) { $form->setDefaults(array('username' => $row['login'], 'mail' => $row['mail'], 'active' => $row['active'], 'admin' => $row['admin'])); } } $form->registerRule('check_username', 'callback', 'check_username_free', 'Base_User_LoginCommon'); $form->addRule(array('username', $this->create_unique_key('edit_user')), __('Username already taken'), 'check_username'); if ($form->validate()) { if ($form->process(array(&$this, 'submit_edit_user_form'))) { if ($this->parent->get_type() != 'Base_Admin') { $x = ModuleManager::get_instance('/Base_Box|0'); if (!$x) { trigger_error('There is no base box module instance', E_USER_ERROR); } $x->pop_main(); } return false; } } else { $form->display(); } Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href()); Base_ActionBarCommon::add('save', __('Save'), $form->get_submit_form_href()); if (Base_AclCommon::i_am_sa() && $edit_id >= 0) { Base_ActionBarCommon::add('settings', __('Log as user'), $this->create_callback_href(array($this, 'log_as_user'), $edit_id)); } return true; }
public static function basic_clearance($all = false) { $user_clearance = array(__('All users') => 'ALL'); if ($all || Base_AclCommon::i_am_admin()) { $user_clearance[__('Admin')] = 'ADMIN'; } if ($all || Base_AclCommon::i_am_sa()) { $user_clearance[__('Superadmin')] = 'SUPERADMIN'; } return $user_clearance; }