- deleted stats class
- deleted other .idea folder - added other .idea to .gitignore
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| /.idea/ | ||||
| /application/.idea/ | ||||
| /.settings/ | ||||
| /.buildpath | ||||
| /.project | ||||
							
								
								
									
										1
									
								
								application/.idea/.name
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								application/.idea/.name
									
									
									
										generated
									
									
									
								
							| @@ -1 +0,0 @@ | ||||
| application | ||||
							
								
								
									
										9
									
								
								application/.idea/application.iml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								application/.idea/application.iml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <module type="WEB_MODULE" version="4"> | ||||
|   <component name="NewModuleRootManager"> | ||||
|     <content url="file://$MODULE_DIR$" /> | ||||
|     <orderEntry type="inheritedJdk" /> | ||||
|     <orderEntry type="sourceFolder" forTests="false" /> | ||||
|   </component> | ||||
| </module> | ||||
|  | ||||
							
								
								
									
										3
									
								
								application/.idea/dictionaries/Lukas.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3
									
								
								application/.idea/dictionaries/Lukas.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,3 +0,0 @@ | ||||
| <component name="ProjectDictionaryState"> | ||||
|   <dictionary name="Lukas" /> | ||||
| </component> | ||||
							
								
								
									
										5
									
								
								application/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								application/.idea/encodings.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" /> | ||||
| </project> | ||||
|  | ||||
							
								
								
									
										36
									
								
								application/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										36
									
								
								application/.idea/misc.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,36 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ProjectInspectionProfilesVisibleTreeState"> | ||||
|     <entry key="Project Default"> | ||||
|       <profile-state> | ||||
|         <expanded-state> | ||||
|           <State> | ||||
|             <id /> | ||||
|           </State> | ||||
|         </expanded-state> | ||||
|         <selected-state> | ||||
|           <State> | ||||
|             <id>SASS/SCSS</id> | ||||
|           </State> | ||||
|         </selected-state> | ||||
|       </profile-state> | ||||
|     </entry> | ||||
|   </component> | ||||
|   <component name="ProjectRootManager" version="2" /> | ||||
|   <component name="masterDetails"> | ||||
|     <states> | ||||
|       <state key="ScopeChooserConfigurable.UI"> | ||||
|         <settings> | ||||
|           <splitter-proportions> | ||||
|             <option name="proportions"> | ||||
|               <list> | ||||
|                 <option value="0.2" /> | ||||
|               </list> | ||||
|             </option> | ||||
|           </splitter-proportions> | ||||
|         </settings> | ||||
|       </state> | ||||
|     </states> | ||||
|   </component> | ||||
| </project> | ||||
|  | ||||
							
								
								
									
										9
									
								
								application/.idea/modules.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								application/.idea/modules.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ProjectModuleManager"> | ||||
|     <modules> | ||||
|       <module fileurl="file://$PROJECT_DIR$/.idea/application.iml" filepath="$PROJECT_DIR$/.idea/application.iml" /> | ||||
|     </modules> | ||||
|   </component> | ||||
| </project> | ||||
|  | ||||
							
								
								
									
										5
									
								
								application/.idea/scopes/scope_settings.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								application/.idea/scopes/scope_settings.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
| <component name="DependencyValidationManager"> | ||||
|   <state> | ||||
|     <option name="SKIP_IMPORT_STATEMENTS" value="false" /> | ||||
|   </state> | ||||
| </component> | ||||
							
								
								
									
										8
									
								
								application/.idea/vagrant.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								application/.idea/vagrant.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,8 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="VagrantSettings"> | ||||
|     <option name="instanceFolder" value="" /> | ||||
|     <option name="vagrantExecutable" value="vagrant.bat" /> | ||||
|   </component> | ||||
| </project> | ||||
|  | ||||
							
								
								
									
										7
									
								
								application/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								application/.idea/vcs.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,7 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="VcsDirectoryMappings"> | ||||
|     <mapping directory="" vcs="" /> | ||||
|   </component> | ||||
| </project> | ||||
|  | ||||
							
								
								
									
										505
									
								
								application/.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										505
									
								
								application/.idea/workspace.xml
									
									
									
										generated
									
									
									
								
							| @@ -1,505 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <project version="4"> | ||||
|   <component name="ChangeListManager"> | ||||
|     <list default="true" id="810d50c2-5feb-4cd4-8bb3-d6196e2e83d8" name="Default" comment="" /> | ||||
|     <ignored path="application.iws" /> | ||||
|     <ignored path=".idea/workspace.xml" /> | ||||
|     <option name="TRACKING_ENABLED" value="true" /> | ||||
|     <option name="SHOW_DIALOG" value="false" /> | ||||
|     <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||||
|     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | ||||
|     <option name="LAST_RESOLUTION" value="IGNORE" /> | ||||
|   </component> | ||||
|   <component name="ChangesViewManager" flattened_view="true" show_ignored="false" /> | ||||
|   <component name="CreatePatchCommitExecutor"> | ||||
|     <option name="PATCH_PATH" value="" /> | ||||
|   </component> | ||||
|   <component name="DaemonCodeAnalyzer"> | ||||
|     <disable_hints /> | ||||
|   </component> | ||||
|   <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" /> | ||||
|   <component name="FavoritesManager"> | ||||
|     <favorites_list name="application" /> | ||||
|   </component> | ||||
|   <component name="FileEditorManager"> | ||||
|     <leaf> | ||||
|       <file leaf-file-name="plugin.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/plugin.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="58" column="22" selection-start="1179" selection-end="1179" vertical-scroll-proportion="-32.03846" vertical-offset="153" max-vertical-offset="2703"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="player.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/player.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="103" column="0" selection-start="3396" selection-end="3396" vertical-scroll-proportion="-7.5657897" vertical-offset="1176" max-vertical-offset="1972"> | ||||
|               <folding> | ||||
|                 <element signature="e#6#85#0" expanded="true" /> | ||||
|               </folding> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="playerHandler.php" pinned="false" current="true" current-in-tab="true"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/playerHandler.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="57" column="118" selection-start="1645" selection-end="1645" vertical-scroll-proportion="0.5177305" vertical-offset="446" max-vertical-offset="1921"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="authentication.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/authentication.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="12" column="16" selection-start="146" selection-end="146" vertical-scroll-proportion="-5.8846154" vertical-offset="51" max-vertical-offset="1853"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="chat.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/chat.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="47" column="7" selection-start="976" selection-end="976" vertical-scroll-proportion="-9.653846" vertical-offset="548" max-vertical-offset="1547"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="database.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/database.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="319" column="19" selection-start="9044" selection-end="9044" vertical-scroll-proportion="-1.25" vertical-offset="5328" max-vertical-offset="6919"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="core.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/core.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="187" column="24" selection-start="4232" selection-end="4232" vertical-scroll-proportion="-41.82895" vertical-offset="0" max-vertical-offset="6817"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="server.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/server.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="229" column="110" selection-start="5463" selection-end="5463" vertical-scroll-proportion="-5.730769" vertical-offset="3744" max-vertical-offset="6596"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="tools.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/core/tools.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="154" column="6" selection-start="3963" selection-end="3963" vertical-scroll-proportion="-22.615385" vertical-offset="2030" max-vertical-offset="4352"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|       <file leaf-file-name="chatlog.plugin.php" pinned="false" current="false" current-in-tab="false"> | ||||
|         <entry file="file://$PROJECT_DIR$/plugins/oldstructure/chatlog.plugin.php"> | ||||
|           <provider selected="true" editor-type-id="text-editor"> | ||||
|             <state line="40" column="118" selection-start="631" selection-end="741" vertical-scroll-proportion="-20.26923" vertical-offset="153" max-vertical-offset="1547"> | ||||
|               <folding /> | ||||
|             </state> | ||||
|           </provider> | ||||
|         </entry> | ||||
|       </file> | ||||
|     </leaf> | ||||
|   </component> | ||||
|   <component name="FindManager"> | ||||
|     <FindUsagesManager> | ||||
|       <setting name="OPEN_NEW_TAB" value="false" /> | ||||
|     </FindUsagesManager> | ||||
|   </component> | ||||
|   <component name="IdeDocumentHistory"> | ||||
|     <option name="changedFiles"> | ||||
|       <list> | ||||
|         <option value="$PROJECT_DIR$/core/database.ManiaControl.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/manialinkIdHandler.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/core.ManiaControl.php" /> | ||||
|         <option value="$PROJECT_DIR$/configs/plugins.ManiaControl.xml" /> | ||||
|         <option value="$PROJECT_DIR$/core/pluginHandler.php" /> | ||||
|         <option value="$PROJECT_DIR$/ManiaControl.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/commands.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/stats.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/callbacks.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/chat.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/core.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/tools.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/server.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/player.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/playerHandler.php" /> | ||||
|         <option value="$PROJECT_DIR$/core/plugin.php" /> | ||||
|       </list> | ||||
|     </option> | ||||
|   </component> | ||||
|   <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" /> | ||||
|   <component name="ProjectFrameBounds"> | ||||
|     <option name="x" value="542" /> | ||||
|     <option name="y" value="216" /> | ||||
|     <option name="width" value="1936" /> | ||||
|     <option name="height" value="1056" /> | ||||
|   </component> | ||||
|   <component name="ProjectLevelVcsManager" settingsEditedManually="false"> | ||||
|     <OptionsSetting value="true" id="Add" /> | ||||
|     <OptionsSetting value="true" id="Remove" /> | ||||
|     <OptionsSetting value="true" id="Checkout" /> | ||||
|     <OptionsSetting value="true" id="Update" /> | ||||
|     <OptionsSetting value="true" id="Status" /> | ||||
|     <OptionsSetting value="true" id="Edit" /> | ||||
|     <ConfirmationsSetting value="0" id="Add" /> | ||||
|     <ConfirmationsSetting value="0" id="Remove" /> | ||||
|   </component> | ||||
|   <component name="ProjectReloadState"> | ||||
|     <option name="STATE" value="0" /> | ||||
|   </component> | ||||
|   <component name="ProjectView"> | ||||
|     <navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5"> | ||||
|       <flattenPackages /> | ||||
|       <showMembers /> | ||||
|       <showModules /> | ||||
|       <showLibraryContents /> | ||||
|       <hideEmptyPackages /> | ||||
|       <abbreviatePackageNames /> | ||||
|       <autoscrollToSource /> | ||||
|       <autoscrollFromSource /> | ||||
|       <sortByType /> | ||||
|     </navigator> | ||||
|     <panes> | ||||
|       <pane id="ProjectPane"> | ||||
|         <subPane> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="plugins" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="oldstructure" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="core" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="application" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|             <PATH_ELEMENT> | ||||
|               <option name="myItemId" value="configs" /> | ||||
|               <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|         </subPane> | ||||
|       </pane> | ||||
|       <pane id="Scope"> | ||||
|         <subPane subId="Problems" /> | ||||
|         <subPane subId="Tests" /> | ||||
|         <subPane subId="Project Files"> | ||||
|           <PATH> | ||||
|             <PATH_ELEMENT USER_OBJECT="Root"> | ||||
|               <option name="myItemId" value="" /> | ||||
|               <option name="myItemType" value="" /> | ||||
|             </PATH_ELEMENT> | ||||
|           </PATH> | ||||
|         </subPane> | ||||
|       </pane> | ||||
|     </panes> | ||||
|   </component> | ||||
|   <component name="PropertiesComponent"> | ||||
|     <property name="options.splitter.main.proportions" value="0.3" /> | ||||
|     <property name="WebServerToolWindowFactoryState" value="true" /> | ||||
|     <property name="options.lastSelected" value="reference.settings.ide.settings.uml" /> | ||||
|     <property name="last_opened_file_path" value="$PROJECT_DIR$/.." /> | ||||
|     <property name="options.splitter.details.proportions" value="0.2" /> | ||||
|     <property name="options.searchVisible" value="true" /> | ||||
|   </component> | ||||
|   <component name="PublishConfig"> | ||||
|     <servers> | ||||
|       <server id="17a42bee-a550-4af8-9ca6-9ec751fda755"> | ||||
|         <serverdata> | ||||
|           <mappings> | ||||
|             <mapping local="$PROJECT_DIR$" /> | ||||
|           </mappings> | ||||
|         </serverdata> | ||||
|       </server> | ||||
|       <server id="cffd73bb-bc3d-46ed-be64-c7c6fe83d23d"> | ||||
|         <serverdata> | ||||
|           <mappings> | ||||
|             <mapping local="$PROJECT_DIR$" /> | ||||
|           </mappings> | ||||
|         </serverdata> | ||||
|       </server> | ||||
|     </servers> | ||||
|   </component> | ||||
|   <component name="RunManager"> | ||||
|     <configuration default="true" type="PHPUnitRunConfigurationType" factoryName="PHPUnit"> | ||||
|       <TestRunner /> | ||||
|       <method /> | ||||
|     </configuration> | ||||
|     <configuration default="true" type="PhpLocalRunConfigurationType" factoryName="PHP Console"> | ||||
|       <method /> | ||||
|     </configuration> | ||||
|     <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug" singleton="true"> | ||||
|       <method /> | ||||
|     </configuration> | ||||
|     <configuration default="true" type="PhpUnitRemoteRunConfigurationType" factoryName="PHPUnit on Server"> | ||||
|       <method /> | ||||
|     </configuration> | ||||
|     <list size="0" /> | ||||
|   </component> | ||||
|   <component name="ShelveChangesManager" show_recycled="false" /> | ||||
|   <component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false" SSL_PROTOCOLS="all"> | ||||
|     <option name="USER" value="" /> | ||||
|     <option name="PASSWORD" value="" /> | ||||
|     <option name="mySSHConnectionTimeout" value="30000" /> | ||||
|     <option name="mySSHReadTimeout" value="30000" /> | ||||
|     <option name="LAST_MERGED_REVISION" /> | ||||
|     <option name="MERGE_DRY_RUN" value="false" /> | ||||
|     <option name="MERGE_DIFF_USE_ANCESTRY" value="true" /> | ||||
|     <option name="UPDATE_LOCK_ON_DEMAND" value="false" /> | ||||
|     <option name="IGNORE_SPACES_IN_MERGE" value="false" /> | ||||
|     <option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" /> | ||||
|     <option name="IGNORE_SPACES_IN_ANNOTATE" value="true" /> | ||||
|     <option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" /> | ||||
|     <option name="FORCE_UPDATE" value="false" /> | ||||
|     <option name="IGNORE_EXTERNALS" value="false" /> | ||||
|     <configuration useDefault="false">C:\Users\Lukas\AppData\Roaming\Subversion</configuration> | ||||
|     <myIsUseDefaultProxy>false</myIsUseDefaultProxy> | ||||
|   </component> | ||||
|   <component name="TaskManager"> | ||||
|     <task active="true" id="Default" summary="Default task"> | ||||
|       <changelist id="810d50c2-5feb-4cd4-8bb3-d6196e2e83d8" name="Default" comment="" /> | ||||
|       <created>1383994867593</created> | ||||
|       <updated>1383994867593</updated> | ||||
|     </task> | ||||
|     <servers /> | ||||
|   </component> | ||||
|   <component name="ToolWindowManager"> | ||||
|     <frame x="542" y="216" width="1936" height="1056" extended-state="0" /> | ||||
|     <editor active="true" /> | ||||
|     <layout> | ||||
|       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.12646745" sideWeight="0.8942093" order="0" side_tool="false" content_ui="combo" /> | ||||
|       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> | ||||
|       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.105790645" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" /> | ||||
|       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||||
|       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | ||||
|     </layout> | ||||
|     <layout-to-restore> | ||||
|       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> | ||||
|       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.105790645" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" /> | ||||
|       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.12646745" sideWeight="0.8942093" order="0" side_tool="false" content_ui="combo" /> | ||||
|       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> | ||||
|       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> | ||||
|       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> | ||||
|     </layout-to-restore> | ||||
|   </component> | ||||
|   <component name="VcsContentAnnotationSettings"> | ||||
|     <option name="myLimit" value="2678400000" /> | ||||
|   </component> | ||||
|   <component name="VcsManagerConfiguration"> | ||||
|     <option name="myTodoPanelSettings"> | ||||
|       <TodoPanelSettings /> | ||||
|     </option> | ||||
|   </component> | ||||
|   <component name="XDebuggerManager"> | ||||
|     <breakpoint-manager> | ||||
|       <option name="time" value="1" /> | ||||
|     </breakpoint-manager> | ||||
|   </component> | ||||
|   <component name="editorHistoryManager"> | ||||
|     <entry file="file://$PROJECT_DIR$/plugins/oldstructure/chatlog.plugin.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="40" column="118" selection-start="631" selection-end="741" vertical-scroll-proportion="-20.26923" vertical-offset="153" max-vertical-offset="1547"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/PhpRemote/GbxRemote.bem.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.66312057" vertical-offset="561" max-vertical-offset="15266"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/plugins/oldstructure/records.plugin.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="1200" column="7" selection-start="37957" selection-end="37957" vertical-scroll-proportion="0.5579196" vertical-offset="19928" max-vertical-offset="20774"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/plugins/oldstructure/obstacle.plugin.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.024822695" vertical-offset="21" max-vertical-offset="1173"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/tools.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="154" column="6" selection-start="3963" selection-end="3963" vertical-scroll-proportion="-22.615385" vertical-offset="2030" max-vertical-offset="4352"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/chat.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="47" column="7" selection-start="976" selection-end="976" vertical-scroll-proportion="-9.653846" vertical-offset="548" max-vertical-offset="1547"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/commands.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="38" column="71" selection-start="829" selection-end="829" vertical-scroll-proportion="0.46217495" vertical-offset="255" max-vertical-offset="11730"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/stats.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="20" column="0" selection-start="268" selection-end="268" vertical-scroll-proportion="0.40189126" vertical-offset="0" max-vertical-offset="5151"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/server.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="229" column="110" selection-start="5463" selection-end="5463" vertical-scroll-proportion="-5.730769" vertical-offset="3744" max-vertical-offset="6596"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/pluginHandler.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="32" column="2" selection-start="478" selection-end="478" vertical-scroll-proportion="0.643026" vertical-offset="0" max-vertical-offset="846"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/core.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="187" column="24" selection-start="4232" selection-end="4232" vertical-scroll-proportion="-41.82895" vertical-offset="0" max-vertical-offset="6817"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/database.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="319" column="19" selection-start="9044" selection-end="9044" vertical-scroll-proportion="-1.25" vertical-offset="5328" max-vertical-offset="6919"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/authentication.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="12" column="16" selection-start="146" selection-end="146" vertical-scroll-proportion="-5.8846154" vertical-offset="51" max-vertical-offset="1853"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/player.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="103" column="0" selection-start="3396" selection-end="3396" vertical-scroll-proportion="-7.5657897" vertical-offset="1176" max-vertical-offset="1972"> | ||||
|           <folding> | ||||
|             <element signature="e#6#85#0" expanded="true" /> | ||||
|           </folding> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/plugin.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="58" column="22" selection-start="1179" selection-end="1179" vertical-scroll-proportion="-32.03846" vertical-offset="153" max-vertical-offset="2703"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|     <entry file="file://$PROJECT_DIR$/core/playerHandler.php"> | ||||
|       <provider selected="true" editor-type-id="text-editor"> | ||||
|         <state line="57" column="118" selection-start="1645" selection-end="1645" vertical-scroll-proportion="0.5177305" vertical-offset="446" max-vertical-offset="1921"> | ||||
|           <folding /> | ||||
|         </state> | ||||
|       </provider> | ||||
|     </entry> | ||||
|   </component> | ||||
| </project> | ||||
|  | ||||
| @@ -1,43 +0,0 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!-- Configure the stats manager and enable/disable specific stats --> | ||||
| <stats-config> | ||||
|  | ||||
| 	<stats> | ||||
|  | ||||
| 		<!-- Server stats --> | ||||
| 		<server> | ||||
|  | ||||
| 			<!-- Track how many players connected on the server --> | ||||
| 			<track_server_connects>true</track_server_connects> | ||||
|  | ||||
| 			<!-- Track how many players have been on the server at max --> | ||||
| 			<track_server_max_players>true</track_server_max_players> | ||||
|  | ||||
| 			<!-- Track how many maps have been played during the day --> | ||||
| 			<track_server_played_maps>true</track_server_played_maps> | ||||
|  | ||||
| 			<!-- Track how many times players finished during the day --> | ||||
| 			<track_server_finishes>true</track_server_finishes> | ||||
|  | ||||
| 		</server> | ||||
|  | ||||
| 		<!-- Player stats --> | ||||
| 		<player> | ||||
|  | ||||
| 			<!-- Track player connect counts --> | ||||
| 			<track_player_connects>true</track_player_connects> | ||||
|  | ||||
| 			<!-- Track player play time --> | ||||
| 			<track_player_playtime>true</track_player_playtime> | ||||
|  | ||||
| 			<!-- Track how many chat message players have sent --> | ||||
| 			<track_player_chats>true</track_player_chats> | ||||
|  | ||||
| 			<!-- Track player finishes --> | ||||
| 			<track_player_finishes>true</track_player_finishes> | ||||
|  | ||||
| 		</player> | ||||
|  | ||||
| 	</stats> | ||||
|  | ||||
| </stats-config> | ||||
| @@ -1,297 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| namespace ManiaControl; | ||||
|  | ||||
| /** | ||||
|  * Stats class | ||||
|  * | ||||
|  * @author steeffeen | ||||
|  */ | ||||
| class Stats { | ||||
| 	/** | ||||
| 	 * Constants | ||||
| 	 */ | ||||
| 	const TABLE_STATS_SERVER = 'ic_stats_server'; | ||||
| 	const TABLE_STATS_PLAYERS = 'ic_stats_players'; | ||||
|  | ||||
| 	/** | ||||
| 	 * Private properties | ||||
| 	 */ | ||||
| 	private $mc = null; | ||||
|  | ||||
| 	private $config = null; | ||||
|  | ||||
| 	/** | ||||
| 	 * Constuct stats manager | ||||
| 	 */ | ||||
| 	public function __construct($mc) { | ||||
| 		$this->mc = $mc; | ||||
| 		 | ||||
| 		// Load config | ||||
| 		$this->config = Tools::loadConfig('stats.ManiaControl.xml'); | ||||
| 		$this->loadSettings(); | ||||
| 		 | ||||
| 		// Init database tables | ||||
| 		$this->initTables(); | ||||
| 		 | ||||
| 		// Register for needed callbacks | ||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MP_ENDMAP, $this, 'handleEndMap'); | ||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MP_PLAYERCHAT, $this, 'handlePlayerChat'); | ||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MP_PLAYERCONNECT, $this, 'handlePlayerConnect'); | ||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_MP_PLAYERDISCONNECT, $this, 'handlePlayerDisconnect'); | ||||
| 		$this->mc->callbacks->registerCallbackHandler(Callbacks::CB_TM_PLAYERFINISH, $this, 'handlePlayerFinish'); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Create the database tables | ||||
| 	 */ | ||||
| 	private function initTables() { | ||||
| 		$query = ""; | ||||
| 		 | ||||
| 		// Server stats | ||||
| 		$query .= "CREATE TABLE IF NOT EXISTS `" . self::TABLE_STATS_SERVER . "` ( | ||||
| 		`index` int(11) NOT NULL AUTO_INCREMENT, | ||||
| 		`day` date NOT NULL, | ||||
| 		`connectCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`maxPlayerCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`playedMaps` int(11) NOT NULL DEFAULT '0', | ||||
| 		`finishCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`changed` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | ||||
| 		PRIMARY KEY (`index`), | ||||
| 		UNIQUE KEY `day` (`day`) | ||||
| 		) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stores server stats' AUTO_INCREMENT=1;"; | ||||
| 		 | ||||
| 		// Player stats | ||||
| 		$query .= "CREATE TABLE IF NOT EXISTS `" . self::TABLE_STATS_PLAYERS . "` ( | ||||
| 		`index` int(11) NOT NULL AUTO_INCREMENT, | ||||
| 		`Login` varchar(100) NOT NULL, | ||||
| 		`playTime` int(11) NOT NULL DEFAULT '0', | ||||
| 		`connectCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`chatCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`finishCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`hitCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`eliminationCount` int(11) NOT NULL DEFAULT '0', | ||||
| 		`lastJoin` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', | ||||
| 		`changed` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, | ||||
| 		PRIMARY KEY (`index`), | ||||
| 		UNIQUE KEY `Login` (`Login`) | ||||
| 		) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Tracks player stats' AUTO_INCREMENT=1;"; | ||||
| 		 | ||||
| 		// Perform queries | ||||
| 		if (!$this->mc->database->multiQuery($query)) { | ||||
| 			trigger_error("Creating stats tables failed."); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Load settings from config | ||||
| 	 */ | ||||
| 	private function loadSettings() { | ||||
| 		$this->settings = new \stdClass(); | ||||
| 		 | ||||
| 		$this->settings->track_server_connects = Tools::checkSetting($this->config, 'track_server_connects'); | ||||
| 		$this->settings->track_server_max_players = Tools::checkSetting($this->config, 'track_server_max_players'); | ||||
| 		$this->settings->track_server_played_maps = Tools::checkSetting($this->config, 'track_server_played_maps'); | ||||
| 		$this->settings->track_server_finishes = Tools::checkSetting($this->config, 'track_server_finishes'); | ||||
| 		 | ||||
| 		$this->settings->track_player_connects = Tools::checkSetting($this->config, 'track_player_connects'); | ||||
| 		$this->settings->track_player_playtime = Tools::checkSetting($this->config, 'track_player_playtime'); | ||||
| 		$this->settings->track_player_chats = Tools::checkSetting($this->config, 'track_player_chats'); | ||||
| 		$this->settings->track_player_finishes = Tools::checkSetting($this->config, 'track_player_finishes'); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle EndMap callback | ||||
| 	 */ | ||||
| 	public function handleEndMap($callback) { | ||||
| 		$multiquery = ""; | ||||
| 		 | ||||
| 		// Track played server maps | ||||
| 		if ($this->settings->track_server_played_maps) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_SERVER . "` ( | ||||
| 			`day`, | ||||
| 			`playedMaps` | ||||
| 			) VALUES ( | ||||
| 			CURDATE(), | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`playedMaps` = `playedMaps` + VALUES(`playedMaps`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Perform query | ||||
| 		if (!$this->mc->database->multiQuery($multiquery)) { | ||||
| 			trigger_error("Perform queries on end map failed."); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle PlayerChat callback | ||||
| 	 */ | ||||
| 	public function handlePlayerChat($callback) { | ||||
| 		if ($callback[1][0] <= 0) return; | ||||
| 		$multiquery = ""; | ||||
| 		$login = $callback[1][1]; | ||||
| 		 | ||||
| 		// Track chats | ||||
| 		if ($this->settings->track_player_chats) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_PLAYERS . "` ( | ||||
| 			`Login`, | ||||
| 			`chatCount` | ||||
| 			) VALUES ( | ||||
| 			'" . $this->mc->database->escape($login) . "', | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`chatCount` = `chatCount` + VALUES(`chatCount`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Perform query | ||||
| 		if (!$this->mc->database->multiQuery($multiquery)) { | ||||
| 			trigger_error("Perform queries on player chat failed."); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle PlayerConnect callback | ||||
| 	 */ | ||||
| 	public function handlePlayerConnect($callback) { | ||||
| 		$multiquery = ""; | ||||
| 		$login = $callback[1][0]; | ||||
| 		 | ||||
| 		// Track server connect | ||||
| 		if ($this->settings->track_server_connects) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_SERVER . "` ( | ||||
| 			`day`, | ||||
| 			`connectCount` | ||||
| 			) VALUES ( | ||||
| 			CURDATE(), | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`connectCount` = `connectCount` + VALUES(`connectCount`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Track server max players | ||||
| 		if ($this->settings->track_server_max_players) { | ||||
| 			$players = $this->mc->server->getPlayers(); | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_SERVER . "` ( | ||||
| 			`day`, | ||||
| 			`maxPlayerCount` | ||||
| 			) VALUES ( | ||||
| 			CURDATE(), | ||||
| 			" . count($players) . " | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`maxPlayerCount` = GREATEST(`maxPlayerCount`, VALUES(`maxPlayerCount`)) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Track player connect | ||||
| 		if ($this->settings->track_player_connects) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_PLAYERS . "` ( | ||||
| 			`Login`, | ||||
| 			`lastJoin`, | ||||
| 			`connectCount` | ||||
| 			) VALUES ( | ||||
| 			'" . $this->mc->database->escape($login) . "', | ||||
| 			NOW(), | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`lastJoin` = VALUES(`lastJoin`), | ||||
| 			`connectCount` = `connectCount` + VALUES(`connectCount`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Perform query | ||||
| 		if (!$this->mc->database->multiQuery($multiquery)) { | ||||
| 			trigger_error("Perform queries on player connect failed."); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle PlayerDisconnect callback | ||||
| 	 */ | ||||
| 	public function handlePlayerDisconnect($callback) { | ||||
| 		$multiquery = ""; | ||||
| 		$login = $callback[1][0]; | ||||
| 		 | ||||
| 		// Track player playtime | ||||
| 		if ($this->settings->track_player_playtime) { | ||||
| 			$query = "SELECT `lastJoin` FROM `" . self::TABLE_STATS_PLAYERS . "` | ||||
| 			WHERE `Login` = '" . $this->mc->database->escape($login) . "' | ||||
| 			;"; | ||||
| 			$result = $this->mc->database->query($query); | ||||
| 			if (!$result) { | ||||
| 				// Error | ||||
| 				trigger_error("Error selecting player join time from '" . $login . "'."); | ||||
| 			} | ||||
| 			else { | ||||
| 				// Add play time | ||||
| 				while ($row = $result->fetch_object()) { | ||||
| 					if (!property_exists($row, 'lastJoin')) continue; | ||||
| 					$lastJoin = strtotime($row->lastJoin); | ||||
| 					$lastJoin = ($lastJoin > $this->mc->startTime ? $lastJoin : $this->mc->startTime); | ||||
| 					$multiquery .= "INSERT INTO `" . self::TABLE_STATS_PLAYERS . "` ( | ||||
| 					`Login`, | ||||
| 					`playTime` | ||||
| 					) VALUES ( | ||||
| 					'" . $this->mc->database->escape($login) . "', | ||||
| 					TIMESTAMPDIFF(SECOND, '" . Tools::timeToTimestamp($lastJoin) . "', NOW()) | ||||
| 					) ON DUPLICATE KEY UPDATE | ||||
| 					`playTime` = `playTime` + VALUES(`playTime`) | ||||
| 					;"; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		// Perform query | ||||
| 		if (!$this->mc->database->multiQuery($multiquery)) { | ||||
| 			trigger_error("Perform queries on player connect failed."); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle the PlayerFinish callback | ||||
| 	 */ | ||||
| 	public function handlePlayerFinish($callback) { | ||||
| 		if ($callback[1][0] <= 0) return; | ||||
| 		if ($callback[1][2] <= 0) return; | ||||
| 		 | ||||
| 		$multiquery = ""; | ||||
| 		$login = $callback[1][1]; | ||||
| 		 | ||||
| 		// Track server finishes | ||||
| 		if ($this->settings->track_server_finishes) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_SERVER . "` ( | ||||
| 			`day`, | ||||
| 			`finishCount` | ||||
| 			) VALUES ( | ||||
| 			CURDATE(), | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`finishCount` = `finishCount` + VALUES(`finishCount`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Track player finishes | ||||
| 		if ($this->settings->track_player_finishes) { | ||||
| 			$multiquery .= "INSERT INTO `" . self::TABLE_STATS_PLAYERS . "` ( | ||||
| 			`Login`, | ||||
| 			`finishCount` | ||||
| 			) VALUES ( | ||||
| 			'" . $this->mc->database->escape($login) . "', | ||||
| 			1 | ||||
| 			) ON DUPLICATE KEY UPDATE | ||||
| 			`finishCount` = `finishCount` + VALUES(`finishCount`) | ||||
| 			;"; | ||||
| 		} | ||||
| 		 | ||||
| 		// Perform query | ||||
| 		if (!$this->mc->database->multiQuery($multiquery)) { | ||||
| 			trigger_error("Perform queries on player finish failed."); | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| ?> | ||||
		Reference in New Issue
	
	Block a user