pearweb_election
[ class tree: pearweb_election ] [ index: pearweb_election ] [ all elements ]

Source for file pear-election-accountrequest.php

Documentation is available at pear-election-accountrequest.php

  1. <?php
  2. class PEAR_Election_Accountrequest
  3. {
  4.     var $dbh;
  5.     var $id;
  6.     var $created_on;
  7.     var $handle;
  8.     var $salt;
  9.     var $email;
  10.  
  11.     function __construct()
  12.     {
  13.         $this->dbh &$GLOBALS['dbh'];
  14.         $this->user = isset($GLOBALS['auth_user']$GLOBALS['auth_user']->handle : false;
  15.         $this->cleanOldRequests();
  16.     }
  17.  
  18.     function _makeSalt($handle)
  19.     {
  20.         list($usec$secexplode(" "microtime());
  21.         return md5($handle ((float)$usec + (float)$sec));
  22.     }
  23.  
  24.     function find($salt)
  25.     {
  26.         $sql '
  27.             SELECT id, created_on, salt, handle
  28.             FROM election_account_request
  29.             WHERE salt = ?';
  30.         $request $this->dbh->getRow($sqlarray($salt)DB_FETCHMODE_ASSOC);
  31.  
  32.         if (count($request> 0{
  33.             foreach ($request as $field => $value{
  34.                 $this->$field $value;
  35.             }
  36.             return true;
  37.         }
  38.         return false;
  39.     }
  40.  
  41.     /**
  42.      * Adds a request in the DB
  43.      *
  44.      * @return string salt
  45.      */
  46.     function addRequest($handle$email$firstName$lastName$pw1$pw2)
  47.     {
  48.         $data = array(
  49.             'handle'     => $handle,
  50.             'firstname'  => $firstName,
  51.             'lastname'   => $lastName,
  52.             'email'      => $email,
  53.             'password'   => $pw1,
  54.             'password2'  => $pw2,
  55.             'purpose'    => 'vote in general election',
  56.             'fromt_site' => SITE,
  57.             'moreinfo'   => '',
  58.             'homepage'   => '',
  59.         );
  60.  
  61.         include_once 'pear-database-user.php';
  62.         $useradd = user::add($datafalsetrue);
  63.         if (is_array($useradd|| DB::isError($useradd)) {
  64.             return $useradd;
  65.         }
  66.  
  67.         $salt $this->_makeSalt($handle);
  68.         $created_on gmdate('Y-m-d');
  69.  
  70.         $query '
  71.         INSERT INTO election_account_request (created_on, handle, email, salt)
  72.         VALUES (?, ?, ?, ?)';
  73.  
  74.         $res $this->dbh->query($queryarray($created_on$handle$email$salt));
  75.         if (DB::isError($res)) {
  76.             user::remove($handle);
  77.             return $res;
  78.         }
  79.  
  80.         //$this->find($salt);
  81.         //$this->sendRequest();
  82.  
  83.         return $salt;
  84.     }
  85.  
  86.     function deleteRequest()
  87.     {
  88.         $query 'DELETE FROM election_account_request WHERE salt = ?';
  89.         return $this->dbh->query($queryarray($this->salt));
  90.     }
  91.  
  92.     function confirmRequest($salt)
  93.     {
  94.         if (!$this->find($salt)) {
  95.             return PEAR::raiseError('cannot find request');
  96.         }
  97.  
  98.         // activate the handle and grant karma
  99.         // implicitly without human intervention
  100.         // copied from the user class and Damblan_Karma
  101.  
  102.         include_once 'pear-database-user.php';
  103.         $user = user::info($this->handlenull0);
  104.         if (!isset($user['registered'])) {
  105.             return PEAR::raiseError('Error - user request was deleted, please try again');
  106.         }
  107.  
  108.         include_once 'pear-database-note.php';
  109.         note::removeAll($this->handle);
  110.  
  111.         $data = array();
  112.         $data['handle']     $user['handle'];
  113.         $data['registered'= 1;
  114.         $data['created']    gmdate('Y-m-d');
  115.         $data['createdby']  = SITE . 'web';
  116.  
  117.         $e = user::update($datatrue);
  118.         if (PEAR::isError($e|| !$e{
  119.             return $e;
  120.         }
  121.  
  122.         $query 'INSERT INTO karma VALUES (?, ?, ?, ?, NOW())';
  123.  
  124.         $id $this->dbh->nextId('karma');
  125.         $sth $this->dbh->query($queryarray($id$this->handle'pear.voter'SITE . 'web'));
  126.         $id $this->dbh->nextId('karma');
  127.         $sth $this->dbh->query($queryarray($id$this->handle'pear.bug'SITE . 'web'));
  128.  
  129.         if (!DB::isError($sth)) {
  130.             note::add($this->handle'Account opened'SITE . 'web');
  131.             $msg "Your PEAR voter account has been opened.\n"
  132.                 . "You can now participate in the elections  by going to\n"
  133.                 . "    http://" . PEAR_CHANNELNAME . "/election/";
  134.             $xhdr "From: " . PEAR_WEBMASTER_EMAIL;
  135.             if (!DEVBOX){
  136.                 mail($user['email']"Your PEAR Account Request"$msg$xhdr"-f " . PEAR_BOUNCE_EMAIL);
  137.             }
  138.             $this->deleteRequest();
  139.             return true;
  140.         }
  141.  
  142.         return false;
  143.     }
  144.  
  145.     function listRequests()
  146.     {
  147.     }
  148.  
  149.     function cleanOldRequests()
  150.     {
  151.         $old gmdate('Y-m-d'strtotime('-1 Day'));
  152.         $findquery 'SELECT handle FROM election_account_request WHERE created_on < ?';
  153.         $all $this->dbh->getAll($findqueryarray($old));
  154.         // purge reserved usernames as well as their account requests
  155.         if (is_array($all)) {
  156.             foreach ($all as $data{
  157.                 $this->dbh->query('
  158.                     DELETE FROM users WHERE handle = ?
  159.                 'array($data[0]));
  160.                 $this->dbh->query('
  161.                     DELETE FROM bugdb WHERE handle = ?
  162.                 'array($data[0]));
  163.                 $this->dbh->query('
  164.                     DELETE FROM bugdb_comments WHERE handle = ?
  165.                 'array($data[0]));
  166.             }
  167.         }
  168.         $query 'DELETE FROM election_account_request WHERE created_on < ?';
  169.         // purge out-of-date account requests
  170.         return $this->dbh->query($queryarray($old));
  171.     }
  172. }

Documentation generated on Mon, 11 Mar 2019 15:34:36 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.