Hello,
If you want to disable (not shown) settings block for students in Moodle, you can do it changing the renderer in your theme. This code is valid only for themes not based on Boost.
Add this function in the core_renderer class of your theme:
public function block(block_contents $bc, $region) {
global $DB;
$idblock = isset($bc->attributes['id']) ? $bc->attributes['id'] : '';
$arr_aux = explode('inst', $idblock);
if (isset($arr_aux[1])) {
$block_instance = $DB->get_record('block_instances', array('id' => $arr_aux[1]));
$context_course = context_course::instance($this->page->course->id);
if (isset($block_instance->blockname) && $block_instance->blockname == 'settings') {
if (!has_capability('moodle/grade:viewall', $context_course)) {
return '';
}
}
}
return parent::block($bc, $region);
}
Best regards,
Iban Cardona.
Tuesday, 25 April 2017
Wednesday, 22 February 2017
Moodle: moodle_form inside module: Edit or new?
Hello,
Sometimes inside a custom Moodle module we need to know if we are editing or creating a new module (activity or resource) instance... Here the solution:
function definition() {
global $CFG, $DB;
$mform =& $this->_form;
if (is_numeric($this->_instance) && $this->_instance && $mymodule = $DB->get_record("mymodule", array("id"=>$this->_instance))) {
$mform->addElement('header', 'general', 'Editing');
} else {
$mform->addElement('header', 'general', 'Creating');
}
...
Best regards,
Iban Cardona.
Sometimes inside a custom Moodle module we need to know if we are editing or creating a new module (activity or resource) instance... Here the solution:
function definition() {
global $CFG, $DB;
$mform =& $this->_form;
if (is_numeric($this->_instance) && $this->_instance && $mymodule = $DB->get_record("mymodule", array("id"=>$this->_instance))) {
$mform->addElement('header', 'general', 'Editing');
} else {
$mform->addElement('header', 'general', 'Creating');
}
...
Best regards,
Iban Cardona.
Saturday, 7 January 2017
Moodle: Download exact commit from git
Hello,
If you want to manage a source code from Moodle of a specific commit, you need to do:
Best regards!
If you want to manage a source code from Moodle of a specific commit, you need to do:
- Install git: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- Find the commit to download in https://github.com/moodle/moodle . In my case I found this: https://github.com/moodle/moodle/commit/89117976b8afd75c588b8b3908f763aab2edfb6a#diff-5bbd3ccd25214f9956eea7e9f714bc08
- Download the Moodle code: git clone https://github.com/moodle/moodle.git my_moodle
- Copy the ID of the commit: 89117976b8afd75c588b8b3908f763aab2edfb6a
- Checkout the commit:
- cd my_moodle
- git checkout 89117976b8afd75c588b8b3908f763aab2edfb6a
Best regards!
Monday, 22 August 2016
Laravel : Get SQL of a DB object
Hello,
How to print SQL (Select statement) of DB Object in Laravel:
$sql = DB::table('users');
echo $sql->toSql();
Best regards,
Iban Cardona.
How to print SQL (Select statement) of DB Object in Laravel:
$sql = DB::table('users');
echo $sql->toSql();
Best regards,
Iban Cardona.
Thursday, 28 July 2016
Laravel 4.2 Add get params in URL::action helper function
Hello,
If we want to add get params we need to call function like this:
routes.php
Route::any('test/{id}', 'Controller@index');
blade.php
{{URL::action("Controller@index", array(111, "firstparam" => "aaa"))}}
And result is:
http://www.dummyurl.local/test/111?firstparam=aaa
Best regards,
Iban Cardona.
If we want to add get params we need to call function like this:
routes.php
Route::any('test/{id}', 'Controller@index');
blade.php
{{URL::action("Controller@index", array(111, "firstparam" => "aaa"))}}
And result is:
http://www.dummyurl.local/test/111?firstparam=aaa
Best regards,
Iban Cardona.
Tuesday, 10 May 2016
PHP: String HH:MM:SS to hours (float)
Hello,
How to parse string with format HH:MM:SS to hours:
$string = '01:58:03';
sscanf($string, "%d:%d:%d", $hours, $minutes, $seconds);
$hours = $hours + $minutes/60 + $seconds/3600;
Best regards!
How to parse string with format HH:MM:SS to hours:
$string = '01:58:03';
sscanf($string, "%d:%d:%d", $hours, $minutes, $seconds);
$hours = $hours + $minutes/60 + $seconds/3600;
Best regards!
Thursday, 28 April 2016
Laravel 5.2: Create multilang site (Session+Middleware)
Hello,
How to create a multi-language site in Laravel 5.2:
config/app.php
'locale' => 'ca',
'locales' => ['ca' => 'Català', 'es' => 'Español', 'en' => 'English'],
app/Http/routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('/', [
'as' => 'underconstruction', 'uses' => 'Underconstruction\UnderconstructionController@showIndex'
]);
Route::get('/lang/{langcode?}', function ($langcode = 'ca') {
return redirect()->route('underconstruction');
});
});
app/Http/Kernel.php
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\LangMiddleware::class,
],
'api' => [
'throttle:60,1',
],
];
/app/Http/Middleware/LangMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use App;
class LangMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$lang = $request->segment(1);
$locale = $request->segment(2);
if ($lang == 'lang' && array_key_exists($locale, app()->config->get('app.locales'))) {
$request->session()->put('locale', $locale);
} else if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}
/app/Http/Controllers/Underconstruction/UnderconstructionController.php
<?php
namespace App\Http\Controllers\Underconstruction;
use App\Http\Controllers\Controller as Controller;
class UnderconstructionController extends Controller
{
public function showIndex() {
return app()->getLocale();
}
}
If you access to http://yourweb/ --> lang = ca
if you access to http://yourweb/lang/es --> lang = es
If you access to http://yourweb/ --> lang =es
Lang is saved in session data.
Best regards,
Iban Cardona.
How to create a multi-language site in Laravel 5.2:
config/app.php
'locale' => 'ca',
'locales' => ['ca' => 'Català', 'es' => 'Español', 'en' => 'English'],
app/Http/routes.php
Route::group(['middleware' => ['web']], function () {
Route::get('/', [
'as' => 'underconstruction', 'uses' => 'Underconstruction\UnderconstructionController@showIndex'
]);
Route::get('/lang/{langcode?}', function ($langcode = 'ca') {
return redirect()->route('underconstruction');
});
});
app/Http/Kernel.php
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\LangMiddleware::class,
],
'api' => [
'throttle:60,1',
],
];
/app/Http/Middleware/LangMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use App;
class LangMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$lang = $request->segment(1);
$locale = $request->segment(2);
if ($lang == 'lang' && array_key_exists($locale, app()->config->get('app.locales'))) {
$request->session()->put('locale', $locale);
} else if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}
/app/Http/Controllers/Underconstruction/UnderconstructionController.php
<?php
namespace App\Http\Controllers\Underconstruction;
use App\Http\Controllers\Controller as Controller;
class UnderconstructionController extends Controller
{
public function showIndex() {
return app()->getLocale();
}
}
If you access to http://yourweb/ --> lang = ca
if you access to http://yourweb/lang/es --> lang = es
If you access to http://yourweb/ --> lang =es
Lang is saved in session data.
Best regards,
Iban Cardona.
Subscribe to:
Posts (Atom)