Exemple #1
0
 /**
  * Returns a list of notification options
  *
  * @return	string		XML
  */
 protected function _handleNotificationTypes()
 {
     /* Check to see if notifications are enabled */
     if (!IPSMember::canReceiveMobileNotifications()) {
         $this->_returnError("You are not authorized to receive mobile notifications");
     }
     /* Lang */
     $this->lang->loadLanguageFile(array('public_usercp'), 'core');
     /* Notifications Library */
     $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . '/sources/classes/member/notifications.php', 'notifications');
     $notifyLibrary = new $classToLoad($this->registry);
     $notifyLibrary->setMember($this->memberData);
     /* Options */
     $_basicOptions = array(array('email', $this->lang->words['notopt__email']), array('pm', $this->lang->words['notopt__pm']), array('inline', $this->lang->words['notopt__inline']), array('mobile', $this->lang->words['notopt__mobile']));
     $_configOptions = $notifyLibrary->getNotificationData(TRUE);
     $_notifyConfig = $notifyLibrary->getMemberNotificationConfig($this->memberData);
     $_defaultConfig = $notifyLibrary->getDefaultNotificationConfig();
     $_formOptions = array();
     foreach ($_configOptions as $option) {
         $_thisConfig = $_notifyConfig[$option['key']];
         //-----------------------------------------
         // Determine available options
         //-----------------------------------------
         $_available = array();
         foreach ($_basicOptions as $_bo) {
             if (!is_array($_defaultConfig[$option['key']]['disabled']) or !in_array($_bo[0], $_defaultConfig[$option['key']]['disabled'])) {
                 $_available[] = $_bo;
             }
         }
         //-----------------------------------------
         // If none available, at least give inline
         //-----------------------------------------
         if (!count($_available)) {
             $_available[] = array('inline', $this->lang->words['notify__inline']);
         }
         //-----------------------------------------
         // Start setting data to pass to form
         //-----------------------------------------
         $_formOptions[$option['key']] = array();
         $_formOptions[$option['key']]['key'] = $option['key'];
         //-----------------------------------------
         // Rikki asked for this...
         //-----------------------------------------
         foreach ($_available as $_availOption) {
             $_formOptions[$option['key']]['options'][$_availOption[0]] = $_availOption;
         }
         //$_formOptions[ $option['key'] ]['options']		= $_available;
         $_formOptions[$option['key']]['defaults'] = is_array($_thisConfig['selected']) ? $_thisConfig['selected'] : array();
         $_formOptions[$option['key']]['disabled'] = 0;
         //-----------------------------------------
         // Don't allow member to configure
         // Still show, but disable on form
         //-----------------------------------------
         if ($_defaultConfig[$option['key']]['disable_override']) {
             $_formOptions[$option['key']]['disabled'] = 1;
             $_formOptions[$option['key']]['defaults'] = is_array($_defaultConfig[$option['key']]['selected']) ? $_defaultConfig[$option['key']]['selected'] : array();
         }
     }
     /* Groups */
     $this->notifyGroups = array('topics_posts' => array('new_topic', 'new_reply', 'post_quoted'), 'status_updates' => array('reply_your_status', 'reply_any_status', 'friend_status_update'), 'profiles_friends' => array('profile_comment', 'profile_comment_pending', 'friend_request', 'friend_request_pending', 'friend_request_approve'), 'private_msgs' => array('new_private_message', 'reply_private_message', 'invite_private_message'));
     /* XML Parser */
     require_once IPS_KERNEL_PATH . 'classXML.php';
     /*noLibHook*/
     $xml = new classXML('utf-8');
     $xml->newXMLDocument();
     /* Build Document */
     $xml->addElement('notifications');
     foreach ($this->notifyGroups as $groupKey => $group) {
         $xml->addElement('group', 'notifications');
         $xml->addElementasRecord('group', array('info'), array('groupTitle' => IPSText::UNhtmlspecialchars($this->lang->words['notifytitle_' . $groupKey])));
         $xml->addElement('options', 'group');
         foreach ($group as $key) {
             if (!is_array($_formOptions[$key])) {
                 continue;
             }
             /* Set the done flag */
             $_formOptions[$key]['done'] = 1;
             /* Set the title */
             $_title = $this->lang->words['notify__short__' . $key] ? $this->lang->words['notify__short__' . $key] : $this->lang->words['notify__' . $key];
             /* Add to XML */
             $xml->addElementAsRecord('options', array('option'), array('optionKey' => $key, 'optionTitle' => IPSText::UNhtmlspecialchars($_title), 'optionEnabled' => in_array('mobile', $_formOptions[$key]['defaults']) ? '1' : '0'));
         }
     }
     /* Other Options */
     $xml->addElement('group', 'notifications');
     $xml->addElementasRecord('group', array('info'), array('groupTitle' => IPSText::UNhtmlspecialchars($this->lang->words['notifytitle_other'])));
     $xml->addElement('options', 'group');
     foreach ($_formOptions as $key => $data) {
         if ($data['done']) {
             continue;
         }
         /* Set the title */
         $_title = $this->lang->words['notify__short__' . $key] ? $this->lang->words['notify__short__' . $key] : $this->lang->words['notify__' . $key];
         /* Add to XML */
         $xml->addElementAsRecord('options', array('option'), array('optionKey' => $key, 'optionTitle' => IPSText::UNhtmlspecialchars($_title), 'optionEnabled' => in_array('mobile', $data['defaults']) ? '1' : '0'));
     }
     /* Output */
     echo $xml->fetchDocument();
     exit;
 }