/**
  * 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;
 }
Example #2
0
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;
 }