Search:

# CWIS Developers Documentation

- Main Page
- Classes
- Files

- File List
- File Members

# SavedSearchFactory.php

Go to the documentation of this file.

    00001 <?PHP
    00002
    00003 #
    00004 #   FILE:  SavedSearchFactory.php
    00005 #
    00006 #   Part of the Collection Workflow Integration System
    00007 #   Copyright 2009 Edward Almasy and Internet Scout
    00008 #   http://scout.wisc.edu
    00009 #
    00010
    00014 class SavedSearchFactory extends ItemFactory {
    00015
    00016     # ---- PUBLIC INTERFACE --------------------------------------------------
    00017
    00018     # object constructor
    00019     public function __construct()
    00020     {
    00021         # set up item factory base class
    00022         $this->ItemFactory("SavedSearch", "SavedSearches", "SearchId", "SearchName");
    00023     }
    00024
    00025     public function GetSearchesForUser($UserId)
    00026     {
    00027         # start with empty list of searches
    00028         $Searches = array();
    00029
    00030         # retrieve all IDs for user
    00031         $this->DB->Query("SELECT SearchId FROM SavedSearches WHERE UserId = '"
    00032                 .intval($UserId)."'");
    00033         $SearchIds = $this->DB->FetchColumn("SearchId");
    00034
    00035         # for each search ID
    00036         foreach ($SearchIds as $SearchId)
    00037         {
    00038             # add search to list
    00039             $Searches[$SearchId] = new SavedSearch($SearchId);
    00040         }
    00041
    00042         # return list of searches to caller
    00043         return $Searches;
    00044     }
    00045
    00046     # retrieve all searches that should be run according to frequency and last run time
    00047     function GetSearchesDueToRun()
    00048     {
    00049         # start with empty list of searches
    00050         $Searches = array();
    00051
    00052         # retrieve searches with frequency/time values that indicate need to be run
    00053         $this->DB->Query("SELECT SearchId FROM SavedSearches"
    00054                 ." WHERE ((Frequency = ".SavedSearch::SEARCHFREQ_HOURLY.")"
    00055                         ." AND (DateLastRun < '"
    00056                         .date("Y-m-d H:i:s", (strtotime("1 hour ago") + 15))."'))"
    00057                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_DAILY.")"
    00058                         ." AND (DateLastRun < '"
    00059                         .date("Y-m-d H:i:s", (strtotime("1 day ago") + 15))."'))"
    00060                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_WEEKLY.")"
    00061                         ." AND (DateLastRun < '"
    00062                         .date("Y-m-d H:i:s", (strtotime("1 week ago") + 15))."'))"
    00063                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_BIWEEKLY.")"
    00064                         ." AND (DateLastRun < '"
    00065                         .date("Y-m-d H:i:s", (strtotime("2 weeks ago") + 15))."'))"
    00066                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_MONTHLY.")"
    00067                         ." AND (DateLastRun < '"
    00068                         .date("Y-m-d H:i:s", (strtotime("1 month ago") + 15))."'))"
    00069                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_QUARTERLY.")"
    00070                         ." AND (DateLastRun < '"
    00071                         .date("Y-m-d H:i:s", (strtotime("3 months ago") + 15))."'))"
    00072                 ." OR ((Frequency = ".SavedSearch::SEARCHFREQ_YEARLY.")"
    00073                         ." AND (DateLastRun < '"
    00074                         .date("Y-m-d H:i:s", (strtotime("1 year ago") + 15))."'))");
    00075         $SearchIds = $this->DB->FetchColumn("SearchId");
    00076
    00077         # for each search ID
    00078         foreach ($SearchIds as $SearchId)
    00079         {
    00080             # add search to list
    00081             $Searches[$SearchId] = new SavedSearch($SearchId);
    00082         }
    00083
    00084         # return list of searches to caller
    00085         return $Searches;
    00086     }
    00087
    00088     function GetSearchCount()
    00089     {
    00090         return $this->DB->Query(
    00091                 "SELECT COUNT(*) AS SearchCount FROM SavedSearches", "SearchCount");
    00092     }
    00093
    00094     function GetSearchUserCount()
    00095     {
    00096         return $this->DB->Query(
    00097                 "SELECT COUNT(DISTINCT UserId) AS UserCount FROM SavedSearches",
    00098                 "UserCount");
    00099     }
    00100
    00101
    00102     # ---- PRIVATE INTERFACE -------------------------------------------------
    00103
    00104 }
    00105
    00106
    00107 ?>