-
-
Save sandeepgill/8aff4849bdbb4f7ac0aced72496f2183 to your computer and use it in GitHub Desktop.
<?php | |
class MoodleValetDriver extends BasicValetDriver | |
{ | |
protected $isStyleUri = false; | |
protected $baseUri = ''; | |
protected $moodleStaticScripts = [ | |
'styles.php', | |
'javascript.php', | |
'jquery.php', | |
'requirejs.php', | |
'font.php', | |
'image.php', | |
'yui_combo.php', | |
'pluginfile.php', | |
'draftfile.php' | |
]; | |
protected $sitePath = ''; | |
protected $siteName = ''; | |
protected $uri = ''; | |
/** | |
* Determine if the driver serves the request. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return bool | |
*/ | |
public function serves($sitePath, $siteName, $uri) | |
{ | |
$this->sitePath = $sitePath; | |
$this->siteName = $siteName; | |
$this->uri = $uri; | |
if ( | |
file_exists($sitePath.'/config-dist.php') | |
&& file_exists($sitePath.'/course') | |
&& file_exists($sitePath.'/grade') | |
) { | |
return true; | |
} | |
} | |
/** | |
* Determine if the incoming request is for a static file. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return string|false | |
*/ | |
public function isStaticFile($sitePath, $siteName, $uri) | |
{ | |
if (file_exists($staticFilePath = $sitePath.$uri)) | |
{ | |
return $staticFilePath; | |
} | |
return false; | |
} | |
public function mutateUri($uri) { | |
foreach($this->moodleStaticScripts as $script) { | |
if(preg_match('/'.$script.'/i', $uri) && !preg_match('/'.$script.'$/i', $uri)) { | |
$this->isStyleUri = true; | |
$pos = strpos($uri, $script); | |
$length = strlen($script); | |
$this->baseUri = substr($uri, 0, $length + $pos); | |
return substr($uri, $length + $pos); | |
} | |
} | |
if( | |
empty($uri) | |
|| ( | |
!preg_match('/.php/i', $uri) | |
&& !preg_match('/.html/i', $uri) | |
&& !preg_match('/.js$/i', $uri) | |
&& !preg_match('/.css$/i', $uri) | |
&& !preg_match('/.jpe?g/i', $uri) | |
&& !preg_match('/.png/i', $uri) | |
&& !preg_match('/.gif/i', $uri) | |
&& !preg_match('/.svg/i', $uri) | |
) | |
) { | |
return "{$uri}/index.php"; | |
} | |
return $uri; | |
} | |
/** | |
* Get the fully resolved path to the application's front controller. | |
* | |
* @param string $sitePath | |
* @param string $siteName | |
* @param string $uri | |
* @return string | |
*/ | |
public function frontControllerPath($sitePath, $siteName, $uri) | |
{ | |
$_SERVER['SERVER_SOFTWARE'] = 'PHP'; | |
$_SERVER['PHP_SELF'] = $uri; | |
$_SERVER['SERVER_ADDR'] = '127.0.0.1'; | |
if( | |
( | |
empty($uri) | |
|| ( | |
!preg_match('/.php/i', $uri) | |
&& !preg_match('/.html/i', $uri) | |
&& !preg_match('/.js$/i', $uri) | |
) | |
) | |
&& !$this->isStyleUri | |
&& !$this->isStaticFile($sitePath, $siteName, $uri) | |
) { | |
return $this->asPhpIndexFileInDirectory($sitePath, $uri); | |
} | |
if($this->isStyleUri) { | |
$_SERVER['PATH_INFO'] = $uri; | |
return $sitePath.$this->baseUri; | |
} | |
return $sitePath.$uri; | |
} | |
} |
👍 ❤️ YOU MADE MY DAY MAN
Thanks alot
Awesome. I'm glad it helped :)
Thanks for your file.
Works good! Thanks!!!
Looks nice, do you know if the driver works in Valet 4, and would it go in ~/.composer/vendor/laravel/valet/cli/Valet/Drivers/Specific?
Looks nice, do you know if the driver works in Valet 4, and would it go in ~/.composer/vendor/laravel/valet/cli/Valet/Drivers/Specific?
Hi, hopefully you know what happened to me
My valet works on another projects such as laravel and php native, but not on moodle
I am using PHP 8.1 and Moodle 4.3
# solved
If you are using valet do not follow the instructions on the official moodle site about nginx, I tried to add the following code in config.php and I got the error as above, after I deleted it I finally succeeded:
$CFG->xsendfile = 'X-Accel-Redirect';
$CFG->xsendfilealiases = array(
'/dataroot/' => $CFG->dataroot
);
👍 ❤️ YOU MADE MY DAY MAN
Thanks alot