/** * @copydoc DataSet::__construct */ public function __construct($name, array $params = null) { if (!isset($params['state'])) { $params['state'] = E()->getDocument()->user->isAuthenticated() ? 'showLogoutForm' : 'showLoginForm'; } parent::__construct($name, $params); $this->setTitle($this->translate('TXT_LOGIN_FORM')); $base = E()->getSiteManager()->getCurrentSite()->base; if (strpos($currDomain = E()->getSiteManager()->getCurrentSite()->host, Primitive::getConfigValue('site.domain')) === false) { $base = 'http://' . Primitive::getConfigValue('site.domain') . '/'; } $this->setAction($base . 'auth.php' . (isset($_SERVER['HTTP_REFERER']) ? '' : '?return=' . (($return = $this->getParam('successAction')) ? $return : E()->getRequest()->getURI())), true); }
/** * Wrapper for Primitive::getConfigValue. * This is for the cases when database name is not set in the configurations. In this case the current database will be used. * * @return string */ public static function getDatabase() { return Primitive::getConfigValue('forms.database', Primitive::getConfigValue('database.db')); }
/** * Building resulte XML Document */ public function build() { //Если у нас не режим json $this->doc = new \DOMDocument('1.0', 'UTF-8'); $dom_root = $this->doc->createElement('document'); $dom_root->setAttribute('debug', $this->getConfigValue('site.debug')); $dom_root->setAttribute('editable', $this->isEditable()); $this->setProperty('url', (string) $this->request->getURI()); $this->doc->appendChild($dom_root); if (!isset($this->properties['title'])) { $this->setProperty('title', strip_tags($this->documentInfo['Name'])); } $dom_documentProperties = $this->doc->createElement('properties'); foreach ($this->properties as $propName => $propValue) { $dom_property = $this->doc->createElement('property', str_replace('&', '&', $propValue)); $dom_property->setAttribute('name', $propName); if ($propName == 'title') { $dom_property->setAttribute('alt', $this->documentInfo['HtmlTitle']); } $dom_documentProperties->appendChild($dom_property); } $dom_root->appendChild($dom_documentProperties); //Дополнительные свойства, имеющие параметры $prop = $this->doc->createElement('property', $baseURL = E()->getSiteManager()->getCurrentSite()->base); $prop->setAttribute('name', 'base'); $prop->setAttribute('static', $staticURL = $this->getConfigValue('site.static') ? $staticURL : $baseURL); $prop->setAttribute('media', ($mediaURL = $this->getConfigValue('site.media')) ? $mediaURL : $baseURL); $prop->setAttribute('resizer', ($resizerURL = $this->getConfigValue('site.resizer')) ? $resizerURL : E()->getSiteManager()->getDefaultSite()->base . 'resizer/'); $prop->setAttribute('folder', E()->getSiteManager()->getCurrentSite()->folder); $prop->setAttribute('default', E()->getSiteManager()->getDefaultSite()->base); $prop->setAttribute('favicon', ($favicon = E()->getSiteManager()->getCurrentSite()->faviconFile) ? $favicon : E()->getSiteManager()->getDefaultSite()->faviconFile); $dom_documentProperties->appendChild($prop); $prop = $this->doc->createElement('property', $this->getLang()); $prop->setAttribute('name', 'lang'); $prop->setAttribute('abbr', $this->request->getLangSegment()); $prop->setAttribute('default', E()->getLanguage()->getDefault()); $prop->setAttribute('real_abbr', E()->getLanguage()->getAbbrByID($this->getLang())); $dom_documentProperties->appendChild($prop); if (($docVars = $this->getConfigValue('site.vars')) && is_array($docVars)) { $dom_documentVars = $this->doc->createElement('variables'); foreach ($docVars as $varName => $varValue) { $var = $this->doc->createElement('var', $varValue); $var->setAttribute('name', strtoupper($varName)); $dom_documentVars->appendChild($var); } $dom_root->appendChild($dom_documentVars); } if ($og = E()->getOGObject()->build()) { $dom_root->appendChild($this->doc->importNode($og, true)); } unset($prop, $og); foreach ($this->componentManager as $component) { $componentResult = false; $dom_errors = false; try { if ($component->enabled() && $this->getRights() >= $component->getCurrentStateRights()) { $componentResult = $component->build(); } } catch (DummyException $dummyException) { } if (!empty($componentResult)) { try { $componentResult = $this->doc->importNode($componentResult->documentElement, true); } catch (\Exception $e) { //stop($e->getTraceAsString()); } if ($dom_errors) { $componentResult->insertBefore($dom_errors, $componentResult->firstChild); } $dom_root->appendChild($componentResult); } elseif ($dom_errors) { $dom_root->appendChild($dom_errors); } } if (!empty($this->translations)) { $dom_translations = $this->doc->createElement('translations'); $dom_root->appendChild($dom_translations); foreach ($this->translations as $const => $componentName) { $dom_translation = $this->doc->createElement('translation', translate($const)); $dom_translation->setAttribute('const', $const); if (!is_null($componentName)) { $dom_translation->setAttribute('component', $componentName); } $dom_translations->appendChild($dom_translation); } } $jsLibs = Primitive::getConfigValue('site.js-lib'); if (!isset($jsLibs['mootools'])) { $jsLibs['mootools'] = $staticURL . 'scripts/mootools.min.js'; } if (!isset($jsLibs['jquery'])) { $jsLibs['jquery'] = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js'; } $dom_javascript = $this->doc->createElement('javascript'); foreach ($jsLibs as $name => $path) { $dom_javascript->setAttribute($name, $path); } $dom_root->appendChild($dom_javascript); foreach ($this->js as $behavior) { $dom_javascript->appendChild($this->doc->importNode($behavior, true)); } // построение списка подключаемых js библиотек в порядке зависимостей $jsMapFile = HTDOCS_DIR . '/system.jsmap.php'; if (!file_exists($jsMapFile)) { throw new \RuntimeException('JS dependencies file ' . $jsMapFile . ' does\'nt exists'); } $jsIncludes = []; $jsmap = (include $jsMapFile); $xpath = new \DOMXPath($this->doc); $nl = $xpath->query('//javascript/behavior'); if ($nl->length) { foreach ($nl as $node) { $classPath = $node->getAttribute('path'); if ($classPath && substr($classPath, -1) != '/') { $classPath .= '/'; } $cls = ($classPath ? $classPath : '') . $node->getAttribute('name'); $this->createJavascriptDependencies([$cls], $jsmap, $jsIncludes); } } foreach ($jsIncludes as $js) { $dom_js_library = $this->doc->createElement('library'); $dom_js_library->setAttribute('path', $js); $onlyName = explode('/', $js); $dom_js_library->setAttribute('name', array_pop($onlyName)); $dom_javascript->appendChild($dom_js_library); } }
$res = $vk->api('users.get', ['uids' => $vkUID, 'fields' => 'uid,first_name,last_name,photo']); if (is_array($res['response'])) { $vkUser = $res['response'][0]; $userInfo = ['u_name' => $vkUser['uid'] . '@vk.com', 'u_vkid' => $vkUser['uid'], 'u_password' => User::generatePassword(), 'u_fullname' => $vkUser['first_name'] . ' ' . $vkUser['last_name'], 'u_avatar_img' => $vkUser['photo']]; $user->create($userInfo); } else { throw new SystemException('TXT_CREATE_SOCIAL_USER_ERROR'); } } E()->UserSession->start($user->getID()); } } catch (\Exception $e) { $response->addCookie(UserSession::FAILED_LOGIN_COOKIE_NAME, $e->getMessage(), time() + 60); goto escape; } } elseif ($gooAuth && ($appID = Primitive::getConfigValue('auth.goo.appID')) && ($secretKey = Primitive::getConfigValue('auth.goo.secretKey'))) { $goo = new \Energine\user\gears\GOOOAuth(['appId' => $appID, 'secret' => $secretKey]); try { if (!($user = User::getGOOUser($goo->user->id))) { //Если нет - создаем $user = new User(); $userInfo = ['u_name' => $goo->user->email, 'u_gooid' => $goo->user->id, 'u_password' => User::generatePassword(), 'u_fullname' => $goo->user->name, 'u_avatar_img' => $goo->user->picture]; $user->create($userInfo); } E()->UserSession->start($user->getID()); } catch (Exception $e) { $response->addCookie(UserSession::FAILED_LOGIN_COOKIE_NAME, $e->getMessage(), time() + 60); goto escape; } } }
/** * Remove malicious and redundant HTML code. * * @param string $data Data. * @return string */ public static function cleanupHTML($data) { $aggressive = Primitive::getConfigValue('site.aggressive_cleanup', false); //Если подключено расширение tidy if (function_exists('tidy_get_output') && $aggressive) { try { $tidy = new \tidy(); $config = ['bare' => true, 'drop-font-tags' => true, 'drop-proprietary-attributes' => true, 'hide-comments' => true, 'logical-emphasis' => true, 'numeric-entities' => true, 'show-body-only' => true, 'quote-nbsp' => false, 'indent' => 'auto', 'wrap' => 72, 'output-html' => true]; //if ($aggressive) { $config = array_merge($config, ['word-2000' => true, 'drop-empty-paras' => true]); //} $data = $tidy->repairString($data, $config, 'utf8'); } catch (\Exception $dummyError) { //inspect($dummyError); } unset($tidy); } $base = E()->getSiteManager()->getCurrentSite()->base; $data = str_replace(strpos($data, '%7E') ? str_replace('~', '%7E', $base) : $base, '', $data); return $data; }