Update 01/201311

Transkrypt

Update 01/201311
Update 01/201311
Poniższe poprawki wprowadzają następujące zmiany/funkcje:
1. Poprawka błędu w PA powodującego pojawienie się białej poświaty po kliknięciu na zdjęcie w menu
[ZDJĘCIA W TOPIE]
2. Aktualizacja modułu użytkownicy dodająca wyszukiwarkę
3. Dodanie w PA bezpośredniego linku do abonamentu wyświetlania, oraz abonamentu promocji na
podstronie zawierającej listę obiektów w PA
4. Rozbudowa funkcji w PA wysyłania wiadomości do użytkowników o nową opcję filtrowania.
W celu wykonania aktualizacji zalecamy skorzystanie z edytora zawierającego kodowanie składni. Osoby
nie mające podstawowej wiedzy z zakresu PHP, HTML, CSS, JAVASCRIPT nie powinny wykonywać
poniższych modyfikacji, bez uprzedniego wykonania kopii zapasowej edytowanych plików. Autor
oprogramowania, nie bierze odpowiedzialności za błędy wynikłe w błędnym wykonaniu niniejszej
aktualizacji.
1. Poprawka błędu w PA powodującego pojawienie się białej poświaty po kliknięciu
na zdjęcie w menu.
Po kliknięciu na obrazek topu, następnie kliknięciu na [X] w celu jego zamknięcia, pozostaje białe
podświetlenie na stronie.
Edycja pliku: /modules/system/templates/admin/banner/list.smarty
Wyszukujemy ciąg:
<a title="{$item.description}" href="{$smarty.const.APP_URL}userfiles/banner/{$item.banner_file}" rel="lightbox" class="noloading"><img height="100"
src="{$smarty.const.APP_URL}userfiles/banner/{$item.banner_file}" /></a>
i zamieniamy całość na:
<a title="{$item.description}" href="{$smarty.const.APP_URL}userfiles/banner/{$item.banner_file}" rel="lightbox" class="loading"><img height="100"
src="{$smarty.const.APP_URL}userfiles/banner/{$item.banner_file}" /></a>
2. Aktualizacja modułu użytkownicy dodająca wyszukiwarkę
Aktualizacja wprowadza wyszukiwarkę w liście dostępnych użytkowników
Edycja pliku: /modules/users/templates/admin/list.smarty
Wyszukujemy ciąg:
<p>W tym miejscu można zarządzać użytkownikami serwisu. System oferuje 2 typy kont: konto użytkownika, oraz konto administratora.</p>
Kod do wprowadzenia, zaraz pod powyższym ciągiem:
<form action="{$smarty.const.APP_URL}admin/users/list/" method="get">
<input type="hidden" name="searchEngine" value="TRUE" />
<table><tr class="header">
<td colspan="4">Wyszukiwarka</td>
</tr><tr>
<td class="left">Login</td>
<td class="right"><input type="text" name="search_login" value="{$smarty.get.search_login}" /></td>
<td class="left">E-Mail</td>
<td class="right"><input type="text" name="search_email" value="{$smarty.get.search_email}" /></td>
</tr><tr>
<td class="left">Status</td>
<td class="right"><input type="radio" name="search_status" value="TRUE" {if $smarty.get.search_status=="TRUE"}checked{/if} /> potwierdzony,
<input type="radio" name="search_status" value="FALSE" {if $smarty.get.search_status=="FALSE"}checked{/if} /> niepotwierdzony</td>
<td class="left">Data dodania</td>
<td class="right"><input type="text" name="search_create_date_from" value="{$smarty.get.search_create_date_from}" {jsCalendar} size="8"/> <input type="text" name="search_create_date_to" value="{$smarty.get.search_create_date_to}" {jsCalendar} size="8" /></td>
</tr><tr class="footer">
<td colspan="4"><input type="submit" value="wyszukaj &raquo;" /></td>
</tr></table>
</form>
Edycja pliku: /modules/users/admin.php
Wyszukujemy warunek case:
case "list":
$kernel->isAdmin();
$kernel->template("list.smarty");
$smarty->assign("lista" , $user->adminGetUsers());
break;
zamieniamy cały warunek, na poniższy kod:
case "list":
$kernel->isAdmin();
$kernel->template("list.smarty");
if(empty($_GET['searchEngine'])) {
$smarty->assign("lista" , $user->adminGetUsers());
} else {
$smarty->assign("lista" , $users->adminSearchUsers());
}
break;
Edycja pliku: /modules/users/users.class.php
Wyszukujemy funkcję:
public function adminGetUsers()
{
if($_SESSION['admin_user']['type']=="SUPPORT"):
$this->perpage = 50;
$this->type = "basic";
$this->sqlFullQuery = "SELECT * FROM " . SQLTABLE_USERS . " ORDER BY id";
return $this->paginate();
endif;
if($_SESSION['admin_user']['type']=="ADMIN"):
$this->perpage = 50;
$this->type = "basic";
$this->sqlFullQuery = "SELECT * FROM " . SQLTABLE_USERS . " WHERE type != 'SUPPORT' ORDER BY id";
return $this->paginate();
endif;
}
Poniżej tej funkcji ( po znaku } od nowej lini) wprowadzmy poniższy kod:
/**
Obsługa wyszukiwarki użytkowników
```````````````````````````````````````````````````````````````````````````
**/
public function adminSearchUsers() {
if(!empty($_GET['search_login'])) {
$query[] = " AND login='".$_GET['search_login']."' ";
}
if(!empty($_GET['search_email'])) {
$query[] = " AND email='".$_GET['search_email']."' ";
}
if(!empty($_GET['search_status'])) {
$query[] = " AND status='".$_GET['search_status']."' ";
}
if((!empty($_GET['search_create_date_from'])) AND (!empty($_GET['search_create_date_to']))) {
$query[] = " AND create_date BETWEEN '".$_GET['search_create_date_from']."' AND '".$_GET['search_create_date_to']."' ";
}
if((!empty($_GET['search_create_date_from'])) AND (empty($_GET['search_create_date_to']))) {
$query[] = " AND create_date >= '".$_GET['search_create_date_from']."' ";
}
if((empty($_GET['search_create_date_from'])) AND (!empty($_GET['search_create_date_to']))) {
$query[] = " AND create_date <= '".$_GET['search_create_date_to']."' ";
}
$this->perpage = 50;
$this->type = "basic2";
if($_SESSION['admin_user']['type']=="SUPPORT") {
$this->sqlFullQuery = "SELECT * FROM ". SQLTABLE_USERS . " WHERE id is not null ".implode($query)." ORDER BY id";
}
if($_SESSION['admin_user']['type']=="ADMIN") {
$this->sqlFullQuery = "SELECT * FROM ". SQLTABLE_USERS . " WHERE type != 'SUPPORT' ".implode($query)." ORDER BY id";
}
return $this->paginate();
}
3. Dodanie bezpośredniego linku do abonamentu wyświetlania, oraz abonamentu
promocji na podstronie zawierającej listę obiektów w PA
Edycja pliku: /modules/objects/templates/admin/objects/list.smarty
Wyszukujemy ciąg znaków:
{else}
wyświetlany
{/if}
Zamieniamy na:
{else}
wyświetlany
{/if}
<p><a href="{$smarty.const.APP_URL}admin/payments/abonamenty-aktywacja/?filter=true&search_name={$item.name}&search_status=all" class="button
noloading">abonament wyświetlania &raquo;</a><br/><a href="{$smarty.const.APP_URL}admin/payments/abonamenty-promocja/?
filter=true&search_name={$item.name}&search_status=all" class="button noloading">abonament promocji &raquo;</a></p>
4. Wysyłanie wiadomości do użytkowników z poziomu PA
Wprowadzenie dodatkowych opcji filtrowania jak:
• wszyscy użytkownicy
• z aktywnym obiektem
• z nieaktywnym obiektem
• bez dodanego obiektu
Edycja pliku: /modules/users/templates/admin/message-create.smarty
Wyszukujemy ciąg znaków:
<table><tr class="header">
<td colspan="2">Tytuł wiadomości</td>
</tr><tr>
Zamieniamy na:
<table><tr class="header">
<td colspan="2">Filtrowanie odbiorców</td>
</tr><tr>
<td colspan="2"><select name="filter">
<option value="0" {if $smarty.get.filter=="0"}selected{/if}>wszyscy użytkownicy</option>
<option value="1" {if $smarty.get.filter=="1"}selected{/if}>użytkownicy z aktywnym obiektem</option>
<option value="2" {if $smarty.get.filter=="2"}selected{/if}>użytkownicy z nieaktywnym obiektem</option>
<option value="3" {if $smarty.get.filter=="3"}selected{/if}>użytkownicy bez dodanego obiektu</option>
</select></td>
</tr><tr class="header">
<td colspan="2">Tytuł wiadomości</td>
</tr><tr>
Edycja pliku: /modules/users/users.class.php
Wyszukujemy funkcję:
public function prepareMessage()
{
if(empty($_POST['message_subject']))
$error[] = "Musisz podać nazwę wiadomości";
if(empty($_POST['message_text']))
$error[] = "Musisz podać tekst wiadomości";
if(is_array($error)):
return $error;
endif;
$emails = $this->sqlExec("*" , SQLTABLE_USERS , "WHERE type = 'USER' ORDER BY id");
if(isset($emails)):
foreach($emails as $item):
$this->sqlInsert(SQLTABLE_MESSAGES , "null,
'".$_POST['message_subject']."',
'".$_POST['message_text']."',
'".$item['first_name']." ".$item['last_name']."',
'".$item['email']."',
'WAITING',
NOW(),
NULL");
endforeach;
return true;
else:
$error[] = "W bazie danych nie ma użytkowników do których można wysłać powyższą wiadomość";
endif;
return $error;
}
Zamieniamy ją na poniższą:
public function prepareMessage()
{
if(empty($_POST['message_subject'])) {
$Error[] = "Musisz podać nazwę wiadomości";
}
if(empty($_POST['message_text'])) {
$Error[] = "Musisz podać tekst wiadomości";
}
if(is_array($error)) {
return $Error;
}
// Uses filters
switch($_POST['filter']) {
case "0": // wszyscy użytkownicy
$emails = $this->sqlExec("*" , SQLTABLE_USERS , "WHERE type = 'USER' ORDER BY id");
break;
case "1": // użytkownicy z aktywnym obiektem
$emails = $this->sqlQuery("SELECT * FROM ". SQLTABLE_USERS ." AS Users, ".SQLTABLE_OBJECTS." AS Objects WHERE
Users.type = 'USER' AND (Users.id=Objects.uid) GROUP BY (Users.id) ORDER BY Users.id");
break;
case "2": // użytkownicy z nieaktywnym obiektem
$emails = $this->sqlQuery("SELECT Users.*, Objects.uid, Objects.status FROM ". SQLTABLE_USERS ." AS Users,
".SQLTABLE_OBJECTS." AS Objects WHERE Users.type = 'USER' AND (Users.id=Objects.uid AND Objects.status=0) GROUP BY (Users.id) ORDER BY Users.id");
break;
case "3":
$emails = $this->sqlQuery("SELECT Users.*, Objects.uid FROM ". SQLTABLE_USERS ." AS Users, ".SQLTABLE_OBJECTS."
AS Objects WHERE Users.type = 'USER' AND (Users.id!=Objects.uid) GROUP BY (Users.id) ORDER BY Users.id");
break;
}
if(is_array($emails)) {
foreach($emails as $item) {
$this->sqlInsert(SQLTABLE_MESSAGES , "null,
'".$_POST['message_subject']."',
'".$_POST['message_text']."',
'".$item['first_name']." ".$item['last_name']."',
'".$item['email']."',
'WAITING',
NOW(),
NULL");
}
return true;
} else {
$Error[] = "W bazie danych nie ma użytkowników do których można wysłać powyższą wiadomość";
return $Error;
}
}

Podobne dokumenty