示例#1
0
 /**
  * build conditions from query
  *
  * @param array $query query
  * @return array condition
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 private function __buildQueryBasedConditions($query)
 {
     $conditions = [];
     if (isset($query['keyword']) && $query['keyword'] !== '') {
         $conditions[] = sprintf('MATCH (`Topic`.`title`, `Topic`.`contents`) AGAINST (\'*D+ %s\' IN BOOLEAN MODE)', $query['keyword']);
     }
     if (isset($query['status'])) {
         $conditions['Topic.status'] = $query['status'];
     } else {
         $conditions['Topic.status'] = array_keys(NetCommonsBlockComponent::getStatuses());
     }
     if (isset($query['plugin_key'])) {
         $conditions['Topic.plugin_key'] = $query['plugin_key'];
     }
     $conditions = array_merge($conditions, $this->__buildDurationConditions($query));
     if (isset($query['username']) && $query['username'] !== '') {
         $conditions['TrackableUpdater.username'] = $query['username'];
     }
     if (isset($query['room_id']) && is_numeric($query['room_id'])) {
         $conditions['Block.room_id'] = $query['room_id'];
     }
     if (isset($query['block_id']) && is_numeric($query['block_id'])) {
         $conditions['Block.id'] = $query['block_id'];
     }
     return $conditions;
 }