Merge branch 'saas' into cc-5709-airtime-analyzer-cloud-storage-saas

Conflicts:
	airtime_mvc/application/modules/rest/controllers/MediaController.php
This commit is contained in:
drigato 2014-11-18 09:24:38 -05:00
commit 4d8b32556b
122 changed files with 33988 additions and 22602 deletions

View file

@ -11,6 +11,7 @@ require_once __DIR__."/configs/constants.php";
require_once 'Preference.php'; require_once 'Preference.php';
require_once 'Locale.php'; require_once 'Locale.php';
require_once "DateHelper.php"; require_once "DateHelper.php";
require_once "LocaleHelper.php";
require_once "OsPath.php"; require_once "OsPath.php";
require_once "Database.php"; require_once "Database.php";
require_once "Timezone.php"; require_once "Timezone.php";
@ -53,7 +54,8 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$view = $this->getResource('view'); $view = $this->getResource('view');
$baseUrl = Application_Common_OsPath::getBaseDir(); $baseUrl = Application_Common_OsPath::getBaseDir();
$view->headScript()->appendScript("var baseUrl = '$baseUrl'"); $view->headScript()->appendScript("var baseUrl = '$baseUrl';");
$this->_initTranslationGlobals($view);
$user = Application_Model_User::GetCurrentUser(); $user = Application_Model_User::GetCurrentUser();
if (!is_null($user)){ if (!is_null($user)){
@ -62,7 +64,17 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
$userType = ""; $userType = "";
} }
$view->headScript()->appendScript("var userType = '$userType';"); $view->headScript()->appendScript("var userType = '$userType';");
}
/**
* Ideally, globals should be written to a single js file once
* from a php init function. This will save us from having to
* reinitialize them every request
*/
private function _initTranslationGlobals($view) {
$view->headScript()->appendScript("var PRODUCT_NAME = '" . PRODUCT_NAME . "';");
$view->headScript()->appendScript("var USER_MANUAL_URL = '" . USER_MANUAL_URL . "';");
$view->headScript()->appendScript("var COMPANY_NAME = '" . COMPANY_NAME . "';");
} }
protected function _initHeadLink() protected function _initHeadLink()

View file

@ -0,0 +1,7 @@
<?php
// Global functions for translating domain-specific strings
function _pro($str) {
return dgettext("pro", $str);
}

View file

@ -1,5 +1,21 @@
<?php <?php
define('PRODUCT_NAME' , 'Airtime');
define('PRODUCT_SITE_URL' , 'http://airtime.sourcefabric.org');
define('COMPANY_NAME' , 'Sourcefabric');
define('COMPANY_SUFFIX' , 'z.ú.');
define('COMPANY_SITE' , 'Sourcefabric.org');
define('COMPANY_SITE_URL' , 'http://sourcefabric.org/');
define('WHOS_USING_URL' , 'http://sourcefabric.org/en/airtime/whosusing');
define('TERMS_AND_CONDITIONS_URL' , 'http://www.sourcefabric.org/en/about/policy/');
define('PRIVACY_POLICY_URL' , 'http://www.sourcefabric.org/en/about/policy/');
define('USER_MANUAL_URL' , 'http://www.sourcefabric.org/en/airtime/manuals/');
define('LICENSE_VERSION' , 'GNU AGPL v.3');
define('LICENSE_URL' , 'http://www.gnu.org/licenses/agpl-3.0-standalone.html');
define('AIRTIME_COPYRIGHT_DATE' , '2010-2012'); define('AIRTIME_COPYRIGHT_DATE' , '2010-2012');
define('AIRTIME_REST_VERSION' , '1.1'); define('AIRTIME_REST_VERSION' , '1.1');
define('AIRTIME_API_VERSION' , '1.1'); define('AIRTIME_API_VERSION' , '1.1');

View file

@ -833,7 +833,7 @@ class ApiController extends Zend_Controller_Action
//File is not in database anymore. //File is not in database anymore.
if (is_null($file)) { if (is_null($file)) {
$return_hash['error'] = _("File does not exist in Airtime."); $return_hash['error'] = sprintf(_("File does not exist in %s"), PRODUCT_NAME);
} }
//Updating a metadata change. //Updating a metadata change.
else { else {
@ -853,7 +853,7 @@ class ApiController extends Zend_Controller_Action
$md['MDATA_KEY_ORIGINAL_PATH'], $con); $md['MDATA_KEY_ORIGINAL_PATH'], $con);
if (is_null($file)) { if (is_null($file)) {
$return_hash['error'] = _('File does not exist in Airtime'); $return_hash['error'] = sprintf(_('File does not exist in %s'), PRODUCT_NAME);
} else { } else {
$filepath = $md['MDATA_KEY_FILEPATH']; $filepath = $md['MDATA_KEY_FILEPATH'];
//$filepath = str_replace("\\", "", $filepath); //$filepath = str_replace("\\", "", $filepath);
@ -865,7 +865,7 @@ class ApiController extends Zend_Controller_Action
$file = Application_Model_StoredFile::RecallByFilepath($filepath, $con); $file = Application_Model_StoredFile::RecallByFilepath($filepath, $con);
if (is_null($file)) { if (is_null($file)) {
$return_hash['error'] = _("File doesn't exist in Airtime."); $return_hash['error'] = sprintf(_('File does not exist in %s'), PRODUCT_NAME);
Logging::warn("Attempt to delete file that doesn't exist. Logging::warn("Attempt to delete file that doesn't exist.
Path: '$filepath'"); Path: '$filepath'");
} else { } else {

View file

@ -2,6 +2,7 @@
class LocaleController extends Zend_Controller_Action class LocaleController extends Zend_Controller_Action
{ {
public function init() public function init()
{ {
} }

View file

@ -16,15 +16,16 @@ class LoginController extends Zend_Controller_Action
$request = $this->getRequest(); $request = $this->getRequest();
$response = $this->getResponse(); $response = $this->getResponse();
$stationLocale = Application_Model_Preference::GetDefaultLocale();
//Enable AJAX requests from www.airtime.pro for the sign-in process. //Enable AJAX requests from www.airtime.pro for the sign-in process.
CORSHelper::enableATProCrossOriginRequests($request, $response); CORSHelper::enableATProCrossOriginRequests($request, $response);
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', 'en_CA'));
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', $stationLocale));
$auth = Zend_Auth::getInstance(); $auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) if ($auth->hasIdentity()) {
{
$this->_redirect('Showbuilder'); $this->_redirect('Showbuilder');
} }
@ -130,7 +131,9 @@ class LoginController extends Zend_Controller_Action
$this->view->headScript()->appendFile($baseUrl.'js/airtime/login/password-restore.js?'.$CC_CONFIG['airtime_version'],'text/javascript'); $this->view->headScript()->appendFile($baseUrl.'js/airtime/login/password-restore.js?'.$CC_CONFIG['airtime_version'],'text/javascript');
$request = $this->getRequest(); $request = $this->getRequest();
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', 'en_CA')); $stationLocale = Application_Model_Preference::GetDefaultLocale();
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', $stationLocale));
if (!Application_Model_Preference::GetEnableSystemEmail()) { if (!Application_Model_Preference::GetEnableSystemEmail()) {
$this->_redirect('login'); $this->_redirect('login');
@ -174,7 +177,9 @@ class LoginController extends Zend_Controller_Action
public function passwordRestoreAfterAction() public function passwordRestoreAfterAction()
{ {
$request = $this->getRequest(); $request = $this->getRequest();
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', 'en_CA')); $stationLocale = Application_Model_Preference::GetDefaultLocale();
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', $stationLocale));
//uses separate layout without a navigation. //uses separate layout without a navigation.
$this->_helper->layout->setLayout('login'); $this->_helper->layout->setLayout('login');
@ -193,7 +198,9 @@ class LoginController extends Zend_Controller_Action
$auth = new Application_Model_Auth(); $auth = new Application_Model_Auth();
$user = CcSubjsQuery::create()->findPK($user_id); $user = CcSubjsQuery::create()->findPK($user_id);
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', 'en_CA')); $stationLocale = Application_Model_Preference::GetDefaultLocale();
Application_Model_Locale::configureLocalization($request->getcookie('airtime_locale', $stationLocale));
//check validity of token //check validity of token
if (!$auth->checkToken($user_id, $token, 'password.restore')) { if (!$auth->checkToken($user_id, $token, 'password.restore')) {

View file

@ -38,7 +38,7 @@ class PlaylistController extends Zend_Controller_Action
$obj = null; $obj = null;
$objInfo = Application_Model_Library::getObjInfo($p_type); $objInfo = Application_Model_Library::getObjInfo($p_type);
$obj_sess = new Zend_Session_Namespace( UI_PLAYLISTCONTROLLER_OBJ_SESSNAME); $obj_sess = new Zend_Session_Namespace(UI_PLAYLISTCONTROLLER_OBJ_SESSNAME);
if (isset($obj_sess->id)) { if (isset($obj_sess->id)) {
$obj = new $objInfo['className']($obj_sess->id); $obj = new $objInfo['className']($obj_sess->id);

View file

@ -73,12 +73,6 @@ class UserController extends Zend_Controller_Action
$user->setJabber($formData['jabber']); $user->setJabber($formData['jabber']);
$user->save(); $user->save();
// Language and timezone settings are saved on a per-user basis
// By default, the default language, and timezone setting on
// preferences page is what gets assigned.
Application_Model_Preference::SetUserLocale();
Application_Model_Preference::SetUserTimezone();
$form->reset(); $form->reset();
$this->view->form = $form; $this->view->form = $form;

View file

@ -7,7 +7,7 @@ class Application_Form_AddShowLiveStream extends Zend_Form_SubForm
public function init() public function init()
{ {
$cb_airtime_auth = new Zend_Form_Element_Checkbox("cb_airtime_auth"); $cb_airtime_auth = new Zend_Form_Element_Checkbox("cb_airtime_auth");
$cb_airtime_auth->setLabel(_("Use Airtime Authentication:")) $cb_airtime_auth->setLabel(sprintf(_("Use %s Authentication:"), PRODUCT_NAME))
->setRequired(false) ->setRequired(false)
->setDecorators(array('ViewHelper')); ->setDecorators(array('ViewHelper'));
$this->addElement($cb_airtime_auth); $this->addElement($cb_airtime_auth);

View file

@ -53,13 +53,11 @@ class Application_Form_Login extends Zend_Form
$locale->setMultiOptions(Application_Model_Locale::getLocales()); $locale->setMultiOptions(Application_Model_Locale::getLocales());
$locale->setDecorators(array('ViewHelper')); $locale->setDecorators(array('ViewHelper'));
$this->addElement($locale); $this->addElement($locale);
$this->setDefaults(array(
"locale" => Application_Model_Locale::getUserLocale()
));
$recaptchaNeeded = false;
if (Application_Model_LoginAttempts::getAttempts($_SERVER['REMOTE_ADDR']) >= 3) { if (Application_Model_LoginAttempts::getAttempts($_SERVER['REMOTE_ADDR']) >= 3) {
$recaptchaNeeded = true;
}
if ($recaptchaNeeded) {
// recaptcha
$this->addRecaptcha(); $this->addRecaptcha();
} }

View file

@ -123,7 +123,7 @@ class Application_Form_RegisterAirtime extends Zend_Form
// checkbox for publicise // checkbox for publicise
$checkboxPublicise = new Zend_Form_Element_Checkbox("Publicise"); $checkboxPublicise = new Zend_Form_Element_Checkbox("Publicise");
$checkboxPublicise->setLabel(_('Promote my station on Sourcefabric.org')) $checkboxPublicise->setLabel(sprintf(_('Promote my station on %s'), COMPANY_SITE))
->setRequired(false) ->setRequired(false)
->setDecorators(array('ViewHelper')) ->setDecorators(array('ViewHelper'))
->setValue(Application_Model_Preference::GetPublicise()); ->setValue(Application_Model_Preference::GetPublicise());
@ -143,11 +143,14 @@ class Application_Form_RegisterAirtime extends Zend_Form
) )
)); ));
$privacyPolicyAnchorOpen = "<a id='link_to_privacy' href='" . PRIVACY_POLICY_URL
. "' onclick='window.open(this.href); return false;'>";
// checkbox for privacy policy // checkbox for privacy policy
$checkboxPrivacy = new Zend_Form_Element_Checkbox("Privacy"); $checkboxPrivacy = new Zend_Form_Element_Checkbox("Privacy");
$checkboxPrivacy->setLabel( $checkboxPrivacy->setLabel(
sprintf(_("By checking this box, I agree to Sourcefabric's %sprivacy policy%s."), sprintf(_('By checking this box, I agree to %s\'s %sprivacy policy%s.'),
"<a id='link_to_privacy' href='http://www.sourcefabric.org/en/about/policy/' onclick='window.open(this.href); return false;'>", COMPANY_NAME,
$privacyPolicyAnchorOpen,
"</a>")) "</a>"))
->setDecorators(array('ViewHelper')); ->setDecorators(array('ViewHelper'));
$this->addElement($checkboxPrivacy); $this->addElement($checkboxPrivacy);

View file

@ -118,7 +118,7 @@ class Application_Form_SupportSettings extends Zend_Form
// checkbox for publicise // checkbox for publicise
$checkboxPublicise = new Zend_Form_Element_Checkbox("Publicise"); $checkboxPublicise = new Zend_Form_Element_Checkbox("Publicise");
$checkboxPublicise->setLabel(_('Promote my station on Sourcefabric.org')) $checkboxPublicise->setLabel(sprintf(_('Promote my station on %s'), COMPANY_SITE))
->setRequired(false) ->setRequired(false)
->setDecorators(array('ViewHelper')) ->setDecorators(array('ViewHelper'))
->setValue(Application_Model_Preference::GetPublicise()); ->setValue(Application_Model_Preference::GetPublicise());
@ -130,8 +130,9 @@ class Application_Form_SupportSettings extends Zend_Form
// checkbox for privacy policy // checkbox for privacy policy
$checkboxPrivacy = new Zend_Form_Element_Checkbox("Privacy"); $checkboxPrivacy = new Zend_Form_Element_Checkbox("Privacy");
$checkboxPrivacy->setLabel( $checkboxPrivacy->setLabel(
sprintf(_("By checking this box, I agree to Sourcefabric's %sprivacy policy%s."), sprintf(_('By checking this box, I agree to %s\'s %sprivacy policy%s.'),
"<a id='link_to_privacy' href='http://www.sourcefabric.org/en/about/policy/' onclick='window.open(this.href); return false;'>", COMPANY_NAME,
$privacyPolicyAnchorOpen,
"</a>")) "</a>"))
->setDecorators(array('ViewHelper')); ->setDecorators(array('ViewHelper'));
$this->addElement($checkboxPrivacy); $this->addElement($checkboxPrivacy);

View file

@ -13,9 +13,20 @@
<?php echo $this->layout()->content ?> <?php echo $this->layout()->content ?>
</div> </div>
<div class="footer"> <div class="footer">
<?php echo sprintf(_("Airtime copyright &copy; Sourcefabric z.ú. All rights reserved.%s" <?php
."Maintained and distributed under the GNU GPL v.3 by %sSourcefabric z.ú.%s"), $company = COMPANY_NAME . " " . COMPANY_SUFFIX;
"<br>", "<a href='http://www.sourcefabric.org'>" ,"</a>");?> $licenseSiteAnchor = "<a href='" . LICENSE_URL . "'>"
. LICENSE_VERSION
. "</a>";
$companySiteAnchor = "<a href='" . COMPANY_SITE_URL . "'>"
. $company
. "</a>";
echo sprintf(_('%1$s copyright &copy; %2$s All rights reserved.%3$s'
. 'Maintained and distributed under the %4$s by %5$s'),
PRODUCT_NAME, $company, "<br>",
$licenseSiteAnchor,
$companySiteAnchor);
?>
</div> </div>
</body> </body>

View file

@ -33,7 +33,8 @@ class Application_Model_Auth
$message = sprintf(_("Hi %s, \n\nClick this link to reset your password: "), $user->getDbLogin()); $message = sprintf(_("Hi %s, \n\nClick this link to reset your password: "), $user->getDbLogin());
$message .= "{$e_link_protocol}://{$e_link_base}:{$e_link_port}{$e_link_path}"; $message .= "{$e_link_protocol}://{$e_link_base}:{$e_link_port}{$e_link_path}";
$success = Application_Model_Email::send(_('Airtime Password Reset'), $message, $user->getDbEmail()); $str = sprintf(_('%s Password Reset'), PRODUCT_NAME);
$success = Application_Model_Email::send($str, $message, $user->getDbEmail());
return $success; return $success;
} }

View file

@ -2,6 +2,11 @@
class Application_Model_Locale class Application_Model_Locale
{ {
private static $domains = array(
'airtime',
'pro',
);
public static $locales = array( public static $locales = array(
"en_CA" => "English (Canada)", "en_CA" => "English (Canada)",
"en_GB" => "English (Britain)", "en_GB" => "English (Britain)",
@ -48,10 +53,31 @@ class Application_Model_Locale
Logging::warn("Your system does not have the " . $lang . " locale installed. Run: sudo locale-gen " . $lang); Logging::warn("Your system does not have the " . $lang . " locale installed. Run: sudo locale-gen " . $lang);
} }
$domain = 'airtime'; // We need to run bindtextdomain and bind_textdomain_codeset for each domain we're using.
foreach (self::$domains as $domain) {
bindtextdomain($domain, '../locale'); bindtextdomain($domain, '../locale');
textdomain($domain);
bind_textdomain_codeset($domain, $codeset); bind_textdomain_codeset($domain, $codeset);
} }
textdomain('airtime');
}
/**
* We need this function for the case where a user has logged out, but
* has an airtime_locale cookie containing their locale setting.
*
* If the user does not have an airtime_locale cookie set, we default
* to the station locale.
*
* When the user logs in, the value set in the login form will be passed
* into the airtime_locale cookie. This cookie is also updated when
* a user updates their user settings.
*/
public static function getUserLocale() {
$request = Zend_Controller_Front::getInstance()->getRequest();
$locale = $request->getCookie('airtime_locale', Application_Model_Preference::GetLocale());
return $locale;
}
} }

View file

@ -11,8 +11,7 @@ class Application_Model_Preference
//we need this check because saas calls this function from outside Zend //we need this check because saas calls this function from outside Zend
if (!class_exists("Zend_Auth", true) || !Zend_Auth::getInstance()->hasIdentity()) { if (!class_exists("Zend_Auth", true) || !Zend_Auth::getInstance()->hasIdentity()) {
$userId = null; $userId = null;
} } else {
else {
$auth = Zend_Auth::getInstance(); $auth = Zend_Auth::getInstance();
$userId = $auth->getIdentity()->id; $userId = $auth->getIdentity()->id;
} }
@ -29,14 +28,14 @@ class Application_Model_Preference
$cache = new Cache(); $cache = new Cache();
try { try {
$con = Propel::getConnection(CcPrefPeer::DATABASE_NAME); $con = Propel::getConnection(CcPrefPeer::DATABASE_NAME);
$con->beginTransaction(); $con->beginTransaction();
$userId = self::getUserId(); $userId = self::getUserId();
if ($isUserValue && is_null($userId)) { if ($isUserValue && is_null($userId))
throw new Exception("User id can't be null for a user preference {$key}."); throw new Exception("User id can't be null for a user preference {$key}.");
}
Application_Common_Database::prepareAndExecute("LOCK TABLE cc_pref"); Application_Common_Database::prepareAndExecute("LOCK TABLE cc_pref");
@ -64,8 +63,7 @@ class Application_Model_Preference
//this case should not happen. //this case should not happen.
throw new Exception("Invalid number of results returned. Should be ". throw new Exception("Invalid number of results returned. Should be ".
"0 or 1, but is '$result' instead"); "0 or 1, but is '$result' instead");
} } else if ($result == 1) {
elseif ($result == 1) {
// result found // result found
if (!$isUserValue) { if (!$isUserValue) {
@ -73,8 +71,7 @@ class Application_Model_Preference
$sql = "UPDATE cc_pref" $sql = "UPDATE cc_pref"
." SET subjid = NULL, valstr = :value" ." SET subjid = NULL, valstr = :value"
." WHERE keystr = :key"; ." WHERE keystr = :key";
} } else {
else {
// user pref // user pref
$sql = "UPDATE cc_pref" $sql = "UPDATE cc_pref"
. " SET valstr = :value" . " SET valstr = :value"
@ -82,16 +79,14 @@ class Application_Model_Preference
$paramMap[':id'] = $userId; $paramMap[':id'] = $userId;
} }
} } else {
else {
// result not found // result not found
if (!$isUserValue) { if (!$isUserValue) {
// system pref // system pref
$sql = "INSERT INTO cc_pref (keystr, valstr)" $sql = "INSERT INTO cc_pref (keystr, valstr)"
." VALUES (:key, :value)"; ." VALUES (:key, :value)";
} } else {
else {
// user pref // user pref
$sql = "INSERT INTO cc_pref (subjid, keystr, valstr)" $sql = "INSERT INTO cc_pref (subjid, keystr, valstr)"
." VALUES (:id, :key, :value)"; ." VALUES (:id, :key, :value)";
@ -109,8 +104,7 @@ class Application_Model_Preference
$con); $con);
$con->commit(); $con->commit();
} } catch (Exception $e) {
catch (Exception $e) {
$con->rollback(); $con->rollback();
header('HTTP/1.0 503 Service Unavailable'); header('HTTP/1.0 503 Service Unavailable');
Logging::info("Database error: ".$e->getMessage()); Logging::info("Database error: ".$e->getMessage());
@ -118,7 +112,6 @@ class Application_Model_Preference
} }
$cache->store($key, $value, $isUserValue, $userId); $cache->store($key, $value, $isUserValue, $userId);
//Logging::info("SAVING {$key} {$userId} into cache. = {$value}");
} }
private static function getValue($key, $isUserValue = false) private static function getValue($key, $isUserValue = false)
@ -129,15 +122,12 @@ class Application_Model_Preference
$userId = self::getUserId(); $userId = self::getUserId();
if ($isUserValue && is_null($userId)) { if ($isUserValue && is_null($userId))
throw new Exception("User id can't be null for a user preference."); throw new Exception("User id can't be null for a user preference.");
}
// If the value is already cached, return it
$res = $cache->fetch($key, $isUserValue, $userId); $res = $cache->fetch($key, $isUserValue, $userId);
if ($res !== false) { if ($res !== false) return $res;
//Logging::info("returning {$key} {$userId} from cache. = {$res}");
return $res;
}
//Check if key already exists //Check if key already exists
$sql = "SELECT COUNT(*) FROM cc_pref" $sql = "SELECT COUNT(*) FROM cc_pref"
@ -157,8 +147,7 @@ class Application_Model_Preference
//return an empty string if the result doesn't exist. //return an empty string if the result doesn't exist.
if ($result == 0) { if ($result == 0) {
$res = ""; $res = "";
} } else {
else {
$sql = "SELECT valstr FROM cc_pref" $sql = "SELECT valstr FROM cc_pref"
." WHERE keystr = :key"; ." WHERE keystr = :key";
@ -556,9 +545,8 @@ class Application_Model_Preference
{ {
// When a new user is created they will get the default timezone // When a new user is created they will get the default timezone
// setting which the admin sets on preferences page // setting which the admin sets on preferences page
if (is_null($timezone)) { if (is_null($timezone))
$timezone = self::GetDefaultTimezone(); $timezone = self::GetDefaultTimezone();
}
self::setValue("user_timezone", $timezone, true); self::setValue("user_timezone", $timezone, true);
} }
@ -567,8 +555,7 @@ class Application_Model_Preference
$timezone = self::getValue("user_timezone", true); $timezone = self::getValue("user_timezone", true);
if (!$timezone) { if (!$timezone) {
return self::GetDefaultTimezone(); return self::GetDefaultTimezone();
} } else {
else {
return $timezone; return $timezone;
} }
} }
@ -580,8 +567,7 @@ class Application_Model_Preference
if (!is_null($userId)) { if (!is_null($userId)) {
return self::GetUserTimezone(); return self::GetUserTimezone();
} } else {
else {
return self::GetDefaultTimezone(); return self::GetDefaultTimezone();
} }
} }
@ -612,9 +598,8 @@ class Application_Model_Preference
{ {
// When a new user is created they will get the default locale // When a new user is created they will get the default locale
// setting which the admin sets on preferences page // setting which the admin sets on preferences page
if (is_null($locale)) { if (is_null($locale))
$locale = self::GetDefaultLocale(); $locale = self::GetDefaultLocale();
}
self::setValue("user_locale", $locale, true); self::setValue("user_locale", $locale, true);
} }
@ -624,8 +609,7 @@ class Application_Model_Preference
if (!is_null($userId)) { if (!is_null($userId)) {
return self::GetUserLocale(); return self::GetUserLocale();
} } else {
else {
return self::GetDefaultLocale(); return self::GetDefaultLocale();
} }
} }
@ -1416,12 +1400,11 @@ class Application_Model_Preference
return self::getValue("enable_replay_gain", false); return self::getValue("enable_replay_gain", false);
} }
public static function getReplayGainModifier(){ public static function getReplayGainModifier() {
$rg_modifier = self::getValue("replay_gain_modifier"); $rg_modifier = self::getValue("replay_gain_modifier");
if ($rg_modifier === "") { if ($rg_modifier === "")
return "0"; return "0";
}
return $rg_modifier; return $rg_modifier;
} }

View file

@ -1137,7 +1137,6 @@ SELECT s.name,
s.genre, s.genre,
s.id, s.id,
si.id AS instance_id, si.id AS instance_id,
si.description AS instance_description,
si.record, si.record,
s.url, s.url,
s.image_path, s.image_path,
@ -1226,7 +1225,6 @@ SELECT si.starts AS start_timestamp,
s.description, s.description,
s.id, s.id,
si.id AS instance_id, si.id AS instance_id,
si.description AS instance_description,
si.record, si.record,
s.url, s.url,
s.image_path, s.image_path,
@ -1273,7 +1271,6 @@ SQL;
$results['previousShow'][0] = array( $results['previousShow'][0] = array(
"id" => $rows[$i-1]['id'], "id" => $rows[$i-1]['id'],
"instance_id" => $rows[$i-1]['instance_id'], "instance_id" => $rows[$i-1]['instance_id'],
"instance_description" => $rows[$i-1]['instance_description'],
"name" => $rows[$i-1]['name'], "name" => $rows[$i-1]['name'],
"description" => $rows[$i-1]['description'], "description" => $rows[$i-1]['description'],
"url" => $rows[$i-1]['url'], "url" => $rows[$i-1]['url'],
@ -1292,7 +1289,6 @@ SQL;
$results['nextShow'][0] = array( $results['nextShow'][0] = array(
"id" => $rows[$i+1]['id'], "id" => $rows[$i+1]['id'],
"instance_id" => $rows[$i+1]['instance_id'], "instance_id" => $rows[$i+1]['instance_id'],
"instance_description" => $rows[$i+1]['instance_description'],
"name" => $rows[$i+1]['name'], "name" => $rows[$i+1]['name'],
"description" => $rows[$i+1]['description'], "description" => $rows[$i+1]['description'],
"url" => $rows[$i+1]['url'], "url" => $rows[$i+1]['url'],
@ -1335,7 +1331,6 @@ SQL;
$results['previousShow'][0] = array( $results['previousShow'][0] = array(
"id" => $rows[$previousShowIndex]['id'], "id" => $rows[$previousShowIndex]['id'],
"instance_id" => $rows[$previousShowIndex]['instance_id'], "instance_id" => $rows[$previousShowIndex]['instance_id'],
"instance_description" => $rows[$previousShowIndex]['instance_description'],
"name" => $rows[$previousShowIndex]['name'], "name" => $rows[$previousShowIndex]['name'],
"description" => $rows[$previousShowIndex]['description'], "description" => $rows[$previousShowIndex]['description'],
"start_timestamp" => $rows[$previousShowIndex]['start_timestamp'], "start_timestamp" => $rows[$previousShowIndex]['start_timestamp'],

View file

@ -1,8 +1,13 @@
<?php <?php
class Rest_MediaController extends Zend_Rest_Controller class Rest_MediaController extends Zend_Rest_Controller
{ {
const MUSIC_DIRS_STOR_PK = 1;
const IMPORT_STATUS_SUCCESS = 0;
const IMPORT_STATUS_PENDING = 1;
const IMPORT_STATUS_FAILED = 2;
//fields that are not modifiable via our RESTful API //fields that are not modifiable via our RESTful API
private static $blackList = array( private static $blackList = array(
'id', 'id',
@ -215,6 +220,8 @@ class Rest_MediaController extends Zend_Rest_Controller
} }
$file = CcFilesQuery::create()->findPk($id); $file = CcFilesQuery::create()->findPk($id);
// Since we check for this value when deleting files, set it first
$file->setDbDirectory(self::MUSIC_DIRS_STOR_PK);
$requestData = json_decode($this->getRequest()->getRawBody(), true); $requestData = json_decode($this->getRequest()->getRawBody(), true);
$whiteList = $this->removeBlacklistedFieldsFromRequestData($requestData); $whiteList = $this->removeBlacklistedFieldsFromRequestData($requestData);
@ -251,7 +258,7 @@ class Rest_MediaController extends Zend_Rest_Controller
->setHttpResponseCode(200) ->setHttpResponseCode(200)
->appendBody(json_encode(CcFiles::sanitizeResponse($file))); ->appendBody(json_encode(CcFiles::sanitizeResponse($file)));
} else { } else {
$file->setDbImportStatus(2)->save(); $file->setDbImportStatus(self::IMPORT_STATUS_FAILED)->save();
$this->fileNotFoundResponse(); $this->fileNotFoundResponse();
} }
} }
@ -263,6 +270,7 @@ class Rest_MediaController extends Zend_Rest_Controller
return; return;
} }
$id = $this->getId(); $id = $this->getId();
if (!$id) { if (!$id) {
return; return;

View file

@ -390,33 +390,22 @@ class Application_Service_ShowFormService
} }
/** /**
*
* Before we send the form data in for validation, there * Before we send the form data in for validation, there
* are a few fields we may need to adjust first * are a few fields we may need to adjust first
*
* @param $formData * @param $formData
*/ */
public function preEditShowValidationCheck($formData) public function preEditShowValidationCheck($formData)
{ {
$validateStartDate = true; // If the start date or time were disabled, don't validate them
$validateStartTime = true; $validateStartDate = $formData['start_date_disabled'] === "false";
$validateStartTime = $formData['start_time_disabled'] === "false";
//CcShowDays object of the show currently being edited //CcShowDays object of the show currently being edited
$currentShowDay = $this->ccShow->getFirstCcShowDay(); $currentShowDay = $this->ccShow->getFirstCcShowDay();
//DateTime object //DateTime object
$dt = $currentShowDay->getLocalStartDateAndTime(); $dt = $currentShowDay->getLocalStartDateAndTime();
if (!array_key_exists('add_show_start_date', $formData)) {
//Changing the start date was disabled, since the
//array key does not exist. We need to repopulate this entry from the db.
$formData['add_show_start_date'] = $dt->format("Y-m-d");
if (!array_key_exists('add_show_start_time', $formData)) {
$formData['add_show_start_time'] = $dt->format("H:i");
$validateStartTime = false;
}
$validateStartDate = false;
}
$formData['add_show_record'] = $currentShowDay->getDbRecord(); $formData['add_show_record'] = $currentShowDay->getDbRecord();
//if the show is repeating, set the start date to the next //if the show is repeating, set the start date to the next
@ -440,9 +429,7 @@ class Application_Service_ShowFormService
$ccShowInstance = CcShowInstancesQuery::create() $ccShowInstance = CcShowInstancesQuery::create()
->filterByDbShowId($this->ccShow->getDbId()) ->filterByDbShowId($this->ccShow->getDbId())
->filterByDbModifiedInstance(false) ->filterByDbModifiedInstance(false)
->filterByDbEnds(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN) ->filterByDbStarts(gmdate("Y-m-d H:i:s"), Criteria::GREATER_THAN)
->orderByDbStarts()
->limit(1)
->findOne(); ->findOne();
$starts = new DateTime($ccShowInstance->getDbStarts(), new DateTimeZone("UTC")); $starts = new DateTime($ccShowInstance->getDbStarts(), new DateTimeZone("UTC"));
@ -455,6 +442,7 @@ class Application_Service_ShowFormService
return array($starts, $ends); return array($starts, $ends);
} }
/** /**
* *
* Validates show forms * Validates show forms

View file

@ -4,11 +4,11 @@
$topTextClass = ""; $topTextClass = "";
if (array_key_exists("planupdated", $_GET)) if (array_key_exists("planupdated", $_GET))
{ {
$topText = _("<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."); $topText = _pro("<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle.");
$topTextClass = "status-good"; $topTextClass = "status-good";
} }
else { else {
$topText = _("Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."); $topText = _pro("Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button.");
} }
?> ?>

View file

@ -2,19 +2,25 @@
<h2><?php echo _("About") ?></h2> <h2><?php echo _("About") ?></h2>
<p> <p>
<?php <?php
echo sprintf(_("%sAirtime%s %s, the open radio software for scheduling and remote station management. %s"),
"<a href='http://airtime.sourcefabric.org' target='_blank'>", $productSiteAnchor = "<a href='" . PRODUCT_SITE_URL . "' target='_blank'>"
"</a>", . PRODUCT_NAME
$this->airtime_version, . "</a>";
"<br />") echo sprintf(_('%1$s %2$s, the open radio software for scheduling and remote station management.'),
$productSiteAnchor,
$this->airtime_version)
?> ?>
<br>© 2013 <br />
<br />© 2013
<?php <?php
echo sprintf(_("%sSourcefabric%s z.ú Airtime is distributed under the %sGNU GPL v.3%s"), $companySiteAnchor = "<a href='" . COMPANY_SITE_URL . "' target='_blank'>"
"<a href='http://www.sourcefabric.org' target='_blank'>", . COMPANY_NAME . " " . COMPANY_SUFFIX
"</a>", . "</a>";
"<a href='http://www.gnu.org/licenses/gpl-3.0-standalone.html' target='_blank'>", $licenseAnchor = "<a href='" . LICENSE_URL . "' target='_blank'>"
"</a>") . LICENSE_VERSION
. "</a>";
echo sprintf(_('%1$s %2$s is distributed under the %3$s'),
$companySiteAnchor, PRODUCT_NAME, $licenseAnchor)
?> ?>
</p> </p>
</div> </div>

View file

@ -1,7 +1,7 @@
<div class="gray-logo"></div> <div class="gray-logo"></div>
<div class="text-content"> <div class="text-content">
<h2><?php echo _("Welcome to Airtime!") ?></h2> <h2><?php echo sprintf(_("Welcome to %s!"), PRODUCT_NAME) ?></h2>
<p><?php echo _("Here's how you can get started using Airtime to automate your broadcasts: ")?></p> <p><?php echo sprintf(_("Here's how you can get started using %s to automate your broadcasts: "), PRODUCT_NAME)?></p>
<ol> <ol>
<li><?php echo _("Begin by adding your files to the library using the 'Add Media' menu button. You can drag and drop your files to this window too.")?></li> <li><?php echo _("Begin by adding your files to the library using the 'Add Media' menu button. You can drag and drop your files to this window too.")?></li>
@ -10,8 +10,12 @@
<li><?php echo _("Select your media from the left pane and drag them to your show in the right pane."); ?></li> <li><?php echo _("Select your media from the left pane and drag them to your show in the right pane."); ?></li>
</ol> </ol>
<p><strong><?php echo _("Then you're good to go!")?></strong><br /> <p><strong><?php echo _("Then you're good to go!")?></strong><br />
<?php echo sprintf(_("For more detailed help, read the %suser manual%s."), <?php
"<a href='http://www.sourcefabric.org/en/airtime/manuals/' target='_blank'>", $userManualAnchorOpen = "<a href='" . USER_MANUAL_URL . "' target='_blank'>";
"</a>") ?></p> echo sprintf(_("For more detailed help, read the %suser manual%s."),
$userManualAnchorOpen, "</a>")
?>
</p>
</div> </div>

View file

@ -40,9 +40,8 @@
<?php foreach($watched_dirs as $watched_dir): ?> <?php foreach($watched_dirs as $watched_dir): ?>
<dd class="block-display selected-item"> <dd class="block-display selected-item">
<?php echo ($watched_dir->getExistsFlag())?"":"<span class='ui-icon-alert'><img src='/css/images/warning-icon.png'></span>"?><span id="folderPath" style="display:block; width:350px"><?php echo htmlspecialchars($watched_dir->getDirectory());?></span></span> <?php echo ($watched_dir->getExistsFlag())?"":"<span class='ui-icon-alert'><img src='/css/images/warning-icon.png'></span>"?><span id="folderPath" style="display:block; width:350px"><?php echo htmlspecialchars($watched_dir->getDirectory());?></span></span>
<span title="<?php echo _("Rescan watched directory (This is useful if it is network mount and may be out of sync with Airtime)")?>" class="ui-icon ui-icon-refresh"></span> <span title="<?php echo sprintf(_("Rescan watched directory (This is useful if it is network mount and may be out of sync with %s)"), PRODUCT_NAME)?>" class="ui-icon ui-icon-refresh"></span>
<span title="<?php echo _("Remove watched directory")?>" class="ui-icon ui-icon-close"></span> <span title="<?php echo _("Remove watched directory")?>" class="ui-icon ui-icon-close"></span>
</dd> </dd>
<?php endforeach; ?> <?php endforeach; ?>
<?php else: ?> <?php else: ?>

View file

@ -3,10 +3,10 @@
<fieldset> <fieldset>
<dl class="zend_form"> <dl class="zend_form">
<dt class="block-display info-text"> <dt class="block-display info-text">
<?php echo sprintf(_("Help Airtime improve by letting us know how you are using it. This info " <?php echo sprintf(_('Help %1$s improve by letting us know how you are using it. This info '
."will be collected regularly in order to enhance your user experience.%s" .'will be collected regularly in order to enhance your user experience.%2$s'
."Click 'Yes, help Airtime' and we'll make sure the features you use are " .'Click \'Yes, help %1$s\' and we\'ll make sure the features you use are '
."constantly improving."), "<br /><br />") ?> .'constantly improving.'), PRODUCT_NAME, "<br /><br />") ?>
</dt> </dt>
<dd id="SupportFeedback-element" class="block-display"> <dd id="SupportFeedback-element" class="block-display">
<label class="optional" for="SupportFeedback"> <label class="optional" for="SupportFeedback">
@ -22,10 +22,12 @@
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt class="block-display info-text"> <dt class="block-display info-text">
<?php echo sprintf(_("Click the box below to advertise your station on %sSourcefabric.org%s." <?php
." In order to promote your station, 'Send support feedback' must be enabled. This data will be collected in addition to the support feedback."), $whosUsingAnchor = "<a id='link_to_whos_using' href='" . WHOS_USING_URL . "' onclick='window.open(this.href); return false'>"
"<a id='link_to_whos_using' href='http://sourcefabric.org/en/airtime/whosusing' onclick='window.open(this.href); return false'>", . COMPANY_SITE
"</a>")?> . "</a>";
echo sprintf(_("Click the box below to promote your station on %s."), $whosUsingAnchor)
?>
</dt> </dt>
<dd id="publicize-element" class="block-display"> <dd id="publicize-element" class="block-display">
<label class="optional" for="Publicise"> <label class="optional" for="Publicise">
@ -175,7 +177,7 @@
<?php echo $this->element->getElement('Privacy')->getLabel() ?> <?php echo $this->element->getElement('Privacy')->getLabel() ?>
</label> </label>
<?php }else{?> <?php }else{?>
<a id="link_to_terms_and_condition" href="http://www.sourcefabric.org/en/about/policy/" onclick="window.open(this.href); return false;"><?php echo _("Terms and Conditions") ?></a> <a id="link_to_terms_and_condition" href="<?php echo TERMS_AND_CONDITIONS_URL ?>" onclick="window.open(this.href); return false;"><?php echo _("Terms and Conditions") ?></a>
<?php }?> <?php }?>
</div> </div>
</form> </form>

View file

@ -4,7 +4,7 @@
<div id="login" class="login-content clearfix"> <div id="login" class="login-content clearfix">
<?php if(isset($this->demo) && $this->demo == 1){?> <?php if(isset($this->demo) && $this->demo == 1){?>
<p style="font-weight:bold"> <p style="font-weight:bold">
<?php echo _("Welcome to the Airtime demo! You can log in using the username 'admin' and the password 'admin'.")?> <?php echo sprintf(_("Welcome to the %s demo! You can log in using the username 'admin' and the password 'admin'."), PRODUCT_NAME)?>
</p> </p>
<?php }?> <?php }?>
<p class="light" style='<?php echo $this->error?"color:#902d2d;font-size:11px;padding:2px 4px;background:#c6b4b4;margin-bottom:2px;border:1px solid #c83f3f;":""?>'><?php echo $this->message; ?></p> <p class="light" style='<?php echo $this->error?"color:#902d2d;font-size:11px;padding:2px 4px;background:#c6b4b4;margin-bottom:2px;border:1px solid #c83f3f;":""?>'><?php echo $this->message; ?></p>

View file

@ -6,7 +6,7 @@
<div class="trial-box-calendar-gray"><?php echo _("days") ?></div> <div class="trial-box-calendar-gray"><?php echo _("days") ?></div>
</div> </div>
<div class="trial-box-button"> <div class="trial-box-button">
<a title="<?php echo _("Purchase an Airtime Pro plan!")?>" href="/billing/upgrade"><?php echo _("My Account") ?></a> <a title="<?php echo sprintf(_("Purchase an %s Pro plan!"), PRODUCT_NAME)?>" href="/billing/upgrade"><?php echo _("My Account") ?></a>
</div> </div>
</div> </div>
<?php }?> <?php }?>

View file

@ -11,7 +11,7 @@
<tbody> <tbody>
<!-- <!--
<tr class="odd"> <tr class="odd">
<td><?php echo _("Airtime Version") ?></td> <td><?php echo sprintf(_("%s Version"), PRODUCT_NAME) ?></td>
<td>1.9.3</td> <td>1.9.3</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:7
msgid "<b>Thank you!</b> Your plan has been updated and you will be invoiced during your next billing cycle."
msgstr ""
#: airtime_mvc/application/views/scripts/billing/invoices.phtml:11
msgid "Tip: To pay an invoice, click \"View Invoice\"<br> and look for the \"Checkout\" button."
msgstr ""

Some files were not shown because too many files have changed in this diff Show more