Clickalicious\PhpMemAdmin\App::getContent PHP Method

getContent() protected method

Returns the inner content of the pages by action.
Author: Benjamin Carl ([email protected])
protected getContent ( integer $action ) : string
$action integer The action to return content for
return string HTML
    protected function getContent($action)
    {
        $html = '';
        // Generate content by action ...
        switch ($action) {
            case self::ACTION_DASHBOARD:
                $time = time();
                $data = $this->aggregateStatistics($this->getHosts());
                $data['grade'] = $data['bytes'] * 100 / $data['limit_maxbytes'];
                if ($data['grade'] >= $this->getConfig()->cluster->thresholds->notice) {
                    if ($data['grade'] < $this->getConfig()->cluster->thresholds->warning) {
                        // is notice
                        $thumbColor = self::CLUSTER_HEALTH_NOTICE_COLOR;
                        $thumbMessage = $this->renderString(self::CLUSTER_HEALTH_NOTICE_MESSAGE, array('clusterName' => $this->getConfig()->cluster->name));
                    } elseif ($data['grade'] < $this->getConfig()->cluster->thresholds->error) {
                        // is warning
                        $thumbColor = self::CLUSTER_HEALTH_WARNING_COLOR;
                        $thumbMessage = $this->renderString(self::CLUSTER_HEALTH_WARNING_MESSAGE, array('clusterName' => $this->getConfig()->cluster->name));
                    } else {
                        // is error
                        $thumbColor = self::CLUSTER_HEALTH_ERROR_COLOR;
                        $thumbMessage = $this->renderString(self::CLUSTER_HEALTH_ERROR_MESSAGE, array('clusterName' => $this->getConfig()->cluster->name));
                    }
                } else {
                    $thumbColor = self::CLUSTER_HEALTH_TOP_COLOR;
                    $thumbMessage = $this->renderString(self::CLUSTER_HEALTH_TOP_MESSAGE, array('clusterName' => $this->getConfig()->cluster->name));
                }
                $this->defaultTemplateVariables['thumbColor'] = $thumbColor;
                $this->defaultTemplateVariables['thumbMessage'] = $thumbMessage;
                // Convert units for some values ...
                $data['limit_maxmbytes'] = $data['limit_maxbytes'] / 1024 / 1024;
                $data['starttime'] = date(self::DEFAULT_DATEFORMAT, $time - $data['uptime']) . '.000Z';
                // Request data
                $hitsGet = $data['get_hits'];
                $missesGet = $data['get_misses'];
                $hitsDelete = $data['delete_hits'];
                $missesDelete = $data['delete_misses'];
                $hitsIncr = $data['incr_hits'];
                $missesIncr = $data['incr_misses'];
                $hitsDecr = $data['decr_hits'];
                $missesDecr = $data['decr_misses'];
                $hitsCas = $data['cas_hits'];
                $missesCas = $data['cas_misses'];
                $hits = $hitsGet + $hitsDelete + $hitsIncr + $hitsDecr + $hitsCas;
                $misses = $missesGet + $missesDelete + $missesIncr + $missesDecr + $missesCas;
                $factorSecond = $data['uptime'];
                $factorMinute = $factorSecond / 60;
                $factorHour = $factorMinute / 60;
                $factorDay = $factorHour / 24;
                $sets = $data['cmd_set'];
                $requestRateSeconds = sprintf('%.2f', ($hits + $misses) / $factorSecond);
                $hitRateSeconds = sprintf('%.2f', $hits / $factorSecond);
                $missesRateSeconds = sprintf('%.2f', $misses / $factorSecond);
                $setRateSeconds = sprintf('%.2f', $sets / $factorSecond);
                $requestRateMinutes = sprintf('%.2f', ($hits + $misses) / $factorMinute);
                $hitRateMinutes = sprintf('%.2f', $hits / $factorMinute);
                $missesRateMinutes = sprintf('%.2f', $misses / $factorMinute);
                $setRateMinutes = sprintf('%.2f', $sets / $factorMinute);
                $requestRateHours = sprintf('%.2f', ($hits + $misses) / $factorHour);
                $hitRateHours = sprintf('%.2f', $hits / $factorHour);
                $missesRateHours = sprintf('%.2f', $misses / $factorHour);
                $setRateHours = sprintf('%.2f', $sets / $factorHour);
                $requestRateDays = sprintf('%.2f', ($hits + $misses) / $factorDay);
                $hitRateDays = sprintf('%.2f', $hits / $factorDay);
                $missesRateDays = sprintf('%.2f', $misses / $factorDay);
                $setRateDays = sprintf('%.2f', $sets / $factorDay);
                $data['seconds'] = array('requestRate' => $requestRateSeconds, 'hitRate' => $hitRateSeconds, 'missesRate' => $missesRateSeconds, 'setRate' => $setRateSeconds);
                $data['minutes'] = array('requestRate' => $requestRateMinutes, 'hitRate' => $hitRateMinutes, 'missesRate' => $missesRateMinutes, 'setRate' => $setRateMinutes);
                $data['hours'] = array('requestRate' => $requestRateHours, 'hitRate' => $hitRateHours, 'missesRate' => $missesRateHours, 'setRate' => $setRateHours);
                $data['days'] = array('requestRate' => $requestRateDays, 'hitRate' => $hitRateDays, 'missesRate' => $missesRateDays, 'setRate' => $setRateDays);
                $seconds = '[';
                foreach ($data['seconds'] as $key => $value) {
                    $seconds .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $seconds .= ']';
                $minutes = '[';
                foreach ($data['minutes'] as $key => $value) {
                    $minutes .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $minutes .= ']';
                $hours = '[';
                foreach ($data['hours'] as $key => $value) {
                    $hours .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $hours .= ']';
                $days = '[';
                foreach ($data['days'] as $key => $value) {
                    $days .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $days .= ']';
                $data['seconds'] = $seconds;
                $data['minutes'] = $minutes;
                $data['hours'] = $hours;
                $data['days'] = $days;
                $data['latestVersion'] = '';
                $data['latestVersionHeight'] = 40;
                if ($this->getConfig()->updatecheck === true) {
                    try {
                        $version = $this->getMemcachedLatestVersion();
                    } catch (Exception $e) {
                        $this->setInfo($e->getMessage());
                        $version = '1.0.0';
                    }
                    if ($version !== '1.0.0' && $version < $data['version']) {
                        $data['latestVersion'] = '<span class="label label-danger pull-right"><b><a href="https://code.google.com/p/memcached/wiki/ReleaseNotes' . str_replace('.', '', $version) . '" style="color: #fff;" target="_blank">' . $version . ' available</a></b></span>';
                        $data['latestVersionHeight'] = 60;
                    }
                }
                $hits = array('get' => $hitsGet, 'delete' => $hitsDelete, 'incr' => $hitsIncr, 'decr' => $hitsDecr, 'cas' => $hitsCas);
                $misses = array('get' => $missesGet, 'delete' => $missesDelete, 'incr' => $missesIncr, 'decr' => $missesDecr, 'cas' => $missesCas);
                $hitsJson = '[';
                foreach ($hits as $key => $value) {
                    $hitsJson .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $hitsJson = rtrim($hitsJson, ',') . ']';
                $missesJson = '[';
                foreach ($misses as $key => $value) {
                    $missesJson .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $missesJson = rtrim($missesJson, ',') . ']';
                $data['requestHits'] = $hitsJson;
                $data['requestMisses'] = $missesJson;
                /**
                 * Render subcontent for settings table
                 */
                $subcontent = '';
                $settings = $this->getSettings($this->getActiveHost());
                $template = $this->loadTemplates('content-host-dashboard-settings-entity');
                foreach ($settings as $setting => $value) {
                    $templateVariables = array('key' => $setting, 'value' => $value);
                    $subcontent .= $this->renderTemplate($template, $templateVariables);
                }
                $data['subcontent'] = $subcontent;
                $template = $this->loadTemplates('content-cluster-dashboard-environment');
                $html .= $this->renderTemplate($template, $data);
                break;
            case self::ACTION_HOST_DETAILS:
                $time = time();
                $data = $this->aggregateStatistics(array($this->getActiveHost()));
                // Convert units for some values ...
                $data['limit_maxmbytes'] = $data['limit_maxbytes'] / 1024 / 1024;
                $data['starttime'] = date(self::DEFAULT_DATEFORMAT, $time - $data['uptime']) . '.000Z';
                // Request data
                $hitsGet = $data['get_hits'];
                $missesGet = $data['get_misses'];
                $hitsDelete = $data['delete_hits'];
                $missesDelete = $data['delete_misses'];
                $hitsIncr = $data['incr_hits'];
                $missesIncr = $data['incr_misses'];
                $hitsDecr = $data['decr_hits'];
                $missesDecr = $data['decr_misses'];
                $hitsCas = $data['cas_hits'];
                $missesCas = $data['cas_misses'];
                $hits = $hitsGet + $hitsDelete + $hitsIncr + $hitsDecr + $hitsCas;
                $misses = $missesGet + $missesDelete + $missesIncr + $missesDecr + $missesCas;
                $factorSecond = $data['uptime'];
                $factorMinute = $factorSecond / 60;
                $factorHour = $factorMinute / 60;
                $factorDay = $factorHour / 24;
                $sets = $data['cmd_set'];
                $requestRateSeconds = sprintf('%.2f', ($hits + $misses) / $factorSecond);
                $hitRateSeconds = sprintf('%.2f', $hits / $factorSecond);
                $missesRateSeconds = sprintf('%.2f', $misses / $factorSecond);
                $setRateSeconds = sprintf('%.2f', $sets / $factorSecond);
                $requestRateMinutes = sprintf('%.2f', ($hits + $misses) / $factorMinute);
                $hitRateMinutes = sprintf('%.2f', $hits / $factorMinute);
                $missesRateMinutes = sprintf('%.2f', $misses / $factorMinute);
                $setRateMinutes = sprintf('%.2f', $sets / $factorMinute);
                $requestRateHours = sprintf('%.2f', ($hits + $misses) / $factorHour);
                $hitRateHours = sprintf('%.2f', $hits / $factorHour);
                $missesRateHours = sprintf('%.2f', $misses / $factorHour);
                $setRateHours = sprintf('%.2f', $sets / $factorHour);
                $requestRateDays = sprintf('%.2f', ($hits + $misses) / $factorDay);
                $hitRateDays = sprintf('%.2f', $hits / $factorDay);
                $missesRateDays = sprintf('%.2f', $misses / $factorDay);
                $setRateDays = sprintf('%.2f', $sets / $factorDay);
                $data['seconds'] = array('requestRate' => $requestRateSeconds, 'hitRate' => $hitRateSeconds, 'missesRate' => $missesRateSeconds, 'setRate' => $setRateSeconds);
                $data['minutes'] = array('requestRate' => $requestRateMinutes, 'hitRate' => $hitRateMinutes, 'missesRate' => $missesRateMinutes, 'setRate' => $setRateMinutes);
                $data['hours'] = array('requestRate' => $requestRateHours, 'hitRate' => $hitRateHours, 'missesRate' => $missesRateHours, 'setRate' => $setRateHours);
                $data['days'] = array('requestRate' => $requestRateDays, 'hitRate' => $hitRateDays, 'missesRate' => $missesRateDays, 'setRate' => $setRateDays);
                $seconds = '[';
                foreach ($data['seconds'] as $key => $value) {
                    $seconds .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $seconds .= ']';
                $minutes = '[';
                foreach ($data['minutes'] as $key => $value) {
                    $minutes .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $minutes .= ']';
                $hours = '[';
                foreach ($data['hours'] as $key => $value) {
                    $hours .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $hours .= ']';
                $days = '[';
                foreach ($data['days'] as $key => $value) {
                    $days .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $days .= ']';
                $data['seconds'] = $seconds;
                $data['minutes'] = $minutes;
                $data['hours'] = $hours;
                $data['days'] = $days;
                $data['latestVersion'] = '';
                $data['latestVersionHeight'] = 40;
                if ($this->getConfig()->updatecheck === true) {
                    try {
                        $version = $this->getMemcachedLatestVersion();
                    } catch (Exception $e) {
                        $this->setInfo($e->getMessage());
                        $version = '1.0.0';
                    }
                    if ($version !== '1.0.0' && $version < $data['version']) {
                        $data['latestVersion'] = '<span class="label label-danger pull-right"><b><a href="https://code.google.com/p/memcached/wiki/ReleaseNotes' . str_replace('.', '', $version) . '" style="color: #fff;" target="_blank">' . $version . ' available</a></b></span>';
                        $data['latestVersionHeight'] = 60;
                    }
                }
                $hits = array('get' => $hitsGet, 'delete' => $hitsDelete, 'incr' => $hitsIncr, 'decr' => $hitsDecr, 'cas' => $hitsCas);
                $misses = array('get' => $missesGet, 'delete' => $missesDelete, 'incr' => $missesIncr, 'decr' => $missesDecr, 'cas' => $missesCas);
                $hitsJson = '[';
                foreach ($hits as $key => $value) {
                    $hitsJson .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $hitsJson = rtrim($hitsJson, ',') . ']';
                $missesJson = '[';
                foreach ($misses as $key => $value) {
                    $missesJson .= ($value !== null && $value !== false ? $value : '0') . ',';
                }
                $missesJson = rtrim($missesJson, ',') . ']';
                $data['requestHits'] = $hitsJson;
                $data['requestMisses'] = $missesJson;
                /**
                 * Render subcontent for settings table
                 */
                $subcontent = '';
                $settings = $this->getSettings($this->getActiveHost());
                $template = $this->loadTemplates('content-host-dashboard-settings-entity');
                foreach ($settings as $setting => $value) {
                    $templateVariables = array('key' => $setting, 'value' => $value);
                    $subcontent .= $this->renderTemplate($template, $templateVariables);
                }
                $data['subcontent'] = $subcontent;
                $template = $this->loadTemplates('content-host-dashboard-environment');
                $html .= $this->renderTemplate($template, $data);
                $template = $this->loadTemplates('content-host-dashboard-stored-keys');
                $html .= $this->renderTemplate($template, $data);
                $template = $this->loadTemplates('content-host-dashboard-memory');
                $html .= $this->renderTemplate($template, $data);
                $template = $this->loadTemplates('content-host-dashboard-requests');
                $html .= $this->renderTemplate($template, $data);
                $template = $this->loadTemplates('content-host-dashboard-average-load');
                $html .= $this->renderTemplate($template, $data);
                $template = $this->loadTemplates('content-host-dashboard-settings');
                $html .= $this->renderTemplate($template, $data);
                break;
            case self::ACTION_DASHBOARD:
                /*
                // Output only on dashboard
                if ($this->getAction() < 2) {
                    $template .= '<li class="list-group-item"><span class="badge">' . count($this->getHosts()) . ' </span>Hosts</li>';
                }
                */
                break;
            case self::ACTION_DATA_MANAGEMENT:
                $entityHtml = $this->loadTemplates('content-data-management-entity');
                $host = $this->getActiveHost(true);
                $entries = $this->dumpEntries($host[0], $host[1], null, true);
                // Iterate the entries and generate one block of HTML per entry! each with own controls
                foreach ($entries as $key => $data) {
                    $data['valueType'] = ucfirst(gettype($data['value']));
                    if (is_array($data['value']) === true || is_object($data['value']) === true) {
                        $data['bytes'] = sizeof($data['value']);
                        $data['value'] = var_export($data['value'], true);
                    } elseif (is_int($data['value']) === true || is_double($data['value']) === true) {
                        $data['bytes'] = 2;
                    } else {
                        $data['bytes'] = strlen($data['value']);
                    }
                    $data['bytes'] = number_format($data['bytes'], 0, ',', '.');
                    // Format FLAGS
                    $flags = decbin($data['flags']);
                    $flags = str_pad($flags, self::UINT_32, 0, STR_PAD_LEFT);
                    $flags = str_split($flags, 16);
                    $flags = 'UINT 32-bit' . "\n" . implode('&crarr;' . PHP_EOL, $flags) . '&crarr;';
                    $data['flags'] = $data['flags'] . '&nbsp;<span title="' . $flags . '" data-placement="bottom" class="tooltips pull-right"><span class="text-muted glyphicon glyphicon-eye-open"></span></span>';
                    // Format CAS
                    $cas = decbin($data['cas']);
                    $cas = str_pad($cas, self::UINT_64, 0, STR_PAD_LEFT);
                    $cas = str_split($cas, 16);
                    $cas = 'UINT 64-bit' . "\n" . implode('&crarr;' . PHP_EOL, $cas) . '&crarr;';
                    $data['cas'] = $data['cas'] . '&nbsp;<span title="' . $cas . '" data-placement="bottom" class="tooltips pull-right"><span class="text-muted glyphicon glyphicon-eye-open"></span></span>';
                    switch ($data['valueType']) {
                        case 'String':
                            $data['buttons'] = $this->getDeleteButtonHtml($data['key']) . $this->getEditButtonHtml($data['key'], $data['value']) . $this->getAppendButtonHtml($data['key']) . $this->getPrependButtonHtml($data['key']);
                            break;
                        case 'Double':
                            $data['buttons'] = $this->getDeleteButtonHtml($data['key']) . $this->getEditButtonHtml($data['key'], $data['value']);
                            break;
                        case 'Integer':
                            $data['buttons'] = $this->getDeleteButtonHtml($data['key']) . $this->getEditButtonHtml($data['key'], $data['value']) . $this->getDecrementButtonHtml($data['key']) . $this->getIncrementButtonHtml($data['key']);
                            break;
                        default:
                            $data['buttons'] = $this->getDeleteButtonHtml($data['key']);
                            break;
                    }
                    $html .= $this->renderTemplate($entityHtml, $data);
                }
                break;
            default:
                // Intentionally left blank
                break;
        }
        return $html;
    }