started work on the adhoc file component
[glcas.git] / plugins / repo.php
index f794c29..0f32504 100644 (file)
@@ -27,6 +27,13 @@ class GLCASRepo {
                
                foreach($uconf as $rkey => $repo) {
                        echo "Repo $rkey: ".$repo["desc"]."<br>";
+                       if(isset($repo["frozen"])) {
+                               error_log("repo froze set");
+                               $repofrozen = $repo["frozen"];
+                       } else {
+                               error_log("repo froze not set");
+                               $repofrozen = false;
+                       }
                        if(!isset($repo["expiretime"])) {
                                echo " - Expire time not set, setting to 2 days by default<br>";
                                $uconf[$rkey]["expiretime"] = 2;
@@ -41,44 +48,54 @@ class GLCASRepo {
                                $this->config->setConfigVar("repodata", serialize($uconf));
                                $this->config->saveConfig();                            
                        } else if($repo["repotype"] == "YUM") {
-                               if(file_exists("$repostore/$rkey/repodata/repoupdate.lock")) {
-                                       echo " - <font color=\"red\">Repo locked for update</font><br>";
-                                       
-                               }
-                               
-                               // we still do this next bit, even if its locked because it may be a stray file
-                               echo " - Expire time is ".$repo["expiretime"]." days, checking repo<br>";
-                               error_log("checking $repostore/$rkey/repodata/repomd.xml");
-                               $tdiff = time() - filemtime("$repostore/$rkey/repodata/repomd.xml");
-                               $maxtdiff = $repo["expiretime"] * 24 * 3600;
-                               if($tdiff > $maxtdiff) {
-                                       echo " - <font color=\"green\">updating repo</font><br>";
-                                       $this->updateRepo($rkey);
+                               if($repofrozen) {
+                                       error_log("repo frozen");
+                                       echo " - <font color=\"blue\">Repo Frozen</font><br>";
                                } else {
-                                       echo " - not updating repo<br>";
+                                       if(file_exists("$repostore/$rkey/repodata/repoupdate.lock")) {
+                                               echo " - <font color=\"red\">Repo locked for update</font><br>";
+                                               
+                                       }
+                                       
+                                       // we still do this next bit, even if its locked because it may be a stray file
+                                       echo " - Expire time is ".$repo["expiretime"]." days, checking repo<br>";
+                                       error_log("checking $repostore/$rkey/repodata/repomd.xml");
+                                       $tdiff = time() - filemtime("$repostore/$rkey/repodata/repomd.xml");
+                                       $maxtdiff = $repo["expiretime"] * 24 * 3600;
+                                       if($tdiff > $maxtdiff) {
+                                               echo " - <font color=\"green\">updating repo</font><br>";
+                                               $this->updateRepo($rkey);
+                                       } else {
+                                               echo " - not updating repo<br>";
+                                       }
                                }
                        } else if($repo["repotype"] == "APT") {
-                               if(file_exists("$repostore/$rkey/update.lock")) {
-                                       echo " - <font color=\"red\">Repo locaked for update</font><br>";
-                               }
-                               echo " - Expire time is ".$repo["expiretime"]." days, checking repo<br>";
-                               $maxtdiff = $repo["expiretime"] * 24 * 3600;
-                               // now we check for outdated release files
-                               $dh = opendir("$repostore/$rkey/dists/");
-                               $needsupdate = false;
-                               while(($fn = readdir($dh))!==false) {
-                                       if($fn != "." && $fn != "..") {
-                                               if(file_exists("$repostore/$rkey/dists/$fn/Release")) {
-                                                       $tdiff = time() -  filemtime("$repostore/$rkey/dists/$fn/Release");
-                                                       if($tdiff > $maxtdiff) $needsupdate = true;
+                               if($repofrozen) {
+                                       error_log("repo frozen");
+                                       echo " - <font color=\"blue\">Repo Frozen</font><br>";
+                               } else {
+                                       if(file_exists("$repostore/$rkey/update.lock")) {
+                                               echo " - <font color=\"red\">Repo locaked for update</font><br>";
+                                       }
+                                       echo " - Expire time is ".$repo["expiretime"]." days, checking repo<br>";
+                                       $maxtdiff = $repo["expiretime"] * 24 * 3600;
+                                       // now we check for outdated release files
+                                       $dh = opendir("$repostore/$rkey/dists/");
+                                       $needsupdate = false;
+                                       while(($fn = readdir($dh))!==false) {
+                                               if($fn != "." && $fn != "..") {
+                                                       if(file_exists("$repostore/$rkey/dists/$fn/Release")) {
+                                                               $tdiff = time() -  filemtime("$repostore/$rkey/dists/$fn/Release");
+                                                               if($tdiff > $maxtdiff) $needsupdate = true;
+                                                       }
                                                }
                                        }
-                               }
-                               if($needsupdate) {
-                                       echo " - Spawn updater<br>";
-                                       $this->updateRepo($rkey);
-                               } else {
-                                       echo " - Up to date<br>";
+                                       if($needsupdate) {
+                                               echo " - Spawn updater<br>";
+                                               $this->updateRepo($rkey);
+                                       } else {
+                                               echo " - Up to date<br>";
+                                       }
                                }
                        }
                }
@@ -725,6 +742,36 @@ class GLCASRepo {
                return $glt;
        }
 
+       function freezeRepo($rkey)
+       {
+               
+               $uconf = $this->config->getConfigVar("repodata");
+               $repostore = $this->config->getConfigVar("storagelocation");
+
+               if($uconf !== false) {
+                       $conf = unserialize($uconf);
+                       foreach($conf as $key => $vla) {
+                               if($key == $rkey) {
+                                       if(isset($conf["$rkey"]["frozen"])) {
+                                               if($conf["$rkey"]["frozen"]) {
+                                                       $conf["$rkey"]["frozen"] = false;
+                                                       error_log("Unfreeze repo");
+                                               } else {
+                                                       $conf["$rkey"]["frozen"] = true;
+                                                       error_log("freeze repo");
+                                               }
+                                       } else {
+                                               $conf["$rkey"]["frozen"] = true;
+                                       }
+                                       $nconf = serialize($conf);
+                                       error_log("freeze repo as $rkey");
+                                       $this->config->setConfigVar("repodata", $nconf);
+                                       $this->config->saveConfig();
+                               }
+                       }
+               }
+       }
+       
        function deleteRepo($rkey)
        {
                $uconf = $this->config->getConfigVar("repodata");
@@ -793,6 +840,10 @@ class GLCASRepo {
        {
                // we only do yum yet
                $repod = $this->getRepo($repokey);
+               if(isset($repod["frozen"])) if($repod["frozen"]) {
+                       error_log("in update repo for frozen repo, ignore update");
+                       return;
+               }
                
                error_log("in update repo");