public function testQueryCopy()
 {
     $q = new Doctrine_Query();
     $q->from('User u');
     $q2 = $q->copy();
     $this->assertEqual($q->getSqlQuery(), $q2->getSqlQuery());
     $this->assertEqual($q->getSqlQuery(), 'SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id FROM entity e WHERE (e.type = 0)');
 }
Esempio n. 2
0
 /**
  * Searchable keyword search
  * 
  * @param string $string Keyword string to search for
  * @param Doctrine_Query $query Query object to alter. Adds where condition to limit the results using the search index
  * @return mixed The Doctrine_Collection or array of ids and relevancy
  */
 public function search($string, $query = null)
 {
     $q = new Doctrine_Search_Query($this->_table);
     if ($query instanceof Doctrine_Query) {
         $q->query($string, false);
         $newQuery = $query->copy();
         $query->getSql();
         $newQuery->addWhere($query->getRootAlias() . '.id IN(' . $q->getSql() . ')', $q->getParams());
         return $newQuery;
     } else {
         $q->query($string);
         return $this->_options['connection']->fetchAll($q->getSql(), $q->getParams());
     }
 }
Esempio n. 3
0
 /**
  * Searchable keyword search
  * 
  * @param string $string Keyword string to search for
  * @param Doctrine_Query $query Query object to alter. Adds where condition to limit the results using the search index
  * @return mixed The Doctrine_Collection or array of ids and relevancy
  */
 public function search($string, $query = null)
 {
     $q = new Doctrine_Search_Query($this->_table);
     if ($query instanceof Doctrine_Query) {
         $q->query($string, false);
         $newQuery = $query->copy();
         $query->getSql();
         $key = (array) $this->getOption('table')->getIdentifier();
         $newQuery->addWhere($query->getRootAlias() . '.' . current($key) . ' IN (SQL:' . $q->getSql() . ')', $q->getParams());
         return $newQuery;
     } else {
         $q->query($string);
         return $this->_options['connection']->fetchAll($q->getSql(), $q->getParams());
     }
 }
 /**
  * Format the value returned from rec_query() into an array radix.
  *
  * @param Doctrine_Query $q
  * @return array $radix
  */
 protected function format_query_radix(Doctrine_Query $q)
 {
     $q2 = $q->copy()->select('org_id');
     $rs = $q2->fetchArray();
     // also select all parent orgs
     $ids = array();
     foreach ($rs as $org) {
         $parent_ids = Organization::get_org_parents($org['org_id']);
         $ids = array_merge($ids, $parent_ids);
         $ids[] = $org['org_id'];
     }
     $q->orWhereIn('o.org_id', $ids);
     $q->removeDqlQueryPart('limit');
     // now get the radix
     $this->_fields['org_parent_id'] = 1;
     $this->_fields['org_id'] = 1;
     $radix = parent::format_query_radix($q);
     // display organizations as a tree
     return $this->get_tree_data($radix);
 }
 public function testQueryCopyClone()
 {
     $query = new Doctrine_Query();
     $query->select('u.*')->from('User u');
     $sql = $query->getSqlQuery();
     $data = $query->execute();
     $query2 = $query->copy();
     $this->assertTrue($sql, $query2->getSqlQuery());
     $query2->limit(0);
     $query2->offset(0);
     $query2->select('COUNT(u.id) as nb');
     $this->assertTrue($query2->getSqlQuery(), 'SELECT COUNT(e.id) AS e__0 FROM entity e WHERE (e.type = 0)');
 }
 public static function writeCsv($filename, Doctrine_Query $query, $subscribers, $page = 0)
 {
     $out = fopen($filename, 'a+');
     $formfields = array_keys(Petition::$FIELD_SHOW);
     // $petition->getFormfields();
     $exclude = self::$EXCLUDE[$subscribers];
     $used_fields = array('created_at' => 0, 'updated_at' => 1, 'status' => 2);
     $blank = array('', '', '');
     $widget_id_to_language_id = array();
     ini_set('max_execution_time', 600);
     set_time_limit(120);
     $query_i = $query->copy();
     $petition_signings = $query_i->select('ps.*, w.id, w.petition_text_id, pt.id, pt.language_id')->offset(self::PAGE_SIZE * $page)->limit(self::PAGE_SIZE)->execute();
     $i = 0;
     foreach ($petition_signings as $petition_signing) {
         /* @var $petition_signing PetitionSigning */
         $widget_id = $petition_signing->getWidgetId();
         $cell = $blank;
         $cell[0] = $petition_signing->getCreatedAt();
         $cell[1] = $petition_signing->getUpdatedAt();
         $cell[2] = $petition_signing->getStatusName();
         foreach ($formfields as $formfield) {
             if (!in_array($formfield, $exclude)) {
                 $value = $petition_signing->getField($formfield);
                 if ($value !== null) {
                     if (!array_key_exists($formfield, $used_fields)) {
                         $used_fields[$formfield] = count($used_fields);
                         $blank[] = '';
                     }
                     $cell[$used_fields[$formfield]] = $value;
                 }
             }
         }
         if (!array_key_exists(Petition::FIELD_REF, $used_fields)) {
             $used_fields[Petition::FIELD_REF] = count($used_fields);
             $blank[] = '';
             $used_fields['widget_id'] = count($used_fields);
             $blank[] = '';
             $used_fields['language_id'] = count($used_fields);
             $blank[] = '';
             if (!$subscribers) {
                 $used_fields['hash'] = count($used_fields);
                 $blank[] = '';
             }
         }
         $cell[$used_fields[Petition::FIELD_REF]] = $petition_signing->getField(Petition::FIELD_REF);
         $cell[$used_fields['widget_id']] = $widget_id;
         $language_id = '';
         if ($widget_id) {
             if (!array_key_exists($widget_id, $widget_id_to_language_id)) {
                 $widget_id_to_language_id[$widget_id] = $petition_signing->getWidget()->getPetitionText()->getLanguageId();
             }
             $language_id = $widget_id_to_language_id[$petition_signing->getWidgetId()];
         }
         $cell[$used_fields['language_id']] = $language_id;
         if (!$subscribers) {
             $cell[$used_fields['hash']] = $petition_signing->getEmailHashAuto();
         }
         if ($i === 0 && $page === 0) {
             fwrite($out, "");
             fputcsv($out, array_keys($used_fields), ';');
         }
         fputcsv($out, $cell, ';');
         $i++;
     }
     $petition_signings->free();
     unset($petition_signings);
     $query_i->free();
     unset($query_i);
     fclose($out);
 }