Custom Moodle User Profile Page

Follow these steps to customize the user profile page. 

1. Go to theme/config.php file and find this code.

  // My public page.

    ‘mypublic’ => array(

        ‘file’ => ‘columns2.php’,

        ‘regions’ => array(‘side-pre’),

        ‘defaultregion’ => ‘side-pre’,

    ),

2. Create your custom layout file in layout folder and replace it like below

  // My public page.

    ‘mypublic’ => array(

        ‘file’ => ‘yourcustomlayout.php’,

        ‘regions’ => array(‘side-pre’),

        ‘defaultregion’ => ‘side-pre’,

    ),3. Create a template file(yourcustom.mustache) in templates folder in theme.

4. in your custom layout php file get all user information and render it on .mustache file like below

echo $OUTPUT->render_from_template(‘theme_custom/mypublic’, $templatecontext);

Reference:
https://moodle.org/mod/forum/discuss.php?d=370809

MySQL: Duplicate table

Duplikasi struktur table nya saja tanpa data

CREATE TABLE new_table LIKE original_table;

Perintah di atas akan membuat duplikat struktur table new_table yang sama persis dengan original_table.

Untk menyalin datanya dapat menggunakan perintah sebagai berikut:

INSERT INTO new_table SELECT * FROM original_table;

Reference: https://popsql.com/learn-sql/mysql/how-to-duplicate-a-table-in-mysql

Insert MySQL Table from *.csv file

Setup local infile

Sebelum dapat melakukan load data secara local ke dalam database, maka perlu memastikan bahwa load infile dalam kondisi aktif

Periksa status local infile

mysql> show global variables like 'local_infile';

Akan memberikan informasi seperti di bawah ini:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

Untuk mengaktifkan gunakan perintah berikut:

mysql> set global local_infile=true;

Setelah itu silahkan connect ke database dengan parameter local infile

mysql --local_infile=1 -u root -ppassword DB_name

Dan lakukan load data local, seperti:

mysql> load data local infile 'path/file_name.extention' into table table_name;

INSERT

Misalkan kita memiliki table berikut ini:

mysql> desc temp_user_info_data;
+------------+------------+------+-----+---------+----------------+
| Field      | Type       | Null | Key | Default | Extra          |
+------------+------------+------+-----+---------+----------------+
| id         | bigint(10) | NO   | PRI | NULL    | auto_increment |
| userid     | bigint(10) | NO   | MUL | 0       |                |
| fieldid    | bigint(10) | NO   |     | 0       |                |
| data       | longtext   | NO   |     | NULL    |                |
| dataformat | tinyint(2) | NO   |     | 0       |                |
+------------+------------+------+-----+---------+----------------+

Catatan: untuk melihat info lebih detail tentang table dan bagaimana table tersebut di buat, Anda dapat menggunakan perintah:

mysql> desc namatable

atau

mysql> show create table namatable;

Kemudian file data kita diletakkan di /root dengan nama file data *.csv: contoh.csv seperti berikut:

5791,23,11
19766,23,11

Lalu lakukan load data:

mysql> load data local infile '/root/contoh.csv' into table temp_user_info_data fields terminated by ',' (userid,fieldid,data);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

Jika data Anda memiliki satu baris pertama yang berisi nama kolom, maka berikan ignore 1 lines seperti berikut:

mysql> load data local infile '/root/contoh.csv' into table temp_user_info_data fields terminated by ',' ignore 1 lines (userid,fieldid,data);

Switch php version

Berikut adalah untuk switch dari satu versi php ke versi lainnya

sudo update-alternatives --config php

Setelah itu akan muncul pilihan sebagai berikut (tergantung php version yang sudah/pernah di install):

There are 5 choices for the alternative php (providing /usr/bin/php).

  Selection    Path             Priority   Status
------------------------------------------------------------
  0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php7.1   71        manual mode
  2            /usr/bin/php7.2   72        manual mode
* 3            /usr/bin/php7.4   74        manual mode
  4            /usr/bin/php8.0   80        manual mode
  5            /usr/bin/php8.1   81        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

Reference: https://php.tutorials24x7.com/blog/how-to-switch-php-version-on-ubuntu-20-04-lts

Mod rewrite (part.1)

Mod Rewrite part.1

Mod_Rewrite memungkinkan Anda membuat URL khusus dan sederhana sesuai kebutuhan.

Tulisan ini akan membahas tentang bagaimana mengaktifkan Mod_Rewrite, Membuat dan Menggunakan halaman .htaccess yang diperlukan, dan menyiapkan penulisan ulang URL.

Before we begin generating the actual URL rewrites, we need to activate the apache mod_rewrite module that controls them.

sudo a2enmod rewrite

Perintah mengaktifkan modul atau—jika sudah diaktifkan, menampilkan kata-kata, “Module rewrite sudah diaktifkan”

Setelah modul diaktifkan, Anda dapat mengatur penulisan ulang URL dengan membuat file .htaccess di direktori situs web Anda.

File .htaccess adalah cara untuk mengonfigurasi detail situs web Anda tanpa perlu mengubah file konfigurasi server. Tanda titik yang meng’awali’ nama file akan membuat file ini tidak tampak secara default di dalam folder.

Selain itu, peletakan file .htaccess juga penting. Konfigurasi dalam file itu akan memengaruhi semua yang ada di direktori dan direktori di bawahnya.

Cara mengizinkan perubahan dalam file .htaccess

Untuk mengizinkan file .htaccess menimpa konfigurasi situs web standar, kita awali dengan dengan membuka file konfigurasi. Catatan: Anda memerlukan hak sudo untuk langkah ini.

sudo nano /etc/apache2/sites-available/default

Setelah berada di dalam file itu, temukan bagian berikut, dan ubah baris yang mengatakan AllowOverride dari None menjadi All. Bagian tersebut sekarang akan terlihat seperti ini:

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
 </Directory>

Setelah Anda menyimpan dan keluar dari file itu, restart apache. File .htaccess sekarang akan tersedia untuk semua situs Anda.

sudo service apache2 restart

Refference: Digital Ocean: How To Set Up Mod_Rewrite

Netplan & DNS nameserver Ubuntu 18.04

Selama bertahun untuk setting nameserver kita cukup mengganti /etc/resolv.conf :

nameserver 8.8.4.4
nameserver 8.8.8.8

selain itu kita dapat  merubah di /etc/network/interfaces menjadi

dns-addresses 8.8.4.4, 8.8.8.8

Lalu restart :

sudo systemctl restart networking

atau

sudo /etc/init.d/networking restart

Saat ini versi terbaru ubuntu mulai menggunakan Netplan.

Netplan adalah utilitas baris perintah untuk konfigurasi jaringan pada distribusi Linux tertentu. Netplan menggunakan file deskripsi YAML untuk mengkonfigurasi antarmuka jaringan dan, dari deskripsi tersebut, akan menghasilkan pilihan konfigurasi yang diinginkan untuk alat render (eg. network-manager).

File yang perlu kita setup adalah : /etc/netplan/01-*/yaml.

Sehingga kita perlu meletakkan code seperti berikut di dalamnya:

nameserver:
   addresses: [8.8.4.4, 8.8.8.8]

 

Fix Error #551 in phpMyAdmin 18.04

Error message containts :

Warning in ./libraries/plugin_interface.lib.php#551
count(): Parameter must be an array or an object that implements Countable

Solution:

You can also fix this by editing the library itself.

  1. Make a backup first
    sudo cp /usr/share/phpmyadmin/libraries/plugininterface.lib.php /usr/share/phpmyadmin/libraries/plugininterface.lib.php.bak
  2. Edit the library
    sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
  3. Search for “if (! is_null($options) && count($options) > 0) {”
    or if not found then search for “if ($options != null && count($options) > 0) {”

Then replace it with “if ($options != null) {”

To search in Nano editor press CTRL and W

  1. Save the file (CTRL and O)
  2. Refresh the phpMyAdmin page and try agin.

Backup Stored Procedures and Routines

We need to specify --routines to take backup of stored procedures with data and tables.

The following command will take backup of entire database including stored procedures. For example, your database name is “mydb”.

mysqldump -u root -p –routines mydb > mydb.sql

To take backup of only Stored Procedures and Triggers (Exclude table and data ) use the following command.

mysqldump –routines –no-create-info –no-data –no-create-db –skip-opt mydb > mydb.sql

Reference:
https://tecadmin.net

How to Change Hostname on Ubuntu 18.04

View the current hostname

$ hostnamectl
 Static hostname: dbserver
         Icon name: computer-vm
           Chassis: vm
        Machine ID: baf17aaaa3c343c48cc85d38fa7534c8
           Boot ID: 0c82f3ccd20c4fda9d6d317d551d3ba9
    Virtualization: kvm
  Operating System: Ubuntu 18.04.4 LTS
            Kernel: Linux 4.15.0-1058-aws
      Architecture: x86-64

As you can see in the image above, the current hostname is set to dbserver.

Now, we will change the hostname

1. Using hostnamectl command

sudo hostnamectl set-hostname dbserver2

2. Edit the /etc/hosts file

127.0.0.1   localhost
127.0.0.1   dbserver2

 

PostgreSQL remote connection

This arcticle was writen based PostgreSQL version 10.10 and running on Ubuntu 18.04

Configuring postgresql.conf

Find postgresql.conf

$ find / -name "postgresql.conf"
/usr/lib/tmpfiles.d/postgresql.conf
/etc/postgresql/10/main/postgresql.conf

Open file /etc/postgresql/10/main/postgresql.conf and replace line

listen_addresses = 'localhost'

with

listen_addresses = '*'

Configuring pg_hba.conf

Open file /etc/postgresql/10/main/pg_hba.conf and add following entry at the very end

host    all             all     0.0.0.0/0                    md5
host    all             all     ::/0                         md5

Do not get confused by “md5” option mentioned above. All it means is that a password needs to be provided. If you want client to allow collection without providing any password then change “md5” to “trust” and that will allow connection unconditionally.

Restart postgresql server.

1 2 3 4 5 12