-- патч, позволяющий в mnogosearch делать поиск по критерию "URL не равен" -- добавляется новая константа UDM_LIMIT_NOT_URL (by BOLK, 2005.08.14) --- php_mnogo.c.old 2005-08-14 17:16:25.996135648 +0400 +++ php_mnogo.c 2005-08-14 17:20:08.024382224 +0400 @@ -97,6 +97,7 @@ #define UDM_LIMIT_CAT 4 #define UDM_LIMIT_DATE 5 #define UDM_LIMIT_TYPE 6 +#define UDM_LIMIT_NOT_URL 128 /* word match type */ #define UDM_MATCH_WORD 0 @@ -333,6 +334,7 @@ /* udm_add_search_limit constants */ REGISTER_LONG_CONSTANT("UDM_LIMIT_CAT", UDM_LIMIT_CAT,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_URL", UDM_LIMIT_URL,CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("UDM_LIMIT_NOT_URL", UDM_LIMIT_NOT_URL,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_TAG", UDM_LIMIT_TAG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_LANG", UDM_LIMIT_LANG,CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("UDM_LIMIT_DATE", UDM_LIMIT_DATE,CONST_CS | CONST_PERSISTENT); @@ -1367,7 +1369,16 @@ UdmAddURLLimit(Agent->Conf,val); #endif break; - + + + case UDM_LIMIT_NOT_URL: +#if UDM_VERSION_ID >= 30204 + UdmVarListAddStr(&Agent->Conf->Vars,"ul_not",val); +#else + UdmAddURLLimit(Agent->Conf,val); +#endif + break; + case UDM_LIMIT_TAG: #if UDM_VERSION_ID >= 30204 UdmVarListAddStr(&Agent->Conf->Vars,"t",val); --- src/sql.c.old 2005-08-14 17:25:07.324881632 +0400 +++ src/sql.c 2005-08-14 17:25:40.192884936 +0400 @@ -180,6 +180,28 @@ sprintf(UDM_STREND(urlstr),"url.url LIKE '%s%s%%')", first, val); UdmURLFree(&URL); } + + if(!strcmp(var,"ul_not")) + { + UDM_URL URL; + const char *first = "%"; + + UdmURLInit(&URL); + UdmURLParse(&URL,val); + urlstr=(char*)UdmRealloc(urlstr,strlen(urlstr)+strlen(val)+50); + + if((URL.schema != NULL) && (URL.hostinfo != NULL)) + { + first = ""; + } + if(urlstr[0])strcpy(UDM_STREND(urlstr)-1," OR "); + else strcat(urlstr,"("); + if(db->DBType==UDM_DB_PGSQL) + sprintf(UDM_STREND(urlstr),"(url.url || '') NOT LIKE '%s%s%%')", first, val); + else + sprintf(UDM_STREND(urlstr),"url.url NOT LIKE '%s%s%%')", first, val); + UdmURLFree(&URL); + } if(!strcmp(var,"u")) {