function process()
 {
     // Start transaction
     $db = new DB_DataObject();
     $db->query('BEGIN');
     // Get existing constituencies
     $search = factory::create('search');
     $results = $search->search("constituency", array(array("election_id", "=", $this->election_id)), 'AND', array(array("constituency_election", "inner")), array(array('name', "ASC")));
     // Delete existing constituencies
     foreach ($results as $result) {
         if (!$result->delete()) {
             $db->query('ROLLBACK');
             die("Unable to delete constituency. Transaction rolled back.");
         }
     }
     // Delete many-to-many joins
     $query_string = 'DELETE FROM `constituency_election`
                      WHERE `election_id`=' . $this->election_id;
     if ($db->query($query_string) === false) {
         $db->query('ROLLBACK');
         die("Unable to delete constituency links. Transaction rolled back.");
     }
     // Add user supplied constituencies
     $supplied_constituencies = explode("\n", $this->data['txtConstituencies']);
     foreach ($supplied_constituencies as $constituency_name) {
         $constituency_name = trim($constituency_name);
         if ($constituency_name == '') {
             continue;
         }
         // Check for an existing constituency (from another election)
         $existing_constituency = $search->search("constituency", array(array("name", "=", $constituency_name)));
         if (count($existing_constituency) == 1) {
             $constituency = $existing_constituency[0];
         } else {
             // Create constituency
             $constituency = factory::create('constituency');
             $constituency->name = $constituency_name;
             if (!$constituency->insert()) {
                 $db->query('ROLLBACK');
                 die("Unable to add constituency. Transaction rolled back.");
             }
         }
         // Create join
         $constituency_election = factory::create('constituency_election');
         $constituency_election->constituency_id = $constituency->constituency_id;
         $constituency_election->election_id = $this->election_id;
         if (!$constituency_election->insert()) {
             $db->query('ROLLBACK');
             die("Unable to add constituency. Transaction rolled back.");
         }
     }
     $db->query('COMMIT');
     $this->bind();
     $this->render();
 }
Esempio n. 2
0
 function process()
 {
     // Start transaction
     $db = new DB_DataObject();
     $db->query('BEGIN');
     // Get existing mappings
     $search = factory::create('search');
     $results = $search->search("australian_postcode", array(array("election_id", "=", $this->election_id)));
     // Delete existing mappings
     foreach ($results as $result) {
         if ($result->delete() === false) {
             $db->query('ROLLBACK');
             die("Unable to delete mapping. Transaction rolled back.");
         }
     }
     // Add user supplied mappings
     $supplied_mappings = explode("\n", $this->data['txtPostcodeMappings']);
     foreach ($supplied_mappings as $mapping) {
         $mapping = explode(',', $mapping);
         $postcode = trim($mapping[0]);
         // TODO: Sanity check postcode
         $constituency = trim($mapping[1]);
         if ($postcode == '' && $constituency == '') {
             continue;
         }
         $australian_postcode = factory::create('australian_postcode');
         $australian_postcode->election_id = $this->election_id;
         $australian_postcode->postcode = $postcode;
         $australian_postcode->constituency = $constituency;
         if (!$australian_postcode->insert()) {
             $db->query('ROLLBACK');
             die("Unable to add mapping. Transaction rolled back.");
         }
     }
     $db->query('COMMIT');
     $this->bind();
     $this->render();
 }
 function showContent()
 {
     $properties = ['id', 'nickname', 'fullname', 'profileurl', 'homepage', 'bio', 'location', 'lat', 'lon', 'location_id', 'location_ns', 'created', 'modified'];
     // $config['staleaccounts']['inactive_period'] is number of months
     // of inactivity before an account is considered stale.
     // Defaults to 3
     $inactive_period = common_config('staleaccounts', 'inactive_period') ?: 3;
     // Calculate stale date (today - $inactive_period)
     $stale_date = new DateTime();
     $stale_date->modify('-' . $inactive_period . ' month');
     $stale_date = $stale_date->format('Y-m-d');
     $offset = ($this->page - 1) * PROFILES_PER_PAGE;
     $limit = PROFILES_PER_PAGE + 1;
     $dataObj = new DB_DataObject();
     // Custom query because I only want to hit the db once
     $dataObj->query('SELECT * FROM
         (
             SELECT local_profiles.*, MAX(n.created) as latest_activity FROM
             (
                 SELECT p.*
                 FROM profile p
                 JOIN user u ON u.id = p.id
             ) local_profiles
             LEFT JOIN notice n ON local_profiles.id = n.profile_id
             GROUP BY local_profiles.id
             ORDER BY latest_activity
         ) z
         WHERE z.latest_activity < "' . $stale_date . '"
         OR z.latest_activity IS NULL
         LIMIT ' . $offset . ', ' . $limit . ';');
     $cnt = $dataObj->N;
     $this->elementStart('ul');
     while ($dataObj->fetch()) {
         $profile = new Profile();
         foreach ($properties as $property) {
             $profile->{$property} = $dataObj->{$property};
         }
         $profile->latest_activity = $dataObj->latest_activity;
         $pli = new StaleProfileListItem($profile, $this);
         $pli->show();
     }
     $this->elementEnd('ul');
     $this->pagination($this->page > 1, $cnt > PROFILES_PER_PAGE, $this->page, 'staleaccounts', $this->args);
 }
Esempio n. 4
0
 /**
  * Execute a query by the current DAO, localizing it along the way (if needed).
  *
  * @param string $query
  *   The SQL query for execution.
  * @param bool $i18nRewrite
  *   Whether to rewrite the query.
  *
  * @return object
  *   the current DAO object after the query execution
  */
 public function query($query, $i18nRewrite = TRUE)
 {
     // rewrite queries that should use $dbLocale-based views for multi-language installs
     global $dbLocale, $_DB_DATAOBJECT;
     $conn =& $_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5];
     $orig_options = $conn->options;
     $this->_setDBOptions($this->_options);
     if ($i18nRewrite and $dbLocale) {
         $query = CRM_Core_I18n_Schema::rewriteQuery($query);
     }
     $ret = parent::query($query);
     $this->_setDBOptions($orig_options);
     return $ret;
 }
Esempio n. 5
0
 /**
  * Execute a query by the current DAO, localizing it along the way (if needed).
  *
  * @param string $query
  *   The SQL query for execution.
  * @param bool $i18nRewrite
  *   Whether to rewrite the query.
  *
  * @return object
  *   the current DAO object after the query execution
  */
 public function query($query, $i18nRewrite = TRUE)
 {
     // rewrite queries that should use $dbLocale-based views for multi-language installs
     global $dbLocale;
     if ($i18nRewrite and $dbLocale) {
         $query = CRM_Core_I18n_Schema::rewriteQuery($query);
     }
     return parent::query($query);
 }
Esempio n. 6
0
 /**
  * Execute a query by the current DAO, localizing it along the way (if needed).
  *
  * @param string $query        the SQL query for execution
  * @param bool   $i18nRewrite  whether to rewrite the query
  * @return object              the current DAO object after the query execution
  */
 function query($query, $i18nRewrite = true)
 {
     // rewrite queries that should use $dbLocale-based views for multi-language installs
     global $dbLocale;
     if ($i18nRewrite and $dbLocale) {
         require_once 'CRM/Core/I18n/Schema.php';
         $query = CRM_Core_I18n_Schema::rewriteQuery($query);
     }
     return parent::query($query);
 }
Esempio n. 7
0
 function query($req)
 {
     $this->trigger('query', array($req));
     return parent::query($req);
 }