Skip to content
Snippets Groups Projects
Select Git revision
  • 6d5be9a9d4cca12cbb186d76a4d9761944b9862f
  • main default protected
  • rosification
  • refactoring
  • pp
  • mpc
  • realtimelogplotter
  • alv
  • gitlab_ci_podman
  • restructuring
  • viz_fix
11 results

path_in_pixels.csv

Blame
  • class.Group.php 6.26 KiB
    <?php
    
    class Group {
    
      private static $maildir = '/home/leif/slask/maildir';
    
    
      private static $queryList = <<<EOS
        select ID, Gruppnamn, GruppInfo from Grupper order by Gruppnamn
    EOS;
    
      private static $queryOne = <<<EOS
        select * from Grupper where ID = ?
    EOS;
    
      private static $queryMembership = <<<EOS
        select Grupper.ID, Gruppnamn from Grupper,GruppAdress where 
        GruppID = Grupper.ID and Adressid = ? order by Gruppnamn
    EOS;
    
      private static $querySetGroup = <<<EOS
        replace into GruppAdress set AdressID = ?, GruppID = ?
    EOS;
    
      private static $queryUnsetGroup = <<<EOS
        delete from GruppAdress where AdressID = ? and GruppID = ?
    EOS;
    
      private static $queryMail = <<<EOS
        select Epost from Adresser, GruppAdress where
        Adresser.ID = AdressID and GruppID = ?
    EOS;
    
      private static $queryUpdate = <<<EOS
        update Grupper set where ID = ?
    EOS;
    
    
      public static $groupFields = array('ID', 'Gruppnamn', 'GruppInfo');
      private static $buttonFields = array('change','print');
    
      private static $instance;
    
      private static $list = array();
    
      public function __construct($param = NULL) {
        foreach (self::$groupFields as $field) {$this->$field = '';}
        foreach (self::$buttonFields as $field) {$this->$field = '';}
        if (is_null($param)) return;
        if (is_array($param)) {
          foreach (self::$groupFields as $field) {
    	$this->$field = $param[$field];
          }
          return;
        }
        $db = AddressDB::getDB();
        $result = $db->Execute(self::$queryOne,array($param));
        if ($result === false) { die("Database error!<br>" . $db->ErrorMsg());}
        $count = $result->RecordCount();
        switch ($count) {
        case 0:
          die(sprintf('Bad group ID %s'.PHP_EOL,$adressID));
          break;
        case 1:
          $row = $result->FetchRow();
          foreach (self::$groupFields as $field) {
    	if (isset($row[$field])) $this->$field = $row[$field];
          }
          break;
        default:
          die(sprintf(
             'Strange error. Exactly one group record expected for key %s',
             $ID));
        }
      }
    
      private function createRecord() {
        $db = AddressDB::getDB();
        $query = 'insert into Grupper set Gruppnamn = ""';
        $result = $db->Execute($query,array());
        if ($result === false) {die("Database error!<br>" . $publDB->ErrorMsg()); }
        $this->ID = $db->Insert_ID();
      }
     
      public function updateRecord() {
        global $gCms; if (!isset($gCms)) exit;
        $db = AddressDB::getDB();
        if ($this->ID == '') { $this->createRecord(); }
    
        $query = 'update Grupper set ';
        $qfields = array(); $values = array();
        foreach (self::$groupFields as $field) {
          if ($field == 'ID') continue;
          $val = trim($this->$field);
          if (strlen($val) == 0) $val = null;
          $qfields[] = sprintf('%s = ?',$field);
          $values[] = $val;
        }
        $values[] = $this->ID;
        $query .= join(', ',$qfields) . ' where ID=?';
        $result = $db->Execute($query,$values);
        if ($result === false) {die("Database error!<br>" . $db->ErrorMsg());}
      }
     
      public static function getGroupList() {
        if (count(self::$list) > 0) return $list;
        global $gCms; if (!isset($gCms)) exit;
        $c = __CLASS__;
        $db = AddressDB::getDB();
        $result = $db->Execute(self::$queryList,array());
        if ($result === false) { die("Database error!<br>" . $db->ErrorMsg());}
        while ($row = $result->FetchRow()) {
          self::$list[] = new $c($row);
        }
        return self::$list;
      }
    	
      /*   global $gCms; */
      /*   if (!isset($gCms)) exit; */
      /*   $ADB = AddressDB::getDB(); */
      /*   $result = $ADB->Execute(self::$queryList,array()); */
      /*   while ($row = $result->FetchRow()) { */
      /*     $this->list[$row['Gruppnamn']] = $row['ID']; */
      /*   } */
      /* } */
      
      public static function getMembers($GruppID) {
        global $gCms; if (!isset($gCms)) exit;
        $db = AddressDB::getDB();
        $result = $db->Execute(self::$queryMembership,array($GruppID));
        if ($result === false) { die("Database error!<br>" . $db->ErrorMsg()); }
        $list = array();
        while ($row = $result->FetchRow()) {
          $list[$row['Gruppnamn']] = $row['ID'];
        }
        return $list;
      }
    
      public static function getNonMembers($GruppID) {
        $members = self::getMembers($GruppID);
        $allgroups = array();
        self::getGroupList();
        foreach (self::$list as $group) {
          $allgroups[$group->Gruppnamn] = $group->ID;
        }
        $nonmembers = array_diff_assoc($allgroups,$members);
        return $nonmembers;
      }
        
      public static function setMember($ID,$GroupID) {
        global $gCms; if (!isset($gCms)) exit;
        $db = AddressDB::getDB();
        $values = array($ID, $GroupID);
        $result = $db->Execute(self::$querySetGroup,$values);
        if ($result === false) {die("Database error!<br>" . $db->ErrorMsg()); }
      }  
    
      public static function unsetMember($ID,$GroupID) {
        global $gCms; if (!isset($gCms)) exit;
        $db = AddressDB::getDB();
        $values = array($ID, $GroupID);
        //   echo '<pre>'; print_r($queryUnsetGroup); print_r($values); echo '</pre>';exit;
        
        $result = $db->Execute(self::$queryUnsetGroup,$values);
        if ($result === false) {die("Database error!<br>" . $db->ErrorMsg()); }
      }  
    
      /* public static function getGroup() { */
      /*   if (!isset(self::$instance)) { */
      /*     $c = __CLASS__; */
      /*     self::$instance = new $c; */
      /*   } */
      /*   return self::$instance->list; */
      /* } */
    
      public static function setMailLists() {
        global $gCms; if (!isset($gCms)) exit;
        $config =& $gCms->GetConfig();
        $maildir = $config['root_path'] . '/uploads/mailinglists';
        $db = AddressDB::getDB();
        $groups = self::getGroupList();
        //if(!is_dir(self::$maildir)) mkdir(self::$maildir,'0755',true);
        foreach ($groups as $group) {
          $pos = strrpos($group->Gruppnamn, '.dis');
          if ($pos === false) continue;
          $epost = array();
          $values = array($group->ID);
          $result = $db->Execute(self::$queryMail,$values);
          if ($result === false) { die("Database error!<br>" . $db->ErrorMsg()); }
          while ($row = $result->FetchRow()) {
    	if (!$row['Epost']) continue;
    	$epost[] = $row['Epost'];
          }
          if (count($epost) > 0) {
    	//	echo '<pre>'; print_r($epost); echo '</pre>';
    	$filename  = $maildir . '/' . $group->Gruppnamn;
    	$file = fopen($filename,'w');
    	if ($file === false) die('Cannot write '.$filename);
    	foreach ($epost as $line) fwrite($file,$line.PHP_EOL);
    	fclose($file);
          }
        }
        //  exit;
      }
    }
    ?>