From 12e907b76fc9716ea65a96c76e7a26ac60da501f Mon Sep 17 00:00:00 2001 From: Daniel Barros Date: Thu, 20 Feb 2025 10:56:42 -0300 Subject: [PATCH] Adicionando 3.7 Saberes Base --- .dockerignore | 4 + .idea/.gitignore | 8 + .idea/php.xml | 19 + .moodledata.swp | Bin 0 -> 1024 bytes 00_limits.ini | 21 ++ 00_opcache.ini | 13 + 01-saberes.conf | 3 + 10-server.conf | 16 + Dockerfile | 65 ++++ README.md | 2 + clean | 6 + components.list | 62 ++++ config.php | 767 +++++++++++++++++++++++++++++++++++++++++ copies/certificate.php | 257 ++++++++++++++ crontab | 2 + docker-compose.yml | 38 ++ install.sh | 4 + moodle-config.php | 766 ++++++++++++++++++++++++++++++++++++++++ run.sh | 27 ++ startcron.sh | 8 + teste.txt | 0 21 files changed, 2088 insertions(+) create mode 100644 .dockerignore create mode 100644 .idea/.gitignore create mode 100644 .idea/php.xml create mode 100644 .moodledata.swp create mode 100755 00_limits.ini create mode 100755 00_opcache.ini create mode 100644 01-saberes.conf create mode 100644 10-server.conf create mode 100755 Dockerfile create mode 100755 README.md create mode 100755 clean create mode 100644 components.list create mode 100755 config.php create mode 100644 copies/certificate.php create mode 100755 crontab create mode 100755 docker-compose.yml create mode 100755 install.sh create mode 100755 moodle-config.php create mode 100755 run.sh create mode 100755 startcron.sh delete mode 100644 teste.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9ee7005 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +**/dump.sql +**/moodledata +**/data + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..f324872 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.moodledata.swp b/.moodledata.swp new file mode 100644 index 0000000000000000000000000000000000000000..d7b3eb82b8ad665b4d0b707bdfc9c0762710cbaa GIT binary patch literal 1024 zcmYc?$V<%2S1{8vVn6}wYt$Hu^7Bhj1aWYR6O&SlQj1ek%Wx=w3g_nMr{tujB$g!N QS2rp<8UmvsK%Wo*0Lh^aNB{r; literal 0 HcmV?d00001 diff --git a/00_limits.ini b/00_limits.ini new file mode 100755 index 0000000..c239e30 --- /dev/null +++ b/00_limits.ini @@ -0,0 +1,21 @@ +; Maximum amount of memory a script may consume (128MB) +; http://php.net/memory-limit +memory_limit = 512M + +; Maximum size of POST data that PHP will accept. +; Its value may be 0 to disable the limit. It is ignored if POST data reading +; is disabled through enable_post_data_reading. +; http://php.net/post-max-size +post_max_size = 2G + +; Maximum allowed size for uploaded files. +; http://php.net/upload-max-filesize +upload_max_filesize = 2G + +; Maximum execution time of each script, in seconds +; http://php.net/max-execution-time +; Note: This directive is hardcoded to 0 for the CLI SAPI +max_execution_time = 600 + +max_input_time = 300 +max_execution_time = 300 diff --git a/00_opcache.ini b/00_opcache.ini new file mode 100755 index 0000000..0bf6179 --- /dev/null +++ b/00_opcache.ini @@ -0,0 +1,13 @@ +; Enable opcache extension module +extension=opcache.so +zend_extension=opcache.so + +; Custom settings +opcache.enable=1 +opcache.enable_file_override=0 +opcache.max_accelerated_files=10000 +opcache.memory_consumption=512 +opcache.revalidate_freq=60 +opcache.save_comments=1 +opcache.use_cwd=1 +opcache.validate_timestamps=1 diff --git a/01-saberes.conf b/01-saberes.conf new file mode 100644 index 0000000..312a390 --- /dev/null +++ b/01-saberes.conf @@ -0,0 +1,3 @@ +# Saberes boilerplate +ServerName saberes.senado.leg.br +DocumentRoot "/var/www/html/moodle" diff --git a/10-server.conf b/10-server.conf new file mode 100644 index 0000000..91ca4b2 --- /dev/null +++ b/10-server.conf @@ -0,0 +1,16 @@ +# Settings +DirectoryIndex index.php +DocumentRoot "/var/www/html/moodle" +TimeOut 1200 + + + Options FollowSymLinks + AllowOverride All + + + Allow from all + + = 2.4> + Require all granted + + diff --git a/Dockerfile b/Dockerfile new file mode 100755 index 0000000..8a7065a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,65 @@ +FROM webdevops/php-apache:7.3-alpine + +ENV HOME="/" +ENV MOODLE="/var/www/html/moodle" +ENV MOODLE_BRANCH="SABERES_37_STABLE" +ENV DATAROOT="/var/www/html/moodledata" + +# Install required packages +RUN apk update && \ + apk upgrade && \ + apk add vim nano aspell clamav ghostscript git graphviz tzdata \ + php-curl php-gd php-intl php-ldap php-mbstring php-pgsql \ + php-pspell php-soap php-xml php-xmlrpc php-zip + +# Set timezone and language +RUN ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && \ + echo "America/Sao_Paulo" > /etc/timezone + +ENV TZ America/Sao_Paulo +ENV LANG pt.UTF-8 +ENV LANGUAGE pt.UTF-8 +ENV LC_ALL pt.UTF-8 + +# Install Moodle core system +RUN mkdir -p ${MOODLE}/ && \ + git clone https://github.com/interlegis/moodle.git ${MOODLE}/ \ + --branch ${MOODLE_BRANCH} \ + --depth 1 \ + --single-branch && \ + chown -Rf www-data:www-data ${MOODLE}/ && \ + chmod -R 755 ${MOODLE}/ && \ + find ${MOODLE}/ -type d -exec chmod g+s {} \; + +# Ensure dataroot directory is writable +RUN mkdir -p ${DATAROOT} && \ + chown -R www-data:www-data ${DATAROOT} && \ + chmod -R 777 ${DATAROOT} + +# Install config.php +COPY moodle-config.php ${MOODLE}/config.php + +# Install Moodle components (blocks, modules, themes, etc) +COPY components.list /tmp/components.list +RUN while IFS=";" read type name url branch; do \ + if ! [[ ${type} =~ ^# ]]; then \ + git clone --recursive ${url} ${MOODLE}/${type}/${name} \ + --branch ${branch} \ + --depth 1 \ + --single-branch; \ + fi; \ + done < /tmp/components.list + +COPY 00_limits.ini /etc/php/7.3/apache2/conf.d/00_limits.ini +COPY 00_opcache.ini /etc/php/7.3/apache2/conf.d/00_opcache.ini +COPY install.sh /usr/local/bin +COPY run.sh /opt/apache2/run.sh +COPY crontab /etc/cron.d +COPY startcron.sh /usr/local/bin +COPY config.php /var/www/html/moodle/config.php +COPY copies/certificate.php /var/www/html/moodle/mod/certificate/type/ILB_flex/certificate.php + +COPY ./01-saberes.conf /opt/docker/etc/httpd/vhost.common.d/ +COPY ./10-server.conf /opt/docker/etc/httpd/conf.d/ + +# COPY ./saberesdb.sqlc /tmp/saberesdb.sqlc diff --git a/README.md b/README.md new file mode 100755 index 0000000..5d59bb2 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# docker-saberes +Docker da plataforma Saberes, do ILB diff --git a/clean b/clean new file mode 100755 index 0000000..68968c5 --- /dev/null +++ b/clean @@ -0,0 +1,6 @@ +docker container kill `docker container ls -q` +docker container prune -f +docker image rm `docker image ls -q` +docker image prune -f +docker system prune -f +docker volume prune -f diff --git a/components.list b/components.list new file mode 100644 index 0000000..01eb1c6 --- /dev/null +++ b/components.list @@ -0,0 +1,62 @@ +blocks;accessibility;https://github.com/TalesRG/saberes_moodle_plugins;master +blocks;completion_progress;https://github.com/jonof/moodle-block_completion_progress.git;2020081000 +blocks;configurable_reports;https://github.com/jleyva/moodle-block_configurablereports.git;MOODLE_36_STABLE +blocks;course_contacts;https://github.com/roelmann/moodle-block_course_contacts.git;STABLE_39 +blocks;download_certificates;https://github.com/manieer/moodle-block_download_certificates.git;master +blocks;enrol_duration;https://github.com/nrobbins/moodle_block_enrol_duration.git;master +blocks;userexpire;https://github.com/coderader/moodle-block_userexpire.git;1.1 +blocks;fbcomments;https://github.com/victordscabral/moodle-fbcomments.git;main +# +blocks;fale_conosco;https://github.com/interlegis/moodle-block_fale_conosco.git;master +blocks;microsoft;https://github.com/microsoft/moodle-block_microsoft.git;MOODLE_37_STABLE +blocks;get_certificate;https://github.com/interlegis/moodle_get_certificate.git;MOODLE_31_STABLE +blocks;escola_modelo;https://github.com/interlegis/moodle-block_escola_modelo.git;MOODLE_37_STABLE +blocks;verify_certificate;https://github.com/interlegis/moodle_block_verify_certificate.git;master +blocks;xp;https://github.com/FMCorz/moodle-block_xp.git;v3.7.0 +# +mod;assignment;https://github.com/moodlehq/moodle-mod_assignment.git;mod_assignment_41 +mod;attendance;https://github.com/danmarsden/moodle-mod_attendance.git;MOODLE_37_STABLE +mod;certificate;https://github.com/interlegis/moodle_certificates.git;MOODLE_37_STABLE +mod;customcert;https://github.com/mdjnelson/moodle-mod_customcert.git;MOODLE_37_STABLE +mod;game;https://github.com/bdaloukas/moodle-mod_game.git;MOODLE_20_STABLE +mod;groupselect;https://github.com/rogerbaba/moodle-mod_groupselect.git;GROUPSELECT_3_17_STABLE +mod;journal;https://github.com/elearningsoftware/moodle-mod_journal.git;master +mod;palestra;https://github.com/interlegis/moodle-mod_palestra.git;main +mod;questionnaire;https://github.com/PoetOS/moodle-mod_questionnaire.git;MOODLE_37_STABLE +mod;zoom;https://github.com/ncstate-delta/moodle-mod_zoom.git;v3.7 +mod/quiz/accessrule;reattemptchecker;https://github.com/learningstacks/moodle-quizaccess_reattemptchecker.git;master +mod;bigbluebuttonbn;https://github.com/blindsidenetworks/moodle-mod_bigbluebuttonbn.git;v2.3-b2 +mod;hvp;https://github.com/victordscabral/moodle-mod_hvp.git;main +mod;hotpot;https://github.com/gbateson/moodle-mod_hotpot.git;master +mod;moodle-availability_days;https://github.com/vfremaux/moodle-availability_days.git;MOODLE_39_STABLE +# +enrol;ilbead;https://github.com/interlegis/moodle_enrol_ilbead.git;MOODLE_34_STABLE +enrol;ilbeadtutorado;https://github.com/interlegis/moodle_enrol_ilbeadtutorado.git;MOODLE_34_STABLE +enrol;apply;https://github.com/emeneo/moodle-enrol_apply.git;v3.7-a +enrol;evl;https://git.interlegis.leg.br/ILB/moodle-enrol_evl.git;MOODLE_37_STABLE +enrol;autoenrol;https://github.com/bobopinna/moodle-enrol_autoenrol.git;master +# +user/profile/field;cpf;https://github.com/interlegis/moodle_profilefield_cpf.git;MOODLE_34_STABLE +# +report;messages;https://github.com/interlegis/moodle_report_messages.git;master +report;ilbsplit;https://github.com/interlegis/moodle-report_ilbsplit.git;master +report;ilbenrol;https://github.com/interlegis/moodle_report_ilbenrol.git;MOODLE_34_STABLE +# +filter;oembed;https://github.com/TalesRG/moodle-filter_oembed;master +# +auth;oidc;https://github.com/microsoft/moodle-auth_oidc.git;MOODLE_37_STABLE +# +/lib/editor/atto/plugins;teamsmeeting;https://github.com/enovation/moodle-atto_teamsmeeting.git;master +# +repository;office365;https://github.com/microsoft/moodle-repository_office365.git;MOODLE_37_STABLE +# +theme;boost_o365teams;https://github.com/microsoft/moodle-theme_boost_o365teams.git;MOODLE_37_STABLE +theme;ilb;https://github.com/interlegis/moodle_theme_ilb.git;MOODLE_37_STABLE +theme;fordson;https://github.com/dbnschools/moodle-theme_fordson;moodle37 +# +format;tiles;https://bitbucket.org/dw8/moodle-format_tiles.git;moodle37 +# +local;mass_enroll;https://github.com/victordscabral/old_version-moodle-local_mass_enroll.git;main +local;o365;https://github.com/microsoft/moodle-local_o365.git;MOODLE_37_STABLE +local;wsilb;https://github.com/interlegis/moodle-local_wsilb.git;main +local;ws_evl;https://github.com/interlegis/moodle-local_ws_evl.git;master diff --git a/config.php b/config.php new file mode 100755 index 0000000..e128589 --- /dev/null +++ b/config.php @@ -0,0 +1,767 @@ +dbsessions='0'; + +//$CFG->theme='boost'; +//========================================================================= +// 1. DATABASE SETUP +//========================================================================= +// First, you need to configure the database where all Moodle data // +// will be stored. This database must already have been created // +// and a username/password created to access it. // + +$CFG->urlTicketAPIURL = getenv('OSTICKET_API_URL'); +$CFG->urlTicketAPIKey = getenv('OSTICKET_API_KEY'); + +$CFG->dbtype = 'pgsql'; // 'pgsql', 'mariadb', 'mysqli', 'mssql', 'sqlsrv' or 'oci' +$CFG->dblibrary = 'native'; // 'native' only at the moment +$CFG->dbhost = getenv('MOODLE_DB_HOST'); // eg 'localhost' or 'db.isp.com' or IP +$CFG->dbname = getenv('MOODLE_DB_NAME'); // database name, eg moodle +$CFG->dbuser = getenv('MOODLE_DB_USER'); // your database username +$CFG->dbpass = getenv('MOODLE_DB_PASS'); // your database password +$CFG->prefix = 'mdl_'; // prefix to use for all table names +$CFG->dboptions = array( + 'dbpersist' => false, // should persistent database connections be + // used? set to 'false' for the most stable + // setting, 'true' can improve performance + // sometimes + 'dbsocket' => false, // should connection via UNIX socket be used? + // if you set it to 'true' or custom path + // here set dbhost to 'localhost', + // (please note mysql is always using socket + // if dbhost is 'localhost' - if you need + // local port connection use '127.0.0.1') + //'dbport' => getenv('DB_PORT_3306_TCP_PORT'), // the TCP port number to use when connecting + // to the server. keep empty string for the + // default port +); + + +//========================================================================= +// 2. WEB SITE LOCATION +//========================================================================= +// Now you need to tell Moodle where it is located. Specify the full +// web address to where moodle has been installed. If your web site +// is accessible via multiple URLs then choose the most natural one +// that your students would use. Do not include a trailing slash +// +// If you need both intranet and Internet access please read +// http://docs.moodle.org/en/masquerading + +$CFG->wwwroot = getenv('MOODLE_URL'); + + +//========================================================================= +// 3. DATA FILES LOCATION +//========================================================================= +// Now you need a place where Moodle can save uploaded files. This +// directory should be readable AND WRITEABLE by the web server user +// (usually 'nobody' or 'apache'), but it should not be accessible +// directly via the web. +// +// - On hosting systems you might need to make sure that your "group" has +// no permissions at all, but that "others" have full permissions. +// +// - On Windows systems you might specify something like 'c:\moodledata' + +$CFG->dataroot = getenv('MOODLE_DATA'); + + +//========================================================================= +// 4. DATA FILES PERMISSIONS +//========================================================================= +// The following parameter sets the permissions of new directories +// created by Moodle within the data directory. The format is in +// octal format (as used by the Unix utility chmod, for example). +// The default is usually OK, but you may want to change it to 0750 +// if you are concerned about world-access to the files (you will need +// to make sure the web server process (eg Apache) can access the files. +// NOTE: the prefixed 0 is important, and don't use quotes. + +$CFG->directorypermissions = 02777; + + +//========================================================================= +// 5. DIRECTORY LOCATION (most people can just ignore this setting) +//========================================================================= +// A very few webhosts use /admin as a special URL for you to access a +// control panel or something. Unfortunately this conflicts with the +// standard location for the Moodle admin pages. You can work around this +// by renaming the admin directory in your installation, and putting that +// new name here. eg "moodleadmin". This should fix all admin links in Moodle. +// After any change you need to visit your new admin directory +// and purge all caches. + +$CFG->admin = 'admin'; + + +//========================================================================= +// 6. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations) +//========================================================================= +// +// These are additional tweaks for which no GUI exists in Moodle yet. +// +// Starting in PHP 5.3 administrators should specify default timezone +// in PHP.ini, you can also specify it here if needed. +// See details at: http://php.net/manual/en/function.date-default-timezone-set.php +// List of time zones at: http://php.net/manual/en/timezones.php +// date_default_timezone_set('Australia/Perth'); +// +// Change the key pair lifetime for Moodle Networking +// The default is 28 days. You would only want to change this if the key +// was not getting regenerated for any reason. You would probably want +// make it much longer. Note that you'll need to delete and manually update +// any existing key. +// $CFG->mnetkeylifetime = 28; +// +// Allow user passwords to be included in backup files. Very dangerous +// setting as far as it publishes password hashes that can be unencrypted +// if the backup file is publicy available. Use it only if you can guarantee +// that all your backup files remain only privacy available and are never +// shared out from your site/institution! +// $CFG->includeuserpasswordsinbackup = true; +// +// Completely disable user creation when restoring a course, bypassing any +// permissions granted via roles and capabilities. Enabling this setting +// results in the restore process stopping when a user attempts to restore a +// course requiring users to be created. +// $CFG->disableusercreationonrestore = true; +// +// Keep the temporary directories used by backup and restore without being +// deleted at the end of the process. Use it if you want to debug / view +// all the information stored there after the process has ended. Note that +// those directories may be deleted (after some ttl) both by cron and / or +// by new backup / restore invocations. +// $CFG->keeptempdirectoriesonbackup = true; +// +// Modify the restore process in order to force the "user checks" to assume +// that the backup originated from a different site, so detection of matching +// users is performed with different (more "relaxed") rules. Note that this is +// only useful if the backup file has been created using Moodle < 1.9.4 and the +// site has been rebuilt from scratch using backup files (not the best way btw). +// If you obtain user conflicts on restore, rather than enabling this setting +// permanently, try restoring the backup on a different site, back it up again +// and then restore on the target server. +// $CFG->forcedifferentsitecheckingusersonrestore = true; +// +// Prevent stats processing and hide the GUI +// $CFG->disablestatsprocessing = true; +// +// Setting this to true will enable admins to edit any post at any time +// $CFG->admineditalways = true; +// +// These variables define DEFAULT block variables for new courses +// If this one is set it overrides all others and is the only one used. +// $CFG->defaultblocks_override = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// These variables define the specific settings for defined course formats. +// They override any settings defined in the formats own config file. +// $CFG->defaultblocks_site = 'site_main_menu,course_list:course_summary,calendar_month'; +// $CFG->defaultblocks_social = 'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,course_list'; +// $CFG->defaultblocks_topics = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// $CFG->defaultblocks_weeks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// These blocks are used when no other default setting is found. +// $CFG->defaultblocks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// You can specify a different class to be created for the $PAGE global, and to +// compute which blocks appear on each page. However, I cannot think of any good +// reason why you would need to change that. It just felt wrong to hard-code the +// the class name. You are strongly advised not to use these to settings unless +// you are absolutely sure you know what you are doing. +// $CFG->moodlepageclass = 'moodle_page'; +// $CFG->moodlepageclassfile = "$CFG->dirroot/local/myplugin/mypageclass.php"; +// $CFG->blockmanagerclass = 'block_manager'; +// $CFG->blockmanagerclassfile = "$CFG->dirroot/local/myplugin/myblockamanagerclass.php"; +// +// Seconds for files to remain in caches. Decrease this if you are worried +// about students being served outdated versions of uploaded files. +// $CFG->filelifetime = 60*60*6; +// +// Some web servers can offload the file serving from PHP process, +// comment out one the following options to enable it in Moodle: +// $CFG->xsendfile = 'X-Sendfile'; // Apache {@see https://tn123.org/mod_xsendfile/} +// $CFG->xsendfile = 'X-LIGHTTPD-send-file'; // Lighttpd {@see http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file} +// $CFG->xsendfile = 'X-Accel-Redirect'; // Nginx {@see http://wiki.nginx.org/XSendfile} +// If your X-Sendfile implementation (usually Nginx) uses directory aliases specify them +// in the following array setting: +// $CFG->xsendfilealiases = array( +// '/dataroot/' => $CFG->dataroot, +// '/cachedir/' => '/var/www/moodle/cache', // for custom $CFG->cachedir locations +// '/localcachedir/' => '/var/local/cache', // for custom $CFG->localcachedir locations +// '/tempdir/' => '/var/www/moodle/temp', // for custom $CFG->tempdir locations +// '/filedir' => '/var/www/moodle/filedir', // for custom $CFG->filedir locations +// ); +// +// YUI caching may be sometimes improved by slasharguments: +// $CFG->yuislasharguments = 1; +// Some servers may need a special rewrite rule to work around internal path length limitations: +// RewriteRule (^.*/theme/yui_combo\.php)(/.*) $1?file=$2 +// +// +// Following settings may be used to select session driver, uncomment only one of the handlers. +// Database session handler (not compatible with MyISAM): +// $CFG->session_handler_class = '\core\session\database'; +// $CFG->session_database_acquire_lock_timeout = 120; +// +// File session handler (file system locking required): +// $CFG->session_handler_class = '\core\session\file'; +// $CFG->session_file_save_path = $CFG->dataroot.'/sessions'; +// +// Memcached session handler (requires memcached server and extension): +// $CFG->session_handler_class = '\core\session\memcached'; +// $CFG->session_memcached_save_path = '127.0.0.1:11211'; +// $CFG->session_memcached_prefix = 'memc.sess.key.'; +// $CFG->session_memcached_acquire_lock_timeout = 120; +// $CFG->session_memcached_lock_expire = 7200; // Ignored if memcached extension <= 2.1.0 +// +// Memcache session handler (requires memcached server and memcache extension): +// $CFG->session_handler_class = '\core\session\memcache'; +// $CFG->session_memcache_save_path = '127.0.0.1:11211'; +// $CFG->session_memcache_acquire_lock_timeout = 120; +// ** NOTE: Memcache extension has less features than memcached and may be +// less reliable. Use memcached where possible or if you encounter +// session problems. ** +// +// Please be aware that when selecting either Memcached or Memcache for sessions that it is advised to use a dedicated +// memcache server. The memcache and memcached extensions do not provide isolated environments for individual uses. +// Using the same server for other purposes (MUC for example) can lead to sessions being prematurely removed should +// the other uses of the server purge the cache. +// +// Following setting allows you to alter how frequently is timemodified updated in sessions table. +// $CFG->session_update_timemodified_frequency = 20; // In seconds. +// +// If this setting is set to true, then Moodle will track the IP of the +// current user to make sure it hasn't changed during a session. This +// will prevent the possibility of sessions being hijacked via XSS, but it +// may break things for users coming using proxies that change all the time, +// like AOL. +// $CFG->tracksessionip = true; +// +// The following lines are for handling email bounces. +// $CFG->handlebounces = true; +// $CFG->minbounces = 10; +// $CFG->bounceratio = .20; +// The next lines are needed both for bounce handling and any other email to module processing. +// mailprefix must be EXACTLY four characters. +// Uncomment and customise this block for Postfix +// $CFG->mailprefix = 'mdl+'; // + is the separator for Exim and Postfix. +// $CFG->mailprefix = 'mdl-'; // - is the separator for qmail +// $CFG->maildomain = 'youremaildomain.com'; +// +// Enable when setting up advanced reverse proxy load balancing configurations, +// it may be also necessary to enable this when using port forwarding. +$CFG->reverseproxy = filter_var(getenv('MOODLE_REVERSEPROXY'), FILTER_VALIDATE_BOOLEAN); +// +// Enable when using external SSL appliance for performance reasons. +// Please note that site may be accessible via https: or https:, but not both! +$CFG->sslproxy = filter_var(getenv('MOODLE_SSLPROXY'), FILTER_VALIDATE_BOOLEAN); +// +// This setting will cause the userdate() function not to fix %d in +// date strings, and just let them show with a zero prefix. +// $CFG->nofixday = true; +// +// This setting will make some graphs (eg user logs) use lines instead of bars +// $CFG->preferlinegraphs = true; +// +// Enabling this will allow custom scripts to replace existing moodle scripts. +// For example: if $CFG->customscripts/course/view.php exists then +// it will be used instead of $CFG->wwwroot/course/view.php +// At present this will only work for files that include config.php and are called +// as part of the url (index.php is implied). +// Some examples are: +// http://my.moodle.site/course/view.php +// http://my.moodle.site/index.php +// http://my.moodle.site/admin (index.php implied) +// Custom scripts should not include config.php +// Warning: Replacing standard moodle scripts may pose security risks and/or may not +// be compatible with upgrades. Use this option only if you are aware of the risks +// involved. +// Specify the full directory path to the custom scripts +// $CFG->customscripts = '/home/example/customscripts'; +// +// Performance profiling +// +// If you set Debug to "Yes" in the Configuration->Variables page some +// performance profiling data will show up on your footer (in default theme). +// With these settings you get more granular control over the capture +// and printout of the data +// +// Capture performance profiling data +// define('MDL_PERF' , true); +// +// Capture additional data from DB +// define('MDL_PERFDB' , true); +// +// Print to log (for passive profiling of production servers) +// define('MDL_PERFTOLOG' , true); +// +// Print to footer (works with the default theme) +// define('MDL_PERFTOFOOT', true); +// +// Enable earlier profiling that causes more code to be covered +// on every request (db connections, config load, other inits...). +// Requires extra configuration to be defined in config.php like: +// profilingincluded, profilingexcluded, profilingautofrec, +// profilingallowme, profilingallowall, profilinglifetime +// $CFG->earlyprofilingenabled = true; +// +// Force displayed usernames +// A little hack to anonymise user names for all students. If you set these +// then all non-teachers will always see these for every person. +// $CFG->forcefirstname = 'Bruce'; +// $CFG->forcelastname = 'Simpson'; +// +// The following setting will turn SQL Error logging on. This will output an +// entry in apache error log indicating the position of the error and the statement +// called. This option will action disregarding error_reporting setting. +// $CFG->dblogerror = true; +// +// The following setting will log every database query to a table called adodb_logsql. +// Use this setting on a development server only, the table grows quickly! +// $CFG->logsql = true; +// +// The following setting will turn on username logging into Apache log. For full details regarding setting +// up of this function please refer to the install section of the document. +// $CFG->apacheloguser = 0; // Turn this feature off. Default value. +// $CFG->apacheloguser = 1; // Log user id. +// $CFG->apacheloguser = 2; // Log full name in cleaned format. ie, Darth Vader will be displayed as darth_vader. +// $CFG->apacheloguser = 3; // Log username. +// To get the values logged in Apache's log, add to your httpd.conf +// the following statements. In the General part put: +// LogFormat "%h %l %{MOODLEUSER}n %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" moodleformat +// And in the part specific to your Moodle install / virtualhost: +// CustomLog "/your/path/to/log" moodleformat +// CAUTION: Use of this option will expose usernames in the Apache log, +// If you are going to publish your log, or the output of your web stats analyzer +// this will weaken the security of your website. +// +// Email database connection errors to someone. If Moodle cannot connect to the +// database, then email this address with a notice. +// +// $CFG->emailconnectionerrorsto = 'your@emailaddress.com'; +// +// Set the priority of themes from highest to lowest. This is useful (for +// example) in sites where the user theme should override all other theme +// settings for accessibility reasons. You can also disable types of themes +// (other than site) by removing them from the array. The default setting is: +// $CFG->themeorder = array('course', 'category', 'session', 'user', 'site'); +// NOTE: course, category, session, user themes still require the +// respective settings to be enabled +// +// It is possible to add extra themes directory stored outside of $CFG->dirroot. +// This local directory does not have to be accessible from internet. +// +// $CFG->themedir = '/location/of/extra/themes'; +// +// It is possible to specify different cache and temp directories, use local fast filesystem +// for normal web servers. Server clusters MUST use shared filesystem for cachedir! +// Localcachedir is intended for server clusters, it does not have to be shared by cluster nodes. +// The directories must not be accessible via web. +// +// $CFG->tempdir = '/var/www/moodle/temp'; // Files used during one HTTP request only. +// $CFG->cachedir = '/var/www/moodle/cache'; // Directory MUST BE SHARED by all cluster nodes, locking required. +// $CFG->localcachedir = '/var/local/cache'; // Intended for local node caching. +// +// Some filesystems such as NFS may not support file locking operations. +// Locking resolves race conditions and is strongly recommended for production servers. +// $CFG->preventfilelocking = false; +// +// Site default language can be set via standard administration interface. If you +// want to have initial error messages for eventual database connection problems +// localized too, you have to set your language code here. +// +// $CFG->lang = 'yourlangcode'; // for example 'cs' +// +// When Moodle is about to perform an intensive operation it raises PHP's memory +// limit. The following setting should be used on large sites to set the raised +// memory limit to something higher. +// The value for the settings should be a valid PHP memory value. e.g. 512M, 1G +// +// $CFG->extramemorylimit = '1024M'; +// +// Moodle 2.4 introduced a new cache API. +// The cache API stores a configuration file within the Moodle data directory and +// uses that rather than the database in order to function in a stand-alone manner. +// Using altcacheconfigpath you can change the location where this config file is +// looked for. +// It can either be a directory in which to store the file, or the full path to the +// file if you want to take full control. Either way it must be writable by the +// webserver. +// +// $CFG->altcacheconfigpath = '/var/www/shared/moodle.cache.config.php +// +// The CSS files the Moodle produces can be extremely large and complex, especially +// if you are using a custom theme that builds upon several other themes. +// In Moodle 2.3 a CSS optimiser was added as an experimental feature for advanced +// users. The CSS optimiser organises the CSS in order to reduce the overall number +// of rules and styles being sent to the client. It does this by collating the +// CSS before it is cached removing excess styles and rules and stripping out any +// extraneous content such as comments and empty rules. +// The following settings are used to enable and control the optimisation. +// +// Enable the CSS optimiser. This will only optimise the CSS if themedesignermode +// is not enabled. This can be set through the UI however it is noted here as well +// because the other CSS optimiser settings can not be set through the UI. +// +// $CFG->enablecssoptimiser = true; +// +// If set the CSS optimiser will add stats about the optimisation to the top of +// the optimised CSS file. You can then inspect the CSS to see the affect the CSS +// optimiser is having. +// +// $CFG->cssoptimiserstats = true; +// +// If set the CSS that is optimised will still retain a minimalistic formatting +// so that anyone wanting to can still clearly read it. +// +// $CFG->cssoptimiserpretty = true; +// +// Use the following flag to completely disable the Available update notifications +// feature and hide it from the server administration UI. +// +$CFG->disableupdatenotifications = true; +// +// Use the following flag to completely disable the Automatic updates deployment +// feature and hide it from the server administration UI. +// +$CFG->disableupdateautodeploy = true; +// +// Use the following flag to completely disable the On-click add-on installation +// feature and hide it from the server administration UI. +// +// $CFG->disableonclickaddoninstall = true; +// +// Use the following flag to disable modifications to scheduled tasks +// whilst still showing the state of tasks. +// +// $CFG->preventscheduledtaskchanges = true; +// +// As of version 2.4 Moodle serves icons as SVG images if the users browser appears +// to support SVG. +// For those wanting to control the serving of SVG images the following setting can +// be defined in your config.php. +// If it is not defined then the default (browser detection) will occur. +// +// To ensure they are always used when available: +// $CFG->svgicons = true; +// +// To ensure they are never used even when available: +// $CFG->svgicons = false; +// +// Some administration options allow setting the path to executable files. This can +// potentially cause a security risk. Set this option to true to disable editing +// those config settings via the web. They will need to be set explicitly in the +// config.php file +// $CFG->preventexecpath = true; +// +// Use the following flag to set userid for noreply user. If not set then moodle will +// create dummy user and use -ve value as user id. +// $CFG->noreplyuserid = -10; +// +// As of version 2.6 Moodle supports admin to set support user. If not set, all mails +// will be sent to supportemail. +// $CFG->supportuserid = -20; +// +// Moodle 2.7 introduces a locking api for critical tasks (e.g. cron). +// The default locking system to use is DB locking for MySQL and Postgres, and File +// locking for Oracle and SQLServer. If $CFG->preventfilelocking is set, then the default +// will always be DB locking. It can be manually set to one of the lock +// factory classes listed below, or one of your own custom classes implementing the +// \core\lock\lock_factory interface. +// +// $CFG->lock_factory = "auto"; +// +// The list of available lock factories is: +// +// "\\core\\lock\\file_lock_factory" - File locking +// Uses lock files stored by default in the dataroot. Whether this +// works on clusters depends on the file system used for the dataroot. +// +// "\\core\\lock\\db_row_lock_factory" - DB locking based on table rows. +// +// "\\core\\lock\\postgres_lock_factory" - DB locking based on postgres advisory locks. +// +// Settings used by the lock factories +// +// Location for lock files used by the File locking factory. This must exist +// on a shared file system that supports locking. +// $CFG->lock_file_root = $CFG->dataroot . '/lock'; +// +//========================================================================= +// 7. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!! +//========================================================================= +// +// Force a debugging mode regardless the settings in the site administration + @error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS! + @ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS! + $CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS! + $CFG->debugdisplay = 1; // NOT FOR PRODUCTION SERVERS! +// +// You can specify a comma separated list of user ids that that always see +// debug messages, this overrides the debug flag in $CFG->debug and $CFG->debugdisplay +// for these users only. +// $CFG->debugusers = '2'; +// +// Prevent theme caching +// $CFG->themedesignermode = true; // NOT FOR PRODUCTION SERVERS! +// +// Prevent JS caching +// $CFG->cachejs = false; // NOT FOR PRODUCTION SERVERS! +// +// Restrict which YUI logging statements are shown in the browser console. +// For details see the upstream documentation: +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logInclude +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logExclude +// $CFG->yuiloginclude = array( +// 'moodle-core-dock-loader' => true, +// 'moodle-course-categoryexpander' => true, +// ); +// $CFG->yuilogexclude = array( +// 'moodle-core-dock' => true, +// 'moodle-core-notification' => true, +// ); +// +// Set the minimum log level for YUI logging statements. +// For details see the upstream documentation: +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logLevel +// $CFG->yuiloglevel = 'debug'; +// +// Prevent core_string_manager application caching +// $CFG->langstringcache = false; // NOT FOR PRODUCTION SERVERS! +// +// When working with production data on test servers, no emails or other messages +// should ever be send to real users +// $CFG->noemailever = true; // NOT FOR PRODUCTION SERVERS! +// +// Divert all outgoing emails to this address to test and debug emailing features +// $CFG->divertallemailsto = 'root@localhost.local'; // NOT FOR PRODUCTION SERVERS! +// +// Uncomment if you want to allow empty comments when modifying install.xml files. +// $CFG->xmldbdisablecommentchecking = true; // NOT FOR PRODUCTION SERVERS! +// +// Since 2.0 sql queries are not shown during upgrade by default. +// Please note that this setting may produce very long upgrade page on large sites. +// $CFG->upgradeshowsql = true; // NOT FOR PRODUCTION SERVERS! +// +// Add SQL queries to the output of cron, just before their execution +// $CFG->showcronsql = true; +// +// Force developer level debug and add debug info to the output of cron +// $CFG->showcrondebugging = true; +// +//========================================================================= +// 8. FORCED SETTINGS +//========================================================================= +// It is possible to specify normal admin settings here, the point is that +// they can not be changed through the standard admin settings pages any more. +// +// Core settings are specified directly via assignment to $CFG variable. +// Example: +// $CFG->somecoresetting = 'value'; +// +// Plugin settings have to be put into a special array. +// Example: +// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'secondsetting' => 'othervalue'), +// 'otherplugin' => array('mysetting' => 'myvalue', 'thesetting' => 'thevalue')); +// Module default settings with advanced/locked checkboxes can be set too. To do this, add +// an extra config with '_adv' or '_locked' as a suffix and set the value to true or false. +// Example: +// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'settingname_locked' => true, 'settingname_adv' => true)); +// +//========================================================================= +// 9. PHPUNIT SUPPORT +//========================================================================= +// $CFG->phpunit_prefix = 'phpu_'; +// $CFG->phpunit_dataroot = '/home/example/phpu_moodledata'; +// $CFG->phpunit_directorypermissions = 02777; // optional +// +// +//========================================================================= +// 10. SECRET PASSWORD SALT +//========================================================================= +// A site-wide password salt is no longer used in new installations. +// If upgrading from 2.6 or older, keep all existing salts in config.php file. +// +// $CFG->passwordsaltmain = 'a_very_long_random_string_of_characters#@6&*1'; +// +// You may also have some alternative salts to allow migration from previously +// used salts. +// +// $CFG->passwordsaltalt1 = ''; +// $CFG->passwordsaltalt2 = ''; +// $CFG->passwordsaltalt3 = ''; +// .... +// $CFG->passwordsaltalt19 = ''; +// $CFG->passwordsaltalt20 = ''; +// +// +//========================================================================= +// 11. BEHAT SUPPORT +//========================================================================= +// Behat test site needs a unique www root, data directory and database prefix: +// +// $CFG->behat_wwwroot = 'http://127.0.0.1/moodle'; +// $CFG->behat_prefix = 'bht_'; +// $CFG->behat_dataroot = '/home/example/bht_moodledata'; +// +// You can override default Moodle configuration for Behat and add your own +// params; here you can add more profiles, use different Mink drivers than Selenium... +// These params would be merged with the default Moodle behat.yml, giving priority +// to the ones specified here. The array format is YAML, following the Behat +// params hierarchy. More info: http://docs.behat.org/guides/7.config.html +// Example: +// $CFG->behat_config = array( +// 'default' => array( +// 'formatter' => array( +// 'name' => 'pretty', +// 'parameters' => array( +// 'decorated' => true, +// 'verbose' => false +// ) +// ) +// ), +// 'Mac-Firefox' => array( +// 'extensions' => array( +// 'Behat\MinkExtension\Extension' => array( +// 'selenium2' => array( +// 'browser' => 'firefox', +// 'capabilities' => array( +// 'platform' => 'OS X 10.6', +// 'version' => 20 +// ) +// ) +// ) +// ) +// ), +// 'Mac-Safari' => array( +// 'extensions' => array( +// 'Behat\MinkExtension\Extension' => array( +// 'selenium2' => array( +// 'browser' => 'safari', +// 'capabilities' => array( +// 'platform' => 'OS X 10.8', +// 'version' => 6 +// ) +// ) +// ) +// ) +// ) +// ); +// +// You can force the browser session (not user's sessions) to restart after N seconds. This could +// be useful if you are using a cloud-based service with time restrictions in the browser side. +// Setting this value the browser session that Behat is using will be restarted. Set the time in +// seconds. Is not recommended to use this setting if you don't explicitly need it. +// Example: +// $CFG->behat_restart_browser_after = 7200; // Restarts the browser session after 2 hours +// +// All this page's extra Moodle settings are compared against a white list of allowed settings +// (the basic and behat_* ones) to avoid problems with production environments. This setting can be +// used to expand the default white list with an array of extra settings. +// Example: +// $CFG->behat_extraallowedsettings = array('logsql', 'dblogerror'); +// +// You should explicitly allow the usage of the deprecated behat steps, otherwise an exception will +// be thrown when using them. The setting is disabled by default. +// Example: +// $CFG->behat_usedeprecated = true; +// +// Including feature files from directories outside the dirroot is possible if required. The setting +// requires that the running user has executable permissions on all parent directories in the paths. +// Example: +// $CFG->behat_additionalfeatures = array('/home/developer/code/wipfeatures'); +// +// You can make behat save several dumps when a scenario fails. The dumps currently saved are: +// * a dump of the DOM in it's state at the time of failure; and +// * a screenshot (JavaScript is required for the screenshot functionality, so not all browsers support this option) +// Example: +// $CFG->behat_faildump_path = '/my/path/to/save/failure/dumps'; +// +//========================================================================= +// 12. DEVELOPER DATA GENERATOR +//========================================================================= +// +// The developer data generator tool is intended to be used only in development or testing sites and +// it's usage in production environments is not recommended; if it is used to create JMeter test plans +// is even less recommended as JMeter needs to log in as site course users. JMeter needs to know the +// users passwords but would be dangerous to have a default password as everybody would know it, which would +// be specially dangerouse if somebody uses this tool in a production site, so in order to prevent unintended +// uses of the tool and undesired accesses as well, is compulsory to set a password for the users +// generated by this tool, but only in case you want to generate a JMeter test. The value should be a string. +// Example: +// $CFG->tool_generator_users_password = 'examplepassword'; +// +//========================================================================= +// 13. SYSTEM PATHS (You need to set following, depending on your system) +//========================================================================= +// Ghostscript path. +// On most Linux installs, this can be left as '/usr/bin/gs'. +// On Windows it will be something like 'c:\gs\bin\gswin32c.exe' (make sure +// there are no spaces in the path - if necessary copy the files 'gswin32c.exe' +// and 'gsdll32.dll' to a new folder without a space in the path) +// $CFG->pathtogs = '/usr/bin/gs'; +// +// Clam AV path. +// Probably something like /usr/bin/clamscan or /usr/bin/clamdscan. You need +// this in order for clam AV to run. +// $CFG->pathtoclam = ''; +// +// Path to du. +// Probably something like /usr/bin/du. If you enter this, pages that display +// directory contents will run much faster for directories with a lot of files. +// $CFG->pathtodu = ''; +// +// Path to aspell. +// To use spell-checking within the editor, you MUST have aspell 0.50 or later +// installed on your server, and you must specify the correct path to access the +// aspell binary. On Unix/Linux systems, this path is usually /usr/bin/aspell, +// but it might be something else. +// $CFG->aspellpath = ''; +// +// Path to dot. +// Probably something like /usr/bin/dot. To be able to generate graphics from +// DOT files, you must have installed the dot executable and point to it here. +// Note that, for now, this only used by the profiling features +// (Development->Profiling) built into Moodle. +// $CFG->pathtodot = ''; + +//========================================================================= +// ALL DONE! To continue installation, visit your main page with a browser +//========================================================================= + +require_once(dirname(__FILE__) . '/lib/setup.php'); // Do not edit + +// There is no php closing tag in this file, +// it is intentional because it prevents trailing whitespace problems! diff --git a/copies/certificate.php b/copies/certificate.php new file mode 100644 index 0000000..6724f99 --- /dev/null +++ b/copies/certificate.php @@ -0,0 +1,257 @@ +. + +/** + * A4_embedded certificate type + * + * @package mod + * @subpackage certificate + * @copyright Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +if (!defined('MOODLE_INTERNAL')) { + die('Direct access to this script is forbidden.'); // It must be included from view.php +} + +/** + * Gets the course start date (for ILB start date is the date of enrollment) + * and completion date from course completion framework. + * Finally format them to print + */ +require_once("$CFG->dirroot/completion/completion_completion.php"); + +// Obtem as preferências para exibição do período do certificado +$periodo_certificado = certificate_obtemCampoCustomizadoCurso($course->id, 'periodo_certificado'); +if (empty(trim($periodo_certificado))) { + $periodo_certificado = 'Duração do curso'; +} + +if ($periodo_certificado == 'Duração do curso') { + // Datas inicial e final são configuradas no curso + $start_date = $course->startdate; + $end_date = $course->enddate; +} else { + // $periodo_certificado == 'Sem período' ou 'Matrícula até conclusão' + require_once("$CFG->dirroot/enrol/locallib.php"); + + // Data inicial é a matrícula + $enrol_manager = new course_enrolment_manager($PAGE, $course); + + // Store the result in a variable first + $user_enrolments = $enrol_manager->get_user_enrolments($USER->id); + $user_enrol = reset($user_enrolments); + + // Check if $user_enrol is an object before accessing its property + if ($user_enrol && is_object($user_enrol)) { + $start_date = $user_enrol->timestart; + } else { + // Handle the case where there is no enrolment object + $start_date = time(); // Default value + } + + // Data final é quando completou o curso + $cc = new completion_completion(array('userid' => $USER->id, 'course' => $course->id)); + $end_date = $cc->timecompleted; +} + +$fmt = '%d/%m/%Y'; // Default format +if ($certificate->datefmt == 1) { + $fmt = '%B %d, %Y'; +} else if ($certificate->datefmt == 2) { + $suffix = certificate_get_ordinal_number_suffix(userdate($ts, '%d')); + $fmt = '%B %d' . $suffix . ', %Y'; +} else if ($certificate->datefmt == 3) { + $fmt = '%d de %B de %Y'; +} else if ($certificate->datefmt == 4) { + $fmt = '%B de %Y'; +} else if ($certificate->datefmt == 5) { + $fmt = get_string('strftimedate', 'langconfig'); +} + +$dataInicio = userdate($start_date, $fmt); +$dataFim = userdate($end_date, $fmt); +$cert_date = $end_date; // para fins de obtenção automática de assinatura (COTREN apenas) + +$anoInicio = userdate($start_date, '%Y'); +$anoFim = userdate($end_date, '%Y'); +$mesInicio = userdate($start_date, '%B'); +$mesFim = userdate($end_date, '%B'); +$diaInicio = userdate($start_date, '%d'); +$diaFim = userdate($end_date, '%d'); +$nome_curso = $course->fullname; + +if ($diaInicio == '1') { + $diaInicio .= "º"; +} +if ($diaFim == '1') { + $diaFim .= "º"; +} + +$nome_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'nome_acao_certificado'); +if (empty(trim($nome_acao))) { + $nome_acao = mb_strtoupper($course->fullname, 'UTF-8'); +} + +$verbo_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'papel_acao_capacitacao'); +if (empty($verbo_acao)) { + $verbo_acao = 'participou'; +} +$tipo_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'tipo_acao_capacitacao'); +if ($tipo_acao == "") { + $tipo_acao = 'do curso'; +} +$modalidade_acao = certificate_obtemCampoCustomizadoCurso($course->id, 'modalidade_capacitacao'); +$entidade_certificadora = certificate_obtemCampoCustomizadoCurso($course->id, 'entidade_certificadora'); +if ($entidade_certificadora == '') { + $entidade_certificadora = 'O Instituto Legislativo Brasileiro certifica que'; +} + +function montaPeriodo() { + global $anoInicio, $anoFim, $mesInicio, $mesFim, $diaInicio, $diaFim, $dataInicio, $dataFim; + + if ($anoInicio != $anoFim) { + // ano diferente + return "realizado no período de {$dataInicio} a {$dataFim}"; + } else { + if ($mesInicio != $mesFim) { + // mesmo ano, mês diferente + return "realizado no período de $diaInicio de $mesInicio a $diaFim de $mesFim de $anoInicio"; + } else { + if ($diaInicio != $diaFim) { + // mesmo mês, dia diferente + return "realizado no período de $diaInicio a $diaFim de $mesInicio de $anoInicio"; + } else { + // evento de um dia + return "realizado em {$dataInicio}"; + } + } + } +} + +// MASK para CPF +function mask($val, $mask) { + $maskared = ''; + $k = 0; + for ($i = 0; $i <= strlen($mask) - 1; $i++) { + if ($mask[$i] == '#') { + if (isset($val[$k])) { + $maskared .= $val[$k++]; + } + } else { + if (isset($mask[$i])) { + $maskared .= $mask[$i]; + } + } + } + return $maskared; +} + +$cpf = mask($USER->username, '###.###.###-##'); + +require_once($CFG->dirroot . '/user/profile/field/cpf/field.class.php'); + +$pdf = new PDF($certificate->orientation, 'mm', 'A4', true, 'UTF-8', false); + +$pdf->SetTitle($certificate->name); +$pdf->SetProtection(array('modify')); +$pdf->setPrintHeader(false); +$pdf->setPrintFooter(false); +$pdf->SetAutoPageBreak(false, 0); +$pdf->AddPage(); + +// Define variables +// Only Landscape +$x = 10; +$y = 60; +$sealx = 230; +$sealy = 150; +$sigx = 0; +$sigy = 135; +$sigw = 297; +$sigh = 44; +$custx = 15; +$custy = $y + 25; +$wmarkx = 40; +$wmarky = 31; +$wmarkw = 212; +$wmarkh = 148; +$brdrx = 0; +$brdry = 0; +$brdrw = 297; +$brdrh = 210; +$codex = $x; +$codey = 165; + +// Front page ------------------------------------------------------------------------------------------------------------ +// Add images and lines +certificate_print_image($pdf, $certificate, CERT_IMAGE_BORDER, $brdrx, $brdry, $brdrw, $brdrh); +certificate_draw_frame($pdf, $certificate); +// Set alpha to semi-transparency +$pdf->SetAlpha(0.2); +certificate_print_image($pdf, $certificate, CERT_IMAGE_WATERMARK, $wmarkx, $wmarky, $wmarkw, $wmarkh); +$pdf->SetAlpha(1); +certificate_print_image($pdf, $certificate, CERT_IMAGE_SEAL, $sealx, $sealy, '', ''); +// assinatura esperada: 1863x276 +certificate_print_image($pdf, $certificate, CERT_IMAGE_SIGNATURE, $sigx, $sigy, $sigw, $sigh, $cert_date); + +// Add text +$pdf->SetTextColor(0, 0, 0); + +// $entidade_certificadora = 'O Instituto Legislativo Brasileiro (ILB), do Senado Federal, em parceria com +// as escolas de governo da Câmara dos Deputados (CEFOR) e do Tribunal de Contas da União (ISC), certifica que'; +$nome_aluno = mb_strtoupper(fullname($USER), 'UTF-8'); +$dados_aluno = "CPF nº $cpf"; +$periodo = montaPeriodo(); +$carga_horaria = "com carga horária de {$certificate->printhours}"; +$nota = (certificate_get_grade($certificate, $course) ? certificate_get_grade($certificate, $course) : ''); + +$texto_base_certificado = $entidade_certificadora . "

" . + "" . $nome_aluno . "

" . + $dados_aluno . ", " . $verbo_acao . ($modalidade_acao ? ", na modalidade " . $modalidade_acao . ',' : "") . ' ' . $tipo_acao . ' ' . + "" . $nome_acao . "" . + ($certificate->printhours ? ", com carga horária de $certificate->printhours" : '') . + ($periodo_certificado != 'Sem período' ? ', ' . $periodo : '') . + ($nota ? ', ' . $nota : '') . '.'; + +certificate_print_text($pdf, $x, $y, 'C', 'freesans', '', 20, get_string('title', 'certificate')); +certificate_print_text($pdf, $x, $y + 15, 'C', 'freesans', '', 17, $texto_base_certificado); + +// Deve ser fixo +certificate_print_text($pdf, $x, $y + 75, 'R', 'freesans', 'B', 14, "Brasília, {$dataFim}."); + +// Verse page ----------------------------------------------------------------------------------------------------------- +$pdf->AddPage(); +// Add images and lines +certificate_print_image($pdf, $certificate, CERT_IMAGE_BORDER, $brdrx, $brdry, $brdrw, $brdrh); +certificate_draw_frame($pdf, $certificate); +// Set alpha to semi-transparency +$pdf->SetAlpha(0.2); +certificate_print_image($pdf, $certificate, CERT_IMAGE_WATERMARK, $wmarkx, $wmarky, $wmarkw, $wmarkh); +$pdf->SetAlpha(1); +certificate_print_image($pdf, $certificate, CERT_IMAGE_SEAL, $sealx, $sealy, '', ''); + +// Add text +$pdf->SetTextColor(0, 0, 0); +certificate_print_text($pdf, $x, $y, 'C', 'freesans', '', 20, 'PROGRAMA DO CURSO'); +certificate_print_text($pdf, $x, $y + 10, 'C', 'freesans', '', 20, $nome_curso); +certificate_print_text($pdf, $custx, $custy, 'L', 'freesans', '', 10, $certificate->customtext); +certificate_print_text($pdf, $codex, $codey, 'C', 'freesans', '', 10, 'CÓDIGO DE VALIDAÇÃO'); +certificate_print_text($pdf, $codex, $codey + 5, 'C', 'freesans', 'B', 12, certificate_get_code($certificate, $certrecord)); +certificate_print_text($pdf, $codex, $codey + 10, 'C', 'freesans', '', 10, 'Para verificar a autenticidade deste certificado, acesse http://saberes.senado.leg.br/ e informe o código acima'); + +?> diff --git a/crontab b/crontab new file mode 100755 index 0000000..e90e620 --- /dev/null +++ b/crontab @@ -0,0 +1,2 @@ +# min hour day month weekday user command +*/5 * * * * root /usr/bin/php /var/www/html/admin/cli/cron.php diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100755 index 0000000..a67b621 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,38 @@ +version: '3.3' + +services: + moodle_database: + image: postgres:11-bullseye + ports: + - "5433:5432" + environment: + - POSTGRES_USER=moodle + - POSTGRES_PASSWORD=moodle + - PGDATA=/var/lib/postgresql/data + volumes: + - /home/danielbarros/3.7/data/db11:/var/lib/postgresql/data + + moodle: + build: . + ports: + - "8000:80" + volumes: + - moodledata:/var/moodledata + environment: + - MOODLE_URL=http://saberesdev.interlegis.leg.br:8000 + - MOODLE_DB_HOST=moodle_database + - MOODLE_DB_NAME=moodle + - MOODLE_DB_USER=moodle + - MOODLE_DB_PASS=moodle + - MOODLE_DATA=/var/www/html/moodledata + - OSTICKET_API_KEY=B154D35D63E7A4ADAE8BA8282C6490CD + - OSTICKET_API_URL=http://10.1.2.242/osticket/upload/api/http.php/tickets.json + depends_on: + - moodle_database + +networks: + saberes-net: + external: true + +volumes: + moodledata: diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..6885ebd --- /dev/null +++ b/install.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +/usr/bin/php /var/www/html/admin/cli/install.php --lang=pt --wwwroot="$MOODLE_URL" --dataroot=/var/moodledata --dbtype=pgsql --dbhost="$MOODLE_DB_HOST" --dbname="$MOODLE_DB_NAME" --dbuser="$MOODLE_DB_USER" --dbpass="$MOODLE_DB_PASS" --fullname="Saberes" --shortname="Saberes" --adminuser=admin --adminpass="$MOODLE_ADMIN_PASS" --adminemail="suporte@interlegis.leg.br" --non-interactive --agree-license; + diff --git a/moodle-config.php b/moodle-config.php new file mode 100755 index 0000000..7ef0633 --- /dev/null +++ b/moodle-config.php @@ -0,0 +1,766 @@ +dbsessions='1'; + +//========================================================================= +// 1. DATABASE SETUP +//========================================================================= +// First, you need to configure the database where all Moodle data // +// will be stored. This database must already have been created // +// and a username/password created to access it. // + +$CFG->urlTicketAPIURL = getenv('OSTICKET_API_URL'); +$CFG->urlTicketAPIKey = getenv('OSTICKET_API_KEY'); + +$CFG->dbtype = 'pgsql'; // 'pgsql', 'mariadb', 'mysqli', 'mssql', 'sqlsrv' or 'oci' +$CFG->dblibrary = 'native'; // 'native' only at the moment +$CFG->dbhost = getenv('MOODLE_DB_HOST'); // eg 'localhost' or 'db.isp.com' or IP +$CFG->dbname = getenv('MOODLE_DB_NAME'); // database name, eg moodle +$CFG->dbuser = getenv('MOODLE_DB_USER'); // your database username +$CFG->dbpass = getenv('MOODLE_DB_PASS'); // your database password +$CFG->prefix = 'mdl_'; // prefix to use for all table names +$CFG->dboptions = array( + 'dbpersist' => false, // should persistent database connections be + // used? set to 'false' for the most stable + // setting, 'true' can improve performance + // sometimes + 'dbsocket' => false, // should connection via UNIX socket be used? + // if you set it to 'true' or custom path + // here set dbhost to 'localhost', + // (please note mysql is always using socket + // if dbhost is 'localhost' - if you need + // local port connection use '127.0.0.1') + //'dbport' => getenv('DB_PORT_3306_TCP_PORT'), // the TCP port number to use when connecting + // to the server. keep empty string for the + // default port +); + + +//========================================================================= +// 2. WEB SITE LOCATION +//========================================================================= +// Now you need to tell Moodle where it is located. Specify the full +// web address to where moodle has been installed. If your web site +// is accessible via multiple URLs then choose the most natural one +// that your students would use. Do not include a trailing slash +// +// If you need both intranet and Internet access please read +// http://docs.moodle.org/en/masquerading + +$CFG->wwwroot = getenv('MOODLE_URL'); + + +//========================================================================= +// 3. DATA FILES LOCATION +//========================================================================= +// Now you need a place where Moodle can save uploaded files. This +// directory should be readable AND WRITEABLE by the web server user +// (usually 'nobody' or 'apache'), but it should not be accessible +// directly via the web. +// +// - On hosting systems you might need to make sure that your "group" has +// no permissions at all, but that "others" have full permissions. +// +// - On Windows systems you might specify something like 'c:\moodledata' + +$CFG->dataroot = getenv('MOODLE_DATA'); + + +//========================================================================= +// 4. DATA FILES PERMISSIONS +//========================================================================= +// The following parameter sets the permissions of new directories +// created by Moodle within the data directory. The format is in +// octal format (as used by the Unix utility chmod, for example). +// The default is usually OK, but you may want to change it to 0750 +// if you are concerned about world-access to the files (you will need +// to make sure the web server process (eg Apache) can access the files. +// NOTE: the prefixed 0 is important, and don't use quotes. + +$CFG->directorypermissions = 02777; + + +//========================================================================= +// 5. DIRECTORY LOCATION (most people can just ignore this setting) +//========================================================================= +// A very few webhosts use /admin as a special URL for you to access a +// control panel or something. Unfortunately this conflicts with the +// standard location for the Moodle admin pages. You can work around this +// by renaming the admin directory in your installation, and putting that +// new name here. eg "moodleadmin". This should fix all admin links in Moodle. +// After any change you need to visit your new admin directory +// and purge all caches. + +$CFG->admin = 'admin'; + + +//========================================================================= +// 6. OTHER MISCELLANEOUS SETTINGS (ignore these for new installations) +//========================================================================= +// +// These are additional tweaks for which no GUI exists in Moodle yet. +// +// Starting in PHP 5.3 administrators should specify default timezone +// in PHP.ini, you can also specify it here if needed. +// See details at: http://php.net/manual/en/function.date-default-timezone-set.php +// List of time zones at: http://php.net/manual/en/timezones.php +// date_default_timezone_set('Australia/Perth'); +// +// Change the key pair lifetime for Moodle Networking +// The default is 28 days. You would only want to change this if the key +// was not getting regenerated for any reason. You would probably want +// make it much longer. Note that you'll need to delete and manually update +// any existing key. +// $CFG->mnetkeylifetime = 28; +// +// Allow user passwords to be included in backup files. Very dangerous +// setting as far as it publishes password hashes that can be unencrypted +// if the backup file is publicy available. Use it only if you can guarantee +// that all your backup files remain only privacy available and are never +// shared out from your site/institution! +// $CFG->includeuserpasswordsinbackup = true; +// +// Completely disable user creation when restoring a course, bypassing any +// permissions granted via roles and capabilities. Enabling this setting +// results in the restore process stopping when a user attempts to restore a +// course requiring users to be created. +// $CFG->disableusercreationonrestore = true; +// +// Keep the temporary directories used by backup and restore without being +// deleted at the end of the process. Use it if you want to debug / view +// all the information stored there after the process has ended. Note that +// those directories may be deleted (after some ttl) both by cron and / or +// by new backup / restore invocations. +// $CFG->keeptempdirectoriesonbackup = true; +// +// Modify the restore process in order to force the "user checks" to assume +// that the backup originated from a different site, so detection of matching +// users is performed with different (more "relaxed") rules. Note that this is +// only useful if the backup file has been created using Moodle < 1.9.4 and the +// site has been rebuilt from scratch using backup files (not the best way btw). +// If you obtain user conflicts on restore, rather than enabling this setting +// permanently, try restoring the backup on a different site, back it up again +// and then restore on the target server. +// $CFG->forcedifferentsitecheckingusersonrestore = true; +// +// Prevent stats processing and hide the GUI +// $CFG->disablestatsprocessing = true; +// +// Setting this to true will enable admins to edit any post at any time +// $CFG->admineditalways = true; +// +// These variables define DEFAULT block variables for new courses +// If this one is set it overrides all others and is the only one used. +// $CFG->defaultblocks_override = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// These variables define the specific settings for defined course formats. +// They override any settings defined in the formats own config file. +// $CFG->defaultblocks_site = 'site_main_menu,course_list:course_summary,calendar_month'; +// $CFG->defaultblocks_social = 'participants,search_forums,calendar_month,calendar_upcoming,social_activities,recent_activity,course_list'; +// $CFG->defaultblocks_topics = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// $CFG->defaultblocks_weeks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// These blocks are used when no other default setting is found. +// $CFG->defaultblocks = 'participants,activity_modules,search_forums,course_list:news_items,calendar_upcoming,recent_activity'; +// +// You can specify a different class to be created for the $PAGE global, and to +// compute which blocks appear on each page. However, I cannot think of any good +// reason why you would need to change that. It just felt wrong to hard-code the +// the class name. You are strongly advised not to use these to settings unless +// you are absolutely sure you know what you are doing. +// $CFG->moodlepageclass = 'moodle_page'; +// $CFG->moodlepageclassfile = "$CFG->dirroot/local/myplugin/mypageclass.php"; +// $CFG->blockmanagerclass = 'block_manager'; +// $CFG->blockmanagerclassfile = "$CFG->dirroot/local/myplugin/myblockamanagerclass.php"; +// +// Seconds for files to remain in caches. Decrease this if you are worried +// about students being served outdated versions of uploaded files. +// $CFG->filelifetime = 60*60*6; +// +// Some web servers can offload the file serving from PHP process, +// comment out one the following options to enable it in Moodle: +// $CFG->xsendfile = 'X-Sendfile'; // Apache {@see https://tn123.org/mod_xsendfile/} +// $CFG->xsendfile = 'X-LIGHTTPD-send-file'; // Lighttpd {@see http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file} +// $CFG->xsendfile = 'X-Accel-Redirect'; // Nginx {@see http://wiki.nginx.org/XSendfile} +// If your X-Sendfile implementation (usually Nginx) uses directory aliases specify them +// in the following array setting: +// $CFG->xsendfilealiases = array( +// '/dataroot/' => $CFG->dataroot, +// '/cachedir/' => '/var/www/moodle/cache', // for custom $CFG->cachedir locations +// '/localcachedir/' => '/var/local/cache', // for custom $CFG->localcachedir locations +// '/tempdir/' => '/var/www/moodle/temp', // for custom $CFG->tempdir locations +// '/filedir' => '/var/www/moodle/filedir', // for custom $CFG->filedir locations +// ); +// +// YUI caching may be sometimes improved by slasharguments: +// $CFG->yuislasharguments = 1; +// Some servers may need a special rewrite rule to work around internal path length limitations: +// RewriteRule (^.*/theme/yui_combo\.php)(/.*) $1?file=$2 +// +// +// Following settings may be used to select session driver, uncomment only one of the handlers. +// Database session handler (not compatible with MyISAM): +// $CFG->session_handler_class = '\core\session\database'; +// $CFG->session_database_acquire_lock_timeout = 120; +// +// File session handler (file system locking required): +// $CFG->session_handler_class = '\core\session\file'; +// $CFG->session_file_save_path = $CFG->dataroot.'/sessions'; +// +// Memcached session handler (requires memcached server and extension): +// $CFG->session_handler_class = '\core\session\memcached'; +// $CFG->session_memcached_save_path = '127.0.0.1:11211'; +// $CFG->session_memcached_prefix = 'memc.sess.key.'; +// $CFG->session_memcached_acquire_lock_timeout = 120; +// $CFG->session_memcached_lock_expire = 7200; // Ignored if memcached extension <= 2.1.0 +// +// Memcache session handler (requires memcached server and memcache extension): +// $CFG->session_handler_class = '\core\session\memcache'; +// $CFG->session_memcache_save_path = '127.0.0.1:11211'; +// $CFG->session_memcache_acquire_lock_timeout = 120; +// ** NOTE: Memcache extension has less features than memcached and may be +// less reliable. Use memcached where possible or if you encounter +// session problems. ** +// +// Please be aware that when selecting either Memcached or Memcache for sessions that it is advised to use a dedicated +// memcache server. The memcache and memcached extensions do not provide isolated environments for individual uses. +// Using the same server for other purposes (MUC for example) can lead to sessions being prematurely removed should +// the other uses of the server purge the cache. +// +// Following setting allows you to alter how frequently is timemodified updated in sessions table. +// $CFG->session_update_timemodified_frequency = 20; // In seconds. +// +// If this setting is set to true, then Moodle will track the IP of the +// current user to make sure it hasn't changed during a session. This +// will prevent the possibility of sessions being hijacked via XSS, but it +// may break things for users coming using proxies that change all the time, +// like AOL. +// $CFG->tracksessionip = true; +// +// The following lines are for handling email bounces. +// $CFG->handlebounces = true; +// $CFG->minbounces = 10; +// $CFG->bounceratio = .20; +// The next lines are needed both for bounce handling and any other email to module processing. +// mailprefix must be EXACTLY four characters. +// Uncomment and customise this block for Postfix +// $CFG->mailprefix = 'mdl+'; // + is the separator for Exim and Postfix. +// $CFG->mailprefix = 'mdl-'; // - is the separator for qmail +// $CFG->maildomain = 'youremaildomain.com'; +// +// Enable when setting up advanced reverse proxy load balancing configurations, +// it may be also necessary to enable this when using port forwarding. +$CFG->reverseproxy = filter_var(getenv('MOODLE_REVERSEPROXY'), FILTER_VALIDATE_BOOLEAN); +// +// Enable when using external SSL appliance for performance reasons. +// Please note that site may be accessible via https: or https:, but not both! +$CFG->sslproxy = filter_var(getenv('MOODLE_SSLPROXY'), FILTER_VALIDATE_BOOLEAN); +// +// This setting will cause the userdate() function not to fix %d in +// date strings, and just let them show with a zero prefix. +// $CFG->nofixday = true; +// +// This setting will make some graphs (eg user logs) use lines instead of bars +// $CFG->preferlinegraphs = true; +// +// Enabling this will allow custom scripts to replace existing moodle scripts. +// For example: if $CFG->customscripts/course/view.php exists then +// it will be used instead of $CFG->wwwroot/course/view.php +// At present this will only work for files that include config.php and are called +// as part of the url (index.php is implied). +// Some examples are: +// http://my.moodle.site/course/view.php +// http://my.moodle.site/index.php +// http://my.moodle.site/admin (index.php implied) +// Custom scripts should not include config.php +// Warning: Replacing standard moodle scripts may pose security risks and/or may not +// be compatible with upgrades. Use this option only if you are aware of the risks +// involved. +// Specify the full directory path to the custom scripts +// $CFG->customscripts = '/home/example/customscripts'; +// +// Performance profiling +// +// If you set Debug to "Yes" in the Configuration->Variables page some +// performance profiling data will show up on your footer (in default theme). +// With these settings you get more granular control over the capture +// and printout of the data +// +// Capture performance profiling data +// define('MDL_PERF' , true); +// +// Capture additional data from DB +// define('MDL_PERFDB' , true); +// +// Print to log (for passive profiling of production servers) +// define('MDL_PERFTOLOG' , true); +// +// Print to footer (works with the default theme) +// define('MDL_PERFTOFOOT', true); +// +// Enable earlier profiling that causes more code to be covered +// on every request (db connections, config load, other inits...). +// Requires extra configuration to be defined in config.php like: +// profilingincluded, profilingexcluded, profilingautofrec, +// profilingallowme, profilingallowall, profilinglifetime +// $CFG->earlyprofilingenabled = true; +// +// Force displayed usernames +// A little hack to anonymise user names for all students. If you set these +// then all non-teachers will always see these for every person. +// $CFG->forcefirstname = 'Bruce'; +// $CFG->forcelastname = 'Simpson'; +// +// The following setting will turn SQL Error logging on. This will output an +// entry in apache error log indicating the position of the error and the statement +// called. This option will action disregarding error_reporting setting. +// $CFG->dblogerror = true; +// +// The following setting will log every database query to a table called adodb_logsql. +// Use this setting on a development server only, the table grows quickly! +// $CFG->logsql = true; +// +// The following setting will turn on username logging into Apache log. For full details regarding setting +// up of this function please refer to the install section of the document. +// $CFG->apacheloguser = 0; // Turn this feature off. Default value. +// $CFG->apacheloguser = 1; // Log user id. +// $CFG->apacheloguser = 2; // Log full name in cleaned format. ie, Darth Vader will be displayed as darth_vader. +// $CFG->apacheloguser = 3; // Log username. +// To get the values logged in Apache's log, add to your httpd.conf +// the following statements. In the General part put: +// LogFormat "%h %l %{MOODLEUSER}n %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" moodleformat +// And in the part specific to your Moodle install / virtualhost: +// CustomLog "/your/path/to/log" moodleformat +// CAUTION: Use of this option will expose usernames in the Apache log, +// If you are going to publish your log, or the output of your web stats analyzer +// this will weaken the security of your website. +// +// Email database connection errors to someone. If Moodle cannot connect to the +// database, then email this address with a notice. +// +// $CFG->emailconnectionerrorsto = 'your@emailaddress.com'; +// +// Set the priority of themes from highest to lowest. This is useful (for +// example) in sites where the user theme should override all other theme +// settings for accessibility reasons. You can also disable types of themes +// (other than site) by removing them from the array. The default setting is: +// $CFG->themeorder = array('course', 'category', 'session', 'user', 'site'); +// NOTE: course, category, session, user themes still require the +// respective settings to be enabled +// +// It is possible to add extra themes directory stored outside of $CFG->dirroot. +// This local directory does not have to be accessible from internet. +// +// $CFG->themedir = '/location/of/extra/themes'; +// +// It is possible to specify different cache and temp directories, use local fast filesystem +// for normal web servers. Server clusters MUST use shared filesystem for cachedir! +// Localcachedir is intended for server clusters, it does not have to be shared by cluster nodes. +// The directories must not be accessible via web. +// +// $CFG->tempdir = '/var/www/moodle/temp'; // Files used during one HTTP request only. +// $CFG->cachedir = '/var/www/moodle/cache'; // Directory MUST BE SHARED by all cluster nodes, locking required. +// $CFG->localcachedir = '/var/local/cache'; // Intended for local node caching. +// +// Some filesystems such as NFS may not support file locking operations. +// Locking resolves race conditions and is strongly recommended for production servers. +// $CFG->preventfilelocking = false; +// +// Site default language can be set via standard administration interface. If you +// want to have initial error messages for eventual database connection problems +// localized too, you have to set your language code here. +// +// $CFG->lang = 'yourlangcode'; // for example 'cs' +// +// When Moodle is about to perform an intensive operation it raises PHP's memory +// limit. The following setting should be used on large sites to set the raised +// memory limit to something higher. +// The value for the settings should be a valid PHP memory value. e.g. 512M, 1G +// +// $CFG->extramemorylimit = '1024M'; +// +// Moodle 2.4 introduced a new cache API. +// The cache API stores a configuration file within the Moodle data directory and +// uses that rather than the database in order to function in a stand-alone manner. +// Using altcacheconfigpath you can change the location where this config file is +// looked for. +// It can either be a directory in which to store the file, or the full path to the +// file if you want to take full control. Either way it must be writable by the +// webserver. +// +// $CFG->altcacheconfigpath = '/var/www/shared/moodle.cache.config.php +// +// The CSS files the Moodle produces can be extremely large and complex, especially +// if you are using a custom theme that builds upon several other themes. +// In Moodle 2.3 a CSS optimiser was added as an experimental feature for advanced +// users. The CSS optimiser organises the CSS in order to reduce the overall number +// of rules and styles being sent to the client. It does this by collating the +// CSS before it is cached removing excess styles and rules and stripping out any +// extraneous content such as comments and empty rules. +// The following settings are used to enable and control the optimisation. +// +// Enable the CSS optimiser. This will only optimise the CSS if themedesignermode +// is not enabled. This can be set through the UI however it is noted here as well +// because the other CSS optimiser settings can not be set through the UI. +// +// $CFG->enablecssoptimiser = true; +// +// If set the CSS optimiser will add stats about the optimisation to the top of +// the optimised CSS file. You can then inspect the CSS to see the affect the CSS +// optimiser is having. +// +// $CFG->cssoptimiserstats = true; +// +// If set the CSS that is optimised will still retain a minimalistic formatting +// so that anyone wanting to can still clearly read it. +// +// $CFG->cssoptimiserpretty = true; +// +// Use the following flag to completely disable the Available update notifications +// feature and hide it from the server administration UI. +// +$CFG->disableupdatenotifications = true; +// +// Use the following flag to completely disable the Automatic updates deployment +// feature and hide it from the server administration UI. +// +$CFG->disableupdateautodeploy = true; +// +// Use the following flag to completely disable the On-click add-on installation +// feature and hide it from the server administration UI. +// +// $CFG->disableonclickaddoninstall = true; +// +// Use the following flag to disable modifications to scheduled tasks +// whilst still showing the state of tasks. +// +// $CFG->preventscheduledtaskchanges = true; +// +// As of version 2.4 Moodle serves icons as SVG images if the users browser appears +// to support SVG. +// For those wanting to control the serving of SVG images the following setting can +// be defined in your config.php. +// If it is not defined then the default (browser detection) will occur. +// +// To ensure they are always used when available: +// $CFG->svgicons = true; +// +// To ensure they are never used even when available: +// $CFG->svgicons = false; +// +// Some administration options allow setting the path to executable files. This can +// potentially cause a security risk. Set this option to true to disable editing +// those config settings via the web. They will need to be set explicitly in the +// config.php file +// $CFG->preventexecpath = true; +// +// Use the following flag to set userid for noreply user. If not set then moodle will +// create dummy user and use -ve value as user id. +// $CFG->noreplyuserid = -10; +// +// As of version 2.6 Moodle supports admin to set support user. If not set, all mails +// will be sent to supportemail. +// $CFG->supportuserid = -20; +// +// Moodle 2.7 introduces a locking api for critical tasks (e.g. cron). +// The default locking system to use is DB locking for MySQL and Postgres, and File +// locking for Oracle and SQLServer. If $CFG->preventfilelocking is set, then the default +// will always be DB locking. It can be manually set to one of the lock +// factory classes listed below, or one of your own custom classes implementing the +// \core\lock\lock_factory interface. +// +// $CFG->lock_factory = "auto"; +// +// The list of available lock factories is: +// +// "\\core\\lock\\file_lock_factory" - File locking +// Uses lock files stored by default in the dataroot. Whether this +// works on clusters depends on the file system used for the dataroot. +// +// "\\core\\lock\\db_row_lock_factory" - DB locking based on table rows. +// +// "\\core\\lock\\postgres_lock_factory" - DB locking based on postgres advisory locks. +// +// Settings used by the lock factories +// +// Location for lock files used by the File locking factory. This must exist +// on a shared file system that supports locking. +// $CFG->lock_file_root = $CFG->dataroot . '/lock'; +// +//========================================================================= +// 7. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!! +//========================================================================= +// +// Force a debugging mode regardless the settings in the site administration +// @error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS! +// @ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS! +// $CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS! +// $CFG->debugdisplay = 1; // NOT FOR PRODUCTION SERVERS! +// +// You can specify a comma separated list of user ids that that always see +// debug messages, this overrides the debug flag in $CFG->debug and $CFG->debugdisplay +// for these users only. +// $CFG->debugusers = '2'; +// +// Prevent theme caching +// $CFG->themedesignermode = true; // NOT FOR PRODUCTION SERVERS! +// +// Prevent JS caching +// $CFG->cachejs = false; // NOT FOR PRODUCTION SERVERS! +// +// Restrict which YUI logging statements are shown in the browser console. +// For details see the upstream documentation: +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logInclude +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logExclude +// $CFG->yuiloginclude = array( +// 'moodle-core-dock-loader' => true, +// 'moodle-course-categoryexpander' => true, +// ); +// $CFG->yuilogexclude = array( +// 'moodle-core-dock' => true, +// 'moodle-core-notification' => true, +// ); +// +// Set the minimum log level for YUI logging statements. +// For details see the upstream documentation: +// http://yuilibrary.com/yui/docs/api/classes/config.html#property_logLevel +// $CFG->yuiloglevel = 'debug'; +// +// Prevent core_string_manager application caching +// $CFG->langstringcache = false; // NOT FOR PRODUCTION SERVERS! +// +// When working with production data on test servers, no emails or other messages +// should ever be send to real users +// $CFG->noemailever = true; // NOT FOR PRODUCTION SERVERS! +// +// Divert all outgoing emails to this address to test and debug emailing features +// $CFG->divertallemailsto = 'root@localhost.local'; // NOT FOR PRODUCTION SERVERS! +// +// Uncomment if you want to allow empty comments when modifying install.xml files. +// $CFG->xmldbdisablecommentchecking = true; // NOT FOR PRODUCTION SERVERS! +// +// Since 2.0 sql queries are not shown during upgrade by default. +// Please note that this setting may produce very long upgrade page on large sites. +// $CFG->upgradeshowsql = true; // NOT FOR PRODUCTION SERVERS! +// +// Add SQL queries to the output of cron, just before their execution +// $CFG->showcronsql = true; +// +// Force developer level debug and add debug info to the output of cron +// $CFG->showcrondebugging = true; +// +//========================================================================= +// 8. FORCED SETTINGS +//========================================================================= +// It is possible to specify normal admin settings here, the point is that +// they can not be changed through the standard admin settings pages any more. +// +// Core settings are specified directly via assignment to $CFG variable. +// Example: +// $CFG->somecoresetting = 'value'; +// +// Plugin settings have to be put into a special array. +// Example: +// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'secondsetting' => 'othervalue'), +// 'otherplugin' => array('mysetting' => 'myvalue', 'thesetting' => 'thevalue')); +// Module default settings with advanced/locked checkboxes can be set too. To do this, add +// an extra config with '_adv' or '_locked' as a suffix and set the value to true or false. +// Example: +// $CFG->forced_plugin_settings = array('pluginname' => array('settingname' => 'value', 'settingname_locked' => true, 'settingname_adv' => true)); +// +//========================================================================= +// 9. PHPUNIT SUPPORT +//========================================================================= +// $CFG->phpunit_prefix = 'phpu_'; +// $CFG->phpunit_dataroot = '/home/example/phpu_moodledata'; +// $CFG->phpunit_directorypermissions = 02777; // optional +// +// +//========================================================================= +// 10. SECRET PASSWORD SALT +//========================================================================= +// A site-wide password salt is no longer used in new installations. +// If upgrading from 2.6 or older, keep all existing salts in config.php file. +// +// $CFG->passwordsaltmain = 'a_very_long_random_string_of_characters#@6&*1'; +// +// You may also have some alternative salts to allow migration from previously +// used salts. +// +// $CFG->passwordsaltalt1 = ''; +// $CFG->passwordsaltalt2 = ''; +// $CFG->passwordsaltalt3 = ''; +// .... +// $CFG->passwordsaltalt19 = ''; +// $CFG->passwordsaltalt20 = ''; +// +// +//========================================================================= +// 11. BEHAT SUPPORT +//========================================================================= +// Behat test site needs a unique www root, data directory and database prefix: +// +// $CFG->behat_wwwroot = 'http://127.0.0.1/moodle'; +// $CFG->behat_prefix = 'bht_'; +// $CFG->behat_dataroot = '/home/example/bht_moodledata'; +// +// You can override default Moodle configuration for Behat and add your own +// params; here you can add more profiles, use different Mink drivers than Selenium... +// These params would be merged with the default Moodle behat.yml, giving priority +// to the ones specified here. The array format is YAML, following the Behat +// params hierarchy. More info: http://docs.behat.org/guides/7.config.html +// Example: +// $CFG->behat_config = array( +// 'default' => array( +// 'formatter' => array( +// 'name' => 'pretty', +// 'parameters' => array( +// 'decorated' => true, +// 'verbose' => false +// ) +// ) +// ), +// 'Mac-Firefox' => array( +// 'extensions' => array( +// 'Behat\MinkExtension\Extension' => array( +// 'selenium2' => array( +// 'browser' => 'firefox', +// 'capabilities' => array( +// 'platform' => 'OS X 10.6', +// 'version' => 20 +// ) +// ) +// ) +// ) +// ), +// 'Mac-Safari' => array( +// 'extensions' => array( +// 'Behat\MinkExtension\Extension' => array( +// 'selenium2' => array( +// 'browser' => 'safari', +// 'capabilities' => array( +// 'platform' => 'OS X 10.8', +// 'version' => 6 +// ) +// ) +// ) +// ) +// ) +// ); +// +// You can force the browser session (not user's sessions) to restart after N seconds. This could +// be useful if you are using a cloud-based service with time restrictions in the browser side. +// Setting this value the browser session that Behat is using will be restarted. Set the time in +// seconds. Is not recommended to use this setting if you don't explicitly need it. +// Example: +// $CFG->behat_restart_browser_after = 7200; // Restarts the browser session after 2 hours +// +// All this page's extra Moodle settings are compared against a white list of allowed settings +// (the basic and behat_* ones) to avoid problems with production environments. This setting can be +// used to expand the default white list with an array of extra settings. +// Example: +// $CFG->behat_extraallowedsettings = array('logsql', 'dblogerror'); +// +// You should explicitly allow the usage of the deprecated behat steps, otherwise an exception will +// be thrown when using them. The setting is disabled by default. +// Example: +// $CFG->behat_usedeprecated = true; +// +// Including feature files from directories outside the dirroot is possible if required. The setting +// requires that the running user has executable permissions on all parent directories in the paths. +// Example: +// $CFG->behat_additionalfeatures = array('/home/developer/code/wipfeatures'); +// +// You can make behat save several dumps when a scenario fails. The dumps currently saved are: +// * a dump of the DOM in it's state at the time of failure; and +// * a screenshot (JavaScript is required for the screenshot functionality, so not all browsers support this option) +// Example: +// $CFG->behat_faildump_path = '/my/path/to/save/failure/dumps'; +// +//========================================================================= +// 12. DEVELOPER DATA GENERATOR +//========================================================================= +// +// The developer data generator tool is intended to be used only in development or testing sites and +// it's usage in production environments is not recommended; if it is used to create JMeter test plans +// is even less recommended as JMeter needs to log in as site course users. JMeter needs to know the +// users passwords but would be dangerous to have a default password as everybody would know it, which would +// be specially dangerouse if somebody uses this tool in a production site, so in order to prevent unintended +// uses of the tool and undesired accesses as well, is compulsory to set a password for the users +// generated by this tool, but only in case you want to generate a JMeter test. The value should be a string. +// Example: +// $CFG->tool_generator_users_password = 'examplepassword'; +// +//========================================================================= +// 13. SYSTEM PATHS (You need to set following, depending on your system) +//========================================================================= +// Ghostscript path. +// On most Linux installs, this can be left as '/usr/bin/gs'. +// On Windows it will be something like 'c:\gs\bin\gswin32c.exe' (make sure +// there are no spaces in the path - if necessary copy the files 'gswin32c.exe' +// and 'gsdll32.dll' to a new folder without a space in the path) +// $CFG->pathtogs = '/usr/bin/gs'; +// +// Clam AV path. +// Probably something like /usr/bin/clamscan or /usr/bin/clamdscan. You need +// this in order for clam AV to run. +// $CFG->pathtoclam = ''; +// +// Path to du. +// Probably something like /usr/bin/du. If you enter this, pages that display +// directory contents will run much faster for directories with a lot of files. +// $CFG->pathtodu = ''; +// +// Path to aspell. +// To use spell-checking within the editor, you MUST have aspell 0.50 or later +// installed on your server, and you must specify the correct path to access the +// aspell binary. On Unix/Linux systems, this path is usually /usr/bin/aspell, +// but it might be something else. +// $CFG->aspellpath = ''; +// +// Path to dot. +// Probably something like /usr/bin/dot. To be able to generate graphics from +// DOT files, you must have installed the dot executable and point to it here. +// Note that, for now, this only used by the profiling features +// (Development->Profiling) built into Moodle. +// $CFG->pathtodot = ''; + +//========================================================================= +// ALL DONE! To continue installation, visit your main page with a browser +//========================================================================= + +require_once(dirname(__FILE__) . '/lib/setup.php'); // Do not edit + +// There is no php closing tag in this file, +// it is intentional because it prevents trailing whitespace problems! diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..b944ec8 --- /dev/null +++ b/run.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +# Se não existe moodledata, então é instalação inicial +if [ ! -d /var/moodledata ]; then + mkdir /var/moodledata +fi + + +if [ ! -f /var/moodledata/placeholder ]; then + echo "placeholder" > /var/moodledata/placeholder + # instala o moodle, criando objetos no BD e gerando arquivo config.php + /usr/local/bin/install.sh +fi + +# Sobrescreve config.php gerado, uma vez que faltam configurações de proxy, dentre outras. Isso deve ser feito sempre que for gerada nova imagem, uma vez que o código do github não contém o config.php +#cp /var/www/localhost/htdocs/moodle-config.php /var/www/localhost/htdocs/config.php + +# Executa comando de upgrade, caso haja atualizações a serem realizadas +#/usr/bin/php /var/www/localhost/htdocs/admin/cli/upgrade.php --non-interactive + +# Atribui proprietário do moodledata e config.php +chown www-data:www-data /var/www/html/config.php +chown www-data:www-data /var/moodledata +chown www-data:www-data /var/moodledata -R & + +# Inicializa o servidor web +exec apachectl -D FOREGROUND diff --git a/startcron.sh b/startcron.sh new file mode 100755 index 0000000..332e382 --- /dev/null +++ b/startcron.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +#Copia variáveis de ambiente criadas pelo Rancher +#no arquivo que será lido antes de cada task do cron +env > /etc/environment + +echo "Initiating cron daemon..." +/usr/sbin/cron -f diff --git a/teste.txt b/teste.txt deleted file mode 100644 index e69de29..0000000