/** * Save a new question notice * * @param Profile $profile * @param string $question * @param string $title * @param string $description * @param array $option // and whatnot * * @return Notice saved notice */ static function saveNew($profile, $title, $description, $options = array()) { $q = new QnA_Question(); $q->id = UUID::gen(); $q->profile_id = $profile->id; $q->title = $title; $q->description = $description; if (array_key_exists('created', $options)) { $q->created = $options['created']; } else { $q->created = common_sql_now(); } if (array_key_exists('uri', $options)) { $q->uri = $options['uri']; } else { $q->uri = common_local_url('qnashowquestion', array('id' => $q->id)); } common_log(LOG_DEBUG, "Saving question: {$q->id} {$q->uri}"); $q->insert(); if (Notice::contentTooLong($q->title . ' ' . $q->uri)) { $max = Notice::maxContent(); $uriLen = mb_strlen($q->uri); $targetLen = $max - ($uriLen + 15); $title = mb_substr($q->title, 0, $targetLen) . '…'; } $content = $title . ' ' . $q->uri; $link = '<a href="' . htmlspecialchars($q->uri) . '">' . htmlspecialchars($q->title) . '</a>'; // TRANS: Rendered version of the notice content creating a question. // TRANS: %s a link to the question as link description. $rendered = sprintf(_m('Question: %s'), $link); $tags = array('question'); $replies = array(); $options = array_merge(array('urls' => array(), 'rendered' => $rendered, 'tags' => $tags, 'replies' => $replies, 'object_type' => self::OBJECT_TYPE), $options); if (!array_key_exists('uri', $options)) { $options['uri'] = $q->uri; } $saved = Notice::saveNew($profile->id, $content, array_key_exists('source', $options) ? $options['source'] : 'web', $options); return $saved; }