function rex_a256_search_mpool_query($params)
{
    global $REX;
    if (!$REX['USER']->hasPerm('be_search[mediapool]')) {
        return $params['subject'];
    }
    $media_name = rex_request('a256_media_name', 'string');
    if ($media_name == '') {
        return $params['subject'];
    }
    $qry = $params['subject'];
    $category_id = $params['category_id'];
    $qry = str_replace('f.category_id=' . $category_id, '1=1', $qry);
    $where = " (f.filename LIKE '%" . $media_name . "%' OR f.title LIKE '%" . $media_name . "%')";
    $searchmode = OOAddon::getProperty('be_search', 'searchmode', 'local');
    // global search - all
    if ($searchmode == 'global') {
        $qry = str_replace('WHERE ', 'WHERE ' . $where . ' AND ', $qry);
        return $qry;
        // local search - all categories and with no category
    } elseif ($category_id == 0) {
        $qry = str_replace('WHERE ', 'WHERE ' . $where . ' AND ', $qry);
        // local search - categorie and subcategories
    } else {
        $where .= ' AND f.category_id = c.id  ';
        $where .= " AND (c.path LIKE '%|" . $params['category_id'] . "|%' OR c.id=" . $params['category_id'] . ') ';
        $qry = str_replace('FROM ', 'FROM ' . $REX['TABLE_PREFIX'] . 'file_category c,', $qry);
        $qry = str_replace('WHERE ', 'WHERE ' . $where . ' AND ', $qry);
    }
    return $qry;
}
function rex_a256_search_mpool_query($params)
{
    global $REX;
    if (!$REX['USER']->hasPerm('be_search[mediapool]')) {
        return $params['subject'];
    }
    $media_name = rex_request('a256_media_name', 'string');
    if ($media_name == '') {
        return $params['subject'];
    }
    $qry = $params['subject'];
    $category_id = $params['category_id'];
    $where = " f.category_id = c.id AND (f.filename LIKE '%" . $media_name . "%' OR f.title LIKE '%" . $media_name . "%')";
    switch (OOAddon::getProperty('be_search', 'searchmode', 'local')) {
        case 'local':
            // Suche auf aktuellen Kontext eingrenzen
            if ($category_id != 0) {
                $where .= " AND (c.path LIKE '%|" . $params['category_id'] . "|%' OR c.id=" . $params['category_id'] . ") ";
            } else {
                $qry = str_replace('f.category_id=0', '1=1', $qry);
            }
    }
    $qry = str_replace('FROM ', 'FROM ' . $REX['TABLE_PREFIX'] . 'file_category c,', $qry);
    $qry = str_replace('WHERE ', 'WHERE ' . $where . ' AND ', $qry);
    return $qry;
}
 function getRegisteredPlugins()
 {
     $plugins = OOAddon::getProperty('community', 'pluginlist', array());
     if (is_string($plugins)) {
         $plugins = explode(',', $plugins);
     }
     return $plugins;
 }
Example #4
0
 public function doAction()
 {
     global $I18N, $REX;
     // $REX is needed for update.inc.php
     $path = rex_path::addon($this->addonkey);
     $temppath = rex_path::addon('.new.' . $this->addonkey);
     if (($msg = $this->extractArchiveTo($temppath)) !== true) {
         return $msg;
     }
     // ---- include update.php
     if (file_exists($temppath . 'update.inc.php')) {
         try {
             require $temppath . 'update.inc.php';
         } catch (rex_install_functional_exception $e) {
             return $e->getMessage();
         }
         if (($msg = OOAddon::getProperty($this->addonkey, 'updatemsg', '')) != '') {
             return $msg;
         }
         if (!OOAddon::getProperty($this->addonkey, 'update', true)) {
             return $I18N->msg('package_no_reason');
         }
     }
     // ---- backup
     $assets = rex_path::addonAssets($this->addonkey);
     if (OOAddon::getProperty('install', 'backups')) {
         $archivePath = rex_path::addonData('install', $this->addonkey . '/');
         rex_dir::create($archivePath);
         $archive = $archivePath . strtolower(preg_replace('/[^a-z0-9-_.]/i', '_', OOAddon::getVersion($this->addonkey))) . '.zip';
         rex_install_archive::copyDirToArchive($path, $archive);
         if (is_dir($assets)) {
             rex_install_archive::copyDirToArchive($assets, $archive, 'assets');
         }
     }
     // ---- copy plugins to new addon dir
     foreach (OOPlugin::getRegisteredPlugins($this->addonkey) as $plugin) {
         $pluginPath = $temppath . '/plugins/' . $plugin;
         if (!is_dir($pluginPath)) {
             rex_dir::copy(rex_path::plugin($this->addonkey, $plugin), $pluginPath);
         } elseif (OOPlugin::isInstalled($this->addonkey, $plugin) && is_dir($pluginPath . '/files')) {
             rex_dir::copy($pluginPath . '/files', rex_path::pluginAssets($this->addonkey, $plugin));
         }
     }
     // ---- update main addon dir
     rex_dir::delete($path);
     rename($temppath, $path);
     // ---- update assets
     $origAssets = rex_path::addon($this->addonkey, 'assets');
     if (is_dir($origAssets)) {
         rex_dir::copy($origAssets, $assets);
     }
     OOAddon::setProperty($this->addonkey, 'version', $this->file['version']);
     rex_install_packages::updatedPackage($this->addonkey, $this->fileId);
 }
 /**
  * set the property for the metainfo.
  * added Entrys in metaTables and prefixes
  */
 public static function setProperty()
 {
     global $REX;
     $metaTables = OOAddon::getProperty('metainfo', 'metaTables', array());
     $metaTables['asd_'] = $REX['TABLE_PREFIX'] . 'asd_news';
     OOAddon::setProperty('metainfo', 'metaTables', $metaTables);
     $prefixes = OOAddon::getProperty('metainfo', 'prefixes', array());
     if (!in_array('asd_', $prefixes)) {
         $prefixes[] = 'asd_';
     }
     OOAddon::setProperty('metainfo', 'prefixes', $prefixes);
 }
 /**
  * set the property for the metainfo.
  * added Entrys in metaTables and prefixes
  */
 public static function setProperty()
 {
     global $REX;
     $metaTables = OOAddon::getProperty('metainfo', 'metaTables', array());
     $metaTables[self::PREFIX] = $REX['TABLE_PREFIX'] . self::TABLE;
     OOAddon::setProperty('metainfo', 'metaTables', $metaTables);
     $prefixes = OOAddon::getProperty('metainfo', 'prefixes', array());
     if (!in_array(self::PREFIX, $prefixes)) {
         $prefixes[] = self::PREFIX;
     }
     OOAddon::setProperty('metainfo', 'prefixes', $prefixes);
 }
function rex_a256_search_mpool_query($params)
{
    global $REX, $REX_USER;
    if (!($REX_USER->isAdmin() || $REX_USER->hasPerm('be_search[medienpool]'))) {
        return $params['subject'];
    }
    $media_name = rex_request('a256_media_name', 'string');
    if ($media_name == '') {
        return $params['subject'];
    }
    $category_id = $params['category_id'];
    $qry = "SELECT *\n          FROM " . $REX['TABLE_PREFIX'] . "file f, " . $REX['TABLE_PREFIX'] . "file_category c\n          WHERE f.category_id = c.id AND (filename LIKE '%" . $media_name . "%' OR title LIKE '%" . $media_name . "%')";
    switch (OOAddon::getProperty('be_search', 'searchmode', 'local')) {
        case 'local':
            // Suche auf aktuellen Kontext eingrenzen
            if ($category_id != 0) {
                $qry .= " AND (c.path LIKE '%|" . $params['category_id'] . "|%' OR c.id=" . $params['category_id'] . ") ";
            }
    }
    $qry .= 'ORDER BY f.updatedate desc';
    $qry = rex_register_extension_point('A256_MEDIENPOOL_QUERY', $qry);
    return $qry;
}
/**
 * Schreibt Addoneigenschaften in die Datei include/addons.inc.php
 *
 * @param array Array mit den Namen der Addons aus dem Verzeichnis addons/
 *
 * @return TRUE bei Erfolg, sonst FALSE
 */
function rex_generateAddons($ADDONS)
{
    global $REX;
    natsort($ADDONS);
    $content = '';
    foreach ($ADDONS as $addon) {
        if (!OOAddon::isInstalled($addon)) {
            OOAddon::setProperty($addon, 'install', 0);
        }
        if (!OOAddon::isActivated($addon)) {
            OOAddon::setProperty($addon, 'status', 0);
        }
        foreach (array('install', 'status') as $prop) {
            $content .= sprintf("\$REX['ADDON']['%s']['%s'] = '%d';\n", $prop, $addon, OOAddon::getProperty($addon, $prop));
        }
        $content .= "\n";
    }
    // Da dieser Funktion öfter pro request aufgerufen werden kann,
    // hier die caches löschen
    clearstatcache();
    $file = $REX['INCLUDE_PATH'] . '/addons.inc.php';
    if (rex_replace_dynamic_contents($file, $content) === false) {
        return 'Datei "' . $file . '" hat keine Schreibrechte';
    }
    return true;
}
Example #9
0
 private static function getPath($path)
 {
     global $REX;
     $path = strpos($path, '?') === false ? rtrim($path, '/') . '/?' : $path . '&';
     $path .= 'rex_version=' . $REX['VERSION'] . '.' . $REX['SUBVERSION'];
     if (OOAddon::getProperty('install', 'api_login')) {
         $path .= '&api_login='******'install', 'api_login')) . '&api_key=' . urlencode(OOAddon::getProperty('install', 'api_key'));
     }
     return $path;
 }
Example #10
0
                        foreach ($navProperties as $key => $value) {
                            $mainPluginPage->_set($key, $value);
                        }
                        $REX['PAGES'][$addonName . '_' . $pluginName] = $mainPluginPage;
                    } else {
                        if ($addonPage) {
                            $addonPage->addSubPage($pluginPage);
                        }
                    }
                }
            }
        }
        if ($addonPage) {
            $mainAddonPage = new rex_be_main_page('addons', $addonPage);
            // "navigation" adds attributes to the addon-root page
            foreach (OOAddon::getProperty($addonName, 'navigation', array()) as $key => $value) {
                $mainAddonPage->_set($key, $value);
            }
            $REX['PAGES'][$addonName] = $mainAddonPage;
        }
    }
}
// Set Startpage
if ($REX['USER']) {
    $REX['USER']->pages = $REX['PAGES'];
    // --- page herausfinden
    $REX['PAGE'] = trim(rex_request('page', 'string'));
    // --- page pruefen und benoetigte rechte checken
    if (!isset($REX['PAGES'][$REX['PAGE']]) || ($p = $REX['PAGES'][$REX['PAGE']]->getPage()) && !$p->checkPermission($REX['USER'])) {
        // --- neue page bestimmen und diese in neuem request dann verarbeiten
        $REX['PAGE'] = $REX['LOGIN']->getStartpage();
Example #11
0
                <fieldset>
                    <legend>' . $I18N->msg('install_settings_myredaxo_account') . '</legend>
                    <div class="rex-form-wrapper">';
$content .= '
                        <div class="rex-form-row">
                            <p class="rex-form-col-a rex-form-text">
                                <label for="install-settings-api-login">' . $I18N->msg('install_settings_api_login') . '</label>
                                <input id="install-settings-api-login" class="rex-form-text" type="text" name="settings[api_login]" value="' . OOAddon::getProperty('install', 'api_login') . '" />
                            </p>
                        </div>';
$content .= '
                        <div class="rex-form-row">
                            <p class="rex-form-col-a rex-form-text">
                                <label for="install-settings-api-key">' . $I18N->msg('install_settings_api_key') . '</label>
                                <input id="install-settings-api-key" class="rex-form-text" type="text" name="settings[api_key]" value="' . OOAddon::getProperty('install', 'api_key') . '" />
                            </p>
                        </div>';
$content .= '       </div>
                </fieldset>';
$content .= '
                <fieldset class="rex-form-col-1">
                  <div class="rex-form-wrapper">
                    <div class="rex-form-row">
                        <p class="rex-form-col-a rex-form-submit">
                            <input class="rex-form-submit" type="submit" name="settings[save]" value="' . $I18N->msg('form_save') . '"  />
                        </p>
                    </div>
                  </div>
                </fieldset>
 function getSupportPage($addon, $default = null)
 {
     return OOAddon::getProperty($addon, 'supportpage', $default);
 }
/**
 * Backend Search Addon
 *
 * @author markus[dot]staab[at]redaxo[dot]de Markus Staab
 *
 * @package redaxo4
 * @version $Id: extension_search_structure.inc.php,v 1.19 2008/04/12 09:28:04 kills Exp $
 */
function rex_a256_search_structure($params)
{
    global $REX, $REX_USER, $I18N_BE_SEARCH;
    if (!($REX_USER->isAdmin() || $REX_USER->hasPerm('be_search[structure]'))) {
        return $params['subject'];
    }
    $message = '';
    $search_result = '';
    $editUrl = 'index.php?page=content&article_id=%s&mode=edit&clang=%s&a256_article_name=%s';
    $structureUrl = 'index.php?page=structure&category_id=%s&clang=%s&a256_article_name=%s';
    // ------------ globale Parameter
    $page = rex_request('page', 'string');
    $mode = rex_request('mode', 'string');
    $category_id = rex_request('category_id', 'int');
    $article_id = rex_request('article_id', 'int');
    $clang = rex_request('clang', 'int');
    $ctype = rex_request('ctype', 'int');
    // ------------ Parameter
    $a256_article_id = rex_request('a256_article_id', 'int');
    $a256_clang = rex_request('a256_clang', 'int');
    $a256_article_name = rex_request('a256_article_name', 'string');
    $a256_article_name_post = rex_post('a256_article_name', 'string');
    $mode = rex_request('mode', 'string');
    // ------------ Suche via ArtikelId
    if ($a256_article_id != 0) {
        $OOArt = OOArticle::getArticleById($a256_article_id, $a256_clang);
        if (OOArticle::isValid($OOArt)) {
            header('Location:' . sprintf($editUrl, $a256_article_id, $a256_clang, urlencode($a256_article_name)));
            exit;
        }
    }
    // ------------ Suche via ArtikelName
    // hier nur dne post artikel namen abfragen,
    // da sonst bei vorherigen headerweiterleitungen
    // auch gesucht wuerde
    if ($a256_article_name_post != '') {
        $qry = '
    SELECT id
    FROM ' . $REX['TABLE_PREFIX'] . 'article
    WHERE
      clang = ' . $a256_clang . ' AND
      (
        name LIKE "%' . $a256_article_name . '%" OR
        catname LIKE "%' . $a256_article_name . '%"
      )';
        switch (OOAddon::getProperty('be_search', 'searchmode', 'local')) {
            case 'local':
                // Suche auf aktuellen Kontext eingrenzen
                if ($category_id != 0) {
                    $qry .= ' AND path LIKE "%|' . $category_id . '|%"';
                }
        }
        $qry = rex_register_extension_point('A256_STRUCTURE_QUERY', $qry);
        $search = new rex_sql();
        //    $search->debugsql = true;
        $search->setQuery($qry);
        $foundRows = $search->getRows();
        // Suche ergab nur einen Treffer => Direkt auf den Treffer weiterleiten
        if ($foundRows == 1) {
            $OOArt = OOArticle::getArticleById($search->getValue('id'), $a256_clang);
            if ($REX_USER->hasCategoryPerm($OOArt->getCategoryId())) {
                header('Location:' . sprintf($editUrl, $search->getValue('id'), $a256_clang, urlencode($a256_article_name)));
                exit;
            }
        } else {
            if ($foundRows > 0) {
                $search_result .= '<ul class="a256-search-result">';
                for ($i = 0; $i < $foundRows; $i++) {
                    $OOArt = OOArticle::getArticleById($search->getValue('id'), $a256_clang);
                    $label = $OOArt->getName();
                    if ($REX_USER->hasCategoryPerm($OOArt->getCategoryId())) {
                        if ($REX_USER->hasPerm('advancedMode[]')) {
                            $label .= ' [' . $search->getValue('id') . ']';
                        }
                        $s = '';
                        $first = true;
                        foreach ($OOArt->getParentTree() as $treeItem) {
                            $treeLabel = $treeItem->getName();
                            if ($REX_USER->hasPerm('advancedMode[]')) {
                                $treeLabel .= ' [' . $treeItem->getId() . ']';
                            }
                            $prefix = ': ';
                            if ($first) {
                                $prefix = '';
                                $first = false;
                            }
                            $s .= '<li>' . $prefix . '<a href="' . sprintf($structureUrl, $treeItem->getId(), $a256_clang, urlencode($a256_article_name)) . '">' . htmlspecialchars($treeLabel) . ' </a></li>';
                        }
                        $prefix = ': ';
                        if ($first) {
                            $prefix = '';
                            $first = false;
                        }
                        $s .= '<li>' . $prefix . '<a href="' . sprintf($editUrl, $search->getValue('id'), $a256_clang, urlencode($a256_article_name)) . '">' . htmlspecialchars($label) . ' </a></li>';
                        $search_result .= '<li><ul class="a256-search-hit">' . $s . '</ul></li>';
                    }
                    $search->next();
                }
                $search_result .= '</ul>';
            } else {
                $message = rex_warning($I18N_BE_SEARCH->msg('search_no_results'));
            }
        }
    }
    $select_name = 'category_id';
    $add_homepage = true;
    if ($mode == 'edit' || $mode == 'meta') {
        $select_name = 'article_id';
        $add_homepage = false;
    }
    $category_select = new rex_category_select(false, false, true, $add_homepage);
    $category_select->setName($select_name);
    $category_select->setId('rex-a256-category-id');
    $category_select->setSize('1');
    $category_select->setAttribute('onchange', 'this.form.submit();');
    $category_select->setSelected($category_id);
    $form = '  <form action="index.php" method="post">
        <input type="hidden" name="page" id="rex-a256-article-clang" value="' . $page . '" />
        <input type="hidden" name="mode" id="rex-a256-article-clang" value="' . $mode . '" />
        <input type="hidden" name="category_id" id="rex-a256-article-clang" value="' . $category_id . '" />
        <input type="hidden" name="article_id" id="rex-a256-article-clang" value="' . $article_id . '" />
        <input type="hidden" name="clang" id="rex-a256-article-clang" value="' . $clang . '" />
        <input type="hidden" name="ctype" id="rex-a256-article-clang" value="' . $ctype . '" />
        <input type="hidden" name="a256_clang" id="rex-a256-article-clang" value="' . $clang . '" />

		    <div class="rex-f-lft">
	        <label for="rex-a256-article-name">' . $I18N_BE_SEARCH->msg('search_article_name') . '</label>
    	    <input type="text" name="a256_article_name" id="rex-a256-article-name" value="' . htmlspecialchars(stripslashes($a256_article_name)) . '"' . rex_tabindex() . ' />

        	<label for="rex-a256-article-id">' . $I18N_BE_SEARCH->msg('search_article_id') . '</label>
	        <input type="text" name="a256_article_id" id="rex-a256-article-id"' . rex_tabindex() . ' />
    	    <input class="rex-sbmt" type="submit" name="a256_start_search" value="' . $I18N_BE_SEARCH->msg('search_start') . '"' . rex_tabindex() . ' />
		    </div>

    		<div class="rex-f-rght">
    			<label for="rex-a256-category-id">' . $I18N_BE_SEARCH->msg('search_quick_navi') . '</label>';
    $category_select->setAttribute('tabindex', rex_tabindex(false));
    $form .= $category_select->get() . '
    			<noscript>
    			  <input type="submit" name="a256_start_jump" value="' . $I18N_BE_SEARCH->msg('search_jump_to_category') . '" />
    			</noscript>
        </div>
      </form>';
    $search_bar = $message . '<div id="rex-a256-searchbar">
     ' . $form . '
     ' . $search_result . '
   </div>
   <div class="rex-clearer"></div>';
    return $search_bar . $params['subject'];
}
/**
 * Gibt die mit dem Prefix verbundenen Tabellennamen zurück
 */
function a62_meta_table($prefix)
{
    $metaTables = OOAddon::getProperty('metainfo', 'metaTables', array());
    if (isset($metaTables[$prefix])) {
        return $metaTables[$prefix];
    }
    return false;
}