public static function setupInstance($db) { $parts = explode('.', $_SERVER['HTTP_HOST']); $subdomain = array_shift($parts); $items = erLhcoreClassModelInstance::getList(array('filter' => array('address' => $subdomain))); if (!empty($items)) { erLhcoreClassInstance::$instanceChat = array_shift($items); $cfg = erConfigClassLhConfig::getInstance(); $db->query('USE ' . $cfg->getSetting('db', 'database_user_prefix') . erLhcoreClassInstance::$instanceChat->id); } else { $cfg = erConfigClassLhConfig::getInstance(); header('Location: ' . $cfg->getSetting('site', 'seller_url')); exit; } }
<?php /** * Iterates through all instances and executes callback timeout * At the moment it's a simple foreach. In the future we may need to enahance this part * with some queues etc. * * php cron.php -s site_admin -e instance -c cron/extensions_update * */ $cfg = erConfigClassLhConfig::getInstance(); $db = ezcDbInstance::get(); foreach (erLhcoreClassModelInstance::getList(array('limit' => 1000000, 'filter' => array('status' => erLhcoreClassModelInstance::WORKING))) as $instance) { echo "Executing request to update instance internal structure for extensions - ", $instance->id, "\n"; $secretHash = $cfg->getSetting('site', 'seller_secret_hash'); $hash = sha1($instance->id . 'extensions' . date('Ym') . $secretHash); if ($instance->full_domain == 1) { $url = erConfigClassLhConfig::getInstance()->getSetting('site', 'http_mode') . $instance->address . '/index.php/instance/extensionsstructure/' . $instance->id . '/' . date('Ym') . '/' . $hash; } else { $url = erConfigClassLhConfig::getInstance()->getSetting('site', 'http_mode') . $instance->address . '.' . $cfg->getSetting('site', 'seller_domain') . '/index.php/instance/extensionsstructure/' . $instance->id . '/' . date('Ym') . '/' . $hash; } $response = erLhcoreClassModelChatOnlineUser::executeRequest($url); echo "Response:\n"; print_r($response); echo PHP_EOL; }
<?php $cfg = erConfigClassLhConfig::getInstance(); $secretHash = $cfg->getSetting('site', 'seller_secret_hash'); $validateHash = sha1((string) $Params['user_parameters']['address'] . $secretHash); // http://manager.livehelperchat.com/index.php/instance/terminateinstance/remdex/138d07f5c478cbd4d1fcbfcc6ccd49d5961273bd if ((string) $Params['user_parameters']['hash'] == $validateHash) { $list = erLhcoreClassModelInstance::getList(array('filter' => array('address' => (string) $Params['user_parameters']['address']))); if (!empty($list)) { $instance = array_shift($list); // Instance is initialized if ($instance->status == 1) { $instance->terminate = 1; $instance->saveThis(); } elseif ($instance->status == 0) { // We can remove instantly instance erLhcoreClassInstance::getSession()->delete($instance); } echo json_encode(array('error' => 'false', 'msg' => 'instance terminated')); } else { echo json_encode(array('error' => 'false', 'msg' => 'Could not find an instance')); } } else { echo json_encode(array('error' => 'true', 'reason' => 'invalid hash')); } exit;
/** * Adjust inform workflow attributes based on expire data * */ public function setExpireInformStatus() { $expireOptions = erLhcoreClassInstance::getExpireOptions(); $informStatusSet = false; foreach ($expireOptions as $expireOption) { $expireOption['filter']['filter']['id'] = $this->id; // We ignore status at this stage unset($expireOption['filter']['filter']['expire_inform_status']); foreach (erLhcoreClassModelInstance::getList($expireOption['filter']) as $item) { foreach ($expireOption['set'] as $attr => $attrValue) { $this->{$attr} = $attrValue; $this->saveThis(); $informStatusSet = true; } } } // None of above filters matched, so we can set default value if ($informStatusSet == false) { $this->expire_inform_status = 0; $this->saveThis(); } }
/<?php echo $instance->id; ?> " >Child instances [<?php echo $instance->reseller_instances_count; ?> ]</a> </div> <div class="panel-body"> <table class="table"> <tr> <th>Instance</th> <th> </th> </tr> <?php foreach (erLhcoreClassModelInstance::getList(array('sort' => 'id DESC', 'filter' => array('reseller_id' => $instance->id))) as $child) { ?> <tr> <td><a href="<?php echo erLhcoreClassDesign::baseurl('instance/edit'); ?> /<?php echo $child->id; ?> "><?php echo htmlspecialchars($child->address); ?> </a></td> <td width="1"><i class="material-icons">info_outline</i></td> </tr> <?php
<?php // php cron.php -s site_admin -e instance -c cron/maintain $cfgSite = erConfigClassLhConfig::getInstance(); if ($cfgSite->getSetting('site', 'expire_disabled', false) == false) { foreach (erLhcoreClassModelInstance::getList(array('filterlt' => array('expires' => time() - 14 * 24 * 3600))) as $item) { $item->removeThis(); } } foreach (erLhcoreClassModelInstance::getList(array('filter' => array('terminate' => 1))) as $item) { $item->removeThis(); } foreach (erLhcoreClassModelInstance::getList(array('filter' => array('status' => erLhcoreClassModelInstance::PENDING_CREATE))) as $item) { echo "Starting creating customer - ", $item->id, "\n"; erLhcoreClassInstance::createCustomer($item); echo "Creating customer - ", $item->id, "\n"; }
<?php try { $tpl = erLhcoreClassTemplate::getInstance('lhinstance/list.tpl.php'); $pages = new lhPaginator(); $pages->items_total = erLhcoreClassModelInstance::getCount(); $pages->translationContext = 'abstract/list'; $pages->serverURL = erLhcoreClassDesign::baseurl('instance/list'); $pages->setItemsPerPage(20); $pages->paginate(); $tpl->set('pages', $pages); $items = array(); if ($pages->items_total > 0) { $items = erLhcoreClassModelInstance::getList(array('offset' => $pages->low, 'limit' => $pages->items_per_page, 'sort' => 'id ASC')); } $tpl->set('items', $items); $tpl->set('pages', $pages); $Result['content'] = $tpl->fetch(); $Result['path'] = array(array('url' => erLhcoreClassDesign::baseurl('system/configuration'), 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('system/htmlcode', 'System configuration')), array('title' => erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Instances'))); } catch (Exception $e) { print_r($e); }
$tpl->set('errors', array(erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Please choose at least one valid module!'))); } } $pages = new lhPaginator(); $pages->items_total = erLhcoreClassModelInstanceInvoice::getCount(array('filter' => array('instance_id' => $instance->id))); $pages->translationContext = 'instance/billing'; $pages->serverURL = erLhcoreClassDesign::baseurl('instance/billing'); $pages->setItemsPerPage(20); $pages->paginate(); $tpl->set('pages', $pages); $items = array(); if ($pages->items_total > 0) { $items = erLhcoreClassModelInstanceInvoice::getList(array('filter' => array('instance_id' => $instance->id), 'offset' => $pages->low, 'limit' => $pages->items_per_page)); } $tpl->set('items', $items); if ($instance->is_reseller) { $pagesInstances = new lhPaginator(); $pagesInstances->items_total = erLhcoreClassModelInstance::getCount(array('switch_db' => true, 'filter' => array('reseller_id' => $instance->id))); $pagesInstances->translationContext = 'instance/billing'; $pagesInstances->serverURL = erLhcoreClassDesign::baseurl('instance/billinginstance'); $pagesInstances->setItemsPerPage(20); $pagesInstances->paginate(); $tpl->set('pagesInstance', $pagesInstances); $items = array(); if ($pagesInstances->items_total > 0) { $items = erLhcoreClassModelInstance::getList(array('switch_db' => true, 'filter' => array('reseller_id' => $instance->id), 'offset' => $pagesInstances->low, 'limit' => $pagesInstances->items_per_page)); } $tpl->set('itemsInstance', $items); } $Result['content'] = $tpl->fetch(); $Result['path'] = array(array('title' => erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Billing')));
} } if ($line == $startLine) { $startParse = true; } } } fclose($handle); } else { echo "Warning: Cannot open apache log-file '{$logFilePath}' for reading, please check permissions and try again.\n"; } } else { echo "Warning: apache log-file '{$logFilePath}' doesn't exist, please check your ini-settings and try again.\n"; } foreach ($partsHost as $address => $hits) { $items = erLhcoreClassModelInstance::getList(array('filter' => array('address' => $address))); if (!empty($items)) { $host = array_shift($items); $host->request -= $hits; $host->saveThis(); echo $host->address, '-', $hits, "\n"; } } $fh = fopen($updateViewLogPath, "w"); if ($fh) { fwrite($fh, "# Finished at " . date('Y-m-d H:i:s') . "\n"); fwrite($fh, "# Last updated entry:" . "\n"); fwrite($fh, $lastLine . "\n"); fclose($fh); } echo "Finished at " . date('Y-m-d H:i:s') . "\n";
/** * Processes all informing actions about expiring instances. * Sponsored :) * * */ public static function informAboutExpiration() { $status = array(); foreach (self::getExpireOptions() as $expireOption) { foreach (erLhcoreClassModelInstance::getList($expireOption['filter']) as $item) { $status[] = "Expire option - " . $expireOption['template'] . '-' . $item->id; foreach ($expireOption['set'] as $attr => $attrValue) { $item->{$attr} = $attrValue; } $item->saveThis(); // Send e-mail only if enabled if ($expireOption['enabled'] == true) { self::sendExpireMail($item, $expireOption); $status[] = "Informing about expiration..."; } } } return $status; }
$instanceAssign->saveThis(); } } } /** * Unasign instance */ if (is_numeric($Params['user_parameters_unordered']['unasign']) && $Params['user_parameters_unordered']['unasign'] > 0) { $instanceAssign = erLhcoreClassModelInstance::fetch($Params['user_parameters_unordered']['unasign']); $instanceAssign->reseller_id = 0; $instanceAssign->saveThis(); } /** * Child instances * */ $pages = new lhPaginator(); $pages->items_total = erLhcoreClassModelInstance::getCount(array('filter' => array('reseller_id' => $Instance->id))); $pages->translationContext = 'abstract/list'; $pages->serverURL = erLhcoreClassDesign::baseurl('instance/assign') . '/' . $Instance->id; $pages->setItemsPerPage(20); $pages->paginate(); $tpl->set('pages', $pages); $items = array(); if ($pages->items_total > 0) { $items = erLhcoreClassModelInstance::getList(array('filter' => array('reseller_id' => $Instance->id), 'offset' => $pages->low, 'limit' => $pages->items_per_page, 'sort' => 'id ASC')); } $tpl->set('items', $items); $tpl->set('pages', $pages); $tpl->set('instance', $Instance); $Result['content'] = $tpl->fetch(); $Result['path'] = array(array('url' => erLhcoreClassDesign::baseurl('system/configuration'), 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('department/edit', 'System configuration')), array('url' => erLhcoreClassDesign::baseurl('instance/list'), 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Instances')), array('url' => erLhcoreClassDesign::baseurl('instance/edit') . '/' . $Instance->id, 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Instance') . ' - ' . $Instance->address), array('title' => erTranslationClassLhTranslation::getInstance()->getTranslation('instance/edit', 'Child instances')));