Advertisement
Guest User

Untitled

a guest
Sep 6th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.60 KB | None | 0 0
  1. <cfcomponent displayname="core">
  2. <cffunction name="BlackListApp" access="public" returntype="void">
  3. <cfargument name="appID" type="numeric" required="yes">
  4. <cfset var loc = {}>
  5.  
  6. <cfquery name="loc.getAppIP" datasource="#GetDatasource()#">
  7. SELECT appIP
  8. FROM apps
  9. WHERE appID = #val(appID)#
  10. LIMIT 1
  11. </cfquery>
  12.  
  13. <cfquery name="loc.removeOther" datasource="#GetDatasource()#">
  14. DELETE FROM blacklist
  15. WHERE blAddress = '#loc.getAppIP.appIP#'
  16. </cfquery>
  17.  
  18. <cfquery name="loc.addNew" datasource="#GetDatasource()#">
  19. INSERT INTO blacklist (
  20. blAddress
  21. ) VALUES (
  22. '#loc.getAppIP.appIP#'
  23. )
  24. </cfquery>
  25.  
  26. <cfquery name="loc.updateStatus" datasource="#GetDatasource()#">
  27. UPDATE apps
  28. SET appStatus = 'Blacklisted'
  29. WHERE appID = #val(appID)#
  30. </cfquery>
  31.  
  32. </cffunction>
  33. <cffunction name="WhiteListApp" access="public" returntype="void">
  34. <cfargument name="appID" type="numeric" required="yes">
  35. <cfset var loc = {}>
  36.  
  37. <cfquery name="loc.getAppIP" datasource="#GetDatasource()#">
  38. SELECT appIP
  39. FROM apps
  40. WHERE appID = #val(appID)#
  41. LIMIT 1
  42. </cfquery>
  43.  
  44. <cfquery name="loc.removeOther" datasource="#GetDatasource()#">
  45. DELETE FROM blacklist
  46. WHERE blAddress = '#loc.getAppIP.appIP#'
  47. </cfquery>
  48.  
  49. <cfquery name="loc.updateStatus" datasource="#GetDatasource()#">
  50. UPDATE apps
  51. SET appStatus = 'Pending'
  52. WHERE appID = #val(appID)#
  53. </cfquery>
  54.  
  55. </cffunction>
  56. <cffunction name="LoadEmailForApp" access="public" returntype="array">
  57. <cfargument name="appID" type="numeric" required="yes">
  58. <cfset var loc = {}>
  59.  
  60. <cfquery name="loc.emails" datasource="#GetDatasource()#">
  61. SELECT *
  62. FROM apps_emails
  63. WHERE aeParent = #val(appID)#
  64. ORDER BY aeTimestamp ASC
  65. </cfquery>
  66.  
  67. <cfreturn QueryToArrayOfStruct(loc.emails)>
  68. </cffunction>
  69. <cffunction name="DeletePreset" access="public" returntype="void">
  70. <cfargument name="presetID" type="numeric" required="yes">
  71. <cfset var loc = {}>
  72.  
  73. <cfquery name="loc.del" datasource="#GetDatasource()#">
  74. DELETE FROM email_presets
  75. WHERE epID = #val(presetID)#
  76. </cfquery>
  77.  
  78. </cffunction>
  79. <cffunction name="AddEmailPreset" access="public" returntype="void">
  80. <cfargument name="args" type="struct" required="yes">
  81. <cfset var loc = {}>
  82.  
  83. <cfquery name="loc.add" datasource="#GetDatasource()#">
  84. INSERT INTO email_presets (
  85. epSubject,
  86. epContent
  87. ) VALUES (
  88. '#args.subject#',
  89. '#args.content#'
  90. )
  91. </cfquery>
  92.  
  93. </cffunction>
  94. <cffunction name="SaveEmailPreset" access="public" returntype="void">
  95. <cfargument name="args" type="struct" required="yes">
  96. <cfset var loc = {}>
  97.  
  98. <cfquery name="loc.update" datasource="#GetDatasource()#">
  99. UPDATE email_presets
  100. SET epSubject = '#args.subject#',
  101. epContent = '#args.content#'
  102. WHERE epID = #val(args.presetID)#
  103. </cfquery>
  104.  
  105. </cffunction>
  106. <cffunction name="AddEmailToApp" access="public" returntype="void">
  107. <cfargument name="args" type="struct" required="yes">
  108. <cfset var loc = {}>
  109.  
  110. <cfquery name="loc.newEmail" datasource="#GetDatasource()#">
  111. INSERT INTO apps_emails (
  112. aeParent,
  113. aeSubject,
  114. aeContent<cfif session.steam.loggedin>,
  115. aeSenderID,
  116. aeSenderName,
  117. aeSenderImage</cfif>
  118. ) VALUES (
  119. #val(args.appID)#,
  120. '#args.subject#',
  121. '#ParagraphFormat(args.content)#'<cfif session.steam.loggedin>,
  122. '#session.steam.id#',
  123. '#session.steam.user.steamID#',
  124. '#session.steam.user.avatarFull#'</cfif>
  125. )
  126. </cfquery>
  127.  
  128. </cffunction>
  129. <cffunction name="LoadEmailPreset" access="public" returntype="struct">
  130. <cfargument name="presetID" type="numeric" required="yes">
  131. <cfset var loc = {}>
  132.  
  133. <cfquery name="loc.preset" datasource="#GetDatasource()#">
  134. SELECT *
  135. FROM email_presets
  136. WHERE epID = #val(presetID)#
  137. </cfquery>
  138.  
  139. <cfreturn QueryToStruct(loc.preset)>
  140. </cffunction>
  141. <cffunction name="LoadEmailPresets" access="public" returntype="array">
  142. <cfset var loc = {}>
  143.  
  144. <cfquery name="loc.presets" datasource="#GetDatasource()#">
  145. SELECT *
  146. FROM email_presets
  147. </cfquery>
  148.  
  149. <cfreturn QueryToArrayOfStruct(loc.presets)>
  150. </cffunction>
  151. <cffunction name="LoadPendingMediaCounts" access="public" returntype="numeric">
  152. <cfset var loc = {}>
  153.  
  154. <cfquery name="loc.photos" datasource="#GetDatasource()#">
  155. SELECT COUNT(phID) AS PhotoCount
  156. FROM photos
  157. WHERE phActive = 0
  158. </cfquery>
  159.  
  160. <cfquery name="loc.videos" datasource="#GetDatasource()#">
  161. SELECT COUNT(vidID) AS VideoCount
  162. FROM videos
  163. WHERE vidActive = 0
  164. </cfquery>
  165.  
  166. <cfreturn val(loc.photos.PhotoCount + loc.videos.VideoCount)>
  167. </cffunction>
  168. <cffunction name="SendTemplatedEmail" access="public" returntype="void">
  169. <cfargument name="args" type="struct" required="yes">
  170. <cfset var loc = {}>
  171.  
  172. <cftry>
  173.  
  174. <cfmail
  175. from="#application.mail.from#"
  176. to="#args.recipient#"
  177. password="#application.mail.password#"
  178. server="#application.mail.server#"
  179. subject="#args.subject#"
  180. username="#application.mail.username#"
  181. type="html">
  182.  
  183. <cfoutput>
  184. <cffile action="read" file="#application.directory#\wwwroot\css\email.css" variable="emailStyles">
  185. <style>#emailStyles#</style>
  186. <div class="arcomm-email">
  187. <div class="arc_header">
  188. <center>
  189. <img src="#request.url#images/logo_white.png" class="arc_logo">
  190. </center>
  191. <!---<div class="arc_logo" style="background-image:url(#request.url#images/logo_white.png);"></div>--->
  192. <div class="arc_subject">#args.subject#</div>
  193. </div>
  194. <div class="arc_content">
  195. <center>
  196. <div class="arc_innerContent">#args.content#</div>
  197. </center>
  198. </div>
  199. <div class="arc_footer">
  200. <div class="arc_innerFooter">
  201. <a href="#request.url#">&copy; ARCOMM #Year(Now())#</a>
  202. </div>
  203. </div>
  204. </div>
  205. </cfoutput>
  206.  
  207. </cfmail>
  208.  
  209. <cfcatch type="any">
  210. <cfdump var="#cfcatch#" output="#application.directory#\data\logs\E#DateFormat(Now(), 'yyyymmdd')##TimeFormat(Now(), 'HHmmss')#.html" format="html">
  211. </cfcatch>
  212. </cftry>
  213.  
  214. </cffunction>
  215. <cffunction name="LoadSource" access="public" returntype="struct">
  216. <cfargument name="srcID" type="numeric" required="yes">
  217. <cfset var loc = {}>
  218.  
  219. <cfquery name="loc.source" datasource="#GetDatasource()#">
  220. SELECT *
  221. FROM sources
  222. WHERE srcID = #val(srcID)#
  223. LIMIT 1
  224. </cfquery>
  225.  
  226. <cfreturn QueryToStruct(loc.source)>
  227. </cffunction>
  228. <cffunction name="LoadSources" access="public" returntype="array">
  229. <cfset var loc = {}>
  230.  
  231. <cfquery name="loc.sources" datasource="#GetDatasource()#">
  232. SELECT *
  233. FROM sources
  234. ORDER BY srcTitle ASC
  235. </cfquery>
  236.  
  237. <cfreturn QueryToArrayOfStruct(loc.sources)>
  238. </cffunction>
  239. <cffunction name="LoadAppData" access="public" returntype="struct">
  240. <cfargument name="refYear" type="numeric" required="yes" default="-1">
  241. <cfargument name="refMonth" type="numeric" required="yes" default="-1">
  242. <cfset var loc = {}>
  243. <cfset loc.result = {
  244. keys = [],
  245. values = {}
  246. }>
  247.  
  248. <cfquery name="loc.apps" datasource="#GetDatasource()#">
  249. SELECT *
  250. FROM apps
  251. WHERE appID = appID
  252.  
  253. <cfif refYear gt -1>
  254. AND YEAR(appTimestamp) = #val(refYear)#
  255. </cfif>
  256.  
  257. <cfif refMonth gt -1>
  258. AND MONTH(appTimestamp) = #val(refMonth)#
  259. </cfif>
  260. </cfquery>
  261.  
  262. <cfset loc.query = QueryToArrayOfStruct(loc.apps)>
  263.  
  264. <cfloop array="#loc.query#" index="loc.item">
  265. <cfif NOT StructKeyExists(loc.result.values, loc.item.appSource)>
  266. <cfset ArrayAppend(loc.result.keys, LCase(loc.item.appSource))>
  267. <cfset StructInsert(loc.result.values, LCase(loc.item.appSource), {
  268. name = loc.item.appSource,
  269. count = 1
  270. })>
  271. <cfelse>
  272. <cfset loc.result.values[LCase(loc.item.appSource)].count++>
  273. </cfif>
  274. </cfloop>
  275.  
  276. <cfreturn loc.result>
  277. </cffunction>
  278. <cffunction name="DeleteAppComment" access="public" returntype="void">
  279. <cfargument name="comID" type="numeric" required="yes">
  280. <cfset var loc = {}>
  281.  
  282. <cfquery name="loc.del" datasource="#GetDatasource()#">
  283. DELETE FROM apps_comments
  284. WHERE acID = #val(comID)#
  285. AND acOwnerID = '#session.steam.id#'
  286. </cfquery>
  287.  
  288. </cffunction>
  289. <cffunction name="AddAppComment" access="public" returntype="void">
  290. <cfargument name="args" type="struct" required="yes">
  291. <cfset var loc = {}>
  292.  
  293. <cfquery name="loc.add" datasource="#GetDatasource()#">
  294. INSERT INTO apps_comments (
  295. acParent,
  296. acOwnerID,
  297. acOwnerName,
  298. acOwnerAvatar,
  299. acComment
  300. ) VALUES (
  301. #val(args.appID)#,
  302. '#session.steam.id#',
  303. '#session.steam.user.steamID#',
  304. '#session.steam.user.avatarFull#',
  305. '#args.comment#'
  306. )
  307. </cfquery>
  308.  
  309. </cffunction>
  310. <cffunction name="LoadAppComments" access="public" returntype="array">
  311. <cfargument name="appID" type="numeric" required="yes">
  312. <cfset var loc = {}>
  313. <cfset loc.result = []>
  314.  
  315. <cfquery name="loc.comments" datasource="#GetDatasource()#">
  316. SELECT *,
  317. (SELECT acsSeen FROM apps_comments_seen WHERE acsCommentID = acID) AS CommentSeen
  318. FROM apps_comments
  319. WHERE acParent = #val(appID)#
  320. ORDER BY acTimestamp ASC
  321. </cfquery>
  322.  
  323. <cfset loc.result = QueryToArrayOfStruct(loc.comments)>
  324.  
  325. <cfset loc.shouldSee = false>
  326. <cfloop array="#loc.result#" index="loc.item">
  327. <cfif loc.item.CommentSeen neq 1>
  328. <cfset loc.shouldSee = true>
  329. </cfif>
  330. </cfloop>
  331.  
  332. <cfif loc.shouldSee>
  333. <cfquery name="loc.updateSeen" datasource="#GetDatasource()#">
  334. INSERT INTO apps_comments_seen (
  335. acsUserID,
  336. acsCommentID
  337. ) VALUES
  338. <cfset loc.counter = 0>
  339. <cfloop array="#loc.result#" index="loc.item">
  340. <cfset loc.counter++>
  341. <cfif loc.item.CommentSeen neq 1>
  342. (
  343. '#session.steam.id#',
  344. #val(loc.item.acID)#
  345. )<cfif loc.counter neq ArrayLen(loc.result)>,</cfif>
  346. </cfif>
  347. </cfloop>
  348. </cfquery>
  349. </cfif>
  350.  
  351. <cfreturn loc.result>
  352. </cffunction>
  353. <cfscript>
  354. /*
  355. * Sorts an array of structures based on a key in the structures.
  356. *
  357. * @param aofS Array of structures. (Required)
  358. * @param key Key to sort by. (Required)
  359. * @param sortOrder Order to sort by, asc or desc. (Optional)
  360. * @param sortType Text, textnocase, or numeric. (Optional)
  361. * @param delim Delimiter used for temporary data storage. Must not exist in data. Defaults to a period. (Optional)
  362. * @return Returns a sorted array.
  363. * @author Nathan Dintenfass (nathan@changemedia.com)
  364. * @version 1, April 4, 2013
  365. */
  366. function arrayOfStructsSort(aOfS,key){
  367. var sortOrder = "asc";
  368. var sortType = "textnocase";
  369. var delim = ".";
  370. var sortArray = arraynew(1);
  371. var returnArray = arraynew(1);
  372. var count = arrayLen(aOfS);
  373. var ii = 1;
  374. if (arraylen(arguments) GT 2)
  375. sortOrder = arguments[3];
  376. if (arraylen(arguments) GT 3)
  377. sortType = arguments[4];
  378. if (arraylen(arguments) GT 4)
  379. delim = arguments[5];
  380. for (ii = 1; ii lte count; ii = ii + 1)
  381. sortArray[ii] = aOfS[ii][key] & delim & ii;
  382. arraySort(sortArray,sortType,sortOrder);
  383. for (ii = 1; ii lte count; ii = ii + 1)
  384. returnArray[ii] = aOfS[listLast(sortArray[ii],delim)];
  385. return returnArray;
  386. }
  387. </cfscript>
  388. <cffunction name="ArchiveMod" access="public" returntype="void">
  389. <cfargument name="modID" type="numeric" required="yes">
  390. <cfset var loc = {}>
  391.  
  392. <cfquery name="loc.update" datasource="#GetDatasource()#">
  393. UPDATE mods
  394. SET modStatus = 'Archived'
  395. WHERE modID = #val(modID)#
  396. </cfquery>
  397.  
  398. </cffunction>
  399. <cffunction name="DeleteMod" access="public" returntype="void">
  400. <cfargument name="modID" type="numeric" required="yes">
  401. <cfset var loc = {}>
  402.  
  403. <cfquery name="loc.check" datasource="#GetDatasource()#">
  404. SELECT modOwner
  405. FROM mods
  406. WHERE modID = #val(modID)#
  407. LIMIT 1
  408. </cfquery>
  409.  
  410. <cfif loc.check.recordcount gt 0>
  411. <cfif loc.check.modOwner eq session.steam.id>
  412. <cfquery name="loc.delete" datasource="#GetDatasource()#">
  413. DELETE FROM mods
  414. WHERE modID = #val(modID)#
  415. </cfquery>
  416. </cfif>
  417. </cfif>
  418.  
  419. </cffunction>
  420. <cffunction name="AddMod" access="public" returntype="void">
  421. <cfargument name="args" type="struct" required="yes">
  422. <cfset var loc = {}>
  423.  
  424. <cfquery name="loc.add" datasource="#GetDatasource()#">
  425. INSERT INTO mods (
  426. modOwner,
  427. modOwnerName,
  428. modName,
  429. modLink,
  430. modSummary
  431. ) VALUES (
  432. '#session.steam.id#',
  433. '#session.steam.user.steamID#',
  434. '#args.title#',
  435. '#args.link#',
  436. '#args.summary#'
  437. )
  438. </cfquery>
  439.  
  440. </cffunction>
  441. <cffunction name="UserModVote" access="public" returntype="string">
  442. <cfargument name="modID" type="numeric" required="yes">
  443. <cfset var loc = {}>
  444.  
  445. <cfquery name="loc.check" datasource="#GetDatasource()#">
  446. SELECT mvValue
  447. FROM mods_votes
  448. WHERE mvParent = #val(modID)#
  449. AND mvOwner = '#session.steam.id#'
  450. LIMIT 1
  451. </cfquery>
  452.  
  453. <cfif loc.check.recordcount is 1>
  454. <cfif loc.check.mvValue gt 0>
  455. <cfreturn "up">
  456. <cfelse>
  457. <cfreturn "down">
  458. </cfif>
  459. <cfelse>
  460. <cfreturn "none">
  461. </cfif>
  462.  
  463. </cffunction>
  464. <cffunction name="DownVoteMod" access="public" returntype="void">
  465. <cfargument name="modID" type="numeric" required="yes">
  466. <cfset var loc = {}>
  467.  
  468. <cfquery name="loc.del" datasource="#GetDatasource()#">
  469. DELETE FROM mods_votes
  470. WHERE mvParent = #val(modID)#
  471. AND mvOwner = '#session.steam.id#'
  472. </cfquery>
  473.  
  474. <cfquery name="loc.new" datasource="#GetDatasource()#">
  475. INSERT INTO mods_votes (
  476. mvParent,
  477. mvOwner,
  478. mvValue
  479. ) VALUES (
  480. #val(modID)#,
  481. '#session.steam.id#',
  482. -1
  483. )
  484. </cfquery>
  485.  
  486. </cffunction>
  487. <cffunction name="UpVoteMod" access="public" returntype="void">
  488. <cfargument name="modID" type="numeric" required="yes">
  489. <cfset var loc = {}>
  490.  
  491. <cfquery name="loc.del" datasource="#GetDatasource()#">
  492. DELETE FROM mods_votes
  493. WHERE mvParent = #val(modID)#
  494. AND mvOwner = '#session.steam.id#'
  495. </cfquery>
  496.  
  497. <cfquery name="loc.new" datasource="#GetDatasource()#">
  498. INSERT INTO mods_votes (
  499. mvParent,
  500. mvOwner,
  501. mvValue
  502. ) VALUES (
  503. #val(modID)#,
  504. '#session.steam.id#',
  505. 1
  506. )
  507. </cfquery>
  508.  
  509. </cffunction>
  510. <cffunction name="LoadModPoints" access="public" returntype="numeric">
  511. <cfargument name="modID" type="numeric" required="yes">
  512. <cfset var loc = {}>
  513.  
  514. <cfquery name="loc.points" datasource="#GetDatasource()#">
  515. SELECT SUM(mvValue) AS modVotes
  516. FROM mods_votes
  517. WHERE mvParent = #val(modID)#
  518. </cfquery>
  519.  
  520. <cfreturn val(loc.points.modVotes)>
  521. </cffunction>
  522. <cffunction name="LoadModSuggestions" access="public" returntype="array">
  523. <cfargument name="status" type="string" required="no" default="Active">
  524. <cfargument name="order" type="string" required="no" default="votes">
  525. <cfargument name="count" type="numeric" required="no" default="10">
  526. <cfset var loc = {}>
  527.  
  528. <cfquery name="loc.suggestions" datasource="#GetDatasource()#">
  529. SELECT *,
  530. ( SELECT SUM(mvValue) FROM mods_votes WHERE mvParent = modID ) AS modVotes
  531. FROM mods
  532. WHERE modStatus = '#status#'
  533. <cfswitch expression="#order#">
  534. <cfcase value="votes">
  535. ORDER BY modVotes DESC
  536. </cfcase>
  537.  
  538. <cfcase value="timestamp">
  539. ORDER BY modTimestamp DESC
  540. </cfcase>
  541. </cfswitch>
  542. LIMIT #val(count)#
  543. </cfquery>
  544.  
  545. <cfreturn QueryToArrayOfStruct(loc.suggestions)>
  546. </cffunction>
  547. <cffunction name="LoadNavByName" access="public" returntype="struct">
  548. <cfargument name="navName" type="string" required="yes">
  549. <cfset var loc = {}>
  550.  
  551. <cfquery name="loc.navGet" datasource="#GetDatasource()#">
  552. SELECT *
  553. FROM nav
  554. WHERE navTitle = '#navName#'
  555. LIMIT 1
  556. </cfquery>
  557.  
  558. <cfset loc.nav = QueryToStruct(loc.navGet)>
  559.  
  560. <cfquery name="loc.items" datasource="#GetDatasource()#">
  561. SELECT navItems.*, pages.*
  562. FROM navItems, pages
  563. WHERE niNav = #val(loc.nav.navID)#
  564. AND niPage = pgID
  565. AND pgActive = 'Yes'
  566. ORDER BY niOrder ASC
  567. </cfquery>
  568.  
  569. <cfset loc.nav.items = QueryToArrayOfStruct(loc.items)>
  570.  
  571. <cfreturn loc.nav>
  572. </cffunction>
  573. <cffunction name="IsBlacklisted" access="public" returntype="boolean">
  574. <cfargument name="IP" type="string" required="yes">
  575. <cfset var loc = {}>
  576.  
  577. <cfquery name="loc.check" datasource="#GetDatasource()#">
  578. SELECT *
  579. FROM blacklist
  580. WHERE blAddress = '#IP#'
  581. LIMIT 1
  582. </cfquery>
  583.  
  584. <cfif loc.check.recordcount is 1>
  585. <cfreturn true>
  586. <cfelse>
  587. <cfreturn false>
  588. </cfif>
  589.  
  590. </cffunction>
  591. <cffunction name="ApproveApp" access="public" returntype="void">
  592. <cfargument name="appID" type="numeric" required="yes">
  593. <cfset var loc = {}>
  594. <cfset loc.app = LoadAppByID(appID)>
  595.  
  596. <cfobject component="code/steam" name="loc.steam">
  597.  
  598. <cfif loc.steam.IsUserAdmin()>
  599. <cfquery name="loc.update" datasource="#GetDatasource()#">
  600. UPDATE apps
  601. SET appStatus = 'Approved'
  602. WHERE appID = #val(appID)#
  603. </cfquery>
  604.  
  605. <cfset loc.approvedPreset = LoadEmailPreset(7)>
  606.  
  607. <cfmail
  608. from="#application.mail.from#"
  609. to="#loc.app.appEmail#"
  610. password="#application.mail.password#"
  611. server="#application.mail.server#"
  612. subject="[ARCOMM] #loc.approvedPreset.epSubject#"
  613. username="#application.mail.username#"
  614. type="html">
  615.  
  616. <cfoutput>
  617. #loc.approvedPreset.epContent#
  618. </cfoutput>
  619.  
  620. </cfmail>
  621.  
  622. <cfset AddEmailToApp({
  623. "appID" = val(appID),
  624. "subject" = "#loc.approvedPreset.epSubject#",
  625. "content" = "#loc.approvedPreset.epContent#"
  626. })>
  627. </cfif>
  628.  
  629. </cffunction>
  630. <cffunction name="PendingApp" access="public" returntype="void">
  631. <cfargument name="appID" type="numeric" required="yes">
  632. <cfset var loc = {}>
  633.  
  634. <cfobject component="code/steam" name="loc.steam">
  635.  
  636. <cfif loc.steam.IsUserAdmin()>
  637. <cfquery name="loc.update" datasource="#GetDatasource()#">
  638. UPDATE apps
  639. SET appStatus = 'Pending'
  640. WHERE appID = #val(appID)#
  641. </cfquery>
  642. </cfif>
  643.  
  644. </cffunction>
  645. <cffunction name="DeclineApp" access="public" returntype="void">
  646. <cfargument name="appID" type="numeric" required="yes">
  647. <cfset var loc = {}>
  648. <cfset loc.app = LoadAppByID(appID)>
  649.  
  650. <cfobject component="code/steam" name="loc.steam">
  651.  
  652. <cfif loc.steam.IsUserAdmin()>
  653. <cfquery name="loc.update" datasource="#GetDatasource()#">
  654. UPDATE apps
  655. SET appStatus = 'Declined'
  656. WHERE appID = #val(appID)#
  657. </cfquery>
  658.  
  659. <cfset loc.declinedPreset = LoadEmailPreset(8)>
  660.  
  661. <cfmail
  662. from="#application.mail.from#"
  663. to="#loc.app.appEmail#"
  664. password="#application.mail.password#"
  665. server="#application.mail.server#"
  666. subject="[ARCOMM] #loc.declinedPreset.epSubject#"
  667. username="#application.mail.username#"
  668. type="html">
  669.  
  670. <cfoutput>
  671. #loc.declinedPreset.epContent#
  672. </cfoutput>
  673.  
  674. </cfmail>
  675.  
  676. <cfset AddEmailToApp({
  677. "appID" = val(appID),
  678. "subject" = "#loc.declinedPreset.epSubject#",
  679. "content" = "#loc.declinedPreset.epContent#"
  680. })>
  681. </cfif>
  682.  
  683. </cffunction>
  684. <cffunction name="LoadAppByPublicToken" access="public" returntype="struct">
  685. <cfargument name="appID" type="string" required="yes">
  686. <cfset var loc = {}>
  687.  
  688. <cfquery name="loc.app" datasource="#GetDatasource()#">
  689. SELECT *
  690. FROM apps
  691. WHERE appPublicToken = '#appID#'
  692. LIMIT 1
  693. </cfquery>
  694.  
  695. <cfreturn QueryToStruct(loc.app)>
  696. </cffunction>
  697. <cffunction name="LoadAppByID" access="public" returntype="struct">
  698. <cfargument name="appID" type="numeric" required="yes">
  699. <cfset var loc = {}>
  700.  
  701. <cfquery name="loc.app" datasource="#GetDatasource()#">
  702. SELECT *
  703. FROM apps
  704. WHERE appID = #val(appID)#
  705. LIMIT 1
  706. </cfquery>
  707.  
  708. <cfreturn QueryToStruct(loc.app)>
  709. </cffunction>
  710. <cffunction name="LoadApp" access="public" returntype="struct">
  711. <cfargument name="appID" type="string" required="yes">
  712. <cfset var loc = {}>
  713.  
  714. <cfquery name="loc.app" datasource="#GetDatasource()#">
  715. SELECT *
  716. FROM apps
  717. WHERE appToken = '#appID#'
  718. LIMIT 1
  719. </cfquery>
  720.  
  721. <cfreturn QueryToStruct(loc.app)>
  722. </cffunction>
  723. <cffunction name="LoadApplicationCounts" access="public" returntype="struct">
  724. <cfset var loc = {}>
  725. <cfset loc.pending = 0>
  726. <cfset loc.approved = 0>
  727. <cfset loc.declined = 0>
  728.  
  729. <cfquery name="loc.pending" datasource="#GetDatasource()#">
  730. SELECT COUNT(*) AS appCount
  731. FROM apps
  732. WHERE appStatus = 'Pending'
  733. </cfquery>
  734.  
  735. <cfset loc.pending = val(loc.pending.appCount)>
  736.  
  737. <cfquery name="loc.approved" datasource="#GetDatasource()#">
  738. SELECT COUNT(*) AS appCount
  739. FROM apps
  740. WHERE appStatus = 'Approved'
  741. </cfquery>
  742.  
  743. <cfset loc.approved = val(loc.approved.appCount)>
  744.  
  745. <cfquery name="loc.declined" datasource="#GetDatasource()#">
  746. SELECT COUNT(*) AS appCount
  747. FROM apps
  748. WHERE appStatus = 'Declined'
  749. </cfquery>
  750.  
  751. <cfset loc.declined = val(loc.declined.appCount)>
  752.  
  753. <cfquery name="loc.blacklisted" datasource="#GetDatasource()#">
  754. SELECT COUNT(*) AS ipCount
  755. FROM blacklist
  756. </cfquery>
  757.  
  758. <cfset loc.blacklisted = val(loc.blacklisted.ipCount)>
  759.  
  760. <cfreturn {
  761. "pending" = loc.pending,
  762. "approved" = loc.approved,
  763. "declined" = loc.declined,
  764. "blacklisted" = loc.blacklisted
  765. }>
  766. </cffunction>
  767. <cffunction name="LoadNewCommentCount" access="public" returntype="numeric">
  768. <cfargument name="appID" type="numeric" required="yes">
  769. <cfset var loc = {}>
  770.  
  771. <cfquery name="loc.comments" datasource="#GetDatasource()#">
  772. SELECT acID
  773. FROM apps_comments
  774. WHERE acParent = #val(appID)#
  775. AND NOT EXISTS (SELECT acsCommentID FROM apps_comments_seen WHERE acsUserID = '#session.steam.id#' AND acsCommentID = acID)
  776. </cfquery>
  777.  
  778. <cfreturn val(loc.comments.recordcount)>
  779. </cffunction>
  780. <cffunction name="LoadApplications" access="public" returntype="struct">
  781. <cfargument name="order" type="string" required="no" default="oldest">
  782. <cfset var loc = {}>
  783. <cfset loc.pending = []>
  784. <cfset loc.approved = []>
  785. <cfset loc.declined = []>
  786. <cfset loc.blacklisted = []>
  787.  
  788. <cfquery name="loc.pending" datasource="#GetDatasource()#">
  789. SELECT *
  790. FROM apps
  791. WHERE appStatus = 'Pending'
  792. ORDER BY appTimestamp <cfif order eq "oldest">ASC<cfelse>DESC</cfif>
  793. </cfquery>
  794.  
  795. <cfset loc.pending = QueryToArrayOfStruct(loc.pending)>
  796.  
  797. <cfquery name="loc.approved" datasource="#GetDatasource()#">
  798. SELECT *
  799. FROM apps
  800. WHERE appStatus = 'Approved'
  801. ORDER BY appTimestamp <cfif order eq "oldest">ASC<cfelse>DESC</cfif>
  802. </cfquery>
  803.  
  804. <cfset loc.approved = QueryToArrayOfStruct(loc.approved)>
  805.  
  806. <cfquery name="loc.declined" datasource="#GetDatasource()#">
  807. SELECT *
  808. FROM apps
  809. WHERE appStatus = 'Declined'
  810. ORDER BY appTimestamp <cfif order eq "oldest">ASC<cfelse>DESC</cfif>
  811. </cfquery>
  812.  
  813. <cfset loc.declined = QueryToArrayOfStruct(loc.declined)>
  814.  
  815. <cfquery name="loc.blacklisted" datasource="#GetDatasource()#">
  816. SELECT *
  817. FROM apps, blacklist
  818. WHERE appIP = blAddress
  819. ORDER BY appTimestamp <cfif order eq "oldest">ASC<cfelse>DESC</cfif>
  820. </cfquery>
  821.  
  822. <cfset loc.blacklisted = QueryToArrayOfStruct(loc.blacklisted)>
  823.  
  824. <cfreturn {
  825. "pending" = loc.pending,
  826. "approved" = loc.approved,
  827. "declined" = loc.declined,
  828. "blacklisted" = loc.blacklisted
  829. }>
  830. </cffunction>
  831. <cffunction name="AddApplication" access="public" returntype="string">
  832. <cfargument name="args" type="struct" required="yes">
  833. <cfset var loc = {}>
  834. <cfset loc.token = CreateUUID()>
  835. <cfset loc.pubtoken = CreateUUID()>
  836.  
  837. <cfquery name="loc.addApp" datasource="#GetDatasource()#" result="loc.addApp_result">
  838. INSERT INTO apps (
  839. appIP,
  840. appName,
  841. appAge,
  842. appCountry,
  843. appEmail,
  844. appSteam,
  845. appAvailable,
  846. appExperience,
  847. appGroups,
  848. appApex,
  849. appBio,
  850. appToken,
  851. appPublicToken,
  852. appSource<cfif Len(args.sourceData)>,
  853. appSourceData</cfif>
  854. ) VALUES (
  855. '#args.ip#',
  856. <cfqueryparam value="#args.userName#" cfsqltype="cf_sql_varchar">,
  857. <cfqueryparam value="#args.userAge#" cfsqltype="cf_sql_varchar">,
  858. <cfqueryparam value="#args.country#" cfsqltype="cf_sql_varchar">,
  859. <cfqueryparam value="#args.emailAddress#" cfsqltype="cf_sql_varchar">,
  860. <cfqueryparam value="#args.steamAccount#" cfsqltype="cf_sql_varchar">,
  861. <cfqueryparam value="#args.available#" cfsqltype="cf_sql_varchar">,
  862. <cfqueryparam value="#ParagraphFormat(args.armaExperience)#" cfsqltype="CF_SQL_LONGVARCHAR">,
  863. <cfqueryparam value="#args.otherGroups#" cfsqltype="cf_sql_varchar">,
  864. <cfqueryparam value="#args.apex#" cfsqltype="cf_sql_varchar">,
  865. <cfqueryparam value="#ParagraphFormat(args.bio)#" cfsqltype="CF_SQL_LONGVARCHAR">,
  866. '#loc.token#',
  867. '#loc.pubtoken#',
  868. <cfqueryparam value="#LoadSource(args.source).srcID#" cfsqltype="cf_sql_varchar"><cfif Len(args.sourceData)>,
  869. <cfqueryparam value="#args.sourceData#" cfsqltype="cf_sql_varchar"></cfif>
  870. )
  871. </cfquery>
  872.  
  873. <cfset loc.approvedPreset = LoadEmailPreset(10)>
  874.  
  875. <cfmail
  876. from="#application.mail.from#"
  877. to="#args.emailAddress#"
  878. password="#application.mail.password#"
  879. server="#application.mail.server#"
  880. subject="[ARCOMM] #loc.approvedPreset.epSubject#"
  881. username="#application.mail.username#"
  882. type="html">
  883.  
  884. <cfoutput>
  885. #loc.approvedPreset.epContent#
  886. </cfoutput>
  887.  
  888. </cfmail>
  889.  
  890. <cfset AddEmailToApp({
  891. appID = loc.addApp_result.generatedKey,
  892. subject = "#loc.approvedPreset.epSubject#",
  893. content = "#loc.approvedPreset.epContent#"
  894. })>
  895.  
  896. <cfreturn loc.token>
  897. </cffunction>
  898. <cffunction name="LoadNav" access="public" returntype="array">
  899. <cfset var loc = {}>
  900. <cfset loc.result = []>
  901.  
  902. <cfquery name="loc.nav" datasource="#GetDatasource()#">
  903. SELECT *
  904. FROM nav
  905. </cfquery>
  906.  
  907. <cfloop query="loc.nav">
  908. <cfset loc.header = {}>
  909. <cfset loc.header.id = navID>
  910. <cfset loc.header.title = navTitle>
  911. <cfquery name="loc.items" datasource="#GetDatasource()#">
  912. SELECT navItems.*, pages.*
  913. FROM navItems, pages
  914. WHERE niNav = #val(loc.header.id)#
  915. AND niPage = pgID
  916. AND pgActive = 'Yes'
  917. ORDER BY niOrder ASC
  918. </cfquery>
  919. <cfset loc.header.items = QueryToArrayOfStruct(loc.items)>
  920. <cfset ArrayAppend(loc.result, loc.header)>
  921. </cfloop>
  922.  
  923. <cfreturn loc.result>
  924. </cffunction>
  925. <cffunction name="LoadPage" access="public" returntype="struct">
  926. <cfargument name="pageUrl" type="string" required="yes">
  927. <cfset var loc = {}>
  928.  
  929. <cfquery name="loc.page" datasource="#GetDatasource()#">
  930. SELECT *
  931. FROM pages
  932. WHERE pgUrl = <cfqueryparam value="#arguments.pageUrl#" cfsqltype="cf_sql_varchar">
  933. AND pgActive = 'Yes'
  934. AND pgLevel >= <cfqueryparam value="#session.visitor.user.level#" cfsqltype="cf_sql_integer">
  935. </cfquery>
  936.  
  937. <cfif loc.page.recordcount gt 0>
  938. <cfobject component="code/steam" name="loc.steam">
  939. <cfif loc.page.pgMemberOnly AND NOT loc.steam.IsUserInGroup()>
  940. <cflocation url="#request.url#" addtoken="no">
  941. <cfreturn {}>
  942. <cfelse>
  943. <cfreturn QueryToStruct(loc.page)>
  944. </cfif>
  945. <cfelse>
  946. <cflocation url="#request.url#" addtoken="no">
  947. <cfreturn {}>
  948. </cfif>
  949.  
  950. </cffunction>
  951. <cffunction name="QueryToStruct" access="public" returntype="struct">
  952. <cfargument name="queryname" type="query" required="yes">
  953. <cfset var loc = {}>
  954. <cfset loc.qStruct = {}>
  955. <cfset loc.columns = queryname.columnlist>
  956.  
  957. <cfloop query="queryname">
  958. <cfset loc.qStruct = {}>
  959. <cfloop list="#loc.columns#" index="colName">
  960. <cfset StructInsert(loc.qStruct, colName, StructFind(queryname, colName))>
  961. </cfloop>
  962. </cfloop>
  963.  
  964. <cfreturn loc.qStruct>
  965. </cffunction>
  966. <cffunction name="QueryToArrayOfStruct" access="public" returntype="array">
  967. <cfargument name="queryname" type="query" required="yes">
  968. <cfset var loc = {}>
  969. <cfset loc.qArray = []>
  970. <cfset loc.columns = queryname.columnlist>
  971.  
  972. <cfloop query="queryname">
  973. <cfset loc.qStruct = {}>
  974. <cfloop list="#loc.columns#" index="colName">
  975. <cfset loc.fndValue = StructFind(queryname,colName)>
  976. <cfset StructInsert(loc.qStruct, colName, loc.fndValue)>
  977. </cfloop>
  978. <cfset ArrayAppend(loc.qArray, StructCopy(loc.qStruct))>
  979. </cfloop>
  980.  
  981. <cfreturn loc.qArray>
  982. </cffunction>
  983. <cffunction name="VerifyEncryptedString" access="public" returntype="boolean">
  984. <cfargument name="stringToTest" type="string" required="yes">
  985. <cfargument name="originalString" type="binary" required="yes">
  986. <cfset var loc = {}>
  987.  
  988. <cfquery name="loc.Encrypt" datasource="#GetDatasource()#">
  989. SELECT (DES_ENCRYPT("#stringToTest#")) AS EncryptedString
  990. </cfquery>
  991.  
  992. <cfif toString(loc.Encrypt.EncryptedString) eq toString(originalString)>
  993. <cfreturn true>
  994. <cfelse>
  995. <cfreturn false>
  996. </cfif>
  997. </cffunction>
  998. <cffunction name="GetDatasource" access="public" returntype="any">
  999. <cfreturn application.site.datasource>
  1000. </cffunction>
  1001. <cffunction name="ConvertXmlToStruct" access="public" returntype="struct" output="true"
  1002. hint="Parse raw XML response body into ColdFusion structs and arrays and return it.">
  1003. <cfargument name="xmlNode" type="string" required="true" />
  1004. <cfargument name="str" type="struct" required="true" />
  1005. <!---Setup local variables for recurse: --->
  1006. <cfset var i = 0 />
  1007. <cfset var axml = arguments.xmlNode />
  1008. <cfset var astr = arguments.str />
  1009. <cfset var n = "" />
  1010. <cfset var tmpContainer = "" />
  1011.  
  1012. <cfset axml = XmlSearch(XmlParse(arguments.xmlNode),"/node()")>
  1013. <cfset axml = axml[1] />
  1014. <!--- For each children of context node: --->
  1015. <cfloop from="1" to="#arrayLen(axml.XmlChildren)#" index="i">
  1016. <!--- Read XML node name without namespace: --->
  1017. <cfset n = replace(axml.XmlChildren[i].XmlName, axml.XmlChildren[i].XmlNsPrefix&":", "") />
  1018. <!--- If key with that name exists within output struct ... --->
  1019. <cfif structKeyExists(astr, n)>
  1020. <!--- ... and is not an array... --->
  1021. <cfif not isArray(astr[n])>
  1022. <!--- ... get this item into temp variable, ... --->
  1023. <cfset tmpContainer = astr[n] />
  1024. <!--- ... setup array for this item beacuse we have multiple items with same name, ... --->
  1025. <cfset astr[n] = arrayNew(1) />
  1026. <!--- ... and reassing temp item as a first element of new array: --->
  1027. <cfset astr[n][1] = tmpContainer />
  1028. <cfelse>
  1029. <!--- Item is already an array: --->
  1030.  
  1031. </cfif>
  1032. <cfif arrayLen(axml.XmlChildren[i].XmlChildren) gt 0>
  1033. <!--- recurse call: get complex item: --->
  1034. <cfset astr[n][arrayLen(astr[n])+1] = ConvertXmlToStruct(axml.XmlChildren[i], structNew()) />
  1035. <cfelse>
  1036. <!--- else: assign node value as last element of array: --->
  1037. <cfset astr[n][arrayLen(astr[n])+1] = axml.XmlChildren[i].XmlText />
  1038. </cfif>
  1039. <cfelse>
  1040. <!---
  1041. This is not a struct. This may be first tag with some name.
  1042. This may also be one and only tag with this name.
  1043. --->
  1044. <!---
  1045. If context child node has child nodes (which means it will be complex type): --->
  1046. <cfif arrayLen(axml.XmlChildren[i].XmlChildren) gt 0>
  1047. <!--- recurse call: get complex item: --->
  1048. <cfset astr[n] = ConvertXmlToStruct(axml.XmlChildren[i], structNew()) />
  1049. <cfelse>
  1050. <cfif IsStruct(aXml.XmlAttributes) AND StructCount(aXml.XmlAttributes)>
  1051. <cfset at_list = StructKeyList(aXml.XmlAttributes)>
  1052. <cfloop from="1" to="#listLen(at_list)#" index="atr">
  1053. <cfif ListgetAt(at_list,atr) CONTAINS "xmlns:">
  1054. <!--- remove any namespace attributes--->
  1055. <cfset Structdelete(axml.XmlAttributes, listgetAt(at_list,atr))>
  1056. </cfif>
  1057. </cfloop>
  1058. <!--- if there are any atributes left, append them to the response--->
  1059. <cfif StructCount(axml.XmlAttributes) GT 0>
  1060. <cfset astr['_attributes'] = axml.XmlAttributes />
  1061. </cfif>
  1062. </cfif>
  1063. <!--- else: assign node value as last element of array: --->
  1064. <!--- if there are any attributes on this element--->
  1065. <cfif IsStruct(aXml.XmlChildren[i].XmlAttributes) AND StructCount(aXml.XmlChildren[i].XmlAttributes) GT 0>
  1066. <!--- assign the text --->
  1067. <cfset astr[n] = axml.XmlChildren[i].XmlText />
  1068. <!--- check if there are no attributes with xmlns: , we dont want namespaces to be in the response--->
  1069. <cfset attrib_list = StructKeylist(axml.XmlChildren[i].XmlAttributes) />
  1070. <cfloop from="1" to="#listLen(attrib_list)#" index="attrib">
  1071. <cfif ListgetAt(attrib_list,attrib) CONTAINS "xmlns:">
  1072. <!--- remove any namespace attributes--->
  1073. <cfset Structdelete(axml.XmlChildren[i].XmlAttributes, listgetAt(attrib_list,attrib))>
  1074. </cfif>
  1075. </cfloop>
  1076. <!--- if there are any atributes left, append them to the response--->
  1077. <cfif StructCount(axml.XmlChildren[i].XmlAttributes) GT 0>
  1078. <cfset astr[n&'_attributes'] = axml.XmlChildren[i].XmlAttributes />
  1079. </cfif>
  1080. <cfelse>
  1081. <cfset astr[n] = axml.XmlChildren[i].XmlText />
  1082. </cfif>
  1083. </cfif>
  1084. </cfif>
  1085. </cfloop>
  1086. <!--- return struct: --->
  1087. <cfreturn astr />
  1088. </cffunction>
  1089. <cffunction name="CalculateEasyDateTime" access="public" returntype="string">
  1090. <cfargument name="testDateTime" type="string" required="yes">
  1091. <cfset var result="Just now">
  1092. <cfset var currentDateTime=now()>
  1093. <cfset var difference=DateDiff("s", testDateTime, currentDateTime)>
  1094. <cfif difference gt 0>
  1095. <cfset result="Just now">
  1096. </cfif>
  1097. <cfif difference gt 1>
  1098. <cfset result="1 second ago">
  1099. </cfif>
  1100. <!---SECONDS--->
  1101. <cfif difference gte 2 and difference lte 59>
  1102. <cfset result="#difference# seconds ago">
  1103. </cfif>
  1104. <!---MINUTES--->
  1105. <cfif difference gte 60>
  1106. <cfset result="1 minute ago">
  1107. </cfif>
  1108. <cfif difference gte 120 and difference lte 3599>
  1109. <cfset result="#NumberFormat(difference/60)# minutes ago">
  1110. </cfif>
  1111. <!---HOURS--->
  1112. <cfif difference gte 3600>
  1113. <cfset result="1 hour ago">
  1114. </cfif>
  1115. <cfif difference gte 7200 and difference lte 86399>
  1116. <cfset result="#NumberFormat(difference/3600)# hours ago">
  1117. </cfif>
  1118. <!---DAYS--->
  1119. <cfif difference gte 86400>
  1120. <cfset result="1 day ago">
  1121. </cfif>
  1122. <cfif difference gte 172800 and difference lte 604799>
  1123. <cfset result="#NumberFormat(difference/86400)# days ago">
  1124. </cfif>
  1125. <!---WEEKS--->
  1126. <cfif difference gte 604800>
  1127. <cfset result="1 week ago">
  1128. </cfif>
  1129. <cfif difference gte 1209600 and difference lte 2419199>
  1130. <cfset result="#NumberFormat(difference/604800)# weeks ago">
  1131. </cfif>
  1132. <!---TOO LONG--->
  1133. <cfif difference gte 2419200>
  1134. <cfset result="#DateFormat(testDateTime, 'd mmm YYYY')#">
  1135. </cfif>
  1136. <cfreturn result>
  1137. </cffunction>
  1138. </cfcomponent>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement