public function getlinkAction() { // Parameter auslesen $link_to_page_id = Request::postParam('linkToPageId'); $link_to_language_id = Request::postParam('linkToLanguageId'); $link_to_anchor_name = Request::postParam('linkToAnchorName'); // Parameter überprüfen if (!is_numeric($link_to_page_id) || $link_to_language_id == '') { $this->error(self::RESULT_ERROR_BAD_REQUEST); return; } $pages = new Pages(); // Die absolute URL auslesen $absolute_url = $pages->getPageUrl($link_to_page_id, $link_to_language_id); // eine zum Stammverzeichnis des CMS relative URL daraus machen $base_url = Config::get()->baseUrl; $relative_url = UTF8String::substr($absolute_url, UTF8String::strlen($base_url), UTF8String::strlen($absolute_url)); if ($link_to_anchor_name != '') { if ($relative_url != '') { $relative_url = rtrim($relative_url, '/') . '/'; } $relative_url .= '#' . $link_to_anchor_name; } // Zurückgeben $this->success($relative_url); }
public function getHtml() { $userGroups = $this->userGroups->getAll(); $html = ''; $yes = Translate::get('Yes'); $no = Translate::get('No'); if ($userGroups !== false) { if (count($userGroups) > 0) { foreach ($userGroups as $userGroup) { $modules_text = ''; $modules = $this->userGroups->getAclResources($userGroup['id']); if ($modules !== false) { if (count($modules) > 0) { foreach ($modules as $module_acl_resource_id) { $module_acl_resource = Acl::getResourceDataById($module_acl_resource_id); if ($module_acl_resource !== false) { $modules_text .= ($modules_text != '' ? ', ' : '') . $module_acl_resource['description']; } } } } if (UTF8String::strlen($modules_text) > 75) { $modules_text = UTF8String::substr($modules_text, 0, 75) . '...'; } $html .= ' <tr data-id="' . $userGroup['id'] . '"> <td><input type="checkbox" name="usergroups[' . $userGroup['id'] . ']" value="1" id="usergroup_' . $userGroup['id'] . '"></td> <td>' . $userGroup['name'] . '</td> <td>' . $userGroup['level'] . '</td> <td>' . ($userGroup['action-create'] > 0 ? $yes : $no) . '</td> <td>' . ($userGroup['action-edit'] > 0 ? $yes : $no) . '</td> <td>' . ($userGroup['action-publish'] > 0 ? $yes : $no) . '</td> <td>' . ($userGroup['action-delete'] > 0 ? $yes : $no) . '</td> <td>' . $modules_text . '</td> </tr> '; } } } return $html; }
public function getSearchResultForFrontend($search_string, $columns, $page_id, $language_id) { if (is_array($columns) && count($columns) == 0) { $columns = null; } if ($columns === null) { $columns = array(); foreach ($this->fields as $field) { if (isset($field['dbFieldType'])) { if ($field['dbFieldType'] == 'string') { $columns[] = $field['id']; } } } } else { $columns = array_map(function ($column_id) { return trim($column_id); }, $columns); $columns = array_filter($columns, function ($string) { return UTF8String::strlen($string) > 0; }); } $sanitized_search_string = UTF8String::strtolower(trim($search_string)); $search_array = array_filter(explode(' ', $sanitized_search_string), function ($string) { return UTF8String::strlen($string) > 0; }); $result = array(); if (count($columns) > 0 && count($search_array) > 0) { $rows = $this->getAllRowsForFrontend($page_id, $language_id); if ($rows !== false) { if (count($rows) > 0) { foreach ($rows as $row) { $row_contains_search_string = false; foreach ($columns as $column_id) { if (isset($row[$column_id])) { if ($this->doesFieldValueContainSearchString($row[$column_id], $search_array)) { $row_contains_search_string = true; break; } } } if ($row_contains_search_string) { $result[] = $row; } } } } } return $result; }
public function onDataEditorPluginPrepareForOutput($parameters, &$data) { if ($parameters['fieldType'] == 'link') { $edit_data = null; if (isset($data)) { if (is_array($data)) { if (isset($data['url'])) { if (is_string($data['url'])) { $edit_data = array('url' => $data['url']); if (isset($data['newWindow'])) { $edit_data['newWindow'] = $data['newWindow']; } else { $edit_data['newWindow'] = 'auto'; } $edit_data['type'] = 'external'; $auto_link_target = ''; if (UTF8String::strtolower(UTF8String::substr($data['url'], 0, UTF8String::strlen('link://'))) == 'link://') { $edit_data['type'] = 'internal'; } elseif (UTF8String::strtolower(UTF8String::substr($data['url'], 0, UTF8String::strlen('download://'))) == 'download://') { $edit_data['type'] = 'download'; } switch ($edit_data['type']) { case 'external': $edit_data['url'] = $data['url']; $auto_link_target = '_blank'; break; case 'internal': $edit_data['url'] = Config::get()->baseUrl . UTF8String::substr($data['url'], UTF8String::strlen('link://')); $auto_link_target = ''; break; case 'download': $edit_data['url'] = Config::get()->baseUrl . 'user-data/downloads/' . UTF8String::substr($data['url'], UTF8String::strlen('download://')); $auto_link_target = '_blank'; $edit_data['path'] = APPLICATION_ROOT . 'user-data/downloads/' . urldecode(UTF8String::substr($data['url'], UTF8String::strlen('download://'))); $path_info = pathinfo($edit_data['path']); $edit_data['basename'] = isset($path_info['basename']) ? $path_info['basename'] : ''; $edit_data['extension'] = isset($path_info['extension']) ? $path_info['extension'] : ''; $edit_data['filename'] = isset($path_info['filename']) ? $path_info['filename'] : ''; if (file_exists($edit_data['path'])) { $edit_data['filesize'] = @filesize($edit_data['path']); } break; default: break; } switch ($edit_data['newWindow']) { case 'yes': $edit_data['target'] = '_blank'; break; case 'no': $edit_data['target'] = ''; break; default: $edit_data['target'] = $auto_link_target; break; } } } } } $data = $edit_data; } }
public function extract($path_string, &$data = null) { if ($data === null) { $data = $this->getArray(); } if (!is_array($data)) { return null; } $path = $this->getPathFromString($path_string); $pointer =& $data; $counter = 0; if (count($path) > 0) { foreach ($path as $key) { $index = $key; if (UTF8String::substr($key, 0, 1) == '[') { if (UTF8String::substr($key, -1, 1) == ']') { $number = $this->extendedTrim(UTF8String::substr($key, 1, UTF8String::strlen($key) - 2)); if (is_numeric($number)) { $index = (int) $number; } } } if (isset($pointer[$index])) { $pointer =& $pointer[$index]; if ($counter == count($path) - 1) { return $pointer; } } else { break; } $counter++; } } return null; }
public static function parse() { if (!self::$parsed) { // Request String speichern self::$request_uri = $_SERVER['REQUEST_URI']; // Prüfen, ob HTTPs verwendet wird self::$request_secure = false; if (isset($_SERVER['HTTPS'])) { if ($_SERVER['HTTPS'] != '') { self::$request_secure = true; } } // Den Teil, der von interesse ist, extrahieren // Wenn die baseUrl z.B. http://www.pixelproduction.de/cms/ lautet, // und der entsprechende Request-URI /cms/admin/bla/, // dann schneiden wir das /cms am Anfang heraus, da uns ja nur das /admin/bla/ interessiert... // So kann man das CMS in einem beliebigen Unter-Verzeichnis auf dem Server installieren // und alles funktioniert trotzdem :-) $base_request_string = self::extractRequestUri(Config::get()->baseUrl); if (UTF8String::substr(self::$request_uri, 0, UTF8String::strlen($base_request_string)) != $base_request_string) { die('Fehlerhafter REQUEST_URI oder fehlerhafte Konfiguration. Bitte wenden Sie sich an den Administrator dieser Website.'); } else { self::$request_uri = UTF8String::substr(self::$request_uri, UTF8String::strlen($base_request_string), UTF8String::strlen(self::$request_uri)); } // Die URI in ihre bestandteile (Pfad, Parameter, Anker) zerlegen // Laut PHP Doku muss es eine absolute, vollständige URL sein, ist aber egal, weil wir Protokoll und Server sowieso ignorieren, // also nehmen wir einfach irgeneinen Server an... $url = parse_url('http://www.pixelproduction.de/' . self::$request_uri); // Den Pfad auslesen und in seine Teile zerlegen und in Array ablegen self::$request_path = array(); if (isset($url['path'])) { $url_path = trim($url['path'], '/'); if ($url_path != '') { self::$request_path = explode('/', $url_path); } } // ggf. die GET-Parameter in Array ablegen self::$request_parameters = array(); if (isset($url['query'])) { $query = explode('&', $url['query']); if (is_array($query)) { foreach ($query as $parameter) { $key_value_pair = explode('=', $parameter); if (is_array($key_value_pair)) { if (isset($key_value_pair[0])) { self::$request_parameters[$key_value_pair[0]] = ''; if (isset($key_value_pair[1])) { self::$request_parameters[$key_value_pair[0]] = $key_value_pair[1]; } } } } } } // Herausfinden, ob das Frontend oder das Backend angefordert wird self::$front_end = true; if (count(self::$request_path) > 0) { // Wenn der erste Teil nach der Basis-URL "admin" ist, dann geht's zum Back-End, ansonsten zum Front-End $firstPathSegment = strtolower(self::$request_path[0]); self::$front_end = !in_array($firstPathSegment, array('admin', 'pm:api')); if ($firstPathSegment == 'admin') { // Das "admin" braucht man nicht als ersten Teil, da man ja dann sowieso weiß, dass man sich im Backend befindet... array_splice(self::$request_path, 0, 1); } if ($firstPathSegment == 'pm:api') { self::$request_path[0] = 'api'; } } self::$parsed = true; } }
public function getUniqueName($parent_id, $preferred_name) { $preferred_name = $this->normalizeName($preferred_name); $pos_of_hyphen = UTF8String::strrpos($preferred_name, '-'); if ($pos_of_hyphen !== false) { if ($pos_of_hyphen > 0) { $number_part = UTF8String::substr($preferred_name, $pos_of_hyphen + 1); if (is_numeric($number_part)) { $preferred_name = UTF8String::substr($preferred_name, 0, $pos_of_hyphen); } } } if ($this->isValidName($preferred_name)) { if (!$this->nameExists($parent_id, $preferred_name)) { return $preferred_name; } else { $existing = Db::get('SELECT id, name FROM [prefix]pages WHERE `name` LIKE :pattern', array(':pattern' => $preferred_name . '-%')); $highest_number = 0; if ($existing !== false) { if (count($existing) > 0) { foreach ($existing as $element) { $number_part = UTF8String::substr($element['name'], UTF8String::strlen($preferred_name . '-')); if (is_numeric($number_part)) { if ((int) $number_part > $highest_number) { $highest_number = (int) $number_part; } } } } } if ($highest_number < 2) { $highest_number = 2; } else { $highest_number++; } if (!$this->nameExists($parent_id, $preferred_name . '-' . $highest_number)) { return $preferred_name . '-' . $highest_number; } } } return md5(uniqid(rand(0, 99999), true)); }