/** * Finds the Moodle user or addressbook contact that owns a phone number * @param MoodletxtPhoneNumber $phoneNumber * @param int[] $addressbookOwners IDs of users in whose addressbooks we should search * @return array Any user or addressbook sources found * @global moodle_database $DB Moodle database manager * @version 2012092601 * @since 2011080501 * @TODO Move user bit out into user DAO where it belongs * @TODO Change global string constant for Addressbook class constant when books are implemented */ public function associateNumberWithRecipient(MoodletxtPhoneNumber $phoneNumber, array $addressbookOwners) { global $DB; $associatedSources = array('user' => null, 'addressbook' => null); // Check for number in Moodle user list $numberSource = get_config('moodletxt', 'Phone_Number_Source'); $matchedUser = $DB->get_record('user', array($numberSource => $phoneNumber->getPhoneNumber())); if (is_object($matchedUser)) { $associatedSources['user'] = new MoodletxtBiteSizedUser($matchedUser->id, $matchedUser->username, $matchedUser->firstname, $matchedUser->lastname, new MoodletxtPhoneNumber($matchedUser->{$numberSource})); } // Check for number in moodletxt address books (that the user owns or has access to) list($inOrEqual, $params) = $DB->get_in_or_equal($addressbookOwners, SQL_PARAMS_NAMED); $sql = 'SELECT entry.* FROM {block_moodletxt_ab_entry} entry INNER JOIN {block_moodletxt_ab} book ON entry.addressbook = book.id WHERE entry.phoneno = :phoneno AND (book.owner ' . $inOrEqual . ' OR book.type = \'global\')'; $params['phoneno'] = $phoneNumber->getPhoneNumber(); $matchedContact = $DB->get_record_sql($sql, $params); if (is_object($matchedContact)) { $associatedSources['addressbook'] = new MoodletxtAddressbookRecipient(new MoodletxtPhoneNumber($matchedContact->phoneno), $matchedContact->firstname, $matchedContact->lastname, $matchedContact->company, $matchedContact->id, $matchedContact->addressbook); } return $associatedSources; }
require_once $CFG->dirroot . '/blocks/moodletxt/util/MoodletxtBrowserHelper.php'; require_once $CFG->dirroot . '/blocks/moodletxt/util/MoodletxtStringHelper.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/MoodletxtTemplatesDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/TxttoolsAccountDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/MoodletxtAddressbookDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/MoodletxtMoodleUserDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/TxttoolsSentMessageDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/dao/MoodletxtUserStatsDAO.php'; require_once $CFG->dirroot . '/blocks/moodletxt/forms/renderers/QuickFormRendererWithSlides.php'; require_once $CFG->dirroot . '/blocks/moodletxt/forms/MoodletxtSendMessageForm.php'; require_once $CFG->dirroot . '/blocks/moodletxt/connect/MoodletxtOutboundControllerFactory.php'; $courseId = required_param('course', PARAM_INT); $instanceId = required_param('instance', PARAM_INT); $replyType = optional_param('replyType', '', PARAM_ALPHA); $replyValue = optional_param('replyValue', '', PARAM_RAW_TRIMMED); if ($replyType == 'additional' && !MoodletxtPhoneNumber::validatePhoneNumber($replyValue)) { $replyType = ''; $replyValue = ''; } require_login($courseId, false); $blockcontext = context_block::instance($instanceId); require_capability('block/moodletxt:sendmessages', $blockcontext, $USER->id); // OK, so you're legit. Let's load DAOs and required DB data $templateDAO = new MoodletxtTemplatesDAO(); $accountDAO = new TxttoolsAccountDAO(); $addressbookDAO = new MoodletxtAddressbookDAO(); $userDAO = new MoodletxtMoodleUserDAO(); $messageDAO = new TxttoolsSentMessageDAO(); $statsDAO = new MoodletxtUserStatsDAO(); $course = $DB->get_record('course', array('id' => $courseId)); $notifications = '';
/** * Validation routine for account form * @param array $formdata Submitted data from form * @param object $files File uploads from form * @return array(string => string) Array of errors, if any found * @version 2012081401 * @since 2011062901 */ public function validation($formData, $files = null) { $err = array(); $accountDAO = new TxttoolsAccountDAO(); $filterDAO = new MoodletxtInboundFilterDAO(); $formData = $this->cleanupFormData($formData); // Check for valid account ID if ($formData['filterAccountList'] <= 0 || !$accountDAO->accountIdExists($formData['filterAccountList'])) { $err['filterAccountList'] = get_string('errorfilternoaccount', 'block_moodletxt'); } // Clean up any potential data cockups on the user list if (!isset($formData['usersOnFilter']) || $formData['usersOnFilter'] == '') { $formData['usersOnFilter'] = array(); } else { if (!is_array($formData['usersOnFilter'])) { $formData['usersOnFilter'] = array($formData['usersOnFilter']); } } // Check that, if a new phone number filter has been entered, it is valid if ($formData['newPhoneNumberFilter'] != '' && !MoodletxtPhoneNumber::validatePhoneNumber($formData['newPhoneNumberFilter'])) { $err['newPhoneNumberFilter'] = get_string('errorfilterbadphoneno', 'block_moodletxt'); } if ($formData['newKeywordFilter'] != '' || $formData['newPhoneNumberFilter'] != '') { // When creating a new filter, the user must have selected recipient inboxes if (count($formData['usersOnFilter']) == 0) { $err['usersOnFilter'] = get_string('errorfilternousers', 'block_moodletxt'); } $type = $formData['newKeywordFilter'] != '' ? MoodletxtInboundFilter::$FILTER_TYPE_KEYWORD : MoodletxtInboundFilter::$FILTER_TYPE_PHONE_NUMBER; $value = $formData['newKeywordFilter'] != '' ? $formData['newKeywordFilter'] : $formData['newPhoneNumberFilter']; if ($filterDAO->filterExists($formData['filterAccountList'], $type, $value)) { if ($type == MoodletxtInboundFilter::$FILTER_TYPE_KEYWORD) { $err['newKeywordFilter'] = get_string('errorfilterexists', 'block_moodletxt'); } else { $err['newPhoneNumberFilter'] = get_string('errorfilterexists', 'block_moodletxt'); } } } else { if ($formData['existingKeywordFilterList'] <= 0 && $formData['existingPhoneNumberFilterList'] <= 0) { $err['existingKeywordFilterList'] = get_string('errorfilternotselected', 'block_moodletxt'); } } return $err; }
/** * Validation routine for account form * @param array $formData Submitted data from form * @param object $files File uploads from form * @return Array of errors, if any found * @version 2012091201 * @since 2012091201 */ public function validation($formData, $files = null) { $err = array(); $formData = $this->cleanupFormData($formData); if ($formData['lastName'] == '' && $formData['company'] == '') { $err['lastName'] = get_string('errornonameorcompany', 'block_moodletxt'); $err['company'] = get_string('errornonameorcompany', 'block_moodletxt'); } if ($formData['phoneNumber'] == '') { $err['phoneNumber'] = get_string('errornonumber', 'block_moodletxt'); } else { if (!MoodletxtPhoneNumber::validatePhoneNumber($formData['phoneNumber'])) { $err['phoneNumber'] = get_string('errorinvalidnumber', 'block_moodletxt'); } } return $err; }