Недавно пользователь с ником
Evanescence
попросил переделать плагин "Флеш эффекты на Аватаре" для движка Social Enigne под Instant CMS, что соответственно и было сделано, ниже прилагаю скриншоты и описание того как устанавливать к сожалению другого способа кроме как хака не нашлось.
Функционал:
Установка флеш эффекта на аватар;
Ограничение по карме для установки эффекта;
Взимание оплаты в рейтингах за установку эффекта;
Удаление эффекта со своего аватара;



Инструкция по установке:
1. Выполнить запрос из файла install.sql в БД исправив предварительно префикс cms на тот который у вас;
2. Залить содержимое папки /components/users/effects/ из архива в аналогичную папку на сервере;
3. В файле /components/users/frontend.php после строчек:
$plugins = $model->getPluginsOutput($usr);
вставьте строчку:
$effs = $model->getEffects();
чуть ниже после строчек:
$smarty->assign('plugins', $plugins);
вставьте строчку:
$smarty->assign('effs', $effs);
4.
В файле
/components/users/model.php
в самом низу (перед }) добавить функцию:
public function getEffects(){ $result = $this->inDB->query("SELECT * FROM cms_effects"); while ($item = $this->inDB->fetch_assoc($result)){ $items[] = $item; } return $items; }
5. В файле /components/users/includes/usercore.php в функции usrImageNOdb после строчек:
вставьте строчку:
if ($eff_ava = getUserEffect($user_id, $usr_imageurl, $small)){ return $eff_ava; }
тут же ниже после закрытия функции usrImageNOdb добавить функцию:
function getUserEffect($user_id, $usr_imageurl, $small){ $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); $cfg = $inCore->loadComponentConfig('users'); if ($small=='small'){ $usr_imageurl = '/images/users/avatars/small/'.$usr_imageurl; $w = $h = $cfg['smallw'].'px'; }else{ $usr_imageurl = '/images/users/avatars/'.$usr_imageurl; $w = $cfg['medw'].'px'; $h = "100%"; } if ($eff_arr = $inDB->get_fields("cms_effects_chels", "to_user='{$user_id}'", "*")){ return '<div id=\'ava\' style=\'background: url('.$usr_imageurl.') no-repeat center center;\' align="center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://pdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lecteur" width="'.$w.'" height="'.$h.'"><param name="wmode" value="transparent"><param name="movie" value="/components/users/effects/'.$eff_arr['url'].'"><param name="allowScriptAccess" value="never"><embed allowscriptaccess="never" type="application/x-shockwave-flash" src="/components/users/effects/'.$eff_arr['url'].'" wmode="transparent" width="'.$w.'" height="'.$h.'"></object></div>'; } }
{Не обязательно} 5.1 Кому нужно чтобы и при вызове функции usrImage выдавался аватар с флешанимацией в файле /components/users/includes/usercore.php
после строчки:
вставить строчку:
if ($eff_ava = getUserEffect($user_id, $usr['imageurl'], $small)){ return $eff_ava; }
6. Закинуть в папку /components/users/includes/ из аналогичного расположения в архиве файл addusreffects.php
7. В файле /templates/ВАШ_ШАБЛОН/components/com_users_profile.tpl после строчек:
<div class="usr_avatar"> {$usr.avatar} </div>
вставьте строчки:
{if !$myprofile} {literal} <script> function show_eff_form(){ document.getElementById('effects').style.display = document.getElementById('effects').style.display == "block" ? "none" : "block"; } function establish_effect(effect_id){ $.ajax({ type: "POST", url: "/components/users/includes/addusreffects.php", data: "from_user={/literal}{$is_auth}{literal}&to_user={/literal}{$usr.id}{literal}&effect_id="+effect_id, success: function(msg){ if (msg == 'OK'){ location.reload(); }else{ alert(msg); } } }); } </script> {/literal} <div class='func'> <a href="javascript:void(0)" onclick="show_eff_form();" >Установить/изменить эффект</a> </div> <div name="effects" id="effects" style="display: none; background-color:#cccccc;"> <br /> {foreach item=eff from=$effs} <b>{$eff.title}</b><br> <div class="avatar"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://pdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" id="lecteur" width="100px" height="100px"> <param name="wmode" value="transparent"> <param name="movie" value="/components/users/effects/{$eff.url}"> <param name="allowScriptAccess" value="never"> <embed allowscriptaccess="never" type="application/x-shockwave-flash" src="/components/users/effects/{$eff.url}" wmode="transparent" width="100px" height="100px"> </object> </div> <a href="javascript:void(0)" onclick="establish_effect({$eff.id});">Выбрать Эффект</a> <br /> {/foreach} <br /> </div> {else} {literal} <script> function delete_effect(){ $.ajax({ type: "POST", url: "/components/users/includes/addusreffects.php", data: "action=del_effect&user_id={/literal}{$usr.id}{literal}", success: function(msg){ if (msg == 'OK'){ location.reload(); }else{ alert(msg); } } }); } </script> {/literal} <a href="javascript:void(0)" onclick="delete_effect();">Удалить эффект</a> {/if}
Кто не менял системные файлы из папки users и не менял шаблон профиля, могут просто залить папку components в корень сайта и выполнить 1 и 7 пункт из инструкции.
А вот и сам архив с хаком:
http://cmsinstant.ru/users/files/download222.html