mirror of https://github.com/acanas/swad-core.git
Version 21.2.2: Sep 14, 2021 Queries moved to module swad_browser_database.
This commit is contained in:
parent
eb872c73a3
commit
ef9d714feb
214
swad_browser.c
214
swad_browser.c
|
@ -1330,10 +1330,7 @@ static void Brw_WriteSmallLinkToDownloadFile (const char *URL,
|
||||||
static bool Brw_GetParamPublicFile (void);
|
static bool Brw_GetParamPublicFile (void);
|
||||||
static Brw_License_t Brw_GetParLicense (void);
|
static Brw_License_t Brw_GetParLicense (void);
|
||||||
static void Brw_GetFileViewsFromLoggedUsrs (struct FileMetadata *FileMetadata);
|
static void Brw_GetFileViewsFromLoggedUsrs (struct FileMetadata *FileMetadata);
|
||||||
static unsigned Brw_DB_GetFileViewsFromNonLoggedUsrs (long FilCod);
|
|
||||||
static unsigned Brw_GetFileViewsFromMe (long FilCod);
|
static unsigned Brw_GetFileViewsFromMe (long FilCod);
|
||||||
static void Brw_UpdateFileViews (unsigned NumViews,long FilCod);
|
|
||||||
static bool Brw_GetIfFolderHasPublicFiles (const char Path[PATH_MAX + 1]);
|
|
||||||
|
|
||||||
static void Brw_ChangeFileOrFolderHiddenInDB (const char Path[PATH_MAX + 1],bool IsHidden);
|
static void Brw_ChangeFileOrFolderHiddenInDB (const char Path[PATH_MAX + 1],bool IsHidden);
|
||||||
|
|
||||||
|
@ -4513,8 +4510,8 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
|
||||||
/***** Is this row public or private? *****/
|
/***** Is this row public or private? *****/
|
||||||
if (SeeDocsZone || AdminDocsZone || SharedZone)
|
if (SeeDocsZone || AdminDocsZone || SharedZone)
|
||||||
{
|
{
|
||||||
RowSetAsPublic = (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) ? Brw_GetIfFolderHasPublicFiles (Gbl.FileBrowser.FilFolLnk.Full) :
|
RowSetAsPublic = (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) ? Brw_DB_GetIfFolderHasPublicFiles (Gbl.FileBrowser.FilFolLnk.Full) :
|
||||||
FileMetadata.IsPublic;
|
FileMetadata.IsPublic;
|
||||||
if (Gbl.FileBrowser.ShowOnlyPublicFiles && !RowSetAsPublic)
|
if (Gbl.FileBrowser.ShowOnlyPublicFiles && !RowSetAsPublic)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -8244,24 +8241,24 @@ void Brw_ShowFileMetadata (void)
|
||||||
case Brw_ADMI_DOC_CRS:
|
case Brw_ADMI_DOC_CRS:
|
||||||
case Brw_ADMI_DOC_GRP:
|
case Brw_ADMI_DOC_GRP:
|
||||||
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
|
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_DOCUMENT_FILE,
|
||||||
FileMetadata.FilCod);
|
FileMetadata.FilCod);
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_TCH_CRS:
|
case Brw_ADMI_TCH_CRS:
|
||||||
case Brw_ADMI_TCH_GRP:
|
case Brw_ADMI_TCH_GRP:
|
||||||
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
|
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_TEACHERS_FILE,
|
||||||
FileMetadata.FilCod);
|
FileMetadata.FilCod);
|
||||||
break;
|
break;
|
||||||
case Brw_ADMI_SHR_CRS:
|
case Brw_ADMI_SHR_CRS:
|
||||||
case Brw_ADMI_SHR_GRP:
|
case Brw_ADMI_SHR_GRP:
|
||||||
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
|
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_SHARED_FILE,
|
||||||
FileMetadata.FilCod);
|
FileMetadata.FilCod);
|
||||||
break;
|
break;
|
||||||
case Brw_SHOW_MRK_CRS:
|
case Brw_SHOW_MRK_CRS:
|
||||||
case Brw_SHOW_MRK_GRP:
|
case Brw_SHOW_MRK_GRP:
|
||||||
case Brw_ADMI_MRK_CRS:
|
case Brw_ADMI_MRK_CRS:
|
||||||
case Brw_ADMI_MRK_GRP:
|
case Brw_ADMI_MRK_GRP:
|
||||||
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
|
Ntf_DB_MarkNotifAsRemoved (Ntf_EVENT_MARKS_FILE,
|
||||||
FileMetadata.FilCod);
|
FileMetadata.FilCod);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -8784,34 +8781,6 @@ static Brw_License_t Brw_GetParLicense (void)
|
||||||
(unsigned long) Brw_LICENSE_UNKNOWN);
|
(unsigned long) Brw_LICENSE_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********************** Get file code using its path ************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
// Path is the full path in tree
|
|
||||||
// Example: descarga/folder/file.pdf
|
|
||||||
|
|
||||||
long Brw_GetFilCodByPath (const char *Path,bool OnlyIfPublic)
|
|
||||||
{
|
|
||||||
long Cod = Brw_GetCodForFileBrowser ();
|
|
||||||
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
|
||||||
|
|
||||||
/***** Get code of a file from database *****/
|
|
||||||
return DB_QuerySELECTCode ("can not get file code",
|
|
||||||
"SELECT FilCod"
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE FileBrowser=%u"
|
|
||||||
" AND Cod=%ld"
|
|
||||||
" AND ZoneUsrCod=%ld"
|
|
||||||
" AND Path='%s'"
|
|
||||||
"%s",
|
|
||||||
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
|
||||||
Cod,
|
|
||||||
ZoneUsrCod,
|
|
||||||
Path,
|
|
||||||
OnlyIfPublic ? " AND Public='Y'" :
|
|
||||||
"");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Get file metadata using its path **********************/
|
/********************* Get file metadata using its path **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -8820,32 +8789,12 @@ long Brw_GetFilCodByPath (const char *Path,bool OnlyIfPublic)
|
||||||
|
|
||||||
void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata)
|
void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata)
|
||||||
{
|
{
|
||||||
long Cod = Brw_GetCodForFileBrowser ();
|
|
||||||
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
|
||||||
MYSQL_RES *mysql_res;
|
MYSQL_RES *mysql_res;
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
/***** Get metadata of a file from database *****/
|
/***** Get metadata of a file from database *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get file metadata",
|
if (Brw_DB_GetFileMetadataByPath (&mysql_res,Gbl.FileBrowser.FilFolLnk.Full))
|
||||||
"SELECT FilCod," // row[0]
|
|
||||||
"FileBrowser," // row[1]
|
|
||||||
"Cod," // row[2]
|
|
||||||
"ZoneUsrCod," // row[3]
|
|
||||||
"PublisherUsrCod," // row[4]
|
|
||||||
"FileType," // row[5]
|
|
||||||
"Path," // row[6]
|
|
||||||
"Hidden," // row[7]
|
|
||||||
"Public," // row[8]
|
|
||||||
"License" // row[9]
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE FileBrowser=%u"
|
|
||||||
" AND Cod=%ld"
|
|
||||||
" AND ZoneUsrCod=%ld"
|
|
||||||
" AND Path='%s'",
|
|
||||||
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
|
||||||
Cod,ZoneUsrCod,
|
|
||||||
Gbl.FileBrowser.FilFolLnk.Full))
|
|
||||||
{
|
{
|
||||||
/* Get row */
|
/* Get row */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -8969,20 +8918,7 @@ void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata)
|
||||||
unsigned UnsignedNum;
|
unsigned UnsignedNum;
|
||||||
|
|
||||||
/***** Get metadata of a file from database *****/
|
/***** Get metadata of a file from database *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get file metadata",
|
if (Brw_DB_GetFileMetadataByCod (&mysql_res,FileMetadata->FilCod))
|
||||||
"SELECT FilCod," // row[0]
|
|
||||||
"FileBrowser," // row[1]
|
|
||||||
"Cod," // row[2]
|
|
||||||
"ZoneUsrCod," // row[3]
|
|
||||||
"PublisherUsrCod," // row[4]
|
|
||||||
"FileType," // row[5]
|
|
||||||
"Path," // row[6]
|
|
||||||
"Hidden," // row[7]
|
|
||||||
"Public," // row[8]
|
|
||||||
"License" // row[9]
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE FilCod=%ld",
|
|
||||||
FileMetadata->FilCod))
|
|
||||||
{
|
{
|
||||||
/* Get row */
|
/* Get row */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -9160,7 +9096,7 @@ void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata)
|
||||||
FileMetadata->NumMyViews = FileMetadata->NumPublicViews;
|
FileMetadata->NumMyViews = FileMetadata->NumPublicViews;
|
||||||
|
|
||||||
/***** Update number of my views *****/
|
/***** Update number of my views *****/
|
||||||
Brw_UpdateFileViews (FileMetadata->NumMyViews,FileMetadata->FilCod);
|
Brw_DB_UpdateFileViews (FileMetadata->NumMyViews,FileMetadata->FilCod);
|
||||||
|
|
||||||
/***** Increment number of file views in my user's figures *****/
|
/***** Increment number of file views in my user's figures *****/
|
||||||
if (Gbl.Usrs.Me.Logged)
|
if (Gbl.Usrs.Me.Logged)
|
||||||
|
@ -9180,21 +9116,7 @@ void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata)
|
||||||
void Brw_UpdateMyFileViews (long FilCod)
|
void Brw_UpdateMyFileViews (long FilCod)
|
||||||
{
|
{
|
||||||
/***** Update number of my views *****/
|
/***** Update number of my views *****/
|
||||||
Brw_UpdateFileViews (Brw_GetFileViewsFromMe (FilCod),FilCod);
|
Brw_DB_UpdateFileViews (Brw_GetFileViewsFromMe (FilCod),FilCod);
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get number of file views from a user *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned Brw_DB_GetNumFileViewsUsr (long UsrCod)
|
|
||||||
{
|
|
||||||
/***** Get number of filw views *****/
|
|
||||||
return DB_QuerySELECTUnsigned ("can not get number of file views",
|
|
||||||
"SELECT SUM(NumViews)"
|
|
||||||
" FROM brw_views"
|
|
||||||
" WHERE UsrCod=%ld",
|
|
||||||
UsrCod);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -9211,14 +9133,7 @@ static void Brw_GetFileViewsFromLoggedUsrs (struct FileMetadata *FileMetadata)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
|
|
||||||
/***** Get number total of views from logged users *****/
|
/***** Get number total of views from logged users *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get number of views of a file"
|
if (Brw_DB_GetFileViewsFromLoggedUsrs (&mysql_res,FileMetadata->FilCod))
|
||||||
" from logged users",
|
|
||||||
"SELECT COUNT(DISTINCT UsrCod)," // row[0]
|
|
||||||
"SUM(NumViews)" // row[1]
|
|
||||||
" FROM brw_views"
|
|
||||||
" WHERE FilCod=%ld"
|
|
||||||
" AND UsrCod>0",
|
|
||||||
FileMetadata->FilCod))
|
|
||||||
{
|
{
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
@ -9242,21 +9157,6 @@ static void Brw_GetFileViewsFromLoggedUsrs (struct FileMetadata *FileMetadata)
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get number of public views of a file *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static unsigned Brw_DB_GetFileViewsFromNonLoggedUsrs (long FilCod)
|
|
||||||
{
|
|
||||||
return
|
|
||||||
DB_QuerySELECTUnsigned ("can not get number of public views of a file",
|
|
||||||
"SELECT SUM(NumViews)"
|
|
||||||
" FROM brw_views"
|
|
||||||
" WHERE FilCod=%ld"
|
|
||||||
" AND UsrCod<=0",
|
|
||||||
FilCod);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************************** Get file views from me ***************************/
|
/************************** Get file views from me ***************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -9268,12 +9168,7 @@ static unsigned Brw_GetFileViewsFromMe (long FilCod)
|
||||||
unsigned NumMyViews;
|
unsigned NumMyViews;
|
||||||
|
|
||||||
/***** Get number of my views *****/
|
/***** Get number of my views *****/
|
||||||
if (DB_QuerySELECT (&mysql_res,"can not get your number of views of a file",
|
if (Brw_DB_GetFileViewsFromMe (&mysql_res,FilCod))
|
||||||
"SELECT NumViews" // row[0]
|
|
||||||
" FROM brw_views"
|
|
||||||
" WHERE FilCod=%ld"
|
|
||||||
" AND UsrCod=%ld",
|
|
||||||
FilCod,Gbl.Usrs.Me.UsrDat.UsrCod))
|
|
||||||
{
|
{
|
||||||
/* Get number of my views */
|
/* Get number of my views */
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
@ -9289,91 +9184,6 @@ static unsigned Brw_GetFileViewsFromMe (long FilCod)
|
||||||
return NumMyViews;
|
return NumMyViews;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*************************** Update file views *******************************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static void Brw_UpdateFileViews (unsigned NumViews,long FilCod)
|
|
||||||
{
|
|
||||||
if (NumViews)
|
|
||||||
/* Update number of views in database */
|
|
||||||
DB_QueryUPDATE ("can not update number of views of a file",
|
|
||||||
"UPDATE brw_views"
|
|
||||||
" SET NumViews=NumViews+1"
|
|
||||||
" WHERE FilCod=%ld"
|
|
||||||
" AND UsrCod=%ld",
|
|
||||||
FilCod,Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
else // NumViews == 0
|
|
||||||
/* Insert number of views in database */
|
|
||||||
DB_QueryINSERT ("can not insert number of views of a file",
|
|
||||||
"INSERT INTO brw_views"
|
|
||||||
" (FilCod,UsrCod,NumViews)"
|
|
||||||
" VALUES"
|
|
||||||
" (%ld,%ld,1)",
|
|
||||||
FilCod,
|
|
||||||
Gbl.Usrs.Me.UsrDat.UsrCod);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********** Check if a folder contains file(s) marked as public *************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
static bool Brw_GetIfFolderHasPublicFiles (const char Path[PATH_MAX + 1])
|
|
||||||
{
|
|
||||||
long Cod = Brw_GetCodForFileBrowser ();
|
|
||||||
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
|
||||||
|
|
||||||
/***** Get if a file or folder is public from database *****/
|
|
||||||
return (DB_QueryCOUNT ("can not check if a folder contains public files",
|
|
||||||
"SELECT COUNT(*)"
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE FileBrowser=%u"
|
|
||||||
" AND Cod=%ld"
|
|
||||||
" AND ZoneUsrCod=%ld"
|
|
||||||
" AND Path LIKE '%s/%%'"
|
|
||||||
" AND Public='Y'",
|
|
||||||
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
|
||||||
Cod,ZoneUsrCod,
|
|
||||||
Path) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/*********************** Get number of files from a user *********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned Brw_DB_GetNumFilesUsr (long UsrCod)
|
|
||||||
{
|
|
||||||
/***** Get current number of files published by a user from database *****/
|
|
||||||
return (unsigned)
|
|
||||||
DB_QueryCOUNT ("can not get number of files from a user",
|
|
||||||
"SELECT COUNT(*)"
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE PublisherUsrCod=%ld"
|
|
||||||
" AND FileType IN (%u,%u)",
|
|
||||||
UsrCod,
|
|
||||||
(unsigned) Brw_IS_FILE,
|
|
||||||
(unsigned) Brw_IS_UNKNOWN); // Unknown entries are counted as files
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Get number of public files from a user ******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned Brw_DB_GetNumPublicFilesUsr (long UsrCod)
|
|
||||||
{
|
|
||||||
/***** Get current number of public files published by a user from database *****/
|
|
||||||
return (unsigned)
|
|
||||||
DB_QueryCOUNT ("can not get number of public files from a user",
|
|
||||||
"SELECT COUNT(*)"
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE PublisherUsrCod=%ld"
|
|
||||||
" AND FileType IN (%u,%u)"
|
|
||||||
" AND Public='Y'",
|
|
||||||
UsrCod,
|
|
||||||
(unsigned) Brw_IS_FILE,
|
|
||||||
(unsigned) Brw_IS_UNKNOWN); // Unknown entries are counted as files
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Change hiddeness of file in the database ******************/
|
/***************** Change hiddeness of file in the database ******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -211,15 +211,11 @@ void Brw_ShowFileMetadata (void);
|
||||||
void Brw_DownloadFile (void);
|
void Brw_DownloadFile (void);
|
||||||
void Brw_GetLinkToDownloadFile (const char *PathInTree,const char *FileName,char *URL);
|
void Brw_GetLinkToDownloadFile (const char *PathInTree,const char *FileName,char *URL);
|
||||||
void Brw_ChgFileMetadata (void);
|
void Brw_ChgFileMetadata (void);
|
||||||
long Brw_GetFilCodByPath (const char *Path,bool OnlyIfPublic);
|
|
||||||
void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata);
|
void Brw_GetFileMetadataByPath (struct FileMetadata *FileMetadata);
|
||||||
void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata);
|
void Brw_GetFileMetadataByCod (struct FileMetadata *FileMetadata);
|
||||||
bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata);
|
bool Brw_GetFileTypeSizeAndDate (struct FileMetadata *FileMetadata);
|
||||||
void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata);
|
void Brw_GetAndUpdateFileViews (struct FileMetadata *FileMetadata);
|
||||||
void Brw_UpdateMyFileViews (long FilCod);
|
void Brw_UpdateMyFileViews (long FilCod);
|
||||||
unsigned Brw_DB_GetNumFileViewsUsr (long UsrCod);
|
|
||||||
unsigned Brw_DB_GetNumFilesUsr (long UsrCod);
|
|
||||||
unsigned Brw_DB_GetNumPublicFilesUsr (long UsrCod);
|
|
||||||
|
|
||||||
long Brw_GetZoneUsrCodForFileBrowser (void);
|
long Brw_GetZoneUsrCodForFileBrowser (void);
|
||||||
void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
void Brw_GetCrsGrpFromFileMetadata (Brw_FileBrowser_t FileBrowser,long Cod,
|
||||||
|
|
|
@ -166,36 +166,109 @@ static const Brw_FileBrowser_t Brw_FileBrowserForDB_expanded_folders[Brw_NUM_TYP
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*********************** Get folders of assignments **************************/
|
/*********************** Get file code using its path ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
// Get folder of an assignment when:
|
// Path is the full path in tree
|
||||||
// 1. The assignment is visible (not hidden)
|
// Example: descarga/folder/file.pdf
|
||||||
// 2. ...and the folder name is not empty (the teacher has set that the user must send work(s) for that assignment)
|
|
||||||
// 3. ...the assignment is not restricted to groups or (if restricted to groups), the owner of zone belong to any of the groups
|
|
||||||
|
|
||||||
unsigned Brw_DB_GetFoldersAssignments (MYSQL_RES **mysql_res,long ZoneUsrCod)
|
long Brw_DB_GetFilCodByPath (const char *Path,bool OnlyIfPublic)
|
||||||
|
{
|
||||||
|
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
|
long Cod = Brw_GetCodForFileBrowser ();
|
||||||
|
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
||||||
|
|
||||||
|
return DB_QuerySELECTCode ("can not get file code",
|
||||||
|
"SELECT FilCod"
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE FileBrowser=%u"
|
||||||
|
" AND Cod=%ld"
|
||||||
|
" AND ZoneUsrCod=%ld"
|
||||||
|
" AND Path='%s'"
|
||||||
|
"%s",
|
||||||
|
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
||||||
|
Cod,
|
||||||
|
ZoneUsrCod,
|
||||||
|
Path,
|
||||||
|
OnlyIfPublic ? " AND Public='Y'" :
|
||||||
|
"");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************* Get file metadata using its path **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// This function only gets metadata stored in table files,
|
||||||
|
// does not get size, time, numviews...
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFileMetadataByPath (MYSQL_RES **mysql_res,const char *Path)
|
||||||
|
{
|
||||||
|
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
|
long Cod = Brw_GetCodForFileBrowser ();
|
||||||
|
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
||||||
|
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get file metadata",
|
||||||
|
"SELECT FilCod," // row[0]
|
||||||
|
"FileBrowser," // row[1]
|
||||||
|
"Cod," // row[2]
|
||||||
|
"ZoneUsrCod," // row[3]
|
||||||
|
"PublisherUsrCod," // row[4]
|
||||||
|
"FileType," // row[5]
|
||||||
|
"Path," // row[6]
|
||||||
|
"Hidden," // row[7]
|
||||||
|
"Public," // row[8]
|
||||||
|
"License" // row[9]
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE FileBrowser=%u"
|
||||||
|
" AND Cod=%ld"
|
||||||
|
" AND ZoneUsrCod=%ld"
|
||||||
|
" AND Path='%s'",
|
||||||
|
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
||||||
|
Cod,
|
||||||
|
ZoneUsrCod,
|
||||||
|
Path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********************* Get file metadata using its code **********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// FileMetadata.FilCod must be filled
|
||||||
|
// This function only gets metadata stored in table files,
|
||||||
|
// does not get size, time, numviews...
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFileMetadataByCod (MYSQL_RES **mysql_res,long FilCod)
|
||||||
{
|
{
|
||||||
return (unsigned)
|
return (unsigned)
|
||||||
DB_QuerySELECT (mysql_res,"can not get folders of assignments",
|
DB_QuerySELECT (mysql_res,"can not get file metadata",
|
||||||
"SELECT Folder" // row[0]
|
"SELECT FilCod," // row[0]
|
||||||
" FROM asg_assignments"
|
"FileBrowser," // row[1]
|
||||||
" WHERE CrsCod=%ld"
|
"Cod," // row[2]
|
||||||
" AND Hidden='N'"
|
"ZoneUsrCod," // row[3]
|
||||||
" AND Folder<>''"
|
"PublisherUsrCod," // row[4]
|
||||||
" AND ("
|
"FileType," // row[5]
|
||||||
"AsgCod NOT IN"
|
"Path," // row[6]
|
||||||
" (SELECT AsgCod"
|
"Hidden," // row[7]
|
||||||
" FROM asg_groups)"
|
"Public," // row[8]
|
||||||
" OR "
|
"License" // row[9]
|
||||||
"AsgCod IN"
|
" FROM brw_files"
|
||||||
" (SELECT asg_groups.AsgCod"
|
" WHERE FilCod=%ld",
|
||||||
" FROM grp_users,"
|
FilCod);
|
||||||
"asg_groups"
|
}
|
||||||
" WHERE grp_users.UsrCod=%ld"
|
|
||||||
" AND asg_groups.GrpCod=grp_users.GrpCod)"
|
/*****************************************************************************/
|
||||||
")",
|
/************ Get current number of files published by a user ****************/
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
/*****************************************************************************/
|
||||||
ZoneUsrCod);
|
|
||||||
|
unsigned Brw_DB_GetNumFilesUsr (long UsrCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QueryCOUNT ("can not get number of files from a user",
|
||||||
|
"SELECT COUNT(*)"
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE PublisherUsrCod=%ld"
|
||||||
|
" AND FileType IN (%u,%u)",
|
||||||
|
UsrCod,
|
||||||
|
(unsigned) Brw_IS_FILE,
|
||||||
|
(unsigned) Brw_IS_UNKNOWN); // Unknown entries are counted as files
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1015,6 +1088,195 @@ void Brw_DB_RemoveUsrFiles (long UsrCod)
|
||||||
UsrCod);
|
UsrCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********** Check if a folder contains file(s) marked as public *************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
bool Brw_DB_GetIfFolderHasPublicFiles (const char Path[PATH_MAX + 1])
|
||||||
|
{
|
||||||
|
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
|
||||||
|
long Cod = Brw_GetCodForFileBrowser ();
|
||||||
|
long ZoneUsrCod = Brw_GetZoneUsrCodForFileBrowser ();
|
||||||
|
|
||||||
|
/***** Get if a file or folder is public from database *****/
|
||||||
|
return (DB_QueryCOUNT ("can not check if a folder contains public files",
|
||||||
|
"SELECT COUNT(*)"
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE FileBrowser=%u"
|
||||||
|
" AND Cod=%ld"
|
||||||
|
" AND ZoneUsrCod=%ld"
|
||||||
|
" AND Path LIKE '%s/%%'"
|
||||||
|
" AND Public='Y'",
|
||||||
|
(unsigned) Brw_FileBrowserForDB_files[Gbl.FileBrowser.Type],
|
||||||
|
Cod,
|
||||||
|
ZoneUsrCod,
|
||||||
|
Path) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/********** Get current number of public files published by a user ***********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetNumPublicFilesUsr (long UsrCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QueryCOUNT ("can not get number of public files from a user",
|
||||||
|
"SELECT COUNT(*)"
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE PublisherUsrCod=%ld"
|
||||||
|
" AND FileType IN (%u,%u)"
|
||||||
|
" AND Public='Y'",
|
||||||
|
UsrCod,
|
||||||
|
(unsigned) Brw_IS_FILE,
|
||||||
|
(unsigned) Brw_IS_UNKNOWN); // Unknown entries are counted as files
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/***************** Get number of OERs depending on license *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetNumberOfPublicFiles (MYSQL_RES **mysql_res,Brw_License_t License)
|
||||||
|
{
|
||||||
|
switch (Gbl.Scope.Current)
|
||||||
|
{
|
||||||
|
case HieLvl_SYS:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE License=%u"
|
||||||
|
" GROUP BY Public",
|
||||||
|
(unsigned) License);
|
||||||
|
case HieLvl_CTY:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT brw_files.Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM ins_instits,"
|
||||||
|
"ctr_centers,"
|
||||||
|
"deg_degrees,"
|
||||||
|
"crs_courses,"
|
||||||
|
"brw_files"
|
||||||
|
" WHERE ins_instits.CtyCod=%ld"
|
||||||
|
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||||
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
|
" AND crs_courses.CrsCod=brw_files.Cod"
|
||||||
|
" AND brw_files.FileBrowser IN (%u,%u)"
|
||||||
|
" AND brw_files.License=%u"
|
||||||
|
" GROUP BY brw_files.Public",
|
||||||
|
Gbl.Hierarchy.Cty.CtyCod,
|
||||||
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
(unsigned) Brw_ADMI_SHR_CRS,
|
||||||
|
(unsigned) License);
|
||||||
|
case HieLvl_INS:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT brw_files.Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM ctr_centers,"
|
||||||
|
"deg_degrees,"
|
||||||
|
"crs_courses,"
|
||||||
|
"brw_files"
|
||||||
|
" WHERE ctr_centers.InsCod=%ld"
|
||||||
|
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||||
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
|
" AND crs_courses.CrsCod=brw_files.Cod"
|
||||||
|
" AND brw_files.FileBrowser IN (%u,%u)"
|
||||||
|
" AND brw_files.License=%u"
|
||||||
|
" GROUP BY brw_files.Public",
|
||||||
|
Gbl.Hierarchy.Ins.InsCod,
|
||||||
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
(unsigned) Brw_ADMI_SHR_CRS,
|
||||||
|
(unsigned) License);
|
||||||
|
case HieLvl_CTR:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT brw_files.Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM deg_degrees,"
|
||||||
|
"crs_courses,"
|
||||||
|
"brw_files"
|
||||||
|
" WHERE deg_degrees.CtrCod=%ld"
|
||||||
|
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||||
|
" AND crs_courses.CrsCod=brw_files.Cod"
|
||||||
|
" AND brw_files.FileBrowser IN (%u,%u)"
|
||||||
|
" AND brw_files.License=%u"
|
||||||
|
" GROUP BY brw_files.Public",
|
||||||
|
Gbl.Hierarchy.Ctr.CtrCod,
|
||||||
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
(unsigned) Brw_ADMI_SHR_CRS,
|
||||||
|
(unsigned) License);
|
||||||
|
case HieLvl_DEG:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT brw_files.Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM crs_courses,"
|
||||||
|
"brw_files"
|
||||||
|
" WHERE crs_courses.DegCod=%ld"
|
||||||
|
" AND crs_courses.CrsCod=brw_files.Cod"
|
||||||
|
" AND brw_files.FileBrowser IN (%u,%u)"
|
||||||
|
" AND brw_files.License=%u"
|
||||||
|
" GROUP BY brw_files.Public",
|
||||||
|
Gbl.Hierarchy.Deg.DegCod,
|
||||||
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
(unsigned) Brw_ADMI_SHR_CRS,
|
||||||
|
(unsigned) License);
|
||||||
|
case HieLvl_CRS:
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
||||||
|
"SELECT Public," // row[0]
|
||||||
|
"COUNT(*)" // row[1]
|
||||||
|
" FROM brw_files"
|
||||||
|
" WHERE Cod=%ld"
|
||||||
|
" AND FileBrowser IN (%u,%u)"
|
||||||
|
" AND License=%u"
|
||||||
|
" GROUP BY Public",
|
||||||
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
(unsigned) Brw_ADMI_DOC_CRS,
|
||||||
|
(unsigned) Brw_ADMI_SHR_CRS,
|
||||||
|
(unsigned) License);
|
||||||
|
default:
|
||||||
|
Err_WrongScopeExit ();
|
||||||
|
return 0; // Not reached
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*********************** Get folders of assignments **************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
// Get folder of an assignment when:
|
||||||
|
// 1. The assignment is visible (not hidden)
|
||||||
|
// 2. ...and the folder name is not empty (the teacher has set that the user must send work(s) for that assignment)
|
||||||
|
// 3. ...the assignment is not restricted to groups or (if restricted to groups), the owner of zone belong to any of the groups
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFoldersAssignments (MYSQL_RES **mysql_res,long ZoneUsrCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get folders of assignments",
|
||||||
|
"SELECT Folder" // row[0]
|
||||||
|
" FROM asg_assignments"
|
||||||
|
" WHERE CrsCod=%ld"
|
||||||
|
" AND Hidden='N'"
|
||||||
|
" AND Folder<>''"
|
||||||
|
" AND ("
|
||||||
|
"AsgCod NOT IN"
|
||||||
|
" (SELECT AsgCod"
|
||||||
|
" FROM asg_groups)"
|
||||||
|
" OR "
|
||||||
|
"AsgCod IN"
|
||||||
|
" (SELECT asg_groups.AsgCod"
|
||||||
|
" FROM grp_users,"
|
||||||
|
"asg_groups"
|
||||||
|
" WHERE grp_users.UsrCod=%ld"
|
||||||
|
" AND asg_groups.GrpCod=grp_users.GrpCod)"
|
||||||
|
")",
|
||||||
|
Gbl.Hierarchy.Crs.CrsCod,
|
||||||
|
ZoneUsrCod);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************ Update the date of my last access to file browser **************/
|
/************ Update the date of my last access to file browser **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -1072,6 +1334,94 @@ unsigned Brw_DB_GetGrpLastAccFileBrowser (MYSQL_RES **mysql_res,const char *Fiel
|
||||||
Gbl.Hierarchy.Crs.CrsCod);
|
Gbl.Hierarchy.Crs.CrsCod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*************************** Update file views *******************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Brw_DB_UpdateFileViews (unsigned NumViews,long FilCod)
|
||||||
|
{
|
||||||
|
if (NumViews)
|
||||||
|
/* Update number of views in database */
|
||||||
|
DB_QueryUPDATE ("can not update number of views of a file",
|
||||||
|
"UPDATE brw_views"
|
||||||
|
" SET NumViews=NumViews+1"
|
||||||
|
" WHERE FilCod=%ld"
|
||||||
|
" AND UsrCod=%ld",
|
||||||
|
FilCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
else // NumViews == 0
|
||||||
|
/* Insert number of views in database */
|
||||||
|
DB_QueryINSERT ("can not insert number of views of a file",
|
||||||
|
"INSERT INTO brw_views"
|
||||||
|
" (FilCod,UsrCod,NumViews)"
|
||||||
|
" VALUES"
|
||||||
|
" (%ld,%ld,1)",
|
||||||
|
FilCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/************************** Get file views from me ***************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFileViewsFromMe (MYSQL_RES **mysql_res,long FilCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get your number of views of a file",
|
||||||
|
"SELECT NumViews" // row[0]
|
||||||
|
" FROM brw_views"
|
||||||
|
" WHERE FilCod=%ld"
|
||||||
|
" AND UsrCod=%ld",
|
||||||
|
FilCod,
|
||||||
|
Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Get file views from logged users ***********************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFileViewsFromLoggedUsrs (MYSQL_RES **mysql_res,long FilCod)
|
||||||
|
{
|
||||||
|
return (unsigned)
|
||||||
|
DB_QuerySELECT (mysql_res,"can not get number of views of a file"
|
||||||
|
" from logged users",
|
||||||
|
"SELECT COUNT(DISTINCT UsrCod)," // row[0]
|
||||||
|
"SUM(NumViews)" // row[1]
|
||||||
|
" FROM brw_views"
|
||||||
|
" WHERE FilCod=%ld"
|
||||||
|
" AND UsrCod>0",
|
||||||
|
FilCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Get number of public views of a file *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetFileViewsFromNonLoggedUsrs (long FilCod)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
DB_QuerySELECTUnsigned ("can not get number of public views of a file",
|
||||||
|
"SELECT SUM(NumViews)"
|
||||||
|
" FROM brw_views"
|
||||||
|
" WHERE FilCod=%ld"
|
||||||
|
" AND UsrCod<=0",
|
||||||
|
FilCod);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******************** Get number of file views from a user *******************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
unsigned Brw_DB_GetNumFileViewsUsr (long UsrCod)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
DB_QuerySELECTUnsigned ("can not get number of file views",
|
||||||
|
"SELECT SUM(NumViews)"
|
||||||
|
" FROM brw_views"
|
||||||
|
" WHERE UsrCod=%ld",
|
||||||
|
UsrCod);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** Check if a file / folder from is set as hidden ***************/
|
/************** Check if a file / folder from is set as hidden ***************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -2540,116 +2890,3 @@ void Brw_DB_GetSizeOfFileBrowser (MYSQL_RES **mysql_res,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/***************** Get number of OERs depending on license *******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
unsigned Brw_DB_GetNumberOfOERs (MYSQL_RES **mysql_res,Brw_License_t License)
|
|
||||||
{
|
|
||||||
switch (Gbl.Scope.Current)
|
|
||||||
{
|
|
||||||
case HieLvl_SYS:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE License=%u"
|
|
||||||
" GROUP BY Public",
|
|
||||||
(unsigned) License);
|
|
||||||
case HieLvl_CTY:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT brw_files.Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM ins_instits,"
|
|
||||||
"ctr_centers,"
|
|
||||||
"deg_degrees,"
|
|
||||||
"crs_courses,"
|
|
||||||
"brw_files"
|
|
||||||
" WHERE ins_instits.CtyCod=%ld"
|
|
||||||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
|
||||||
" AND crs_courses.CrsCod=brw_files.Cod"
|
|
||||||
" AND brw_files.FileBrowser IN (%u,%u)"
|
|
||||||
" AND brw_files.License=%u"
|
|
||||||
" GROUP BY brw_files.Public",
|
|
||||||
Gbl.Hierarchy.Cty.CtyCod,
|
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
|
||||||
(unsigned) Brw_ADMI_SHR_CRS,
|
|
||||||
(unsigned) License);
|
|
||||||
case HieLvl_INS:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT brw_files.Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM ctr_centers,"
|
|
||||||
"deg_degrees,"
|
|
||||||
"crs_courses,"
|
|
||||||
"brw_files"
|
|
||||||
" WHERE ctr_centers.InsCod=%ld"
|
|
||||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
|
||||||
" AND crs_courses.CrsCod=brw_files.Cod"
|
|
||||||
" AND brw_files.FileBrowser IN (%u,%u)"
|
|
||||||
" AND brw_files.License=%u"
|
|
||||||
" GROUP BY brw_files.Public",
|
|
||||||
Gbl.Hierarchy.Ins.InsCod,
|
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
|
||||||
(unsigned) Brw_ADMI_SHR_CRS,
|
|
||||||
(unsigned) License);
|
|
||||||
case HieLvl_CTR:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT brw_files.Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM deg_degrees,"
|
|
||||||
"crs_courses,"
|
|
||||||
"brw_files"
|
|
||||||
" WHERE deg_degrees.CtrCod=%ld"
|
|
||||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
|
||||||
" AND crs_courses.CrsCod=brw_files.Cod"
|
|
||||||
" AND brw_files.FileBrowser IN (%u,%u)"
|
|
||||||
" AND brw_files.License=%u"
|
|
||||||
" GROUP BY brw_files.Public",
|
|
||||||
Gbl.Hierarchy.Ctr.CtrCod,
|
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
|
||||||
(unsigned) Brw_ADMI_SHR_CRS,
|
|
||||||
(unsigned) License);
|
|
||||||
case HieLvl_DEG:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT brw_files.Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM crs_courses,"
|
|
||||||
"brw_files"
|
|
||||||
" WHERE crs_courses.DegCod=%ld"
|
|
||||||
" AND crs_courses.CrsCod=brw_files.Cod"
|
|
||||||
" AND brw_files.FileBrowser IN (%u,%u)"
|
|
||||||
" AND brw_files.License=%u"
|
|
||||||
" GROUP BY brw_files.Public",
|
|
||||||
Gbl.Hierarchy.Deg.DegCod,
|
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
|
||||||
(unsigned) Brw_ADMI_SHR_CRS,
|
|
||||||
(unsigned) License);
|
|
||||||
case HieLvl_CRS:
|
|
||||||
return (unsigned)
|
|
||||||
DB_QuerySELECT (mysql_res,"can not get number of OERs",
|
|
||||||
"SELECT Public," // row[0]
|
|
||||||
"COUNT(*)" // row[1]
|
|
||||||
" FROM brw_files"
|
|
||||||
" WHERE Cod=%ld"
|
|
||||||
" AND FileBrowser IN (%u,%u)"
|
|
||||||
" AND License=%u"
|
|
||||||
" GROUP BY Public",
|
|
||||||
Gbl.Hierarchy.Crs.CrsCod,
|
|
||||||
(unsigned) Brw_ADMI_DOC_CRS,
|
|
||||||
(unsigned) Brw_ADMI_SHR_CRS,
|
|
||||||
(unsigned) License);
|
|
||||||
default:
|
|
||||||
Err_WrongScopeExit ();
|
|
||||||
return 0; // Not reached
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -47,10 +47,11 @@
|
||||||
/***************************** Public prototypes *****************************/
|
/***************************** Public prototypes *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
//------------------------------- Assignments ---------------------------------
|
|
||||||
unsigned Brw_DB_GetFoldersAssignments (MYSQL_RES **mysql_res,long ZoneUsrCod);
|
|
||||||
|
|
||||||
//---------------------------------- Files ------------------------------------
|
//---------------------------------- Files ------------------------------------
|
||||||
|
long Brw_DB_GetFilCodByPath (const char *Path,bool OnlyIfPublic);
|
||||||
|
unsigned Brw_DB_GetFileMetadataByPath (MYSQL_RES **mysql_res,const char *Path);
|
||||||
|
unsigned Brw_DB_GetFileMetadataByCod (MYSQL_RES **mysql_res,long FilCod);
|
||||||
|
unsigned Brw_DB_GetNumFilesUsr (long UsrCod);
|
||||||
void Brw_DB_RemoveInsFiles (long InsCod);
|
void Brw_DB_RemoveInsFiles (long InsCod);
|
||||||
void Brw_DB_RemoveCtrFiles (long CtrCod);
|
void Brw_DB_RemoveCtrFiles (long CtrCod);
|
||||||
void Brw_DB_RemoveDegFiles (long DegCod);
|
void Brw_DB_RemoveDegFiles (long DegCod);
|
||||||
|
@ -61,11 +62,26 @@ void Brw_DB_RemoveSomeInfoAboutCrsUsrFiles (long UsrCod,long CrsCod);
|
||||||
void Brw_DB_RemoveWrkFiles (long CrsCod,long UsrCod);
|
void Brw_DB_RemoveWrkFiles (long CrsCod,long UsrCod);
|
||||||
void Brw_DB_RemoveUsrFiles (long UsrCod);
|
void Brw_DB_RemoveUsrFiles (long UsrCod);
|
||||||
|
|
||||||
|
//------------------------------ Public files ---------------------------------
|
||||||
|
bool Brw_DB_GetIfFolderHasPublicFiles (const char Path[PATH_MAX + 1]);
|
||||||
|
unsigned Brw_DB_GetNumPublicFilesUsr (long UsrCod);
|
||||||
|
unsigned Brw_DB_GetNumberOfPublicFiles (MYSQL_RES **mysql_res,Brw_License_t License);
|
||||||
|
|
||||||
|
//------------------------------- Assignments ---------------------------------
|
||||||
|
unsigned Brw_DB_GetFoldersAssignments (MYSQL_RES **mysql_res,long ZoneUsrCod);
|
||||||
|
|
||||||
//--------------------- My last access to file browsers -----------------------
|
//--------------------- My last access to file browsers -----------------------
|
||||||
void Brw_DB_UpdateDateMyLastAccFileBrowser (void);
|
void Brw_DB_UpdateDateMyLastAccFileBrowser (void);
|
||||||
unsigned Brw_DB_GetDateMyLastAccFileBrowser (MYSQL_RES **mysql_res);
|
unsigned Brw_DB_GetDateMyLastAccFileBrowser (MYSQL_RES **mysql_res);
|
||||||
unsigned Brw_DB_GetGrpLastAccFileBrowser (MYSQL_RES **mysql_res,const char *FieldNameDB);
|
unsigned Brw_DB_GetGrpLastAccFileBrowser (MYSQL_RES **mysql_res,const char *FieldNameDB);
|
||||||
|
|
||||||
|
//-------------------------------- File views ---------------------------------
|
||||||
|
void Brw_DB_UpdateFileViews (unsigned NumViews,long FilCod);
|
||||||
|
unsigned Brw_DB_GetFileViewsFromMe (MYSQL_RES **mysql_res,long FilCod);
|
||||||
|
unsigned Brw_DB_GetFileViewsFromLoggedUsrs (MYSQL_RES **mysql_res,long FilCod);
|
||||||
|
unsigned Brw_DB_GetFileViewsFromNonLoggedUsrs (long FilCod);
|
||||||
|
unsigned Brw_DB_GetNumFileViewsUsr (long UsrCod);
|
||||||
|
|
||||||
//------------------------------- Hidden files --------------------------------
|
//------------------------------- Hidden files --------------------------------
|
||||||
unsigned Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingPath (MYSQL_RES **mysql_res,
|
unsigned Brw_DB_CheckIfFileOrFolderIsSetAsHiddenUsingPath (MYSQL_RES **mysql_res,
|
||||||
const char *Path);
|
const char *Path);
|
||||||
|
@ -94,7 +110,4 @@ void Brw_DB_StoreSizeOfFileZone (void);
|
||||||
void Brw_DB_GetSizeOfFileBrowser (MYSQL_RES **mysql_res,
|
void Brw_DB_GetSizeOfFileBrowser (MYSQL_RES **mysql_res,
|
||||||
Brw_FileBrowser_t FileBrowser);
|
Brw_FileBrowser_t FileBrowser);
|
||||||
|
|
||||||
//-------------------- OERs (Open Educational Resources) ----------------------
|
|
||||||
unsigned Brw_DB_GetNumberOfOERs (MYSQL_RES **mysql_res,Brw_License_t License);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par
|
||||||
|
|
||||||
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
|
TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo.
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 21.2.1 (2021-09-14)"
|
#define Log_PLATFORM_VERSION "SWAD 21.2.2 (2021-09-14)"
|
||||||
#define CSS_FILE "swad20.45.css"
|
#define CSS_FILE "swad20.45.css"
|
||||||
#define JS_FILE "swad20.69.1.js"
|
#define JS_FILE "swad20.69.1.js"
|
||||||
/*
|
/*
|
||||||
TODO: Rename CENTRE to CENTER in help wiki.
|
TODO: Rename CENTRE to CENTER in help wiki.
|
||||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||||
|
|
||||||
|
Version 21.2.2: Sep 14, 2021 Queries moved to module swad_browser_database. (315051 lines)
|
||||||
Version 21.2.1: Sep 14, 2021 Queries moved to module swad_browser_database. (315003 lines)
|
Version 21.2.1: Sep 14, 2021 Queries moved to module swad_browser_database. (315003 lines)
|
||||||
Version 21.2: Sep 14, 2021 Code refactoring related to file browsers. (314983 lines)
|
Version 21.2: Sep 14, 2021 Code refactoring related to file browsers. (314983 lines)
|
||||||
Version 21.1.1: Sep 14, 2021 Queries moved to module swad_enrolment_database. (315050 lines)
|
Version 21.1.1: Sep 14, 2021 Queries moved to module swad_enrolment_database. (315050 lines)
|
||||||
|
|
|
@ -1767,7 +1767,7 @@ static void Fig_GetNumberOfOERs (Brw_License_t License,
|
||||||
|
|
||||||
/***** Get the size of a file browser *****/
|
/***** Get the size of a file browser *****/
|
||||||
/* Query database */
|
/* Query database */
|
||||||
NumRows = Brw_DB_GetNumberOfOERs (&mysql_res,License);
|
NumRows = Brw_DB_GetNumberOfPublicFiles (&mysql_res,License);
|
||||||
|
|
||||||
/* Reset values to zero */
|
/* Reset values to zero */
|
||||||
NumFiles[0] = NumFiles[1] = 0L;
|
NumFiles[0] = NumFiles[1] = 0L;
|
||||||
|
|
|
@ -1064,7 +1064,7 @@ void Ntf_MarkNotifOneFileAsRemoved (const char *Path)
|
||||||
case Brw_ADMI_MRK_CRS:
|
case Brw_ADMI_MRK_CRS:
|
||||||
case Brw_ADMI_MRK_GRP:
|
case Brw_ADMI_MRK_GRP:
|
||||||
/***** Get file code *****/
|
/***** Get file code *****/
|
||||||
FilCod = Brw_GetFilCodByPath (Path,false); // Any file, public or not
|
FilCod = Brw_DB_GetFilCodByPath (Path,false); // Any file, public or not
|
||||||
if (FilCod > 0)
|
if (FilCod > 0)
|
||||||
{
|
{
|
||||||
/***** Set notification as removed *****/
|
/***** Set notification as removed *****/
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <string.h> // For string functions
|
#include <string.h> // For string functions
|
||||||
|
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
|
#include "swad_browser_database.h"
|
||||||
#include "swad_config.h"
|
#include "swad_config.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_error.h"
|
#include "swad_error.h"
|
||||||
|
|
|
@ -953,7 +953,7 @@ void Tml_Not_MarkNoteOneFileAsUnavailable (const char *Path)
|
||||||
case Brw_ADMI_DOC_CRS:
|
case Brw_ADMI_DOC_CRS:
|
||||||
case Brw_ADMI_SHR_CRS:
|
case Brw_ADMI_SHR_CRS:
|
||||||
/***** Get file code *****/
|
/***** Get file code *****/
|
||||||
FilCod = Brw_GetFilCodByPath (Path,true); // Only if file is public
|
FilCod = Brw_DB_GetFilCodByPath (Path,true); // Only if file is public
|
||||||
if (FilCod > 0)
|
if (FilCod > 0)
|
||||||
{
|
{
|
||||||
/***** Mark possible note as unavailable *****/
|
/***** Mark possible note as unavailable *****/
|
||||||
|
|
|
@ -514,7 +514,7 @@ static unsigned long long ZIP_CloneDir (const char *Path,const char *PathClone,c
|
||||||
Err_ShowErrorAndExit ("Can not create temporary link for compression.");
|
Err_ShowErrorAndExit ("Can not create temporary link for compression.");
|
||||||
|
|
||||||
/***** Update number of my views of this file *****/
|
/***** Update number of my views of this file *****/
|
||||||
Brw_UpdateMyFileViews (Brw_GetFilCodByPath (PathFileInTree,false)); // Any file, public or not
|
Brw_UpdateMyFileViews (Brw_DB_GetFilCodByPath (PathFileInTree,false)); // Any file, public or not
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue