Browse code

First version.

Xavier G authored on 01/11/2011 16:20:00
Showing 3 changed files

1 1
new file mode 100644
... ...
@@ -0,0 +1,274 @@
1
+GNU GENERAL PUBLIC LICENSE
2
+
3
+              Version 2, June 1991
4
+
5
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
6
+Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
7
+verbatim copies of this license document, but changing it is not allowed.
8
+
9
+                  Preamble
10
+
11
+The licenses for most software are designed to take away your freedom to
12
+share and change it. By contrast, the GNU General Public License is
13
+intended to guarantee your freedom to share and change free software--to
14
+make sure the software is free for all its users. This General Public License
15
+applies to most of the Free Software Foundation's software and to any other
16
+program whose authors commit to using it. (Some other Free Software
17
+Foundation software is covered by the GNU Library General Public License
18
+instead.) You can apply it to your programs, too.
19
+
20
+When we speak of free software, we are referring to freedom, not price. Our
21
+General Public Licenses are designed to make sure that you have the
22
+freedom to distribute copies of free software (and charge for this service if
23
+you wish), that you receive source code or can get it if you want it, that you
24
+can change the software or use pieces of it in new free programs; and that
25
+you know you can do these things.
26
+
27
+To protect your rights, we need to make restrictions that forbid anyone to
28
+deny you these rights or to ask you to surrender the rights. These restrictions
29
+translate to certain responsibilities for you if you distribute copies of the
30
+software, or if you modify it.
31
+
32
+For example, if you distribute copies of such a program, whether gratis or for
33
+a fee, you must give the recipients all the rights that you have. You must make
34
+sure that they, too, receive or can get the source code. And you must show
35
+them these terms so they know their rights.
36
+
37
+We protect your rights with two steps: (1) copyright the software, and (2)
38
+offer you this license which gives you legal permission to copy, distribute
39
+and/or modify the software.
40
+
41
+Also, for each author's protection and ours, we want to make certain that
42
+everyone understands that there is no warranty for this free software. If the
43
+software is modified by someone else and passed on, we want its recipients
44
+to know that what they have is not the original, so that any problems
45
+introduced by others will not reflect on the original authors' reputations.
46
+
47
+Finally, any free program is threatened constantly by software patents. We
48
+wish to avoid the danger that redistributors of a free program will individually
49
+obtain patent licenses, in effect making the program proprietary. To prevent
50
+this, we have made it clear that any patent must be licensed for everyone's
51
+free use or not licensed at all.
52
+
53
+The precise terms and conditions for copying, distribution and modification
54
+follow.
55
+
56
+           GNU GENERAL PUBLIC LICENSE
57
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
58
+               MODIFICATION
59
+
60
+0. This License applies to any program or other work which contains a notice
61
+placed by the copyright holder saying it may be distributed under the terms
62
+of this General Public License. The "Program", below, refers to any such
63
+program or work, and a "work based on the Program" means either the
64
+Program or any derivative work under copyright law: that is to say, a work
65
+containing the Program or a portion of it, either verbatim or with
66
+modifications and/or translated into another language. (Hereinafter, translation
67
+is included without limitation in the term "modification".) Each licensee is
68
+addressed as "you".
69
+
70
+Activities other than copying, distribution and modification are not covered
71
+by this License; they are outside its scope. The act of running the Program is
72
+not restricted, and the output from the Program is covered only if its contents
73
+constitute a work based on the Program (independent of having been made
74
+by running the Program). Whether that is true depends on what the Program
75
+does.
76
+
77
+1. You may copy and distribute verbatim copies of the Program's source
78
+code as you receive it, in any medium, provided that you conspicuously and
79
+appropriately publish on each copy an appropriate copyright notice and
80
+disclaimer of warranty; keep intact all the notices that refer to this License
81
+and to the absence of any warranty; and give any other recipients of the
82
+Program a copy of this License along with the Program.
83
+
84
+You may charge a fee for the physical act of transferring a copy, and you
85
+may at your option offer warranty protection in exchange for a fee.
86
+
87
+2. You may modify your copy or copies of the Program or any portion of it,
88
+thus forming a work based on the Program, and copy and distribute such
89
+modifications or work under the terms of Section 1 above, provided that you
90
+also meet all of these conditions:
91
+
92
+a) You must cause the modified files to carry prominent notices stating that
93
+you changed the files and the date of any change.
94
+
95
+b) You must cause any work that you distribute or publish, that in whole or in
96
+part contains or is derived from the Program or any part thereof, to be
97
+licensed as a whole at no charge to all third parties under the terms of this
98
+License.
99
+
100
+c) If the modified program normally reads commands interactively when run,
101
+you must cause it, when started running for such interactive use in the most
102
+ordinary way, to print or display an announcement including an appropriate
103
+copyright notice and a notice that there is no warranty (or else, saying that
104
+you provide a warranty) and that users may redistribute the program under
105
+these conditions, and telling the user how to view a copy of this License.
106
+(Exception: if the Program itself is interactive but does not normally print such
107
+an announcement, your work based on the Program is not required to print
108
+an announcement.)
109
+
110
+These requirements apply to the modified work as a whole. If identifiable
111
+sections of that work are not derived from the Program, and can be
112
+reasonably considered independent and separate works in themselves, then
113
+this License, and its terms, do not apply to those sections when you distribute
114
+them as separate works. But when you distribute the same sections as part
115
+of a whole which is a work based on the Program, the distribution of the
116
+whole must be on the terms of this License, whose permissions for other
117
+licensees extend to the entire whole, and thus to each and every part
118
+regardless of who wrote it.
119
+
120
+Thus, it is not the intent of this section to claim rights or contest your rights to
121
+work written entirely by you; rather, the intent is to exercise the right to
122
+control the distribution of derivative or collective works based on the
123
+Program.
124
+
125
+In addition, mere aggregation of another work not based on the Program
126
+with the Program (or with a work based on the Program) on a volume of a
127
+storage or distribution medium does not bring the other work under the scope
128
+of this License.
129
+
130
+3. You may copy and distribute the Program (or a work based on it, under
131
+Section 2) in object code or executable form under the terms of Sections 1
132
+and 2 above provided that you also do one of the following:
133
+
134
+a) Accompany it with the complete corresponding machine-readable source
135
+code, which must be distributed under the terms of Sections 1 and 2 above
136
+on a medium customarily used for software interchange; or,
137
+
138
+b) Accompany it with a written offer, valid for at least three years, to give
139
+any third party, for a charge no more than your cost of physically performing
140
+source distribution, a complete machine-readable copy of the corresponding
141
+source code, to be distributed under the terms of Sections 1 and 2 above on
142
+a medium customarily used for software interchange; or,
143
+
144
+c) Accompany it with the information you received as to the offer to distribute
145
+corresponding source code. (This alternative is allowed only for
146
+noncommercial distribution and only if you received the program in object
147
+code or executable form with such an offer, in accord with Subsection b
148
+above.)
149
+
150
+The source code for a work means the preferred form of the work for
151
+making modifications to it. For an executable work, complete source code
152
+means all the source code for all modules it contains, plus any associated
153
+interface definition files, plus the scripts used to control compilation and
154
+installation of the executable. However, as a special exception, the source
155
+code distributed need not include anything that is normally distributed (in
156
+either source or binary form) with the major components (compiler, kernel,
157
+and so on) of the operating system on which the executable runs, unless that
158
+component itself accompanies the executable.
159
+
160
+If distribution of executable or object code is made by offering access to
161
+copy from a designated place, then offering equivalent access to copy the
162
+source code from the same place counts as distribution of the source code,
163
+even though third parties are not compelled to copy the source along with the
164
+object code.
165
+
166
+4. You may not copy, modify, sublicense, or distribute the Program except as
167
+expressly provided under this License. Any attempt otherwise to copy,
168
+modify, sublicense or distribute the Program is void, and will automatically
169
+terminate your rights under this License. However, parties who have received
170
+copies, or rights, from you under this License will not have their licenses
171
+terminated so long as such parties remain in full compliance.
172
+
173
+5. You are not required to accept this License, since you have not signed it.
174
+However, nothing else grants you permission to modify or distribute the
175
+Program or its derivative works. These actions are prohibited by law if you
176
+do not accept this License. Therefore, by modifying or distributing the
177
+Program (or any work based on the Program), you indicate your acceptance
178
+of this License to do so, and all its terms and conditions for copying,
179
+distributing or modifying the Program or works based on it.
180
+
181
+6. Each time you redistribute the Program (or any work based on the
182
+Program), the recipient automatically receives a license from the original
183
+licensor to copy, distribute or modify the Program subject to these terms and
184
+conditions. You may not impose any further restrictions on the recipients'
185
+exercise of the rights granted herein. You are not responsible for enforcing
186
+compliance by third parties to this License.
187
+
188
+7. If, as a consequence of a court judgment or allegation of patent
189
+infringement or for any other reason (not limited to patent issues), conditions
190
+are imposed on you (whether by court order, agreement or otherwise) that
191
+contradict the conditions of this License, they do not excuse you from the
192
+conditions of this License. If you cannot distribute so as to satisfy
193
+simultaneously your obligations under this License and any other pertinent
194
+obligations, then as a consequence you may not distribute the Program at all.
195
+For example, if a patent license would not permit royalty-free redistribution
196
+of the Program by all those who receive copies directly or indirectly through
197
+you, then the only way you could satisfy both it and this License would be to
198
+refrain entirely from distribution of the Program.
199
+
200
+If any portion of this section is held invalid or unenforceable under any
201
+particular circumstance, the balance of the section is intended to apply and
202
+the section as a whole is intended to apply in other circumstances.
203
+
204
+It is not the purpose of this section to induce you to infringe any patents or
205
+other property right claims or to contest validity of any such claims; this
206
+section has the sole purpose of protecting the integrity of the free software
207
+distribution system, which is implemented by public license practices. Many
208
+people have made generous contributions to the wide range of software
209
+distributed through that system in reliance on consistent application of that
210
+system; it is up to the author/donor to decide if he or she is willing to
211
+distribute software through any other system and a licensee cannot impose
212
+that choice.
213
+
214
+This section is intended to make thoroughly clear what is believed to be a
215
+consequence of the rest of this License.
216
+
217
+8. If the distribution and/or use of the Program is restricted in certain
218
+countries either by patents or by copyrighted interfaces, the original copyright
219
+holder who places the Program under this License may add an explicit
220
+geographical distribution limitation excluding those countries, so that
221
+distribution is permitted only in or among countries not thus excluded. In such
222
+case, this License incorporates the limitation as if written in the body of this
223
+License.
224
+
225
+9. The Free Software Foundation may publish revised and/or new versions
226
+of the General Public License from time to time. Such new versions will be
227
+similar in spirit to the present version, but may differ in detail to address new
228
+problems or concerns.
229
+
230
+Each version is given a distinguishing version number. If the Program specifies
231
+a version number of this License which applies to it and "any later version",
232
+you have the option of following the terms and conditions either of that
233
+version or of any later version published by the Free Software Foundation. If
234
+the Program does not specify a version number of this License, you may
235
+choose any version ever published by the Free Software Foundation.
236
+
237
+10. If you wish to incorporate parts of the Program into other free programs
238
+whose distribution conditions are different, write to the author to ask for
239
+permission. For software which is copyrighted by the Free Software
240
+Foundation, write to the Free Software Foundation; we sometimes make
241
+exceptions for this. Our decision will be guided by the two goals of
242
+preserving the free status of all derivatives of our free software and of
243
+promoting the sharing and reuse of software generally.
244
+
245
+               NO WARRANTY
246
+
247
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
248
+THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT
249
+PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
250
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
251
+OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
252
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
253
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
254
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
255
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
256
+PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
257
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
258
+NECESSARY SERVICING, REPAIR OR CORRECTION.
259
+
260
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
261
+AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR
262
+ANY OTHER PARTY WHO MAY MODIFY AND/OR
263
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
264
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
265
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
266
+ARISING OUT OF THE USE OR INABILITY TO USE THE
267
+PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
268
+OR DATA BEING RENDERED INACCURATE OR LOSSES
269
+SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
270
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN
271
+IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
272
+THE POSSIBILITY OF SUCH DAMAGES.
273
+
274
+          END OF TERMS AND CONDITIONS
0 275
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+name = TuxFamily Repository
2
+description = "Use your TuxFamily repository to store uploaded files."
3
+
4
+core = 7.x
5
+package = Performance and scalability
6
+configure = admin/config/media/file-system
7
+version = 7.x-1.0beta
8
+
0 9
new file mode 100644
... ...
@@ -0,0 +1,179 @@
1
+<?php
2
+/*
3
+  Copyright 2011 Xavier Guerrin and the TuxFamily team
4
+  This file is part of the tuxfamily_repository module.
5
+  
6
+  This module is free software: you can redistribute it and/or modify
7
+  it under the terms of the GNU General Public License as published by
8
+  the Free Software Foundation, either version 2 of the License, or
9
+  (at your option) any later version.
10
+  
11
+  This module is distributed in the hope that it will be useful,
12
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
+  GNU General Public License for more details.
15
+  
16
+  You should have received a copy of the GNU General Public License
17
+  along with this module.  If not, see <http://www.gnu.org/licenses/>.
18
+*/
19
+/**
20
+ * @file
21
+ * Implements the core hooks, defines, public and private functions.
22
+ */
23
+
24
+define('TUXFAMILY_REPOSITORY_ENABLED_VARIABLE',             'tuxfamily_repository_enabled');
25
+define('TUXFAMILY_REPOSITORY_DEFAULT_ENABLED',              FALSE);
26
+
27
+define('TUXFAMILY_REPOSITORY_PROJECT_VARIABLE',             'tuxfamily_project');
28
+define('TUXFAMILY_REPOSITORY_DEFAULT_PROJECT',              'project');
29
+
30
+define('TUXFAMILY_REPOSITORY_DRUPAL_PATH_VARIABLE',         'tuxfamily_repository_drupal_path');
31
+define('TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH',          'drupal_files');
32
+
33
+define('TUXFAMILY_REPOSITORY_BASE_URL_PATTERN_VARIABLE',    'tuxfamily_repository_base_url_pattern');
34
+define('TUXFAMILY_REPOSITORY_DEFAULT_BASE_URL_PATTERN',     'http://download.tuxfamily.org/%1$s/%2$s');
35
+
36
+define('TUXFAMILY_REPOSITORY_DRUPAL_PATH_PATTERN_VARIABLE', 'tuxfamily_repository_drupal_path_pattern');
37
+define('TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH_PATTERN',  '/data/repository/%1$s/%2$s');
38
+
39
+/**
40
+ * Implements hook_alter().
41
+ * Used here to modify generated file urls.
42
+ */
43
+function tuxfamily_repository_file_url_alter(&$path) {
44
+  static $tf_repos_enabled = -1;
45
+  if ($tf_repos_enabled === -1) {
46
+    $tf_repos_enabled = variable_get(TUXFAMILY_REPOSITORY_ENABLED_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_ENABLED);
47
+  }
48
+  if (!$tf_repos_enabled) {
49
+    return;
50
+  }
51
+
52
+  // We are only interested into public:// URIs
53
+  if (!preg_match('/^public:\/\//', $path)) {
54
+    return;
55
+  }
56
+
57
+  // We have to handle a special case: /styles/ pictures are generated the
58
+  // first time they are accessed -- therefore, if the file does not exist on
59
+  // the download repository, we must output a URL that will trigger this
60
+  // generation.
61
+  $matches = array();
62
+  if (preg_match('/^public:\/\/styles\/(.+)$/', $path, $matches)) {
63
+    if (!file_exists($path)) {
64
+      $path = $GLOBALS['base_url'] . '/system/files/styles/' . $matches[1];
65
+      return;
66
+    }
67
+  }
68
+
69
+  // Eventually, we replace public:// (9 characters) with our base url.
70
+  $path = _tuxfamily_repository_get_base_url() . '/' . substr($path, 9);
71
+}
72
+
73
+/**
74
+ * Implements hook_form_alter().
75
+ */
76
+function tuxfamily_repository_form_alter(&$form, &$form_state, $form_id) {
77
+  if ($form_id == 'system_file_system_settings') {
78
+    _tuxfamily_repository_alter_file_system_settings($form, $form_state, $form_id);
79
+  }
80
+}
81
+
82
+function _tuxfamily_repository_get_base_url() {
83
+  $repository_base_url = sprintf(
84
+    variable_get(TUXFAMILY_REPOSITORY_BASE_URL_PATTERN_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_BASE_URL_PATTERN),
85
+    variable_get(TUXFAMILY_REPOSITORY_PROJECT_VARIABLE,          TUXFAMILY_REPOSITORY_DEFAULT_PROJECT),
86
+    variable_get(TUXFAMILY_REPOSITORY_DRUPAL_PATH_VARIABLE,      TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH)
87
+  );
88
+  return rtrim($repository_base_url, '/');
89
+}
90
+
91
+function _tuxfamily_repository_get_file_public_path() {
92
+  $file_public_path = sprintf(
93
+    variable_get(TUXFAMILY_REPOSITORY_DRUPAL_PATH_PATTERN_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH_PATTERN),
94
+    variable_get(TUXFAMILY_REPOSITORY_PROJECT_VARIABLE,             TUXFAMILY_REPOSITORY_DEFAULT_PROJECT),
95
+    variable_get(TUXFAMILY_REPOSITORY_DRUPAL_PATH_VARIABLE,         TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH)
96
+  );
97
+  return $file_public_path;
98
+}
99
+
100
+/**
101
+ * Modifies the 'file_system_settings' form to let the user enable and configure its TuxFamily repository.
102
+ */
103
+function _tuxfamily_repository_alter_file_system_settings(&$form, &$form_state, $form_id) {
104
+  // we add our own submit function
105
+  $form['#submit'][] = '_tuxfamily_repository_submit_file_system_settings';
106
+
107
+  // should we work?
108
+  $tf_repos_enabled = variable_get(TUXFAMILY_REPOSITORY_ENABLED_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_ENABLED);
109
+
110
+  if ($tf_repos_enabled) {
111
+    $form['file_public_path']['#default_value'] = _tuxfamily_repository_get_file_public_path();
112
+    $form['file_public_path']['#description'] .= ' ' . t('Note its value is computed by the TuxFamily repository module');
113
+  }
114
+
115
+  $form[TUXFAMILY_REPOSITORY_ENABLED_VARIABLE] = array(
116
+    '#type' => 'checkbox',
117
+    '#title' => t('Use TuxFamily download repository for public files'),
118
+    '#default_value' => $tf_repos_enabled,
119
+    '#weight' => -1000,
120
+  );
121
+
122
+  // usual options
123
+  $form['tuxfamily_repository_options'] = array(
124
+    '#type' => 'fieldset',
125
+    '#title' => 'TuxFamily repository options',
126
+    '#collapsible' => TRUE,
127
+    '#collapsed' => !$tf_repos_enabled,
128
+    '#weight' => -999,
129
+  );
130
+  $form['tuxfamily_repository_options'][TUXFAMILY_REPOSITORY_PROJECT_VARIABLE] = array(
131
+    '#type' => 'textfield',
132
+    '#title' => t('Name of your TuxFamily project'),
133
+    '#description' => t('Your TuxFamily repository usually has the same name as its parent project. Please enter this name here.'),
134
+    '#required' => TRUE,
135
+    '#default_value' => variable_get(TUXFAMILY_REPOSITORY_PROJECT_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_PROJECT),
136
+  );
137
+  $form['tuxfamily_repository_options'][TUXFAMILY_REPOSITORY_DRUPAL_PATH_VARIABLE] = array(
138
+    '#type' => 'textfield',
139
+    '#title' => t('Drupal-dedicated directory in your TuxFamily repository'),
140
+    '#description' => t('Which subdirectory within your TuxFamily repository should be used to store Drupal files?'),
141
+    '#required' => TRUE,
142
+    '#default_value' => variable_get(TUXFAMILY_REPOSITORY_DRUPAL_PATH_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH),
143
+  );
144
+
145
+  // advanced options
146
+  $form['tuxfamily_repository_advanced_options'] = array(
147
+    '#type' => 'fieldset',
148
+    '#title' => 'TuxFamily repository advanced options',
149
+    '#description' => 'Unless TuxFamily has modified their architecture, you should not need to change these settings. In the pattern below, %1$s is your Tuxfamily project name while %2$s is the Drupal-dedicated directory in your TuxFamily repository.',
150
+    '#collapsible' => TRUE,
151
+    '#collapsed' => TRUE,
152
+    '#weight' => -998,
153
+  );
154
+  $form['tuxfamily_repository_advanced_options'][TUXFAMILY_REPOSITORY_BASE_URL_PATTERN_VARIABLE] = array(
155
+    '#type' => 'textfield',
156
+    '#title' => t('Base URL of your TuxFamily repository'),
157
+    '#description' => t('This pattern is used to compose the complete base URL to your TuxFamily repository.'),
158
+    '#required' => TRUE,
159
+    '#default_value' => variable_get(TUXFAMILY_REPOSITORY_BASE_URL_PATTERN_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_BASE_URL_PATTERN),
160
+  );
161
+  $form['tuxfamily_repository_advanced_options'][TUXFAMILY_REPOSITORY_DRUPAL_PATH_PATTERN_VARIABLE] = array(
162
+    '#type' => 'textfield',
163
+    '#title' => t('Absolute path to the Drupal-dedicated directory in your TuxFamily repository'),
164
+    '#description' => t('This pattern is used to compose the absolute path to the directory that will store your Drupal files within your TuxFamily repository.'),
165
+    '#required' => TRUE,
166
+    '#default_value' => variable_get(TUXFAMILY_REPOSITORY_DRUPAL_PATH_PATTERN_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_DRUPAL_PATH_PATTERN),
167
+  );
168
+}
169
+
170
+/**
171
+ * Handle part of the submission of the file_system_settings form.
172
+ * @see _tuxfamily_repository_alter_file_system_settings()
173
+ */
174
+function _tuxfamily_repository_submit_file_system_settings($form, $form_state) {
175
+  $tf_repos_enabled = variable_get(TUXFAMILY_REPOSITORY_ENABLED_VARIABLE, TUXFAMILY_REPOSITORY_DEFAULT_ENABLED);
176
+  if ($tf_repos_enabled) {
177
+    variable_set('file_public_path', _tuxfamily_repository_get_file_public_path());
178
+  }
179
+}