<?php switch($modx->context->key){ case 'web': break; default: return; } switch($modx->event->name){ // LiveStreet case 'OnHandleRequest': // - livestreet_path/config/ define('IN_MODX', true); define('LIVESTREET_WEB', $modx->getOption('site_url')); define('LIVESTREET_PATH', $modx->getOption('livestreet.livestreet_path')); define('LIVESTREET_INDEX_FILE', $modx->getOption('livestreet.index_file')); define('LIVESTREET_URL_PREFIXE', $modx->getOption('livestreet.url_prefix')); $request = false; //print "<br />REQUEST_URI:" . $_SERVER['REQUEST_URI']; // LiveStreet if($_SERVER['REQUEST_URI'] == LIVESTREET_URL_PREFIXE || $_SERVER['REQUEST_URI']."/" == LIVESTREET_URL_PREFIXE){ $request = '/'; } else{ // LiveStreet, $preg = str_replace('/', '\/', LIVESTREET_URL_PREFIXE); if(!preg_match("/^{$preg}/", $_SERVER['REQUEST_URI']."/")){ return; } $request = preg_replace("/^{$preg}/", '', $_SERVER['REQUEST_URI']); } if( substr( $request, 0, 1) != '/') $request = '/'. $request; // LS define('LIVESTREET_REQUEST_URI', $request); // , , if(!$modx->checkSiteStatus()){ return; } $file = LIVESTREET_INDEX_FILE; /*$t = $modx->invokeEvent('onLivestreetUserSave', array('sdfsdf')); print_r($this->processEventResponse($t)); exit;*/ // LiveStreet $preg = str_replace('/', '\/', "(/templates/|/uploads/|/engine/lib/external/jquery)"); if(preg_match("/^{$preg}/", LIVESTREET_REQUEST_URI)){ $file = LIVESTREET_REQUEST_URI; $file = preg_replace('/\?+.*/', '', $file); $fullpath = str_replace('//','/', LIVESTREET_PATH.$file); if(!file_exists($fullpath)){ die('File Not Found'); } $fsize = filesize($fullpath); $pi = pathinfo( $file); $ext = $pi['extension']; switch ($ext) { case "css": $ctype="text/css; charset=utf-8"; break; case "js": $ctype="application/x-javascript; charset=utf-8"; break; case "pdf": $ctype="application/pdf"; break; case "exe": $ctype="application/octet-stream"; break; case "zip": $ctype="application/zip"; break; case "doc": $ctype="application/msword"; break; case "xls": $ctype="application/vnd.ms-excel"; break; case "ppt": $ctype="application/vnd.ms-powerpoint"; break; case "gif": $ctype="image/gif"; break; case "png": $ctype="image/png"; break; case "jpeg": case "jpg": $ctype="image/jpg"; break; default: $ctype="application/force-download"; } header("Content-type: {$ctype}", true); header("Content-Length: ".$fsize); header("last-modified: ". gmdate("d, dmyh:i:s", filemtime($fullpath) )." GMT"); header("Pragma: public"); header("Expires: 0"); readfile($fullpath); exit; } /* * - */ // $preg = str_replace('/', '\/', "/engine/lib/external/kcaptcha/"); if(preg_match("/^{$preg}/", LIVESTREET_REQUEST_URI)){ $file = 'engine/lib/external/kcaptcha/index.php'; require_once LIVESTREET_PATH.$file; exit; } break; case 'OnPageNotFound': // if not LiveStreet request, stop if(!defined('LIVESTREET_REQUEST_URI')){ return; } $_SERVER['REQUEST_URI'] = LIVESTREET_REQUEST_URI; // Registration if(LIVESTREET_REQUEST_URI == $modx->getOption('livestreet.registration_url', null, '/registration/ajax-registration/')){ // if not in sync mode if($modx->getOption('livestreet.sync_users') == true){ print $modx->runSnippet('livestreet.ajax-registration'); exit; } } print $modx->runSnippet('livestreet.run'); exit; break; default: $modx->event->output( 'true'); ; }
<?php if($request_uri){ $_SERVER['REQUEST_URI'] = $request_uri; } ob_start(); @include $modx->getOption('livestreet.livestreet_path').$modx->getOption('livestreet.index_file'); $output = ob_get_contents(); ob_end_clean(); return $output;
if ($this->sResponseAjax) { $this->DisplayAjax($this->sResponseAjax); }
on if ($this->sResponseAjax) { $this->DisplayAjax($this->sResponseAjax); return; }
<?php // if not in sync mode if($modx->getOption('livestreet.sync_users') != true){ return; } $path = $modx->getObject('modNamespace', array( 'name' => 'livestreet' )) -> getCorePath()."processors/"; // print $path; // exit; $response = $modx->runProcessor('security/user/ajaxCreate', array( 'username' => $_POST['login'], 'email' => $_POST['mail'], 'passwordnotifymethod' => 'false', 'passwordgenmethod' => 'false', 'specifiedpassword' => $_POST['password'], 'confirmpassword' => $_POST['password_confirm'], ), array( 'processors_path' => $path )); $bStateError = false; $sMsgTitle = null; $sMsg = null; $errors = array(); if($response->isError()){ // print '<pre>'; //print_r($modx->error->errors); $errorsArray = (array)$modx->error->errors; // processEventResponse // $error = $response->getMessage(); if($errMessageArr = (array)explode("\n", $response->getMessage())){ foreach($errMessageArr as $message){ if(!$message = trim($message))continue; if(!$errArr = explode('::', $message) OR count($errArr) != 2){ $sMsg = $message; } else{ $errorsArray[] = array( 'id' => $errArr[0], 'msg' => $errArr[1], ); } } } foreach($errorsArray as $err){ // LiveStreet Errors if($name = $err['id']){ switch($name){ case 'username': $name = 'login'; break; case 'specifiedpassword': $name = 'password'; break; case 'confirmpassword': $name = 'password_confirm'; break; default: continue; } $errors[$name][0] = $err['msg']; } // MODX errors else{ $sMsg = current($err); } } if(!$errors && !$sMsg){ $sMsg = ' '; } if($sMsg){ $sMsgTitle = 'Error'; $bStateError = true; } $response = array( 'sMsgTitle' => $sMsgTitle, 'sMsg' => $sMsg, 'bStateError' => $bStateError, 'aErrors' => $errors ); } else{ // Success $response = array( 'sMsgTitle' => null, 'sMsg' => '! !', 'bStateError' => false, 'sUrlRedirect' => $_POST['return-path'], ); } return json_encode($response);
<?php $file = MODX_PROCESSORS_PATH.'security/user/create.class.php'; if(!file_exists($file)){ class modLivestreetUserCreateErrorProcessor extends modProcessor { public function process() { $err = 'processor security/user/create not found'; $this->modx->log(modX::LOG_LEVEL_ERROR, $err); return $this->failure($err); } } return 'modLivestreetUserCreateErrorProcessor'; } require_once $file; class modLivestreetUserCreateProcessor extends modUserCreateProcessor { public $permission = ''; } return 'modLivestreetUserCreateProcessor';
<?php /* * Synchronized registration MODX and Livestreet users */ switch($modx->event->name){ case 'OnBeforeUserFormSave': switch($scriptProperties['mode']){ // Register new user case 'new': // if not in sync mode if($modx->getOption('livestreet.sync_users') != true){ return; } // Using for LiveStreet ModuleSecurity::GenerateSessionKey // check password method if($scriptProperties['data']['passwordgenmethod'] == 'g'){ $len = $modx->getOption('password_generated_length',null,8); $password = $password_confirm = modUserValidation::generatePassword($len); /* * note then newPassword in createProcessor will not be overwrited !!! * in backend will see wron new passrowd */ $scriptProperties['user']->set('password', $password); } else{ $password = $scriptProperties['data']['specifiedpassword']; $password_confirm = $scriptProperties['data']['confirmpassword']; } $_REQUEST['password'] = $password; $_REQUEST['password_confirm'] = $password_confirm; $_REQUEST['login'] = $scriptProperties['data']['username']; $_REQUEST['mail'] = $scriptProperties['data']['email']; $_REQUEST['login'] = $scriptProperties['data']['username']; if($modx->context->key == 'mgr'){ $captcha = time(); $_SESSION['captcha_keystring'] = $captcha; $_REQUEST['captcha'] = $captcha; $_SESSION['user_id'] = ''; $_REQUEST['security_ls_key'] = md5( session_id(). $modx->getOption('livestreet.module.security.hash', null, 'livestreet_security_key')); } $response = $modx->runSnippet('livestreet.run', array( 'request_uri' => $modx->getOption('livestreet.registration_url') )); $response = json_decode($response); if(!is_object($response)){ $modx->event->output(' '); } elseif($response->aErrors){ $errors = ''; $errors__ = array(); foreach((array)$response->aErrors as $f => $val){ $errors .= "$f:: ". $val[0]."\n"; } $modx->event->_output = $errors; } return; break; default:; } break; default:$modx->log(modX::LOG_LEVEL_ERROR, "Wrong Event: ". $modx->event->name); }
Source: https://habr.com/ru/post/155063/