PageRenderTime 53ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/legacy/code/user/circles.php

https://github.com/michaelchisari/appleseed
PHP | 379 lines | 221 code | 80 blank | 78 comment | 57 complexity | 8a6ccb99fff21ec7fb34dc6e190d3b1d MD5 | raw file
  1. <?php
  2. // +-------------------------------------------------------------------+
  3. // | Appleseed Web Community Management Software |
  4. // | http://appleseed.sourceforge.net |
  5. // +-------------------------------------------------------------------+
  6. // | FILE: circles.php CREATED: 01-01-2005 +
  7. // | LOCATION: /code/user/ MODIFIED: 04-11-2007 +
  8. // +-------------------------------------------------------------------+
  9. // | Copyright (c) 2004-2008 Appleseed Project |
  10. // +-------------------------------------------------------------------+
  11. // | This program is free software; you can redistribute it and/or |
  12. // | modify it under the terms of the GNU General Public License |
  13. // | as published by the Free Software Foundation; either version 2 |
  14. // | of the License, or (at your option) any later version. |
  15. // | |
  16. // | This program is distributed in the hope that it will be useful, |
  17. // | but WITHOUT ANY WARRANTY; without even the implied warranty of |
  18. // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
  19. // | GNU General Public License for more details. |
  20. // | |
  21. // | You should have received a copy of the GNU General Public License |
  22. // | along with this program; if not, write to: |
  23. // | |
  24. // | The Free Software Foundation, Inc. |
  25. // | 59 Temple Place - Suite 330, |
  26. // | Boston, MA 02111-1307, USA. |
  27. // | |
  28. // | http://www.gnu.org/copyleft/gpl.html |
  29. // +-------------------------------------------------------------------+
  30. // | AUTHORS: Michael Chisari <michael.chisari@gmail.com> |
  31. // +-------------------------------------------------------------------+
  32. // | VERSION: 0.7.9 |
  33. // | DESCRIPTION: Displays circles section of user profile page. |
  34. // | WRAPPED BY: /code/user/main.php |
  35. // +-------------------------------------------------------------------+
  36. // Include necessary files
  37. require_once ('legacy/code/include/classes/friends.php');
  38. // Check if user has necessary access to this page.
  39. if ($gFOCUSUSERID != $zAUTHUSER->uID) {
  40. // Error out if user does not have access privileges.
  41. if ($zLOCALUSER->userAccess->a == FALSE) {
  42. $zOLDAPPLE->IncludeFile ('legacy/code/site/error/403.php', INCLUDE_SECURITY_NONE);
  43. $zOLDAPPLE->End();
  44. } // if
  45. } // if
  46. // Create a warning message if user has no write access.
  47. if ( ($zAUTHUSER->uID != $gFOCUSUSERID) and
  48. ($zLOCALUSER->userAccess->a == TRUE) and
  49. ($zLOCALUSER->userAccess->w == FALSE) ) {
  50. $zLOCALUSER->Message = __("Write Access Denied");
  51. $zLOCALUSER->Error = 0;
  52. } // if
  53. // Classes.
  54. global $zCIRCLES;
  55. // Buffers.
  56. global $bMAINSECTION;
  57. // Variables.
  58. global $gCIRCLEVIEWTYPE, $gCIRCLEVIEW, $gCIRCLEVIEWADMIN;
  59. global $gCIRCLEDATA;
  60. // Deprecate CIRCLEVIEW.
  61. if ($gCIRCLEVIEWADMIN) $gCIRCLEVIEW = $gCIRCLEVIEWADMIN;
  62. // Create the data class.
  63. $zCIRCLES = new cFRIENDCIRCLES ($zOLDAPPLE->Context);
  64. // Set the scroll step.
  65. $gSCROLLSTEP[$zOLDAPPLE->Context] = 20;
  66. // Display the select all button by default.
  67. $gSELECTBUTTON = 'Select All';
  68. // Set which tab to highlight.
  69. $gUSERFRIENDSTAB = '';
  70. // Buffer the main listing.
  71. ob_start ();
  72. // Take Appropriate Action.
  73. switch ($gACTION) {
  74. case 'SELECT_ALL':
  75. $gSELECTBUTTON = 'Select None';
  76. break;
  77. case 'SELECT_NONE':
  78. $gMASSLIST = array ();
  79. $gSELECTBUTTON = 'Select All';
  80. break;
  81. case 'DELETE':
  82. $zCIRCLES->Select ("tID", $gtID);
  83. $zCIRCLES->FetchArray ();
  84. // Delete Circle.
  85. $zCIRCLES->Delete ();
  86. if (!$zCIRCLES->Error) {
  87. $zCIRCLES->Message = __("Record Deleted");
  88. } // if
  89. break;
  90. case 'MOVE_UP':
  91. // Check if user has write access;
  92. if ( ($gFOCUSUSERID != $zAUTHUSER->uID) and
  93. ($zLOCALUSER->userAccess->a == TRUE) and
  94. ($zLOCALUSER->userAccess->w == FALSE) ) {
  95. $zCIRCLES->Message = __("Write Access Denied");
  96. $zCIRCLES->Error = -1;
  97. break;
  98. } // if
  99. // Check if any items were selected.
  100. if (!$gMASSLIST) {
  101. $zCIRCLES->Message = __("None Selected");
  102. $zCIRCLES->Error = -1;
  103. break;
  104. } // if
  105. // Loop through the list
  106. foreach ($gMASSLIST as $number => $tidvalue) {
  107. $zCIRCLES->Select ("tID", $tidvalue);
  108. $zCIRCLES->FetchArray ();
  109. $movecriteria = array ("userAuth_uID" => $zFOCUSUSER->uID);
  110. $zCIRCLES->MoveWithin (UP, $zCIRCLES->sID, "sID", $movecriteria);
  111. // Move in the selected list.
  112. if (!$zCIRCLES->Error) $gMASSLIST[$number] = $zCIRCLES->tID;
  113. } // if
  114. break;
  115. case 'MOVE_DOWN':
  116. // Check if user has write access;
  117. if ( ($gFOCUSUSERID != $zAUTHUSER->uID) and
  118. ($zLOCALUSER->userAccess->a == TRUE) and
  119. ($zLOCALUSER->userAccess->w == FALSE) ) {
  120. $zCIRCLES->Message = __("Write Access Denied");
  121. $zCIRCLES->Error = -1;
  122. break;
  123. } // if
  124. // Check if any items were selected.
  125. if (!$gMASSLIST) {
  126. $zCIRCLES->Message = __("None Selected");
  127. $zCIRCLES->Error = -1;
  128. break;
  129. } // if
  130. // Reverse the array when moving specific elements downwards;
  131. $gMASSLIST = array_reverse ($gMASSLIST);
  132. // Loop through the list
  133. foreach ($gMASSLIST as $number => $tidvalue) {
  134. $zCIRCLES->Select ("tID", $tidvalue);
  135. $zCIRCLES->FetchArray ();
  136. // Make sure we haven't hit the highest sID.
  137. $max = $zCIRCLES->Max ("sID", "userAuth_uID", $zFOCUSUSER->uID);
  138. if ($zCIRCLES->sID < $max) {
  139. $movecriteria = array ("userAuth_uID" => $zFOCUSUSER->uID);
  140. $zCIRCLES->MoveWithin (DOWN, $zCIRCLES->sID, "sID", $movecriteria);
  141. } // if
  142. // Move in the selected list.
  143. if (!$zCIRCLES->Error) $gMASSLIST[$number] = $zCIRCLES->tID;
  144. } // if
  145. break;
  146. case 'DELETE_ALL':
  147. // Check if user has write access;
  148. if ( ($gFOCUSUSERID != $zAUTHUSER->uID) and
  149. ($zLOCALUSER->userAccess->a == TRUE) and
  150. ($zLOCALUSER->userAccess->w == FALSE) ) {
  151. $zCIRCLES->Message = __("Write Access Denied");
  152. $zCIRCLES->Error = -1;
  153. $gMASSLIST = array ();
  154. break;
  155. } // if
  156. // Check if any items were selected.
  157. if (!$gMASSLIST) {
  158. $zCIRCLES->Message = __("None Selected");
  159. $zCIRCLES->Error = -1;
  160. break;
  161. } // if
  162. // Loop through the list
  163. foreach ($gMASSLIST as $number => $tidvalue) {
  164. $zCIRCLES->tID = $tidvalue;
  165. $zCIRCLES->Select ("tID", $zCIRCLES->tID);
  166. $zCIRCLES->FetchArray ();
  167. // Delete Circle.
  168. $zCIRCLES->Delete ();
  169. } // foreach
  170. if (!$zCIRCLES->Error) {
  171. $zCIRCLES->Message = __("Records Deleted");
  172. } // if
  173. break;
  174. case 'NEW':
  175. break;
  176. case 'SAVE':
  177. // Check if user has write access;
  178. if ( ($gFOCUSUSERID != $zAUTHUSER->uID) and
  179. ($zLOCALUSER->userAccess->a == TRUE) and
  180. ($zLOCALUSER->userAccess->w == FALSE) ) {
  181. $zCIRCLES->Message = __("Write Access Denied");
  182. $zCIRCLES->Error = -1;
  183. break;
  184. } // if
  185. // Synchronize Data
  186. $zCIRCLES->Synchronize();
  187. if ($zCIRCLES->tID == "") {
  188. // ADD
  189. $zCIRCLES->tID = 1;
  190. $zCIRCLES->sID = $zCIRCLES->Max ("sID", "userAuth_uID", $zFOCUSUSER->uID) + 1;
  191. $zCIRCLES->userAuth_uID = $zFOCUSUSER->uID;
  192. $zCIRCLES->Sanity();
  193. global $gCIRCLENAME;
  194. $gCIRCLENAME = $zCIRCLES->Name;
  195. if (!$zCIRCLES->Error) {
  196. $zCIRCLES->Message = __("Record Added");
  197. $zCIRCLES->Add();
  198. $gACTION = "";
  199. } // if
  200. } else {
  201. // UPDATE
  202. $zCIRCLES->sID = SQL_SKIP;
  203. $zCIRCLES->userAuth_uID = SQL_SKIP;
  204. $zCIRCLES->Sanity();
  205. global $gCIRCLENAME;
  206. $gCIRCLENAME = $zCIRCLES->Name;
  207. if (!$zCIRCLES->Error) {
  208. $zCIRCLES->Message = __("Record Updated");
  209. $zCIRCLES->Update();
  210. $gACTION = "";
  211. } // if
  212. } // if
  213. break;
  214. default:
  215. break;
  216. } // switch
  217. // PART II: Load the necessary data from the database.
  218. switch ($gACTION) {
  219. case 'EDIT':
  220. $zCIRCLES->Synchronize();
  221. $zCIRCLES->Select ("tID", $gtID);
  222. $zCIRCLES->FetchArray();
  223. break;
  224. default:
  225. // Create the friend listing.
  226. $circlecriteria = array ("userAuth_uID" => $zFOCUSUSER->uID);
  227. $zCIRCLES->SelectByMultiple ($circlecriteria, "sID");
  228. break;
  229. } // switch
  230. switch ($gACTION) {
  231. case 'EDIT':
  232. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/edit.aobj", INCLUDE_SECURITY_NONE);
  233. break;
  234. case 'NEW':
  235. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/new.aobj", INCLUDE_SECURITY_NONE);
  236. break;
  237. default:
  238. if ( ($zCIRCLES->Error == 0) or
  239. ($gACTION == 'MOVE_DOWN') or
  240. ($gACTION == 'MOVE_UP') or
  241. ($gACTION == 'DELETE_ALL') ) {
  242. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/editor/list.top.aobj", INCLUDE_SECURITY_NONE);
  243. // Calculate scroll values.
  244. $gSCROLLMAX[$zOLDAPPLE->Context] = $zCIRCLES->CountResult();
  245. // Adjust for a recently deleted entry.
  246. $zOLDAPPLE->AdjustScroll ('user.friends.circles', $zCIRCLES);
  247. // Check if any results were found.
  248. if ($gSCROLLMAX[$zOLDAPPLE->Context] == 0) {
  249. $zCIRCLES->Message = __("No Results Found");
  250. $zCIRCLES->Broadcast();
  251. } // if
  252. global $gLISTCOUNT;
  253. // Counter for switching up Alternate.
  254. $switchcount = 0;
  255. global $gCHECKED;
  256. global $gFRIENDSICON, $gFRIENDFULLNAME, $gFRIENDNAME;
  257. $gPOSTDATA[$gCIRCLEVIEWTYPE] = $gCIRCLEVIEW;
  258. // Loop through the list.
  259. for ($gLISTCOUNT = 0; $gLISTCOUNT < $gSCROLLSTEP[$zOLDAPPLE->Context]; $gLISTCOUNT++) {
  260. if ($zCIRCLES->FetchArray()) {
  261. global $gTARGET;
  262. $gTARGET = "/profile/" . $zFOCUSUSER->Username . "/circles/";
  263. $gPOSTDATA['ACTION'] = "EDIT";
  264. $gPOSTDATA['CIRCLEVIEW'] = CIRCLE_EDITOR;
  265. $gPOSTDATA['CIRCLEVIEWADMIN'] = CIRCLE_EDITOR;
  266. $gPOSTDATA['tID'] = $zCIRCLES->tID;
  267. $gCHECKED = FALSE;
  268. // Select
  269. if ($gACTION == 'SELECT_ALL') $gCHECKED = TRUE;
  270. global $gFRIENDSCOUNT, $gCOUNTLABEL;
  271. $zCIRCLESLIST = new cFRIENDCIRCLESLIST ();
  272. $zCIRCLESLIST->Select ("friendCircles_tID", $zCIRCLES->tID);
  273. $gCOUNTLABEL = __("Friends Count", array ( 'count' => $zCIRCLESLIST->CountResult() ) );
  274. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/editor/list.middle.aobj", INCLUDE_SECURITY_NONE);
  275. unset ($gPOSTDATA['ACTION']);
  276. unset ($gPOSTDATA['tID']);
  277. unset ($gFRIENDSCOUNT);
  278. } else {
  279. break;
  280. } // if
  281. } // for
  282. $gTARGET = "/profile/" . $zFOCUSUSER->Username . "/circles/";
  283. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/editor/list.bottom.aobj", INCLUDE_SECURITY_NONE);
  284. } elseif ( ($gACTION == 'SAVE') or ($gACTION == 'DELETE') ) {
  285. if ($gtID) {
  286. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/edit.aobj", INCLUDE_SECURITY_NONE);
  287. } else {
  288. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/objects/user/circles/new.aobj", INCLUDE_SECURITY_NONE);
  289. } // if
  290. } // if
  291. break;
  292. } // switch
  293. // Retrieve output buffer.
  294. $bMAINSECTION = ob_get_clean ();
  295. // Include the outline frame.
  296. $zOLDAPPLE->IncludeFile ("$gFRAMELOCATION/frames/users/circles.afrw", INCLUDE_SECURITY_NONE);
  297. // End application.
  298. $zOLDAPPLE->End ();
  299. ?>