예제 #1
0
    public function searchHelp($params, $db, $check_only = false)
    {
        if ($check_only) {
            if (empty($params['search']) or empty($params['languages']) or empty($params['fields'])) {
                return false;
            } else {
                return true;
            }
        }
        $className = 'vB_Db_' . $this->db_type . '_QueryBuilder';
        $queryBuilder = new $className($db, false);
        $conditions['languageid'] = $params['languages'];
        $conditions['fieldname'] = $params['fields'];
        $where = "WHERE " . $queryBuilder->conditionsToFilter($conditions);
        foreach ($params['search'] as $word) {
            if (strlen($word) == 1) {
                // searches happen anywhere within a word, so 1 letter searches are useless
                continue;
            }
            $keyword_filters[] = $queryBuilder->conditionsToFilter(array(array('field' => 'text', 'value' => $word, 'operator' => vB_dB_Query::OPERATOR_INCLUDES)));
        }
        if (!empty($keyword_filters)) {
            $where .= ' AND ((' . implode(') OR (', $keyword_filters) . '))';
        }
        $sql = '
		SELECT fieldname, varname FROM ' . TABLE_PREFIX . 'phrase AS phrase
		' . $where . '
		/** searchHelp' . (defined('THIS_SCRIPT') ? '- ' . THIS_SCRIPT : '') . '**/';
        $resultclass = 'vB_dB_' . $this->db_type . '_result';
        $config = vB::get_config();
        if (isset($config['Misc']['debug_sql']) and $config['Misc']['debug_sql']) {
            echo "sql: {$sql}<br />\n";
        }
        $result = new $resultclass($db, $sql);
        return $result;
    }
예제 #2
0
 public function fetchAdminusersFromUsergroup($params, $db, $check_only = false)
 {
     $params = vB::getCleaner()->cleanArray($params, array('ausergroupids' => vB_Cleaner::TYPE_ARRAY_INT, 'usergroupid' => vB_Cleaner::TYPE_INT));
     if ($check_only) {
         return !empty($params['ausergroupids']) and !empty($params['usergroupid']);
     }
     $notinsetsql = '';
     foreach ($params['ausergroupids'] as $ausergroupid) {
         $notinsetsql .= " AND NOT FIND_IN_SET('{$ausergroupid}', membergroupids)";
     }
     $ausergroupidsstr = implode(',', $params['ausergroupids']);
     $sql = "SELECT userid FROM " . TABLE_PREFIX . "user\n\t\t\tWHERE usergroupid NOT IN ('{$ausergroupidsstr}')\n\t\t\t\t{$notinsetsql}\n\t\t\t\tAND (usergroupid = {$params['usergroupid']}\n\t\t\t\tOR FIND_IN_SET('{$params['usergroupid']}', membergroupids))";
     $resultclass = 'vB_dB_' . $this->db_type . '_result';
     $config = vB::get_config();
     if (isset($config['Misc']['debug_sql']) and $config['Misc']['debug_sql']) {
         echo "sql: {$sql}<br />\n";
     }
     $result = new $resultclass($db, $sql);
     return $result;
 }
예제 #3
0
 /**
  * Used to map maximumsocialgroups limit permission to the new maxchannels channel limit permission.
  * We basically pass everything globally defined to sg channel node permissions.
  */
 public function updateUGPMaxSGs($params, $db, $check_only = false)
 {
     if ($check_only) {
         // only array to update
         if (!isset($params['groups']) or !is_array($params['groups']) or empty($params['groups'])) {
             return false;
         }
         // ugp info should be ugpid => val
         foreach ($params['groups'] as $ugpid => $param) {
             if (!is_numeric($ugpid)) {
                 return false;
             }
             if (!is_numeric($param)) {
                 return false;
             }
         }
         return true;
     } else {
         $sql = "UPDATE " . TABLE_PREFIX . "permission SET maxchannels = CASE groupid\n";
         foreach ($params['groups'] as $id => $val) {
             $sql .= "WHEN {$id} THEN {$val}\n";
         }
         $sql .= "END\n\t\t\t\tWHERE groupid IN (" . implode(", ", array_keys($params['groups'])) . ") AND nodeid = " . vB_Api::instanceInternal('content_channel')->fetchChannelIdByGUID(vB_Channel::DEFAULT_SOCIALGROUP_PARENT) . "\n\t\t\t/** getSubscriptionUsersLog" . (defined('THIS_SCRIPT') ? '- ' . THIS_SCRIPT : '') . "**/";
         $resultclass = 'vB_dB_' . $this->db_type . '_result';
         $config = vB::get_config();
         if (isset($config['Misc']['debug_sql']) and $config['Misc']['debug_sql']) {
             echo "sql: {$sql}<br />\n";
         }
         $result = new $resultclass($db, $sql);
         return $result;
     }
 }