[ 'name' => tra('socnet settings enabled?'), 'description' => tra('socnet settings enabled by your website admins?'), 'keywords' => 'social login', 'type' => 'flag', 'default' => 'n', ], '_loginEnabled' => [ 'name' => tra('login allowed?'), 'description' => tra('socnet to login users into your website'), 'keywords' => 'social login', 'type' => 'flag', 'dependencies' => [ '_socnetEnabled', '_app_id', '_app_secret', ], 'default' => 'n', ], /* '_authType' => [ 'name' => tra('socnet login AuthType?'), 'description' => tra('socnet login authentication type such as OAuth2 OAuth1 etc. Most websites now use more secure OAuth2'), 'keywords' => 'social login', 'type' => 'radio', 'options' => [ 'oauth2' => tra('OAuth2'), 'openidconnect' => tra('OpenIdConnect'), 'oauth' => tra('OAuth'), 'other auth' => tra('Other authentiction not implemented in tiki'), ], 'default' => 'oauth2', ], */ '_app_id' => [ 'name' => tra('Application ID'), 'description' => tra('Application ID generated when registering this Tiki site as an application with them.'), 'keywords' => 'social login', 'type' => 'text', 'size' => 100, 'default' => '', ], '_app_secret' => [ 'name' => tra('Application secret'), 'description' => tra('Application secret generated when registering this Tiki site as an application with them.'), 'keywords' => 'social login', 'type' => 'text', 'size' => 100, 'default' => '', ], '_app_api' => [ 'name' => tra('API (or Graph) version - NOT YET'), 'description' => tra('socnets API (or Graph) version. Hybridauth default will be used until implemented'), 'keywords' => 'social login', 'type' => 'text', 'size' => 30, 'default' => '', ], '_app_site_name' => [ 'name' => tra('site name'), 'description' => tra('The default website name that will be used by socnet for every web page. This parameter will be used instead of the browser title.'), 'keywords' => 'social login', 'type' => 'text', 'size' => 60, 'default' => '', ], '_app_site_image' => [ 'name' => tra('site image'), 'description' => tra('The default image (logo, picture, etc) that will be used by socnet for every web page. The image must be specified as a URL or/and uploaded to socnet site.'), 'keywords' => 'social login', 'type' => 'text', 'size' => 60, 'default' => '', ], '_autocreateuser' => [ 'name' => tra('auto-create user?'), 'description' => tra('automatically create a Tiki user by the username of fb_xxxxxxxx for eg users logging in using Facebook if they do not yet have a Tiki account. If not, they will be asked to link or register a Tiki account'), 'keywords' => 'social networks', 'type' => 'flag', 'dependencies' => [ '_socnetEnabled', ], 'default' => 'n', ], '_autocreate_prefix' => [ 'name' => tra('user prefix to auto-create'), 'description' => tra('Tiki user prefix auto-creates. Eg xx_nnnnnnn etc. Press reset if there is none!'), 'keywords' => 'social networks', 'type' => 'text', 'size' => 20, 'dependencies' => [ '_socnetEnabled', '_autocreateuser', ], 'default' => 'soc_', ], '_autocreate_email' => [ 'name' => tra('auto-create user email?'), 'description' => tra('automatically set a Tiki user email from socnet account.'), 'keywords' => 'social networks', 'type' => 'flag', 'dependencies' => [ '_socnetEnabled', '_autocreateuser', ], 'default' => 'n', ], '_autocreate_user_trackeritem' => [ 'name' => tra('auto-create user tracker item?'), 'description' => tra('automatically set a Tiki user tracker item from socnet account.'), 'keywords' => 'social networks', 'type' => 'flag', 'dependencies' => [ '_socnetEnabled', '_autocreateuser', ], 'default' => 'n', ], '_autocreate_names' => [ 'name' => tra('auto-create user name(s)?'), 'description' => tra('automatically set a Tiki user name/name from socnet account.'), 'keywords' => 'social networks', 'type' => 'flag', 'dependencies' => [ '_socnetEnabled', '_autocreateuser', // '_autocreate_user_trackeritem', ], 'default' => 'n', ] ]; } public static function getOneSocPref($providerName, $key2, $value2) { /* if($key2 === '_authType') { $value2['name'] = 'What ' . ucfirst($key) ." " .$value2['name']; $value2['default'] = $value['authType']; $value2['_authType']['value'] = $value['authType']; } else if($key2 === 'graphVersion') { $value2['name'] = 'What ' . ucfirst($key) ." " .$value2['name']; $value2['default'] = $value['graphVersion']; $value2['_app_api']['value'] = $value['graphVersion']; } */ if ($key2 === '_loginEnabled') { $value2['dependencies'][0] = self::$socPreffix . $providerName . $value2['dependencies'][0]; $value2['dependencies'][1] = self::$socPreffix . $providerName . $value2['dependencies'][1]; $value2['dependencies'][2] = self::$socPreffix . $providerName . $value2['dependencies'][2]; $value2['description'] = 'Let ' . $providerName . " " . $value2['description']; } elseif ($key2 === '_autocreateuser') { $value2['dependencies'][0] = self::$socPreffix . $providerName . $value2['dependencies'][0]; $value2['description'] = 'Let ' . $providerName . " " . $value2['description']; } elseif ($key2 === '_autocreate_prefix') { $value2['dependencies'][0] = self::$socPreffix . $providerName . $value2['dependencies'][0]; $value2['dependencies'][1] = self::$socPreffix . $providerName . $value2['dependencies'][1]; $value2['description'] = 'What ' . $providerName . " " . $value2['description']; $value2['default'] = (strlen($providerName) < 5) ? substr($providerName, 0, strlen($providerName)) . "_" : substr($providerName, 0, 4) . "_"; } elseif (substr($key2, 0, 12) === '_autocreate_') { $value2['dependencies'][0] = self::$socPreffix . $providerName . $value2['dependencies'][0]; $value2['dependencies'][1] = self::$socPreffix . $providerName . $value2['dependencies'][1]; $value2['description'] = 'Let ' . $providerName . " " . $value2['description']; } else { $value2['description'] = $providerName . " " . $value2['description']; } $value2['name'] = $providerName . " " . $value2['name']; // $value2['base_name'] = $key2; // $value2['socnet_name'] = $providerName; //storing this way maybe is excessive... but maybe it is faster than extract it from the pref name? return $value2; } public static function getOneProviderPrefs($providerName, $socprefs) { $prefs2 = []; foreach ($socprefs as $key2 => $value2) { $p = self::getOneSocPref($providerName, $key2, $value2); $prefName = self::$socPreffix . $providerName . $key2; $prefs2[ $prefName ] = $p; } return $prefs2; } public static function getPrefsAllProviders() { $providers = self::getHybridProvidersPHP(); $prefs3 = []; foreach ($providers as $providerName) { $socprefs = self::getBasePrefs(); $prefs3 = array_merge($prefs3, self::getOneProviderPrefs($providerName, $socprefs)); } return $prefs3; } //TODO maybe test if it is faster to load settings for all socnets // fix errors and add custom scopes /* public static function getHybridauthConfig() { global $prefs; // Get Enabled providers!!! $providerNames = self::getEnabledProvidersNames(); $loginUrl = Util::getSocUrl(); Util::log2(' getHybridauthConfig providerNames:', $providerNames); $ret = []; foreach ($providerNames as $key => $name) { $ret[$name] = [ 'callback' => $loginUrl . $name, 'enabled' => $prefs[self::$socPreffix . $name . '_loginEnabled'], 'keys' => [ 'id' => $prefs[self::$socPreffix . $name . '_app_id'], 'secret' => $prefs[self::$socPreffix . $name . '_app_secret'], ], // 'scope' => $value['scope'], //TODO TEST hybridauth reaction to : 'scope' => null or empty? ]; } 'sochybrid_config' = [ 'name' => tra('Hybridauth config'), 'providers' => [], //prefs_sochybrid2_list(), 'debug_mode' => false, // Path to file writeable by the web server. Required if 'debug_mode' is not false 'debug_file' => '/var/log/httpd/errors/tikihybrid.log', ], return $ret; } */ //TODO check. I don't know how but it works. public static function getEnabledProvidersNames() { global $prefs; $ret = []; $socnets = self::getHybridProvidersPHP(); foreach ($socnets as $name) { $prefName = self::$socPreffix . $name . '_socnetEnabled'; if (isset($prefs[$prefName]) && $prefs[$prefName] === 'y') { $ret[] = $name; } } //Util::log2('get socnetsAll prefs:', $prefs[self::$socPreffix . 'socnetsAll'] ); //Util::log2('getEnabledProvidersNames ret:', $ret ); //Util::log2('getEnabledProviders prefs:', $prefs[self::$socPreffix . 'enabledProviders'] ); return $ret; } //this is main PrefGen initialization. Kind of _construct() ;) public static function getSocPrefs($socprefix1) { self::$socPreffix = $socprefix1; Util::logclear(); Util::log('getSocPrefs start'); $allProviders = self::getHybridProvidersPHP(); //Util::log2('socPreffix:', self::$socPreffix); //Util::deletePrefsStarts('sochybrid'); $prefs1 = [ self::$socPreffix . 'socnetsAll' => [ 'name' => tra('Enabled settings socnets:'), 'description' => tra('Hybridauth enabled settings socnets'), 'type' => 'multicheckbox', 'options' => $allProviders, 'default' => $allProviders, ], //TODO rename to remove confusion with loginEnabled self::$socPreffix . 'enabledProviders' => [ 'name' => tra('Enabled settings socnets:'), 'description' => tra('Hybridauth enabled settings socnets'), 'type' => 'multicheckbox', 'options' => $allProviders, 'default' => [], ], self::$socPreffix . 'enabledProvidersNames' => [ 'name' => tra('Enabled socnets Names- DO NOT USE in FORMS:'), 'description' => tra('Hybridauth enabled socnets Names'), 'type' => 'array', 'default' => self::getEnabledProvidersNames(), 'hidden' => 'y', //TODO does this array and hidden work? It looks like it is not... ], self::$socPreffix . 'socLoginBaseUrl' => [ 'name' => tra('socnets Login Base Url:'), 'description' => tra('this is for programmers - just add socnet Name for new socnet'), 'type' => 'text', 'default' => self::getSocLoginBaseUrl(), ], /* self::$socPreffix . 'hybridauthConfig' => [ 'name' => tra('Hybridauth config- DO NOT USE in FORMS:'), 'description' => tra('Hybridauth config'), 'type' => 'array', // 'options' => self::getHybridauthConfig(), 'default' => self::getHybridauthConfig(), ], */ ]; $prefs3 = array_merge($prefs1, self::getPrefsAllProviders()); // Util::log2(' getSocPrefs enabledProvidersNames:', $prefs[self::$socPreffix . 'enabledProvidersNames'] ); // Util::log2(' getSocPrefs enabledProviders:', $prefs[self::$socPreffix . 'enabledProviders'] ); // Util::log2(' getSocPrefs prefs1:', $prefs1); return $prefs3; } }