/** * Sync contribs * * @param string $mode The mode (validated) * @param int $contrib_id Contrib id to limit to * @param int|bool $start & $limit start and limit for indexing (only indexing!) */ public function contribs($mode, $contrib_id = false, $start = false, $limit = false) { switch ($mode) { case 'validated': $sql = 'SELECT contrib_id, contrib_status FROM ' . TITANIA_CONTRIBS_TABLE . ($contrib_id ? ' AND contrib_id = ' . (int) $contrib_id : ''); $result = phpbb::$db->sql_query($sql); while ($row = phpbb::$db->sql_fetchrow($result)) { $sql = 'SELECT COUNT(revision_id) AS cnt FROM ' . TITANIA_REVISIONS_TABLE . ' WHERE contrib_id = ' . $row['contrib_id'] . ' AND revision_status = ' . TITANIA_REVISION_APPROVED; $result1 = phpbb::$db->sql_query($sql); $cnt = phpbb::$db->sql_fetchfield('cnt', $result1); phpbb::$db->sql_freeresult($result1); if ($cnt > 0 && $row['contrib_status'] == TITANIA_CONTRIB_NEW || $cnt == 0 && $row['contrib_status'] == TITANIA_CONTRIB_APPROVED) { $sql = 'UPDATE ' . TITANIA_CONTRIBS_TABLE . ' SET contrib_status = ' . ($cnt > 0 ? TITANIA_CONTRIB_APPROVED : TITANIA_CONTRIB_NEW) . ' WHERE contrib_id = ' . $row['contrib_id']; phpbb::$db->sql_query($sql); } } phpbb::$db->sql_freeresult($result); break; case 'faq_count': $contribs = array(); $sql = 'SELECT faq_access, contrib_id FROM ' . TITANIA_CONTRIB_FAQ_TABLE; $result = phpbb::$db->sql_query($sql); while ($row = phpbb::$db->sql_fetchrow($result)) { $flags = titania_count::update_flags($row['faq_access']); $contribs[$row['contrib_id']] = titania_count::increment(isset($contribs[$row['contrib_id']]) ? $contribs[$row['contrib_id']] : '', $flags); } phpbb::$db->sql_freeresult($result); foreach ($contribs as $contrib_id => $count) { $sql = 'UPDATE ' . TITANIA_CONTRIBS_TABLE . ' SET contrib_faq_count = \'' . phpbb::$db->sql_escape($count) . '\' WHERE contrib_id = ' . $contrib_id; phpbb::$db->sql_query($sql); } break; case 'index': $data = array(); $sql = 'SELECT * FROM ' . TITANIA_CONTRIBS_TABLE . ' ORDER BY contrib_id ASC'; if ($start === false || $limit === false) { $result = phpbb::$db->sql_query($sql); } else { $result = phpbb::$db->sql_query_limit($sql, (int) $limit, (int) $start); } while ($row = phpbb::$db->sql_fetchrow($result)) { $data[] = array('object_type' => TITANIA_CONTRIB, 'object_id' => $row['contrib_id'], 'title' => $row['contrib_name'], 'text' => $row['contrib_desc'], 'text_uid' => $row['contrib_desc_uid'], 'text_bitfield' => $row['contrib_desc_bitfield'], 'text_options' => $row['contrib_desc_options'], 'author' => $row['contrib_user_id'], 'date' => $row['contrib_last_update'], 'url' => titania_types::$types[$row['contrib_type']]->url . '/' . $row['contrib_name_clean'], 'approved' => (!titania::$config->require_validation || !titania_types::$types[$row['contrib_type']]->require_validation) && $row['contrib_status'] == TITANIA_CONTRIB_NEW || in_array($row['contrib_status'], array(TITANIA_CONTRIB_APPROVED, TITANIA_CONTRIB_DOWNLOAD_DISABLED)) ? true : false); } phpbb::$db->sql_freeresult($result); titania_search::mass_index($data); break; } }
public function delete() { titania_search::delete(TITANIA_FAQ, $this->faq_id); // Update the FAQ count $sql = 'SELECT contrib_faq_count FROM ' . TITANIA_CONTRIBS_TABLE . ' WHERE contrib_id = ' . $this->contrib_id; phpbb::$db->sql_query($sql); $contrib_faq_count = phpbb::$db->sql_fetchfield('contrib_faq_count'); phpbb::$db->sql_freeresult(); $flags = titania_count::update_flags($this->faq_access); $sql = 'UPDATE ' . TITANIA_CONTRIBS_TABLE . ' SET contrib_faq_count = \'' . phpbb::$db->sql_escape(titania_count::decrement($contrib_faq_count, $flags)) . '\' WHERE contrib_id = ' . $this->contrib_id; phpbb::$db->sql_query($sql); parent::delete(); }