17 use Illuminate\Database\Capsule\Manager as Capsule;
150 $this->limit = $count;
162 $this->offset = $offset;
169 public function getIds() {
170 throw new \Exception(
'PKPEmailTemplateQueryBuilder::getIds() is not supported. Email templates should be referenced by key instead of id.');
178 return Capsule::table(Capsule::raw(
'(' . $compiledQuery[0] .
') as email_template_count'))
179 ->setBindings($compiledQuery[1])
189 throw new \Exception(
'PKPEmailTemplateQueryBuilder::getQuery() is not supported. Use PKPEmailTemplateQueryBuilder::getCompiledQuery() instead.');
222 if (empty($this->fromRoleIds) && empty($this->toRoleIds)) {
225 '(' . $defaultQueryObject->toSql() .
') union (' . $customQueryObject->toSql() .
')',
226 $defaultQueryObject->mergeBindings($customQueryObject)->getBindings(),
231 $defaultQueryObject->toSql(),
232 $defaultQueryObject->getBindings(),
249 $q->whereNotNull(
'et.email_id');
260 Capsule::raw(
'COALESCE(etd.email_key, et.email_key) as email_key'),
266 Capsule::raw(
'COALESCE(et.enabled, 1) as enabled'),
277 $q = Capsule::table(
'email_templates_default as etd')
278 ->orderBy(
'email_key',
'asc')
279 ->groupBy(
'etd.email_key')
280 ->groupBy(
'etd.can_disable')
281 ->groupBy(
'etd.can_edit')
282 ->groupBy(
'etd.from_role_id')
283 ->groupBy(
'etd.to_role_id')
284 ->groupBy(
'etd.stage_id')
285 ->groupBy(
'et.email_id');
287 if (!is_null($this->contextId)) {
289 $q->leftJoin(
'email_templates as et',
function ($table) use (
$contextId) {
290 $table->on(
'etd.email_key',
'=',
'et.email_key')
291 ->on(
'et.context_id',
'=', Capsule::raw((
int)
$contextId));
294 $q->leftJoin(
'email_templates as et',
'etd.email_key',
'=',
'et.email_key');
297 if (!is_null($this->contextId)) {
300 $q->whereNull(
'et.context_id')
301 ->orWhere(
'et.context_id',
'=', $this->contextId);
305 if (!empty($this->isEnabled)) {
306 $q->where(
function($q) {
308 $q->whereNull(
'et.enabled')
309 ->orWhere(
'et.enabled',
'=', 1);
311 } elseif ($this->isEnabled ===
false) {
312 $q->where(
'et.enabled',
'!=', 1);
315 if (!empty($this->isCustom)) {
316 $q->whereNull(
'etd.can_disable');
317 } elseif ($this->isCustom ===
false) {
318 $q->whereNotNull(
'etd.can_disable');
321 if (!empty($this->fromRoleIds)) {
322 $q->whereIn(
'etd.from_role_id', $this->fromRoleIds);
325 if (!empty($this->toRoleIds)) {
326 $q->whereIn(
'etd.to_role_id', $this->toRoleIds);
329 if (!empty($this->stageIds)) {
331 $q->whereNull(
'etd.stage_id')
332 ->orWhereIn(
'etd.stage_id', $this->stageIds);
334 $q->whereIn(
'etd.stage_id', $this->stageIds);
342 $q->leftJoin(
'email_templates_settings as ets',
'et.email_id',
'=',
'ets.email_id');
343 $q->leftJoin(
'email_templates_default_data as etddata',
'etd.email_key',
'=',
'etddata.email_key');
344 foreach ($words as $word) {
345 $word = strtolower(addcslashes($word,
'%_'));
346 $q->where(
function($q) use ($word) {
347 $q->where(Capsule::raw(
'lower(et.email_key)'),
'LIKE',
"%{$word}%")
348 ->orWhere(
function($q) use ($word) {
349 $q->where(
'ets.setting_name',
'subject');
350 $q->where(Capsule::raw(
'lower(ets.setting_value)'),
'LIKE',
"%{$word}%");
352 ->orWhere(
function($q) use ($word) {
353 $q->where(
'ets.setting_name',
'body');
354 $q->where(Capsule::raw(
'lower(ets.setting_value)'),
'LIKE',
"%{$word}%");
356 ->orWhere(Capsule::raw(
'lower(etd.email_key)'),
'LIKE',
"%{$word}%")
357 ->orWhere(Capsule::raw(
'lower(etddata.subject)'),
'LIKE',
"%{$word}%")
358 ->orWhere(Capsule::raw(
'lower(etddata.body)'),
'LIKE',
"%{$word}%")
359 ->orWhere(Capsule::raw(
'lower(etddata.description)'),
'LIKE',
"%{$word}%");
365 if (!empty($this->keys)) {
367 $q->where(
function($q) use (
$keys) {
368 $q->whereIn(
'etd.email_key', $this->keys)
369 ->orWhereIn(
'et.email_key', $this->keys);
373 if (!empty($this->toRoleIds)) {
374 $q->whereIn(
'etd.to_role_id', $this->toRoleIds);
380 $q->select($this->columns);
394 $q = Capsule::table(
'email_templates as et')
395 ->leftJoin(
'email_templates_default as etd',
'etd.email_key',
'=',
'et.email_key');
397 if (!is_null($this->contextId)) {
398 $q->where(
function($q) {
399 $q->whereNull(
'et.context_id')
400 ->orWhere(
'et.context_id',
'=', $this->contextId);
404 if (!empty($this->isEnabled)) {
405 $q->where(
'et.enabled',
'=', 1);
406 } elseif ($this->isEnabled ===
false) {
407 $q->where(
'et.enabled',
'!=', 1);
410 if (!empty($this->isCustom)) {
411 $q->whereNull(
'etd.can_disable');
412 } elseif ($this->isCustom ===
false) {
413 $q->whereNotNull(
'etd.can_disable');
419 $q->leftJoin(
'email_templates_settings as ets',
'et.email_id',
'=',
'ets.email_id');
420 foreach ($words as $word) {
421 $word = strtolower(addcslashes($word,
'%_'));
422 $q->where(
function ($q) use ($word) {
423 $q->where(Capsule::raw(
'lower(et.email_key)'),
'LIKE',
"%{$word}%")
424 ->orWhere(
function($q) use ($word) {
425 $q->where(
'ets.setting_name',
'subject');
426 $q->where(Capsule::raw(
'lower(ets.setting_value)'),
'LIKE',
"%{$word}%");
428 ->orWhere(
function($q) use ($word) {
429 $q->where(
'ets.setting_name',
'body');
430 $q->where(Capsule::raw(
'lower(ets.setting_value)'),
'LIKE',
"%{$word}%");
437 if (!empty($this->keys)) {
438 $q->where(
function($q) {
439 $q->whereIn(
'etd.email_key', $this->keys)
440 ->orWhereIn(
'et.email_key', $this->keys);
447 $q->select($this->columns);