Example #1
0
 public function onCloudSetApps($apps)
 {
     if (!is_array($apps)) {
         return false;
     }
     $appService = Cloud::loadClass('Service_App');
     $utilService = Cloud::loadClass('Service_Util');
     $res = array();
     $res['apiVersion'] = $utilService->getApiVersion();
     foreach ($apps as $appName => $status) {
         $res[$appName] = $appService->setCloudAppStatus($appName, $status, false, false);
     }
     try {
         require_once libfile('function/cache');
         updatecache(array('plugin', 'setting', 'styles'));
         cleartemplatecache();
     } catch (Exception $e) {
     }
     $res['siteInfo'] = $this->_getBaseInfo();
     return $res;
 }
Example #2
0
 public function setCloudAppStatus($appName, $status, $cache = true, $updateCache = true)
 {
     $method = '_' . strtolower($appName) . 'StatusCallback';
     if (!method_exists($this, $method)) {
         throw new Cloud_Service_AppException('Cloud callback: ' . $method . ' not exists!', 51001);
     }
     try {
         $callbackRes = $this->{$method}($appName, $status);
     } catch (Exception $e) {
         throw new Cloud_Service_AppException($e);
     }
     if (!$callbackRes) {
         throw new Cloud_Service_AppException('Cloud callback: ' . $method . ' error!', 51003);
     }
     $apps = $this->getCloudApps($cache);
     $app = array('name' => $appName, 'status' => $status);
     $apps[$appName] = $app;
     C::t('common_setting')->update('cloud_apps', $apps);
     if ($updateCache) {
         require_once libfile('function/cache');
         updatecache(array('plugin', 'setting', 'styles'));
         cleartemplatecache();
     }
     return true;
 }
Example #3
0
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: misc_initsys.php 27433 2012-01-31 08:16:01Z monkey $
 */
if (!defined('IN_DISCUZ')) {
    exit('Access Denied');
}
if (!($_G['adminid'] == 1 && $_GET['formhash'] == formhash()) && $_G['setting']) {
    exit('Access Denied');
}
require_once libfile('function/cache');
updatecache();
require_once libfile('function/block');
blockclass_cache();
if ($_G['config']['output']['tplrefresh']) {
    cleartemplatecache();
}
$plugins = array('qqconnect', 'cloudstat', 'soso_smilies', 'cloudsearch', 'qqgroup', 'security', 'xf_storage', 'mobile');
$opens = array('mobile');
require_once libfile('function/plugin');
require_once libfile('function/admincp');
foreach ($plugins as $pluginid) {
    $importfile = DISCUZ_ROOT . './source/plugin/' . $pluginid . '/discuz_plugin_' . $pluginid . '.xml';
    if (!file_exists($importfile)) {
        continue;
    }
    $importtxt = @implode('', file($importfile));
    $pluginarray = getimportdata('Discuz! Plugin', $importtxt);
    $plugin = C::t('common_plugin')->fetch_by_identifier($pluginid);
    if ($plugin) {
        $modules = unserialize($plugin['modules']);
function pluginupgrade($pluginarray, $installtype)
{
    if (!$pluginarray || !$pluginarray['plugin']['identifier']) {
        return false;
    }
    $plugin = C::t('common_plugin')->fetch_by_identifier($pluginarray['plugin']['identifier']);
    if (!$plugin) {
        return false;
    }
    if (is_array($pluginarray['var'])) {
        $pluginvars = $pluginvarsnew = array();
        foreach (C::t('common_pluginvar')->fetch_all_by_pluginid($plugin['pluginid']) as $pluginvar) {
            $pluginvars[] = $pluginvar['variable'];
        }
        foreach ($pluginarray['var'] as $config) {
            if (!in_array($config['variable'], $pluginvars)) {
                $data = array('pluginid' => $plugin[pluginid]);
                foreach ($config as $key => $val) {
                    $data[$key] = $val;
                }
                C::t('common_pluginvar')->insert($data);
            } else {
                $data = array();
                foreach ($config as $key => $val) {
                    if ($key != 'value') {
                        $data[$key] = $val;
                    }
                }
                if ($data) {
                    C::t('common_pluginvar')->update_by_variable($plugin['pluginid'], $config['variable'], $data);
                }
            }
            $pluginvarsnew[] = $config['variable'];
        }
        $pluginvardiff = array_diff($pluginvars, $pluginvarsnew);
        if ($pluginvardiff) {
            C::t('common_pluginvar')->delete_by_variable($plugin['pluginid'], $pluginvardiff);
        }
    }
    $langexists = updatepluginlanguage($pluginarray);
    $pluginarray['plugin']['modules'] = dunserialize($pluginarray['plugin']['modules']);
    $plugin['modules'] = dunserialize($plugin['modules']);
    if (!empty($plugin['modules']['system'])) {
        $pluginarray['plugin']['modules']['system'] = $plugin['modules']['system'];
    }
    $plugin['modules']['extra']['installtype'] = $installtype;
    $pluginarray['plugin']['modules']['extra'] = $plugin['modules']['extra'];
    if (!empty($pluginarray['intro']) || $langexists) {
        if (!empty($pluginarray['intro'])) {
            require_once libfile('function/discuzcode');
            $pluginarray['plugin']['modules']['extra']['intro'] = discuzcode(strip_tags($pluginarray['intro']), 1, 0);
        }
        $langexists && ($pluginarray['plugin']['modules']['extra']['langexists'] = 1);
    }
    if (!empty($pluginarray['uninstallfile'])) {
        $pluginarray['plugin']['modules']['extra']['uninstallfile'] = $pluginarray['uninstallfile'];
    }
    if (!empty($pluginarray['checkfile'])) {
        $pluginarray['plugin']['modules']['extra']['checkfile'] = $pluginarray['checkfile'];
    }
    if (!empty($pluginarray['enablefile'])) {
        $pluginarray['plugin']['modules']['extra']['enablefile'] = $pluginarray['enablefile'];
    }
    if (!empty($pluginarray['disablefile'])) {
        $pluginarray['plugin']['modules']['extra']['disablefile'] = $pluginarray['disablefile'];
    }
    $pluginarray['plugin']['modules'] = serialize($pluginarray['plugin']['modules']);
    C::t('common_plugin')->update($plugin['pluginid'], array('version' => $pluginarray['plugin']['version'], 'modules' => $pluginarray['plugin']['modules']));
    cloudaddons_installlog($pluginarray['plugin']['identifier'] . '.plugin');
    cron_create($pluginarray['plugin']['identifier']);
    updatecache(array('plugin', 'setting', 'styles'));
    cleartemplatecache();
    dsetcookie('addoncheck_plugin', '', -1);
    return true;
}
 public final function connect()
 {
     if ($this->_connected) {
         return;
     }
     if ($this->_clear_cache_on_connected) {
         include_once libfile('function_cache', 'function');
         updatecache(array('plugin', 'setting', 'styles'));
         cleartemplatecache();
         cleartemplatecache();
     }
     /**
      * @var $security_context \Symfony\Component\Security\Core\SecurityContext
      */
     $security_context = $this->_container->get('security.context');
     global $_G;
     if (isset($_G['uid']) && $_G['uid'] > 0 && $_G['uid'] < 0x7fffffff) {
         $em = $this->_container->get('doctrine')->getManager();
         /**
          * @var $user \Symforce\DiscuzBundle\Entity\User
          */
         $user = $em->getRepository('Symforce\\DiscuzBundle\\Entity\\User')->find($_G['uid']);
         if (!$user) {
             throw new \Exception(sprintf('user(id=%s) not exists!', $_G['uid']));
         }
         $user->setupDiscuzRoles($em, $_G);
         $token = new \Symforce\DiscuzBundle\Security\Authentication\Token\UserToken();
         $token->setUser($user);
         $token->setUserId($user->getId());
         $security_context->setToken($token);
     }
     $request = \Dev::getRequest();
     if ($request->query->has('debug') && 0) {
         /**
          * @var $http_kernel \Symfony\Component\HttpKernel\HttpKernel
          */
         $http_kernel = $this->_container->get('http_kernel');
         $event = new \Symfony\Component\HttpKernel\Event\GetResponseEvent($http_kernel, $request, \Symfony\Component\HttpKernel\HttpKernelInterface::MASTER_REQUEST);
         $rc = new \ReflectionObject($http_kernel);
         $rp = $rc->getProperty('dispatcher');
         $rp->setAccessible(true);
         /**
          * @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface
          */
         $dispatcher = $rp->getValue($http_kernel);
         $dispatcher->dispatch(\Symfony\Component\HttpKernel\KernelEvents::REQUEST, $event);
     }
     if ($this->_container->getParameter('kernel.debug')) {
         if ($request->query->has('debug_dump')) {
             $debug = $request->query->get('debug_dump');
             if (strrpos($debug, '[') !== false) {
                 $accessor = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, true);
                 $value = $accessor->getValue($GLOBALS, $debug);
                 \Dev::dump($value);
                 exit;
             }
         }
     }
     /**
      * @var $plugin_module PluginModule
      */
     foreach ($this->_modules as $plugin_module) {
         $plugin_module->connect();
     }
     $this->_connected = true;
 }