function presence_user_extensions() { $userman = FreePBX::Userman(); $extensions = array(); $xmpp_users = FreePBX::Xmpp()->getAllUsers(); foreach ($xmpp_users as $user_to) { $user = $userman->getUserByID($user_to['user']); if ($user['default_extension'] == 'none') { $default = array(); } else { $default = array($user['default_extension']); } $assigned = $userman->getAssignedDevices($user_to['user']); if (!$assigned) { $assigned = array(); } $extensions[$user_to['username']] = array_unique(array_merge($default, $assigned), SORT_NUMERIC); } return $extensions; }
//Default Group Settings FreePBX::Userman()->setModuleSettingByGID($id, 'contactmanager', 'show', true); FreePBX::Userman()->setModuleSettingByGID($id, 'contactmanager', 'groups', array($id)); FreePBX::Userman()->setModuleSettingByGID($id, 'fax', 'enabled', true); FreePBX::Userman()->setModuleSettingByGID($id, 'fax', 'attachformat', "pdf"); FreePBX::Userman()->setModuleSettingByGID($id, 'faxpro', 'localstore', "true"); FreePBX::Userman()->setModuleSettingByGID($id, 'restapi', 'restapi_token_status', true); FreePBX::Userman()->setModuleSettingByGID($id, 'restapi', 'restapi_users', array("self")); FreePBX::Userman()->setModuleSettingByGID($id, 'restapi', 'restapi_modules', array("*")); FreePBX::Userman()->setModuleSettingByGID($id, 'restapi', 'restapi_rate', "1000"); FreePBX::Userman()->setModuleSettingByGID($id, 'xmpp', 'enable', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Global', 'allowLogin', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Global', 'originate', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Settings', 'assigned', array("self")); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cdr', 'enable', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cdr', 'assigned', array("self")); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cdr', 'download', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cdr', 'playback', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cel', 'enable', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cel', 'assigned', array("self")); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cel', 'download', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Cel', 'playback', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Presencestate', 'enabled', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'enable', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'assigned', array("self")); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'download', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'playback', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'settings', true); FreePBX::Userman()->setModuleSettingByGID($id, 'ucp|Voicemail', 'greetings', true); FreePBX::Userman()->setConfig("autoGroup", $id); }
function fax_get_user($faxext = '') { global $db; if ($faxext) { $sql = "SELECT * FROM fax_users WHERE user = ?"; $settings = $db->getRow($sql, array($faxext), DB_FETCHMODE_ASSOC); db_e($settings); if (is_array($settings)) { $o = \FreePBX::Userman()->getUserByID($settings['user']); if (empty($o)) { return array(); } } else { return array(); } } else { $sql = "SELECT * FROM fax_users"; $settings = $db->getAll($sql, DB_FETCHMODE_ASSOC); db_e($settings); $final = array(); if (is_array($settings)) { foreach ($settings as $setting) { if (!empty($setting)) { $o = \FreePBX::Userman()->getUserByID($setting['user']); if (!empty($o)) { $final[] = $setting; } } } $settings = $final; } else { return array(); } } return $settings; }
$displayvars['dashboard_content'] = $dashboard_content; $displayvars['year'] = date('Y', time()); $dbfc = FreePBX::Config()->get('VIEW_UCP_FOOTER_CONTENT'); $displayvars['dashboard_footer_content'] = $ucp->View->load_view(__DIR__ . "/" . $dbfc, array("year" => date('Y', time()))); $modules = $ucp->Modules->getActiveModules(); $displayvars['navItems'] = array(); foreach ($ucp->Modules->getModulesByMethod('getNavItems') as $m) { $mc = ucfirst(strtolower($m)); $item = $ucp->Modules->{$mc}->getNavItems(); if (!empty($item)) { foreach ($item as $i) { $displayvars['navItems'][] = $i; } } } $o = FreePBX::Userman()->getCombinedModuleSettingByID($user['id'], 'ucp|Global', 'originate'); $originate = !empty($o) ? '<a class="originate">' . _("Originate Call") . '</a>' : ''; $displayvars['navItems']['settings'] = array("rawname" => "settings", "badge" => false, "icon" => "fa-cog", "menu" => array("html" => '<li>' . $originate . '</li><li><a data-pjax href="?display=settings">' . _('User Settings') . '</a></li><li><a class="logout" href="?logout=1">' . _('Logout') . '</a></li>')); $ucp->View->show_view(__DIR__ . '/views/dashboard.php', $displayvars); break; case "forgot": $displayvars['token'] = $ucp->Session->generateToken('login'); $user = $ucp->User->validateResetToken($_REQUEST['forgot']); if (!empty($user)) { $displayvars['username'] = $user['username']; $displayvars['ftoken'] = $_REQUEST['forgot']; $ucp->View->show_view(__DIR__ . '/views/forgot.php', $displayvars); } else { $displayvars['error_danger'] = _("Invalid Token"); $ucp->View->show_view(__DIR__ . '/views/login.php', $displayvars); }
// Unsurprisingly, it didn't. Let's load it. // We need to manually load it, as the autoloader WON'T. $hint = FreePBX::Config()->get("AMPWEBROOT") . "/admin/modules/userman/Userman.class.php"; try { FreePBX::create()->injectClass("Userman", $hint); if (method_exists(FreePBX::Userman(), "getCombinedGlobalSettingByID")) { $_SESSION['AMP_user'] = new ampuser($username, "usermanager"); if (!$_SESSION['AMP_user']->checkPassword($password)) { unset($_SESSION['AMP_user']); //Fall through to database only //$no_auth = true; //if(!empty($username)) { //freepbx_log_security('Authentication failure for '.(!empty($username) ? $username : '******').' from '.$_SERVER['REMOTE_ADDR']); //} } else { if (FreePBX::Userman()->getCombinedGlobalSettingByID($_SESSION['AMP_user']->id, 'pbx_admin')) { $_SESSION['AMP_user']->setAdmin(); } //We are logged in. Stop processing break; } } } catch (Exception $e) { } } //no break here so that we can fall back to database if userman is broken //no break here so that we can fall back to database if userman is broken case 'database': default: // not logged in, and have provided a user/pass $_SESSION['AMP_user'] = new ampuser($username);
$sql = "DELETE FROM fax_users WHERE user = ?"; $sth = \FreePBX::Database()->prepare($sql); $sth->execute(array($res['user'])); continue; } } catch (\Exception $e) { out(sprintf(_("Unable to migrate %s, because [%s]. Please check your 'Fax Recipients' destinations"), $res['user'], $e->getMessage())); $sql = "DELETE FROM fax_users WHERE user = ?"; $sth = \FreePBX::Database()->prepare($sql); $sth->execute(array($res['user'])); continue; } $o = $user; } elseif (empty($o['email'])) { //no email set for this user so now update user with the fax email \FreePBX::Userman()->updateUserExtraData($o['id'], array("email" => $res['faxemail'])); } elseif ($o['email'] != $res['faxemail']) { //email was set in userman and it's different than this extension so we keep the usermanager email out(sprintf(_("Migrated user %s but unable to set email address to %s because an email [%s] was already set for User Manager User %s"), $res['user'], $res['faxemail'], $o['email'], $o['username'])); } $sql = "UPDATE fax_users SET user = ? WHERE user = ?"; $sth = \FreePBX::Database()->prepare($sql); try { $sth->execute(array("a" . $o['id'], $res['user'])); } catch (\Exception $e) { out(sprintf(_("Unable to migrate %s, because [%s]. Please check your 'Fax Recipients' destinations"), $res['user'], $e->getMessage())); continue; } $ma[$res['user']] = $o['id']; $sql = "UPDATE fax_incoming SET destination = ? WHERE destination = ?"; $sth = \FreePBX::Database()->prepare($sql);
die_freepbx($results->getMessage() . "<br><br>Error selecting from fax"); } $ma = array(); if (!empty($results)) { out(_("Migrating all fax users to usermanager")); } foreach ($results as $res) { $o = \FreePBX::Userman()->getUserByDefaultExtension($res['user']); if (empty($o)) { //migrate and add for upgrades try { $user = \FreePBX::Userman()->addUser($res['user'], bin2hex(openssl_random_pseudo_bytes(4)), $res['user'], _("Auto generated migrated user for Fax"), array("email" => $res['faxemail'])); if ($user['status']) { \FreePBX::Userman()->setModuleSettingByID($user['id'], 'fax', 'enabled', $res['faxenabled'] == "true"); \FreePBX::Userman()->setModuleSettingByID($user['id'], 'fax', 'attachformat', $res['faxattachformat']); \FreePBX::Userman()->setModuleSettingByID($user['id'], 'fax', 'migrate', true); } else { out(sprintf(_("Unable to migrate %s, because [%s]. Please check your 'Fax Recipients' destinations"), $res['user'], $user['message'])); $sql = "DELETE FROM fax_users WHERE user = ?"; $sth = \FreePBX::Database()->prepare($sql); $sth->execute(array($res['user'])); continue; } } catch (\Exception $e) { out(sprintf(_("Unable to migrate %s, because [%s]. Please check your 'Fax Recipients' destinations"), $res['user'], $e->getMessage())); $sql = "DELETE FROM fax_users WHERE user = ?"; $sth = \FreePBX::Database()->prepare($sql); $sth->execute(array($res['user'])); continue; } $o = $user;
if ($var['exten']) { $msg .= 'For extension: ' . $var['exten'] . "\n"; } } else { $callerid = !empty($var['callerid']) && !preg_match('/""\\s*<>/', $var['callerid']) ? $var['callerid'] : $var['remotestationid']; if (!empty($callerid)) { $msg = sprintf(_('Enclosed, please find a new fax from: %s'), $callerid); } else { $msg = _('Enclosed, please find a new fax'); } $msg .= "\n"; $msg .= sprintf(_('Received & processed: %s'), date('r')) . "\n"; $msg .= _('On') . ': ' . $var['hostname'] . "\n"; $msg .= _('Via') . ': ' . $var['dest'] . "\n"; if ($var['exten']) { $user = \FreePBX::Userman()->getUserByID($var['exten']); if (!empty($user)) { $name = !empty($user['displayname']) ? $user['displayname'] : trim($user['fname'] . " " . $user['lname']); $name = !empty($name) ? $name : $user['username']; } else { $name = $var['exten']; } $msg .= _('For User') . ': ' . $name . "\n"; } } $tif = $var['file']; if (!empty($var['to'])) { //build email $email = new CI_Email(); $email->from($var['from']); $email->to($var['to']);
/** * Get the AMP User from the username * @param string $username the username * @return mixed False is false otherwise array of user */ public function getAmpUser($username) { switch ($this->mode) { case "usermanager": try { $um = FreePBX::Userman()->getUserByUsername($username); $user = array(); $user['id'] = $um['id']; $user["username"] = $um['username']; $user["password_sha1"] = $um['password']; $pbl = FreePBX::Userman()->getCombinedGlobalSettingByID($um['id'], 'pbx_low'); $user["extension_low"] = trim($pbl) !== "" ? $pbl : ""; $pbh = FreePBX::Userman()->getCombinedGlobalSettingByID($um['id'], 'pbx_high'); $user["extension_high"] = trim($pbh) !== "" ? $pbh : ""; $sections = FreePBX::Userman()->getCombinedGlobalSettingByID($um['id'], 'pbx_modules'); $user["sections"] = !empty($sections) && is_array($sections) ? $sections : array(); $user["opmode"] = FreePBX::Userman()->getCombinedGlobalSettingByID($um['id'], 'opmode'); return $user; } catch (Exception $e) { } //fail-through //fail-through case "database": default: $sql = "SELECT username, password_sha1, extension_low, extension_high, deptname, sections FROM ampusers WHERE username = ?"; $sth = FreePBX::Database()->prepare($sql); $sth->execute(array($username)); $results = $sth->fetchAll(\PDO::FETCH_ASSOC); if (count($results) > 0) { $user = array(); $user["username"] = $results[0]['username']; $user["password_sha1"] = $results[0]['password_sha1']; $user["extension_low"] = $results[0]['extension_low']; $user["extension_high"] = $results[0]['extension_high']; $user["sections"] = explode(";", $results[0]['sections']); return $user; } else { return false; } break; } }
$set['defaultval'] = false; $set['readonly'] = 0; $set['hidden'] = 0; $set['level'] = 3; $set['module'] = 'cdr'; $set['category'] = 'CDR Report Module'; $set['emptyok'] = 0; $set['sortorder'] = 10; $set['name'] = 'Enable CEL Reporting'; $set['description'] = 'Setting this true will enable the CDR module to drill down on CEL data for each CDR. Although the CDR module will assure there is a CEL table available, the reporting functionality in Asterisk and associated ODBC database and CEL configuration must be done outside of FreePBX either by the user or at the Distro level.'; $set['type'] = CONF_TYPE_BOOL; $freepbx_conf->define_conf_setting('CEL_ENABLED', $set, true); } $info = FreePBX::Modules()->getInfo("cdr"); if (version_compare_freepbx($info['cdr']['dbversion'], "12.0.13", "<=")) { if (FreePBX::Modules()->checkStatus('ucp') && FreePBX::Modules()->checkStatus('userman')) { $users = FreePBX::Userman()->getAllUsers(); foreach ($users as $user) { $exts = FreePBX::Ucp()->getSetting($user['username'], 'Settings', 'assigned'); if (!empty($exts)) { FreePBX::Ucp()->setSetting($user['username'], 'Cdr', 'assigned', $exts); } } } elseif (FreePBX::Modules()->checkStatus('ucp', MODULE_STATUS_NEEDUPGRADE)) { out(_("Please upgrade UCP before this module so that settings can be properly migrated")); return false; } elseif (FreePBX::Modules()->checkStatus('userman', MODULE_STATUS_NEEDUPGRADE)) { out(_("Please upgrade Usermanager before this module so that settings can be properly migrated")); return false; } }