public function modifyField(&$data, $structure, $parameters)
 {
     if (isset($structure['parameters'])) {
         $fieldParameters = $structure['parameters'];
     } else {
         $fieldParameters = array();
     }
     $field_parameters = array('fieldId' => $structure['id'], 'fieldType' => $structure['type'], 'fieldParameters' => $fieldParameters);
     $field_parameters = array_merge($parameters, $field_parameters);
     Plugins::call(Plugins::DATA_EDITOR_PLUGIN_PREPARE_FOR_OUTPUT, $field_parameters, $data);
 }
 public function sortCompareItems($a, $b)
 {
     $order_by = $this->tmp_sort_order_by;
     $fields = $this->tmp_sort_fields;
     $result = 0;
     $first_sort_field = $this->getField($fields, $order_by['fieldId']);
     Plugins::call(Plugins::DATA_EDITOR_PLUGIN_SORT_COMPARE_VALUES, array('type' => $first_sort_field['type'], 'fieldDefinition' => $first_sort_field, 'a' => $a[$order_by['fieldId']], 'b' => $b[$order_by['fieldId']]), $result);
     if (isset($order_by['direction'])) {
         if ($order_by['direction'] == 'desc') {
             $result = $result * -1;
         }
     }
     if ($result === 0) {
         if (isset($order_by['additional'])) {
             if (is_array($order_by['additional'])) {
                 foreach ($order_by['additional'] as $additional_order_by) {
                     if (isset($additional_order_by['fieldId'])) {
                         $additional_sort_field = $this->getField($fields, $additional_order_by['fieldId']);
                         if ($additional_sort_field !== false) {
                             Plugins::call(Plugins::DATA_EDITOR_PLUGIN_SORT_COMPARE_VALUES, array('type' => $additional_sort_field['type'], 'fieldDefinition' => $additional_sort_field, 'a' => $a[$additional_order_by['fieldId']], 'b' => $b[$additional_order_by['fieldId']]), $result);
                             if (isset($additional_order_by['direction'])) {
                                 if ($additional_order_by['direction'] == 'desc') {
                                     $result = $result * -1;
                                 }
                             }
                             if ($result != 0) {
                                 break;
                             }
                         }
                     }
                 }
             }
         }
     }
     return $result;
 }
            <li><a href="<?php 
    echo generate_url(array('page' => 'packages'));
    ?>
"><img src="images/16/box.png" border="0" align="absmiddle" /> All Packages</a></li>
          </ul>
        </li>
<?php 
}
# if ($packages)
?>

        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-hover="dropdown" data-toggle="dropdown"> Plugins<b class="caret"></b></a>
          <ul class="dropdown-menu">
<?php 
Plugins::call('menu');
?>
            <li role="presentation" class="divider"></li>
<?php 
if ($_SESSION['userlevel'] >= '10') {
    echo '            <li><a href="plugin/view=admin">Plugin Admin</a></li>';
}
?>
          </ul>
        </li>

<?php 
// Custom menubar entries.
if (is_file("includes/print-menubar-custom.inc.php")) {
    include "includes/print-menubar-custom.inc.php";
}
 protected function applyPluginsToDataFieldParameters($hook, $parameters, $field, &$field_parameters)
 {
     if ($field['type'] == 'array') {
         if (is_array($field_parameters['fields'])) {
             $plugin_parameters = array('arrayId' => $field['id']);
             $plugin_parameters = array_merge($parameters, $plugin_parameters);
             for ($i = 0; $i < count($field_parameters['fields']); $i++) {
                 $changed_field_parameters = array();
                 if (isset($field_parameters['fields'][$i]['parameters'])) {
                     $changed_field_parameters = $field_parameters['fields'][$i]['parameters'];
                 }
                 $this->applyPluginsToDataFieldParameters($hook, $plugin_parameters, $field_parameters['fields'][$i], $changed_field_parameters);
                 $field_parameters['fields'][$i]['parameters'] = $changed_field_parameters;
             }
         }
     } else {
         $plugin_parameters = array('fieldId' => $field['id'], 'fieldType' => $field['type']);
         $plugin_parameters = array_merge($parameters, $plugin_parameters);
         $changed_field_parameters = $field_parameters;
         Plugins::call($hook, $plugin_parameters, $changed_field_parameters);
         $field_parameters = $changed_field_parameters;
     }
 }
Example #5
0
    $ports_colour = $warn_colour_a;
} else {
    $ports_colour = $list_colour_a;
}
echo '
<div class="container-fluid">
  <div class="row">
    <div class="col-md-12">
      &nbsp;
    </div>
  </div>
  <div class="row">
    <div class="col-md-6">
';
require 'includes/dev-overview-data.inc.php';
Plugins::call('device_overview_container', array($device));
require 'overview/ports.inc.php';
echo '
    </div>
    <div class="col-md-6">
';
// Right Pane
require 'overview/processors.inc.php';
require 'overview/mempools.inc.php';
require 'overview/storage.inc.php';
if (is_array($entity_state['group']['c6kxbar'])) {
    require 'overview/c6kxbar.inc.php';
}
require 'overview/toner.inc.php';
require 'overview/sensors/charge.inc.php';
require 'overview/sensors/temperatures.inc.php';
 public function publishAction()
 {
     // Parameter auslesen
     $elements = Request::postParam('elements');
     $recursive = $this->sanitizeBoolean(Request::postParam('recursive', '0'));
     // Parameter �berpr�fen
     if (!is_array($elements) || $recursive === null) {
         $this->error(self::RESULT_ERROR_BAD_REQUEST);
         return;
     }
     // Wenn $elements leer ist, nichts tun
     if (count($elements) == 0) {
         $this->success();
         return;
     }
     // �berpr�fen, ob die zu ver�ffentlichenden Elemente existieren
     $elements_exist = true;
     foreach ($elements as $key => $value) {
         if (is_numeric($value)) {
             $elements[$key] = $this->pages->getProperties($value);
             if ($elements[$key] === false) {
                 $elements_exist = false;
                 break;
             }
         } else {
             $elements_exist = false;
             break;
         }
     }
     // Wenn eines der zu ver�ffentlichenden Elemente jetzt schon nicht mehr existiert, abbrechen
     if (!$elements_exist) {
         $this->error(self::RESULT_ERROR_DOES_NOT_EXIST);
         return;
     }
     // Nutzerrechte �berpr�fen
     if (!$this->helpers->canAccessAllElements($elements, Acl::ACTION_PUBLISH, $recursive)) {
         $this->error(self::RESULT_ERROR_NOT_AUHTORIZED);
         return;
     }
     // OnPageTreeBeginBatchPublishPage ausl�sen
     $parameters = array();
     $data = null;
     Plugins::call(Plugins::PAGETREE_BEGIN_BATCH_PUBLISH_PAGE, $parameters, $data);
     // Ver�ffentlichen
     foreach ($elements as $element) {
         if ($this->publishElements(array($element), $recursive) === false) {
             $this->error();
             return;
         }
     }
     // OnPageTreeEndBatchPublishPage ausl�sen
     $parameters = array();
     $data = null;
     Plugins::call(Plugins::PAGETREE_END_BATCH_PUBLISH_PAGE, $parameters, $data);
     // Cache l�schen (da �nderung am Seitenbaum, die Navigation erscheint i.d.R. auf allen Seiten)
     PageCache::invalidateAll();
     $this->success();
 }
 private function resizeImage($source, $parameters, $preview = false, $custom_settings = null)
 {
     // TODO *******
     //
     // Leider bietet diese drecks GD-Lib keine M�glichkeit, einen "out of memory"-Fehler zu umgehen,
     // oder vorauszusehen, wann ein Bild zu gro� f�r den Speicher ist.
     //
     // Daher sollte hier noch ein Mechanismus geschaffen werden, um voraus zu berechnen, wieviel Speicher
     // es brauchen wird, das Bild zu laden und einen Fehlercode zur�ckzugeben, falls der Speicher nicht reicht!
     // gew�nschte JPEG-Kompression feststellen
     $source_path_info = pathinfo($source);
     $source_ext = UTF8String::strtolower($source_path_info['extension']);
     if ($source_ext == 'jpg' || $source_ext == 'jpg' || $source_ext == 'jpe') {
         if ($this->isParameterPositiveNumber($parameters, 'jpegQuality')) {
             $jpeqQuality = $parameters['jpegQuality'];
         } else {
             $jpeqQuality = Config::get()->jpegQuality;
         }
     } else {
         $jpeqQuality = null;
     }
     // Erstmal keine Gr��en�nderung annehmen
     $mode = 'copy';
     // Pr�fen, ob maximal-Werte angegeben sind
     $max_width = 0;
     $max_height = 0;
     if ($this->isParameterPositiveNumber($parameters, 'maxWidth')) {
         $max_width = $parameters['maxWidth'];
     }
     if ($this->isParameterPositiveNumber($parameters, 'maxHeight')) {
         $max_height = $parameters['maxHeight'];
     }
     // Wenn Maximal-Werte gesetzt sind, Einpassung annehmen
     if ($max_width > 0 || $max_height > 0) {
         $mode = 'fitIn';
     }
     // Pr�fen, ob genaue Abmessungen gefordert sind
     $force_width = 0;
     $force_height = 0;
     if ($this->isParameterPositiveNumber($parameters, 'forceWidth')) {
         $force_width = $parameters['forceWidth'];
     }
     if ($this->isParameterPositiveNumber($parameters, 'forceHeight')) {
         $force_height = $parameters['forceHeight'];
     }
     // ggf. Benutzereingaben auswerten
     if ($custom_settings !== null) {
         // der Benutzer hat selbst eine Gr��e festgelegt...
         // diese Werte �berschreiben forceWidth und forceHeight
         if ($this->sanitizeBoolean($custom_settings['customSize'])) {
             if ($this->sanitizeInteger($custom_settings['width']) > 0) {
                 $force_width = $this->sanitizeInteger($custom_settings['width']);
             } else {
                 $force_width = 0;
             }
             if ($this->sanitizeInteger($custom_settings['height']) > 0) {
                 $force_height = $this->sanitizeInteger($custom_settings['height']);
             } else {
                 $force_height = 0;
             }
         }
         // der Benutzer hat einen Ausschnitt festgelegt oder die s/w option gew�hlt...
         if ($this->sanitizeBoolean($custom_settings['customCrop']) || $this->sanitizeBoolean($custom_settings['convertToBlackAndWhite'])) {
             $tmp_file = APPLICATION_ROOT . 'user-data/tmp/images/' . $this->getRandomFilenameWithTimeStamp($source);
             $tmp_image = WideImage::load($source);
             if ($this->sanitizeBoolean($custom_settings['customCrop'])) {
                 $tmp_image = $tmp_image->crop($this->sanitizeInteger($custom_settings['cropX1']), $this->sanitizeInteger($custom_settings['cropY1']), $this->sanitizeInteger($custom_settings['cropX2']) - $this->sanitizeInteger($custom_settings['cropX1']), $this->sanitizeInteger($custom_settings['cropY2']) - $this->sanitizeInteger($custom_settings['cropY1']));
             }
             if ($this->sanitizeBoolean($custom_settings['convertToBlackAndWhite'])) {
                 $tmp_image = $tmp_image->asGrayscale();
             }
             $this->saveImage($tmp_image, $tmp_file, $jpeqQuality);
             $tmp_image->destroy();
             $source = $tmp_file;
         }
     }
     // Wenn genaue Abmessungen gefordert sind, entsprechenden Modus setzen...
     if ($force_width > 0 && $force_height > 0) {
         $mode = 'exact';
     } elseif ($force_width > 0) {
         $mode = 'forceWidth';
     } elseif ($force_height > 0) {
         $mode = 'forceHeight';
     }
     // Tempor�ren Dateinamen erstellen
     $temp_file_name = $this->getRandomFilenameWithTimeStamp($source);
     $relative_path_to_dest_file = 'user-data/tmp/images/' . $temp_file_name;
     $absolute_path_to_dest_file = APPLICATION_ROOT . $relative_path_to_dest_file;
     // Je nach Modus Bild kopieren / ge�nderte Version speichern
     $result = true;
     try {
         switch ($mode) {
             case 'copy':
                 // keine Gr��en�nderung erfoderlich
                 $result = FileUtils::copyFile($source, $absolute_path_to_dest_file);
                 break;
             case 'exact':
                 // Gr��e genau vorgegeben
                 $image = WideImage::load($source);
                 $image_dimensions = $this->getDimensions($image);
                 $resized_image = $image->resize($force_width, $force_height, 'outside', 'any');
                 $resized_image_dimensions = $this->getDimensions($resized_image);
                 $image->destroy();
                 if ($resized_image->getWidth() > $force_width || $resized_image->getHeight() > $force_height) {
                     $crop_x = 0;
                     if ($resized_image->getWidth() > $force_width) {
                         $crop_x = floor(($resized_image->getWidth() - $force_width) / 2);
                     }
                     $crop_y = 0;
                     if ($resized_image->getHeight() > $force_height) {
                         $crop_y = floor(($resized_image->getHeight() - $force_height) / 2);
                     }
                     $cropped_image = $resized_image->crop($crop_x, $crop_y, $force_width, $force_height);
                     $resized_image->destroy();
                     $this->saveImage($cropped_image, $absolute_path_to_dest_file, $jpeqQuality);
                     $cropped_image->destroy();
                 } else {
                     if ($this->equalDimensions($image_dimensions, $resized_image_dimensions)) {
                         FileUtils::copyFile($source, $absolute_path_to_dest_file);
                     } else {
                         $this->saveImage($resized_image, $absolute_path_to_dest_file, $jpeqQuality);
                     }
                     $resized_image->destroy();
                 }
                 break;
             case 'forceWidth':
                 // Breite vorgegeben
                 $image = WideImage::load($source);
                 $image_dimensions = $this->getDimensions($image);
                 $resized_image = $image->resize($force_width, null, 'outside', 'any');
                 $resized_image_dimensions = $this->getDimensions($resized_image);
                 $image->destroy();
                 if ($max_height > 0 && $resized_image->getHeight() > $max_height) {
                     $crop_y = 0;
                     if ($resized_image->getHeight() > $max_height) {
                         $crop_y = floor(($resized_image->getHeight() - $max_height) / 2);
                     }
                     $cropped_image = $resized_image->crop(0, $crop_y, $force_width, $max_height);
                     $resized_image->destroy();
                     $this->saveImage($cropped_image, $absolute_path_to_dest_file, $jpeqQuality);
                     $cropped_image->destroy();
                 } else {
                     if ($this->equalDimensions($image_dimensions, $resized_image_dimensions)) {
                         FileUtils::copyFile($source, $absolute_path_to_dest_file);
                     } else {
                         $this->saveImage($resized_image, $absolute_path_to_dest_file, $jpeqQuality);
                     }
                     $resized_image->destroy();
                 }
                 break;
             case 'forceHeight':
                 // H�he vorgegeben
                 $image = WideImage::load($source);
                 $image_dimensions = $this->getDimensions($image);
                 $resized_image = $image->resize(null, $force_height, 'outside', 'any');
                 $resized_image_dimensions = $this->getDimensions($resized_image);
                 $image->destroy();
                 if ($max_width > 0 && $resized_image->getWidth() > $max_width) {
                     $crop_x = 0;
                     if ($resized_image->getWidth() > $max_width) {
                         $crop_x = floor(($resized_image->getWidth() - $max_width) / 2);
                     }
                     $cropped_image = $resized_image->crop($crop_x, 0, $max_width, $force_height);
                     $resized_image->destroy();
                     $this->saveImage($cropped_image, $absolute_path_to_dest_file, $jpeqQuality);
                     $cropped_image->destroy();
                 } else {
                     if ($this->equalDimensions($image_dimensions, $resized_image_dimensions)) {
                         FileUtils::copyFile($source, $absolute_path_to_dest_file);
                     } else {
                         $this->saveImage($resized_image, $absolute_path_to_dest_file, $jpeqQuality);
                     }
                     $resized_image->destroy();
                 }
                 break;
             case 'fitIn':
                 // in angegebenes Rechteck einpassen
                 $image = WideImage::load($source);
                 $image_dimensions = $this->getDimensions($image);
                 if ($max_width == 0) {
                     $max_width = null;
                 }
                 if ($max_height == 0) {
                     $max_height = null;
                 }
                 $resized_image = $image->resize($max_width, $max_height, 'inside', 'down');
                 $resized_image_dimensions = $this->getDimensions($resized_image);
                 $image->destroy();
                 if ($this->equalDimensions($image_dimensions, $resized_image_dimensions)) {
                     FileUtils::copyFile($source, $absolute_path_to_dest_file);
                 } else {
                     $this->saveImage($resized_image, $absolute_path_to_dest_file, $jpeqQuality);
                 }
                 $resized_image->destroy();
                 break;
         }
     } catch (WideImage_Exception $e) {
         $result = false;
     }
     // im Erfolgsfall zum Stammverzeichnis relativen Pfad zur�ckgeben
     if ($result) {
         // M�glicherweise wird das Bild nochmal von einem geladenen Plugin bearbeitet
         $plugin_parameters = array('source' => $source, 'parameters' => $parameters, 'preview' => $preview, 'customSettings' => $custom_settings);
         Plugins::call(Plugins::AFTER_IMAGE_RESIZE, $plugin_parameters, $relative_path_to_dest_file);
         return $relative_path_to_dest_file;
     } else {
         return false;
     }
 }
 public function gettabcontentAction()
 {
     $config = Config::getArray();
     $html = '';
     if ($config['showBackendModulesTab'] === true) {
         if (count($config['backendModules']) > 0) {
             $groups = $this->getModuleGroups();
             if (count($groups) > 0) {
                 foreach ($groups as $group_id => $group) {
                     if (count($group['modules']) > 0) {
                         $html .= '<div class="pixelmanager-backend-modules-group-heading">' . Helpers::htmlEntities($group['caption']) . '</div>' . '<div class="list-group">';
                         foreach ($group['modules'] as $module_id => $module) {
                             $module_name = Translate::get($module['name']);
                             $caption = $module_name;
                             $plugin_parameters = array('moduleId' => $module_id, 'moduleConfig' => $module);
                             Plugins::call(Plugins::GET_BACKEND_MODULES_TAB_CAPTION, $plugin_parameters, $caption);
                             $html .= '<a href="javascript:;" class="list-group-item open-module-in-tab" data-module-id="' . Helpers::htmlEntities($module_id) . '" data-module-url="' . Helpers::htmlEntities($module['url']) . '" data-module-name="' . Helpers::htmlEntities($module_name) . '">' . $caption . '</a>';
                         }
                         $html .= '</div>';
                     }
                 }
             }
         }
     }
     $this->success($html);
 }
 public function route()
 {
     $path = Request::path();
     // Vorschau-Modus? (Nur für eingeloggte Benutzer des Backends verfügbar)
     $this->isPreview = false;
     if (isset($_GET['pixelmanager-preview'])) {
         if ($_GET['pixelmanager-preview'] == 'true') {
             if (Auth::isLoggedIn()) {
                 $this->isPreview = true;
             }
         }
     }
     // Sprache feststellen
     if (count($path) > 0) {
         $found_language = false;
         $found_language = $this->findLanguageByUrl($path[0]);
         if ($found_language !== false) {
             $this->languageId = $found_language;
             array_splice($path, 0, 1);
         }
     }
     if ($this->languageId === false) {
         $this->languageId = Config::get()->languages->standard;
     }
     // Seite feststellen
     if (count($path) > 0) {
         $this->pageId = $this->pages->getPageIdByPath(Pages::ROOT_ID, $path, $this->languageId);
     } else {
         $this->pageId = $this->pages->getStartPageId($this->languageId);
     }
     // Wenn die URL auch keine Seite direkt spezifiziert,
     // verweist möglicherweise der erste Teil der URL auf eine Seite
     // und der Rest sind Parameter für diese Seite.
     // Dazu fangen wir mit der kompletten URL an und dann nehmen wir immer ein
     // Teil von rechts weg, bis wir eine URL haben, die eine Seite angibt.
     // Dann fragen wir die installieren Plugins, ob für diese Seite
     // ein Aufruf von ACCEPT_QUERY_STRING uns TRUE (oder eine alternative PageId) liefert. Falls ja,
     // wird diese Seite als die aufgerufene Seite festgelegt und die
     // Variable $this->pluginQueryString auf den rechten Teil der URL gesetzt,
     // zu dem keine passende Seite gefunde werden konnte.
     if ($this->pageId === false && count($path) > 0) {
         $test_path = $path;
         $query_path_for_plugin = array();
         for ($i = count($path) - 1; $i >= 0; $i--) {
             $test_page_id = $this->pages->getPageIdByPath(Pages::ROOT_ID, $test_path, $this->languageId);
             if ($test_page_id !== false) {
                 $page_properties = $this->pages->getProperties($test_page_id);
                 $query_string = implode('/', $query_path_for_plugin);
                 $parameters = array('pageId' => $test_page_id, 'languageId' => $this->languageId, 'queryString' => $query_string, 'pageProperties' => $page_properties);
                 $query_string_accepted = false;
                 Plugins::call(Plugins::ACCEPT_QUERY_STRING, $parameters, $query_string_accepted);
                 if ($query_string_accepted === true) {
                     $this->pageId = $test_page_id;
                     $this->pluginQueryString = $query_string;
                     break;
                 } elseif ($query_string_accepted === false) {
                     // nichts tun
                 } elseif (is_numeric($query_string_accepted)) {
                     $test_page = $this->pages->getProperties($query_string_accepted);
                     if ($test_page !== false) {
                         $this->pageId = $query_string_accepted;
                         $this->pluginQueryString = $query_string;
                         break;
                     }
                 }
             }
             $test_path = array_slice($test_path, 0, count($test_path) - 1);
             array_unshift($query_path_for_plugin, $path[$i]);
         }
     }
     // Prüfen, ob die Seite aktiv ist (im Vorschau-Modus trotzdem zulassen)
     if ($this->pageId !== false && !$this->isPreview) {
         if (!$this->pages->isPageActive($this->pageId)) {
             $this->pageId = false;
         }
     }
     if ($this->pageId !== false) {
         $this->pageFound = true;
     } else {
         $this->pageFound = false;
     }
     // Wenn die Seite gefunden wurde, feststellen, ob die Seite eine Weiterleitung ist
     if ($this->pageFound) {
         $properties = $this->pages->getProperties($this->pageId);
         if ($properties !== false) {
             $this->isPageLink = $this->pages->isPageLink($this->pageId, $properties);
             if ($this->pages->isPageLinkTranslated($this->pageId, $properties)) {
                 $this->pageLinkUrl = $this->pages->getTranslatedPageLinkUrl($this->pageId, $this->languageId);
             } else {
                 $this->pageLinkUrl = $this->pages->getPageLinkUrl($this->pageId, $properties);
             }
             $this->pageLinkNewWindow = $this->pages->getPageLinkNewWindow($this->pageId, $properties);
         }
     }
 }
 public function getPage($page_id, $language_id, $preview = false)
 {
     // Smarty initialisieren
     $smarty = new Template();
     // Seiten-Infos laden
     $pages = new Pages();
     $page_properties = $pages->getProperties($page_id);
     if ($page_properties === false) {
         Helpers::fatalError('A page with the ID "' . $page_id . '" does not exist!');
     }
     // Wenn die Vorschau-Version der Seite angefordert wurde,
     // überprüfen, ob überhaupt eine editierte Version der Seite existiert,
     // wenn nicht, Vorschau-Modus ignorieren
     if ($preview) {
         if ($page_properties['status'] == Pages::STATUS_PUBLISHED) {
             $preview = false;
         }
     }
     // Seiteneigenes Verzeichnis abhängig von $preview auslesen
     if ($preview) {
         $page_files = $pages->getPageFilesEditFolder($page_id, $page_properties);
         $page_files_url = $pages->getPageFilesEditUrl($page_id, $page_properties);
     } else {
         $page_files = $pages->getPageFilesPublishedFolder($page_id, $page_properties);
         $page_files_url = $pages->getPageFilesPublishedUrl($page_id, $page_properties);
     }
     $page_url = $pages->getPageUrl($page_id, $language_id, $page_properties);
     // Grundlegende Variablen zuweisen, die zwar mit dem Inhalt nichts zu tun haben, aber wichtig sind :-)
     $smarty->assign('baseUrl', Config::get()->baseUrl);
     $smarty->assign('publicUrl', Config::get()->baseUrl . 'system/custom/frontend/public/');
     $smarty->assign('pageUrl', $page_url);
     $smarty->assign('pageId', $page_id);
     $smarty->assign('languageId', $language_id);
     $smarty->assign('templateId', $page_properties['template-id']);
     $smarty->assign('uniqueId', $page_properties['unique-id']);
     $smarty->assign('pageFiles', $page_files);
     $smarty->assign('pageFilesUrl', $page_files_url);
     $languages = Config::get()->languages->list->getArrayCopy();
     foreach ($languages as $key => $value) {
         $languages[$key]['id'] = $key;
     }
     $smarty->assign('languages', $languages);
     // Seiten-Struktur laden
     $pages_structure = DataStructure::pagesArray();
     if (!isset($pages_structure[$page_properties['template-id']]['structure'])) {
         Helpers::fatalError('A page template with the ID "' . $page_properties['template-id'] . '" does not exist!');
     }
     $page_structure = $pages_structure[$page_properties['template-id']]['structure'];
     // Die folgenden Parameter werden an die Modifikatoren und Plugins übergeben
     $parameters = array('preview' => $preview, 'pageId' => $page_id, 'languageId' => $language_id, 'templateId' => $page_properties['template-id'], 'uniqueId' => $page_properties['unique-id'], 'pageUrl' => $page_url, 'pageFiles' => $page_files, 'pageFilesUrl' => $page_files_url, 'smarty' => $smarty);
     // Seiten-Inhalt laden
     $content_object = new PageContent();
     if (!$content_object->load($page_id, !$preview)) {
         Helpers::fatalError('The content of the page with the ID "' . $page_id . '" could not be loaded!');
     }
     $page_content = $content_object->getArray($language_id, $smarty, $parameters);
     // Globale Elemente laden
     $this->loadGlobalElementsPage($smarty, $language_id);
     $this->assignGlobalElementsToSmarty($smarty, $language_id);
     // Inhalte zuweisen
     foreach ($page_structure as $block_id => $block) {
         if ($block['type'] == 'datablock') {
             $block_data = null;
             if (isset($page_content[$block_id])) {
                 $block_data = $page_content[$block_id];
             }
             $smarty->assign($block_id, $block_data);
         } elseif ($block['type'] == 'container') {
             $container_content = '';
             if (isset($page_content[$block_id])) {
                 if (is_array($page_content[$block_id])) {
                     foreach ($page_content[$block_id] as $container_element_key => $container_element) {
                         $container_content = $container_content . $this->getElement($page_id, $language_id, $container_element['elementId'], $container_element['content'], $preview);
                     }
                 }
             }
             $smarty->assign($block_id, $container_content);
         }
     }
     // registrierte Plugins aufrufen, vielleicht hat ja noch jemand etwas hinzuzufügen :-)
     Plugins::call(Plugins::ASSIGN_PAGE_DATA, $parameters);
     // Smarty-Template für die Template-ID der aktuellen Seite zurückgeben
     $page_template = $pages_structure[$page_properties['template-id']];
     return $smarty->fetch('file:[pages]' . $page_template['template']);
 }
Example #11
0
 protected function applyPluginsToDataField($hook, $parameters, $field, &$data, $languages)
 {
     if ($field['type'] == 'array') {
         if (is_array($data)) {
             $field_parameters = array('arrayId' => $field['id']);
             $field_parameters = array_merge($parameters, $field_parameters);
             foreach ($data as $row_key => $row_data) {
                 foreach ($field['parameters']['fields'] as $array_field) {
                     if (isset($data[$row_key][$array_field['id']])) {
                         $changed_data = $data[$row_key][$array_field['id']];
                         $this->applyPluginsToDataField($hook, $field_parameters, $array_field, $changed_data, $languages);
                         $data[$row_key][$array_field['id']] = $changed_data;
                     }
                 }
             }
         }
     } else {
         $untranslatable = false;
         if (isset($field['untranslatable'])) {
             $untranslatable = $field['untranslatable'];
         }
         if (!$untranslatable) {
             foreach ($languages as $language_id => $language) {
                 if (isset($data[$language_id])) {
                     if (isset($field['parameters'])) {
                         $fieldParameters = $field['parameters'];
                     } else {
                         $fieldParameters = array();
                     }
                     $field_parameters = array('fieldId' => $field['id'], 'fieldType' => $field['type'], 'fieldParameters' => $fieldParameters, 'languageId' => $language_id);
                     $field_parameters = array_merge($parameters, $field_parameters);
                     $changed_data = $data[$language_id];
                     Plugins::call($hook, $field_parameters, $changed_data);
                     $data[$language_id] = $changed_data;
                 }
             }
         } else {
             if (isset($data)) {
                 if (isset($field['parameters'])) {
                     $fieldParameters = $field['parameters'];
                 } else {
                     $fieldParameters = array();
                 }
                 $field_parameters = array('fieldId' => $field['id'], 'fieldType' => $field['type'], 'fieldUntranslatable' => true, 'fieldParameters' => $fieldParameters);
                 $field_parameters = array_merge($parameters, $field_parameters);
                 $changed_data = $data;
                 Plugins::call($hook, $field_parameters, $changed_data);
                 $data = $changed_data;
             }
         }
     }
 }
Example #12
0
 /**
  * Get a list of all databases visible to the current database user.
  * DB names are cached.
  * 
  * @param boolean $refresh_cache Don't use the cache, but rebuild it.
  * @return array[string] List of all available databases.
  */
 public function list_dbs($refresh_cache = FALSE)
 {
     $token = Profiler::start('WebDB', __METHOD__);
     if (!$this->_connection) {
         return array();
     }
     // Check cache
     $cache = Cache::instance();
     $cache_key = 'database_names_' . Auth::instance()->get_user();
     $this->_database_names = $cache->get($cache_key);
     // If not cached, query DB
     if (!is_array($this->_database_names) or $refresh_cache) {
         $this->_database_names = array();
         $query = mysql_query("SHOW DATABASES", $this->_connection);
         while ($row = mysql_fetch_row($query)) {
             $this->_database_names[] = $row[0];
         }
         // Plugins
         Plugins::call('classes.webdb.dbms.list-dbs', $this->_database_names);
         // Cache
         Kohana::$log->add(Kohana_Log::DEBUG, "Caching DB names under {$cache_key}.");
         $cache->set($cache_key, $this->_database_names);
     }
     Profiler::stop($token);
     return $this->_database_names;
 }
 public function run()
 {
     // Startup-Ereignis
     Plugins::call(Plugins::STARTUP, null);
     // Router laden
     $router_file_name = Config::get()->frontendRouter->classFile;
     if (!file_exists($router_file_name)) {
         Helpers::fatalError('Frontend router class file not found (' . $router_file_name . ' doesn\'t exist)!', true);
     }
     require_once $router_file_name;
     $router_class_name = Config::get()->frontendRouter->className;
     if (!class_exists($router_class_name)) {
         Helpers::fatalError('Frontend router class not found (class "' . $router_class_name . '" doesn\'t exist in ' . $router_file_name . ')!', true);
     }
     $router = new $router_class_name();
     Registry::set('frontendRouter', $router);
     // PageBuilder laden
     $page_builder_file_name = Config::get()->pageBuilder->classFile;
     if (!file_exists($page_builder_file_name)) {
         Helpers::fatalError('PageBuilder class file not found (' . $page_builder_file_name . ' doesn\'t exist)!', true);
     }
     require_once $page_builder_file_name;
     $page_builder_class_name = Config::get()->pageBuilder->className;
     if (!class_exists($page_builder_class_name)) {
         Helpers::fatalError('PageBuilder class not found (class "' . $page_builder_class_name . '" doesn\'t exist in ' . $page_builder_file_name . ')!', true);
     }
     $page_builder = new $page_builder_class_name();
     Registry::set('pageBuilder', $page_builder);
     // routing
     $router->route();
     $languageId = $router->getLanguageId();
     if ($router->pageFound()) {
         $pageId = $router->getPageId();
         $error_404 = false;
     } else {
         $pageId = $router->getErrorPageId();
         $error_404 = true;
     }
     if ($pageId !== false) {
         // Ist die Seite ein Link? Dann einfach auf die angegebene URL weiterleiten...
         if ($router->isPageLink()) {
             Helpers::redirect($router->getPageLinkUrl(), Config::get()->pageLinkRedirectionResponseCode);
             exit;
         }
         // �bersetzungen laden
         $config = Config::getArray();
         $languages = $config['languages']['list'];
         setlocale(LC_ALL, $languages[$languageId]['locale']);
         if (is_array($languages[$languageId]['translation'])) {
             if (count($languages[$languageId]['translation']) > 0) {
                 foreach ($languages[$languageId]['translation'] as $translation_file) {
                     Translate::loadStrings($translation_file, $languageId);
                 }
             }
         } else {
             if ($languages[$languageId]['translation'] != '') {
                 Translate::loadStrings($languages[$languageId]['translation'], $languageId);
             }
         }
         // Before-Display-Ereignis
         Plugins::call(Plugins::BEFORE_DISPLAY, array('preview' => $router->isPreview(), 'pageId' => $pageId, 'languageId' => $languageId));
         if (!$router->isPreview()) {
             // Versuchen, die Seite aus dem Cache zu holen
             $output = PageCache::getPage($pageId, $languageId);
             $output_cached = false;
             // Keine Version im Cache verf�gbar, Seite neu erzeugen
             if ($output === false) {
                 $output = $page_builder->getPage($pageId, $languageId);
             } else {
                 $output_cached = true;
             }
             // Wenn noch nicht im Cache, erzeugte Ausgabe im Cache ablegen
             if (!$output_cached) {
                 PageCache::cachePage($pageId, $languageId, $output);
             }
         } else {
             // Im Vorschau-Modus den Cache nicht verwenden
             // Und dem PageBuilder sagen, dass er die Vorschau-Version erstellen soll
             $output = $page_builder->getPage($pageId, $languageId, true);
             $output_cached = false;
         }
         // HTTP-Header senden
         if ($error_404) {
             if (!headers_sent()) {
                 header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
             }
         }
         $page_builder->outputHeader($pageId, $languageId);
         // Header-Senden-Ereignis
         Plugins::call(Plugins::SEND_HEADER, array('preview' => $router->isPreview(), 'pageId' => $pageId, 'languageId' => $languageId));
         // Modify-Output-Before-Display-Ereignis, bietet die M�glichkeit,
         // dass ein Plugin die Ausgabe vor der Ausgabe nochmal ver�ndert,
         // unabh�ngig davon, ob die Seite aus dem Cache geladen wurde oder nicht
         Plugins::call(Plugins::MODIFY_OUTPUT_BEFORE_DISPLAY, array('preview' => $router->isPreview(), 'pageId' => $pageId, 'languageId' => $languageId, 'isCached' => $output_cached), $output);
         // Seite ausgeben
         print $output;
         // After-Display-Ereignis
         Plugins::call(Plugins::AFTER_DISPLAY, array('preview' => $router->isPreview(), 'pageId' => $pageId, 'languageId' => $languageId));
     } else {
         Helpers::fatalError('Error 404: page not found ', true);
     }
 }