function deleteGeneric($className,$condition,&$results=false) { if($records = $this->db->getRecords(MediabirdConfig::tableName($className,true),$condition,'','id')) { $affectedIds = array(); foreach($records as $record) { $affectedIds []= intval($record->id); } $select = "id IN (".join(",",$affectedIds).")"; //delete them if($this->db->deleteRecords(MediabirdConfig::tableName($className,true),$select)) { if($results!==false) { $results['removed'.$className.'Ids'] = $affectedIds; } return true; } else { return false; } } else { //no records affected, but that's okay return true; } }
/** * Determines new problems that user with user Id can answer to * Returns problem object with: question, answer, questioner, card name, status date, topic name and group name * Sorts results by modification date, descending * @param $userId Id of the user whose notes are to be determined * @param int $fromDate Minimum date from which to return the problems * @param MediabirdDbo $mediabirdDb Database connection to use * @return object */ function findNewProblems($userId,$fromDate,$mediabirdDb) { //determine questions this user can access //and that are of question type 3 $select = "question_mode=3 AND created>'".$mediabirdDb->datetime($fromDate)."' AND (user_id=$this->userId OR id IN ( SELECT relation_id FROM ".MediabirdConfig::tableName("Relation")." WHERE relation_type='question' AND marker_id IN ( SELECT id FROM ".MediabirdConfig::tableName("Marker")." WHERE shared=1 AND card_id IN ( SELECT id FROM ".MediabirdConfig::tableName("Card")." WHERE topic_id IN ( SELECT topic_id FROM ".MediabirdConfig::tableName("Right")." WHERE user_id=$this->userId AND mask>=".MediabirdTopicAccessConstants::allowViewingCards." ) ) ) ))"; $problems = (array)null; $cards = (array)null; if($records = $mediabirdDb->getRecords(MediabirdConfig::tableName('Question',true),$selectProblem,'created DESC','id, question, user_id, modified, created')) { foreach ($records as $result) { //count answers to that question $problem = (object)null; $problem->id = intval($result->id); $problem->created = $problem->date = $mediabirdDb->timestamp($result->created); $problem->modified = $mediabirdDb->timestamp($result->modified); $problem->question = $result->question; $select = "question_id=$result->id"; if($firstAnswerRecords = $mediabirdDb->getRecords(MediabirdConfig::tableName("Answer",true),$select,'created ASC','*', '', 1)) { $problem->answer = $firstAnswerRecords[0]->answer; if($resultQuestioner = $mediabirdDb->getRecord(MediabirdConfig::tableName('User',true),"id=$firstAnswerRecord->user_id")){ $problem->questioner = $resultQuestioner->name; } } /** * formerly given * cardId, cardTitle, topicId, topicTitle, [groupName] */ $problems[] = $problem; } } return $problems; }