[Хак](new)Альбомы и фотографии пользователей и (old)альбомы клубов в админ-панели

+45
2.24K
доброго времени суток уважаемое сообщество.
немного приболел и появилось время нечем незаниматься по учёбе, решил поковыряться с движком
представляю вашему вниманию хак фотогалереи — а именно мой старый хак альбомов клубов, о котором я писал в своём блоге, и наконец, как и обещал в админку вынес списки альбомов и фотографий пользователей

проблема заключалась в том, что они не относятся к фотогалерее и живут отдельной жизнью от фотографий и альбомов фотогалереи, в отличии от альбомов клубов, которые привязаны к фотогалерее.

и так для начала функционал:

  1. вывод списка альбомов клубов
  2. вывод списка альбомов пользователей
  3. вывод списка фотографий пользователей
  4. есть возможность редактирования фотографий и альбомов
  5. есть возможность удаления фотографий и альбомов
  6. при удалении фотографии удаляется как запись в базе, так и фаил.
  7. при удалении альбома удаляется запись из базы об альбоме, записи из базы о фото с альбома и сами файлы
  8.  
приступим к самому хаку
будем редактировать три файла

открываем фаил \admin\components\photos\backend.php

находим

  1.  
  2. //=================================================================================================//
  3.  
  4. if ($opt=='list_photos' || $opt=='list_albums'){
  5.  
  6. $toolmenu[0]['icon'] = 'newfolder.gif';
  7. $toolmenu[0]['title'] = 'Новый альбом';
  8. $toolmenu[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_album';
  9.  
  10. $toolmenu[1]['icon'] = 'newphoto.gif';
  11. $toolmenu[1]['title'] = 'Новая фотография';
  12. $toolmenu[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_photo';
  13.  
  14. $toolmenu[2]['icon'] = 'newphotomulti.gif';
  15. $toolmenu[2]['title'] = 'Массовая загрузка фото';
  16. $toolmenu[2]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_photo_multi';
  17.  
  18. $toolmenu[3]['icon'] = 'folders.gif';
  19. $toolmenu[3]['title'] = 'Фотоальбомы';
  20. $toolmenu[3]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_albums';
  21.  
  22. $toolmenu[4]['icon'] = 'listphoto.gif';
  23. $toolmenu[4]['title'] = 'Все фотографии';
  24. $toolmenu[4]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_photos';
  25.  
  26. $toolmenu[5]['icon'] = 'config.gif';
  27. $toolmenu[5]['title'] = 'Настройки';
  28. $toolmenu[5]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=config';
  29.  
  30. }
  31.  
  32. //=================================================================================================//
  33.  
  34.  
заменяем на

  1. //=================================================================================================//
  2.  
  3. if ($opt=='list_photos' || $opt=='list_albums' || $opt=='list_albums_clubs' || $opt=='list_user_albums' || $opt=='list_user_photos'){
  4.  
  5. $toolmenu[0]['icon'] = 'newfolder.gif';
  6. $toolmenu[0]['title'] = 'Новый альбом';
  7. $toolmenu[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_album';
  8.  
  9. $toolmenu[1]['icon'] = 'newphoto.gif';
  10. $toolmenu[1]['title'] = 'Новая фотография';
  11. $toolmenu[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_photo';
  12.  
  13. $toolmenu[2]['icon'] = 'newphotomulti.gif';
  14. $toolmenu[2]['title'] = 'Массовая загрузка фото';
  15. $toolmenu[2]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add_photo_multi';
  16.  
  17. $toolmenu[3]['icon'] = 'folders.gif';
  18. $toolmenu[3]['title'] = 'Фотоальбомы';
  19. $toolmenu[3]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_albums';
  20.  
  21. $toolmenu[4]['icon'] = 'clubs_album.png';
  22. $toolmenu[4]['title'] = 'Фотоальбомы клубов';
  23. $toolmenu[4]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_albums_clubs';
  24.  
  25. $toolmenu[7]['icon'] = 'user_photos.png';
  26. $toolmenu[7]['title'] = 'Фотографии пользователей';
  27. $toolmenu[7]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_photos';
  28.  
  29. $toolmenu[8]['icon'] = 'user_albums.png';
  30. $toolmenu[8]['title'] = 'Фотоальбомы пользователей';
  31. $toolmenu[8]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_albums';
  32.  
  33. $toolmenu[5]['icon'] = 'listphoto.gif';
  34. $toolmenu[5]['title'] = 'Все фотографии';
  35. $toolmenu[5]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_photos';
  36.  
  37. $toolmenu[6]['icon'] = 'config.gif';
  38. $toolmenu[6]['title'] = 'Настройки';
  39. $toolmenu[6]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=config';
  40.  
  41.  
  42. }
  43.  
  44. //=================================================================================================//
  45.  
  46.  
находим
  1.  
  2. //=================================================================================================//
  3.  
  4. if ($opt=='list_photos' || $opt=='list_albums'){
  5. } else {
  6.  
  7. $toolmenu[20]['icon'] = 'save.gif';
  8. $toolmenu[20]['title'] = 'Сохранить';
  9. $toolmenu[20]['link'] = 'javascript:document.addform.submit();';
  10.  
  11. $toolmenu[21]['icon'] = 'cancel.gif';
  12. $toolmenu[21]['title'] = 'Отмена';
  13. $toolmenu[21]['link'] = '?view=components&do=config&id='.$_REQUEST['id'];
  14.  
  15. }
  16.  
  17. cpToolMenu($toolmenu);
  18.  
  19. //=================================================================================================//
  20.  
  21.  
заменяем на
  1.  
  2. //=================================================================================================//
  3.  
  4. if ($opt=='list_photos' || $opt=='list_albums' || $opt=='list_albums_clubs' || $opt=='list_user_albums' || $opt=='list_user_photos'){
  5. } else {
  6.  
  7. $toolmenu[20]['icon'] = 'save.gif';
  8. $toolmenu[20]['title'] = 'Сохранить';
  9. $toolmenu[20]['link'] = 'javascript:document.addform.submit();';
  10.  
  11. $toolmenu[21]['icon'] = 'cancel.gif';
  12. $toolmenu[21]['title'] = 'Отмена';
  13. $toolmenu[21]['link'] = '?view=components&do=config&id='.$_REQUEST['id'];
  14.  
  15. }
  16.  
  17. cpToolMenu($toolmenu);
  18.  
  19. //=================================================================================================//
  20.  
  21.  
в самом конце перед

  1.  
  2.  
  3. ?>
  4.  
вставляем следующий код


(кто ставил хак альбомов клубов то часть с клубом пропустить)

  1.  
  2. //============================ хак альбомов клубов и пользователей ==============================//
  3.  
  4. //================================= Фотоальбомы и фотографии пользователей=========================//
  5. //=================================== Список фотографий пользователей =========================//
  6.  
  7. if ($opt == 'list_user_photos'){
  8. cpAddPathway('Фотографии пользователей', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_photos');
  9. echo '<h3>Фотографии пользователей</h3>';
  10.  
  11. //TABLE COLUMNS
  12. $fields = array();
  13.  
  14. $fields[0]['title'] = 'id';
  15. $fields[0]['field'] = 'id';
  16. $fields[0]['width'] = '30';
  17.  
  18. $fields[1]['title'] = 'Дата';
  19. $fields[1]['field'] = 'pubdate';
  20. $fields[1]['width'] = '80';
  21. $fields[1]['filter'] = 15;
  22. $fields[1]['fdate'] = '%d/%m/%Y';
  23.  
  24. $fields[2]['title'] = 'Название';
  25. $fields[2]['field'] = 'title';
  26. $fields[2]['width'] = '';
  27. $fields[2]['filter'] = 15;
  28. $fields[2]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_photo&item_id=%id%';
  29.  
  30. $fields[3]['title'] = 'Показ';
  31. $fields[3]['field'] = 'allow_who';
  32. $fields[3]['width'] = '100';
  33. $fields[3]['prc'] = 'cpUserPhotoAlbumView';
  34.  
  35. $fields[4]['title'] = 'Просмотров';
  36. $fields[4]['field'] = 'hits';
  37. $fields[4]['width'] = '90';
  38.  
  39. $fields[5]['title'] = 'Альбом';
  40. $fields[5]['field'] = 'album_id';
  41. $fields[5]['width'] = '200';
  42. $fields[5]['prc'] = 'cpUserPhotoAlbumById';
  43. $fields[5]['filter'] = 1;
  44. $fields[5]['filterlist'] = cpGetList('cms_user_albums');
  45.  
  46. $fields[6]['title'] = 'Хозяин фотографии';
  47. $fields[6]['field'] = 'user_id';
  48. $fields[6]['width'] = '200';
  49. $fields[6]['prc'] = 'cpUserNick';
  50.  
  51. //ACTIONS
  52. $actions = array();
  53. $actions[0]['title'] = 'Редактировать';
  54. $actions[0]['icon'] = 'edit.gif';
  55. $actions[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_photo&item_id=%id%';
  56.  
  57. $actions[1]['title'] = 'Удалить';
  58. $actions[1]['icon'] = 'delete.gif';
  59. $actions[1]['confirm'] = 'Удалить фотографию?';
  60. $actions[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=delete_user_photo&item_id=%id%';
  61.  
  62. //Print table
  63. cpListTable('cms_user_photos', $fields, $actions, '', 'id DESC');
  64. }
  65.  
  66. //=================================================================================================//
  67.  
  68. //=========================== Фотоальбомы пользователей (список) ==================================//
  69.  
  70. if ($opt == 'list_user_albums'){
  71.  
  72. cpAddPathway('Фотоальбомы пользователей', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_albums');
  73.  
  74. echo '<h3>Фотоальбомы пользователей</h3>';
  75.  
  76. //TABLE COLUMNS
  77. $fields = array();
  78.  
  79. $fields[0]['title'] = 'id';
  80. $fields[0]['field'] = 'id';
  81. $fields[0]['width'] = '30';
  82.  
  83. $fields[1]['title'] = 'Дата';
  84. $fields[1]['field'] = 'pubdate';
  85. $fields[1]['width'] = '80';
  86. $fields[1]['filter'] = 15;
  87. $fields[1]['fdate'] = '%d/%m/%Y';
  88.  
  89. $fields[2]['title'] = 'Название';
  90. $fields[2]['field'] = 'title';
  91. $fields[2]['width'] = '';
  92. $fields[2]['filter'] = 15;
  93. $fields[2]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_album&item_id=%id%';
  94.  
  95. $fields[3]['title'] = 'Показ';
  96. $fields[3]['field'] = 'allow_who';
  97. $fields[3]['width'] = '100';
  98. $fields[3]['prc'] = 'cpUserPhotoAlbumView';
  99.  
  100. $fields[4]['title'] = 'Хозяин альбома';
  101. $fields[4]['field'] = 'user_id';
  102. $fields[4]['width'] = '200';
  103. $fields[4]['prc'] = 'cpUserNick';
  104.  
  105. //ACTIONS
  106. $actions = array();
  107. $actions[0]['title'] = 'Редактировать';
  108. $actions[0]['icon'] = 'edit.gif';
  109. $actions[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_album&item_id=%id%';
  110.  
  111. $actions[1]['title'] = 'Удалить';
  112. $actions[1]['icon'] = 'delete.gif';
  113. $actions[1]['confirm'] = 'Вместе с альбомом будут удалены все фотографии. Удалить фотоальбом?';
  114. $actions[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=delete_user_album&item_id=%id%';
  115.  
  116. //Print table
  117. cpListTable('cms_user_albums', $fields, $actions, '', 'id DESC');
  118. }
  119.  
  120. //=================================================================================================//
  121.  
  122. //============================== Страница редактирования фотографии пользователя ==================//
  123.  
  124. if ($opt == 'edit_user_photo'){
  125.  
  126.  
  127. $id = $_REQUEST['item_id'];
  128.  
  129.  
  130. $sql = "SELECT f.*, a.title as album
  131. FROM cms_user_photos f, cms_user_albums a
  132. WHERE f.id = $id AND f.album_id = a.id LIMIT 1";
  133. $result = dbQuery($sql) ;
  134. if (mysql_num_rows($result)){
  135. $mod = mysql_fetch_assoc($result);
  136.  
  137.  
  138. echo '<h3>'.$mod['title'].' '.$ostatok.'</h3>';
  139. cpAddPathway('Фотографии пользователей', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_photos');
  140. cpAddPathway($mod['title'], '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_photo&item_id='.$id);
  141.  
  142. }
  143. ?>
  144. <?php cpCheckWritable('/images/users/photos', 'folder'); ?>
  145. <?php cpCheckWritable('/images/users/photos/medium', 'folder'); ?>
  146. <?php cpCheckWritable('/images/users/photos/small', 'folder'); ?>
  147. <form action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>" method="post" enctype="multipart/form-data" name="addform" id="addform">
  148. <table width="600" cellspacing="5" class="proptable">
  149. <tr>
  150. <td width="177">Название фотографии: </td>
  151. <td width="311"><input name="title" type="text" id="title" size="30" value="<?php echo htmlspecialchars($mod['title']);?>"/></td>
  152. </tr>
  153. <tr>
  154. <td valign="top">Фотоальбом:</td>
  155. <td valign="top">
  156. <?php
  157. $user_nik['id'] = $mod['user_id'];
  158. $user_nik['nik'] = $inDB->get_field('cms_users', "id={$user_nik['id']}", 'nickname');
  159. $user_nik['login'] = $inDB->get_field('cms_users', "id={$user_nik['id']}", 'login');
  160. ?><input type="hidden" name="album_id" value="<?php echo $mod['album_id']; ?>" />
  161. <?php echo $user_nik['nik'] .'('.$user_nik['login'].')';?> &rarr; <?php echo $mod['album']; ?>
  162. </td>
  163. </tr>
  164. <tr>
  165. <td>Файл фотографии: </td>
  166. <td><?php if (@$mod['imageurl']) {
  167. echo '<div><img src="/images/users/photos/small/'.$mod['imageurl'].'" border="1" /></div>';
  168. echo '<div><a href="/images/users/photos/medium/'.$mod['imageurl'].'" title="Посмотреть фото">'.$mod['title'].'</a></div>';
  169. } else { ?>
  170. <input name="picture" type="file" id="picture" size="30" />
  171. <?php } ?></td>
  172. </tr>
  173. <tr>
  174. <td height="30">Показывать:</td>
  175. <td>
  176. <select name="allow">
  177. <option value="all" <?php if (@$mod['allow_who']=='all') {echo 'selected="selected"';} ?> >Всем</option>
  178. <option value="registered" <?php if ($mod['allow_who']=='registered') {echo 'selected="selected"';} ?> >Зарегестрированным</option>
  179. <option value="friends" <?php if ($mod['allow_who']=='friends') {echo 'selected="selected"';} ?> >Друзьям</option>
  180. </select>
  181. </td>
  182. </tr>
  183. </table>
  184. <table width="100%" >
  185. <tr>
  186. <?php
  187. if(!isset($mod['user']) || @$mod['user']==1){
  188. echo '<td width="52%" valign="top">';
  189. echo 'Описание фотографии:<br/>';
  190.  
  191. $inCore->insertEditor('description', $mod['description'], '260', '605');
  192.  
  193. echo '</td>';
  194. }
  195. ?>
  196. </tr>
  197. </table>
  198. <p>
  199. <input name="add_mod" type="submit" id="add_mod" value="Сохранить фото" />
  200. <input name="back3" type="button" id="back3" value="Отмена" onclick="window.location.href='index.php?view=components&do=config&id=<?php echo $_REQUEST['id']; ?>&opt=list_user_photos';"/>
  201. <input name="opt" type="hidden" id="opt" value="update_user_photo" />
  202. <?php
  203.  
  204. echo '<input name="item_id" type="hidden" value="'.$mod['id'].'" />';
  205.  
  206. ?>
  207. </p>
  208. </form>
  209. <?php
  210. }
  211.  
  212. //=================================================================================================//
  213.  
  214. //================================ Обновление фотографии пользователя =============================//
  215.  
  216. if ($opt == 'update_user_photo'){
  217. if($inCore->inRequest('item_id')) {
  218. $id = $inCore->request('item_id', 'int');
  219.  
  220. $photo['title'] = $inCore->request('title', 'str');
  221. $photo['description'] = $inCore->request('description', 'html');
  222. $photo['description'] = $inDB->escape_string($photo['description']);
  223. $photo['allow'] = $inCore->request('allow', 'str');
  224.  
  225. $model->updateUserPhoto($id, $photo);
  226. }
  227. if (!isset($_SESSION['editlist']) || @sizeof($_SESSION['editlist'])==0){
  228. $inCore->redirect('?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_photos');
  229. } else {
  230. $inCore->redirect('?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_photo');
  231. }
  232. }
  233.  
  234. //=================================================================================================//
  235. //================================ Удаление фотографии пользователя ===============================//
  236.  
  237. if($opt == 'delete_user_photo'){
  238.  
  239. if (!isset($_REQUEST['item'])){
  240. $id = (int)$_REQUEST['item_id'];
  241. if ($id >= 0){
  242. $model->deleteUserPhoto($id);
  243. }
  244. } else {
  245. $model->deleteUserPhotos($_REQUEST['item']);
  246. }
  247.  
  248. $inCore->redirect('?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_photos');
  249.  
  250. }
  251.  
  252. //=================================================================================================//
  253.  
  254. //============================== Страница редактирования альбома пользователя =====================//
  255.  
  256. if ($opt == 'edit_user_album'){
  257.  
  258. if(isset($_REQUEST['item_id'])){
  259. $id = $_REQUEST['item_id'];
  260. $sql = "SELECT * FROM cms_user_albums WHERE id = $id LIMIT 1";
  261. $result = dbQuery($sql) ;
  262. if (mysql_num_rows($result)){
  263. $mod = mysql_fetch_assoc($result);
  264.  
  265. }
  266.  
  267. cpAddPathway('Фотоальбомы пользователей', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_albums');
  268. cpAddPathway('Редактировать фотоальбом пользователя', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_user_album');
  269. echo '<h3>Редактировать фотоальбом пользователя</h3>';
  270. }
  271.  
  272. ?>
  273.  
  274. <form id="addform" name="addform" method="post" action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>">
  275. <table width="610" cellspacing="5" class="proptable">
  276. <tr>
  277. <td width="300">Название альбома:</td>
  278. <td><input name="title" type="text" id="title" size="30" value="<?php echo htmlspecialchars($mod['title']); ?>"/></td>
  279. </tr>
  280.  
  281. <tr>
  282. <td valign="top">Хозяин фотоальбома:</td>
  283. <td valign="top">
  284. <?php
  285. $user_nik['id'] = $mod['user_id'];
  286. $user_nik['nik'] = $inDB->get_field('cms_users', "id={$user_nik['id']}", 'nickname');
  287. $user_nik['login'] = $inDB->get_field('cms_users', "id={$user_nik['id']}", 'login');
  288. ?><input type="hidden" name="album_id" value="<?php echo $mod['album_id']; ?>" />
  289. <?php echo $user_nik['nik'] .' ('.$user_nik['login'].')';?>
  290. </td>
  291. </tr>
  292.  
  293. <tr>
  294. <td height="30">Показывать:</td>
  295. <td>
  296. <select name="allow">
  297. <option value="all" <?php if (@$mod['allow_who']=='all') {echo 'selected="selected"';} ?> >Всем</option>
  298. <option value="registered" <?php if ($mod['allow_who']=='registered') {echo 'selected="selected"';} ?> >Зарегестрированным</option>
  299. <option value="friends" <?php if ($mod['allow_who']=='friends') {echo 'selected="selected"';} ?> >Друзьям</option>
  300. </select>
  301. </td>
  302. </tr>
  303.  
  304.  
  305. </table>
  306. <table width="100%" >
  307. <tr>
  308. <div style="margin:5px 0px 5px 0px">Описание альбома:</div>
  309. <textarea name="description" style="width:580px" rows="4"><?php echo @$mod['description']?></textarea>
  310. </tr>
  311. </table>
  312.  
  313. <p>
  314. <input name="opt" type="hidden" id="opt" value="update_user_album" />
  315. <input name="add_mod" type="submit" id="add_mod" value="Сохранить альбом" />
  316. <input name="back2" type="button" id="back2" value="Отмена" onclick="window.location.href='index.php?view=components&do=config&id=<?php echo $_REQUEST['id']; ?>';"/>
  317. <?php
  318.  
  319. echo '<input name="item_id" type="hidden" value="'.$mod['id'].'" />';
  320. ?>
  321. </p>
  322. </form>
  323. <?php
  324. }
  325.  
  326. //=================================================================================================//
  327.  
  328. //================================ Обновление альбома пользователя ================================//
  329.  
  330. if ($opt == 'update_user_album'){
  331. if($inCore->inRequest('item_id')) {
  332. $id = $inCore->request('item_id', 'int');
  333.  
  334. $album['title'] = $inCore->request('title', 'str');
  335. $album['description'] = $inCore->request('description', 'html');
  336. $album['description'] = $inDB->escape_string($album['description']);
  337. $album['allow'] = $inCore->request('allow', 'str');
  338.  
  339. $model->updateUserAlbum($id, $album);
  340.  
  341. $inCore->redirect('?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_albums');
  342. }
  343. }
  344.  
  345. //=================================================================================================//
  346.  
  347. //=================================== удаление альбома пользователя ===============================//
  348.  
  349. if($opt == 'delete_user_album'){
  350. if($inCore->inRequest('item_id')) {
  351. $id = $inCore->request('item_id', 'int');
  352. $model->deleteUserAlbum($id);
  353. }
  354. $inCore->redirect('?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_user_albums');
  355. }
  356.  
  357. //=================================================================================================//
  358.  
  359.  
  360. //===================================== Хак альбомов клубов ======================================//
  361. //=================================== Список альбомов клубов =====================================//
  362.  
  363. if ($opt == 'list_albums_clubs'){
  364.  
  365. echo '<h3>Фотоальбомы клубов</h3>';
  366.  
  367. //TABLE COLUMNS
  368. $fields = array();
  369.  
  370. $fields[0]['title'] = 'Lt';
  371. $fields[0]['field'] = 'NSLeft';
  372. $fields[0]['width'] = '30';
  373.  
  374. $fields[1]['title'] = 'Название';
  375. $fields[1]['field'] = 'title';
  376. $fields[1]['width'] = '';
  377. $fields[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_album&item_id=%id%';
  378.  
  379. $fields[2]['title'] = 'Клуб';
  380. $fields[2]['field'] = 'user_id';
  381. $fields[2]['width'] = '250';
  382. $fields[2]['prc'] = 'cpClubsById';
  383.  
  384.  
  385. $fields[3]['title'] = 'Показ';
  386. $fields[3]['field'] = 'published';
  387. $fields[3]['width'] = '100';
  388. $fields[3]['do'] = 'opt';
  389. $fields[3]['do_suffix'] = '_album';
  390.  
  391. //ACTIONS
  392. $actions = array();
  393. $actions[0]['title'] = 'Редактировать';
  394. $actions[0]['icon'] = 'edit.gif';
  395. $actions[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_album&item_id=%id%';
  396.  
  397. $actions[1]['title'] = 'Удалить';
  398. $actions[1]['icon'] = 'delete.gif';
  399. $actions[1]['confirm'] = 'Вместе с альбомом будут удалены все фотографии. Удалить фотоальбом?';
  400. $actions[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=delete_album&item_id=%id%';
  401.  
  402. //Print table
  403. cpListTable('cms_photo_albums', $fields, $actions, 'parent_id>0 AND (NSDiffer LIKE "club%")', 'NSDiffer');
  404. }
  405.  
  406. //=================================================================================================//
  407.  
  408.  
  409.  
  410.  
с этим файлом всё

далее открываем фаил \admin\includes\cp.php

находим
  1.  
  2. function cpPhotoAlbumById($id){
  3.  
  4. $result = dbQuery("SELECT title FROM cms_photo_albums WHERE id = $id") ;
  5.  
  6. if (mysql_num_rows($result)) {
  7. $cat = mysql_fetch_assoc($result);
  8. return '<a href="index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_album&item_id='.$id.'">'.$cat['title'].'</a> ('.$id.')';
  9. } else { return '--'; }
  10.  
  11. }
  12.  
вставляем после (можно и в другом месте файла)
если ставили хак альбомов клубов раздел клуб по id не прописывать
  1.  
  2. // клуб по id
  3. function cpClubsById($id){
  4.  
  5. $result = dbQuery("SELECT title FROM cms_clubs WHERE id = $id") ;
  6.  
  7. if (mysql_num_rows($result)) {
  8. $cat = mysql_fetch_assoc($result);
  9. return 'Клуб &quot;'.$cat['title'].'&quot; ('.$id.')';
  10. } else { return '--'; }
  11.  
  12. }
  13.  
  14. // альбом пользователя по id
  15. function cpUserPhotoAlbumById($id){
  16.  
  17. $result = dbQuery("SELECT title FROM cms_user_albums WHERE id = $id") ;
  18.  
  19. if (mysql_num_rows($result)) {
  20. $cat = mysql_fetch_assoc($result);
  21. return '&quot;'.$cat['title'].'&quot; ('.$id.')';
  22. } else { return '--'; }
  23.  
  24. }
  25. // кому показывать фото и альбомы пользователей
  26. function cpUserPhotoAlbumView($who){
  27.  
  28.  
  29. if ($who=="all") {
  30. return 'Всем';
  31. }
  32.  
  33. if ($who=="friends") {
  34. return 'Друзьям';
  35. }
  36.  
  37. if ($who=="registered") {
  38. return 'Зарегистрированным';
  39. }
  40.  
  41. }
  42.  
  43.  
с этим файлом всё

далее открываем \components\photos\model.php


и в самом конце

после
  1.  
  2. /* ==================================================================================================== */
  3. /* ==================================================================================================== */
  4.  
перед
  1.  
  2. }
  3.  
вставляем

  1.  
  2. /* ======================== обновление данных фотографии пользователя ================================= */
  3.  
  4. public function updateUserPhoto($id, $photo){
  5. $inCore = cmsCore::getInstance();
  6. $inUser = cmsUser::getInstance();
  7.  
  8. $photo = cmsCore::callEvent('UPDATE_PHOTO', $photo);
  9.  
  10. $sql = "UPDATE cms_user_photos
  11. SET title='{$photo['title']}',
  12. description='{$photo['description']}',
  13. allow_who='{$photo['allow']}'
  14. WHERE id = '{$id}'
  15. LIMIT 1";
  16.  
  17. $this->inDB->query($sql);
  18.  
  19. }
  20.  
  21. /* ==================================================================================================== */
  22.  
  23. /* ================================== удаление фотографии пользователя ================================ */
  24.  
  25. public function deleteUserPhoto($id, $file=''){
  26.  
  27. $inCore = cmsCore::getInstance();
  28.  
  29. cmsCore::callEvent('DELETE_PHOTO', $id);
  30.  
  31. if (!$file){
  32. $file = $this->inDB->get_field('cms_user_photos', "id='{$id}'", 'imageurl');
  33. }
  34. if (!$file){ return false; }
  35.  
  36. $this->deletePhotoFile($file, PATH.'/images/users/photos/');
  37.  
  38. $inCore->deleteComments('userphoto', $id);
  39. $inCore->deleteRatings('userphoto', $id);
  40.  
  41. cmsActions::removeObjectLog('add_user_photo', $id);
  42.  
  43. $sql = "DELETE FROM cms_user_photos WHERE id = '$id'";
  44. $this->inDB->query($sql) ;
  45.  
  46. cmsClearTags('userphoto', $id);
  47.  
  48. }
  49.  
  50. /* ==================================================================================================== */
  51.  
  52. /* ================================== удаление фотографий пользователя ================================ */
  53.  
  54. public function deleteUserPhotos($id_list){
  55.  
  56. cmsCore::callEvent('DELETE_PHOTOS', $id_list);
  57.  
  58. foreach($id_list as $key=>$id){
  59. $this->deleteUserPhoto($id);
  60. }
  61.  
  62. return true;
  63.  
  64. }
  65.  
  66. /* ==================================================================================================== */
  67.  
  68. /* ============================ Обновление информации об альбоме пользователя ========================= */
  69.  
  70. public function updateUserAlbum($id, $album){
  71.  
  72.  
  73. $album = cmsCore::callEvent('UPDATE_ALBUM', $album);
  74.  
  75.  
  76. $sql = "UPDATE cms_user_albums
  77. SET title='{$album['title']}',
  78. description='{$album['description']}',
  79. allow_who='{$album['allow']}'
  80. WHERE id = '$id'";
  81.  
  82. $this->inDB->query($sql);
  83. }
  84.  
  85. /* ==================================================================================================== */
  86.  
  87. /* =================================== Удаление альбома пользователя ================================== */
  88.  
  89. public function deleteUserAlbum($id, $differ = ''){
  90.  
  91. $inCore = cmsCore::getInstance();
  92.  
  93. cmsCore::callEvent('DELETE_ALBUM', $id);
  94.  
  95. $sql = "SELECT f.id as id, f.imageurl as imageurl
  96. FROM cms_user_photos f, cms_user_albums a
  97. WHERE f.album_id = $id";
  98. $result = $this->inDB->query($sql);
  99.  
  100. if ($this->inDB->num_rows($result)){
  101. while($photo = $this->inDB->fetch_assoc($result)){
  102. $this->deleteUserPhoto($photo['id'], $photo['imageurl']);
  103. }
  104. }
  105. $sql_del = "DELETE FROM cms_user_albums WHERE id = '$id'";
  106. $this->inDB->query($sql_del) ;
  107.  
  108.  
  109. }
  110.  
  111. /* ==================================================================================================== */
  112.  
  113.  
  114.  
скидываем иконки в соответствии иерархии папок с прикреплённого архива (в корень сайта)

сохраняем всё это и пользуемся

архив с иконками и описанием instantcms.ru/users/files/download2105.html

ну и как обычно — от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
0
Алексей Гаврилов Алексей Гаврилов 12 лет назад #
А пример можно или скриншет как это будет выглядит?
+3
Sergey Platonov Sergey Platonov 12 лет назад #
список альбомов клубов
Спойлер
список альбомов пользователей
Спойлер
список фотографий пользователей
Спойлер
редактирование фотографии пользователя
Спойлер
редактирование альбома пользователя
Спойлер
+1
Soul Soul 12 лет назад #
Куча хаков в последнее время... +++ конечно всем за труды, расширяется функционал..., но при всей этой красоте - как сказываются данные изменения в коде на самом движке (я не имею в виду конкретно этот хак, а изменения в движке в целом)?
Очень бы хотелось видеть комментарии администрации по всем предлагаемым на сайте изменениям исходников (да и разработок в целом) - лучше Вас движок не знает ни кто и хотелось бы знать Ваше мнение.
Sergey Platonov, + в блог и карму.
+4
Sergey Platonov Sergey Platonov 12 лет назад #
скажу от себя - какие то хаки полезны, какие то нет. всё зависит от того, что нужно пользователю от самого движка. и делая какой либо хак и переписывая ядро, какие то хаки делают систему ещё более уязвимой, а какие то просто расширяют функционал. к примеру я расписывал давно тут хак к форуму - иконки разделов. так вот он потом был включен в версию 1.9 но с учётом того, что его грамотно переписали с точки зрения безопасности движка. данный хак я писал максимально приближенно к тому коду, что был уже в ядре, парочка новых функций, парочка моделей и парочка страниц. на скоко безопасен для системы данный хак, я сказать не могу, но на мой взгляд дыр в ядре я вроде не наделал. если данный хак будет вписан в новую версию движка (а на мой взгляд он достоин жить) я буду только за. надеюсь администрация услышит данную просьбу включить хак в релиз, переделав конечно же его со стороны безопасности движка.
+1
Soul Soul 12 лет назад #
скажу от себя - какие то хаки полезны, какие то нет.

Тонко ухватили мою мысль +.
По поводу разработок (хаков, модулей и т.д.), публикуемых здесь, многое можно было бы включить в функционал движка - здесь дело скорее в том плане, что некоторые вещи разработчики считают не нужными, не безопасными и т.д., да и чревато использовать чужие разработки (автор может и претензию предъявить, хотя изначально возможно сам просил о безвозмездном использовании его трудов - таков уж человек по своей сущности)..

Вот по этому и сеть желание хотя бы время от времени видеть комментарии разработчиков.
0
Sergey Platonov Sergey Platonov 12 лет назад #
По поводу разработок (хаков, модулей и т.д.), публикуемых здесь, многое можно было бы включить в функционал движка - здесь дело скорее в том плане, что некоторые вещи разработчики считают не нужными, не безопасными и т.д.,
полностью с вами согласен, на мой взгляд этот хак заслуживает жить. но это уже моё мнение и на мнение администрации он никак повлиять не может.
а по поводу
да и чревато использовать чужие разработки (автор может и претензию предъявить, хотя изначально возможно сам просил о безвозмездном использовании его трудов - таков уж человек по своей сущности)..
лично я не против, даже за. и вообще если я выкладываю в паблик, значит я уже не против. а вот если б я сделал какой нить платный компонент или разработку, а она бы оказалась в паблике потом - я б конечно возмутился (если она б оказалась в паблике без моего разрешения)
0
st.Puh st.Puh 12 лет назад #
Спасибо все работает, супер
0
Олег Олег 12 лет назад #
Спасибо за хак интересно надо попробовать!!!
Ставим+
0
VopisUVD VopisUVD 12 лет назад #
Отличный хак!!!
А возможно его оформить как модифицированный компонент фотогалереи? Чтоб с инсталяшкой было...
0
Блицкриг Блицкриг 10 лет назад #
На картинках то что нужно. Ни одной строчки ненашел в файлах. Какая версия инсты? В тексте ненашёл версию а их 1.9.хх 1.10.хх 2.0.хх и уже 2.1.ххх Заметил что вообще мало кто пишет под какую версию он что либо ваяет...
0
Aryuts Aryuts 10 лет назад #
Заметил что вообще мало кто пишет под какую версию он что либо ваяет...
Полностью согласен. Особенно на форуме этим страдают.
0
Андрей Андрей 4 года назад #
а можно такое сотворить для 1.10.7?

Еще от автора

Модуль для бесплатной версии компонента "Попутчики" автора Олег
и так представляю вашему вниманию модуль для бесплатной версии компонента "Попутчики" написанной Олегом.
список всех Event-ов системы
решил отдохнуть минут пять от подготовки к госам - полез сюда на сайт, прочитал такую строку в комментах в одном из последних блогов пришла идея разыс
[Хак] Выйти/войти и остаться на той же странице
где то видел на форуме тему про редирект при логине \ разлогине - как остаться на той же самой странице, если у вас стоит форма входа на всех страница
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.