示例#1
0
 /**
  * Method to format the specified value for text type
  **/
 public function getFieldData($field)
 {
     $value = $field['value'];
     if (empty($value)) {
         return $value;
     }
     $chars = RaidPlannerHelper::getProfileChars($value, true, true);
     $oReturn = '';
     foreach ($chars as $char) {
         $oReturn .= '<span class="' . $char['class_css'] . ' ' . $char['race_css'] . '">' . $char['char_name'] . '<span>';
         if ($char['guild_name'] != '') {
             $oReturn .= ' &lsaquo;' . $char['guild_name'] . '&rsaquo;';
         }
         $oReturn .= "\n";
     }
     $oReturn = str_replace("\n", "<br />", trim($oReturn));
     return $oReturn;
 }
示例#2
0
 function onUserAfterSave($data, $isNew, $result, $error)
 {
     $userId = JArrayHelper::getValue($data, 'id', 0, 'int');
     if ($this->params->get('raidplanner-profile-group', 1) == 0) {
         $data_key = 'params';
     } else {
         $data_key = 'raidplanner';
     }
     if ($userId && $result && isset($data[$data_key]) && count($data[$data_key])) {
         try {
             $juser = JFactory::getUser($userId);
             $params = $juser->getParameters(false)->toObject();
             if ($data_key == 'params') {
                 $data_arr = json_decode($data[$data_key], true);
             } else {
                 $data_arr = $data[$data_key];
             }
             foreach ($data_arr as $k => $v) {
                 if (in_array($k, array('characters', 'calendar_secret', 'vacation'))) {
                     $juser->setParam($k, $v);
                     $params->{$k} = $v;
                 }
             }
             $table = $juser->getTable();
             $table->load($juser->id);
             $juser->params = json_encode($params);
             /*				$table->bind($juser->getProperties()); */
             $table->store();
             if (isset($data_arr['characters']) && $this->params->get('enable-character-editor', 0) == 1) {
                 $db = JFactory::getDBO();
                 $query = 'UPDATE #__raidplanner_character SET profile_id=-profile_id WHERE profile_id=' . $userId;
                 $db->setQuery($query);
                 $db->query();
                 $chars = RaidPlannerHelper::getProfileChars($data_arr['characters']);
                 foreach ($chars as $char) {
                     if ($char['char_id'] == '') {
                         $query = "UPDATE #__raidplanner_character SET profile_id=" . $userId . " WHERE char_name='" . $db->escape($char['char_name']) . "'";
                     } else {
                         $query = "UPDATE #__raidplanner_character SET profile_id=" . $userId . " WHERE character_id=" . intval($char['char_id']) . " AND char_name='" . $db->escape($char['char_name']) . "'";
                     }
                     $db->setQuery($query);
                     $db->query();
                 }
                 $query = 'DELETE FROM #__raidplanner_character WHERE profile_id=-' . $userId;
                 $db->setQuery($query);
                 $db->query();
             }
         } catch (JException $e) {
             $this->_subject->setError($e->getMessage());
             return false;
         }
     }
     return true;
 }
示例#3
0
 /**
  * Returns a field in specified format
  *
  * @param  moscomprofilerFields  $field
  * @param  moscomprofilerUser    $user
  * @param  string                $output  'html', 'xml', 'json', 'php', 'csvheader', 'csv', 'rss', 'fieldslist', 'htmledit'
  * @param  string                $reason  'profile' for user profile view, 'edit' for profile edit, 'register' for registration, 'list' for user-lists
  * @param  int                   $list_compare_types   IF reason == 'search' : 0 : simple 'is' search, 1 : advanced search with modes, 2 : simple 'any' search
  * @return mixed                
  */
 function getField(&$field, &$user, $output, $reason, $list_compare_types)
 {
     $oReturn = '';
     if (is_object($user)) {
         switch ($output) {
             case 'htmledit':
                 $oReturn = null;
                 if ($reason == 'edit' || $reason == 'register') {
                     $value = $user->get($field->name);
                     // Load language file
                     JFactory::getLanguage()->load('com_raidplanner', JPATH_SITE);
                     // Load the javascript
                     JHtml::_('behavior.modal', 'a.open-modal');
                     // Build the script.
                     $script = array();
                     $script[] = '';
                     $script[] = '	function jRecalCharacterValue_' . $field->fieldid . '() {';
                     $script[] = '		var ul = document.id("rp_characterEditorList_' . $field->fieldid . '");';
                     $script[] = '		var val = "";';
                     $script[] = '		ul.getChildren("li").each(function(li){';
                     $script[] = '			if (li.get("id") && (li.get("id") != "rp_characterEditorField_' . $field->fieldid . '_0") && (li.getChildren("a").get("text") != "") ) {';
                     $script[] = '				if (li.getChildren("input")[0].get("value")) {';
                     $script[] = '					val = val + li.getChildren("input")[0].get("value") + ":";';
                     $script[] = '				}';
                     $script[] = '				val = val + li.getChildren("a")[0].get("text") + ";";';
                     $script[] = '			}';
                     $script[] = '		})';
                     $script[] = '		document.id("rp_characterEditorValue_' . $field->fieldid . '").set("value", val );';
                     $script[] = '	}';
                     $script[] = '';
                     $script[] = '	function jSelectCharacter_' . $field->fieldid . '(idx, char_id, char_name) {';
                     $script[] = '		var line = document.id( "rp_characterEditorField_' . $field->fieldid . '_" + idx );';
                     $script[] = '		if (idx==0) {';
                     $script[] = '			var ul = line.getParent("ul");';
                     $script[] = '			ul.getChildren("li").each(function(li){';
                     $script[] = '				if ( (li) && (li.get("id")) ) {';
                     $script[] = '					if(li.get("id").replace("rp_characterEditorField_' . $field->fieldid . '_","")*1>idx) idx=li.get("id").replace("rp_characterEditorField_' . $field->fieldid . '_","")*1;';
                     $script[] = '					if(li.get("id") == "rp_characterEditorField_' . $field->fieldid . '_0") {';
                     $script[] = '						line = li.clone().setStyle("display","block");';
                     $script[] = '					}';
                     $script[] = '				}';
                     $script[] = '			})';
                     $script[] = '			idx = Number(idx) + 1;';
                     $script[] = '			line.set("id","rp_characterEditorField_' . $field->fieldid . '_" + (idx));';
                     $script[] = '			ul.grab(line,"top");';
                     $script[] = '			if (SqueezeBox) {';
                     $script[] = '				if (SqueezeBox.assign) {';
                     $script[] = '					SqueezeBox.assign(line.getChildren("a"),{parse:"rel"});';
                     $script[] = '				} else {';
                     $script[] = '					line.getChildren("a").each(function(el){';
                     $script[] = '						el.addEvent("click",function(e){';
                     $script[] = '							SqueezeBox.fromElement(el,{parse:"rel"});';
                     $script[] = '						});';
                     $script[] = '					});';
                     $script[] = '				}';
                     $script[] = '			}';
                     $script[] = '		}';
                     $script[] = '		line.getChildren("a")[0].set("text",char_name);';
                     $script[] = '		line.getChildren("a")[0].set("href","' . JURI::root() . 'index.php?option=com_raidplanner&amp;view=character&amp;layout=modal&amp;tmpl=component&amp;function=jSelectCharacter_' . $field->fieldid . '&amp;character=" + char_name + "&amp;char_id=" + char_id + "&amp;fieldidx=" + idx );';
                     $script[] = '		line.getChildren("input")[0].set("value",char_id);';
                     $script[] = '		SqueezeBox.close();';
                     $script[] = '		jRecalCharacterValue_' . $field->fieldid . '();';
                     $script[] = '	}';
                     // Add the script to the document head.
                     JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
                     $chars = RaidPlannerHelper::getProfileChars($value, true, true);
                     $html = '<input type="hidden" name="' . $field->name . '" value="' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '" id="rp_characterEditorValue_' . $field->fieldid . '" />';
                     $html .= '<div style="width:' . $field->params->get('cols', 40) . 'em;height:' . $field->params->get('rows', 5) . 'em;overflow-y:auto;overflow-x:hidden;border:1px inset gray;">';
                     $html .= '<ul style="display:block;float:left;clear:left;width:100%;padding:0;margin:0;" id="rp_characterEditorList_' . $field->fieldid . '">';
                     $idx = 0;
                     $html .= '<li style="display:none;float:left;clear:left;width:100%;padding:0;border-bottom:1px solid gray;background-image:none;" id="rp_characterEditorField_' . $field->fieldid . '_0">';
                     $html .= '<img src="' . JURI::root() . 'media/com_raidplanner/images/delete.png" alt="' . JText::_('JACTION_DELETE') . '" onclick="this.getParent(\'li\').dispose();" style="float:right;margin:0;" />';
                     $html .= '<a class="open-modal" href="" rel="{handler: \'iframe\', size: {x: 450, y: 300}}"></a>';
                     $html .= '<input type="hidden" value="" />';
                     $html .= '</li>';
                     foreach ($chars as $char) {
                         $idx++;
                         $link = JURI::root() . 'index.php?option=com_raidplanner&amp;view=character&amp;layout=modal&amp;tmpl=component&amp;function=jSelectCharacter_' . $field->fieldid . '&amp;character=' . htmlspecialchars($char['char_name'], ENT_COMPAT, 'UTF-8') . '&amp;char_id=' . intval($char['char_id']) . '&amp;fieldidx=' . $idx;
                         $html .= '<li style="display:block;float:left;clear:left;width:100%;padding:0;border-bottom:1px solid gray;background-image:none;" id="rp_characterEditorField_' . $field->fieldid . '_' . $idx . '">';
                         $html .= '<img src="' . JURI::root() . 'media/com_raidplanner/images/delete.png" alt="' . JText::_('JACTION_DELETE') . '" onclick="this.getParent(\'li\').dispose();jRecalCharacterValue_' . $field->fieldid . '();" style="float:right;margin:0;" />';
                         $html .= '<a class="open-modal" href="' . $link . '" rel="{handler: \'iframe\', size: {x: 450, y: 300}}">' . $char['char_name'] . '</a>';
                         if ($char['guild_name'] != '') {
                             $html .= '<span> &lsaquo;' . $char['guild_name'] . '&rsaquo;</span>';
                         }
                         $html .= '<input type="hidden" value="' . $char['char_id'] . '" />';
                         $html .= '</li>';
                     }
                     $link = JURI::root() . 'index.php?option=com_raidplanner&amp;view=character&amp;layout=modal&amp;tmpl=component&amp;function=jSelectCharacter_' . $field->fieldid . '&amp;character=&amp;char_id=&amp;fieldidx=';
                     $html .= '<li style="display:block;float:left;clear:left;width:100%;padding:0;background-image:none;"><a class="open-modal" rel="{handler: \'iframe\', size: {x: 450, y: 300}}" href="' . $link . '"><img src="' . JURI::root() . 'media/com_raidplanner/images/new.png" alt="' . JText::_('COM_RAIDPLANNER_ADD_NEW_CHARACTER') . '" style="margin:0;" /> ' . JText::_('COM_RAIDPLANNER_ADD_NEW_CHARACTER') . '</a></li>';
                     $html .= '</ul>';
                     $html .= '</div>';
                     $oReturn = $html;
                 } else {
                     $oReturn = parent::getField($field, $user, $output, $reason, $list_compare_types);
                 }
                 break;
             case 'html':
             case 'rss':
                 $value = $user->get($field->name);
                 $chars = RaidPlannerHelper::getProfileChars($value, true, true);
                 $oReturn = '';
                 foreach ($chars as $char) {
                     $oReturn .= '<span class="' . $char['class_css'] . ' ' . $char['race_css'] . '">' . $char['char_name'] . '<span>';
                     if ($char['guild_name'] != '') {
                         $oReturn .= ' &lsaquo;' . $char['guild_name'] . '&rsaquo;';
                     }
                     $oReturn .= "\n";
                 }
                 $oReturn = str_replace("\n", "<br />", trim($oReturn));
                 break;
             case 'json':
             case 'php':
             case 'xml':
             case 'csvheader':
             case 'fieldslist':
             case 'csv':
             default:
                 $oReturn = parent::getField($field, $user, $output, $reason, $list_compare_types);
                 break;
         }
     }
     return $oReturn;
 }
示例#4
0
 /**
  * Gets the list of user's characters
  */
 function getCharacters($min_level = null, $max_level = null, $min_rank = null, $guild_id = null, $everyone = false)
 {
     $db = JFactory::getDBO();
     $user = JFactory::getUser();
     if (!$everyone) {
         $where = " WHERE (c.profile_id=" . intval($user->id) . " OR c.profile_id = 0)";
     } else {
         $where = " WHERE 1=1";
     }
     if ($min_level != null && intval($min_level) > 0) {
         $where .= " AND c.char_level>=" . intval($min_level);
     }
     if ($max_level != null && intval($max_level) > 0) {
         $where .= " AND c.char_level<=" . intval($max_level);
     }
     if ($min_rank != null && intval($min_rank) > 0) {
         $where .= " AND c.rank<=" . intval($min_rank);
     }
     if ($guild_id != null && intval($guild_id) > 0) {
         $where .= " AND c.guild_id=" . intval($guild_id);
     }
     $query = "SELECT c.character_id,c.char_name,c.profile_id\n\t\t\t\t\tFROM #__raidplanner_character AS c \n\t\t\t\t\t" . $where . " ORDER BY c.char_name ASC";
     // reload the list
     $db->setQuery($query);
     $result = $db->loadObjectList('character_id');
     $charlist = array();
     $charset = RaidPlannerHelper::getProfileChars($user->getParam('characters'), true);
     // reorder if set in characters parameters
     foreach ($charset as $userchar) {
         /* If character id  matches add this character */
         if (isset($result[$userchar['char_id']]) && $result[$userchar['char_id']]->character_id == $userchar['char_id']) {
             $charlist[$userchar['char_id']] = $result[$userchar['char_id']];
             /* Write it back to the database, if needed */
             if ($result[$userchar['char_id']]->profile_id == 0) {
                 $query = "UPDATE #__raidplanner_character SET profile_id = " . intval($user->id) . " WHERE character_id = " . intval($result[$userchar['char_id']]->character_id);
                 $db->setQuery($query);
                 $db->query();
             }
             unset($result[$userchar['char_id']]);
         }
     }
     if (is_array($result)) {
         foreach ($result as $charname => $charvalue) {
             if ($charvalue->profile_id != 0 || $everyone) {
                 $charlist[$charname] = $charvalue;
             }
         }
     }
     return $charlist;
 }