static function replaceVars($template, $er = array()) { $r = rex_extension::registerPoint(new rex_extension_point('YFORM_EMAIL_BEFORE_REPLACEVARS', ['template' => $template, 'search_replace' => $er, 'status' => false])); $template = $r['template']; $er = $r['search_replace']; $status = $r['status']; if ($status) { return true; } $er['REX_SERVER'] = rex::getServer(); $er['REX_ERROR_EMAIL'] = rex::getErrorEmail(); $er['REX_SERVERNAME'] = rex::getServerName(); $er['REX_NOTFOUND_ARTICLE_ID'] = rex_article::getNotfoundArticleId(); $er['REX_ARTICLE_ID'] = rex_article::getCurrentId(); $template['body'] = rex_var::parse($template['body'], '', 'yform_email_template', $er); $template['body_html'] = rex_var::parse($template['body_html'], '', 'yform_email_template', $er); // rex_vars bug: sonst wird der Zeilenumbruch entfernt - wenn DATA_VAR am Ende einer Zeile if (rex_string::versionCompare(rex::getVersion(), '5.0.1', '<')) { $template['body'] = str_replace("?>\r", "?>\r\n\r", $template['body']); $template['body'] = str_replace("?>\n", "?>\n\r\n", $template['body']); $template['body_html'] = str_replace("?>\r", "?>\r\n\r", $template['body_html']); $template['body_html'] = str_replace("?>\n", "?>\n\r\n", $template['body_html']); } $template['body'] = rex_file::getOutput(rex_stream::factory('yform/email/template/' . $template['name'] . '/body', $template['body'])); $template['body_html'] = rex_file::getOutput(rex_stream::factory('yform/email/template/' . $template['name'] . '/body_html', $template['body_html'])); return $template; }
/** * Factory method. * * @param string $host Host name * @param int $port Port number * @param bool $ssl SSL flag * * @return static Socket instance * * @see rex_socket::factoryUrl() */ public static function factory($host, $port = 80, $ssl = false) { if (get_called_class() === __CLASS__ && ($proxy = rex::getProperty('socket_proxy'))) { return rex_socket_proxy::factoryUrl($proxy)->setDestination($host, $port, $ssl); } return new static($host, $port, $ssl); }
/** * Gibt eine Url zu einem Artikel zurück. * * @param string $_id * @param int|string $_clang SprachId des Artikels * @param array|string $_params Array von Parametern * @param bool $escape Flag whether the argument separator "&" should be escaped (&) * * @return string * * @package redaxo\structure */ function rex_getUrl($_id = '', $_clang = '', $_params = '', $escape = true) { $id = (int) $_id; $clang = (int) $_clang; // ----- get id if ($id == 0) { $id = rex::getProperty('article_id'); } // ----- get clang // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben! // Die rexExtension muss selbst entscheiden was sie damit macht if ($_clang === '' && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) { $clang = rex_clang::getCurrentId(); } // ----- get params $param_string = rex_param_string($_params, $escape ? '&' : '&'); $name = 'NoName'; if ($id != 0) { $ooa = rex_article::get($id, $clang); if ($ooa) { $name = rex_parse_article_name($ooa->getName()); } } // ----- EXTENSION POINT $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'name' => $name, 'clang' => $clang, 'params' => $param_string, 'escape' => $escape])); if ($url == '') { $_clang = ''; if (rex_clang::count() > 1) { $_clang .= ($escape ? '&' : '&') . 'clang=' . $clang; } $url = rex_url::frontendController() . '?article_id=' . $id . $_clang . $param_string; } return $url; }
public static function getWidget($id, $name, $value, array $args = []) { $art_name = ''; $art = rex_article::get($value); $category = 0; // Falls ein Artikel vorausgewählt ist, dessen Namen anzeigen und beim öffnen der Linkmap dessen Kategorie anzeigen if ($art instanceof rex_article) { $art_name = $art->getName(); $category = $art->getCategoryId(); } $open_params = '&clang=' . rex_clang::getCurrentId(); if ($category || isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&category_id=' . $category; } $class = ' rex-disabled'; $open_func = ''; $delete_func = ''; if (rex::getUser()->getComplexPerm('structure')->hasStructurePerm()) { $class = ''; $open_func = 'openLinkMap(\'REX_LINK_' . $id . '\', \'' . $open_params . '\');'; $delete_func = 'deleteREXLink(' . $id . ');'; } $e = []; $e['field'] = '<input class="form-control" type="text" name="REX_LINK_NAME[' . $id . ']" value="' . htmlspecialchars($art_name) . '" id="REX_LINK_' . $id . '_NAME" readonly="readonly" /><input type="hidden" name="' . $name . '" id="REX_LINK_' . $id . '" value="' . $value . '" />'; $e['functionButtons'] = ' <a href="#" class="btn btn-popup' . $class . '" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_link_open') . '"><i class="rex-icon rex-icon-open-linkmap"></i></a> <a href="#" class="btn btn-popup' . $class . '" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_link_delete') . '"><i class="rex-icon rex-icon-delete-link"></i></a>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $media = $fragment->parse('core/form/widget.php'); return $media; }
public static function copyContent($article_id, $clang, $from_revision_id, $to_revision_id) { if ($from_revision_id == $to_revision_id) { return false; } // clear the revision to which we will later copy all slices $dc = rex_sql::factory(); // $dc->setDebug(); $dc->setQuery('delete from ' . rex::getTablePrefix() . 'article_slice where article_id=' . $article_id . ' and clang_id=' . $clang . ' and revision=' . $to_revision_id); $gc = rex_sql::factory(); $gc->setQuery('select * from ' . rex::getTablePrefix() . "article_slice where article_id='{$article_id}' and clang_id='{$clang}' and revision='{$from_revision_id}' ORDER by ctype_id, priority"); $cols = rex_sql::factory(); $cols->setquery('SHOW COLUMNS FROM ' . rex::getTablePrefix() . 'article_slice'); foreach ($gc as $slice) { $ins = rex_sql::factory(); // $ins->setDebug(); $ins->setTable(rex::getTablePrefix() . 'article_slice'); foreach ($cols as $col) { $colname = $col->getValue('Field'); $ins->setValue($colname, $slice->getValue($colname)); } $ins->setValue('id', 0); // trigger auto increment $ins->setValue('revision', $to_revision_id); $ins->addGlobalCreateFields(); $ins->addGlobalUpdateFields(); $ins->insert(); } rex_article_cache::delete($article_id); return true; }
/** * @param rex_be_page[] $blockPages * * @return array */ private function _getNavigation(array $blockPages) { $navigation = []; foreach ($blockPages as $page) { if ($page->isHidden() || !$page->checkPermission(rex::getUser())) { continue; } $n = []; $n['linkClasses'] = []; $n['itemClasses'] = []; $n['linkAttr'] = []; $n['itemAttr'] = []; $n['itemClasses'][] = $page->getItemAttr('class'); $n['linkClasses'][] = $page->getItemAttr('class'); foreach ($page->getItemAttr(null) as $name => $value) { $n['itemAttr'][$name] = trim($value); } foreach ($page->getLinkAttr(null) as $name => $value) { $n['linkAttr'][$name] = trim($value); } $n['href'] = str_replace('&', '&', $page->getHref()); $n['title'] = $page->getTitle(); $n['active'] = $page->isActive(); $subpages = $page->getSubpages(); if (is_array($subpages) && !empty($subpages)) { $n['children'] = $this->_getNavigation($subpages); } $navigation[] = $n; } return $navigation; }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('user has no permission for this operation!'); } $type = rex_get('type', 'string'); switch ($type) { case 'articles': $prefix = 'art\\_%'; $defaultFields = [['translate:online_from', 'art_online_from', '1', '', '10', ''], ['translate:online_to', 'art_online_to', '2', '', '10', ''], ['translate:description', 'art_description', '3', '', '2', '']]; break; case 'media': $prefix = 'med\\_%'; $defaultFields = [['translate:pool_file_description', 'med_description', '1', '', '2', ''], ['translate:pool_file_copyright', 'med_copyright', '2', '', '1', '']]; break; default: throw new rex_api_exception(sprintf('metainfo type "%s" does not have default field.', $type)); } $existing = rex_sql::factory()->getArray('SELECT name FROM ' . rex::getTable('metainfo_field') . ' WHERE name LIKE ?', [$prefix]); $existing = array_column($existing, 'name', 'name'); foreach ($defaultFields as $field) { if (!isset($existing[$field[1]])) { $return = call_user_func_array('rex_metainfo_add_field', $field); if (is_string($return)) { throw new rex_api_exception($return); } } } return new rex_api_result(true, rex_i18n::msg('minfo_default_fields_created')); }
/** * Gibt eine Url zu einem Artikel zurück. * * @param int|null $id * @param int|null $clang SprachId des Artikels * @param array $params Array von Parametern * @param string $separator * * @return string * * @package redaxo\structure */ function rex_getUrl($id = null, $clang = null, array $params = [], $separator = '&') { $id = (int) $id; $clang = (int) $clang; // ----- get id if ($id == 0) { $id = rex::getProperty('article_id'); } // ----- get clang // Wenn eine rexExtension vorhanden ist, immer die clang mitgeben! // Die rexExtension muss selbst entscheiden was sie damit macht if (!rex_clang::exists($clang) && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) { $clang = rex_clang::getCurrentId(); } // ----- EXTENSION POINT $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'clang' => $clang, 'params' => $params, 'separator' => $separator])); if ($url == '') { if (rex_clang::count() > 1) { $clang = $separator . 'clang=' . $clang; } else { $clang = ''; } $params = rex_string::buildQuery($params, $separator); $params = $params ? $separator . $params : ''; $url = rex_url::frontendController() . '?article_id=' . $id . $clang . $params; } return $url; }
public function tearDown() { $deleteuser = rex_sql::factory(); $deleteuser->setQuery('DELETE FROM ' . rex::getTablePrefix() . "user WHERE login = '******' LIMIT 1"); // make sure we don't mess up the global scope session_destroy(); }
public static function wildcardFormControlElement(\rex_extension_point $ep) { if (!\rex::getUser()->getComplexPerm('clang')->hasAll()) { $subject = $ep->getSubject(); unset($subject['delete']); $ep->setSubject($subject); } }
public static function getEntriesByTimeline() { //Start - get all timelines from the database $sql = rex_sql::factory(); $timelines = $sql->getArray('SELECT `user_id` FROM `' . rex::getTablePrefix() . 'socialhub_facebook_timeline`'); unset($sql); if (empty($timelines)) { return false; } //End - get all timelines from the database //Start - get all accounts from the database $sql = rex_sql::factory(); $accounts = $sql->getArray('SELECT * FROM `' . rex::getTablePrefix() . 'socialhub_facebook_account` ORDER BY `id` ASC'); unset($sql); if (empty($accounts)) { return false; } //End - get all accounts from the database //Start - get entries by timeline from twitter foreach ($timelines as $timeline) { $fb = new Facebook\Facebook(['app_id' => $accounts[0]['app_id'], 'app_secret' => $accounts[0]['app_secret'], 'default_graph_version' => 'v2.5', 'default_access_token' => $accounts[0]['app_id'] . '|' . $accounts[0]['app_secret']]); try { $response = $fb->get('/' . $timeline['user_id'] . '/posts'); } catch (Facebook\Exceptions\FacebookResponseException $e) { echo rex_view::error('Graph returned an error: ' . $e->getMessage()); } catch (Facebook\Exceptions\FacebookSDKException $e) { echo rex_view::error('Facebook SDK returned an error: ' . $e->getMessage()); } if (empty($response)) { return; } $response = json_decode($response->getBody(), true); foreach ($response['data'] as $post) { list($userID, $postID) = explode('_', $post['id']); $newPost = rex_sql::factory(); $newPost->setTable(rex::getTablePrefix() . 'socialhub_entry_timeline'); $newPost->setWhere(['post_id' => $postID]); $newPost->select(); if ($newPost->getRows() === 0) { $newPost->reset(); $newPost->setTable(rex::getTablePrefix() . 'socialhub_entry_timeline'); $newPost->setValue('source', 'facebook'); $newPost->setValue('post_id', $postID); $newPost->setValue('message', $post['message']); $newPost->setValue('author_id', $userID); $newPost->setValue('created_time', date('Y-m-d H:i:s', strtotime($post['created_time']))); $newPost->setValue('query', '/' . $timeline['user_id'] . '/posts'); try { $newPost->insert(); } catch (rex_sql_exception $e) { echo rex_view::warning($e->getMessage()); } } } } //End - get entries by timeline from twitter }
function executeAction() { $template_name = $this->getElement(2); if ($etpl = rex_yform_email_template::getTemplate($template_name)) { $mail_to = rex::getErrorEmail(); if ($this->getElement(3) != false && $this->getElement(3) != '') { foreach ($this->params['value_pool']['email'] as $key => $value) { if ($this->getElement(3) == $key) { $mail_to = $value; break; } } } // ---- fix mailto from definition if ($this->getElement(4) != false && $this->getElement(4) != '') { $mail_to = $this->getElement(4); } if ($this->params['debug']) { echo '<hr /><pre>'; var_dump($etpl); echo '</pre><hr />'; } $etpl = rex_yform_email_template::replaceVars($etpl, $this->params['value_pool']['email']); if ($this->params['debug']) { echo '<hr /><pre>'; var_dump($etpl); echo '</pre><hr />'; } $etpl['mail_to'] = $mail_to; $etpl['mail_to_name'] = $mail_to; if ($etpl['attachments'] != '') { $f = explode(',', $etpl['attachments']); $etpl['attachments'] = array(); foreach ($f as $v) { $etpl['attachments'][] = array('name' => $v, 'path' => rex_path::media($v)); } } else { $etpl['attachments'] = array(); } if (!rex_yform_email_template::sendMail($etpl, $template_name)) { if ($this->params['debug']) { echo 'email could be sent'; } return false; } else { if ($this->params['debug']) { echo 'email sent'; } return true; } } else { if ($this->params['debug']) { echo '<p>Template: "' . htmlspecialchars($template_name) . '" not found'; } } return false; }
public function isValid($value) { $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } return true; }
public static function getWidget($id, $name, $value, array $args = []) { $open_params = ''; if (isset($args['category']) && ($category = (int) $args['category'])) { $open_params .= '&rex_file_category=' . $category; } foreach ($args as $aname => $avalue) { $open_params .= '&args[' . $aname . ']=' . urlencode($avalue); } $wdgtClass = ' rex-js-widget-medialist'; if (isset($args['preview']) && $args['preview']) { $wdgtClass .= ' rex-js-widget-preview'; if (rex_addon::get('media_manager')->isAvailable()) { $wdgtClass .= ' rex-js-widget-preview-media-manager'; } } $options = ''; $medialistarray = explode(',', $value); if (is_array($medialistarray)) { foreach ($medialistarray as $file) { if ($file != '') { $options .= '<option value="' . $file . '">' . $file . '</option>'; } } } $disabled = ' disabled'; $open_func = ''; $add_func = ''; $delete_func = ''; $view_func = ''; if (rex::getUser()->getComplexPerm('media')->hasMediaPerm()) { $disabled = ''; $open_func = 'openREXMedialist(' . $id . ',\'' . $open_params . '\');'; $add_func = 'addREXMedialist(' . $id . ',\'' . $open_params . '\');'; $delete_func = 'deleteREXMedialist(' . $id . ');'; $view_func = 'viewREXMedialist(' . $id . ',\'' . $open_params . '\');'; } $e = []; $e['before'] = '<div class="rex-js-widget' . $wdgtClass . '">'; $e['field'] = '<select class="form-control" name="REX_MEDIALIST_SELECT[' . $id . ']" id="REX_MEDIALIST_SELECT_' . $id . '" size="8">' . $options . '</select><input type="hidden" name="' . $name . '" id="REX_MEDIALIST_' . $id . '" value="' . $value . '" />'; $e['moveButtons'] = ' <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'top\');return false;" title="' . rex_i18n::msg('var_medialist_move_top') . '"><i class="rex-icon rex-icon-top"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'up\');return false;" title="' . rex_i18n::msg('var_medialist_move_up') . '"><i class="rex-icon rex-icon-up"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'down\');return false;" title="' . rex_i18n::msg('var_medialist_move_down') . '"><i class="rex-icon rex-icon-down"></i></a> <a href="#" class="btn btn-popup" onclick="moveREXMedialist(' . $id . ',\'bottom\');return false;" title="' . rex_i18n::msg('var_medialist_move_bottom') . '"><i class="rex-icon rex-icon-bottom"></i></a>'; $e['functionButtons'] = ' <a href="#" class="btn btn-popup" onclick="' . $open_func . 'return false;" title="' . rex_i18n::msg('var_media_open') . '"' . $disabled . '><i class="rex-icon rex-icon-open-mediapool"></i></a> <a href="#" class="btn btn-popup" onclick="' . $add_func . 'return false;" title="' . rex_i18n::msg('var_media_new') . '"' . $disabled . '><i class="rex-icon rex-icon-add-media"></i></a> <a href="#" class="btn btn-popup" onclick="' . $delete_func . 'return false;" title="' . rex_i18n::msg('var_media_remove') . '"' . $disabled . '><i class="rex-icon rex-icon-delete-media"></i></a> <a href="#" class="btn btn-popup" onclick="' . $view_func . 'return false;" title="' . rex_i18n::msg('var_media_view') . '"' . $disabled . '><i class="rex-icon rex-icon-view-media"></i></a>'; $e['after'] = '<div class="rex-js-media-preview"></div></div>'; $fragment = new rex_fragment(); $fragment->setVar('elements', [$e], false); $media = $fragment->parse('core/form/widget_list.php'); return $media; }
private static function checkTables() { $slices_table = rex_sql_table::get(rex::getTable('article_slice')); $history_table = rex_sql_table::get(self::getTable()); foreach ($slices_table->getColumns() as $column) { if (strtolower($column->getName()) != 'id') { $history_table->ensureColumn($column)->alter(); } } }
private static function prepareQuery($qry) { // rex::getUser() gibts im Setup nicht $user = rex::getUser() ? rex::getUser()->getValue('login') : ''; $qry = str_replace('%USER%', $user, $qry); $qry = str_replace('%TIME%', time(), $qry); $qry = str_replace('%TABLE_PREFIX%', rex::getTablePrefix(), $qry); $qry = str_replace('%TEMP_PREFIX%', rex::getTempPrefix(), $qry); return $qry; }
static function getTemplate($name) { $gt = rex_sql::factory(); $gt->setQuery('select * from ' . rex::getTablePrefix() . 'yform_email_template where name="' . mysql_real_escape_string($name) . '"'); if ($gt->getRows() == 1) { $b = $gt->getArray(); return current($b); } return false; }
public function execute() { $config = rex_plugin::get('cronjob', 'article_status')->getProperty('config'); $from = $config['from']; $to = $config['to']; $from['before'] = (array) $from['before']; $to['before'] = (array) $to['before']; $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setQuery(' SELECT name FROM ' . rex::getTablePrefix() . 'metainfo_field WHERE name="' . $from['field'] . '" OR name="' . $to['field'] . '" '); $rows = $sql->getRows(); if ($rows < 2) { if ($rows == 0) { $msg = 'Metainfo fields "' . $from['field'] . '" and "' . $to['field'] . '" not found'; } else { $field = $sql->getValue('name') == $from['field'] ? $to['field'] : $from['field']; $msg = 'Metainfo field "' . $field . '" not found'; } $this->setMessage($msg); return false; } $time = time(); $sql->setQuery(' SELECT id, clang_id, status FROM ' . rex::getTablePrefix() . 'article WHERE ( ' . $from['field'] . ' > 0 AND ' . $from['field'] . ' < ' . $time . ' AND status IN (' . implode(',', $from['before']) . ') AND (' . $to['field'] . ' > ' . $time . ' OR ' . $to['field'] . ' = 0 OR ' . $to['field'] . ' = "") ) OR ( ' . $to['field'] . ' > 0 AND ' . $to['field'] . ' < ' . $time . ' AND status IN (' . implode(',', $to['before']) . ') ) '); $rows = $sql->getRows(); include_once rex_path::addon('structure', 'functions/function_rex_structure.php'); for ($i = 0; $i < $rows; ++$i) { if (in_array($sql->getValue('status'), $from['before'])) { $status = $from['after']; } else { $status = $to['after']; } rex_article_service::articleStatus($sql->getValue('id'), $sql->getValue('clang_id'), $status); $sql->next(); } $this->setMessage('Updated articles: ' . $rows); return true; }
public function setValue($value) { $value = (int) $value; $sql = rex_sql::factory(); $sql->setQuery('SELECT * FROM ' . rex::getTablePrefix() . 'template WHERE id=' . $value . ' AND active=1'); if ($sql->getRows() != 1 && $value != 0) { return rex_i18n::msg('system_setting_default_template_id_invalid'); } rex_config::set('structure/content', 'default_template_id', $value); return true; }
public static function deleteSlices() { $IDs = rex_get('slices'); $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'article_slice'); $sql->setWhere("id IN('" . implode("','", $IDs) . "')", array()); $sql->delete(); $_SESSION[__CLASS__]['active'] = 0; die; }
/** * Extends rex_extension::registerPoint() with FirePHP logging. */ public static function registerPoint(rex_extension_point $extensionPoint) { $coreTimer = rex::getProperty('timer'); $absDur = $coreTimer->getFormattedDelta(); // start timer for this extensionPoint $timer = new rex_timer(); $res = parent::registerPoint($extensionPoint); $epDur = $timer->getFormattedDelta(); $memory = rex_formatter::bytes(memory_get_usage(true), [3]); self::$log[] = ['type' => 'EP', 'ep' => $extensionPoint->getName(), 'started' => $absDur, 'duration' => $epDur, 'memory' => $memory, 'subject' => $extensionPoint->getSubject(), 'params' => $extensionPoint->getParams(), 'read_only' => $extensionPoint->isReadonly(), 'result' => $res, 'timer' => $epDur]; return $res; }
protected function addCatOption(rex_media_category $mediacat) { if (!$this->check_perms || $this->check_perms && rex::getUser()->getComplexPerm('media')->hasCategoryPerm($mediacat->getId())) { $mid = $mediacat->getId(); $mname = $mediacat->getName() . ' [' . $mid . ']'; $this->addOption($mname, $mid, $mid, $mediacat->getParentId()); $childs = $mediacat->getChildren(); if (is_array($childs)) { foreach ($childs as $child) { $this->addCatOption($child); } } } }
private function log($success, $message) { $name = $this->name; if (!$name) { if ($this->cronjob instanceof rex_cronjob) { $name = rex::isBackend() ? $this->cronjob->getTypeName() : $this->cronjob->getType(); } else { $name = '[no name]'; } } $log = new rex_log_file(rex_path::addonData('cronjob', 'cronjob.log'), 2000000); $data = [$success ? 'SUCCESS' : 'ERROR', $this->id ?: '--', $name, strip_tags($message)]; $log->add($data); }
public function execute() { $tables = rex_sql::showTables(1, rex::getTablePrefix()); if (is_array($tables) && !empty($tables)) { $sql = rex_sql::factory(); // $sql->setDebug(); try { $sql->setQuery('OPTIMIZE TABLE ' . implode(', ', $tables)); return true; } catch (rex_sql_exception $e) { return false; } } return false; }
/** * Creates a directory. * * @param string $dir Path of the new directory * @param bool $recursive When FALSE, nested directories won't be created * * @return bool TRUE on success, FALSE on failure */ public static function create($dir, $recursive = true) { if (is_dir($dir)) { return true; } $parent = dirname($dir); if (!is_dir($parent) && (!$recursive || !self::create($parent))) { return false; } if (self::isWritable($parent) && mkdir($dir, rex::getDirPerm())) { @chmod($dir, rex::getDirPerm()); return true; } return false; }
public function execute() { if (!rex::getUser()->isAdmin()) { throw new rex_api_exception('You do not have the permission!'); } $addonkey = rex_request('addonkey', 'string'); try { rex_install_webservice::delete(rex_install_packages::getPath('?package=' . $addonkey . '&file_id=' . rex_request('file', 'int', 0))); } catch (rex_functional_exception $e) { throw new rex_api_exception($e->getMessage()); } unset($_REQUEST['addonkey']); unset($_REQUEST['file']); rex_install_packages::deleteCache(); return new rex_api_result(true, rex_i18n::msg('install_info_addon_deleted', $addonkey)); }
public function exec($type) { if (!in_array($type, [self::PREVIEW, self::PRESAVE, self::POSTSAVE])) { throw new InvalidArgumentException('$type musst be rex_article_action::PREVIEW, ::PRESAVE or ::POSTSAVE'); } $this->messages = []; $this->save = true; $ga = rex_sql::factory(); $ga->setQuery('SELECT a.id, `' . $type . '` as code FROM ' . rex::getTable('module_action') . ' ma,' . rex::getTable('action') . ' a WHERE `' . $type . '` != "" AND ma.action_id=a.id AND module_id=? AND (a.' . $type . 'mode & ?)', [$this->moduleId, $this->mode]); foreach ($ga as $row) { $action = $row->getValue('code'); $action = str_replace($this->vars['search'], $this->vars['replace'], $action); $action = rex_var::parse($action, rex_var::ENV_BACKEND | rex_var::ENV_INPUT, 'action', $this->sql); require rex_stream::factory('action/' . $row->getValue('id') . '/' . $type, $action); } }
public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post' || !isset($params['id'])) { return $params; } $sql = rex_sql::factory(); // $sql->setDebug(); $sql->setTable(rex::getTablePrefix() . 'clang'); $sql->setWhere('id=:id', ['id' => $params['id']]); parent::fetchRequestValues($params, $sql, $sqlFields); // do the save only when metafields are defined if ($sql->hasValues()) { $sql->update(); } rex_clang_service::generateCache(); return $params; }
public function handleSave(array $params, rex_sql $sqlFields) { if (rex_request_method() != 'post') { return $params; } $article = rex_sql::factory(); // $article->setDebug(); $article->setTable(rex::getTablePrefix() . 'article'); $article->setWhere('id=:id AND clang_id=:clang', ['id' => $params['id'], 'clang' => $params['clang']]); parent::fetchRequestValues($params, $article, $sqlFields); // do the save only when metafields are defined if ($article->hasValues()) { $article->update(); } // Artikel nochmal mit den zusätzlichen Werten neu generieren rex_article_cache::generateMeta($params['id'], $params['clang']); return $params; }
public function getTitle() { $title_scheme = htmlspecialchars_decode(trim($this->domain->getTitle())); if ($title_scheme == '') { $title_scheme = self::$title_scheme_default; } $ytitle = ''; if ($this->article && $this->article->getValue('yrewrite_title') != '') { $ytitle = $this->article->getValue('yrewrite_title'); } if ($ytitle == '') { $ytitle = $this->article->getValue('name'); } $title = $title_scheme; $title = str_replace('%T', $ytitle, $title); $title = str_replace('%SN', rex::getServerName(), $title); return $this->cleanString($title); }