Revize 971
Přidáno uživatelem Michal Kliment před více než 13 roky(ů)
freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'address' => 'Adresa',
|
||
'address book' => 'Telefonní adresář',
|
||
'address of connecting place' => 'Adresa přípojného místa',
|
||
'address of connecting place is different than address of domicile' => 'Adresa přípojného místa je různá od adresy trvalého bydliště',
|
||
'address of domicile' => 'Adresa trvalého bydliště',
|
||
'address map' => 'Adresní mapa',
|
||
'address point' => 'Adresní bod',
|
||
'address point detail' => 'Detail adresního bodu',
|
||
... | ... | |
'at least one address point uses this street' => 'Alespoň jeden adresní bod používá tuto ulici.',
|
||
'at least one address point uses this town' => 'Alespoň jeden adresní bod používá toto město.',
|
||
'at least one interface or port still uses this segment' => 'Ještě nejméně jedno rozhraní nebo port používá tento segment.',
|
||
'at least one item still has this address point' => 'Ještě nejméně jedna položka používá tento adresní bod.',
|
||
'at least one member still has this address point' => 'Alespoň jeden člen má tento adresní bod.',
|
||
'auditing comittee' => 'Revizní komise',
|
||
'august' => 'Srpen',
|
||
... | ... | |
'confirmed by' => 'Potvrzeno od',
|
||
'confirmed time' => 'Čas potvrzení',
|
||
'confirmed works' => 'Potvrzené práce',
|
||
'connecting place' => 'Přípojné místo',
|
||
'connections' => 'Připojení',
|
||
'constant symbol' => 'Konstantní symbol',
|
||
'contact is owned by another user' => 'Kontakt je vlastněn jiným uživatelem',
|
||
... | ... | |
'device_type' => 'Typ zařízení',
|
||
'devices list' => 'Seznam zařízení',
|
||
'devices' => 'Zařízení',
|
||
'devices on this address' => 'Zařízení na této adrese',
|
||
'dhcp configuration' => 'Konfigurace DHCP',
|
||
'dhcp configuration file was successfully generated' => 'Konfigurační soubor pro DHCP byl úspěšně vygenerován',
|
||
'direction' => 'Směr',
|
||
... | ... | |
'domain' => 'Doména',
|
||
'document' => 'dokument',
|
||
'documentation' => 'Dokumentace',
|
||
'domicile' => 'Bydliště',
|
||
'domicile' => 'Trvalé bydliště',
|
||
'double entry account' => 'Podvojný účet',
|
||
'double-entry accounts' => 'Podvojné účty',
|
||
'driver' => 'Ovladač',
|
||
... | ... | |
'item' => 'Položka',
|
||
'item number' => 'Položka č.',
|
||
'item separator' => 'Oddělovač položek',
|
||
'items count' => 'Počet položek',
|
||
'item(s) have been successfully added' => 'položka(ek) bylo úspěšně přidáno',
|
||
'is not in system' => 'Není v systému',
|
||
'is not telephonists' => 'Není telefonista',
|
||
... | ... | |
'member_name' => 'Jméno člena (organizace)',
|
||
'members' => 'Členové',
|
||
'members account' => 'Účet člena',
|
||
'members on this address' => 'Členové na této adrese',
|
||
'membership can be ended only to former member' => 'Členství může být ukončeno jen bývalému členovi.',
|
||
'membership interrupt' => 'Přerušení členství',
|
||
'membership interrupt text' => 'Text pro přerušení členství',
|
||
... | ... | |
'originating call' => 'Odchozí volání',
|
||
'ospf area id' => 'OSPF area ID',
|
||
'other' => 'Ostatní',
|
||
'other information' => 'Další informace',
|
||
'other phones' => 'další telefony',
|
||
'out of peak' => 'Mimo špičku',
|
||
'outbound' => 'Odchozí',
|
||
... | ... | |
'this account does not exist' => 'Tento účet neexistuje.',
|
||
'this approval template already contains approval type with the same priority' => 'Tato hlasovací šablona již obsahuje hlasovací typ se stejnou prioritou.',
|
||
'this approval template already contains this approval type' => 'Tato hlasovací šablona již obsahuje tento hlasovací typ.',
|
||
'this information is required' => 'Tento údaj je povinný.',
|
||
'this member has already set up this fee type for this interval' => 'Tento člen má již nastaven tento typ poplatku pro tento interval.',
|
||
'this member has default system member fee %d %s' => 'Tento člen má výchozí systémový členský příspěvek %d %s.',
|
||
'this month has been already deducted!' => 'Tento měsíc už byl stržen!',
|
||
... | ... | |
'your work has been rejected' => 'Vaše práce byla zamítnuta',
|
||
'your work has been updated' => 'Vaše práce byla aktualizována',
|
||
'zip code' => 'PSČ'
|
||
);
|
||
);
|
freenetis/trunk/kohana/application/i18n/cs_CZ/help.php | ||
---|---|---|
'add_new_bank_transfer_without_counteraccount' => 'Umožňuje přidat bankovní převod bez protiúčtu, jde typicky o vklad, úrok bance apod. V běžném provozu využívejte automatický import výpisů. Ruční přidávání je tu pouze z důvodu, že byla potřeba dát do systému staré platby, které již nebylo možné parsovat.',
|
||
'add_new_transfer' => 'Zobrazí formulář, který umožňuje hospodáři sdružení přidat libovolný převod mezi dvěma podvojnými účty. Účetní korektnost tohoto zásahu je ovšem v zodpovědnosti účetního.',
|
||
'add_from_account' => 'Umožňuje poslat peníze z účtu na jiný účet. Například člen může poslat peníze na projektový účet na podporu nějakého projektu nebo jinému členovi, např. zaplatit rodičům internet, pokud mají samostatnou přípojku.',
|
||
'address_point_member_connecting_place' => 'Jedná se pouze o přípojné místo člena. Trvalé bydliště má na jiné adrese.',
|
||
'address_point_member_domicile' => 'Člen má na této adrese trvalé bydliště.',
|
||
'allowed_subnets' => 'Jedná se o možnost omezovat provoz členů na určitý počet současně jedoucích přípojných míst. Předpokládá, že každé přípojné místo člena se nachází v jiné podsíti.',
|
||
'allowed_subnets_count' => 'Jedná se o maximální počet současně povolených podsítí člena. IP adresám mimo těchto podsítí bude blokován přístup na internet (formou přesměrování). Nula znamená neomezený počet.',
|
||
'allowed_subnets_default_count' => 'Jedná se o výchozí počet současně povolených podsítí člena. IP adresám mimo těchto podsítí bude blokován přístup na internet (formou přesměrování). Nula znamená neomezený počet.',
|
||
... | ... | |
'ulogd_update_interval' => 'Interval aktualizace ulogd v sekundách. Po uplynutí této doby se zaktualizují počítadla provozu členů a najdou se příliš aktivní členové. Výchozí hodnota je 1800 sekund (30 minut).',
|
||
'unidentified_transfers' => 'Neidentifikované platby jsou všechny příchozí bankovní platby, které nebyl náš systém schopen z různých důvodů automaticky rozpoznat. Typicky se jedná o platby s chybným variabilním symbolem. Pokud zde svoji platbu najdete, pak kontaktujte hospodáře sdružení pro její správné přiřazení.',
|
||
'variable_symbol' => 'Variabilní symbol slouží k jednoznačnému určení příchozí platby člena.',
|
||
);
|
||
);
|
freenetis/trunk/kohana/application/helpers/callback.php | ||
---|---|---|
else
|
||
echo ' ';
|
||
}
|
||
|
||
|
||
/**
|
||
* Callback field for ip address. Leaves blank ip if needed.
|
||
* @author Jiri Svitak
|
||
... | ... | |
static function ip_address_field($item, $name, $args = array())
|
||
{
|
||
$ip_address = (isset($args[0]) && $args[0]) ? $item->ip_address.'/'.$item->subnet_range : $item->ip_address;
|
||
|
||
|
||
if ($item->ip_address_id)
|
||
echo html::anchor(url_lang::base()."ip_addresses/show/$item->ip_address_id", $ip_address);
|
||
else if ($item->ip_address != '')
|
||
... | ... | |
else if (!$item->ip_address_id)
|
||
echo '<span style="color: green">'.url_lang::lang('texts.Free').'</span>';
|
||
}
|
||
|
||
|
||
/**
|
||
* Callback for device type field.
|
||
* @author Jiri Svitak
|
||
... | ... | |
*/
|
||
static function device_type_field($item, $name)
|
||
{
|
||
echo html::anchor(url_lang::base()."devices/show/$item->device_id", $item->type);
|
||
echo html::anchor(url_lang::base()."devices/show/$item->device_id", $item->type);
|
||
}
|
||
|
||
|
||
/**
|
||
* Price field prints green amount of price of device in case that device is already repaid. Otherwise price is red.
|
||
* @author Jiri Svitak
|
||
... | ... | |
else
|
||
echo ' ';
|
||
}
|
||
|
||
|
||
/**
|
||
* Callback field for user name.
|
||
* @author Jiri Svitak
|
||
... | ... | |
*/
|
||
static function user_field($item, $name)
|
||
{
|
||
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_name);
|
||
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_name);
|
||
}
|
||
|
||
|
||
/**
|
||
* Callback field for user login.
|
||
* @author Jiri Svitak
|
||
... | ... | |
*/
|
||
static function user_login_field($item, $name)
|
||
{
|
||
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_login);
|
||
echo html::anchor(url_lang::base()."users/show/$item->user_id", $item->user_login);
|
||
}
|
||
|
||
|
||
/**
|
||
* Callback field for canceling redirection of one IP address on member's profile screen.
|
||
* @author Jiri Svitak
|
||
... | ... | |
echo url_lang::lang('texts.Cancel').' ';
|
||
echo html::anchor(url_lang::base()."redirect/delete/$item->ip_address_id/$item->message_id/member", url_lang::lang('texts.one IP address'));
|
||
echo ' | ';
|
||
echo html::anchor(url_lang::base()."redirect/delete_from_member/$item->member_id/$item->message_id", url_lang::lang('texts.all ip addresses of member'));
|
||
echo html::anchor(url_lang::base()."redirect/delete_from_member/$item->member_id/$item->message_id", url_lang::lang('texts.all ip addresses of member'));
|
||
}
|
||
|
||
/**
|
||
... | ... | |
self::member_field($item, $name, $args);
|
||
echo "</span>";
|
||
}
|
||
|
||
/**
|
||
* Callback function to print type of members address points
|
||
*
|
||
* @author Michal Kliment
|
||
* @param <type> $item
|
||
* @param <type> $name
|
||
*/
|
||
public static function address_point_member_field ($item, $name)
|
||
{
|
||
switch ($item->type)
|
||
{
|
||
// it's domicile of member
|
||
case 1:
|
||
echo url_lang::lang('texts.Domicile'). ' '.help::hint('address_point_member_domicile');
|
||
break;
|
||
// it's only connecting place of member, he has domicile on another address point
|
||
case 2:
|
||
echo url_lang::lang('texts.Connecting place'). ' '.help::hint('address_point_member_connecting_place');
|
||
break;
|
||
}
|
||
}
|
||
}
|
freenetis/trunk/kohana/application/models/members_domicile.php | ||
---|---|---|
<?php
|
||
/**
|
||
*
|
||
* @author Michal Kliment
|
||
* @copyright (c) 2011 Kliment Michal
|
||
* @license GNU GPLv3
|
||
* @license http://www.gnu.org/licenses/gpl.txt
|
||
*/
|
||
|
||
class Members_domicile_Model extends ORM
|
||
{
|
||
protected $belongs_to = array('address_point');
|
||
}
|
||
|
||
?>
|
freenetis/trunk/kohana/application/models/address_point.php | ||
---|---|---|
*/
|
||
function get_all_address_points($limit_from = 0, $limit_results = 50, $order_by = 'id', $order_by_direction = 'asc', $filter_values = array())
|
||
{
|
||
return $this->db->query("SELECT ap.id, s.street, ap.street_number, t.town, t.quarter, t.zip_code, CONCAT(X(ap.gps), ' ', Y(ap.gps)) AS gps, c.country_name
|
||
FROM address_points ap
|
||
LEFT JOIN countries c ON ap.country_id = c.id
|
||
LEFT JOIN streets s ON ap.street_id = s.id
|
||
LEFT JOIN towns t ON ap.town_id = t.id
|
||
ORDER BY $order_by $order_by_direction
|
||
LIMIT $limit_from, $limit_results");
|
||
return $this->db->query("
|
||
SELECT
|
||
ap.id,
|
||
s.street,
|
||
ap.street_number,
|
||
t.town, t.quarter,
|
||
t.zip_code,
|
||
CONCAT(X(ap.gps), ' ', Y(ap.gps)) AS gps,
|
||
c.country_name,
|
||
(SELECT count(id) AS member_count FROM members m WHERE address_point_id = ap.id) +
|
||
(SELECT count(id) AS device_count FROM devices d WHERE address_point_id = ap.id) +
|
||
(SELECT COUNT(id) AS members_domicile_count FROM members_domiciles WHERE address_point_id = ap.id) AS items_count
|
||
FROM address_points ap
|
||
LEFT JOIN countries c ON ap.country_id = c.id
|
||
LEFT JOIN streets s ON ap.street_id = s.id
|
||
LEFT JOIN towns t ON ap.town_id = t.id
|
||
ORDER BY $order_by $order_by_direction
|
||
LIMIT $limit_from, $limit_results
|
||
");
|
||
}
|
||
/**
|
||
* @author Michal Kliment
|
||
... | ... | |
*/
|
||
function count_all_items_by_address_point_id($address_point_id)
|
||
{
|
||
$result = $this->db->query("SELECT (member_count+device_count)AS count FROM (SELECT count(id) AS member_count FROM members m
|
||
WHERE address_point_id = $address_point_id) AS a, (SELECT count(id) AS device_count FROM devices d
|
||
WHERE address_point_id = $address_point_id) AS b");
|
||
$result = $this->db->query("
|
||
SELECT (member_count+device_count+members_domicile_count) AS count FROM
|
||
(
|
||
SELECT count(id) AS member_count FROM members m WHERE address_point_id = ?
|
||
) AS a,
|
||
(
|
||
SELECT count(id) AS device_count FROM devices d WHERE address_point_id = ?
|
||
) AS b,
|
||
(
|
||
SELECT COUNT(id) AS members_domicile_count FROM members_domiciles WHERE address_point_id = ?
|
||
) AS c
|
||
", array($address_point_id, $address_point_id, $address_point_id));
|
||
|
||
return ($result && $result->current()) ? $result->current()->count: 0;
|
||
}
|
||
... | ... | |
array($gpsx, $gpsy)
|
||
);
|
||
}
|
||
|
||
/**
|
||
* Returns all members on this address point
|
||
*
|
||
* @author Michal Kliment
|
||
* @return <type>
|
||
*/
|
||
public function get_all_members ()
|
||
{
|
||
return $this->db->query("
|
||
(SELECT m.id AS member_id, m.name AS member_name, IF(md.id IS NULL, 1,2) AS type FROM members m
|
||
LEFT JOIN members_domiciles md ON md.member_id = m.id
|
||
WHERE m.address_point_id = ?)
|
||
UNION
|
||
(SELECT m.id AS member_id, m.name AS member_name, 1 AS type FROM members_domiciles md
|
||
JOIN members m ON md.member_id = m.id
|
||
WHERE md.address_point_id = ?)
|
||
ORDER BY member_id
|
||
", $this->id, $this->id);
|
||
}
|
||
|
||
/**
|
||
* Returns all devices on this address point
|
||
*
|
||
* @author Michal Kliment
|
||
* @return <type>
|
||
*/
|
||
public function get_all_devices ()
|
||
{
|
||
return $this->db->query("
|
||
SELECT
|
||
d.id AS device_id, d.name AS device_name, u.id AS user_id, CONCAT(u.name,' ',u.surname) AS user_name, m.id AS member_id, m.name AS member_name
|
||
FROM devices d
|
||
JOIN users u ON d.user_id = u.id
|
||
JOIN members m ON u.member_id = m.id
|
||
WHERE d.address_point_id = ?
|
||
", array($this->id));
|
||
}
|
||
}
|
||
?>
|
freenetis/trunk/kohana/application/models/member.php | ||
---|---|---|
*/
|
||
class Member_Model extends ORM
|
||
{
|
||
protected $has_one = array('allowed_subnets_count', 'members_traffic');
|
||
protected $has_one = array('allowed_subnets_count', 'members_traffic','members_domicile');
|
||
protected $has_many = array('allowed_subnets', 'invoices', 'users', 'accounts', 'transfers', 'bank_accounts', 'membership_interrupts');
|
||
protected $belongs_to = array('address_point','user');
|
||
|
||
... | ... | |
'comment' => array('type' => 'string', 'column_name' => 'm.comment'),
|
||
'street_number' => array('type' => 'number')
|
||
);
|
||
|
||
|
||
public function __construct($id = false)
|
||
{
|
||
parent::__construct($id);
|
||
}
|
||
|
||
|
||
/**
|
||
* Function gets list of all members from database.
|
||
* Function gets list of all members from database.
|
||
* @param $limit_from starting row
|
||
* @param $limit_results number of rows
|
||
* @param $order_by sorting column
|
||
... | ... | |
LEFT JOIN towns t ON ap.town_id = t.id
|
||
$where
|
||
")->current()->total;
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* Function gets member for registration table.
|
||
* @param $limit
|
||
... | ... | |
ORDER BY name ASC
|
||
LIMIT $limit, $limit_results");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function gets all members to export.
|
||
* @author Jiri Svitak
|
||
... | ... | |
LEFT JOIN enum_types e ON m.type = e.id
|
||
LEFT JOIN (SELECT * FROM translations WHERE lang = '".Config::get('lang')."') f ON e.value = f.original_term");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function gets all members who have at least one ip address in given subnet.
|
||
* @author Jiri Svitak
|
||
... | ... | |
WHERE ip.subnet_id = $subnet_id
|
||
");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function gets member to show or edit.
|
||
* @param $id
|
||
... | ... | |
return $this->db->select(
|
||
array('members.registration', 'members.name as namem', 'members.address_point_id',
|
||
'members.variable_symbola',
|
||
'members.type as typem', 'members.organization_identifier', 'members.qos_ceil', 'members.qos_rate',
|
||
'members.type as typem', 'members.organization_identifier', 'members.qos_ceil', 'members.qos_rate',
|
||
'members.entrance_fee', 'members.debt_payment_rate',
|
||
'members.entrance_date', 'members.comment', 'members.locked',
|
||
'enum_types.value as member_type',
|
||
'enum_types.value as member_type',
|
||
'users.id', 'users.member_id',
|
||
'users.name', 'middle_name', 'surname',
|
||
'pre_title', 'post_title',
|
||
'users.name', 'middle_name', 'surname',
|
||
'pre_title', 'post_title',
|
||
'login', 'users.type', 'birthday', 'leaving_date','users.application_password','users.comment as ucomment',
|
||
'members_traffics.upload', 'members_traffics.download', 'members_traffics.active',
|
||
'SUM(members_traffics_daily.upload) as total_upload',
|
||
... | ... | |
->join('members_traffics_daily', 'members_traffics_daily.member_id', 'members.id', 'LEFT')
|
||
->where('members.id=' . intval($id) . ' AND users.id IS NOT NULL')->groupby('members.id')->limit(1)->get();
|
||
}
|
||
|
||
|
||
/**
|
||
* @param $phone - string containing a phone number
|
||
* @return first member_id of a member with given phone number
|
||
... | ... | |
public function find_member_id_by_phone($phone) {
|
||
/*
|
||
$q="(SELECT member_id FROM users WHERE phone='$phone')
|
||
UNION
|
||
(SELECT users.member_id FROM 'contacts'
|
||
JOIN enum_types ON contacts.type=enum_types.id
|
||
AND enum_types.value='phone' AND contacts.value='$phone'
|
||
JOIN users ON users.id=contacts.user_id)
|
||
UNION
|
||
(SELECT users.member_id FROM 'contacts'
|
||
JOIN enum_types ON contacts.type=enum_types.id
|
||
AND enum_types.value='phone' AND contacts.value='$phone'
|
||
JOIN users ON users.id=contacts.user_id)
|
||
";
|
||
$query=$this->db->query($q);
|
||
return $query->current()->member_id;
|
||
... | ... | |
/**
|
||
* @author Tomas Dulik, Ondřej Fibich
|
||
* @return unknown_type
|
||
*
|
||
*
|
||
*/
|
||
public function find_member_by_phone($phone) {
|
||
/*
|
||
public function find_member_by_phone($phone) {
|
||
/*
|
||
$q="(
|
||
SELECT members.*
|
||
FROM members
|
||
JOIN users ON members.id = users.member_id
|
||
AND users.phone = '$phone'
|
||
)
|
||
UNION
|
||
(
|
||
UNION
|
||
(
|
||
SELECT members.*
|
||
FROM members
|
||
JOIN users ON members.id = users.member_id
|
||
... | ... | |
*/
|
||
|
||
/* Slower alternative:
|
||
$q='SELECT members.id FROM members
|
||
JOIN users ON members.id=users.member_id
|
||
WHERE REPLACE(phone," ", "") LIKE '%$phone%' LIMIT 1';
|
||
*/
|
||
$q='SELECT members.id FROM members
|
||
JOIN users ON members.id=users.member_id
|
||
WHERE REPLACE(phone," ", "") LIKE '%$phone%' LIMIT 1';
|
||
*/
|
||
return $this->db->query("
|
||
SELECT m.* FROM members m
|
||
JOIN users ON m.id = users.member_id
|
||
... | ... | |
/**
|
||
* @author Tomas Dulik, using http://us3.php.net/manual/en/function.crc32.php#86628
|
||
* CRC-CCITT-16 algorithm for the polynomial 0x1021
|
||
*
|
||
* Tomas Dulik note: the algorithm is too nice to be true.
|
||
*
|
||
* Tomas Dulik note: the algorithm is too nice to be true.
|
||
* The values it computes differ from the values returned by other calculators, e.g.
|
||
* http://zorc.breitbandkatze.de/crc.html
|
||
* @todo: rewrite this function for a proper implementation!!!
|
||
*
|
||
*
|
||
* This function can be used for generating the payments variable symbol from member id.
|
||
* crc16 can check error bursts up to 16bits long, so if the member mistypes such
|
||
* a generated variable symbol, almost any possible error should be detected.
|
||
* @param $data - 16bit integer for which crc16 should be computed
|
||
* @return 16bit int value containing crc16
|
||
*/
|
||
public function crc16($data) {
|
||
$crc = 0xFFFF;
|
||
public function crc16($data) {
|
||
$crc = 0xFFFF;
|
||
for ($i = 0; $i < 2; $i++) {
|
||
$x = (($crc >> 8) ^ $data) & 0xFF;
|
||
$data=$data >> 8;
|
||
... | ... | |
}
|
||
return $crc;
|
||
}
|
||
|
||
|
||
/**
|
||
* @author Tomas Dulik
|
||
* @author Tomas Dulik
|
||
* This function can be used for generating variable symbols from member id
|
||
* @param $member_id
|
||
* @return string containing concatenation of member_id and 5 digits of its crc16
|
||
... | ... | |
$member_id=(int)substr($vs, 0, $vs_len-5);
|
||
$crc=$this->crc16($member_id);
|
||
$vs_crc=(int)substr($vs, $vs_len-5, 5);
|
||
if ($crc==$vs_crc)
|
||
if ($crc==$vs_crc)
|
||
$member=$this->find($member_id);
|
||
}
|
||
return $this;
|
||
... | ... | |
LEFT JOIN transfers t ON t.origin_id = q2.aid
|
||
GROUP BY q2.aid
|
||
) q3
|
||
SET m.redirect = m.redirect | 4
|
||
SET m.redirect = m.redirect | 4
|
||
WHERE m.id = q3.mid AND $low_amount < (q3.inbound - q3.outbound) AND (q3.inbound - q3.outbound) < $high_amount
|
||
");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function sets debtor redirection to members who have their current credit is negative.
|
||
* @author Jiri Svitak
|
||
... | ... | |
LEFT JOIN transfers t ON t.origin_id = q2.aid
|
||
GROUP BY q2.aid
|
||
) q3
|
||
SET m.redirect = m.redirect | 2
|
||
SET m.redirect = m.redirect | 2
|
||
WHERE m.id = q3.mid AND (q3.inbound - q3.outbound) < 0
|
||
");
|
||
");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function sets membership interrupt redirection to all members who interrupted their membership.
|
||
* @author Jiri Svitak
|
||
... | ... | |
JOIN members_fees mf ON mi.members_fee_id = mf.id
|
||
WHERE mf.activation_date <= CURDATE() AND CURDATE() <= mf.deactivation_date
|
||
) mi
|
||
SET m.redirect = m.redirect | 1
|
||
WHERE m.id = mi.mid
|
||
");
|
||
SET m.redirect = m.redirect | 1
|
||
WHERE m.id = mi.mid
|
||
");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function sets optional message to all members.
|
||
* @author Jiri Svitak
|
||
... | ... | |
// setting redirection
|
||
$this->db->query("UPDATE members SET redirect = redirect | 8;");
|
||
}
|
||
|
||
|
||
/**
|
||
* Function cancels redirection of given number.
|
||
* @author Jiri Svitak
|
||
... | ... | |
}
|
||
}
|
||
|
||
?>
|
||
?>
|
freenetis/trunk/kohana/application/controllers/towns.php | ||
---|---|---|
$query = $town_model->get_all_towns($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
|
||
|
||
// it creates grid to view all address points
|
||
$grid = new Grid(url_lang::base().'address_points', url_lang::lang('texts.List of all towns'), array(
|
||
$grid = new Grid(url_lang::base().'address_points', '', array(
|
||
//'separator' => '<br />-----------',
|
||
//'use_paginator' => false,
|
||
//'use_selector' => false,
|
||
... | ... | |
// 'filter' => $filter->view
|
||
));
|
||
|
||
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
|
||
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
|
||
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
|
||
if ($this->acl_check_new('Address_points_Controller', 'town'))
|
||
$grid->add_new_button(url_lang::base().'towns/add', url_lang::lang('texts.Add new town'));
|
||
|
||
... | ... | |
|
||
$grid->datasource($query);
|
||
|
||
$links = array();
|
||
$links[] = html::anchor(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
|
||
$links[] = url_lang::lang('texts.Towns');
|
||
$links[] = html::anchor(url_lang::base().'streets', url_lang::lang('texts.Streets'));
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = url_lang::lang('texts.Towns');
|
||
$view->title = url_lang::lang('texts.List of all towns');
|
||
$view->content = new View('show_all');
|
||
$view->content->headline = '';
|
||
$view->content->submenu = implode(' | ',$links);
|
||
$view->content->headline = url_lang::lang('texts.List of all towns');
|
||
$view->content->table = $grid;
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
if (!$this->acl_check_view('Address_points_Controller', 'town'))
|
||
Controller::error(ACCESS);
|
||
|
||
$name = $town->town;
|
||
$name .= ($town->quarter != '') ? ' - '.$town->quarter : '';
|
||
$name .= ', '.$town->zip_code;
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','town') ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
|
||
$breadcrumbs[] = $name;
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Town detail');
|
||
$view->content = new View('towns_show');
|
||
$view->content->town = $town;
|
||
... | ... | |
// access control
|
||
if (!$this->acl_check_new('Address_points_Controller','town'))
|
||
Controller::error(ACCESS);
|
||
|
||
|
||
// creates new form
|
||
$form = new Forge(url::base().url::current(TRUE), '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
... | ... | |
url::redirect(url_lang::base().'towns/show_all');
|
||
}
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','town') ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
|
||
$breadcrumbs[] = url_lang::lang('texts.Add new town');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Add new town');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Add new town');
|
||
$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
url::redirect(url_lang::base().'towns/show_all');
|
||
}
|
||
|
||
$name = $town->town;
|
||
$name .= ($town->quarter != '') ? ' - '.$town->quarter : '';
|
||
$name .= ', '.$town->zip_code;
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','town')) ? html::anchor (url_lang::base().'towns/show_all', url_lang::lang('texts.Towns')) : url_lang::lang('texts.Towns');
|
||
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','town')) ? html::anchor (url_lang::base().'towns/show/'.$town->id, $name) : $name;
|
||
$breadcrumbs[] = url_lang::lang('texts.Edit');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Edit town');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Editing of town');
|
||
$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'towns/show_all',url_lang::lang('texts.Back to list of all towns'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
freenetis/trunk/kohana/application/controllers/address_points.php | ||
---|---|---|
$limit_results = (int) $this->input->get('record_per_page');
|
||
|
||
// parameters control
|
||
$allowed_order_type = array('id', 'street', 'street_number', 'town', 'quarter', 'zip_code', 'gps');
|
||
$allowed_order_type = array('id', 'street', 'street_number', 'town', 'quarter', 'zip_code', 'gps', 'items_count');
|
||
if (!in_array(strtolower($order_by), $allowed_order_type))
|
||
$order_by = 'id';
|
||
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
|
||
... | ... | |
$query = $address_point_model->get_all_address_points($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
|
||
|
||
// it creates grid to view all address points
|
||
$grid = new Grid(url_lang::base().'address_points', url_lang::lang('texts.List of all address points'), array(
|
||
$grid = new Grid(url_lang::base().'address_points', '', array(
|
||
//'separator' => '<br />-----------',
|
||
//'use_paginator' => false,
|
||
//'use_selector' => false,
|
||
... | ... | |
// 'filter' => $filter->view
|
||
));
|
||
|
||
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
|
||
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
|
||
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
|
||
$grid->add_new_button(url_lang::base().'address_points/add', url_lang::lang('texts.Add address point'));
|
||
|
||
$grid->order_field('id')->label('ID');
|
||
... | ... | |
$grid->order_field('street_number')->label(url_lang::lang('texts.street number'));
|
||
$grid->order_field('town')->label(url_lang::lang('texts.town'));
|
||
$grid->order_field('quarter')->label(url_lang::lang('texts.quarter'));
|
||
$grid->order_field('zip_code')->label(url_lang::lang('texts.zip_code'));
|
||
$grid->order_field('zip_code')->label(url_lang::lang('texts.zip code'));
|
||
$grid->order_callback_field('gps')->label(url_lang::lang('texts.gps'))->callback('callback::gps_field');
|
||
$grid->order_field('items_count')->label(url_lang::lang('texts.Items count'));
|
||
|
||
if ($this->acl_check_view(get_class($this), 'address_point'))
|
||
$grid->action_field('id') ->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'address_points/show') ->action(url_lang::lang('texts.Show'));
|
||
if ($this->acl_check_edit(get_class($this), 'address_point'))
|
||
$grid->action_field('id') ->label(url_lang::lang('texts.Fill in')) ->url(url_lang::base().'address_points/edit') ->action(url_lang::lang('texts.Fill in'));
|
||
if ($this->acl_check_delete(get_class($this), 'address_point'))
|
||
$grid->action_field('id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'address_points/delete') ->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this address point').'\');"');
|
||
$grid->action_field('id') ->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'address_points/delete') ->action(url_lang::lang('texts.Delete'))->class('delete_link');
|
||
|
||
$grid->datasource($query);
|
||
|
||
$links = array();
|
||
$links[] = url_lang::lang('texts.Address points');
|
||
$links[] = html::anchor(url_lang::base().'towns', url_lang::lang('texts.Towns'));
|
||
$links[] = html::anchor(url_lang::base().'streets', url_lang::lang('texts.Streets'));
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = url_lang::lang('texts.Address points');
|
||
$view->title = url_lang::lang('texts.List of all address points');
|
||
$view->content = new View('show_all');
|
||
$view->content->headline = '';
|
||
$view->content->submenu = implode(' | ',$links);
|
||
$view->content->headline = url_lang::lang('texts.List of all address points');
|
||
$view->content->table = $grid;
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
*/
|
||
function show($address_point_id = NULL)
|
||
{
|
||
// bad parameter
|
||
if (!$address_point_id)
|
||
Controller::warning(PARAMETER);
|
||
|
||
$address_point = new Address_point_Model($address_point_id);
|
||
|
||
// address point doesn't exist
|
||
if (!$address_point->id)
|
||
Controller::error(RECORD);
|
||
|
||
// access control
|
||
if (!$this->acl_check_view(get_class($this), 'address_point'))
|
||
Controller::error(ACCESS);
|
||
|
||
... | ... | |
$members = $member_model->where('address_point_id', $address_point->id)->find_all();
|
||
$count_members = count($members);
|
||
|
||
//echo count($address_point->members);
|
||
|
||
$gps = "";
|
||
|
||
if (! empty ($address_point->gps))
|
||
... | ... | |
}
|
||
}
|
||
|
||
// finds all members on this address
|
||
$members = $address_point->get_all_members();
|
||
|
||
$members_grid = new Grid(url_lang::base().'members', null,array(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'total_items' => count($members)
|
||
));
|
||
|
||
$members_grid->field('member_id')->label('ID');
|
||
$members_grid->callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
|
||
$members_grid->callback_field('type')->label(url_lang::lang('texts.Type'))->callback('callback::address_point_member_field');
|
||
|
||
$members_grid->datasource($members);
|
||
|
||
// finds all devices on this address
|
||
$devices = $address_point->get_all_devices();
|
||
|
||
$devices_grid = new Grid(url_lang::base().'devices', null,array(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'total_items' => count($devices)
|
||
));
|
||
|
||
$devices_grid->field('device_id')->label('ID');
|
||
$devices_grid->callback_field('device_id')->label(url_lang::lang('texts.Device'))->callback('callback::device_field');
|
||
$devices_grid->callback_field('user_id')->label(url_lang::lang('texts.User'))->callback('callback::User_field');
|
||
$devices_grid->callback_field('member_id')->label(url_lang::lang('texts.Member'))->callback('callback::member_field');
|
||
|
||
$devices_grid->datasource($devices);
|
||
|
||
$name = $address_point->street->street;
|
||
$name .= ($address_point->street_number) ? ' '.$address_point->street_number : '';
|
||
$name .= ', '.$address_point->town->town;
|
||
$name .= ($address_point->town->quarter) ? ' - '.$address_point->town->quarter : '';
|
||
$name .= ', '.$address_point->town->zip_code;
|
||
$name .= ($address_point->country_id && $address_point->country_id != Settings::get('default_country')) ? ', '.$address_point->country->country_name : '';
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
|
||
$breadcrumbs[] = $name;
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Address point detail');
|
||
$view->content = new View('address_points_show');
|
||
$view->content->address_point = $address_point;
|
||
$view->content->count_members = $count_members;
|
||
$view->content->members_grid = $members_grid;
|
||
$view->content->devices_grid = $devices_grid;
|
||
$view->content->gps = $gps;
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
url::redirect(url_lang::base().'address_points/show_all');
|
||
}
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
|
||
$breadcrumbs[] = url_lang::lang('texts.Add new');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Edit address point');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Editing of address point');
|
||
$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
{
|
||
$form_data[$key] = htmlspecialchars($value);
|
||
}
|
||
|
||
|
||
$use_gps = !empty($form_data['gpsx']) && !empty($form_data['gpsy']);
|
||
|
||
$issaved = TRUE;
|
||
... | ... | |
{
|
||
$gpsx = doubleval($form_data["gpsx"]);
|
||
$gpsy = doubleval($form_data["gpsy"]);
|
||
|
||
|
||
if (gps::is_valid_degrees_coordinate($form->gpsx->value))
|
||
{
|
||
$gpsx = gps::degrees2real($form->gpsx->value);
|
||
... | ... | |
url::redirect(url_lang::base().'address_points/show_all');
|
||
}
|
||
|
||
$name = $address_point->street->street;
|
||
$name .= ($address_point->street_number) ? ' '.$address_point->street_number : '';
|
||
$name .= ', '.$address_point->town->town;
|
||
$name .= ($address_point->town->quarter) ? ' - '.$address_point->town->quarter : '';
|
||
$name .= ', '.$address_point->town->zip_code;
|
||
$name .= ($address_point->country_id && $address_point->country_id != Settings::get('default_country')) ? ', '.$address_point->country->country_name : '';
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show_all', url_lang::lang('texts.Address points')) : url_lang::lang('texts.Address points');
|
||
$breadcrumbs[] = ($this->acl_check_view(get_class($this), 'address_point')) ? html::anchor (url_lang::base().'address_points/show/'.$address_point->id, $name) : $name;
|
||
$breadcrumbs[] = url_lang::lang('texts.Fill in GPS');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Add address point');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Editing of address point');
|
||
$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'address_points/show_all',url_lang::lang('texts.Back to list of all address points'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
if (!$address_point->id)
|
||
Controller::error(RECORD);
|
||
|
||
$members = $address_point->members;
|
||
$devices = $address_point->devices;
|
||
|
||
if (count($members)==0)
|
||
{
|
||
|
||
if (count($devices)==0)
|
||
{
|
||
if ($address_point->delete())
|
||
$this->session->set_flash('message', url_lang::lang('texts.Address point has been successfully deleted.'));
|
||
else
|
||
$this->session->set_flash('message', url_lang::lang('texts.Error - cant delete address point.'));
|
||
}
|
||
else
|
||
$this->session->set_flash('message', url_lang::lang('texts.At least one device still has this address point.'));
|
||
}
|
||
if (!$address_point->count_all_items_by_address_point_id($address_point_id))
|
||
$this->session->set_flash('message', url_lang::lang('texts.Address point has been successfully deleted.'));
|
||
else
|
||
$this->session->set_flash('message', url_lang::lang('texts.At least one member still has this address point.'));
|
||
$this->session->set_flash('message', url_lang::lang('texts.At least one item still has this address point.'));
|
||
|
||
url::redirect(url_lang::base().'address_points/show_all');
|
||
|
||
}
|
||
}
|
||
?>
|
freenetis/trunk/kohana/application/controllers/streets.php | ||
---|---|---|
$query = $street_model->get_all_streets($sql_offset, (int)$limit_results, $order_by, $order_by_direction);
|
||
|
||
// it creates grid to view all address points
|
||
$grid = new Grid(url_lang::base().'streets', url_lang::lang('texts.List of all streets'), array(
|
||
$grid = new Grid(url_lang::base().'streets', '', array(
|
||
//'separator' => '<br />-----------',
|
||
//'use_paginator' => false,
|
||
//'use_selector' => false,
|
||
... | ... | |
// 'filter' => $filter->view
|
||
));
|
||
|
||
$grid->add_new_button(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
|
||
$grid->add_new_button(url_lang::base().'towns', url_lang::lang('texts.Towns'));
|
||
$grid->add_new_button(url_lang::base().'streets', url_lang::lang('texts.Streets'));
|
||
if ($this->acl_check_new('Address_points_Controller', 'town'))
|
||
$grid->add_new_button(url_lang::base().'streets/add', url_lang::lang('texts.Add new street'));
|
||
|
||
... | ... | |
|
||
$grid->datasource($query);
|
||
|
||
$links = array();
|
||
$links[] = html::anchor(url_lang::base().'address_points', url_lang::lang('texts.Address points'));
|
||
$links[] = html::anchor(url_lang::base().'towns', url_lang::lang('texts.Towns'));
|
||
$links[] = url_lang::lang('texts.Streets');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = url_lang::lang('texts.Streets');
|
||
$view->title = url_lang::lang('texts.List of all streets');
|
||
$view->content = new View('show_all');
|
||
$view->content->headline = '';
|
||
$view->content->submenu = implode(' | ',$links);
|
||
$view->content->headline = url_lang::lang('texts.List of all streets');
|
||
$view->content->table = $grid;
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
if (!$this->acl_check_view('Address_points_Controller','street'))
|
||
Controller::error(ACCESS);
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','street') ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Streets')) : url_lang::lang('texts.Streets');
|
||
$breadcrumbs[] = $street->street;
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Street detail');
|
||
$view->content = new View('streets_show');
|
||
$view->content->street = $street;
|
||
... | ... | |
url::redirect(url_lang::base().'streets/show_all');
|
||
}
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = $this->acl_check_view('Address_points_Controller','street') ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Streets')) : url_lang::lang('texts.Streets');
|
||
$breadcrumbs[] = url_lang::lang('texts.Add new street');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Add new street');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Add new street');
|
||
$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
||
... | ... | |
url::redirect(url_lang::base().'streets/show_all');
|
||
}
|
||
|
||
// breadcrumbs navigation
|
||
$breadcrumbs = array();
|
||
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','street')) ? html::anchor (url_lang::base().'streets/show_all', url_lang::lang('texts.Street')) : url_lang::lang('texts.Street');
|
||
$breadcrumbs[] = ($this->acl_check_view('Address_points_Controller','street')) ? html::anchor (url_lang::base().'streets/show/'.$street->id, $street->street) : $street->street;
|
||
$breadcrumbs[] = url_lang::lang('texts.Edit');
|
||
|
||
$view = new View('main');
|
||
$view->breadcrumbs = implode(' » ', $breadcrumbs);
|
||
$view->title = url_lang::lang('texts.Edit street');
|
||
$view->content = new View('form');
|
||
$view->content->headline = url_lang::lang('texts.Editing of street');
|
||
$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
|
||
//$view->content->link_back = html::anchor(url_lang::base().'streets/show_all',url_lang::lang('texts.Back to list of all streets'));
|
||
$view->content->form = $form->html();
|
||
$view->render(TRUE);
|
||
}
|
freenetis/trunk/kohana/application/controllers/members.php | ||
---|---|---|
$order_by = 'id';
|
||
if (strtolower($order_by_direction) != 'asc' && strtolower($order_by_direction) != 'desc')
|
||
$order_by_direction = 'asc';
|
||
// types of members to filtering
|
||
// types of members to filtering
|
||
$enum_types = new Enum_type_Model();
|
||
$types = $enum_types->get_values(Enum_type_Model::$member_type_id);
|
||
$types[0] = url_lang::lang('texts.All');
|
||
... | ... | |
new Table_Form_Item('select','type','Type', $types),
|
||
"tr",
|
||
new Table_Form_Item('text','street_number','Street number'),
|
||
"td",
|
||
"td",
|
||
new Table_Form_Item('submit','submit','Filter')
|
||
)
|
||
);
|
||
);
|
||
$arr_gets = array();
|
||
foreach ($this->input->get() as $key=>$value)
|
||
$arr_gets[] = $key.'='.$value;
|
||
$query_string = '?'.implode('&',$arr_gets);
|
||
// load members
|
||
$model_members = new Member_Model();
|
||
$model_members = new Member_Model();
|
||
$total_members = $model_members->count_all_members($filter->values());
|
||
if (($sql_offset = ($page - 1) * $limit_results) > $total_members)
|
||
$sql_offset = 0;
|
||
$sql_offset = 0;
|
||
$query = $model_members->get_all_members($sql_offset, (int)$limit_results, $order_by, $order_by_direction, $filter->values());
|
||
// it creates grid to view all members
|
||
$headline = url_lang::lang('texts.List of all members');
|
||
... | ... | |
'limit_results' => $limit_results,
|
||
'query_string' => $query_string,
|
||
'filter' => $filter->view
|
||
));
|
||
));
|
||
// grid buttons
|
||
if ($this->acl_check_new(get_class($this), 'members'))
|
||
if ($this->acl_check_new(get_class($this), 'members'))
|
||
$grid->add_new_button(url_lang::base().'members/add', url_lang::lang('texts.Add new member'));
|
||
if ($this->acl_check_edit('Members_Controller', 'registration'))
|
||
$grid->add_new_button(url_lang::base().'members/registration', url_lang::lang('texts.Edit registrations'));
|
||
... | ... | |
//$grid->add_new_button(url_lang::base().'members/xls_export', url_lang::lang('texts.Export to XLS'));
|
||
// csv export of members
|
||
$grid->add_new_button(url_lang::base().'export/csv/members', url_lang::lang('texts.Export to CSV (utf-8)'));
|
||
$grid->add_new_button(url_lang::base().'export/csv/members/windows-1250', url_lang::lang('texts.Export to CSV (windows-1250)'));
|
||
$grid->add_new_button(url_lang::base().'export/csv/members/windows-1250', url_lang::lang('texts.Export to CSV (windows-1250)'));
|
||
}
|
||
// database columns - some are commented out because of lack of space
|
||
$grid->order_field('id')->label('ID');
|
||
... | ... | |
$view->content->headline = $headline;
|
||
$view->render(TRUE);
|
||
} // end of show_all function
|
||
|
||
|
||
|
||
/**
|
||
* Shows details of member.
|
||
* @param $member_id id of member to show
|
||
... | ... | |
}
|
||
}
|
||
|
||
if ($member->members_domicile->address_point->id)
|
||
{
|
||
$domicile_address = ($member->members_domicile->address_point->street_id && $member->members_domicile->address_point->street->id) ? $member->members_domicile->address_point->street->street : '';
|
||
$domicile_address .= ($member->members_domicile->address_point->street_number) ? ' '.$member->members_domicile->address_point->street_number : '';
|
||
|
||
if ($member->members_domicile->address_point->town_id && $member->members_domicile->address_point->town->id)
|
||
{
|
||
$domicile_town = $member->members_domicile->address_point->town->town;
|
||
$domicile_town .= ($member->members_domicile->address_point->town->quarter) ? '-'.$member->members_domicile->address_point->town->quarter : '';
|
||
$domicile_town .= ', '.$member->members_domicile->address_point->town->zip_code;
|
||
}
|
||
}
|
||
|
||
/************************************************************ VoIP ****************************************************/
|
||
|
||
$billing = new Billing();
|
||
... | ... | |
$b_account = $billing->get_account($member->id);
|
||
$voip_sip = new Voip_sip_Model();
|
||
$voip = $voip_sip->get_all_record_by_member_limited($member->id);
|
||
|
||
|
||
$voip_grid = new Grid(url_lang::base().'members', null, array(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
... | ... | |
'order_by_direction' => $order_by_direction,
|
||
'variables' => $member_id.'/'
|
||
));
|
||
|
||
|
||
$voip_grid->field('id')->label('ID');
|
||
$voip_grid->field('name')->label(url_lang::lang('texts.Number'));
|
||
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.Account'))->url(url_lang::base().'voip/show')->action(url_lang::lang('texts.Show'));
|
||
$voip_grid->action_field('user_id')->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/show')->action(url_lang::lang('texts.Show'));
|
||
$voip_grid->datasource($voip);
|
||
|
||
|
||
if ($has_driver && ($b_account != null))
|
||
{
|
||
$voip_grid->add_new_button(url_lang::base().'voip_calls/show_by_member/'.$member->id, url_lang::lang('texts.List of all calls'));
|
||
... | ... | |
|
||
// contacts of main user of member
|
||
$contacts = $contact_model->find_all_users_contacts($user->id);
|
||
|
||
|
||
$contact_types = array();
|
||
foreach($contacts as $i => $contact)
|
||
$contact_types[$i] = $enum_type_model->get_value($contact->type);
|
||
... | ... | |
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
));
|
||
|
||
|
||
if ($this->acl_check_new('Users_Controller','users') || ($this->session->get('user_type') == User_Model::$member && $this->acl_check_new('Users_Controller','users',$member->id)))
|
||
$users_grid->add_new_button(url_lang::base().'users/add/'.$member->id, url_lang::lang('texts.Add new user'));
|
||
|
||
|
||
$users_grid->field('id')->label('ID');
|
||
$users_grid->field('name')->label(url_lang::lang('texts.Name'));
|
||
$users_grid->field('surname')->label(url_lang::lang('texts.Surname'));
|
||
$users_grid->field('login')->label(url_lang::lang('texts.Username'));
|
||
|
||
|
||
if($this->acl_check_view('Users_Controller','users',$member_id))
|
||
$users_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/show')->action(url_lang::lang('texts.Show'));
|
||
|
||
... | ... | |
|
||
if($this->acl_check_delete('Users_Controller','users',$member_id))
|
||
$users_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->class('delete_link');
|
||
|
||
|
||
if ($this->acl_check_view('Devices_Controller', 'devices', $member_id))
|
||
$users_grid->action_field('id') ->label(url_lang::lang('texts.Devices'))->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'));
|
||
|
||
if ($this->acl_check_edit('Users_Controller', 'work', $member_id))
|
||
$users_grid->action_field('id') ->label(url_lang::lang('texts.Works'))->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'));
|
||
|
||
|
||
$users_grid->datasource($users);
|
||
|
||
|
||
// membership interrupts
|
||
$membership_interrupts = ORM::factory('membership_interrupt')->get_all_by_member($member_id);
|
||
$membership_interrupts_grid = new Grid(url_lang::base().'members', null, array(
|
||
... | ... | |
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
));
|
||
|
||
|
||
if ($this->acl_check_new(get_class($this), 'membership_interrupts', $member_id))
|
||
$membership_interrupts_grid->add_new_button(url_lang::base().'membership_interrupts/add/'.$member_id, url_lang::lang('texts.Add new interrupt of membership'));
|
||
|
||
... | ... | |
$membership_interrupts_grid->field('from')->label(url_lang::lang('texts.Date from'));
|
||
$membership_interrupts_grid->field('to')->label(url_lang::lang('texts.Date to'));
|
||
$membership_interrupts_grid->field('comment')->label(url_lang::lang('texts.Comment'));
|
||
|
||
|
||
if ($this->acl_check_edit(get_class($this), 'membership_interrupts', $member_id))
|
||
$membership_interrupts_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/edit')->action(url_lang::lang('texts.Edit'));
|
||
|
||
... | ... | |
$membership_interrupts_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/delete')->action(url_lang::lang('texts.Delete'))->class('delete_link');
|
||
|
||
$membership_interrupts_grid->datasource($membership_interrupts);
|
||
|
||
|
||
|
||
/************************************************************** BUILDING OF LINKS ****************************************************************************/
|
||
|
||
$member_links = array();
|
||
... | ... | |
// user's works link
|
||
if ($member->id != 1 && $this->acl_check_view('Users_Controller', 'work', $member->id))
|
||
$user_links[] = html::anchor(url_lang::base().'works/show_by_user/'.$user->id, url_lang::lang('texts.Show works'));
|
||
|
||
|
||
if ($member->type != $former_type_id)
|
||
{
|
||
// change password link
|
||
... | ... | |
$view->content->expiration_date = $expiration_date;
|
||
$view->content->account = (isset($account)) ? $account : NULL;
|
||
$view->content->address = (isset($address)) ? $address : '';
|
||
$view->content->domicile_address = (isset($domicile_address) && $domicile_address != '') ? $domicile_address : '';
|
||
$view->content->domicile_town = (isset($domicile_town)) ? $domicile_town : '';
|
||
$view->content->town = (isset($town)) ? $town : '';
|
||
$view->content->billing_has_driver = $has_driver;
|
||
$view->content->billing_account = $b_account;
|
||
... | ... | |
} // end of show function
|
||
|
||
|
||
|
||
|
||
/**
|
||
* Gets expiration date of member's payments.
|
||
* @author Michal Kliment
|
||
... | ... | |
// finds min and max date = due to prevent before unending loop
|
||
$min_fee_date = $fee_model->get_min_fromdate_fee_by_type ('regular member fee');
|
||
$max_fee_date = $fee_model->get_max_todate_fee_by_type ('regular member fee');
|
||
|
||
|
||
while (true)
|
||
{
|
||
$date = date::create(15, $month, $year);
|
||
... | ... | |
$payment_left -= $payment;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* Function adds new member to database. Creates user of type member assigned to this member.
|
||
* @return unknown_type
|
||
... | ... | |
// cannot add former member
|
||
unset($types[$enum_types->get_type_id('Former member')]);
|
||
// regular member by default
|
||
$type_id = $enum_types->get_type_id('Regular member');
|
||
$type_id = $enum_types->get_type_id('Regular member');
|
||
// entrance fee
|
||
$fee_model = new Fee_Model();
|
||
$fee = $fee_model->get_by_date_type(date('Y-m-d'), 'entrance fee');
|
||
... | ... | |
->options($types)->rules('required')->selected($type_id);
|
||
$form->input('membername')->label(url_lang::lang('texts.Name of organization').': '.help::hint('member_name'))->rules('length[1,60]');
|
||
$form->input('organization_identifier')->label(url_lang::lang('texts.Organization identifier').':')->rules('length[3,20]');
|
||
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Login data'));
|
||
$form->input('login')->label(url_lang::lang('texts.username').':')
|
||
->rules('required|length[5,20]')
|
||
->callback(array($this, 'valid_username'));
|
||
->callback(array($this, 'valid_username'));
|
||
$form->password('password')->label(url_lang::lang('texts.Password').': '.help::hint('password'))->rules('required|length[3,50]')->class('password');
|
||
$form->password('confirm_password')->label(url_lang::lang('texts.confirm password').':')->rules('required|length[3,50]')->matches($form->password);
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Address'));
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Address of connecting place'));
|
||
$form->dropdown('street_id')->label(url_lang::lang('texts.street').':')->rules('required')->options($arr_streets)->add_button('streets');
|
||
$form->input('street_number')->label(url_lang::lang('texts.street number').':')->rules('required|length[1,50]|valid_numeric');
|
||
$form->dropdown('town_id')->label(url_lang::lang('texts.town').':')->rules('required')->options($arr_towns)->add_button('towns');
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Address of domicile'));
|
||
$form->checkbox('use_domicile')->label(url_lang::lang('texts.Address of connecting place is different than address of domicile'));
|
||
$form->dropdown('domicile_street_id')->label(url_lang::lang('texts.street').':')->options($arr_streets)->add_button('streets');
|
||
$form->input('domicile_street_number')->label(url_lang::lang('texts.street number').':')->rules('length[1,50]|valid_numeric')->callback(array($this, 'valid_docimile_street_number'));
|
||
$form->dropdown('domicile_town_id')->label(url_lang::lang('texts.town').':')->options($arr_towns)->add_button('towns');
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Contact information'));
|
||
$form->dropdown('phone_prefix')->label(url_lang::lang('texts.Telephone prefix').':')->rules('required')->options($phone_prefixes)->selected(Settings::get('default_country'));
|
||
$form->input('phone')->label(url_lang::lang('texts.phone').':')->rules('required|length[9,40]')->callback(array($this, 'valid_phone'));
|
||
$form->input('email')->label(url_lang::lang('texts.email').':')
|
||
->rules('length[3,50]|valid_email')
|
||
->callback(array($this, 'valid_email'));
|
||
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Account information'));
|
||
$form->input('variable_symbol')->label(url_lang::lang('texts.Variable symbol').': '.help::hint('variable_symbol'))->rules('required|length[9,10]')->callback(array($this, 'valid_var_sym'));
|
||
$form->input('entrance_fee')->label(url_lang::lang('texts.Entrance fee').': '.help::hint('entrance_fee'))->rules('valid_numeric')->value($entrance_fee);
|
||
... | ... | |
if (!$address_point->save())
|
||
throw new Exception();
|
||
}
|
||
$member->address_point_id = $address_point->id;
|
||
|
||
$account->account_attribute_id = Account_attribute_Model::$credit;
|
||
if ($form_data['membername'] == '')
|
||
$account->name = $form_data['surname'].' '.$form_data['name'];
|
||
... | ... | |
$member->name = $form_data['name'].' '.$form_data['surname'];
|
||
else
|
||
$member->name = $form_data['membername'];
|
||
$member->address_point_id = $address_point->id;
|
||
$member->type = $form_data['type'];
|
||
$member->organization_identifier = $form_data['organization_identifier'];
|
||
$member->organization_identifier = $form_data['organization_identifier'];
|
||
$member->qos_ceil = $form_data['qos_ceil'];
|
||
$member->qos_rate = $form_data['qos_rate'];
|
||
$member->entrance_fee = $form_data['entrance_fee'];
|
||
$member->debt_payment_rate = $form_data['debt_payment_rate'];
|
||
// saving member
|
||
$member->save_throwable();
|
||
// saving user
|
||
// saving user
|
||
$user->member_id = $member->id;
|
||
$user->save_throwable();
|
||
// telephone
|
||
... | ... | |
$contact->add($user);
|
||
$contact->save_throwable();
|
||
}
|
||
// saving account
|
||
// saving account
|
||
$account->member_id = $member->id;
|
||
$account->save_throwable();
|
||
|
||
... | ... | |
$allowed_subnets_count->count = Settings::get('allowed_subnets_default_count');
|
||
$allowed_subnets_count->save();
|
||
|
||
// address of connecting place is different than address of domicile
|
||
if ($form_data['use_domicile'])
|
||
{
|
||
$address_point = $address_point_model->get_address_point($form_data['domicile_town_id'],$form_data['domicile_street_id'],$form_data['domicile_street_number']);
|
||
// address point doesn't exist exist, create it
|
||
if (!$address_point || !$address_point->id)
|
||
{
|
||
$address_point->clear();
|
||
|
||
$address_point->town_id = $form_data['domicile_town_id'];
|
||
$address_point->street_id = $form_data['domicile_street_id'];
|
||
$address_point->street_number = $form_data['domicile_street_number'];
|
||
$address_point->gps = '';
|
||
|
||
if (!$address_point->save())
|
||
throw new Exception();
|
||
}
|
||
// test if address of connecting place is really different than address of domicile
|
||
if ($member->address_point_id != $address_point->id)
|
||
{
|
||
$members_domicile = new Members_domicile_Model();
|
||
$members_domicile->member_id = $member->id;
|
||
$members_domicile->address_point_id = $address_point->id;
|
||
|
||
if (!$members_domicile->save())
|
||
throw new Exception ();
|
||
}
|
||
}
|
||
|
||
// insert regular member access rights
|
||
Controller::insert_phpgacl($user->id,$user->surname.' '.$user->name,$user->login, $form_data['type']);
|
||
unset($form_data);
|
||
... | ... | |
}
|
||
catch (Exception $e)
|
||
{
|
||
|
||
|
||
// rollback transaction
|
||
$member->transaction_rollback();
|
||
$this->session->set_flash('message', url_lang::lang('texts.Error - cant add new member.'));
|
||
... | ... | |
//$view->content->link_back = html::anchor(url_lang::base().'members/show_all/',url_lang::lang('texts.Back to list of members'));
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
|
||
} // end of add function
|
||
|
||
|
||
/**
|
||
* Form for editing member.
|
||
* @param $member_id id of member to edit
|
||
... | ... | |
// bad parameter
|
||
if (!isset($member_id) || !is_numeric ($member_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
|
||
$member = new Member_Model($member_id);
|
||
|
||
// member doesn't exist
|
||
... | ... | |
Controller::error(ACCESS);
|
||
|
||
$this->member_id = $member->id;
|
||
|
||
|
||
// streets
|
||
$street_model = new Street_Model();
|
||
$streets = $street_model->find_all();
|
||
|
||
|
||
$arr_streets = array();
|
||
foreach ($streets as $street)
|
||
{
|
||
$arr_streets[$street->id] = $street->street;
|
||
}
|
||
asort($arr_streets, SORT_LOCALE_STRING);
|
||
|
||
|
||
// towns
|
||
$town_model = new Town_Model();
|
||
$towns = $town_model->find_all();
|
||
|
||
|
||
$arr_towns = array();
|
||
foreach ($towns as $town)
|
||
{
|
||
... | ... | |
$arr_towns[$town->id] .= ', '.$town->zip_code;
|
||
}
|
||
asort($arr_towns, SORT_LOCALE_STRING);
|
||
|
||
|
||
// engineers
|
||
$user_model = new User_Model();
|
||
$member = new Member_Model($member_id);
|
||
... | ... | |
asort($arr_engineers, SORT_LOCALE_STRING);
|
||
|
||
$allowed_subnets_count = ($member->allowed_subnets_count) ? $member->allowed_subnets_count->count : 0;
|
||
|
||
|
||
$form = new Forge(url_lang::base().'members/edit/'.$member->id, '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Basic information'));
|
||
if ($this->acl_check_edit(get_class($this),'name',$member->id))
|
||
$form->input('membername')->label(url_lang::lang('texts.Member name').':')->rules('required|length[1,60]')->value($member->name);
|
||
... | ... | |
if ($this->acl_check_edit('Members_Controller', 'var_sym', $member->id) && $member->id != 1)
|
||
$form->input('variable_symbol')->label(url_lang::lang('texts.Variable symbol').': '.help::hint('variable_symbol'))->rules('required|length[1,10]')->value($member->variable_symbol)->callback(array($this, 'valid_var_sym'));
|
||
|
Také k dispozici: Unified diff
Merge z testingu do trunku: U clena pridana moznost pridat trvalou adresu. Mirne vylepsena prace s adresnimi body.