ÿØÿà JFIF    ÿÛ „  ( %!1"%)+...383-7(-.+  -%%--------+------------/----------------------------ÿÀ  ¶" ÿÄ     ÿÄ @    !1AQaq‘¡"±ÁÑð2’BRráS‚ñ3b¢CT²Ò #cÿÄ    ÿÄ '   1!AQ2a"‘±#ÿÚ   ? ò(/p‘—–¢·,M|¯G»R£üešT. ôŸEoCFñ‡ 4ÔkåóxR|µÁ¨ÓDà!Ç´µ˜‡p ÍQ‹§!þž^õWsŒy  åÁ§$á«%ºq˜™JyyË0y«^Ϗ -3ÃÏËÈ£Æ\P’ä„s&•‹Üs üô'àWt¹pñCp$bÚF`·7.^)¾!)ÒÙ˜–ÅÏš^h¾ø³·ìe±ŒaeÖ—Í,e=B}Jéߦ$$½—šÙÜCC¯¶è8β–Åkèwx LÉngT±æ¹£Ócœ¿Í/©Éÿ ‰ÚCÒ­mq;Tt¶–}0"zÖPcd1š­¤tˆ„ÐÓâqú[™öUCŠ2޿د­É(¸ßúçšmW,Ò ºf‹Ån™ÄLêÁ8üÁkÁ€L¥ÍuJ1œôrÂSŒÓöt!7EUíïb)AËi¬â-ÙHk8òÁiXYwÅ)O^"ÇØriÛô{»wRUKÙÏÚlÓ¬€‚’שT ] ªb—ÊîKC^×M“xùäñz¬zJ× {4[¹M'IÆeH1LCWÕ]œûº WDæà°OÅ‚¹c²ÞuA–rL`HšpCez‡V’— Ž‚Ë„–ñ­'µR0ÕÖ=À:±G»C\nÆÉ5*¢ †3šhQ4ýÒi$Õ1"Ü]¢p-q3zcQ$ªö¨¥æf›‘»´ÝÚHá„e²JÇ–iÊ:·à¬Øc5Åk»Laª*wi [0Ówk ¦a¦0Õ²ÅÅ‚T¸’³q:Æ<¹ú Ò˜Æ}2VE•Ѐp¡Ô3Úº …h³^LJºçì¥Ánó|˜ÖˆÎˆ+« ¦dø‘Mº–d\ªDðÛ„Ì×LÝ——Ð9Ç|•FèçVm™¨€™3õS–9Äå¢<̉Ìm¢±`·º˜&Z²ž Ë®D«¶»6™‰©­HÈ Àá«h­i³04æ’hxœi3ï¨(ÓL·†‹¶ËpŒ ƒÜÒ? :õdsÀ –3æÓ·Üjâ¬9—]8n¼&]I F£¼…ì–—Œ0v°LǐÅfÛ2TÖ’aµ˜N@ÖBSÏ^à´4-±°b×nÈÈœÆD=KdŒø…ÄÈK,›ÖR§fjü$^ÔÎ!„6^ s:Üun\ôkCÞò÷<—Lúl Í›G¹ÀPá¼Nc¡šÒ…ÙWͳœ±vÊáЄ×9‹P‰cEØ‘™›µŸP<×g1 º©Ø¬wiÁ^l5× I/';Ë+´Z‡ÓÄFÕp[Èð’ HÄ ó 9¬Dl4“é±Ï”V=^Hð;žLädÉa‚°Ë,#/Ž~²BÔÛ QãñQtIeórVB,ÏÂf‹4#Μc‹É3ZIÖ Œ¢¥·üxa‡Ãçè„jŠ[5 Ä!U?,3žÎ×…ðdÓ÷háŠA‰ìÄ4÷ÃÜZÃE{‰®+W\ZÍE[‰»µk»MÝ­`¢©†˜ÃV‹-f¢¡†¢a«eŠ%«Y¨©q%jâd,Ôq`) ¤¦…šˆ ¦E>0Ùb²t–Ÿ  ÷jsςҒKÈcø(é›;k(’#ôŒQ ™C> õ³M9óºÆµ¤çâ;uÀ)5>RÔ¸fÓ~Ȧ—’-$fe«"FâUˆÊwµPÏu w+"åÉó¨6s™Û9(À¨ù©hE°½†n`m~“@©›p!Vkhµ Á1šbEqqÊ@ºèl›2 –Yã%‘‚hÛ{a¶‡ÅÞM²¬çL34®Çl]®‹ŽØŒm'RÜe35æöˆ­Á­ cP9šeÁköo´L³Ì=p8]”‡B¶,šº|ɏdzXˆØk*ÇÚ{#ñ‰pã(€¶‡9ý'šÜ³½¯kƒ†Â’ëSOƒ•Å®H6+a¢µˆ‹Y¨b˜b+XˆÖ!°u!¢"µˆˆn2ˆ Å0Ä`Å Ô®c(ÓÜGº•Ä»Œ âWî%q.áÐÄ÷î%umÍ£+ÜQ,Vn¦-GphU¸¢X­&,Gt ·K¢ÅÅ·¥RÄÊÉbKn N­R2g$VµÕó Qr#–ÓZUÏð0ÎtÙÀœz ëöo“Îk¯n„T°"SÞ+³/…€½"ižãO%Í%&Δâ‘ËØ´IˆÓ°Ë‰ÞM3.™yçÁzit›`4C`k¢¼á!álÄï sÂ[×!¤l¾æo"ƒIÔ'@ªu)3›ô®“@Z à¾] üœ'‡4¸PÞkÁ-qÄH‰ÓÍBd´ÿ —¹°ÄA&ÊUC„öz‚‚RæŠtf¬>˜ÑidšEçÑL÷áý¡V±h§­c¿¥¨ƒ@g¼…Ýö^ÞËc.ž„æ“I[ ª+·zÐÒÚ,½Ð»¶€C›7jk$๖€Ž¾ÅÙpp¶ÍþéΤ ½ØÎŒq ñpæžÅ¥#Øâ49ÃÂK^MYV“,¶Éz_òæ:…;Õ«¦I3âJ£¤û5$7Èxün\â]Êe¯(Ÿ&Ž‹¶2<6Ćf× æ¢ƱqWı[(ÙÂŽç‚T7¨@ÈÉÍß‚ïÙ"&3TYlGށ†)†#5ŠA©^T2ÆÁ†)©†©†¤yGXÁ†©"†)©¼ÅV WS†#©]R–r‹q5ÕbâWþBh¯u+ªÅÄ×ü„nÑ^êkªÁj‰jeœWˆÕÕ`µDµ2Ì+Ä µDµµ5Ô{¤Þ0RF’H÷AÛ<ÊÁ§ ƈæ0Ñ£ê4 öÚµ[¬/1²€â<-¬šö²r×0o×w ´xÐÒË„ g01¬„åEM蛇Ã\6µE›‘fÙO k÷CºnÓ1`iîÒ² áÂ!ÑLÄÿ ³¬\õ*:M=Ç»c‹2[‰ØsÕLò\ŒK L^™üÄN\¶#» Ç\……ßïIœÉ$¸ÎñÍ®ÔHÇ Ûí/´>Li”„†g^$ 7NÍÑÑ2M2ªNg=k½Ð}Ÿl6‡ —JWˆ”ÞéT·+µ¦üÂFè¢Vs6ýÆ4»2+2IÝ9ô9®ÇGÙÇ1+Ä8;*Õ§ž½D*îÑWÚçá3Ma¤·ˆ¥t}š²Ü…Q+Æüµ8HíS”üxGéÁˆ¦Ël„éÈ 5 µÄƒ6äÜ(kIš¯S†fÖ&¸®×v|Äyˆ*禌Éù@7-®Ä[]ÎÖ¿ê`º…=:…žJVnݳvðÖKE¼‚ »mà ÷f®:Ë ™–4rð¡4` ܹçž~‹C=œ…¾Ïj|VDtK.ƒ"9 Ï ­–éXá³6WÒïIL-Ї Ç home/smkb8269/public_html/lms.smk-almanshuriyah.sch.id/mod/assign/extensionform.php000064400000020010152267112240024330 0ustar00. /** * This file contains the forms to create and edit an instance of this module * * @package mod_assign * @copyright 2012 NetSpot {@link http://www.netspot.com.au} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); require_once($CFG->libdir.'/formslib.php'); require_once($CFG->dirroot . '/mod/assign/locallib.php'); /** * Assignment extension dates form * * @package mod_assign * @copyright 2012 NetSpot {@link http://www.netspot.com.au} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mod_assign_extension_form extends moodleform { /** @var array $instance - The data passed to this form */ private $instance; /** * Define the form - called by parent constructor */ public function definition() { global $DB; $mform = $this->_form; $params = $this->_customdata; // Instance variable is used by the form validation function. $instance = $params['instance']; $this->instance = $instance; // Get the assignment class. /** @var assign $assign */ $assign = $params['assign']; $userlist = $params['userlist']; // Load current extensions for all selected users. [$usercondition, $params] = $DB->get_in_or_equal($userlist); array_unshift($params, $assign->get_instance()->id); $userinfo = $DB->get_records_sql(" SELECT u.*, auf.extensionduedate FROM {user} u LEFT JOIN {assign_user_flags} auf ON auf.userid = u.id AND auf.assignment = ? WHERE u.id $usercondition ", $params); // Prepare display of up to 5 users. // TODO Does not support custom user profile fields (MDL-70456). $extrauserfields = \core_user\fields::get_identity_fields($assign->get_context(), false); $displayedusercount = 0; $usershtml = ''; foreach ($userlist as $userid) { $displayedusercount += 1; if ($displayedusercount > 5) { $usershtml .= get_string('moreusers', 'assign', count($userlist) - 5); break; } $user = $userinfo[$userid]; $usershtml .= $assign->get_renderer()->render( new assign_user_summary($user, $assign->get_course()->id, has_capability('moodle/site:viewfullnames', $assign->get_course_context()), $assign->is_blind_marking(), $assign->get_uniqueid_for_user($user->id), $extrauserfields, !$assign->is_active_user($userid) ), ); } // Find the range of extensions that currently exist for these users. $earliestextension = null; $lateststextension = 0; $userswithoutanextension = 0; foreach ($userlist as $userid) { $user = $userinfo[$userid]; if ($user->extensionduedate) { $lateststextension = max($lateststextension, $user->extensionduedate); if ($earliestextension !== null) { $earliestextension = min($earliestextension, $user->extensionduedate); } else { $earliestextension = $user->extensionduedate; } } else { $userswithoutanextension += 1; } } $listusersmessage = get_string('grantextensionforusers', 'assign', count($userlist)); $mform->addElement('header', 'general', $listusersmessage); $mform->addElement('static', 'userslist', get_string('selectedusers', 'assign'), $usershtml); if ($instance->allowsubmissionsfromdate) { $mform->addElement('static', 'allowsubmissionsfromdate', get_string('allowsubmissionsfromdate', 'assign'), userdate($instance->allowsubmissionsfromdate)); } $finaldate = 0; if ($instance->duedate) { $mform->addElement('static', 'duedate', get_string('duedate', 'assign'), userdate($instance->duedate)); $finaldate = $instance->duedate; } if ($instance->cutoffdate) { $mform->addElement('static', 'cutoffdate', get_string('cutoffdate', 'assign'), userdate($instance->cutoffdate)); $finaldate = $instance->cutoffdate; } if ($userswithoutanextension == count($userlist)) { // All users don't have an extension yet. $currentdatesdisplay = get_string('extensionduedatenone', 'assign'); } else { if ($earliestextension == $lateststextension) { $currentdatesdisplay = userdate($lateststextension); } else { $currentdatesdisplay = get_string('extensionduedaterange', 'assign', (object) [ 'earliest' => userdate($earliestextension), 'latest' => userdate($lateststextension), ]); } if ($userswithoutanextension) { $currentdatesdisplay .= '
' . get_string('extensionduedatewithout', 'assign', $userswithoutanextension); } } $mform->addElement('static', 'currentextension', get_string('extensionduedatecurrent', 'assign'), $currentdatesdisplay); if ($lateststextension) { // If there are existing extensions, edit based on the current (latest) value. $defaultdate = $lateststextension; } else { // Otherwise take the later of the deadline and one minute before midnight tonight (server time). $endoftoday = new DateTimeImmutable('today 23:59', core_date::get_server_timezone_object()); $defaultdate = max($finaldate, $endoftoday->getTimestamp()); } $mform->addElement('date_time_selector', 'extensionduedate', get_string('extensionduedate', 'assign'), array('optional'=>true)); $mform->setDefault('extensionduedate', $defaultdate); $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_INT); $mform->addElement('hidden', 'userid'); $mform->setType('userid', PARAM_INT); $mform->addElement('hidden', 'selectedusers'); $mform->setType('selectedusers', PARAM_SEQUENCE); $mform->addElement('hidden', 'action', 'saveextension'); $mform->setType('action', PARAM_ALPHA); $this->add_action_buttons(true, get_string('savechanges', 'assign')); } /** * Perform validation on the extension form * @param array $data * @param array $files */ public function validation($data, $files) { $errors = parent::validation($data, $files); if ($this->instance->duedate && $data['extensionduedate']) { if ($this->instance->duedate > $data['extensionduedate']) { $errors['extensionduedate'] = get_string('extensionnotafterduedate', 'assign'); } } if ($this->instance->allowsubmissionsfromdate && $data['extensionduedate']) { if ($this->instance->allowsubmissionsfromdate > $data['extensionduedate']) { $errors['extensionduedate'] = get_string('extensionnotafterfromdate', 'assign'); } } return $errors; } }