public function exportMarketplaceAdmins() { $params = $this->owner->getRequest()->getVars(); if (!isset($params['marketplace_type']) || empty($params['marketplace_type'])) { return $this->owner->httpError('412', 'missing required param marketplace type'); } $marketplace_type = $params['marketplace_type']; $filters_string = implode("','", $marketplace_type); $fileDate = date('Ymdhis'); SangriaPage_Controller::generateDateFilters('s'); $sql = <<<SQL SELECT M.FirstName, M.Surname, M.Email, C.Name AS Company, GROUP_CONCAT(MT.Name ORDER BY MT.Name ASC SEPARATOR ' - ') AS Marketplace FROM Member AS M INNER JOIN ( SELECT MemberID, CompanyID, GroupID FROM Company_Administrators WHERE Company_Administrators.GroupID IN ('{$filters_string}') ) AS CA ON CA.MemberID = M.ID INNER JOIN Company AS C ON C.ID = CA.CompanyID INNER JOIN MarketPlaceType AS MT ON MT.AdminGroupID = CA.GroupID GROUP BY M.FirstName, M.Surname, M.Email, C.Name ORDER BY M.Email, C.Name ; SQL; $res = DB::query($sql); $fields = array('FirstName', 'Surname', 'Email', 'Company', 'Marketplace'); $data = array(); foreach ($res as $row) { $member = array(); foreach ($fields as $field) { $member[$field] = str_replace(',', ' ', $row[$field]); //commas tabs cell in excel } array_push($data, $member); } $filename = "Marketplace_Admins_" . $fileDate . ".csv"; return CSVExporter::getInstance()->export($filename, $data, ','); }
/** * @param string $survey_table_prefix * @return array|null|Session|string */ private function generateFilters($survey_table_prefix = 'I') { $request = Controller::curr()->getRequest(); $from = $request->getVar('From'); $to = $request->getVar('To'); $template = $this->getCurrentSelectedSurveyTemplate(); $class_name = $this->getCurrentSelectedSurveyClassName(); $filters = Session::get(sprintf('SurveyBuilder.%sStatistics.Filters', Session::get('SurveyBuilder.Statistics.ClassName'))); $filter_query_tpl_int = <<<SQL AND EXISTS ( SELECT * FROM SurveyAnswer A2 INNER JOIN SurveyQuestionTemplate Q2 ON Q2.ID = A2.QuestionID INNER JOIN SurveyStepTemplate STPL2 ON STPL2.ID = Q2.StepID INNER JOIN SurveyTemplate SSTPL2 ON SSTPL2.ID = STPL2.SurveyTemplateID INNER JOIN SurveyQuestionValueTemplate V2 ON V2.OwnerID = Q2.ID INNER JOIN SurveyStep S2 ON S2.ID = A2.StepID INNER JOIN Survey I2 ON I2.ID = S2.SurveyID WHERE I2.ClassName = '{$class_name}' AND FIND_IN_SET(V2.ID, A2.Value) > 0 AND SSTPL2.ID = %s AND Q2.ID = %s AND V2.ID = %s AND I2.ID = {$survey_table_prefix}.ID ) SQL; $filter_query_tpl_str = <<<SQL AND EXISTS ( SELECT * FROM SurveyAnswer A2 INNER JOIN SurveyQuestionTemplate Q2 ON Q2.ID = A2.QuestionID INNER JOIN SurveyStepTemplate STPL2 ON STPL2.ID = Q2.StepID INNER JOIN SurveyTemplate SSTPL2 ON SSTPL2.ID = STPL2.SurveyTemplateID INNER JOIN SurveyStep S2 ON S2.ID = A2.StepID INNER JOIN Survey I2 ON I2.ID = S2.SurveyID WHERE I2.ClassName = '{$class_name}' AND SSTPL2.ID = %s AND Q2.ID = %s AND I2.ID = {$survey_table_prefix}.ID AND FIND_IN_SET('%s', A2.Value) > 0 ) SQL; $filters_where = ''; if (!empty($from) && !empty($to)) { $filters_where = " AND " . SangriaPage_Controller::generateDateFilters($survey_table_prefix, "LastEdited"); } if (!empty($filters)) { $filters = trim($filters, ','); $filters = explode(',', $filters); foreach ($filters as $t) { $t = explode(':', $t); $qid = intval($t[0]); $vid = is_int($t[1]) ? intval($t[1]) : $t[1]; if (count($t) === 3) { $vid = sprintf('%s:%s', $t[1], $t[2]); } $filter_query_tpl = is_int($vid) ? $filter_query_tpl_int : $filter_query_tpl_str; $filters_where .= sprintf($filter_query_tpl, $template->ID, $qid, $vid); } } return $filters_where; }
public static function generateDateFilters($table_prefix = '', $date_field = 'UpdateDate') { $where_query = ''; $start_date = Controller::curr()->request->getVar('From'); $end_date = Controller::curr()->request->getVar('To'); if (!empty($table_prefix)) { $table_prefix .= '.'; } if (isset($start_date) && isset($end_date)) { $date_from = Convert::raw2sql(trim($start_date)); $date_to = Convert::raw2sql(trim($end_date)); $start = new \DateTime($date_from); $start->setTime(00, 00, 00); $end = new \DateTime($date_to); $end->setTime(23, 59, 59); $where_query .= " ( {$table_prefix}{$date_field} >= '{$start->format('Y-m-d H:i:s')}' AND {$table_prefix}{$date_field} <= '{$end->format('Y-m-d H:i:s')}' ) "; } else { $start_date = self::$default_start_date; $end_date = self::$default_end_date; $where_query .= " ( {$table_prefix}{$date_field} >= '{$start_date}' AND {$table_prefix}{$date_field} <= '{$end_date}' ) "; } self::$date_filter_query = $where_query; return $where_query; }
public function DeploymentMatchingOrgs() { $filterWhereClause = SangriaPage_Controller::generateFilterWhereClause(); $range = self::getSurveyRange('ViewDeploymentsPerRegion'); if ($range == SurveyType::MARCH_2015) { $range_filter = "D.Created >= '" . SURVEY_START_DATE . "'"; } else { $range_filter = "D.Created < '" . SURVEY_START_DATE . "'"; } $date_filter = ' AND ' . SangriaPage_Controller::$date_filter_query; $query = "SELECT DISTINCT O.Name FROM Deployment D JOIN DeploymentSurvey S ON (D.DeploymentSurveyID = S.ID) JOIN Org O on (S.OrgID = O.ID) WHERE " . $range_filter . $filterWhereClause . $date_filter; $results = DB::query($query); $list = new ArrayList(); foreach ($results as $row) { $list->push(new Org($row)); } return $list; }
public function UsersWithCommits() { SangriaPage_Controller::generateDateFilters('', 'CreatedDate'); $date_filter = SangriaPage_Controller::$date_filter_query; $sql = <<<SQL SELECT COUNT(M.ID) FROM ( SELECT COUNT(ID) Commits , OwnerID FROM GerritChangeInfo WHERE {$date_filter} GROUP BY OwnerID) AS C INNER JOIN GerritUser M on M.ID = C.OwnerID; SQL; $res = DB::query($sql); return $res->value(); }
function SpeakingSubmissions() { $submissions = DataObject::get("SpeakerSubmission", "Created > '2012-11-01'", "Created desc"); SangriaPage_Controller::$submissionsCount = $submissions->Count(); return $submissions; }