/** * Creates a new tag * * @throws SwatException if no database connection is set on this tag * entry control. */ protected function insertTag($title, $index) { if ($this->app === null) { throw new SwatException('An application must be set on the tag entry control during ' . 'the widget init phase.'); } // check to see if the tag already exists $instance_id = $this->app->getInstanceId(); $sql = sprintf('select * from BlorgTag where lower(title) = lower(%s) and instance %s %s', $this->app->db->quote($title, 'text'), SwatDB::equalityOperator($instance_id), $this->app->db->quote($instance_id, 'integer')); $tags = SwatDB::query($this->app->db, $sql, SwatDBClassMap::get('BlorgTagWrapper')); // only insert if no tag already exists (prevents creating two tags on // reloading) if (count($tags) > 0) { $tag = $tags->getFirst(); } else { $tag = new BlorgTag(); $tag->setDatabase($this->app->db); $tag->instance = $instance_id; $tag->title = $title; $tag->save(); if (isset($this->app->memcache)) { $this->app->memcache->flushNs('tags'); } $message = new SwatMessage(sprintf(Blorg::_('The tag “%s” has been added.'), $tag->title)); $this->app->messages->add($message); } $this->tag_array[$tag->shortname] = $tag->title; $this->selected_tag_array[$tag->shortname] = $tag->title; }
/** * Creates a new tag * * @throws SwatException if no database connection is set on this tag * entry control. */ protected function insertTag($title, $index) { if ($this->app === null) { throw new SwatException('An application must be set on the tag entry control during ' . 'the widget init phase.'); } // check to see if the tag already exists $instance_id = $this->app->getInstanceId(); $sql = sprintf('select * from PinholeTag where lower(title) = lower(%s) and instance %s %s', $this->app->db->quote($title, 'text'), SwatDB::equalityOperator($instance_id), $this->app->db->quote($instance_id, 'integer')); $tags = SwatDB::query($this->app->db, $sql, SwatDBClassMap::get('PinholeTagDataObjectWrapper')); // only insert if no tag already exists (prevents creating two tags on // reloading) if (count($tags) > 0) { $tag_obj = $tags->getFirst(); } else { $tag_obj = new PinholeTagDataObject(); $tag_obj->setDatabase($this->app->db); $tag_obj->instance = $instance_id; $tag_obj->title = $title; $tag_obj->save(); $message = new SwatMessage(sprintf(Pinhole::_('“%s” tag has been added'), SwatString::minimizeEntities($tag_obj->title))); $message->content_type = 'text/xml'; $message->secondary_content = sprintf(Pinhole::_('You can <a href="Tag/Edit?id=%d">edit this tag</a> ' . 'to customize it.'), $tag_obj->id); $this->app->messages->add($message); } $this->tag_array[$tag_obj->name] = $tag_obj->title; $this->selected_tag_array[$tag_obj->name] = $tag_obj->title; }
protected function getPhotos() { // load the photos uploaded in the last day $date = new SwatDate(); $date->subtractDays(1); $date->toUTC(); $instance_id = $this->app->getInstance() === null ? null : $this->app->getInstanceId(); $sql = sprintf('select PinholePhoto.* from PinholePhoto inner join ImageSet on PinholePhoto.image_set = ImageSet.id where ImageSet.instance %s %s and PinholePhoto.dav_upload = %s and PinholePhoto.upload_date > %s order by original_filename asc', SwatDB::equalityOperator($instance_id), $this->app->db->quote($instance_id, 'integer'), $this->app->db->quote(true, 'boolean'), $this->app->db->quote($date->getDate(), 'date')); $photos = SwatDB::query($this->app->db, $sql, SwatDBClassMap::get('PinholeSimplePhotoWrapper')); return $photos; }
public static function getPhotoCountPerDay(SiteWebApplication $app, SwatDate $date) { if (isset($app->memcache)) { $cache_key = sprintf('PinholeCalendarGadget.count.%s.%s', $date->formatLikeIntl('yyyy-MM'), $app->session->isLoggedIn() ? 'private' : 'public'); $count = $app->memcache->getNs('photos', $cache_key); if ($count !== false) { return $count; } } $sql = "select count(PinholePhoto.id) as photo_count,\n\t\t\t\tdate_part('day', max(convertTZ(PinholePhoto.photo_date,\n\t\t\t\t\tPinholePhoto.photo_time_zone))) as photo_day\n\t\t\tfrom PinholePhoto\n\t\t\tinner join ImageSet on PinholePhoto.image_set = ImageSet.id\n\t\t\twhere ImageSet.instance %s %s and PinholePhoto.status = %s\n\t\t\t\tand PinholePhoto.photo_date is not null\n\t\t\t\tand convertTZ(PinholePhoto.photo_date,\n\t\t\t\t\tPinholePhoto.photo_time_zone) >= %s\n\t\t\t\tand convertTZ(PinholePhoto.photo_date,\n\t\t\t\t\tPinholePhoto.photo_time_zone) < %s\n\t\t\t\t%s\n\t\t\tgroup by date_part('day', convertTZ(PinholePhoto.photo_date,\n\t\t\t\tPinholePhoto.photo_time_zone))"; $end_date = clone $date; $end_date->addMonths(1); if (!$app->session->isLoggedIn()) { $private_where_clause = sprintf('and PinholePhoto.private = %s', $app->db->quote(false, 'boolean')); } else { $private_where_clause = ''; } $sql = sprintf($sql, SwatDB::equalityOperator($app->getInstanceId()), $app->db->quote($app->getInstanceId(), 'integer'), $app->db->quote(PinholePhoto::STATUS_PUBLISHED), $app->db->quote($date->getDate(), 'date'), $app->db->quote($end_date->getDate(), 'date'), $private_where_clause); $days = SwatDB::query($app->db, $sql); $day_count = array(); foreach ($days as $day) { $day_count[$day->photo_day] = $day->photo_count; } if (isset($app->memcache)) { $app->memcache->setNs('photos', $cache_key, $day_count); } return $day_count; }