Beispiel #1
0
 public function get($name = null, $args = null)
 {
     if ($name === null) {
         $name = '__default__';
     }
     if (isset($this->dispatcher[$name])) {
         $dispatcher_name = $name;
         $callback = $this->dispatcher[$dispatcher_name];
         $name = $args === null ? call_user_func($callback) : call_user_func_array($callback, is_array($args) ? $args : array_slice(func_get_args(), 1));
         if ($name === null) {
             throw new StorageError('Storage dispatcher [' . $dispatcher_name . '] not return a storage name');
         }
     }
     if (isset($this->storages[$name])) {
         return $this->storages[$name];
     }
     if (!($config = $this->getConfig($name))) {
         throw StorageError::undefined_storage($name);
     }
     fire_event($this, self::BEFORE_CREATE_INSTANCE_EVENT, array($name, $config));
     $class = $config['class'];
     unset($config['class']);
     $storage = new $class($config);
     fire_event($this, self::AFTER_CREATE_INSTANCE_EVENT, array($storage, $name, $config));
     return $this->storages[$name] = $storage;
 }
Beispiel #2
0
function user_set_active($iduser, $is_active)
{
    global $cms_log;
    $sf_user = sf_factoryGetObject('ADMINISTRATION', 'User');
    $sf_user->loadByIduser($iduser);
    $sf_user->setIsOnline($is_active);
    $sf_user->save();
    //Fire events
    if ($is_active == '0') {
        //Log
        $cms_log->info('user', 'user_deactivate', array('iduser' => $sf_user->getIduser(), 'username' => $sf_user->getUsername()));
        //Event
        fire_event('user_deactivate', $sf_user);
    } else {
        //Log
        $cms_log->info('user', 'user_activate', array('iduser' => $sf_user->getIduser(), 'username' => $sf_user->getUsername()));
        //Event
        fire_event('user_activate', $sf_user);
    }
}
Beispiel #3
0
 /**
  * 触发事件
  *
  * @param string $event 事件名
  * @param array  $args  事件参数
  * @see Lysine\Utils\Event
  * @access public
  * @return integer
  */
 public function fireEvent($event, array $args = null)
 {
     if (isset(self::$event_methods[$event])) {
         $method = self::$event_methods[$event];
         $this->{$method}();
     }
     return fire_event($this, $event, $args);
 }
Beispiel #4
0
unset($valcol);
/******************************************************************************
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
switch ($action) {
    case 'save':
        $errno = group_save_perms();
        $errlog = $errno ? $errno : 0;
        $groupname = getTitleByIdgroup($idgroup);
        $langname = getLangByIdlang($idlang);
        //Log
        if ($errlog == 0) {
            $cms_log->info('user', 'group_save_perms', array('idgroup' => $idgroup, 'idlang' => $idlang, 'groupname' => $groupname, 'langname' => $langname));
        }
        // Event
        fire_event('group_save_perms', array('idgroup' => $idgroup, 'groupname' => $groupname, 'idlang' => $idlang, 'langname' => langname, 'author' => $auth->auth['uid'], 'errno' => $errlog));
        if (!$errno && !isset($_REQUEST['sf_apply'])) {
            header('HTTP/1.1 302 Moved Temporarily');
            header('Location:' . $sess->urlRaw("main.php?area=group&order={$order}&ascdesc={$ascdesc}&idgroup={$idgroup}"));
            exit;
        }
        break;
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
include 'inc/inc.header.php';
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Templatedatei laden und �berschrift setzen
Beispiel #5
0
function lay_delete_layout($idlay)
{
    global $db, $client, $cms_db, $perm;
    // Wird Layout noch verwendet?
    $sql = "SELECT * FROM " . $cms_db['tpl'] . " WHERE idlay='{$idlay}'";
    $db->query($sql);
    if ($db->affected_rows()) {
        return '0301';
    } else {
        // Layout löschen
        $sql = "DELETE FROM " . $cms_db['lay'] . " WHERE idlay='{$idlay}'";
        $db->query($sql);
        // Einträge aus lay_upl löschen
        $sql = "DELETE FROM " . $cms_db['lay_upl'] . " WHERE idlay='{$idlay}'";
        $db->query($sql);
        //delete perm
        $perm->delete_perms($idlay, 'lay');
        // Event
        fire_event('lay_delete', array('idlay' => $idlay));
    }
}
Beispiel #6
0
 function auth_validatelogin()
 {
     global $challengefail, $challenge, $doublelogin, $username, $password, $cms_db, $sess;
     $sf_user =& sf_factoryGetObject('ADMINISTRATION', 'User');
     $sf_user->setUpdateLastmodifiedMeta(false);
     $sf_user->loadByUsernamePassword($username, $password, true);
     unset($sf_user);
     if (isset($username)) {
         $this->auth['uname'] = trim($username);
     } elseif ($this->nobody) {
         $uid = $this->auth['uname'] = $this->auth['uid'] = 'nobody';
         return $uid;
     }
     if (isset($challenge)) {
         if (!$sess->challenge_me($challenge)) {
             $challengefail = true;
             // Event
             fire_event('login_challenge_fail', array('username' => $username, 'password' => $password, 'challenge' => $challenge));
             return false;
         }
     }
     // User aus der Datenbank suchen
     set_magic_quotes_gpc($username);
     $this->db->query("\n                    SELECT DISTINCT salutation,\n\t\t\t\t\tstreet,\n\t\t\t\t\tstreet_alt,\n\t\t\t\t\tzip,\n\t\t\t\t\tlocation,\n\t\t\t\t\tstate,\n\t\t\t\t\tcountry,\n\t\t\t\t\tphone,\n\t\t\t\t\tfax,\n\t\t\t\t\tmobile,\n\t\t\t\t\tpager,\n\t\t\t\t\thomepage,\n\t\t\t\t\tbirthday,\n\t\t\t\t\tfirm,\n\t\t\t\t\tposition,\n\t\t\t\t\tfirm_street,\n\t\t\t\t\tfirm_street_alt,\n\t\t\t\t\tfirm_zip,\n\t\t\t\t\tfirm_location,\n\t\t\t\t\tfirm_state,\n\t\t\t\t\tfirm_country,\n\t\t\t\t\tfirm_email,\n\t\t\t\t\tfirm_phone,\n\t\t\t\t\tfirm_fax,\n\t\t\t\t\tfirm_mobile,\n\t\t\t\t\tfirm_pager,\n\t\t\t\t\tfirm_homepage,\n\t\t\t\t\tcomment, A.user_id, password, A.name, surname, email, C.name AS groupname, C.description \n\t\t\t\t\tFROM \n\t\t\t\t\t\t" . $cms_db['users'] . " A \n\t\t\t\t\t\tLEFT JOIN " . $cms_db['users_groups'] . " B USING(user_id) \n\t\t\t\t\t\tLEFT JOIN " . $cms_db['groups'] . " C USING(idgroup) \n\t\t\t\t\t\tLEFT JOIN " . $cms_db['perms'] . " D USING(idgroup) \n\t\t\t\t\tWHERE \n\t\t\t\t\t\tA.username='******' \n\t\t\t\t\t\tAND A.password='******' \n\t\t\t\t\t\tAND A.is_active='1' \n\t\t\t\t\t\tAND C.is_active='1' \n\t\t\t\t\t\tAND ((D.type='cms_access' AND D.id = 'area_backend' AND D.perm = 1) OR C.is_sys_admin='1') LIMIT 0, 1\n\t\t\t\t");
     if ($this->db->next_record()) {
         // Use Single Login
         if ($this->force_single_login) {
             if (!$sess->single_id($this->db->f('user_id'))) {
                 $doublelogin = true;
                 // Event
                 fire_event('login_single_fail', array('username' => $username, 'password' => $password));
                 return false;
             }
         }
         // Event
         fire_event('login_success', array('uid' => $this->db->f('user_id')));
         $this->auth['name'] = $this->db->f('name');
         $this->auth['surname'] = $this->db->f('surname');
         $this->auth['group_name'] = $this->db->f('groupname');
         $this->auth['group_desc'] = $this->db->f('description');
         $this->auth['email'] = $this->db->f('email');
         $this->auth['salutation'] = $this->db->f('salutation');
         $this->auth['street'] = $this->db->f('street');
         $this->auth['street_alt'] = $this->db->f('street_alt');
         $this->auth['zip'] = $this->db->f('zip');
         $this->auth['location'] = $this->db->f('location');
         $this->auth['state'] = $this->db->f('state');
         $this->auth['country'] = $this->db->f('country');
         $this->auth['phone'] = $this->db->f('phone');
         $this->auth['fax'] = $this->db->f('fax');
         $this->auth['mobile'] = $this->db->f('mobile');
         $this->auth['pager'] = $this->db->f('pager');
         $this->auth['homepage'] = $this->db->f('homepage');
         $this->auth['birthday'] = $this->db->f('birthday');
         $this->auth['firm'] = $this->db->f('firm');
         $this->auth['position'] = $this->db->f('position');
         $this->auth['firm_street'] = $this->db->f('firm_street');
         $this->auth['firm_street_alt'] = $this->db->f('firm_street_alt');
         $this->auth['firm_zip'] = $this->db->f('firm_zip');
         $this->auth['firm_location'] = $this->db->f('firm_location');
         $this->auth['firm_state'] = $this->db->f('firm_state');
         $this->auth['firm_country'] = $this->db->f('firm_country');
         $this->auth['firm_email'] = $this->db->f('firm_email');
         $this->auth['firm_phone'] = $this->db->f('firm_phone');
         $this->auth['firm_fax'] = $this->db->f('firm_fax');
         $this->auth['firm_mobile'] = $this->db->f('firm_mobile');
         $this->auth['firm_pager'] = $this->db->f('firm_pager');
         $this->auth['firm_homepage'] = $this->db->f('firm_homepage');
         $this->auth['comment'] = $this->db->f('comment');
         // Use Single Login
         if ($this->force_single_login) {
             $sess->single_me($this->db->f('user_id'));
         }
         return $this->db->f('user_id');
     }
     // Event
     fire_event('login_fail', array('username' => $username, 'password' => $password));
     return false;
 }
Beispiel #7
0
$max_files = $cfg_client['max_count_scanfile'];
$max_thumbs = $cfg_client['max_count_scanthumb'];
$extend_time = $cfg_client['extend_time_scandir'];
/******************************************************************************
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
$perm->check('area_upl');
if ($idclient != 0 && $idclient != (int) $client || !isset($idclient)) {
    $idclient = (int) $client;
}
// if $action is named prepare a function call
if (!empty($action) && preg_match('/^\\d/', $action) == 0) {
    eval('$errno = upl_' . $action . '();');
    // Event
    $errlog = $errno ? 'Fehler:' . $errno : '';
    fire_event('upl' . $action, array('idupl' => $idupl, 'errlog' => $errlog));
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Kopfbereich
$title = $cms_lang['area_upl'];
$fehler = $fm->errno ? $cms_lang["err_{$fm->errno}"] : '';
if ($action == "10") {
    // check if directory exists ... avoid config errors in cms_values
    $fehler = '';
    if ($iddirectory > 0) {
        $dir_data = $fm->get_directory((int) $iddirectory, $client);
Beispiel #8
0
function mod_install($repid, $modname, $description, $modversion, $modcat, $input, $output, $sql_install, $sql_uninstall, $sql_update, $idclient, $force = false)
{
    $stripe = !$force ? true : 2;
    mod_save('', $modname, '', $description, $modversion, $modcat, $input, $output, $idclient, $repid, $sql_install, $sql_uninstall, $sql_update, false, '', false, $stripe);
    if ($idclient > 0 && $sql_install != '') {
        $error = $rep->bulk_sql($sql_install);
        // Event
        fire_event('mod_repository_install_sql', array('repid' => $repid, 'name' => $modname));
    }
    // Event
    fire_event('mod_repository_import', array('repid' => $repid, 'name' => $modname));
    return '0406';
}
Beispiel #9
0
         fire_event('con_cat_lock', array('idcat' => $idcat));
     } else {
         $cms_log->info('user', 'con_cat_unlock', array('idcat' => $idcat, 'catname' => $SF_catinfos->getTitle($idcat)));
         fire_event('con_cat_unlock', array('idcat' => $idcat));
     }
     break;
 case 'side_lock':
     // Seite sperren
     //		con_lock ('side', $idcatside, $lock);
     con_lock('side', $idside, $lock);
     if ($lock == '1') {
         $cms_log->info('user', 'con_side_lock', array('idside' => $idside, 'pagename' => $SF_pageinfos->getTitleByIdside($idside)));
         fire_event('con_side_lock', array('idside' => $idside));
     } else {
         $cms_log->info('user', 'con_side_unlock', array('idside' => $idside, 'pagename' => $SF_pageinfos->getTitleByIdside($idside)));
         fire_event('con_side_unlock', array('idside' => $idside));
     }
     break;
 case 'expand':
     // Ordner aufklappen
     con_expand($idcat, $expanded);
     break;
 case 'sideup':
     // Seite eins nach oben schieben
     con_move_side('up', $idcat, $idside, $sortindex);
     break;
 case 'sidedown':
     // Seite eins nach unten schieben
     con_move_side('down', $idcat, $idside, $sortindex);
     break;
 case 'sidetop':
/******************************************************************************
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
if (empty($idcssfile)) {
    $perm->check(2, 'area_css', '0');
} else {
    $perm->check(3, 'css_file', $idcssfile);
}
if ($idclient != 0 && $idclient != (int) $client || !isset($idclient)) {
    $idclient = (int) $client;
}
if ($action && preg_match("/^\\d/", $action) == 0) {
    eval('$errno = css_' . $action . '();');
    // Event
    $errlog = $errno ? ', Fehler:' . $errno : '';
    fire_event('css_' . $action, array('idcss' => $idcssfile, 'errlog' => $errlog));
    if (empty($errno) && !isset($_REQUEST['sf_apply'])) {
        header('HTTP/1.1 302 Moved Temporarily');
        header('Location: ' . $sess->urlRaw("main.php?area=css&idexpand={$idexpand}&idclient={$client}&errno={$errno}"));
        exit;
    }
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
include 'inc/inc.header.php';
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Kopfbereich
$tmp['AREA_TITLE'] = empty($idcssfile) ? $cms_lang['area_css_new_file'] : $cms_lang['area_css_edit_file'];
Beispiel #11
0
function plug_install($repid, $plugname, $description, $plugversion, $plugcat, $sql_install, $sql_uninstall, $sql_update, $idclient, $root_name, $index_file)
{
    plug_save('', $plugname, $description, $plugversion, $plugcat, $idclient, $repid, $sql_install, $sql_uninstall, $sql_update, $root_name, $index_file);
    // Event
    fire_event('plug_repository_install', array('repid' => $repid, 'name' => $plugname));
    return '0406';
}
Beispiel #12
0
            $cms_log->info('user', 'clients_delete_lang', array('idclient' => $collapse, 'clientname' => $clientname, 'idlang' => $lid, 'name' => $langname));
        }
        // Event
        fire_event('clients_delete_lang', array('idclient' => $collapse, 'clientname' => $clientname, 'idlang' => $lid, 'name' => $langname, 'author' => $auth->auth['uid'], 'errno' => $errlog));
        break;
    case 'makestartlang':
        $clientname = getClientNameByIdclient((int) $_REQUEST['cid']);
        $langname = getLangByIdlang((int) $_REQUEST['lid']);
        $errno = lang_make_start_lang((int) $_REQUEST['cid'], (int) $_REQUEST['lid']);
        $errlog = $errno ? $errno : 0;
        //Log
        if ($errlog == 0) {
            $cms_log->info('user', 'clients_make_start_lang', array('idclient' => (int) $_REQUEST['cid'], 'clientname' => $clientname, 'idlang' => (int) $_REQUEST['lid'], 'name' => $langname));
        }
        // Event
        fire_event('clients_make_start_lang', array('idclient' => (int) $_REQUEST['cid'], 'clientname' => $clientname, 'idlang' => (int) $_REQUEST['lid'], 'name' => $langname, 'author' => $auth->auth['uid'], 'errno' => $errlog));
        break;
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
//
// GENERAL VALUES
//
$c_conf['url'] = $sess->url('main.php?area=' . $area);
$c_conf['url_extern'] = $sess->url('main.php?collapse=' . $collapse);
$c_conf['image_path'] = 'tpl/' . $cfg_cms['skin'] . '/img/';
$c_conf['style_project'] = '#f7fbff';
Beispiel #13
0
// | along with this program write to the Free Software Foundation, Inc., |
// | 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA               |
// |                                                                      |
// | This program is distributed in the hope that it will be useful,      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        |
// | GNU General Public License for more details.                         |
// |                                                                      |
// +----------------------------------------------------------------------+
// + Autor: $Author: holger $
// +----------------------------------------------------------------------+
// + Revision: $Revision: 375 $
// +----------------------------------------------------------------------+
// + Description:
// +----------------------------------------------------------------------+
// + Changes:
// +----------------------------------------------------------------------+
// + ToDo:
// +----------------------------------------------------------------------+
// Event
$_sf_userobj = sf_factoryGetObject('ADMINISTRATION', 'User');
$_sf_userobj->loadByIduser($auth->auth['uid']);
$cms_log->info('user', 'logout_success');
fire_event('logout_success', $_sf_userobj);
$auth->logout();
$tpl->loadTemplatefile('logout.tpl');
$tpl_vals['MESSAGE_THANKS'] = $cms_lang['logout_thanksforusingcms'];
$tpl_vals['MESSAGE_LOGGED_OUT'] = $cms_lang['logout_youareloggedout'];
$tpl_vals['MESSAGE_LOGIN_AGAIN'] = $cms_lang['logout_backtologin1'] . ' ' . $cms_lang['logout_backtologin2'];
$tpl_vals['MESSAGE_LOGIN_LICENCE'] = $cms_lang['login_licence'];
$tpl->setVariable($tpl_vals);
Beispiel #14
0
function con_delete_side($idcat, $idside)
{
    global $db, $cms_db, $perm;
    $sql = "SELECT idcatside FROM {$cms_db['cat_side']} WHERE idside='{$idside}'";
    $db->query($sql);
    while ($db->next_record()) {
        $temp_idcatsides = $db->f('idcatside');
        $idcatsides[] = $temp_idcatsides;
        $perm->check(21, 'side', $temp_idcatsides, $idcat);
    }
    // Event
    fire_event('delete_side', array('idside' => $idside, 'idcat' => $idcat, 'idcatside' => $idcatsides));
    // aus 'code'-Tabelle löschen
    if (is_array($idcatsides)) {
        $sql = "DELETE FROM " . $cms_db['code'] . " WHERE idcatside IN (" . implode(',', $idcatsides) . ")";
        $db->query($sql);
        // Rechte löschen
        $perm->delete_perms($idcatsides, 'side', 0, 0, 0, true);
    }
    $sql = "SELECT idsidelang, idtplconf FROM {$cms_db['side_lang']} WHERE idside='{$idside}'";
    $db->query($sql);
    while ($db->next_record()) {
        $idsidelang[$db->f('idsidelang')] = $db->f('idtplconf');
    }
    if (is_array($idsidelang)) {
        foreach ($idsidelang as $key => $value) {
            // Inhalt aus 'content'-Tabelle löschen
            $sql = "DELETE FROM {$cms_db['content']} WHERE idsidelang='{$key}'";
            $db->query($sql);
            // besitzt die Seite ein eigenes Template?
            if ($value != '0') {
                // Templatekonfiguation löschen
                $sql = "DELETE FROM {$cms_db['container_conf']} WHERE idtplconf='{$value}'";
                $db->query($sql);
                // Templatekopie löschen
                $sql = "DELETE FROM {$cms_db['tpl_conf']} WHERE idtplconf='{$value}'";
                $db->query($sql);
            }
            // Links, die auf diese Seite zeigen löschen
            // Seitenstatus dieser Seiten auf geändert stellen
            // muß noch gemacht werden
        }
    }
    // Seite aus den Ordnern löschen
    $sql = "DELETE FROM {$cms_db['cat_side']} WHERE idside='{$idside}'";
    $db->query($sql);
    // Seite löschen
    $sql = "DELETE FROM {$cms_db['side']} WHERE idside='{$idside}'";
    $db->query($sql);
    // Seite aus den verschiedenen Sprachen löschen
    $sql = "DELETE FROM {$cms_db['side_lang']} WHERE idside='{$idside}'";
    $db->query($sql);
    // restliche Seiten neu sortieren
    con_reindex_page_sort($idcat);
    // neue Startseite festlegen
    $sql = "SELECT * FROM {$cms_db['cat_side']} WHERE idcat='{$idcat}' AND is_start='1'";
    $db->query($sql);
    if (!$db->affected_rows()) {
        $sql = "UPDATE {$cms_db['cat_side']} SET is_start='1' WHERE idcat='{$idcat}' AND sortindex='1'";
        $db->query($sql);
    }
    // Cache-Group Frontend löschen
    sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend'));
}
Beispiel #15
0
function plug_install($repid, $plugname, $description, $plugversion, $plugcat, $sql_install, $sql_uninstall, $sql_update, $idclient, $root_name, $index_file)
{
    global $cms_log;
    plug_save('', $plugname, $description, $plugversion, $plugcat, $idclient, $repid, $sql_install, $sql_uninstall, $sql_update, $root_name, $index_file);
    //Log
    $cms_log->info('user', 'plug_repository_install', array('name' => $plugname, 'version' => $plugversion));
    // Event
    fire_event('plug_repository_install', array('name' => $plugname, 'description' => $description, 'version' => $plugversion, 'cat' => $plugcat, 'idclient' => $idclient, 'repository_id' => $repid, 'install_sql' => $sql_install, 'uninstall_sql' => $sql_uninstall, 'update_sql' => $sql_update, 'root_name' => $root_name, 'index_file' => $index_file));
    return '0406';
}
Beispiel #16
0
 /**
  * 分发请求到对应的controller
  * 执行并返回结果
  *
  * @param string $url
  * @param array $params
  * @access public
  * @return mixed
  */
 public function dispatch($url, array $params = array())
 {
     if (DEBUG) {
         $logger = \Onion\logger('mvc');
     }
     $url = strtolower(rtrim($url, '/'));
     if (DEBUG) {
         $logger->info('Request url:' . req()->requestUri());
     }
     list($class, $args) = $this->match($url);
     if (DEBUG) {
         $logger->debug('Dispatch url to controller: ' . $class);
     }
     if (!$class || !class_exists($class)) {
         throw HttpError::page_not_found(array('controller' => $class));
     }
     if ($params) {
         $args = array_merge($args, $params);
     }
     fire_event($this, BEFORE_DISPATCH_EVENT, array($url, $class, $args));
     $controller = new $class();
     if (method_exists($controller, '__before_run')) {
         // 如果__before_run返回了内容,就直接完成动作
         // 可以在这里进行某些阻断操作
         // 正常的内容不应该通过这里输出
         if ($resp = call_user_func_array(array($controller, '__before_run'), $args)) {
             return $resp instanceof Response ? $resp : resp()->setBody($resp);
         }
     }
     $request = req();
     $method = $request->method();
     // head方法除了不输出数据之外,和get方法没有区别
     if ($method == 'HEAD') {
         $method = 'GET';
     }
     if (DEBUG) {
         $log = 'Call controller [' . $class . '] method [' . $method . ']';
         if ($args) {
             $log .= ' with ' . json_encode($args);
         }
         $logger->info($log);
     }
     // 执行controller动作并返回结果
     // 不检查method是否存在,用is_callable()
     // 保留__call()重载方法的方式
     if (!is_callable(array($controller, $method))) {
         throw HttpError::method_not_allowed(array('url' => $url, 'class' => $class));
     }
     $resp = call_user_func_array(array($controller, $method), $args);
     // 这里有机会对输出结果进行进一步处理
     if (method_exists($controller, '__after_run')) {
         $controller->__after_run($resp);
     }
     fire_event($this, AFTER_DISPATCH_EVENT, array($url, $class, $args, $resp));
     return $resp instanceof Response ? $resp : resp()->setBody($resp);
 }
Beispiel #17
0
function lay_delete_layout($idlay)
{
    global $db, $client, $cms_db, $perm, $cms_log;
    // Wird Layout noch verwendet?
    $sql = "SELECT * FROM " . $cms_db['tpl'] . " WHERE idlay='{$idlay}'";
    $db->query($sql);
    if ($db->affected_rows()) {
        return '0301';
    } else {
        //Daten vor dem L�schen f�r das Event laden
        $sql = "SELECT * FROM {$cms_db['lay']} WHERE idlay='{$idlay}'";
        $db->query($sql);
        if ($db->next_record()) {
            $name = make_string_dump($db->f('name'));
            $description = make_string_dump($db->f('description'));
            $code = make_string_dump($db->f('code'));
            $doctype = make_string_dump($db->f('doctype'));
            $doctype_autoinsert = make_string_dump($db->f('doctype_autoinsert'));
            $author = make_string_dump($db->f('author'));
        } else {
            $name = "";
            $description = "";
            $code = "";
            $doctype = "";
            $doctype_autoinsert = "";
            $author = "";
        }
        // Layout l�schen
        $sql = "DELETE FROM " . $cms_db['lay'] . " WHERE idlay='{$idlay}'";
        $db->query($sql);
        // Eintr�ge aus lay_upl l�schen
        $sql = "DELETE FROM " . $cms_db['lay_upl'] . " WHERE idlay='{$idlay}'";
        $db->query($sql);
        //delete perm
        $perm->delete_perms($idlay, 'lay');
        //Log
        $cms_log->info('user', 'lay_delete', array('idlay' => $idlay, 'name' => $name));
        // Event
        fire_event('lay_delete', array('idlay' => $idlay, 'name' => $name, 'description' => $description, 'code' => $code, 'doctype' => $doctype, 'doctype_autoinsert' => $doctype_autoinsert, 'author' => $author));
    }
}
Beispiel #18
0
     }
     // unkonfiguriert
 } else {
     $con_catinfo = "<b>" . $cms_lang['con_template'] . ":</b><font color=#AF0F0F> " . $cms_lang['con_unconfigured'] . "</font>";
     $folder_popup = "'{$con_catinfo}','" . $cms_lang['con_category_information'] . "', 'Id: {$a}', 'folderinfo'";
     // Konfigurationslink
     if ($perm->have_perm(3, 'cat', $con_tree[$a]['idcat'])) {
         $tpl_cat_values['BUTTON_CAT_CONFIG'] = make_image_link('main.php?area=con_configcat&idcat=' . $con_tree[$a]['idcat'] . '&idtplconf=' . $con_tree[$a]['idtplconf'], 'but_folder_off.gif', $cms_lang['con_cat_config'], '16', '16', '', $folder_popup);
     } else {
         $tpl_cat_values['BUTTON_CAT_CONFIG'] = make_image('but_folder_off.gif', $cms_lang['con_cat_config'], '16', '16', $folder_popup);
     }
 }
 // Ordnername
 $tpl_cat_values['CAT_NAME'] = $con_tree[$a]['name'];
 //event folder
 $args = fire_event('con_manipulate_foldername', $con_tree[$a]);
 if (count($args) > 0) {
     $tpl_cat_values['CAT_NAME'] = $args['0']['catname'];
 }
 // Ordner: Seiten ordnen
 if ($sort) {
     if ($perm->have_perm(9, 'cat', $con_tree[$a]['idcat'])) {
         $qs_url = "main.php?area=con&amp;sort=true&amp;action=quicksort&amp;idcat={$a}";
         $mv_url = "main.php?area=con&amp;action=movecat&amp;idcat={$a}";
         $cat_actions = '<select onchange="if(this.options[this.selectedIndex].value != \'\'){window.location.href = this.options[this.selectedIndex].value}" size="1">' . "\n";
         if (count($con_side[$a]) > 1) {
             $cat_actions .= '          <option value="">Quicksort...</option>' . "\n";
             $cat_actions .= '          <option value="">---------------</option>' . "\n";
             $cat_actions .= '          <option value="' . $sess->urlRaw($qs_url . "&amp;quicksort=title:ASC") . '#catanchor">' . $cms_lang['con_sidename_up'] . '</option>' . "\n";
             $cat_actions .= '          <option value="' . $sess->urlRaw($qs_url . "&amp;quicksort=title:DESC") . '#catanchor">' . $cms_lang['con_sidename_down'] . '</option>' . "\n";
             $cat_actions .= '          <option value="' . $sess->urlRaw($qs_url . "&amp;quicksort=created:ASC") . '#catanchor">' . $cms_lang['con_created_up'] . '</option>' . "\n";
Beispiel #19
0
 function _handleEvent($event)
 {
     fire_event($event, $this);
 }
Beispiel #20
0
include 'inc/fnc.css.php';
include 'inc/class.fileaccess.php';
$fm =& new fileaccess();
/******************************************************************************
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
$perm->check(19, 'css_file', $idcssfile);
if ($idclient != 0 && $idclient != (int) $client || !isset($idclient)) {
    $idclient = (int) $client;
}
if ($action && preg_match("/^\\d/", $action) == 0) {
    eval('$errno = css_' . $action . "();");
    // Event
    $errlog = $errno ? ', Fehler:' . $errno : '';
    $errrule = preg_match("/(file)/i", $action) > 0 ? '' : 'Rule: ' . $idcss;
    fire_event('css_' . $action, array('errrule' => $errrule, 'errlog' => $errlog));
    if (empty($errno) && !isset($_REQUEST['sf_apply'])) {
        header('HTTP/1.1 302 Moved Temporarily');
        header('Location: ' . $sess->urlRaw("main.php?area=css&idcssfile={$idcssfile}&idexpand={$idcssfile}&idclient={$idclient}&errno={$errno}"));
        exit;
    }
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
include 'inc/inc.header.php';
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Kopfbereich
$tmp['AREA_TITLE'] = $cms_lang['area_css_edit'];
Beispiel #21
0
        group_delete();
        $groupname = getTitleByIdgroup($idgroup);
        $cms_log->info('user', 'group_delete', array('idgroup' => $idgroup, 'name' => $groupname));
        fire_event('group_delete', array('idgroup' => $idgroup, 'name' => $groupname, 'author' => $auth->auth['uid']));
        //Wird eine gruppe gel�scht, wird eventuell noch eine aufgeklappte Spracheinstellung angezeigt - redirect um das zu verhindern
        header('HTTP/1.1 302 Moved Temporarily');
        header('Location:' . $sess->urlRaw("main.php?area=group&order={$order}&ascdesc={$ascdesc}"));
        exit;
        break;
    case 'activate_lang':
        $return = group_visible_lang();
        $eventname = $return == true ? 'group_activate_lang' : 'group_deactivate_lang';
        $groupname = getTitleByIdgroup($idgroup);
        $langname = getLangByIdlang($idlang);
        $cms_log->info('group', $eventname, array('idgroup' => $idgroup, 'idlang' => $idlang, 'groupname' => $groupname, 'langname' => $langname));
        fire_event($eventname, array('idgroup' => $idgroup, 'groupname' => $groupname, 'idlang' => $idlang, 'langname' => langname, 'author' => $auth->auth['uid']));
        break;
}
include 'inc/inc.header.php';
$row_bgcolor['project'] = '#f7fbff';
$row_bgcolor['project_active'] = '#dfeeff';
$row_bgcolor['project_lang'] = '#ffffff';
// Allgemeine Einstellungen initialisieren
if (empty($ascdesc)) {
    $order = 'name';
    $ascdesc = 'ASC';
}
$base_url = $sess->url('main.php?area=%s&order=%s&ascdesc=%s');
// Templatedatei laden
$tpl->loadTemplatefile('group.tpl');
$tmp['AREA'] = $cms_lang['area_group'];
Beispiel #22
0
 public function fireEvent($event, $args = null)
 {
     if (isset(self::$event_methods[$event])) {
         $method = self::$event_methods[$event];
         $this->{$method}();
     }
     $args = is_array($args) ? $args : array_slice(func_get_args(), 1);
     array_unshift($args, $this);
     return fire_event($this, $event, $args);
 }
Beispiel #23
0
 /**
  * Frontend Controller Class
  * @return void
  */
 public function index()
 {
     $cms_path = $this->controller_cfg['cms_path'];
     $cms_db = $GLOBALS['cms_db'];
     $cfg_cms = $GLOBALS['cfg_cms'];
     $cfg_client = $GLOBALS['cfg_client'];
     //vars from project config
     $idcatside = FALSE;
     $idcat = FALSE;
     $lang = FALSE;
     $client = FALSE;
     $sf_frontend_output = sf_api('LIB', 'FrontendOutput');
     //set cfg db names
     $this->cfg->set('db', $cms_db);
     //lookup for backend view
     $view = $this->req->req('view');
     //get backend or frontend session
     $sid = FALSE;
     $sefrengo = FALSE;
     list($sid, $sefrengo) = $this->ft->getSessionIdsFromRequest($view);
     //generate frontend/ backend boolean vars
     $is_onpage = TRUE;
     $is_frontend = $is_backend = $is_backend_preview = $is_backend_edit = FALSE;
     list($is_frontend, $is_backend, $is_backend_preview, $is_backend_edit) = $this->ft->getViewModes($view, $sefrengo);
     $this->_assignGlobals('is_frontend', $is_frontend);
     $this->_assignGlobals('is_backend', $is_backend);
     $this->cfg->setVal('env', 'sid', $sid);
     $this->cfg->setVal('env', 'sefrengo', $sefrengo);
     $this->cfg->setVal('env', 'is_onpage', $is_onpage);
     $this->cfg->setVal('env', 'is_frontend', $is_frontend);
     $this->cfg->setVal('env', 'is_backend', $is_backend);
     $this->cfg->setVal('env', 'is_backend_preview', $is_backend_preview);
     $this->cfg->setVal('env', 'is_backend_edit', $is_backend_edit);
     //init log
     $cms_log = $this->_initAndGetLog();
     //init db
     $db = new DB_cms();
     $this->_assignGlobals('db', $db);
     $this->ft->setDb($db);
     $this->ft->setDbNames($cms_db);
     //$val_ct = new values_ct();
     //$this->_assignGlobals('val_ct', $val_ct);
     //$cfg_cms = array_merge($cfg_cms, $val_ct->get_cfg() );
     $valcol = sf_api('MODEL', 'ValueSqlCollection');
     $valcol->getByGroup('cfg');
     $cfg_cms = array_merge($cfg_cms, $valcol->getAssocKeyArray());
     $valcol->getByGroup('lang');
     $cms_lang = $valcol->getAssocKeyArray();
     $this->_assignGlobals('cfg_cms', $cfg_cms);
     $this->cfg->set('cms', $cfg_cms);
     $this->cfg->setVal('env', 'path_backend_http', $this->cfg->cms('path_base_http') . $this->cfg->cms('path_backend_rel'));
     $this->cfg->setVal('env', 'path_backend', $this->cfg->cms('path_base') . $this->cfg->cms('path_backend_rel'));
     $client = (int) $GLOBALS['client'];
     //idclient from projectconfig
     //$cfg_client = $val_ct->get_by_group('cfg_client', $client);
     $valcol->setIdclient($client);
     $valcol->getByGroup('cfg_client');
     $cfg_client = $valcol->getAssocKeyArray();
     $cfg_client['path_http'] = str_replace(array('{%http_host}', '{%request_uri}'), array($_SERVER['HTTP_HOST'], $_SERVER['QUERY_STRING']), $cfg_client['path_http']);
     $cfg_client['path_http_edit'] = str_replace(array('{%http_host}', '{%request_uri}'), array($_SERVER['HTTP_HOST'], $_SERVER['QUERY_STRING']), $cfg_client['path_http_edit']);
     unset($valcol);
     $this->_assignGlobals('cfg_client', $cfg_client);
     $this->cfg->set('client', $cfg_client);
     $sf_path_base = $this->cfg->cms('path_base');
     $sf_path_http_frontend = $is_frontend ? $this->cfg->client('path_http') : $this->cfg->client('path_http_edit');
     $this->cfg->setVal('env', 'path_frontend_http', $sf_path_http_frontend . $this->cfg->client('path_rel'));
     $this->cfg->setVal('env', 'path_frontend', $sf_path_base . $this->cfg->client('path_rel'));
     $this->cfg->setVal('env', 'path_frontend_fm_http', $sf_path_http_frontend . $this->cfg->client('path_rel') . $this->cfg->client('path_fm_rel'));
     $this->cfg->setVal('env', 'path_frontend_fm', $sf_path_base . $this->cfg->client('path_rel') . $this->cfg->client('path_fm_rel'));
     $this->cfg->setVal('env', 'path_frontend_css_http', $sf_path_http_frontend . $this->cfg->client('path_rel') . $this->cfg->client('path_css_rel'));
     $this->cfg->setVal('env', 'path_frontend_css', $sf_path_base . $this->cfg->client('path_rel') . $this->cfg->client('path_css_rel'));
     $this->cfg->setVal('env', 'path_frontend_js_http', $sf_path_http_frontend . $this->cfg->client('path_rel') . $this->cfg->client('path_js_rel'));
     $this->cfg->setVal('env', 'path_frontend_js', $sf_path_base . $this->cfg->client('path_rel') . $this->cfg->client('path_js_rel'));
     //init db cache
     $db->init_cache();
     //init / found idlang
     $this->_initLang($db, $cms_db, $client);
     $sf_lang_stack = $this->controller_cfg['sf_lang_stack'];
     $lang_global_startlang = $this->controller_cfg['lang_global_startlang'];
     $langarray = $this->controller_cfg['langarray'];
     $startlang = $this->controller_cfg['startlang'];
     $this->_assignGlobals('sf_lang_stack', $sf_lang_stack);
     $this->_assignGlobals('lang_global_startlang', $lang_global_startlang);
     $this->_assignGlobals('langarray', $langarray);
     $this->_assignGlobals('startlang', $startlang);
     // init idactside, idcat, lang
     list($idcatside, $idcat, $lang) = $this->ft->getPageIdsFromRequest($startlang);
     $this->_assignGlobals('lang', $lang);
     $is_frontend_rewrite_no = $cfg_client['url_rewrite'] == '0' && $is_frontend;
     $is_frontend_rewrite1 = $cfg_client['url_rewrite'] == '1' && $is_frontend;
     $is_frontend_rewrite2 = $cfg_client['url_rewrite'] == '2' && $is_frontend;
     $this->cfg->setVal('env', 'is_frontend_rewrite_no', $is_frontend_rewrite_no);
     $this->cfg->setVal('env', 'is_frontend_rewrite1', $is_frontend_rewrite1);
     $this->cfg->setVal('env', 'is_frontend_rewrite2', $is_frontend_rewrite2);
     //extract idcatside/ idcat from frontend rewrite url
     $_sf_rewrite_session = FALSE;
     if ($is_frontend_rewrite2 && ($idcatside < 1 && $idcat < 1)) {
         include_once $cfg_cms['path_base'] . $cfg_cms['path_backend_rel'] . 'inc/fnc.mod_rewrite.php';
         $_sf_rewrite_session = TRUE;
         $rewrite_lang = '';
         //is not startpage
         if ($_REQUEST['sf_rewrite'] != '') {
             list($idcatside, $idcat, $rewrite_lang) = $this->_getIdcatsideIdcatLangByRewriteUrl($db, $cfg_cms, $cfg_client, $cms_db, $client, $sf_lang_stack, $startlang);
             $lang = (int) $rewrite_lang > 0 ? (int) $rewrite_lang : $lang;
             //idcatside and idcat can't be found
             if ($idcatside < 1 && $idcat < 1) {
                 $idcatside = $this->ft->tryToRemapIdcatsideOrShow404();
             }
         }
     }
     $this->cfg->setVal('env', 'idclient', $client);
     $this->cfg->setVal('env', 'idlang', $lang);
     $this->cfg->setVal('env', 'idstartlang', $startlang);
     $this->cfg->setVal('env', 'idcatside', $idcatside);
     $this->cfg->setVal('env', 'idpage', $idcatside);
     $this->cfg->setVal('env', 'idcat', $idcat);
     $this->_assignGlobals('idcatside', $idcatside);
     $this->_assignGlobals('_sf_rewrite_session', $_sf_rewrite_session);
     $this->_assignGlobals('idcat', $idcat);
     $this->_assignGlobals('lang', $lang);
     //start session and auth
     $this->ft->startSession();
     $sess = $this->_getGlobal('sess');
     $auth = $this->_getGlobal('auth');
     $this->cfg->set('sess', $sess);
     $this->cfg->set('auth', $auth);
     // Sprache wechseln
     $sess->register('sid_idcatside');
     $sid_idcatside = $idcatside;
     $this->_assignGlobals('sid_idcatside', $sid_idcatside);
     $perm = new cms_perms($client, $lang);
     $this->_assignGlobals('perm', $perm);
     $this->cfg->set('perm', $perm);
     //assign logger client settings
     $cms_log->setIdclient($client);
     $cms_log->setIdlang($lang);
     $cms_log->setStorage('screen', $cfg_client['logs_storage_screen']);
     $cms_log->setStorage('logfile', $cfg_client['logs_storage_logfile']);
     $cms_log->setStorage('database', $cfg_client['logs_storage_database']);
     //get cms_lang strings
     $lang_charset = $sf_lang_stack[$lang]['charset'];
     $lang_dir = $cms_path . 'lang/' . $cfg_cms['backend_lang'] . '/';
     $cms_lang = $this->ft->getFrontendLangFile($lang_dir, $cms_path);
     $this->_assignGlobals('lang_charset', $lang_charset);
     $this->_assignGlobals('lang_dir', $lang_dir);
     $this->_assignGlobals('cms_lang', $cms_lang);
     // if idcatside not set found start idcat
     if ($idcatside < 1) {
         $idcatside = $this->ft->getStartIdcatside();
         $this->_assignGlobals('idcatside', $idcatside);
         $this->_assignGlobals('idpage', $idcatside);
         $this->cfg->setVal('env', 'idcatside', $idcatside);
     }
     $this->cfg->setVal('env', 'is_https', sf_get_server_protocol() == 'https');
     //register globals
     if ($this->controller_cfg['register_globals']) {
         $types_to_register = array('GET', 'POST');
         foreach ($types_to_register as $global_type) {
             $arr = @${'_' . $global_type};
             if (@count($arr) > 0) {
                 extract($arr, EXTR_SKIP);
             }
         }
     }
     $code = '';
     if ($is_backend) {
         //idcat is needed for have_perm()- call
         //wenn vom frontend aus eine Kategorie angelegt wird, ist noch keine $idcat vorhanden
         if ((int) $idcat < 1 && !empty($idcatside)) {
             $sql = "SELECT idcat FROM " . $cms_db['cat_side'] . " WHERE idcatside='" . (int) $idcatside . "'";
             $db->query($sql);
             if ($db->next_record()) {
                 $idcat = $db->f('idcat');
                 $GLOBALS['idcat'] =& $idcat;
                 //todo
             }
         }
         // Modus einstellen: editieren/Vorschau/normal
         $sf_perm_edit_page = FALSE;
         if ($perm->have_perm(19, 'side', $idcatside, $idcat)) {
             $sf_perm_edit_page = TRUE;
         }
         $this->cfg->setVal('env', 'view', $view);
         $this->cfg->setVal('env', 'perm_edit_page', $sf_perm_edit_page);
         //Generate cat and page informations
         $SF_catinfos = sf_api('LIB', 'Catinfos');
         $con_tree = $SF_catinfos->getCatinfoDataArray();
         $tlo_tree = $SF_catinfos->getParentDependanceDataArray();
         $this->_assignGlobals('SF_catinfos', $SF_catinfos);
         $this->_assignGlobals('con_tree', $con_tree);
         $this->_assignGlobals('tlo_tree', $tlo_tree);
         tree_level_order('0', 'catlist');
         $catlist = $GLOBALS['catlist'];
         $catlist_level = $GLOBALS['catlist_level'];
         $SF_pageinfos = sf_api('LIB', 'Pageinfos');
         $con_side = $SF_pageinfos->getPageinfoDataArray();
         $this->_assignGlobals('SF_pageinfos', $SF_pageinfos);
         $this->_assignGlobals('con_side', $con_side);
         // idcatside prüfen, da der User auch in einer Kategorie sein kann, wo es noch keine seite
         // und damit idcatside gibt.
         //catch advanced pageinfos for cuurent page
         if (!empty($idcatside)) {
             $con_side[$idcatside]['meta_author'] = $SF_pageinfos->getMetaAuthor($idcatside);
             $con_side[$idcatside]['meta_description'] = $SF_pageinfos->getMetaDescription($idcatside);
             $con_side[$idcatside]['meta_keywords'] = $SF_pageinfos->getMetaKeywords($idcatside);
             $con_side[$idcatside]['meta_robots'] = $SF_pageinfos->getMetaRobots($idcatside);
             $con_side[$idcatside]['meta_redirect'] = $SF_pageinfos->getMetaRedirectIsActive($idcatside);
             $con_side[$idcatside]['meta_redirect_url'] = $SF_pageinfos->getMetaRedirectUrl($idcatside);
             $con_side[$idcatside]['summary'] = $SF_pageinfos->getSummary($idcatside);
             $con_side[$idcatside]['author'] = $SF_pageinfos->getAuthor($idcatside);
             $con_side[$idcatside]['created'] = $SF_pageinfos->getCreatedTimestamp($idcatside);
             $con_side[$idcatside]['lastmodified'] = $SF_pageinfos->getLastmodifiedTimestamp($idcatside);
             $con_side[$idcatside]['is_https'] = $SF_pageinfos->getIsHttps($idcatside);
         }
         $idcat = $SF_pageinfos->getIdcat($idcatside);
         $idside = $SF_pageinfos->getIdside($idcatside);
         $this->cfg->setVal('env', 'idcat', $idcat);
         $this->cfg->setVal('env', 'idcatside', $idcatside);
         $this->_assignGlobals('idcat', $idcat);
         $this->_assignGlobals('idside', $idside);
         $arr = $this->ft->getIdtplIdtplconf($idcat, $idside, $lang);
         $idlay = $this->ft->getIdlay($arr['idtpl']);
         $this->cfg->setVal('env', 'idtpl', $arr['idtpl']);
         $this->cfg->setVal('env', 'idtplconf', $arr['idtplconf']);
         $this->cfg->setVal('env', 'idlay', $idlay);
         // Inhalt erstellen zum editieren der Seite
         if ($this->cfg->env('view')) {
             // es existiert noch keine Seite in diesem Ordner
             if (!$idcatside) {
                 $this->cfg->setVal('env', 'view', FALSE);
             }
             include $cms_path . 'inc/fnc.tpl.php';
             include $cms_path . 'inc/fnc.type.php';
             $sefrengotag_config = NULL;
             $GLOBALS['sefrengotag_config'] = $sefrengotag_config;
             $con_contype = NULL;
             $GLOBALS['con_contype'] = $con_contype;
             $con_typenumber = NULL;
             $GLOBALS['con_typenumber'] = $con_typenumber;
             $filetarget_is_hidden = NULL;
             $GLOBALS['filetarget_is_hidden'] = $filetarget_is_hidden;
             $type_container = NULL;
             $GLOBALS['con_typenumber'] = $type_container;
             $type_number = NULL;
             $GLOBALS['con_typenumber'] = $type_number;
             $type_typenumber = NULL;
             $GLOBALS['con_typenumber'] = $type_typenumber;
             $sf_content_manipulation = sf_api('LIB', 'FrontendPageContentManipulation');
             $data = $this->req->req('data');
             $action = array_key_exists('action', $_GET) ? $_GET['action'] : $_POST['action'];
             $idsidelang = $con_side[$idcatside]['idsidelang'];
             // Content speichern
             if ($action == 'save' || $action == 'saveedit') {
                 //content f�r event (am Ende der if-Schleife) zwischenspeichern
                 $entry = $this->req->req('entry', FALSE);
                 /**
                  * Aufbau str $content
                  * idcontainer.idrepeat.idformfieldtype-idmodtag[,idformfieldtypeN-idmodtagN]
                  * 520.2.14-2,13-1,4-1,5-1,1-2,14-3 - bearbeiten
                  * 530.new.13-1 - neu einf�gen, Position wird �ber $entry bestimmt
                  *
                  */
                 $sf_content_string = $this->req->req('content', FALSE);
                 $con_content = explode(';', $sf_content_string);
                 foreach ($con_content as $value) {
                     $con_config = explode('.', $value);
                     $con_container = $con_config['0'];
                     $con_containernumber = $con_config['1'];
                     $con_content_type = explode(',', $con_config[2]);
                     //add space for a "new" repeat container
                     if (is_numeric($entry) || is_int($entry)) {
                         $sf_content_manipulation->addNewRepeatContainer($con_container, $entry, $idsidelang);
                     }
                     foreach ($con_content_type as $value3) {
                         $value3 = explode('-', $value3);
                         $con_formtypenumber = $value3['0'];
                         $con_idmodtag = $value3['1'];
                         $sf_field_content = $this->req->req('content_' . $con_container . '_' . $con_containernumber . '_' . $con_formtypenumber . '_' . $con_idmodtag);
                         $new_containernumber = is_numeric($entry) || is_int($entry) ? $entry + 1 : $con_containernumber;
                         // $idcontainer, $idmodtag, $formtypenumber, $content, $idrepeat, $idsidelang
                         $sf_content_manipulation->save($con_container, $con_idmodtag, $con_formtypenumber, $sf_field_content, $new_containernumber, $idsidelang);
                     }
                     // Modulverdopplung minimieren, wenn Content leer ist.
                     $sf_content_manipulation->checkAndOptimizeRepeatContainer($con_container, $new_containernumber, $idsidelang);
                 }
                 // Event
                 fire_event('con_edit', array('path' => $cms_path, 'idcatside' => $idcatside, 'content' => $sf_content_string));
             } else {
                 if ($action == 'delete' || $action == 'move_up' || $action == 'move_down') {
                     $content = $this->req->req('content', FALSE);
                     $con_content = explode(';', $content);
                     foreach ($con_content as $value) {
                         $con_config = explode('.', $value);
                         $con_container = $con_config['0'];
                         $con_contnbr = $con_config['1'];
                         switch ($action) {
                             case 'delete':
                                 $sf_content_manipulation->delete($con_container, $con_contnbr, $idsidelang);
                                 break;
                             case 'move_up':
                                 $sf_content_manipulation->moveUp($con_container, $con_contnbr, $idsidelang);
                                 break;
                             case 'move_down':
                                 $sf_content_manipulation->moveDown($con_container, $con_contnbr, $idsidelang);
                                 break;
                         }
                     }
                     $this->ft->redirect($idcatside);
                 }
             }
             //Content bearbeiten
             if ($action == 'edit' || $action == 'saveedit' || $action == 'new') {
                 $this->sf_is_form_edit_mode = TRUE;
                 $code = $this->ft->getBackendEditForm($cms_path, $lang_charset, $cfg_cms, $idcatside, $lang, $GLOBALS['sess'], $cfg_client, $con_tree, $con_side, $cms_lang, $idside);
             } else {
                 // Template suchen
                 $container = $this->ft->getTemplateConfig($idcat, $idside, $lang);
                 $content = '';
                 if (count($container) > 0) {
                     $idtpl = $container['idtpl'];
                     $idtplconf = $container['idtplconf'];
                     $GLOBALS['idtpl'] =& $idtpl;
                     //TODO
                     $GLOBALS['idtplconf'] =& $idtplconf;
                     //TODO
                     $GLOBALS['container'] =& $container;
                     //TODO
                     //Generate content array
                     $content = $this->ft->getContentArray($idside, $lang);
                     $GLOBALS['content'] =& $content;
                     //TODO
                     //Get layout
                     $sf_layoutarray = $this->ft->getLayoutArray($idtpl);
                     $layout = $sf_layoutarray['layout'];
                     $sf_doctype = $sf_layoutarray['doctype'];
                     $sf_doctype_autoinsert = $sf_layoutarray['doctype_autoinsert'];
                     $sf_slash_closing_tag = $sf_layoutarray['doctype_required_tag_postfix'];
                     $sf_frontend_output->setDoctype($sf_layoutarray['doctype']);
                     $sf_frontend_output->setCharset($sf_lang_stack[$lang]['charset']);
                     $sf_frontend_output->setMetaKeywords($con_side[$idcatside]['meta_keywords']);
                     $sf_frontend_output->setMetaDescription($con_side[$idcatside]['meta_description']);
                     $sf_frontend_output->setMetaAuthor($con_side[$idcatside]['meta_author']);
                     $sf_frontend_output->setMetaRobots($con_side[$idcatside]['meta_robots']);
                     $code = $this->ft->mapCMSPHPCACHEToPhp($layout);
                     // Container generieren
                     $list = $this->ft->extractCmsTags($code);
                     $GLOBALS['cms_mod'] =& $cms_mod;
                     //TODO
                     if (is_array($list)) {
                         $search = array();
                         $replace = array();
                         $sf_frontend_output->setCmsLayTags($list);
                         foreach ($list as $cms_mod['container']) {
                             $search[] = $cms_mod['container']['full_tag'];
                             //Head-Container
                             if ($cms_mod['container']['type'] == 'head') {
                                 $backendcfg = array('is_backend' => $is_backend, 'is_https' => $cfg_client['https'] == 1 && $con_side[$idcatside]['is_https'] == 1, 'cms_html_path' => $cfg_cms['path_base_http'] . $cfg_cms['path_backend_rel'], 'skin' => $cfg_cms['skin'], 'lang_gen_deletealert' => $cms_lang['gen_deletealert'], 'perm' => $perm, 'view' => $view, 'idcatside' => $idcatside, 'idcat' => $idcat, 'lang' => $lang);
                                 $replace[] = $this->ft->getContainerHead($idlay, $sf_slash_closing_tag, $lang_charset, $sf_doctype, $backendcfg);
                             } else {
                                 if ($cms_mod['container']['type'] == 'config') {
                                     $replace[] = $this->ft->getContainerConfig($is_backend);
                                 } else {
                                     $backendcfg = array('is_backend' => $is_backend, 'idcatside' => $idcatside, 'view' => $this->cfg->env('view'));
                                     $replace[] = $this->ft->getContainerContent($container, $cms_mod, $content, $backendcfg);
                                 }
                             }
                         }
                         foreach ($search as $key => $value) {
                             $code = str_replace($value, $replace[$key], $code);
                         }
                     }
                 } else {
                     $code = $cms_lang['con_notemplate'];
                 }
                 //echo $code;exit;
                 ob_start();
                 eval(' ?>' . $code);
                 $code = ob_get_contents();
                 ob_end_clean();
                 $code = $this->ft->mapCMSPHPToPhp($code);
             }
         }
         // Seite ausgeben
         if ($code) {
             //redirect is active
             if ($SF_pageinfos->getMetaRedirectIsActive($idcatside) && $SF_pageinfos->getMetaRedirectUrl($idcatside) != '') {
                 $this->ft->redirect($SF_pageinfos->getMetaRedirectUrl($idcatside));
             } else {
                 ob_start();
                 eval('?>' . $code);
                 $code = ob_get_contents();
                 ob_end_clean();
             }
         } else {
             $this->ft->show404();
         }
     } else {
         $cfg_client['session_enabled'] = $this->ft->isSessionDisabledByUseragent() ? 0 : $cfg_client['session_enabled'];
         $cfg_client['session_enabled'] = $this->ft->isSessionDisabledByIp() ? 0 : $cfg_client['session_enabled'];
         $this->cfg->setVal('client', 'session_enabled', $cfg_client['session_enabled']);
         if ($_sf_rewrite_session) {
             if ($sess->mode == 'get') {
                 $sess->mode = 'getrewrite';
             }
         }
         //Generate cat and page informations
         $SF_catinfos = sf_api('LIB', 'Catinfos');
         $con_tree = $SF_catinfos->getCatinfoDataArray();
         $tlo_tree = $SF_catinfos->getParentDependanceDataArray();
         $GLOBALS['SF_catinfos'] = $SF_catinfos;
         //todo
         $GLOBALS['con_tree'] = $con_tree;
         //todo
         $GLOBALS['tlo_tree'] = $tlo_tree;
         //todo
         tree_level_order('0', 'catlist');
         $catlist = $GLOBALS['catlist'];
         $catlist_level = $GLOBALS['catlist_level'];
         if (is_array($con_tree)) {
             $SF_pageinfos = sf_api('LIB', 'Pageinfos');
             $con_side = $SF_pageinfos->getPageinfoDataArray();
             $GLOBALS['SF_pageinfos'] = $SF_pageinfos;
             //todo
             $GLOBALS['con_side'] = $con_side;
             //todo
         }
         // $idcat und $idside ermitteln
         if (empty($idcat)) {
             $idcat = $con_side[$idcatside]['idcat'];
         }
         if (empty($idside)) {
             $idside = $con_side[$idcatside]['idside'];
         }
         $GLOBALS['idcat'] = $idcat;
         //todo
         $GLOBALS['idside'] = $idside;
         //todo
         if ($cfg_client['url_rewrite'] == '2') {
             include_once $cfg_cms['path_base'] . $cfg_cms['path_backend_rel'] . 'inc/fnc.mod_rewrite.php';
             rewriteGenerateMapping();
         }
         // Ausgabe beenden, wenn Kategorie oder Seite nicht online
         if ($con_side[$idcatside]['online'] != 1 || $con_tree[$idcat]['visible'] != 1) {
             $idcatside = $this->ft->tryToRemapIdcatsideOrShow404();
             $idcat = $SF_pageinfos->getIdcat($idcatside);
             $idside = $SF_pageinfos->getIdside($idcatside);
         }
         // get advanced sideinfos for this side
         // idcatside pr�fen, da der User auch in einer Kategorie sein kann, wo es noch keine seite
         // und damit idcatside gibt.
         // es gibt keine idsidelang, wenn der user nicht das recht hat, die seite zu sehen
         if (!empty($idcatside) && !empty($con_side[$idcatside]['idsidelang'])) {
             $con_side[$idcatside]['meta_author'] = $SF_pageinfos->getMetaAuthor($idcatside);
             $con_side[$idcatside]['meta_description'] = $SF_pageinfos->getMetaDescription($idcatside);
             $con_side[$idcatside]['meta_keywords'] = $SF_pageinfos->getMetaKeywords($idcatside);
             $con_side[$idcatside]['meta_robots'] = $SF_pageinfos->getMetaRobots($idcatside);
             $con_side[$idcatside]['meta_redirect'] = $SF_pageinfos->getMetaRedirectIsActive($idcatside);
             $con_side[$idcatside]['meta_redirect_url'] = $SF_pageinfos->getMetaRedirectUrl($idcatside);
             $con_side[$idcatside]['summary'] = $SF_pageinfos->getSummary($idcatside);
             $con_side[$idcatside]['author'] = $SF_pageinfos->getAuthor($idcatside);
             $con_side[$idcatside]['created'] = $SF_pageinfos->getCreatedTimestamp($idcatside);
             $con_side[$idcatside]['lastmodified'] = $SF_pageinfos->getLastmodifiedTimestamp($idcatside);
             $con_side[$idcatside]['is_https'] = $SF_pageinfos->getIsHttps($idcatside);
             $con_side[$idcatside]['protected'] = $SF_pageinfos->getIsProtected($idcatside);
         }
         $this->cfg->setVal('env', 'idcat', $idcat);
         $this->cfg->setVal('env', 'idcatside', $idcatside);
         $arr = $this->ft->getIdtplIdtplconf($idcat, $idside, $lang);
         $idlay = $this->ft->getIdlay($arr['idtpl']);
         $this->cfg->setVal('env', 'idtpl', $arr['idtpl']);
         $this->cfg->setVal('env', 'idtplconf', $arr['idtplconf']);
         $this->cfg->setVal('env', 'idlay', $idlay);
         // Inhalt aus der Datenbank suchen
         if ($auth->auth['uid'] != 'nobody' | ($con_tree[$idcat]['visible'] == '1' && !empty($con_side[$idcatside]['online']) && $con_side[$idcatside]['online'] != '0')) {
             if (!empty($con_tree[$con_side[$idcatside]['idcat']]['idcat'])) {
                 $sf_item_code = sf_api('MODEL', 'CodeSqlItem');
                 $sf_item_code->loadByIdcatside($idcatside);
                 $code = $sf_item_code->getField('code');
                 if ($sf_item_code->getField('changed') == 1) {
                     // Seite generieren weil keine Daten gefunden oder Daten ver�ndert
                     include $cms_path . 'inc/fnc.type.php';
                     $container = $this->ft->getTemplateConfig($idcat, $idside, $lang);
                     if (count($container) > 0) {
                         $idtpl = $container['idtpl'];
                         $idtplconf = $container['idtplconf'];
                         $GLOBALS['idtpl'] =& $idtpl;
                         //TODO
                         $GLOBALS['idtplconf'] =& $idtplconf;
                         //TODO
                         $GLOBALS['container'] =& $container;
                         //TODO
                         //Generate content array
                         $content = $this->ft->getContentArray($idside, $lang);
                         $GLOBALS['content'] = $content;
                         //TODO
                         //Get layout
                         $sf_layoutarray = $this->ft->getLayoutArray($idtpl);
                         $layout = $sf_layoutarray['layout'];
                         $sf_doctype = $sf_layoutarray['doctype'];
                         $sf_doctype_autoinsert = $sf_layoutarray['doctype_autoinsert'];
                         $sf_slash_closing_tag = $sf_layoutarray['doctype_required_tag_postfix'];
                         $sf_frontend_output->setDoctype($sf_layoutarray['doctype']);
                         $sf_frontend_output->setCharset($sf_lang_stack[$lang]['charset']);
                         $sf_frontend_output->setMetaKeywords($con_side[$idcatside]['meta_keywords']);
                         $sf_frontend_output->setMetaDescription($con_side[$idcatside]['meta_description']);
                         $sf_frontend_output->setMetaAuthor($con_side[$idcatside]['meta_author']);
                         $sf_frontend_output->setMetaRobots($con_side[$idcatside]['meta_robots']);
                         $layout = $this->ft->mapCMSPHPCACHEToPhp($layout);
                         // Container generieren
                         $list = $this->ft->extractCmsTags($layout);
                         //TODO: 2REMOVE - DEDI BACKWARD COMPATIBILITY
                         $GLOBALS['cms_mod'] =& $cms_mod;
                         //TODO
                         //parse containers
                         $search = array();
                         $replace = array();
                         if (is_array($list)) {
                             $sf_frontend_output->setCmsLayTags($list);
                             //TODO DOES NOT WORK WITHOUT CACHE!!!!
                             foreach ($list as $cms_mod['container']) {
                                 $search[] = $cms_mod['container']['full_tag'];
                                 //Head-Container
                                 if ($cms_mod['container']['type'] == 'head') {
                                     $replace[] = $this->ft->getContainerHead($idlay, $sf_slash_closing_tag, $lang_charset, $sf_layoutarray['doctype']);
                                 } else {
                                     if ($cms_mod['container']['type'] == 'config') {
                                         $replace[] = $this->ft->getContainerConfig($is_backend);
                                     } else {
                                         $replace[] = $this->ft->getContainerContent($container, $cms_mod, $content);
                                     }
                                 }
                             }
                             // Seite erstellen
                             $code = $layout;
                             foreach ($search as $key => $value) {
                                 $code = str_replace($value, $replace[$key], $code);
                             }
                         } else {
                             $code = $layout;
                         }
                         //no template found
                     } else {
                         $code = $cms_lang['con_notemplate'];
                     }
                     //render cached php
                     ob_start();
                     eval(' ?>' . $code);
                     $code = ob_get_contents();
                     $sf_fo_export = $sf_frontend_output->_exportConfig();
                     $code = '<CMSPHP> $_sf_frontend_output_cfg_cache = ' . $sf_fo_export . '; </CMSPHP>' . $code;
                     ob_end_clean();
                     $code = $this->ft->mapCMSPHPToPhp($code);
                     // Delete Content Cache
                     sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend', 'content'));
                     // Seite in die 'code'-Tabelle schreiben
                     if ($this->cfg->client('cache') == '1') {
                         $sf_item_code->setField('code', $code);
                         $sf_item_code->setField('changed', '0');
                         $sf_item_code->save();
                     }
                 }
             }
         }
         // Seite ausgeben
         if ($code) {
             // handle meta redirect
             //redirect is active
             if ($SF_pageinfos->getMetaRedirectIsActive($idcatside) && $SF_pageinfos->getMetaRedirectUrl($idcatside) != '') {
                 $this->ft->redirect($SF_pageinfos->getMetaRedirectUrl($idcatside));
             } else {
                 ob_start();
                 eval('?>' . $code);
                 $sf_frontend_output->_importConfig($_sf_frontend_output_cfg_cache);
                 $code = ob_get_contents();
                 ob_end_clean();
                 if ($this->cfg->env('send_header_404')) {
                     $sf_frontend_output->setHttpHeader('HTTP/1.1 404 Not Found');
                     $sf_frontend_output->setHttpHeader('Status: 404 Not Found');
                 }
             }
         } else {
             $this->ft->show404();
         }
     }
     //$sf_frontend_output->addContentToHead('<script>alert("hello")</script>', $position = 'top');
     //$sf_frontend_output->changeContainerVisibility(520, FALSE);
     //$sf_frontend_output->changeContainerVisibility(510, FALSE);
     $output = $sf_frontend_output->parse($code, TRUE);
     if (!$this->sf_is_form_edit_mode) {
         $output = $this->ft->getMappedCmsFileUrlsToNamedUrls($output);
         $output = $this->ft->getMappedCmsLinks($output);
     }
     // event to manipulate the output
     $event = fire_event('frontend_code_generated', array('output' => $output), array('output'));
     $output = $event['output'];
     unset($event);
     //Logs auf Screen ausgeben, wenn Logs vorhanden
     if (count($cms_log->getLogs()) > 0) {
         $log_output = sf_api('VIEW', 'LogOutput');
         $log_output->addItemsArray($cms_log->getLogs());
         $searches = array('</body>');
         foreach ($searches as $search) {
             $pos = strpos($output, $search);
             if ($pos !== FALSE) {
                 // replace the last occurence of $search
                 $output = substr_replace($output, "\n" . $log_output->show() . "\n" . $search, $pos, strlen($search));
                 break;
                 // exit
             }
         }
     }
     //handle charset - default is UTF-8
     if ($sf_lang_stack[$lang]['charset'] == 'iso-8859-1') {
         $output = utf8_decode($output);
     }
     // Seite komprimieren und ausgeben
     if ($cfg_cms['gzip'] == '1') {
         // @ob_start('ob_gzhandler');
         eval($cfg_client['manipulate_output']);
         // @ob_end_flush();
     } else {
         eval($cfg_client['manipulate_output']);
     }
 }
 function _handleEvent($event)
 {
     $args = fire_event($event, $this->data);
     if (is_array($args)) {
         foreach ($args as $v) {
             if (is_array($v)) {
                 foreach ($v as $key => $val) {
                     $this->data['special'][$key] = $val;
                 }
             }
         }
     }
 }
Beispiel #25
0
 /**
  * 删除记录
  *
  * $adapter->delete('users', 'id = ?', 3);
  * $adapter->delete('users', array('id = ?', 3));
  * $adapter->delete('table', 'a = ? and b = ?', 'a1', 'b1');
  * $adapter->delete('table', 'a = :a and b = :b', array(':a' => 'a1', ':b' => 'b1'));
  * $adapter->delete('table', 'a = :a and b = :b', 'a1', 'b1');
  *
  * @param string $table
  * @param mixed $where
  * @param mixed $bind
  * @access public
  * @return integer
  */
 public function delete($table, $where, $bind = null)
 {
     $sql = 'DELETE FROM ' . $this->qtab($table);
     if (is_array($where)) {
         list($where, $bind) = call_user_func_array(array($this, 'parsePlaceHolder'), $where);
     } else {
         $args = func_get_args();
         list($where, $bind) = call_user_func_array(array($this, 'parsePlaceHolder'), array_slice($args, 1));
     }
     if ($where) {
         $sql .= ' WHERE ' . $where;
     }
     if (!($sth = $this->execute($sql, $bind))) {
         return false;
     }
     if ($affected = $sth->rowCount()) {
         fire_event($this, DELETE_EVENT, $this, $table, $affected);
     }
     return $affected;
 }
Beispiel #26
0
function lang_delete_language($idclient, $idlang)
{
    global $db, $sess, $cms_db;
    //************ check if there are still sides online
    // change JB: Berücksichtigt auch die zeitgesteuerten Seiten
    $sql = "SELECT * FROM {$cms_db['side_lang']} A LEFT JOIN {$cms_db['side']} B USING(idside) WHERE B.idclient='{$idclient}' AND idlang!='0' AND idlang='{$idlang}' AND (online & 0x03) > 0x00";
    $db->query($sql);
    if ($db->next_record()) {
        return "0802";
        //Deleting not possible because of online sides or visible categories
    }
    //************ check if there are visible categories
    // change JB: Berücksichtigt auch die zeitgesteuerten Seiten
    $sql = "SELECT * FROM {$cms_db['cat_lang']} A LEFT JOIN {$cms_db['cat']} B USING(idcat) WHERE B.idclient='{$idclient}' AND idlang!='0' AND idlang='{$idlang}' AND (visible & 0x03) > 0x00";
    $db->query($sql);
    if ($db->next_record()) {
        return "0802";
    }
    //Deleting not possible because of online sides or visible categories
    // keine seiten oder kategorien online ... löschen
    // Event feuern
    fire_event('delete_lang', array('idclient' => $idclient, 'idlang' => $idlang));
    //********* check if this is the clients last language to be deleted, if yes delete from side, cat, and cat_side as well *******
    $last_language = 0;
    $sql = "SELECT COUNT(*) FROM {$cms_db['clients_lang']} WHERE idclient='{$idclient}'";
    $db->query($sql);
    $db->next_record();
    if ($db->f(0) == 1) {
        $lastlanguage = 1;
    }
    //********** delete from 'side_lang'-table *************
    $sql = "SELECT idsidelang, A.idside FROM {$cms_db['side_lang']} A LEFT JOIN {$cms_db['side']} B USING(idside) WHERE B.idclient='{$idclient}' AND idlang!='0' AND idlang='{$idlang}'";
    $db->query($sql);
    while ($db->next_record()) {
        $a_idsidelang[] = $db->f('idsidelang');
        $a_idside[] = $db->f('idside');
    }
    if (is_array($a_idsidelang)) {
        foreach ($a_idsidelang as $value) {
            $sql = "DELETE FROM {$cms_db['side_lang']} WHERE idsidelang='{$value}'";
            $db->query($sql);
            $sql = "DELETE FROM {$cms_db['content']} WHERE idsidelang='{$value}'";
            $db->query($sql);
        }
    }
    if ($lastlanguage == 1) {
        if (is_array($a_idside)) {
            foreach ($a_idside as $value) {
                $sql = "DELETE FROM {$cms_db['side']} WHERE idside='{$value}'";
                $db->query($sql);
                $sql = "DELETE FROM {$cms_db['cat_side']} WHERE idside='{$value}'";
                $db->query($sql);
            }
        }
    }
    //********** delete from 'cat_lang'-table *************
    $sql = "SELECT idcatlang, A.idcat FROM {$cms_db['cat_lang']} A LEFT JOIN {$cms_db['cat']} B USING(idcat) WHERE B.idclient='{$idclient}' AND idlang!='0' AND idlang='{$idlang}'";
    $db->query($sql);
    while ($db->next_record()) {
        $a_idcatlang[] = $db->f("idcatlang");
        $a_idcat[] = $db->f("idcat");
    }
    if (is_array($a_idcatlang)) {
        foreach ($a_idcatlang as $value) {
            $sql = "DELETE FROM {$cms_db['cat_lang']} WHERE idcatlang='{$value}'";
            $db->query($sql);
        }
    }
    if ($lastlanguage == 1) {
        if (is_array($a_idcat)) {
            foreach ($a_idcat as $value) {
                $sql = "DELETE FROM {$cms_db['cat']} WHERE idcat='{$value}'";
                $db->query($sql);
            }
        }
    }
    // Cache-Group Frontend löschen
    sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend'));
    // delete cfg_lang entries from 'cms_values'-table
    $sql = "DELETE FROM " . $cms_db['values'] . " WHERE idlang='{$idlang}' AND  group_name = 'cfg_lang'";
    $db->query($sql);
    // delete from 'code'-table
    $sql = "DELETE FROM {$cms_db['code']} WHERE idlang='{$idlang}'";
    $db->query($sql);
    // delete from 'clients_lang'-table
    $sql = "DELETE FROM {$cms_db['clients_lang']} WHERE idclient='{$idclient}' AND idlang='{$idlang}'";
    $db->query($sql);
    // delete from 'lang'-table
    $sql = "DELETE FROM {$cms_db['lang']} WHERE idlang='{$idlang}'";
    $db->query($sql);
    // delete from 'perm'-table
    $sql = "DELETE FROM {$cms_db['perms']} WHERE idlang='{$idlang}'";
    $db->query($sql);
}
Beispiel #27
0
******************************************************************************/
include 'inc/fnc.group.php';
/******************************************************************************
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
$perm->check('area_group');
switch ($action) {
    case 'save':
        $errno = group_save();
        $errlog = $errno ? $errno : 0;
        //Log
        if ($errlog == 0) {
            $cms_log->info('user', 'group_edit', array('idgroup' => $idgroup, 'name' => $name));
        }
        // Event
        fire_event('group_edit', array('idgroup' => $idgroup, 'name' => $name, 'description' => $description, 'author' => $auth->auth['uid'], 'errno' => $errlog));
        if (!$errno && !isset($_REQUEST['sf_apply'])) {
            header('HTTP/1.1 302 Moved Temporarily');
            header('Location:' . $sess->urlRaw("main.php?area=group&order={$order}&ascdesc={$ascdesc}"));
            exit;
        }
        break;
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
include 'inc/inc.header.php';
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Templatedatei laden
 2. Eventuelle Actions/ Funktionen abarbeiten
******************************************************************************/
// Prüfe ob User diesen bereich betreten darf
if (empty($idjsfile)) {
    $perm->check(2, 'area_js');
} else {
    $perm->check(3, 'js_file', $idjsfile);
}
if ($idclient != 0 && $idclient != (int) $client || !isset($idclient)) {
    $idclient = (int) $client;
}
if ($action && preg_match("/^\\d/", $action) == 0) {
    eval('$errno = js_' . $action . '();');
    //Event
    $errlog = $errno ? ', Fehler:' . $errno : '';
    fire_event('js_' . $action, array('idjsfile' => $idjsfile, 'errlog' => $errlog));
    if (empty($errno) && !isset($_REQUEST['sf_apply'])) {
        header('HTTP/1.1 302 Moved Temporarily');
        header('Location: ' . $sess->urlRaw("main.php?area=js&idjsfile={$idjsfile}&idclient={$idclient}&errno={$errno}"));
        exit;
    }
}
/******************************************************************************
 3. Eventuelle Dateien zur Darstellung includieren
******************************************************************************/
include 'inc/inc.header.php';
/******************************************************************************
 4. Bildschirmausgabe aufbereiten und ausgeben
******************************************************************************/
// Kopfbereich
$tmp['AREA_TITLE'] = $cms_lang['area_js_edit_file'];
Beispiel #29
0
function con_config_side_save($idcat, $idside, $idtpl, $idtplconf, $idsidelang, $idcatside, $idcatnew, $author, $title, $meta_keywords, $summary, $online, $user_protected, $view, $created, $lastmodified, $startdate, $starttime, $enddate, $endtime, $meta_author, $meta_description, $meta_robots, $meta_redirect_time, $meta_redirect, $meta_redirect_url, $rewrite_use_automatic, $rewrite_url, $idlay, $use_redirect = true)
{
    global $db, $client, $sess, $perm, $lang, $cms_db, $cfg_client, $cms_lang, $val_ct;
    global $idcatside, $idside;
    if (!(is_numeric($idtpl) || is_int($idtpl))) {
        return;
    }
    if (!(is_numeric($idtplconf) || is_int($idtplconf))) {
        return;
    }
    if (empty($title)) {
        $title = $cms_lang['con_defaulttitle'];
    }
    $rewrite_use_automatic = $rewrite_use_automatic > 0 ? 1 : 0;
    rewriteGenerateMapping();
    if ($rewrite_use_automatic) {
        $rewrite_url = rewriteGenerateUrlString($title);
        $rewrite_url = rewriteMakeUniqueStringForLang('idcatside', $idcatside, $rewrite_url);
    } else {
        $rewrite_url = rewriteGenerateUrlString($rewrite_url, true);
    }
    // idcatside für rechte
    $idcatside_for_rights = $idcatside;
    $idcat_for_rights = $idcat;
    if (!is_array($idcatnew)) {
        $idcatnew['0'] = $idcat;
    }
    $start = createDate($startdate, $starttime);
    $end = createDate($enddate, $endtime);
    $meta_redirect = $meta_redirect == '1' ? '1' : '0';
    $meta_redirect_url = $meta_redirect_url == 'http://' || $meta_redirect_url == '' ? '' : $meta_redirect_url;
    set_magic_quotes_gpc($title);
    set_magic_quotes_gpc($summary);
    set_magic_quotes_gpc($meta_author);
    set_magic_quotes_gpc($meta_description);
    set_magic_quotes_gpc($meta_keywords);
    set_magic_quotes_gpc($meta_robots);
    set_magic_quotes_gpc($meta_redirect_url);
    if (empty($idside)) {
        //echo "new page";exit;
        // Seite erstellen
        $sql = "INSERT INTO {$cms_db['side']} (idclient) VALUES ('{$client}')";
        $db->query($sql);
        // neue idside suchen
        $idside = mysql_insert_id();
        // Seite in alle Ordner einfügen
        foreach ($idcatnew as $value) {
            //sortindex suchen
            $sql = "SELECT MAX(sortindex) AS sortindex FROM " . $cms_db['cat_side'] . " WHERE idcat='{$value}'";
            $db->query($sql);
            if ($db->next_record()) {
                $sortindex = $db->f('sortindex') + 1;
            } else {
                $sortindex = 1;
            }
            $sql = "SELECT * FROM {$cms_db['cat_side']} WHERE idcat='{$value}' AND is_start='1'";
            $db->query($sql);
            $is_start = $db->next_record() ? '0' : '1';
            $sql = "INSERT INTO {$cms_db['cat_side']} (idcat, idside, sortindex, is_start) VALUES ('{$value}', '{$idside}', '{$sortindex}', '{$is_start}')";
            $db->query($sql);
        }
        // idcatside suchen
        $sql = "SELECT idcatside FROM {$cms_db['cat_side']} WHERE idside='{$idside}'";
        $idcatside = array();
        getIdList($sql, $idcatside, '', 'idcatside');
        // für jede Sprache erstellen
        $a_languages = get_languages_by_client($client);
        foreach ($a_languages as $tmp_lang) {
            if ($tmp_lang == $lang) {
                $side_online = $online;
                $side_start = $start;
                $side_end = $end;
            } else {
                $side_online = 0;
                $side_start = time();
                $side_end = time();
            }
            //TODO Problems to update template in multilang pages
            $catobject =& sf_factoryGetObject('PAGE', 'Cat');
            $catobject->loadByIdcatIdlang($idcatnew['0'], $tmp_lang);
            $cat_is_protected = $catobject->getIsProtected();
            if ($cat_is_protected) {
                $side_online = $side_online | 0x4;
            }
            if ($tmp_lang == $lang) {
                $tmp_meta_description = $meta_description;
                $tmp_meta_keywords = $meta_keywords;
                $tmp_meta_robots = $meta_robots;
            } else {
                $cfg_lang = $val_ct->get_by_group('cfg_lang', $client, $tmp_lang);
                $tmp_meta_description = htmlentities($cfg_lang['meta_description'], ENT_COMPAT, 'UTF-8');
                $tmp_meta_keywords = htmlentities($cfg_lang['meta_keywords'], ENT_COMPAT, 'UTF-8');
                $tmp_meta_robots = htmlentities($cfg_lang['meta_robots'], ENT_COMPAT, 'UTF-8');
            }
            $sql = 'INSERT INTO ' . $cms_db['side_lang'];
            $sql .= ' (idside, idlang, title, meta_keywords, summary, created, lastmodified, author, meta_redirect, meta_redirect_url,';
            $sql .= ' user_protected, online, start, end, meta_author, meta_description, meta_robots, meta_redirect_time, rewrite_use_automatic, rewrite_url) ';
            $sql .= 'VALUES (';
            $sql .= " '{$idside}', '{$tmp_lang}', '{$title}', '{$tmp_meta_keywords}', '{$summary}', '{$created}', '{$lastmodified}', '{$author}', ";
            $sql .= " '{$meta_redirect}', '{$meta_redirect_url}', '{$user_protected}', '{$side_online}', '{$side_start}', '{$side_end}', ";
            $sql .= " '{$meta_author}', '{$tmp_meta_description}', '{$tmp_meta_robots}', '{$meta_redirect_time}', '{$rewrite_use_automatic}', '{$rewrite_url}')";
            $db->query($sql);
        }
        // idsidelang für die Templateerstellung raussuchen
        $sql = "SELECT idsidelang FROM " . $cms_db['side_lang'] . " WHERE idside='{$idside}'";
        $tmp_idsidelang = array();
        $affectedrows = getIdList($sql, $tmp_idsidelang, '', 'idsidelang');
        //print_r($tmp_idsidelang);exit;
        // Template erstellen
        if ($affectedrows) {
            foreach ($tmp_idsidelang as $value) {
                con_config_tpl_save($idtpl, $idlay, '', $value, $idtplconf);
            }
            //exit;
        }
        // Seite für Frontend erzeugen
        if ($cfg_client['publish'] == '1') {
            foreach ($a_languages as $tmp_lang) {
                $sql = 'INSERT INTO ' . $cms_db['code'] . "(idlang, idcatside, changed) VALUES ('{$tmp_lang}', '" . $idcatside['0'] . "', '1')";
                $db->query($sql);
            }
        }
        // Event
        fire_event('con_side_new', array('idside' => $idside, 'name' => $title));
        // Content aus Cache löschen
        sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend', 'content'));
        // Danach ins Frontend?
        // ermittle redirect-url
        if ($view) {
            $url_location = $sess->url($cfg_client['htmlpath'] . $cfg_client['contentfile'] . '?lang=' . $lang . '&idcatside=' . $idcatside['0'] . '&view=' . $view);
        } else {
            $url_location = $sess->url("main.php?area=con_editframe&idcatside=" . $idcatside['0']);
        }
        $idcatside = $idcatside['0'];
    } else {
        // handle $online-Angabe
        // 0 -> offline setzen
        // 1 -> online setzen
        // 2 -> zeitsteuerung setzen
        switch ((int) $online) {
            case 0:
                $change_online = 'online & 0xFC';
                break;
            case 1:
                $change_online = '((online & 0xFC) | 0x01)';
                break;
            case 2:
                $change_online = '((online & 0xFC) | 0x02)';
                break;
            default:
                $change_online = '0';
                break;
        }
        // update der 'side_lang' Tabelle
        $sql = 'UPDATE ' . $cms_db['side_lang'] . ' ';
        $sql .= 'SET';
        $sql .= " title='{$title}', meta_keywords='{$meta_keywords}', summary='{$summary}', meta_redirect='{$meta_redirect}', ";
        $sql .= " meta_redirect_url='{$meta_redirect_url}', user_protected = '{$user_protected}', online = {$change_online}, start='{$start}', ";
        $sql .= " end='{$end}', meta_author='{$meta_author}', meta_description='{$meta_description}', meta_robots='{$meta_robots}', ";
        $sql .= " meta_redirect_time = '{$meta_redirect_time}', rewrite_use_automatic = '{$rewrite_use_automatic}', rewrite_url = '{$rewrite_url}' ";
        $sql .= 'WHERE idsidelang = ' . $idsidelang;
        $db->query($sql);
        // in welchem Ordner existiert die Seite?
        $sql = 'SELECT idcat FROM ' . $cms_db['cat_side'] . ' WHERE idside = ' . $idside;
        $tmp_idcat = array();
        getIdList($sql, $tmp_idcat, 'idcat');
        if (is_array($tmp_idcat)) {
            // Seite in neue Ordner einfügen
            foreach ($idcatnew as $value) {
                if (!in_array($value, $tmp_idcat)) {
                    $sql = 'SELECT * FROM ' . $cms_db['cat_side'] . ' WHERE idcat = ' . $value . ' AND is_start = 1';
                    $db->query($sql);
                    $is_start = $db->next_record() ? '0' : '1';
                    //sortindex suchen
                    $sql = "SELECT MAX(sortindex) AS sortindex FROM " . $cms_db['cat_side'] . " WHERE idcat='{$value}'";
                    $db->query($sql);
                    if ($db->next_record()) {
                        $sortindex = $db->f('sortindex') + 1;
                    } else {
                        $sortindex = 1;
                    }
                    if ($value == $idcatnew['0'] && !in_array($idcat, $idcatnew)) {
                        $sql = 'UPDATE ' . $cms_db['cat_side'] . ' ';
                        $sql .= 'SET';
                        $sql .= ' idcat    = ' . $value . ',';
                        $sql .= ' sortindex    = ' . $sortindex . ',';
                        $sql .= ' is_start = ' . $is_start . ' ';
                        $sql .= 'WHERE  idcat = ' . $idcat;
                        $sql .= ' AND  idside = ' . $idside;
                        $db->query($sql);
                        if (in_array($idcat, $idcatnew)) {
                            unset($tmp_idcat[$idcat]);
                        }
                        //alte kategorie neu sortieren
                        if (!function_exists('con_reindex_page_sort')) {
                            include_once 'inc/fnc.con.php';
                        }
                        con_reindex_page_sort($idcat);
                    } else {
                        //sortindex suchen
                        $sql = "SELECT MAX(sortindex) AS sortindex FROM " . $cms_db['cat_side'] . " WHERE idcat='{$value}'";
                        $db->query($sql);
                        if ($db->next_record()) {
                            $sortindex = $db->f('sortindex') + 1;
                        } else {
                            $sortindex = 1;
                        }
                        $sql = 'INSERT INTO ' . $cms_db['cat_side'] . ' ';
                        $sql .= ' (idcat , idside , is_start, sortindex) ';
                        $sql .= 'VALUES';
                        $sql .= " ({$value}, {$idside}, {$is_start}, {$sortindex}) ";
                        $db->query($sql);
                    }
                }
            }
            // Seite aus nicht benutzen Ordnern löschen
            // jb_todo: rechte löschen??
            foreach ($tmp_idcat as $value) {
                if (!in_array($value, $idcatnew)) {
                    // suche alle idcatsides, die nicht mehr existieren
                    $sql = 'SELECT idcatside FROM ' . $cms_db['cat_side'] . " WHERE idcat='{$value}' AND idside='{$idside}'";
                    $db->query($sql);
                    $db->next_record();
                    // lösche alte 'code' Einträge
                    $sql = 'DELETE FROM ' . $cms_db['code'] . " WHERE idcatside='" . $db->f('idcatside') . "'";
                    $db->query($sql);
                    // lösche alte 'cat_side' Einträge
                    $sql = 'DELETE FROM ' . $cms_db['cat_side'] . " WHERE idside='{$idside}' AND idcat='{$value}'";
                    $db->query($sql);
                    // falls kein Startartikel mehr vorhanden neuen setzen
                    $sql = 'SELECT * FROM ' . $cms_db['cat_side'] . " WHERE idcat='{$value}' AND is_start='1'";
                    $db->query($sql);
                    if (!$db->affected_rows()) {
                        $sql = 'UPDATE ' . $cms_db['cat_side'] . " SET is_start = '1' WHERE idcat='{$value}' ORDER BY sortindex LIMIT 1";
                        $db->query($sql);
                    }
                    //sortindex neu sortieren
                    if (!function_exists('con_reindex_page_sort')) {
                        include_once 'inc/fnc.con.php';
                    }
                    con_reindex_page_sort($value);
                    // jb_todo:
                    // lösche alte 'tpl_conf' Einträge
                    // muß noch eingetragen werden
                    //Event
                    fire_event('get_unused_idcatside_by_save_side', array('idside' => $idside, 'idcat' => $value, 'idcatside' => $db->f('idcatside')));
                }
            }
        }
        // Template konfigurieren
        $have_perm_save_configdata = $perm->have_perm(27, 'side', $idcatside_for_rights, $idcat_for_rights);
        //		if ($idtplconf == '0' && $idtpl != '0') {
        //	 		$sql = 'SELECT idsidelang FROM ' . $cms_db['side_lang'] . " WHERE idside = $idside";
        //			$tmp_idsidelang = array();
        //			$affected_rows = getIdList($sql, $tmp_idsidelang, '', 'idsidelang');
        //			//print_r($tmp_idsidelang);exit;
        //
        //			// Template erstellen
        //			if ($affected_rows) {
        //				foreach ($tmp_idsidelang as $value) {
        //					con_config_tpl_save($idtpl, $idlay, '', $value, $idtplconf, $have_perm_save_configdata);
        //				}
        //			}
        //		}
        //		else {
        con_config_tpl_save($idtpl, $idlay, '', $idsidelang, $idtplconf, $have_perm_save_configdata);
        //		}
        // Rechte setzen
        if ($perm->have_perm(22, 'side', $idcatside_for_rights, $idcat_for_rights)) {
            global $backend_cms_gruppenids, $backend_cms_gruppenrechte, $backend_cms_gruppenrechtegeerbt, $backend_cms_gruppenrechteueberschreiben;
            $perm->set_group_rights('side', $idcatside_for_rights, $backend_cms_gruppenids, $backend_cms_gruppenrechte, $backend_cms_gruppenrechtegeerbt, $backend_cms_gruppenrechteueberschreiben, '', 0x7ffd0000, $idcat_for_rights, 0x7ffd0000);
        }
        if ($perm->have_perm(14, 'cat', $idcat_for_rights)) {
            global $frontend_cms_gruppenids, $frontend_cms_gruppenrechte, $frontend_cms_gruppenrechtegeerbt, $frontend_cms_gruppenrechteueberschreiben;
            $perm->set_group_rights('frontendpage', $idcatside_for_rights, $frontend_cms_gruppenids, $frontend_cms_gruppenrechte, $frontend_cms_gruppenrechtegeerbt, $frontend_cms_gruppenrechteueberschreiben, '', 68719476735.0, $idcat_for_rights, 4294967295.0);
        }
        // Codestatus ändern
        change_code_status($idcatside_for_rights, 1, 'idcatside');
        // Event
        fire_event('con_side_edit', array('idside' => $idside, 'name' => $title));
        // Content aus Cache löschen
        sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend', 'content'));
        // ermittle redirect-url
        if ($view) {
            $url_location = $sess->url($cfg_client['htmlpath'] . $cfg_client['contentfile'] . '?lang=' . $lang . '&idcatside=' . $idcatside . '&view=' . $view);
        } else {
            $url_location = $sess->url('main.php?area=con');
        }
    }
    // Cache-Group Frontend löschen
    sf_factoryCallMethod('UTILS', 'DbCache', null, null, 'flushByGroup', array('frontend'));
    if ($use_redirect) {
        redirect_page($url_location);
    }
}
Beispiel #30
0
        $tpl->show();
    } else {
        echo 'Controller not found.';
        exit;
    }
}
// unset vars
unset($sf_controller, $sf_area, $pairs, $controller);
// Output buffering beenden
if ($area != 'logout') {
    page_close();
}
$output = ob_get_contents();
ob_end_clean();
// event to manipulate the output
$event = fire_event('backend_code_generated', array('output' => $output), array('output'));
$output = $event['output'];
unset($event);
//Logs auf Screen ausgeben, wenn Logs vorhanden
if (count($cms_log->getLogs()) > 0) {
    $log_output = sf_api('VIEW', 'LogOutput');
    $log_output->addItemsArray($cms_log->getLogs());
    $searches = array('<div id="sf_loading">', '</body>');
    foreach ($searches as $search) {
        $pos = strpos($output, $search);
        if ($pos !== FALSE) {
            // replace the last occurence of $search
            $output = substr_replace($output, "\n" . $log_output->show() . "\n" . $search, $pos, strlen($search));
            break;
            // exit
        }