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>&nbsp;</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";
}
Example #7
0
<?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);
}
Example #8
0
        $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;
 }
Example #11
0
            $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')));