source: extensions/SmartAlbums/init_cat_modify.php @ 11298

Last change on this file since 11298 was 10980, checked in by mistic100, 13 years ago

test version

File size: 3.9 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3/**
4 * Add the SmartAlbums configuration tool to virtual cats' configuration page
5 */
6 
7function smart_cat_modify()
8{
9  global $template;
10  include_once(SMART_PATH.'include/functions.inc.php');
11 
12  $cat_id = $_GET['cat_id'];
13  list($cat_dir) = pwg_db_fetch_row(pwg_query("SELECT dir FROM ".CATEGORIES_TABLE." WHERE id = ".$cat_id.";"));
14 
15  // category must be virtual
16  if ($cat_dir != NULL)
17  {
18    return;
19  }
20 
21  /* SAVE FILTERS */
22  if (isset($_POST['submitFilters']))
23  {
24    // test if it was a Smart Album
25    $result = pwg_query("SELECT DISTINCT category_id FROM ".CATEGORY_FILTERS_TABLE." WHERE category_id = ".$cat_id.";");
26    $was_smart = pwg_db_num_rows($result);
27   
28    /* this album is no longer a SmartAlbum */
29    if ($was_smart AND !isset($_POST['is_smart']))
30    {
31      pwg_query("DELETE FROM ".IMAGE_CATEGORY_TABLE." WHERE category_id = ".$cat_id." AND smart = true;");
32      pwg_query("DELETE FROM ".CATEGORY_FILTERS_TABLE." WHERE category_id = ".$cat_id.";");
33    }
34    /* no filter selected */
35    else if (isset($_POST['is_smart']) AND !isset($_POST['filters']))
36    {
37      array_push($page['errors'], l10n('No filter selected'));
38    }
39    /* everything is fine */
40    else if (isset($_POST['is_smart']) AND count($_POST['filters']) > 0)
41    {
42      pwg_query("DELETE FROM ".CATEGORY_FILTERS_TABLE." WHERE category_id = ".$cat_id.";");
43     
44      $limit_is_set = false;
45      foreach ($_POST['filters'] as $filter)
46      {
47        if (($filter = smart_check_filter($filter)) != false)
48        {
49          pwg_query("INSERT INTO ".CATEGORY_FILTERS_TABLE."
50            VALUES(".$cat_id.", '".$filter['type']."', '".$filter['cond']."', '".$filter['value']."');");
51        }
52      }
53     
54      $associated_images = smart_make_associations($cat_id);
55      invalidate_user_cache(true);
56      $template->assign('IMAGE_COUNT', l10n_dec('%d photo', '%d photos', count($associated_images)));
57    }
58  }
59     
60  /* select options, for html_options */
61  $template->assign('options', array(
62    'tags' => array(
63      'all' => l10n('All these tags'),
64      'one' => l10n('One of these tags'),
65      'none' => l10n('None of these tags'),
66      'only' => l10n('Only these tags'),
67      ),
68    'date' => array(
69      'the' => l10n('Added the'),
70      'before' => l10n('Added before the'),
71      'after' => l10n('Added after the'),
72      ),
73    'limit' => array('limit' => 'limit'), // second filter not used
74  ));
75 
76  /* get filters for this album */
77  $filters = pwg_query("SELECT * FROM ".CATEGORY_FILTERS_TABLE." WHERE category_id = ".$cat_id." ORDER BY type ASC, cond ASC;");
78  while ($filter = pwg_db_fetch_assoc($filters))
79  {
80    // get tags name and id
81    if ($filter['type'] == 'tags')
82    {
83      $query = "
84        SELECT
85          id AS tag_id,
86          name AS tag_name
87        FROM ".TAGS_TABLE."
88        WHERE id IN(".$filter['value'].")
89      ";
90      $filter['value'] = get_fckb_taglist($query); 
91    }
92   
93    $template->append('filters', array(
94      'TYPE' => $filter['type'],
95      'COND' => $filter['cond'],
96      'VALUE' => $filter['value'],
97    ));
98  }
99 
100  /* get image number */
101  if ($template->get_template_vars('IMAGE_COUNT') == null)
102  {
103    list($image_num) = pwg_db_fetch_row(pwg_query("SELECT count(*) FROM ".IMAGE_CATEGORY_TABLE." WHERE category_id = ".$cat_id." AND smart = true;"));
104    $template->assign('IMAGE_COUNT', l10n_dec('%d photo', '%d photos', $image_num));
105  }
106 
107  $template->assign(array(
108    'SMART_PATH' => SMART_PATH,
109    'COUNT_SCRIPT_URL' => SMART_PATH.'include/count_images.php',
110  )); 
111  $template->set_prefilter('categories', 'smart_cat_modify_prefilter');
112}
113
114
115function smart_cat_modify_prefilter($content, &$smarty)
116{
117  $search = '<form action="{$F_ACTION}" method="POST" id="links">';
118  $replacement = file_get_contents(SMART_PATH.'template/cat_modify.tpl')."\n".$search;
119  return str_replace($search, $replacement, $content);
120}
121
122?>
Note: See TracBrowser for help on using the repository browser.