Revize 904
Přidáno uživatelem Jiří Sviták před více než 13 roky(ů)
freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'add new whole device for user' => 'Přidat nové celé zařízení pro uživatele',
|
||
'add new work' => 'Přidat novou práci',
|
||
'add new work report' => 'Přidat nový pracovní výkaz',
|
||
'add private phone number contact' => 'Přidat soukromý telefoní kontakt',
|
||
'add private phone number contact' => 'Přidat soukromý telefonní kontakt',
|
||
'add redirection to all ip addresses of member' => 'Přidat přesměrování všem IP adresám člena',
|
||
'add smokeping menu item' => 'Přidat položku menu smokepingu',
|
||
'add smokeping record' => 'Přidat záznam smokepingu',
|
||
... | ... | |
'admins were succesfully imported' => 'Správci byli úspěšně importováni',
|
||
'advanced configuration' => 'Pokročilé nastavení',
|
||
'advanced information' => 'Pokročilé informace',
|
||
'after you will solve previous problems, you can turn them on in' => 'Až vyřešíte přecházející problémy, můžete je zapnout v',
|
||
'after you\'ve done that, click login' => 'Poté, co to dokončíte, klikněte na "Přihlásit".',
|
||
'after you\'ve done that, you can continue' => 'Poté, co tak učiníte, můžete pokračovat.',
|
||
'agree' => 'Souhlas',
|
||
... | ... | |
'back to login' => 'Zpět na přihlášení',
|
||
'back to the list of unread messages' => 'Zpět na seznam nepřečtených zpráv',
|
||
'back to messages for redirection' => 'Zpět na zprávy pro přesměrování',
|
||
'back to phone invoices' => 'Zpět na telefoní účty',
|
||
'back to phone invoice' => 'Zpět na telefoní účet',
|
||
'back to phone invoices' => 'Zpět na telefonní účty',
|
||
'back to phone invoice' => 'Zpět na telefonní účet',
|
||
'back to ports list' => 'Zpět na seznam portů',
|
||
'back to profile of association' => 'Zpět na profil sdružení',
|
||
'back to project accounts' => 'Zpět na projektové účty',
|
||
... | ... | |
'bitrate' => 'Rychlost přenosu',
|
||
'before getting started, we need some information on the database' => 'Předtím než začneme, potřebujeme několik informací o databázi.',
|
||
'both' => 'obojí',
|
||
'but i can\'t set file permission to 660' => 'Ale nemůžu nastavit oprávnění souboru na 660',
|
||
'but i can\'t write the configphp file' => 'Ale nemůžu zapisovat do souboru <code>config.php</code>.',
|
||
'but i can\'t write the htaccess file' => 'Ale nemůžu zapisovat do souboru <code>.htaccess</code>.',
|
||
'but there are some problems' => 'Ale je zde několik problémů',
|
||
'buy date' => 'Datum koupě',
|
||
'cancel' => 'Zrušit',
|
||
'called number' => 'Volané číslo',
|
||
... | ... | |
'credit subaccounts' => 'Kreditní podúčty',
|
||
'csv file template' => 'Šablona CSV souboru',
|
||
'csv file templates' => 'Šablony CSV souborů',
|
||
'currency' => 'Měna',
|
||
'current application password is' => 'Současné aplikační heslo je',
|
||
'current credit' => 'Současný kredit',
|
||
'currency' => 'Měna',
|
||
'currently clean urls are turn off' => 'V současné době jsou čistá URL vypnuta.',
|
||
'czk' => 'Kč',
|
||
'database' => 'Databáze',
|
||
'database has been successfully updated' => 'Databáze byla úspěšně upravena.',
|
||
... | ... | |
'do you want to delete this device including all its interfaces and ip adresses' => 'Chcete smazat toto zařízení včetně všech rozhraní a IP adres',
|
||
'do you want to delete this interface' => 'Chcete smazat toto rozhraní',
|
||
'do you want to delete this ip address' => 'Chcete smazat tuto IP adresu',
|
||
'do you want to delete this phone invoice' => 'Chcete smazat tuto telefoní fakturu',
|
||
'do you want to delete this phone invoice' => 'Chcete smazat tuto telefonní fakturu',
|
||
'do you want to delete this port' => 'Chcete smazat tento port',
|
||
'do you want to delete this rule' => 'Chcete smazat toto pravidlo',
|
||
'do you want to delete this smokeping record' => 'Chcete smazat tento záznam smokepingu',
|
||
... | ... | |
'edit member limit' => 'Upravit limit člena',
|
||
'edit message' => 'Upravit zprávu',
|
||
'edit port' => 'Úprava portu',
|
||
'edit private phone number contact' => 'Upravit soukromý telefoní kontakt',
|
||
'edit private phone number contact' => 'Upravit soukromý telefonní kontakt',
|
||
'edit redirection message' => 'Úprava zprávy přesměrování',
|
||
'edit registrations' => 'Upravit přihlášky',
|
||
'edit routerboard backup' => 'Upravit zálohu routerboardu',
|
||
... | ... | |
'good' => 'Dobré',
|
||
'gps' => 'GPS souřadnice',
|
||
'group' => 'Skupina',
|
||
'group selection by same phone number' => 'Sdružovat výběry dle telefoních čísel',
|
||
'group selection by same phone number' => 'Sdružovat výběry dle telefonních čísel',
|
||
'groups of users' => 'Skupiny uživatelů',
|
||
'growth of members' => 'Růst členů',
|
||
'hello' => 'Dobrý den',
|
||
... | ... | |
'htaccess file hasn\'t been successfully created' => 'Soubor .htaccess nebyl úspěšně vytvořen.',
|
||
'i' => 'P',
|
||
'i accept this message and i want to cancel this redirection' => 'Beru na vědomí tuto zprávu a chci zrušit toto přesměrování',
|
||
'i can\'t set file permission to 660' => 'Nemůžu nastavit oprávnění souboru na 660',
|
||
'i can\'t write the configphp file' => 'Nemůžu zapisovat do souboru <code>config.php</code>.',
|
||
'i can\'t write the htaccess file' => 'Nemůžu zapisovat do souboru <code>.htaccess</code>.',
|
||
'id' => 'ID',
|
||
'id of member' => 'ID člena',
|
||
'if for any reason this automatic config file creation doesn\'t work, don\'t worry' => 'Jestliže z nějakého důvodu toto automatické vytvoření konfiguračního souboru nebude fungovat, nezoufejte.',
|
||
... | ... | |
'install' => 'Instalovat',
|
||
'installation' => 'Instalace',
|
||
'installation done' => 'Instalace hotova',
|
||
'installation has been finished' => 'Instalace byla dokončena.',
|
||
'installation has been successfully finished' => 'Instalace byla úspěšně dokončena.',
|
||
'interests' => 'Úroky',
|
||
'interests nr' => 'Počet úroků',
|
||
... | ... | |
'my profile' => 'Můj profil',
|
||
'my transfers' => 'Moje převody',
|
||
'my users' => 'Moji uživatelé',
|
||
'my voip calls' => 'Moje VoIP hovory',
|
||
'my works' => 'Moje práce',
|
||
'n' => 'U',
|
||
'name' => 'Jméno',
|
||
... | ... | |
'please choose language' => 'Prosím vyberte jazyk',
|
||
'please enter the code you received in an sms message' => 'Prosím vložte kód, který jste obdrželi v SMS zprávě',
|
||
'please fill in the form with information about your association' => 'Prosím, vyplňte formulář údaji o vašem sdružení',
|
||
'please report this error as bug using form below' => 'Nahlaště prosím tuto chybu jako bug tímto formulářem',
|
||
'please select a method of obtaining a password and follow the instructions' => 'Prosím zvolte způsob získání hesla a pokračujte dle instrukcí',
|
||
'please use button to save form' => 'Použijte prosím tlačítko pro uložení formuláře',
|
||
'polarization' => 'Polarizace',
|
||
... | ... | |
'send date' => 'Datum odeslání',
|
||
'send e-mail' => 'Pošli e-mail',
|
||
'send e-mail notification after expiration' => 'Poslat zprávu na e-mail po vypršení přesměrování',
|
||
'send error report' => 'Zaslat chybové hlášení',
|
||
'send money to other account' => 'Poslat peníze na jiný účet',
|
||
'send sms' => 'Pošli SMS',
|
||
'send sms message' => 'Poslat SMS zprávu',
|
||
... | ... | |
'sent message' => 'Odeslaná zpráva',
|
||
'september' => 'Září',
|
||
'service' => 'Služba',
|
||
'server error' => 'Chyba serveru',
|
||
'settings' => 'Nastavení',
|
||
'settings for configuration files has been successfully updated' => 'Nastavení pro kofigurační soubory bylo úspěšně upraveno',
|
||
'setup config' => 'Nastavení konfigurace',
|
||
... | ... | |
'show answer for this message' => 'Zobrazit odpověď na tuto zprávu',
|
||
'show approval template' => 'Zobrazit hlasovací šablonu',
|
||
'show approval type' => 'Zobrazit hlasovací typ',
|
||
'show calls of whole member' => 'Zobrazit hovory celého člena',
|
||
'show clouds' => 'Zobrazit oblasti',
|
||
'show details' => 'Zobrazit detaily',
|
||
'show devices' => 'Zobrazit zařízení',
|
||
... | ... | |
'you have no permission to delete redirection' => 'Nemáte práva ke smazání přesměrování',
|
||
'you have no permission to edit redirection' => 'Nemáte práva k úpravám přesměrování',
|
||
'you have to set up it by yourself:' => 'Budete jej muset nastavit ručně:',
|
||
'you must create it manually and paste the following text into it' => 'Musíte jej vytvořit ručně a zkopírovat do něj následující text.',
|
||
'you must create it manually and paste the following text into it' => 'Musíte jej vytvořit ručně a zkopírovat do něj následující text',
|
||
'you will need to know the following items before proceeding' => 'Budete potřebovat znát následující položky před pokračováním:',
|
||
'your ip address has not been found in database' => 'Vaše IP adresa nebyla nalezena v databázi.',
|
||
'your accout has been locked' => 'Váš účet byl uzamčen.',
|
freenetis/trunk/kohana/application/i18n/cs_CZ/core.php | ||
---|---|---|
<?php defined('SYSPATH') or die('No direct access allowed.');
|
||
|
||
$lang = array
|
||
(
|
||
'display stack trace' => 'Zobrazit trasování zásobníku',
|
||
'error_message' => 'Chyba se vyskytla na <strong>řádku %s</strong> souboru <strong>%s</strong>.',
|
||
'please report this error as bug using form below' => 'Nahlašte prosím tuto chybu jako bug tímto formulářem',
|
||
'send error report' => 'Zaslat chybové hlášení',
|
||
'server error' => 'Chyba serveru',
|
||
'stack_trace' => 'Trasování zásobníku',
|
||
'stats_footer' => 'Načteno za {execution_time} sekund, použito {memory_usage} paměti. Generovánou Kohanou v{kohana_version}.',
|
||
'unknown error' => 'Neznámá chyba',
|
||
);
|
||
?>
|
freenetis/trunk/kohana/application/helpers/url.php | ||
---|---|---|
exit('<a href="'.$uri.'">'.$uri.'</a>');
|
||
}
|
||
|
||
/**
|
||
* Creates URL from URI
|
||
*
|
||
* @author Michal Kliment
|
||
* @param string $uri
|
||
* @return string
|
||
*/
|
||
public static function create ($uri)
|
||
{
|
||
return (substr(strtolower($uri),0,7) != 'http://' && substr(strtolower($uri),0,8) != 'https://' && substr(strtolower($uri),0,6) != 'ftp://') ? 'http://'.$uri : $uri;
|
||
}
|
||
|
||
} // End url
|
freenetis/trunk/kohana/application/helpers/date.php | ||
---|---|---|
return num::null_fill($hours,2).':'.num::null_fill($minutes,2).':'.num::null_fill($seconds,2);
|
||
}
|
||
|
||
/**
|
||
* Rounds date up
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $day
|
||
* @param int $month
|
||
* @param int $year
|
||
* @return bool
|
||
*/
|
||
public function round_up (&$day, &$month, &$year)
|
||
{
|
||
if ($day >= 15)
|
||
{
|
||
$month++;
|
||
|
||
if ($month == 13)
|
||
{
|
||
$month = 1;
|
||
$year++;
|
||
}
|
||
|
||
$day = 1;
|
||
|
||
return true;
|
||
}
|
||
else
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* Rounds date down
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $day
|
||
* @param int $month
|
||
* @param int $year
|
||
* @return boolean
|
||
*/
|
||
public function round_down (&$day, &$month, &$year)
|
||
{
|
||
if ($day < 15)
|
||
{
|
||
$month--;
|
||
|
||
if ($month == 0)
|
||
{
|
||
$month = 12;
|
||
$year--;
|
||
}
|
||
|
||
$day = date::days_of_month($month);
|
||
|
||
return true;
|
||
}
|
||
else
|
||
return false;
|
||
}
|
||
|
||
} // End date
|
freenetis/trunk/kohana/application/helpers/callback.php | ||
---|---|---|
|
||
echo html::image(array('src' => url::base().'media/images/'.$state.'.png', 'title' => url_lang::lang('texts.'.$state)));
|
||
}
|
||
|
||
/**
|
||
* Callback to print caller
|
||
*
|
||
* @author Michal Kliment
|
||
* @param <type> $item
|
||
* @param <type> $name
|
||
* @param <type> $args
|
||
*/
|
||
public static function voip_caller($item, $name, $args = array())
|
||
{
|
||
$number = VoIP_calls_Controller::parse_number(substr($item->caller, 4, strlen($item->caller) - 4));
|
||
|
||
echo VoIP_calls_Controller::number($number, $args[0], $args[1]);
|
||
}
|
||
|
||
/**
|
||
* Callback to print called
|
||
*
|
||
* @author Michal Kliment
|
||
* @param <type> $item
|
||
* @param <type> $name
|
||
* @param <type> $args
|
||
*/
|
||
public static function voip_callcon($item, $name, $args = array())
|
||
{
|
||
$number = VoIP_calls_Controller::parse_number(substr($item->callcon, 4, strlen($item->callcon) - 4),$item->area);
|
||
|
||
echo VoIP_calls_Controller::number($number, $args[0], $args[1]);
|
||
}
|
||
}
|
freenetis/trunk/kohana/application/helpers/text.php | ||
---|---|---|
return strtr($s, $tbl);
|
||
}
|
||
|
||
/**
|
||
* Prints phone number in pretty format
|
||
*
|
||
* @author Michal Kliment
|
||
* @param string $number
|
||
* @param string $country_code
|
||
* @return string
|
||
*/
|
||
public static function phone_number ($number, $country_code)
|
||
{
|
||
$val = $country_code . ' ';
|
||
|
||
$length = strlen($number);
|
||
|
||
$pointer = $length % 3;
|
||
|
||
if ($pointer)
|
||
{
|
||
$val .= substr($number, 0, $pointer).' ';
|
||
}
|
||
|
||
while ($pointer < $length)
|
||
{
|
||
$val .= substr($number, $pointer, 3).' ';
|
||
$pointer +=3;
|
||
}
|
||
|
||
return $val;
|
||
}
|
||
|
||
|
||
} // End text
|
freenetis/trunk/kohana/application/models/fee.php | ||
---|---|---|
}
|
||
|
||
/**
|
||
* Returns regular member fee of member in date
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $member_id
|
||
* @param string $date
|
||
* @return int
|
||
*/
|
||
public function get_regular_member_fee_by_member_date ($member_id, $date)
|
||
{
|
||
$fee = $this->get_fee_by_member_date_type ($member_id, $date, 'regular member fee');
|
||
|
||
if ($fee && $fee->id)
|
||
return $fee->fee;
|
||
|
||
$default_fee = $this->get_default_fee_by_date_type ($date, 'regular member fee');
|
||
|
||
if ($default_fee && $default_fee->id)
|
||
return $default_fee->fee;
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**
|
||
* Returns fee by special type
|
||
*
|
||
* @author Michal Kliment
|
freenetis/trunk/kohana/application/models/device.php | ||
---|---|---|
WHERE device_id = $device_id
|
||
");
|
||
}
|
||
|
||
/**
|
||
* Returns all member's devices with debt payments
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $member_id
|
||
* @return MySQL_Result object
|
||
*/
|
||
public function get_member_devices_with_debt_payments ($member_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT price, payment_rate, buy_date FROM devices d
|
||
LEFT JOIN users u ON d.user_id = u.id
|
||
WHERE u.member_id = ? AND price IS NOT NULL AND price > 0
|
||
", array($member_id));
|
||
}
|
||
|
||
}
|
||
|
freenetis/trunk/kohana/application/models/user.php | ||
---|---|---|
", array($user_id, Contact_Model::TYPE_EMAIL));
|
||
}
|
||
|
||
/**
|
||
* Returns user by phone number and country code
|
||
*
|
||
* @author Michal Kliment
|
||
* @param string $number
|
||
* @param string $country_code
|
||
* @return MySQL_Result object
|
||
*/
|
||
public function get_user_by_phone_number_country_code ($number, $country_code)
|
||
{
|
||
return $this->db->query("
|
||
SELECT u.* FROM contacts c
|
||
JOIN contacts_countries cc ON cc.contact_id = c.id
|
||
JOIN countries t ON t.id = cc.country_id
|
||
JOIN users_contacts uc ON uc.contact_id = c.id
|
||
JOIN users u ON uc.user_id = u.id
|
||
WHERE c.value LIKE ? AND t.country_code LIKE ?
|
||
LIMIT 0,1
|
||
", array($number, $country_code))->current();
|
||
}
|
||
|
||
public function get_aro_groups_of_user($user_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT ag.id, ag.name
|
||
FROM aro_groups ag
|
||
JOIN groups_aro_map gam ON ag.id = gam.group_id
|
||
JOIN aro a ON a.id = gam.aro_id
|
||
WHERE a.id = $user_id
|
||
");
|
||
}
|
||
|
||
}
|
||
|
||
?>
|
freenetis/trunk/kohana/application/models/members_traffic.php | ||
---|---|---|
* @license http://www.gnu.org/licenses/gpl.txt
|
||
*/
|
||
|
||
class Members_traffic_Model extends Model
|
||
class Members_traffic_Model extends ORM
|
||
{
|
||
|
||
protected $belongs_to = array('member');
|
||
|
||
/**
|
||
* Returns all traffics of members
|
||
*
|
||
... | ... | |
}
|
||
|
||
/**
|
||
* Returns actual traffic of member
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $member_id
|
||
* @return MySQL_Result object
|
||
*/
|
||
public function get_member_traffic ($member_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT
|
||
IFNULL(SUM(upload),0) AS upload,
|
||
IFNULL(SUM(download),0) AS download,
|
||
IFNULL(active,0) AS active
|
||
FROM members_traffics t WHERE t.member_id = ?
|
||
", array($member_id))->current();
|
||
}
|
||
|
||
/**
|
||
* Cleans (truncate table) traffics of members
|
||
*
|
||
* @author Michal Kliment
|
freenetis/trunk/kohana/application/models/members_traffics_daily.php | ||
---|---|---|
}
|
||
|
||
/**
|
||
* Returns total traffics of member
|
||
*
|
||
* @author Michal Kliment
|
||
* @param int $member_id
|
||
* @return MySQL_Result object
|
||
*/
|
||
public function get_total_member_traffic ($member_id)
|
||
{
|
||
return $this->db->query("
|
||
SELECT
|
||
IFNULL(SUM(upload),0) AS upload,
|
||
IFNULL(SUM(download),0) AS download
|
||
FROM members_traffics_daily d WHERE d.member_id = ?
|
||
", array($member_id))->current();
|
||
}
|
||
|
||
/**
|
||
* Updates daily traffics of members
|
||
*
|
||
* @author Michal Kliment
|
freenetis/trunk/kohana/application/models/member.php | ||
---|---|---|
*/
|
||
class Member_Model extends ORM
|
||
{
|
||
protected $has_many = array('invoices', 'users', 'accounts',
|
||
'transfers', 'bank_accounts', 'membership_interrupts');
|
||
protected $has_one = array('members_traffic');
|
||
protected $has_many = array('invoices', 'users', 'accounts', 'transfers', 'bank_accounts', 'membership_interrupts');
|
||
protected $belongs_to = array('address_point','user');
|
||
|
||
// filtering by redirection
|
||
... | ... | |
{
|
||
return $this->db->select(
|
||
array('members.registration', 'members.name as namem', 'members.address_point_id',
|
||
'members.variable_symbol',
|
||
'members.variable_symbola',
|
||
'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',
|
freenetis/trunk/kohana/application/models/membership_interrupt.php | ||
---|---|---|
}
|
||
|
||
/**
|
||
* Function tries to find membership interrupt in given month, for example 2009-09-01.
|
||
* @param $member_id
|
||
* @param $month
|
||
* @return unknown_type
|
||
*/
|
||
function has_mi_in_month($member_id, $month)
|
||
* Checks if member has membership interrupt in given date
|
||
*
|
||
* @author Michal Kliment
|
||
* @param <type> $member_id
|
||
* @param <type> $date
|
||
* @return <type>
|
||
*/
|
||
function has_member_interrupt_in_date($member_id, $date)
|
||
{
|
||
$query = $this->db->query("SELECT mi.*
|
||
FROM membership_interrupts mi
|
||
WHERE mi.member_id = $member_id
|
||
AND mi.from <= '$month'
|
||
AND mi.to > '$month'
|
||
");
|
||
return (bool) count($query);
|
||
return (bool) $this->db->query("
|
||
SELECT COUNT(*) AS count FROM membership_interrupts mi
|
||
JOIN members_fees mf ON mi.members_fee_id = mf.id
|
||
WHERE mi.member_id = ? AND ? BETWEEN mf.activation_date AND mf.deactivation_date
|
||
", array($member_id, $date))->current()->count;
|
||
}
|
||
|
||
/**
|
freenetis/trunk/kohana/application/models/country.php | ||
---|---|---|
|
||
return $list;
|
||
}
|
||
|
||
/**
|
||
* Finds country by area (in VoIP)
|
||
*
|
||
* @author Michal Kliment
|
||
* @param string $area
|
||
* @return MySQL_Result object
|
||
*/
|
||
public function find_country_by_area ($area)
|
||
{
|
||
return $this->db->query("
|
||
SELECT * FROM countries
|
||
WHERE ? LIKE CONCAT( country_name, '%' )
|
||
LIMIT 0,1
|
||
", array($area))->current();
|
||
}
|
||
}
|
||
?>
|
freenetis/trunk/kohana/application/controllers/installation.php | ||
---|---|---|
// check if the database is empty
|
||
if ($this->settings->get('db_schema_version'))
|
||
url::redirect(url_lang::base().'members/show/'.$this->session->get('member_id'));
|
||
|
||
/**
|
||
* finds default currency and country from lang
|
||
* @todo do it better, maybe from some special table
|
||
*/
|
||
switch (Config::get('lang'))
|
||
{
|
||
// language is czech
|
||
case 'cs':
|
||
$currency = 'CZK';
|
||
$country_id = 55;
|
||
break;
|
||
default:
|
||
$currency = 'USD';
|
||
$country_id = 223;
|
||
break;
|
||
}
|
||
|
||
// form
|
||
$form = new Forge(url_lang::base()."installation", '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
... | ... | |
// system
|
||
$form->group('')->label(url_lang::lang('texts.System'));
|
||
$form->input('title')->label(url_lang::lang('texts.Page title').':')->value('Freenetis')->rules('required');
|
||
$form->dropdown('default_country')->label(url_lang::lang('texts.Country').':')->rules('required')->options(self::$COUNTRIES);
|
||
$form->input('currency')->label(url_lang::lang('texts.Currency').':')->rules('required');
|
||
$form->dropdown('default_country')->label(url_lang::lang('texts.Country').':')->rules('required')->options(self::$COUNTRIES)->selected($country_id);
|
||
$form->input('currency')->label(url_lang::lang('texts.Currency').':')->rules('required')->value($currency);
|
||
$form->radio('clean_urls')->label(url_lang::lang('texts.Clean URLs').':')->options(array('1'=>url_lang::lang('texts.Yes'),'0'=>url_lang::lang('texts.No')))->default(1);
|
||
// submit button
|
||
$form->submit('submit')->value(url_lang::lang('texts.Install'));
|
||
... | ... | |
$fee_model->save();
|
||
}
|
||
|
||
// array for store error
|
||
$errors = array();
|
||
|
||
$clean_urls = ($form_data['clean_urls'] && server::is_mod_rewrite_enabled());
|
||
|
||
// want clean urls - remove index.php from urls
|
||
if ($clean_urls)
|
||
$this->settings->set('index_page', 0);
|
||
else
|
||
$this->settings->set('index_page', 1);
|
||
|
||
// set base domain
|
||
$this->settings->set('domain', server::http_host());
|
||
|
||
... | ... | |
// want clean urls
|
||
if ($clean_urls)
|
||
{
|
||
// load .htaccess sample file
|
||
$htaccessFile = file('.htaccess-sample');
|
||
foreach ($htaccessFile as $line_num => $line)
|
||
// it is not re-install
|
||
if (!file_exists('.htaccess'))
|
||
{
|
||
// find line with RewriteBase
|
||
if (preg_match("/^RewriteBase (.+)/", $line, $matches))
|
||
// load .htaccess sample file
|
||
$htaccessFile = file('.htaccess-sample');
|
||
foreach ($htaccessFile as $line_num => $line)
|
||
{
|
||
// and set there our suffix (subdirectory)
|
||
$htaccessFile[$line_num] = preg_replace("/^(RewriteBase )(.+)/", '${1}'.$suffix, $line);
|
||
// find line with RewriteBase
|
||
if (preg_match("/^RewriteBase (.+)/", $line, $matches))
|
||
{
|
||
// and set there our suffix (subdirectory)
|
||
$htaccessFile[$line_num] = preg_replace("/^(RewriteBase )(.+)/", '${1}'.$suffix, $line);
|
||
}
|
||
}
|
||
}
|
||
|
||
// root directory is not writable, only generate code and howto to create config file by user
|
||
if (!is_writable('.'))
|
||
{
|
||
$textarea = '';
|
||
foreach ($htaccessFile as $line)
|
||
$textarea .= htmlentities ($line);
|
||
// root directory is not writable, only generate code and howto to create config file by user
|
||
if (!is_writable('.'))
|
||
{
|
||
$errors['writable'] = TRUE;
|
||
|
||
$view->textarea = '<textarea cols="90" rows="15">'.$textarea.'</textarea>';
|
||
}
|
||
// root directory is writable, create .htacess
|
||
else
|
||
{
|
||
$handle = fopen('.htaccess', 'w');
|
||
foreach($htaccessFile as $line )
|
||
$textarea = '';
|
||
foreach ($htaccessFile as $line)
|
||
$textarea .= htmlentities ($line);
|
||
|
||
$view->textarea = '<textarea cols="90" rows="15">'.$textarea.'</textarea>';
|
||
}
|
||
// root directory is writable, create .htacess
|
||
else
|
||
{
|
||
fwrite($handle, $line);
|
||
}
|
||
fclose($handle);
|
||
$handle = @fopen('.htaccess', 'w');
|
||
|
||
if (!@chmod('.htaccess', 0666))
|
||
$view->chmod_error = 1;
|
||
if (!$handle)
|
||
$errors['fopen'] = TRUE;
|
||
else
|
||
{
|
||
foreach($htaccessFile as $line )
|
||
fwrite($handle, $line);
|
||
fclose($handle);
|
||
|
||
if (!@chmod('.htaccess', 0666))
|
||
$errors['chmod'] = TRUE;
|
||
}
|
||
}
|
||
}
|
||
|
||
// no errors
|
||
if (!count($errors))
|
||
{
|
||
// remove index.php from urls
|
||
$this->settings->set('index_page', 0);
|
||
}
|
||
}
|
||
|
||
$view->errors = $errors;
|
||
$view->render(TRUE);
|
||
}
|
||
else
|
freenetis/trunk/kohana/application/controllers/private_phone_contacts.php | ||
---|---|---|
}
|
||
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.Add private phone number');
|
||
$view->title = url_lang::lang('texts.Add private phone number contact');
|
||
$view->content = new View('private_phone_contacts');
|
||
$view->content->title = url_lang::lang('texts.Add private phone number contact');
|
||
$view->content->form = $form->html();
|
||
... | ... | |
}
|
||
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.Edit private phone number');
|
||
$view->title = url_lang::lang('texts.Edit private phone number contact');
|
||
$view->content = new View('private_phone_contacts');
|
||
$view->content->title = url_lang::lang('texts.Edit private phone number contact');
|
||
$view->content->form = $form->html();
|
freenetis/trunk/kohana/application/controllers/users.php | ||
---|---|---|
{
|
||
$voip = html::anchor(url_lang::base().'voip/show/'.$voip->current()->user_id,$voip->current()->name);
|
||
}
|
||
$aro_groups = $model_users->get_aro_groups_of_user($user_id);
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.Display user');
|
||
$view->content = new View('users_show');
|
||
... | ... | |
$view->content->contact_types = $arr_contact_types;
|
||
$view->content->message = $this->session->get_once('message');
|
||
$view->content->voip = $voip;
|
||
$view->content->aro_groups = $aro_groups;
|
||
$view->render(TRUE);
|
||
} // end of show function
|
||
|
freenetis/trunk/kohana/application/controllers/bank_transfers.php | ||
---|---|---|
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
$form->group('')->label(url_lang::lang('texts.Payment'));
|
||
$form->dropdown('name')->label(url_lang::lang('texts.Destination credit account').':')->options($arr_accounts)->selected(0);
|
||
$form->input('correct_vs')->label(url_lang::lang('texts.Or enter correct variable symbol').':')->callback(array($this, 'valid_var_sym'));
|
||
$form->input('correct_vs')->label(url_lang::lang('texts.Or enter correct variable symbol').':')->callback(array($this, 'valid_correct_vs'));
|
||
$form->input('text')->label(url_lang::lang('texts.Text').':')->rules('required')->value(url_lang::lang('texts.Assigning of unidentified payment'));
|
||
$form->group('')->label(url_lang::lang('texts.Penalty'));
|
||
$form->input('penalty')->label(url_lang::lang('texts.Penalty').':')->value($penalty_fee)->rules('valid_numeric');
|
||
... | ... | |
$t->member_id = $member_id;
|
||
$t->save_throwable();
|
||
// then we create a new transfer to the selected member's account
|
||
/*
|
||
$t->clear();
|
||
$t->member_id = $member_id;
|
||
$t->origin_id = $bt->destination_id;
|
||
$t->destination_id = $dst_id;
|
||
$t->previous_transfer_id = $bt->id;
|
||
$t->user_id = $this->session->get('user_id');
|
||
$t->datetime = $bt->datetime;
|
||
$t->creation_datetime = $time_now;
|
||
$t->text = $form_data['text'];
|
||
$t->amount = $bt->amount;
|
||
$identified_saved = $t->save();
|
||
*/
|
||
Transfer_Model::insert_transfer($bt->destination_id, $dst_id, $bt->id, $member_id,
|
||
$user_id, null, $bt->datetime, $creation_datetime, $form_data['text'], $bt->amount);
|
||
|
||
... | ... | |
foreach ($next_ts as $transfer)
|
||
{
|
||
$transfer->member_id = $member_id;
|
||
$transfer->save_trowable();
|
||
$transfer->save_throwable();
|
||
}
|
||
// also penalty should be generated
|
||
$operating = ORM::factory('account')->where('account_attribute_id', Account_attribute_Model::$operating)->find();
|
||
if ($form_data['penalty'] > 0)
|
||
{
|
||
/*
|
||
$pen = new Transfer_Model();
|
||
$pen->origin_id = $dst_id;
|
||
$pen->destination_id = $operating->id;
|
||
$pen->previous_transfer_id = $bt->id;
|
||
$pen->user_id = $this->session->get('user_id');
|
||
$pen->datetime = $bt->datetime;
|
||
$pen->creation_datetime = $time_now;
|
||
$pen->text = $form_data['penalty_text'];
|
||
$pen->amount = $form_data['penalty'];
|
||
$pen_save = $pen->save();
|
||
*/
|
||
Transfer_Model::insert_transfer($dst_id, $operating->id, $bt->id, null,
|
||
$user_id, null, $bt->datetime, $creation_datetime, $form_data['penalty_text'], $form_data['penalty']);
|
||
}
|
||
// transfer fee, if it has to be generated
|
||
if ($form_data['transfer_fee'] > 0)
|
||
{
|
||
/*
|
||
$tf = new Transfer_Model();
|
||
$tf->origin_id = $dst_id;
|
||
$tf->destination_id = $operating->id;
|
||
$tf->previous_transfer_id = $bt->id;
|
||
$tf->user_id = $this->session->get('user_id');
|
||
$tf->datetime = $bt->datetime;
|
||
$tf->creation_datetime = $time_now;
|
||
$tf->text = $form_data['fee_text'];
|
||
$tf->amount = $form_data['transfer_fee'];
|
||
$tf_saved = $tf->save();
|
||
*/
|
||
Transfer_Model::insert_transfer($dst_id, $operating->id, $bt->id, null,
|
||
$user_id, null, $bt->datetime, $creation_datetime, $form_data['fee_text'], $form_data['transfer_fee']);
|
||
}
|
||
... | ... | |
|
||
/**
|
||
* Function validates variable symbol.
|
||
* Do not control by javascript! Let it possible to leave variable symbol empty.
|
||
* Target account for assigning unidentified transfer can be selected separately.
|
||
* @author Jiri Svitak
|
||
* @param $input
|
||
* @return unknown_type
|
||
*/
|
||
function valid_var_sym($input)
|
||
function valid_correct_vs($input)
|
||
{
|
||
if ($this->input->post('name') == 0)
|
||
{
|
freenetis/trunk/kohana/application/controllers/members.php | ||
---|---|---|
*/
|
||
function show($member_id = NULL, $order_by = 'member_id', $order_by_direction = 'ASC')
|
||
{
|
||
if (!isset($member_id))
|
||
// parameter is wrong
|
||
if (!$member_id || !is_numeric($member_id))
|
||
Controller::warning(PARAMETER);
|
||
if(!$this->acl_check_view(get_class($this),'members',$member_id))
|
||
|
||
$member = new Member_Model($member_id);
|
||
|
||
// member doesn't exist
|
||
if (!$member->id)
|
||
Controller::error(RECORD);
|
||
|
||
// access control
|
||
if(!$this->acl_check_view(get_class($this),'members',$member->id))
|
||
Controller::error(ACCESS);
|
||
if (!is_numeric($member_id))
|
||
Controller::error(RECORD);
|
||
$model_members = new Member_Model();
|
||
if (count($model_members->get_member($member_id)) == 0)
|
||
Controller::error(RECORD);
|
||
$member_data = $model_members->get_member($member_id)->current();
|
||
// address point
|
||
$address_point = new Address_point_Model($member_data->address_point_id);
|
||
$address = (($address_point->street_id === null) ? '' : $address_point->street->street.' ').$address_point->street_number;
|
||
$town = ($address_point->town_id === null) ? '' : $address_point->town->town.' '.$address_point->town->quarter;
|
||
$zip = ($address_point->town_id === null) ? '' : $address_point->town->zip_code;
|
||
// member type string
|
||
$model_translation = new Translation_Model();
|
||
$member_type = $model_translation->get_translation($member_data->member_type);
|
||
// member type
|
||
$enum_type_model = new Enum_type_Model();
|
||
$former_member = $member_data->member_type == 'Former member';
|
||
// credit account
|
||
if ($member_id != 1)
|
||
|
||
// finds main user of member
|
||
$user = ORM::factory('user')->where(array('member_id' => $member->id, 'type' => User_Model::$member))->find();
|
||
|
||
// building of user's name
|
||
$user_name = $user->name;
|
||
if ($user->middle_name != '')
|
||
$user_name .= ' '.$user->middle_name;
|
||
$user_name .= ' '.$user->surname;
|
||
if ($user->pre_title != '')
|
||
$user_name = $user->pre_title . ' ' .$user_name;
|
||
if ($user->post_title != '')
|
||
$user_name .= ' '.$user->post_title;
|
||
|
||
// translates member's type
|
||
$type = ORM::factory('enum_type')->get_value($member->type);
|
||
|
||
// has member active membership interrupt?
|
||
$active_interrupt = ORM::factory('membership_interrupt')->has_member_interrupt_in_date($member->id, date('Y-m-d'));
|
||
|
||
$title = ($active_interrupt) ? $type . ' '.$member->name . ' ('. url_lang::lang('texts.I') .')' : $type . ' '.$member->name;
|
||
|
||
// finds credit account of member
|
||
if ($member->id != 1)
|
||
$account = ORM::factory('account')->where(array('member_id' => $member_id, 'account_attribute_id' => Account_attribute_Model::$credit))->find();
|
||
|
||
// finds address of member
|
||
if ($member->address_point_id && $member->address_point->id)
|
||
{
|
||
$account_model = new Account_Model();
|
||
$account = $account_model->
|
||
where(array('member_id' => $member_id,
|
||
'account_attribute_id' => Account_attribute_Model::$credit))->find();
|
||
$address = ($member->address_point->street_id && $member->address_point->street->id) ? $member->address_point->street->street : '';
|
||
$address .= ($member->address_point->street_number) ? ' '.$member->address_point->street_number : '';
|
||
|
||
if ($member->address_point->town_id && $member->address_point->town->id)
|
||
{
|
||
$town = $member->address_point->town->town;
|
||
$town .= ($member->address_point->town->quarter) ? '-'.$member->address_point->town->quarter : '';
|
||
$town .= ', '.$member->address_point->town->zip_code;
|
||
}
|
||
}
|
||
|
||
/************************************************************ VoIP ****************************************************/
|
||
|
||
$billing = new Billing();
|
||
$has_driver = $billing->has_driver();
|
||
$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,
|
||
'use_selector' => false,
|
||
'order_by' => $order_by,
|
||
'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'));
|
||
if ($member->id != 1)
|
||
$voip_grid->add_new_button(url_lang::base().'transfers/add_voip/'.$account->id, url_lang::lang('texts.Recharge VoIP credit'));
|
||
}
|
||
|
||
// finds date of expiration of member fee
|
||
$expiration_date = (isset($account)) ? self::get_expiration_date($account) : '';
|
||
|
||
// finds actual traffic of member
|
||
$actual_traffic = ORM::factory('members_traffic')->get_member_traffic ($member->id);
|
||
|
||
// finds total traffic of member
|
||
$members_traffics_daily_model = new Members_traffics_daily_Model();
|
||
$total_traffic = $members_traffics_daily_model->get_total_member_traffic ($member->id);
|
||
|
||
// finds all contacts of main user
|
||
$contact_model = new Contact_Model();
|
||
$enum_type_model = new Enum_type_Model();
|
||
|
||
// contacts of main user of member
|
||
$model_contacts = new Contact_Model();
|
||
$contacts = $model_contacts->find_all_users_contacts($member_data->id);
|
||
$arr_contact_types = array();
|
||
$contacts = $contact_model->find_all_users_contacts($user->id);
|
||
|
||
$contact_types = array();
|
||
foreach($contacts as $i => $contact)
|
||
{
|
||
$arr_contact_types[$i] = $enum_type_model->get_value($contact->type);
|
||
}
|
||
// engineer who added member
|
||
$member = new Member_Model($member_id);
|
||
$engineer_id = $member->user_id;
|
||
$engineer = new User_Model($engineer_id);
|
||
$engineer_name = $engineer->name.' '.$engineer->surname;
|
||
// users of member
|
||
$model_users = new User_Model();
|
||
$users = $model_users->orderby($order_by,$order_by_direction)->where('member_id', $member_id)->find_all();
|
||
$user_grid = new Grid(url_lang::base().'members', null,array(
|
||
$contact_types[$i] = $enum_type_model->get_value($contact->type);
|
||
|
||
// finds all users of member
|
||
$users = ORM::factory('user')->where('member_id', $member->id)->find_all();
|
||
|
||
// grid with lis of users
|
||
$users_grid = new Grid(url_lang::base().'members', null,array(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
));
|
||
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'variables' => $member_id.'/'
|
||
));
|
||
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)))
|
||
$user_grid->add_new_button(url_lang::base().'users/add/'.$member_id, url_lang::lang('texts.Add new user'));
|
||
$user_grid->add_back_button(url_lang::lang('texts.Back'));
|
||
$user_grid->order_field('id','id')->label('ID');
|
||
$user_grid->order_field('name','name')->label(url_lang::lang('texts.Name'));
|
||
$user_grid->order_field('surname','surname')->label(url_lang::lang('texts.Surname'));
|
||
$user_grid->order_field('login','login')->label(url_lang::lang('texts.Username'));
|
||
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))
|
||
$user_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/show')->action(url_lang::lang('texts.Show'));
|
||
$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_edit('Users_Controller','users') || ($this->session->get('user_type') == User_Model::$member && $this->acl_check_edit('Users_Controller','users',$member_id)))
|
||
$user_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/edit')->action(url_lang::lang('texts.Edit'));
|
||
$users_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/edit')->action(url_lang::lang('texts.Edit'));
|
||
|
||
if($this->acl_check_delete('Users_Controller','users',$member_id))
|
||
$user_grid->action_field('id') ->label(url_lang::lang('texts.User'))->url(url_lang::base().'users/delete')->action(url_lang::lang('texts.Delete'))->script('onclick="return potvrd(\''.url_lang::lang('texts.Do you want to delete this user').'\');"');
|
||
$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))
|
||
$user_grid->action_field('id') ->label(url_lang::lang('texts.Devices'))->url(url_lang::base().'devices/show_by_user')->action(url_lang::lang('texts.Show'));
|
||
$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))
|
||
$user_grid->action_field('id') ->label(url_lang::lang('texts.Works'))->url(url_lang::base().'works/show_by_user')->action(url_lang::lang('texts.Show'));
|
||
$user_grid->datasource($users);
|
||
$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
|
||
$mi_model = new Membership_interrupt_Model();
|
||
$mis = $mi_model->get_all_by_member($member_id);
|
||
$mi_grid = new Grid(url_lang::base().'members', null, array(
|
||
$membership_interrupts = ORM::factory('membership_interrupt')->get_all_by_member($member_id);
|
||
$membership_interrupts_grid = new Grid(url_lang::base().'members', null, array(
|
||
'separator' => '<br /><br />',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'variables' => $member_id.'/'
|
||
));
|
||
|
||
if ($this->acl_check_new(get_class($this), 'membership_interrupts', $member_id))
|
||
$mi_grid->add_new_button(url_lang::base().'membership_interrupts/add/'.$member_id, url_lang::lang('texts.Add new interrupt of membership'));
|
||
$mi_grid->field('id')->label('ID');
|
||
$mi_grid->field('from')->label(url_lang::lang('texts.Date from'));
|
||
$mi_grid->field('to')->label(url_lang::lang('texts.Date to'));
|
||
$mi_grid->field('comment')->label(url_lang::lang('texts.Comment'));
|
||
if ($this->acl_check_edit(get_class($this), 'membership_interrupts', $member_id))
|
||
$mi_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/edit')->action(url_lang::lang('texts.Edit'));
|
||
if ($this->acl_check_delete(get_class($this), 'membership_interrupts'))
|
||
$mi_grid->action_field('id') ->label(url_lang::lang('texts.Membership interrupts'))->url(url_lang::base().'membership_interrupts/delete')->action(url_lang::lang('texts.Delete'));
|
||
$mi_grid->datasource($mis);
|
||
$membership_interrupts_grid->add_new_button(url_lang::base().'membership_interrupts/add/'.$member_id, url_lang::lang('texts.Add new interrupt of membership'));
|
||
|
||
// active redirections of member, including short statistic of whitelisted IP addresses
|
||
$ip_model = new Ip_address_Model();
|
||
$info = $ip_model->get_whitelist_info_of_member($member_id);
|
||
$whitelist_info = url_lang::lang('texts.IP addresses').': '.url_lang::lang('texts.No whitelist').' ('.$info[Ip_address_Model::$no_whitelist].'), '.
|
||
url_lang::lang('texts.Permanent whitelist').' ('.$info[Ip_address_Model::$permanent_whitelist].'), '.url_lang::lang('texts.Temporary whitelist').' ('.$info[Ip_address_Model::$temporary_whitelist].')';
|
||
/*$mip_model = new Messages_ip_addresses_Model();
|
||
$messages = $mip_model->get_redirections_of_member($member_id);
|
||
$redir_grid = new Grid(url_lang::base().'members', null, array(
|
||
'use_paginator' => false,
|
||
'use_selector' => false
|
||
));
|
||
if ($this->acl_check_new('Messages_Controller', 'member'))
|
||
$membership_interrupts_grid->field('id')->label('ID');
|
||
$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'));
|
||
|
||
if ($this->acl_check_delete(get_class($this), 'membership_interrupts'))
|
||
$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_links = array();
|
||
|
||
$former_type_id = ORM::factory('enum_type')->get_type_id('Former member');
|
||
|
||
// member edit link
|
||
if ($member->type != $former_type_id && $this->acl_check_edit(get_class($this), 'members', $member->id))
|
||
$member_links[] = html::anchor(url_lang::base().'members/edit/'.$member->id,url_lang::lang('texts.Edit member'));
|
||
|
||
// members's transfers link
|
||
if ($member->id != 1 && $this->acl_check_view('Accounts_Controller', 'transfers', $member->id))
|
||
$member_links[] = html::anchor(url_lang::base().'transfers/show_by_account/'.$account->id, url_lang::lang('texts.Show transfers'));
|
||
|
||
// member's tariffs link
|
||
if ($this->acl_check_view(get_class($this), 'fees', $member->id))
|
||
$member_links[] = html::anchor(url_lang::base().'members_fees/show_by_member/'.$member->id, url_lang::lang('texts.Show tariffs'));
|
||
|
||
if ($member->id != 1)
|
||
{
|
||
$redir_grid->add_new_button(url_lang::base().'redirect/add_to_member/'.$member_id, url_lang::lang('texts.Add redirection to all ip addresses of member'));
|
||
$redir_grid->add_new_button(url_lang::base().'redirect/set_whitelist/'.$member_id.'/'.Ip_address_Model::$no_whitelist, url_lang::lang('texts.Cancel whitelist'));
|
||
$redir_grid->add_new_button(url_lang::base().'redirect/set_whitelist/'.$member_id.'/'.Ip_address_Model::$permanent_whitelist, url_lang::lang('texts.Set permanent whitelist'));
|
||
$redir_grid->add_new_button(url_lang::base().'redirect/set_whitelist/'.$member_id.'/'.Ip_address_Model::$temporary_whitelist, url_lang::lang('texts.Set temporary whitelist'));
|
||
if ($member->type != $former_type_id)
|
||
{
|
||
// payment cash link
|
||
if ($this->acl_check_edit('Accounts_Controller', 'transfers', $member->id))
|
||
$member_links[] = html::anchor(url_lang::base().'transfers/add_member_fee_payment_by_cash/'.$member->id, url_lang::lang('texts.Payment by cash'));
|
||
|
||
// end membership link
|
||
if ($this->acl_check_edit(get_class($this), 'members'))
|
||
$member_links[] = html::anchor(url_lang::base().'members/end_membership/'.$member->id, url_lang::lang('texts.End membership'), array('onclick' => 'return potvrd(\''.url_lang::lang('texts.Do you want to end membership of this member').'\')'));
|
||
}
|
||
else
|
||
{
|
||
// restore membership link
|
||
if ($this->acl_check_edit(get_class($this), 'members'))
|
||
$member_links[] = html::anchor(url_lang::base().'members/restore_membership/'.$member->id, url_lang::lang('texts.Restore membership'), array('onclick' => 'return potvrd(\''.url_lang::lang('texts.Do you want to restore membership of this member').'\')'));
|
||
}
|
||
}
|
||
$redir_grid->callback_field('ip_address')->label(url_lang::lang('texts.IP address'))->callback('callback::ip_address_field');
|
||
$redir_grid->field('name')->label(url_lang::lang('texts.Message'));
|
||
if ($this->acl_check_delete('Messages_Controller', 'ip_address'))
|
||
$redir_grid->callback_field('redirection')->label(url_lang::lang('texts.Canceling of message for redirection'))->callback("callback::cancel_redirection_of_member");
|
||
$redir_grid->datasource($messages);*/
|
||
|
||
// redirection link
|
||
if ($member->type != $former_type_id && $this->acl_check_edit(get_class($this), 'redirect', $member->id))
|
||
$member_links[] = html::anchor(url_lang::base().'redirect/member/'.$member->id, url_lang::lang('texts.Redirection'));
|
||
|
||
// export of registration link
|
||
$member_links[] = html::anchor(url_lang::base().'members/registration_export/'.$member->id, url_lang::lang('texts.Export of registration'));
|
||
|
||
// user show link
|
||
if ($this->acl_check_view('Users_Controller', 'users'))
|
||
$user_links[] = html::anchor(url_lang::base().'users/show/'.$user->id, url_lang::lang('texts.Show'));
|
||
|
||
// user edit link
|
||
if ($member->type != $former_type_id && $this->acl_check_edit('Users_Controller','users', $member->id))
|
||
$user_links[] = html::anchor(url_lang::base().'users/edit/'.$member->id, url_lang::lang('texts.Edit'));
|
||
|
||
// user's devices link
|
||
if ($this->acl_check_view('Devices_Controller', 'devices', $member->id))
|
||
$user_links[] = html::anchor(url_lang::base().'devices/show_by_user/'.$user->id, url_lang::lang('texts.Show devices'));
|
||
|
||
// 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'));
|
||
|
||
// billing
|
||
$billing = new Billing();
|
||
$has_driver = $billing->has_driver();
|
||
$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,
|
||
'use_selector' => false,
|
||
'order_by' => $order_by,
|
||
'order_by_direction' => $order_by_direction,
|
||
'variables' => $member_id.'/'
|
||
));
|
||
//$voip_grid->order_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))
|
||
if ($member->type != $former_type_id)
|
||
{
|
||
$voip_grid->add_new_button(url_lang::base().'voip_calls/show_by_member/'.$member_id, url_lang::lang('texts.List of all calls'));
|
||
if ($member_data->member_id != 1)
|
||
$voip_grid->add_new_button(url_lang::base().'transfers/add_voip/'.$account->id, url_lang::lang('texts.Recharge VoIP credit'));
|
||
// change password link
|
||
if ($this->acl_check_edit('Users_Controller', 'password', $member->id))
|
||
$user_links[] = html::anchor(url_lang::base().'users/change_password/'.$user->id, url_lang::lang('texts.Change password'));
|
||
|
||
// change application password link
|
||
if ($this->acl_check_edit('Users_Controller', 'application_password', $member->id))
|
||
$user_links[] = html::anchor(url_lang::base().'users/change_application_password/'.$user->id, url_lang::lang('texts.Change application password'));
|
||
}
|
||
|
||
// view
|
||
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.Display member');
|
||
$view->title = $title;
|
||
$view->content = new View('members_show');
|
||
if ($member_id != 1)
|
||
$view->content->account = $account;
|
||
$view->content->users = $user_grid;
|
||
$view->content->voip = $voip_grid;
|
||
$view->content->count_voip = count($voip);
|
||
$view->content->title = $title;
|
||
$view->content->member = $member;
|
||
$view->content->user = $user;
|
||
$view->content->user_name = $user_name;
|
||
$view->content->users_grid = $users_grid;
|
||
$view->content->voip_grid = $voip_grid;
|
||
$view->content->membership_interrupts_grid = $membership_interrupts_grid;
|
||
$view->content->contacts = $contacts;
|
||
$view->content->contact_types = $contact_types;
|
||
$view->content->expiration_date = $expiration_date;
|
||
$view->content->account = (isset($account)) ? $account : NULL;
|
||
$view->content->address = (isset($address)) ? $address : '';
|
||
$view->content->town = (isset($town)) ? $town : '';
|
||
$view->content->billing_has_driver = $has_driver;
|
||
$view->content->billing_account = $b_account;
|
||
$view->content->mis = $mi_grid;
|
||
//$view->content->whitelist_info = $whitelist_info;
|
||
$view->content->whitelist_info = '';
|
||
//$view->content->redir_grid = $redir_grid;
|
||
$view->content->redir_grid = '';
|
||
/*foreach($member_data as $key=>$val)
|
||
{
|
||
// IE dont render TD border if content is NULL, so we must put nbsp into empty fields.
|
||
if (trim($val)=='') $member_data->$key = ' ';
|
||
}*/
|
||
$registration_value = array('0'=>url_lang::lang('texts.No'),'1'=>url_lang::lang('texts.Yes'));
|
||
$member_data->registration = $registration_value[(bool)$member_data->registration];
|
||
$view->content->member_data = $member_data;
|
||
$view->content->member_type = $member_type;
|
||
$view->content->former = $former_member;
|
||
$view->content->address = $address;
|
||
$view->content->town = $town;
|
||
$view->content->zip = $zip;
|
||
if ($member_id != 1)
|
||
$view->content->expiration_date = self::get_expiration_date($account);
|
||
$view->content->contact_types = $arr_contact_types;
|
||
$view->content->contacts = $contacts;
|
||
$view->content->engineer_id = $engineer_id;
|
||
$view->content->engineer_name = $engineer_name;
|
||
$view->content->message = $this->session->get_once('message');
|
||
$view->content->count_voip = count($voip);
|
||
$view->content->actual_traffic = $actual_traffic;
|
||
$view->content->total_traffic = $total_traffic;
|
||
$view->content->member_links = implode(' | ',$member_links);
|
||
$view->content->user_links = implode(' | ',$user_links);
|
||
$view->render(TRUE);
|
||
|
||
} // end of show function
|
||
|
||
|
||
|
||
/**
|
||
* Gets expiration date of member's payments.
|
||
* @author Jiri Svitak
|
||
* @author Michal Kliment
|
||
* @param $member_id
|
||
* @return unknown_type
|
||
*/
|
||
public static function get_expiration_date($account)
|
||
{
|
||
$balance = $account->get_account_balance($account->id);
|
||
// zero credit account balance means that there is no need to calculate expiration date
|
||
if ($balance == 0)
|
||
return null;
|
||
// negative credit account balance means that member is in debt
|
||
if ($balance < 0)
|
||
return '<span style="color:red">'.url_lang::lang('texts.You are in debt').'</span>';
|
||
$fee_model = new Fee_Model();
|
||
$pdate = date_parse(date('Y-m-d'));
|
||
$year = $pdate['year'];
|
||
if ($pdate['day'] > 15)
|
||
// member's actual balance
|
||
$balance = $account->balance;
|
||
|
||
// current date
|
||
$day = date('j');
|
||
$month = date('n');
|
||
$year = date('Y');
|
||
|
||
// rounds date down
|
||
date::round_down($day, $month, $year);
|
||
|
||
// balance is in positive, we will go to the future
|
||
if ($balance >= 0)
|
||
{
|
||
$month = $pdate['month'] + 1;
|
||
if ($month == 13)
|
||
{
|
||
$month = 1;
|
||
$year++;
|
||
}
|
||
$sign = 1;
|
||
$ttl = 1;
|
||
$color = 'green';
|
||
}
|
||
// balance is in negative, we will go to the past
|
||
else
|
||
{
|
||
$month = $pdate['month'];
|
||
$sign = -1;
|
||
$ttl = 2;
|
||
$color = 'red';
|
||
}
|
||
$credit_left = $balance;
|
||
while (true)
|
||
|
||
$payments = array();
|
||
|
||
// finds entrance date of member
|
||
$entrance_date = date_parse(date::get_middle_of_month($account->member->entrance_date));
|
||
|
||
// finds debt payment rate of entrance fee
|
||
$debt_payment_rate = ($account->member->debt_payment_rate > 0) ? $account->member->debt_payment_rate : $account->member->entrance_fee;
|
||
|
||
// finds all debt payments of entrance fee
|
||
self::find_debt_payments ($payments, $entrance_date['month'], $entrance_date['year'], $account->member->entrance_fee, $debt_payment_rate);
|
||
|
||
// finds all member's devices with debt payments
|
||
$devices = ORM::factory('device')->get_member_devices_with_debt_payments ($account->member_id);
|
||
|
||
foreach ($devices as $device)
|
||
{
|
||
$date = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year));
|
||
$fee = $fee_model->get_by_date_type($date, 'regular member fee');
|
||
// fee has to be defined for every month of membership of every member
|
||
if (!$fee || $fee->fee <= 0)
|
||
// finds buy date of this device
|
||
$buy_date = date_parse(date::get_middle_of_month($device->buy_date));
|
||
|
||
// finds all debt payments of this device
|
||
self::find_debt_payments ($payments, $buy_date['month'], $buy_date['year'], $device->price, $device->payment_rate);
|
||
}
|
||
|
||
$fee_model = new Fee_Model();
|
||
|
||
while (true)
|
||
{
|
||
// finds regular member fee for this month
|
||
$fee = $fee_model->get_regular_member_fee_by_member_date ($account->member_id, date::create(15, $month, $year));
|
||
|
||
// if exist payment for this month, adds it to the fee
|
||
if (isset($payments[$year][$month]))
|
||
$fee += $payments[$year][$month];
|
||
|
||
// attributed / deduct fee to / from balance
|
||
$balance -= $sign * $fee;
|
||
|
||
if ($sign == -1 && $balance == 0)
|
||
$ttl--;
|
||
|
||
if ($balance * $sign < 0)
|
||
$ttl--;
|
||
|
||
if ($ttl == 0)
|
||
break;
|
||
|
||
$month += $sign;
|
||
|
||
if ($month == 0 OR $month == 13)
|
||
{
|
||
return '<span style="color:red">'.url_lang::lang('texts.No member fee set!').'</span>';
|
||
$month = ($month == 13) ? 1 : 12;
|
||
$year += $sign;
|
||
}
|
||
}
|
||
|
||
return '<span style="color: '.$color.'">'.date::create (date::days_of_month($month), $month, $year).'</span>';
|
||
}
|
||
|
||
/**
|
||
* It stores debt payments into double-dimensional array (indexes year, month)
|
||
*
|
||
* @author Michal Kliment
|
||
* @param array $payments
|
||
* @param int $month
|
||
* @param int $year
|
||
* @param float $payment_left
|
||
* @param float $payment_rate
|
||
*/
|
||
public static function find_debt_payments (&$payments, $month, $year, $payment_left, $payment_rate)
|
||
{
|
||
while ($payment_left > 0)
|
||
{
|
||
if ($payment_left > $payment_rate)
|
||
$payment = $payment_rate;
|
||
else
|
||
{
|
||
if ($credit_left < $fee->fee)
|
||
break;
|
||
$credit_left -= $fee->fee;
|
||
}
|
||
// next month
|
||
$payment = $payment_left;
|
||
|
||
if (isset($payments[$year][$month]))
|
||
$payments[$year][$month] += $payment;
|
||
else
|
||
$payments[$year][$month] = $payment;
|
||
|
||
$month++;
|
||
if ($month == 13)
|
||
if ($month > 12)
|
||
{
|
||
$year++;
|
||
$month = 1;
|
||
$year++;
|
||
}
|
||
$payment_left -= $payment;
|
||
}
|
||
$expiration_date = date('Y-m-d', mktime(0, 0, 0, $month, 1, $year) + ($credit_left / $fee->fee) * 30 * 24 * 60 * 60);
|
||
return $expiration_date;
|
||
}
|
||
|
||
/**
|
freenetis/trunk/kohana/application/controllers/voip_calls.php | ||
---|---|---|
|
||
function show_by_member($member_id = null, $from = null, $to = null, $limit_results = 100, $order_by = 'type', $order_by_direction = 'asc', $page_word = null, $page = 1)
|
||
{
|
||
if (!$this->acl_check_view('VoIP_Controller', 'voip', $member_id))
|
||
Controller::error(ACCESS);
|
||
// get new selector
|
||
if (!is_numeric($member_id))
|
||
Controller::error(RECORD);
|
||
// parameter is wrong
|
||
if (!$member_id || !is_numeric($member_id))
|
||
Controller::warning(PARAMETER);
|
||
|
||
$model_members = new Member_Model();
|
||
if (count($model_members->get_member($member_id)) == 0)
|
||
$member = new Member_Model($member_id);
|
||
|
||
// member doesn't exist
|
||
if (!$member->id)
|
||
Controller::error(RECORD);
|
||
|
||
// access control
|
||
if (!$this->acl_check_view('VoIP_Controller', 'voip', $member->id))
|
||
Controller::error(ACCESS);
|
||
|
||
// for searching in private contacts
|
||
$arr_users = array();
|
||
$user_id;
|
Také k dispozici: Unified diff
Slouceni stavajicich zmen do hlavni vetve.