Changes in [370:527cc81ceccf:372:cb84f40f1f4b]
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
.hgignore
r14 r358 1 1 cache 2 public 2 3 inc/config.php 3 4 \.htaccess -
CHANGELOG
r368 r372 1 Dotclear 2.4.0 - ongoing dev 2 =========================================================== 3 * handling of postgres non default schemas (db_prefix = 'schema.prefix') 4 1 5 Dotclear 2.3.1 - 2001-06-14 2 6 =========================================================== -
Makefile
r290 r343 25 25 ## Remove .svn folders 26 26 find ./$(DIST)/ -type d -name '.svn' | xargs rm -rf 27 28 ## Remove .hg* files and folders 29 find ./$(DIST)/ -type d -name '.hg*' | xargs rm -rf 30 find ./$(DIST)/ -type f -name '.hg*' | xargs rm -rf 27 31 28 32 ## Remove config file if any -
admin/auth.php
r366 r372 143 143 } 144 144 145 # Check login informations 146 $check_user = false; 147 if (isset($data['cookie_admin']) && strlen($data['cookie_admin']) == 104) 145 # Check login informations 146 $check_user = false; 147 if (isset($data['cookie_admin']) && strlen($data['cookie_admin']) == 104) 148 { 149 $user_id = substr($data['cookie_admin'],40); 150 $user_id = @unpack('a32',@pack('H*',$user_id)); 151 if (is_array($user_id)) 148 152 { 149 $user_id = substr($data['cookie_admin'],40); 150 $user_id = @unpack('a32',@pack('H*',$user_id)); 151 if (is_array($user_id)) 152 { 153 $user_id = $user_id[1]; 154 $user_key = substr($data['cookie_admin'],0,40); 155 $check_user = $core->auth->checkUser($user_id,null,$user_key) === true; 156 } 157 } 153 $user_id = $user_id[1]; 154 $user_key = substr($data['cookie_admin'],0,40); 155 $check_user = $core->auth->checkUser($user_id,null,$user_key) === true; 156 } 157 } 158 158 159 159 if (!$core->auth->allowPassChange() || !$check_user) { -
admin/js/common.js
r314 r343 57 57 } 58 58 59 jQuery.fn.toggleWithLegend = function(target,s , callback) {59 jQuery.fn.toggleWithLegend = function(target,s) { 60 60 var defaults = { 61 61 img_on_src: dotclear.img_plus_src, … … 79 79 } 80 80 81 var toggle = function(i,speed , callback) {81 var toggle = function(i,speed) { 82 82 speed = speed || 0; 83 83 if (p.hide) { 84 84 $(i).get(0).src = p.img_on_src; 85 85 $(i).get(0).alt = p.img_on_alt; 86 target.hide(speed, callback);86 target.hide(speed, positionFooter); 87 87 } else { 88 88 $(i).get(0).src = p.img_off_src; 89 89 $(i).get(0).alt = p.img_off_alt; 90 target.show(speed, callback);90 target.show(speed, positionFooter); 91 91 if (p.fn) { 92 92 p.fn.apply(target); … … 122 122 $(ctarget).css('cursor','pointer'); 123 123 $(ctarget).click(function() { 124 toggle(i,p.speed, callback);124 toggle(i,p.speed, positionFooter); 125 125 return false; 126 126 }); … … 356 356 } 357 357 $('#blog-menu h3:first').toggleWithLegend($('#blog-menu ul:first'), 358 $.extend({cookie:'dc_blog_menu'},menu_settings), 359 positionFooter 358 $.extend({cookie:'dc_blog_menu'},menu_settings) 360 359 ); 361 360 $('#system-menu h3:first').toggleWithLegend($('#system-menu ul:first'), 362 $.extend({cookie:'dc_system_menu'},menu_settings), 363 positionFooter 361 $.extend({cookie:'dc_system_menu'},menu_settings) 364 362 ); 365 363 $('#plugins-menu h3:first').toggleWithLegend($('#plugins-menu ul:first'), 366 $.extend({cookie:'dc_plugins_menu'},menu_settings), 367 positionFooter 364 $.extend({cookie:'dc_plugins_menu'},menu_settings) 368 365 ); 369 366 $('#favorites-menu h3:first').toggleWithLegend($('#favorites-menu ul:first'), 370 $.extend({cookie:'dc_favorites_menu',hide:false,reverse_cookie:true},menu_settings), 371 positionFooter 367 $.extend({cookie:'dc_favorites_menu',hide:false,reverse_cookie:true},menu_settings) 372 368 ); 373 369 -
admin/js/jquery/jquery.pageTabs.js
r0 r297 9 9 breakerClassName: 'clear' 10 10 }; 11 11 12 12 var index = start_tab ? start_tab : 0; 13 13 14 14 this.params = jQuery.extend(defaults,settings); 15 15 this.divs = jQuery('div.'+this.params.className); … … 20 20 jQuery._pageTabs.prototype = { 21 21 items: new Array(), 22 22 23 23 createList: function() { 24 24 if (this.divs.length <= 0) { 25 25 return; 26 26 } 27 27 28 28 this.block = document.createElement('div'); 29 29 this.block.className = this.params.listClassName; … … 32 32 this.block.appendChild(this.list); 33 33 var li, a; 34 34 35 35 var This = this; 36 36 var i=0; … … 57 57 } 58 58 }); 59 59 60 60 this.breaker = document.createElement('br'); 61 61 this.breaker.className = this.params.breakerClassName; 62 62 63 63 jQuery(this.divs.get(0)).before(this.block); 64 64 jQuery(this.block).after(this.breaker); 65 65 }, 66 66 67 67 showDiv: function(index) { 68 68 var This = this; 69 69 var i = 0; 70 70 var to_trigger = null; 71 71 72 72 this.divs.each(function() { 73 73 if ((this.id != '' && this.id == index) || i == index) { 74 jQuery(this).show( );74 jQuery(this).show(0, positionFooter); 75 75 This.items[i].className = This.params.listClassName+'-active'; 76 76 to_trigger = i; 77 77 } else { 78 jQuery(this).hide( );78 jQuery(this).hide(0, positionFooter); 79 79 This.items[i].className = ''; 80 80 } 81 81 82 82 i++; 83 83 }); 84 84 85 85 if (to_trigger != null) { 86 86 jQuery(this.divs[to_trigger]).onetabload(); -
admin/post.php
r270 r322 527 527 } 528 528 529 # --BEHAVIOR-- adminCommentsActionsCombo 530 $core->callBehavior('adminCommentsActionsCombo',array(&$combo_action)); 531 529 532 $has_action = !empty($combo_action) && (!$trackbacks->isEmpty() || !$comments->isEmpty()); 530 533 -
admin/preferences.php
r324 r371 555 555 $array = $_fav; 556 556 function cmp($a,$b) { 557 if ( $a[1] == $b[1]) {557 if (__($a[1]) == __($b[1])) { 558 558 return 0; 559 559 } 560 return ( $a[1] < $b[1]) ? -1 : 1;560 return (__($a[1]) < __($b[1])) ? -1 : 1; 561 561 } 562 562 $array=$array->getArrayCopy(); -
admin/services.php
r270 r323 133 133 $rsp->comment_ip($rs->comment_ip); 134 134 $rsp->comment_email($rs->comment_email); 135 # --BEHAVIOR-- adminAfterCommentDesc 136 $rsp->comment_spam_disp($core->callBehavior('adminAfterCommentDesc', $rs)); 135 $rsp->comment_spam_disp(dcAntispam::statusMessage($rs)); 137 136 } 138 137 -
admin/user.php
r270 r313 96 96 $cur->user_post_status = $user_post_status = $_POST['user_post_status']; 97 97 98 if ($cur->user_id == $core->auth->userID() && $core->auth->isSuperAdmin()) { 99 // force super_user to true if current user 100 $cur->user_super = $user_super = true; 101 } 98 102 if ($core->auth->allowPassChange()) { 99 103 $cur->user_change_pwd = !empty($_POST['user_change_pwd']) ? 1 : 0; … … 255 259 } 256 260 261 $super_disabled = $user_super && $user_id == $core->auth->userID(); 262 257 263 echo 258 '<p><label for="user_super" class="classic">'.form::checkbox('user_super','1',$user_super,'',16 ).' '.264 '<p><label for="user_super" class="classic">'.form::checkbox('user_super','1',$user_super,'',16,$super_disabled).' '. 259 265 __('Super administrator').'</label></p>'. 260 266 '</div>'. -
admin/users.php
r270 r313 24 24 # --BEHAVIOR-- adminBeforeUserDelete 25 25 $core->callBehavior('adminBeforeUserDelete',$u); 26 27 $core->delUser($u); 26 if ($u != $core->auth->userID()) { 27 $core->delUser($u); 28 } 28 29 } 29 30 catch (Exception $e) … … 32 33 } 33 34 } 34 35 35 if (!$core->error->flag()) { 36 36 http::redirect('users.php?del=1'); -
inc/admin/lib.dc.page.php
r321 r344 16 16 class dcPage 17 17 { 18 private static $loaded_js=array(); 19 18 20 # Auth check 19 21 public static function check($permissions) … … 349 351 public static function jsLoad($src) 350 352 { 351 return '<script type="text/javascript" src="'.html::escapeHTML($src).'"></script>'."\n"; 353 $escaped_src = html::escapeHTML($src); 354 if (!isset(self::$loaded_js[$escaped_src])) { 355 self::$loaded_js[$escaped_src]=true; 356 return '<script type="text/javascript" src="'.$escaped_src.'"></script>'."\n"; 357 } 352 358 } 353 359 -
inc/core/class.dc.auth.php
r270 r333 4 4 # This file is part of Dotclear 2. 5 5 # 6 # Copyright (c) 2003-201 1Olivier Meunier & Association Dotclear6 # Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear 7 7 # Licensed under the GPL version 2.0 license. 8 8 # See LICENSE file or … … 13 13 14 14 /** 15 @ingroup DC_CORE16 @nosubgrouping17 @brief Authentication and user credentials management18 19 dcAuth is a class used to handle everything related to user authentication20 and credentials. Object is provided by dcCore $auth property.15 * @ingroup DC_CORE 16 * @nosubgrouping 17 * @brief Authentication and user credentials management 18 * 19 * dcAuth is a class used to handle everything related to user authentication 20 * and credentials. Object is provided by dcCore $auth property. 21 21 */ 22 22 class dcAuth 23 23 { 24 protected $core; ///< <b>dcCore</b> dcCore instance 25 protected $con; ///< <b>connection</b> Database connection object 26 27 protected $user_table; ///< <b>string</b> User table name 28 protected $perm_table; ///< <b>string</b> Perm table name 29 30 protected $user_id; ///< <b>string</b> Current user ID 31 protected $user_info = array(); ///< <b>array</b> Array with user information 32 protected $user_options = array(); ///< <b>array</b> Array with user options 33 protected $user_change_pwd; ///< <b>boolean</b> User must change his password after login 34 protected $user_admin; ///< <b>boolean</b> User is super admin 35 protected $permissions = array(); ///< <b>array</b> Permissions for each blog 36 protected $allow_pass_change = true; ///< <b>boolean</b> User can change its password 37 protected $blogs = array(); ///< <b>array</b> List of blogs on which the user has permissions 38 public $blog_count = null; ///< <b>integer</b> Count of user blogs 39 40 protected $perm_types; ///< <b>array</b> Permission types 41 42 public $user_prefs; ///< <b>dcPrefs</b> dcPrefs object 43 44 /** 45 Class constructor. Takes dcCore object as single argument. 46 47 @param core <b>dcCore</b> dcCore object 24 /** @var dcCore dcCore instance */ 25 protected $core; 26 /** @var connection Database connection object */ 27 protected $con; 28 29 /** @var string User table name */ 30 protected $user_table; 31 /** @var string Perm table name */ 32 protected $perm_table; 33 34 /** @var string Current user ID */ 35 protected $user_id; 36 /** @var array Array with user information */ 37 protected $user_info = array(); 38 /** @var array Array with user options */ 39 protected $user_options = array(); 40 /** @var boolean User must change his password after login */ 41 protected $user_change_pwd; 42 /** @var boolean User is super admin */ 43 protected $user_admin; 44 /** @var array Permissions for each blog */ 45 protected $permissions = array(); 46 /** @var boolean User can change its password */ 47 protected $allow_pass_change = true; 48 /** @var array List of blogs on which the user has permissions */ 49 protected $blogs = array(); 50 /** @var integer Count of user blogs */ 51 public $blog_count = null; 52 53 /** @var array Permission types */ 54 protected $perm_types; 55 56 /** @var dcPrefs dcPrefs object */ 57 public $user_prefs; 58 59 /** 60 * Class constructor. Takes dcCore object as single argument. 61 * 62 * @param dcCore $core dcCore object 48 63 */ 49 64 public function __construct($core) … … 70 85 //@{ 71 86 /** 72 Checks if user exists and can log in. <var>$pwd</var> argument is optionnal 73 while you may need to check user without password. This method will create 74 credentials and populate all needed object properties. 75 76 @param user_id <b>string</b> User ID 77 @param pwd <b>string</b> User password 78 @param user_key <b>string</b> User key check 79 @return <b>boolean</b> 80 */ 81 public function checkUser($user_id, $pwd=null, $user_key=null) 87 * Checks if user exists and can log in. <var>$pwd</var> argument is optionnal 88 * while you may need to check user without password. This method will create 89 * credentials and populate all needed object properties. 90 * 91 * @param string $user_id User ID 92 * @param string $pwd User password 93 * @param string $user_key User key check 94 * @param boolean $check_blog checks if user is associated to a blog or not. 95 * @return boolean 96 */ 97 public function checkUser($user_id, $pwd=null, $user_key=null, $check_blog=true) 82 98 { 83 99 # Check user and password … … 141 157 142 158 # Get permissions on blogs 143 if ($ this->findUserBlog() === false) {159 if ($check_blog && ($this->findUserBlog() === false)) { 144 160 return false; 145 161 } … … 148 164 149 165 /** 150 This method only check current user password.151 152 @param pwd <b>string</b>User password153 @return <b>boolean</b>166 * This method only check current user password. 167 * 168 * @param string $pwd User password 169 * @return boolean 154 170 */ 155 171 public function checkPassword($pwd) … … 163 179 164 180 /** 165 This method checks if user session cookie exists166 167 @return <b>boolean</b>181 * This method checks if user session cookie exists 182 * 183 * @return boolean 168 184 */ 169 185 public function sessionExists() … … 173 189 174 190 /** 175 This method checks user session validity.176 177 @return <b>boolean</b>191 * This method checks user session validity. 192 * 193 * @return boolean 178 194 */ 179 195 public function checkSession($uid=null) … … 212 228 213 229 /** 214 Checks if user is super admin215 216 @return <b>boolean</b>230 * Checks if user is super admin 231 * 232 * @return boolean 217 233 */ 218 234 public function isSuperAdmin() … … 222 238 223 239 /** 224 Checks if user has permissions given in <var>$permissions</var> for blog225 <var>$blog_id</var>. <var>$permissions</var> is a coma separated list of226 permissions.227 228 @param permissions <b>string</b>Permissions list229 @param blog_id <b>string</b>Blog ID230 @return <b>boolean</b>240 * Checks if user has permissions given in <var>$permissions</var> for blog 241 * <var>$blog_id</var>. <var>$permissions</var> is a coma separated list of 242 * permissions. 243 * 244 * @param string $permissions Permissions list 245 * @param string $blog_id Blog ID 246 * @return boolean 231 247 */ 232 248 public function check($permissions,$blog_id) … … 257 273 258 274 /** 259 Returns true if user is allowed to change its password.260 261 @return <b>boolean</b>275 * Returns true if user is allowed to change its password. 276 * 277 * @return boolean 262 278 */ 263 279 public function allowPassChange() … … 312 328 //@{ 313 329 /** 314 Calls <var>$f</var> function with super admin rights. 315 316 @param f <b>callback</b> Callback function 317 @return <b>mixed</b> Function result 330 * Calls $f function with super admin rights. 331 * Returns the function result. 332 * 333 * @param callback $f Callback function 334 * @return mixed 318 335 */ 319 336 public function sudo($f) … … 346 363 //@{ 347 364 /** 348 Returns user permissions for a blog as an array which looks like: 349 350 - [blog_id] 351 - [permission] => true 352 - ... 353 354 @return <b>array</b> 365 * Returns user permissions for a blog as an array which looks like: 366 * 367 * - [blog_id] 368 * - [permission] => true 369 * - ... 370 * 371 * @param string $blog_id Blog ID 372 * @return array 355 373 */ 356 374 public function getPermissions($blog_id) … … 422 440 423 441 /** 424 Returns current user ID425 426 @return <b>string</b>442 * Returns current user ID 443 * 444 * @return string 427 445 */ 428 446 public function userID() … … 432 450 433 451 /** 434 Returns information about a user .435 436 @param n <b>string</b>Information name437 @return <b>string</b> Information value452 * Returns information about a user . 453 * 454 * @param string $n Information name 455 * @return string 438 456 */ 439 457 public function getInfo($n) … … 447 465 448 466 /** 449 Returns a specific user option450 451 @param n <b>string</b>Option name452 @return <b>string</b> Option value467 * Returns a specific user option 468 * 469 * @param string $n Option name 470 * @return string 453 471 */ 454 472 public function getOption($n) … … 461 479 462 480 /** 463 Returns all user options in an associative array.464 465 @return <b>array</b>481 * Returns all user options in an associative array. 482 * 483 * @return array 466 484 */ 467 485 public function getOptions() … … 474 492 //@{ 475 493 /** 476 Returns an array with permissions parsed from the string <var>$level</var>477 478 @param level <b>string</b>Permissions string479 @return <b>array</b>494 * Returns an array with permissions parsed from the string <var>$level</var> 495 * 496 * @param string $level Permissions string 497 * @return array 480 498 */ 481 499 public function parsePermissions($level) … … 492 510 493 511 /** 494 Returns <var>perm_types</var> property content.495 496 @return <b>array</b>512 * Returns <var>perm_types</var> property content. 513 * 514 * @return array 497 515 */ 498 516 public function getPermissionsTypes() … … 502 520 503 521 /** 504 Adds a new permission type.505 506 @param name <b>string</b>Permission name507 @param title <b>string</b>Permission title522 * Adds a new permission type. 523 * 524 * @param string $name Permission name 525 * @param string $title Permission title 508 526 */ 509 527 public function setPermissionType($name,$title) … … 516 534 //@{ 517 535 /** 518 Add a recover key to a specific user identified by its email and519 password.520 521 @param user_id <b>string</b>User ID522 @param user_email <b>string</b>User Email523 @return <b>string</b> Recover key536 * Add a recover key to a specific user identified by its email and 537 * password. 538 * 539 * @param string $user_id User ID 540 * @param string $user_email User Email 541 * @return string 524 542 */ 525 543 public function setRecoverKey($user_id,$user_email) … … 547 565 548 566 /** 549 Creates a new user password using recovery key. Returns an array:550 551 - user_email552 - user_id553 - new_pass554 555 @param recover_key <b>string</b>Recovery key556 @return <b>array</b>567 * Creates a new user password using recovery key. Returns an array: 568 * 569 * - user_email 570 * - user_id 571 * - new_pass 572 * 573 * @param string $recover_key Recovery key 574 * @return array 557 575 */ 558 576 public function recoverUserPassword($recover_key) … … 590 608 591 609 /** 592 Called after core->addUser593 @seedcCore::addUser594 @param cur <b>cursor</b>User cursor610 * Called after core->addUser 611 * @see dcCore::addUser 612 * @param cursor $cur User cursor 595 613 */ 596 614 public function afterAddUser($cur) {} 597 615 598 616 /** 599 Called after core->updUser600 @seedcCore::updUser601 @param id <b>string</b>User ID602 @param cur <b>cursor</b>User cursor617 * Called after core->updUser 618 * @see dcCore::updUser 619 * @param string $id User ID 620 * @param cursor $cur User cursor 603 621 */ 604 622 public function afterUpdUser($id,$cur) {} 605 623 606 624 /** 607 Called after core->delUser608 @seedcCore::delUser609 @param id <b>string</b>User ID625 * Called after core->delUser 626 * @see dcCore::delUser 627 * @param string $id User ID 610 628 */ 611 629 public function afterDelUser($id) {} -
inc/core/class.dc.blog.php
r270 r340 21 21 class dcBlog 22 22 { 23 protected $core; ///< <b>dcCore</b> dcCore instance 24 public $con; ///< <b>connection</b> Database connection object 25 public $prefix; ///< <b>string</b> Database table prefix 26 27 public $id; ///< <b>string</b> Blog ID 28 public $uid; ///< <b>string</b> Blog unique ID 29 public $name; ///< <b>string</b> Blog name 30 public $desc; ///< <b>string</b> Blog description 31 public $url; ///< <b>string</b> Blog URL 32 public $host; ///< <b>string</b> Blog host 33 public $creadt; ///< <b>string</b> Blog creation date 34 public $upddt; ///< <b>string</b> Blog last update date 35 public $status; ///< <b>string</b> Blog status 36 37 public $settings; ///< <b>dcSettings</b> dcSettings object 38 public $themes_path; ///< <b>string</b> Blog theme path 39 public $public_path; ///< <b>string</b> Blog public path 23 /** @var dcCore dcCore instance */ 24 protected $core; 25 /** @var connection Database connection object */ 26 public $con; 27 /** @var string Database table prefix */ 28 public $prefix; 29 30 /** @var string Blog ID */ 31 public $id; 32 /** @var string Blog unique ID */ 33 public $uid; 34 /** @var string Blog name */ 35 public $name; 36 /** @var string Blog description */ 37 public $desc; 38 /** @var string Blog URL */ 39 public $url; 40 /** @var string Blog host */ 41 public $host; 42 /** @var string Blog creation date */ 43 public $creadt; 44 /** @var string Blog last update date */ 45 public $upddt; 46 /** @var string Blog status */ 47 public $status; 48 49 /** @var dcSettings dcSettings object */ 50 public $settings; 51 /** @var string Blog theme path */ 52 public $themes_path; 53 /** @var string Blog public path */ 54 public $public_path; 40 55 41 56 private $post_status = array(); … … 44 59 private $categories; 45 60 46 public $without_password = true; ///< <b>boolean</b> Disallow entries password protection 61 /** @var boolean Disallow entries password protection */ 62 public $without_password = true; 47 63 48 64 /** … … 391 407 392 408 if (!empty($params['post_type'])) { 393 $strReq .= "AND post_type = '".$this->con->escape($params['post_type'])."' ";409 $strReq .= 'AND P.post_type '.$this->con->in($params['post_type']); 394 410 } 395 411 … … 711 727 if (isset($params['post_type'])) 712 728 { 713 if (is_array($params['post_type']) && !empty($params['post_type'])) { 714 $strReq .= 'AND post_type '.$this->con->in($params['post_type']); 715 } elseif ($params['post_type'] != '') { 716 $strReq .= "AND post_type = '".$this->con->escape($params['post_type'])."' "; 717 } 729 $strReq .= 'AND post_type '.$this->con->in($params['post_type']); 718 730 } 719 731 else … … 858 870 859 871 if($dir > 0) { 860 861 862 863 864 865 866 872 $sign = '>'; 873 $order = 'ASC'; 874 } 875 else { 876 $sign = '<'; 877 $order = 'DESC'; 878 } 867 879 868 880 $params['post_type'] = $post->post_type; … … 1025 1037 $strReq .= "AND post_type = 'post' "; 1026 1038 } 1027 1039 1028 1040 if (!empty($params['year'])) { 1029 1041 $strReq .= 'AND '.$this->con->dateFormat('post_dt','%Y')." = '".sprintf('%04d',$params['year'])."' "; … … 1165 1177 $cur->post_upddt = date('Y-m-d H:i:s'); 1166 1178 1167 # �If user is only "usage", we need to check the post's owner1179 #If user is only "usage", we need to check the post's owner 1168 1180 if (!$this->core->auth->check('contentadmin',$this->id)) 1169 1181 { … … 1768 1780 if (!empty($params['post_type'])) 1769 1781 { 1770 if (is_array($params['post_type']) && !empty($params['post_type'])) { 1771 $strReq .= 'AND post_type '.$this->con->in($params['post_type']); 1772 } else { 1773 $strReq .= "AND post_type = '".$this->con->escape($params['post_type'])."' "; 1774 } 1782 $strReq .= 'AND post_type '.$this->con->in($params['post_type']); 1775 1783 } 1776 1784 -
inc/core/class.dc.core.php
r270 r331 63 63 if ($this->con instanceof mysqlConnection) { 64 64 mysqlConnection::$weak_locks = true; 65 } 66 67 # define searchpath for postgresql 68 if ($this->con instanceof pgsqlConnection) 69 { 70 $searchpath = explode ('.',$prefix,2); 71 if (count($searchpath) > 1) 72 { 73 $prefix = $searchpath[1]; 74 $sql = 'SET search_path TO '.$searchpath[0].',public;'; 75 $this->con->execute($sql); 76 } 65 77 } 66 78 -
inc/core/class.dc.error.php
r270 r334 13 13 14 14 /** 15 @ingroup DC_CORE16 @brief Error class17 18 dcError is a very simple error class, with a stack. Call dcError::add to19 add an error in stack. In administration area, errors are automatically20 displayed.15 * @ingroup DC_CORE 16 * @brief Error class 17 * 18 * dcError is a very simple error class, with a stack. Call dcError::add to 19 * add an error in stack. In administration area, errors are automatically 20 * displayed. 21 21 */ 22 22 class dcError 23 23 { 24 protected $errors = array(); ///< <b>array</b> Errors stack 25 protected $flag = false; ///< <b>boolean</b> True if stack is not empty 26 protected $html_list = "<ul>\n%s</ul>\n"; ///< <b>string</b> HTML errors list pattern 27 protected $html_item = "<li>%s</li>\n"; ///< <b>string</b> HTML error item pattern 24 /** @var array Errors stack */ 25 protected $errors = array(); 26 /** @var boolean True if stack is not empty */ 27 protected $flag = false; 28 /** @var string HTML errors list pattern */ 29 protected $html_list = "<ul>\n%s</ul>\n"; 30 /** @var string HTML error item pattern */ 31 protected $html_item = "<li>%s</li>\n"; 28 32 29 33 /** 30 Object constructor.34 * Object constructor. 31 35 */ 32 36 public function __construct() … … 37 41 38 42 /** 39 Object string representation. Returns errors stack.40 41 @return <b>string</b>43 * Object string representation. Returns errors stack. 44 * 45 * @return string 42 46 */ 43 47 public function __toString() … … 54 58 55 59 /** 56 Adds an error to stack.57 58 @param msg <b>string</b>Error message60 * Adds an error to stack. 61 * 62 * @param string $msg Error message 59 63 */ 60 64 public function add($msg) … … 65 69 66 70 /** 67 Returns the value of <var>flag</var> property.68 69 @return <b>boolean</b> True if errors stack is not empty71 * Returns the value of <var>flag</var> property. True if errors stack is not empty 72 * 73 * @return boolean 70 74 */ 71 75 public function flag() … … 75 79 76 80 /** 77 Resets errors stack.81 * Resets errors stack. 78 82 */ 79 83 public function reset() … … 84 88 85 89 /** 86 Returns <var>errors</var> property.87 88 @return <b>array</b>90 * Returns <var>errors</var> property. 91 * 92 * @return array 89 93 */ 90 94 public function getErrors() … … 94 98 95 99 /** 96 Sets <var>list</var> and <var>item</var> properties.97 98 @param list <b>string</b>HTML errors list pattern99 @param item <b>string</b>HTML error item pattern100 * Sets <var>list</var> and <var>item</var> properties. 101 * 102 * @param string $list HTML errors list pattern 103 * @param string $item HTML error item pattern 100 104 */ 101 105 public function setHTMLFormat($list,$item) … … 106 110 107 111 /** 108 Returns errors stack as HTML.109 110 @return <b>string</b>112 * Returns errors stack as HTML. 113 * 114 * @return string 111 115 */ 112 116 public function toHTML() -
inc/core/class.dc.settings.php
r270 r301 308 308 } 309 309 310 /** 311 Returns a list of settings matching given criteria, for any blog. 312 <b>$params</b> is an array taking the following 313 optionnal parameters: 314 315 - ns : retrieve setting from given namespace 316 - id : retrieve only settings corresponding to the given id 317 318 @param params <b>array</b> Parameters 319 @return <b>record</b> A record 320 */ 321 public function getGlobalSettings($params=array()) 322 { 323 $strReq = "SELECT * from ".$this->table." "; 324 $where = array(); 325 if (!empty($params['ns'])) { 326 $where[] = "setting_ns = '".$this->con->escape($params['ns'])."'"; 327 } 328 if (!empty($params['id'])) { 329 $where[] = "setting_id = '".$this->con->escape($params['id'])."'"; 330 } 331 if (isset($params['blog_id'])) { 332 if (!empty($params['blog_id'])) { 333 $where[] = "blog_id = '".$this->con->escape($params['blog_id'])."'"; 334 } else { 335 $where[] = "blog_id IS NULL"; 336 } 337 } 338 if (count($where) != 0) { 339 $strReq .= " WHERE ".join(" AND ", $where); 340 } 341 $strReq .= " ORDER by blog_id"; 342 return $this->con->select($strReq); 343 } 344 345 /** 346 Updates a setting from a given record 347 348 @param rs <b>record</b> the setting to update 349 */ 350 public function updateSetting($rs) 351 { 352 $cur = $this->con->openCursor($this->table); 353 $cur->setting_id = $rs->setting_id; 354 $cur->setting_value = $rs->setting_value; 355 $cur->setting_type = $rs->setting_type; 356 $cur->setting_label = $rs->setting_label; 357 $cur->blog_id = $rs->blog_id; 358 $cur->setting_ns = $rs->setting_ns; 359 if ($cur->blog_id == null) { 360 $where = 'WHERE blog_id IS NULL '; 361 } else { 362 $where = "WHERE blog_id = '".$this->con->escape($cur->blog_id)."' "; 363 } 364 $cur->update($where."AND setting_id = '".$this->con->escape($cur->setting_id)."' AND setting_ns = '".$this->con->escape($cur->setting_ns)."' "); 365 } 366 367 /** 368 Drops a setting from a given record 369 370 @param rs <b>record</b> the setting to drop 371 @return int number of deleted records (0 if setting does not exist) 372 */ 373 public function dropSetting($rs) { 374 $strReq = "DELETE FROM ".$this->table.' '; 375 if ($rs->blog_id == null) { 376 $strReq .= 'WHERE blog_id IS NULL '; 377 } else { 378 $strReq .= "WHERE blog_id = '".$this->con->escape($rs->blog_id)."' "; 379 } 380 $strReq .= "AND setting_id = '".$this->con->escape($rs->setting_id)."' AND setting_ns = '".$this->con->escape($rs->setting_ns)."' "; 381 return $this->con->execute($strReq); 382 } 310 383 } 311 384 ?> -
inc/prepend.php
r370 r372 118 118 # Constants 119 119 define('DC_ROOT',path::real(dirname(__FILE__).'/..')); 120 define('DC_VERSION','2. 3.2-dev');120 define('DC_VERSION','2.4.0-dev'); 121 121 define('DC_DIGESTS',dirname(__FILE__).'/digests'); 122 122 define('DC_L10N_ROOT',dirname(__FILE__).'/../locales'); -
inc/public/class.dc.template.php
r341 r351 323 323 } 324 324 325 if (($node instanceof tplNodeBlock) && !$node->isClosed()) { 326 $errors[] = sprintf( 327 __('Did not find closing tag for block <tpl:%s>. Content has been ignored.'), 328 html::escapeHTML($node->getTag())); 329 } 330 325 331 $err = ""; 326 332 if (count($errors) > 0) { … … 3236 3242 $this->closed = true; 3237 3243 } 3244 public function isClosed() { 3245 return $this->closed; 3246 } 3238 3247 public function compile($tpl) { 3239 3248 if ($this->closed) { -
inc/public/lib.urlhandlers.php
r270 r306 204 204 205 205 $n = self::getPageNumber($args); 206 207 $params['lang'] = $args; 206 $params = new ArrayObject(array( 207 'lang' => $args)); 208 209 $core->callBehavior('publicLangBeforeGetLangs',$params,$args); 210 208 211 $_ctx->langs = $core->blog->getLangs($params); 209 212 … … 235 238 else 236 239 { 237 $params['cat_url'] = $args; 238 $params['post_type'] = 'post'; 240 $params = new ArrayObject(array( 241 'cat_url' => $args, 242 'post_type' => 'post')); 243 244 $core->callBehavior('publicCategoryBeforeGetCategories',$params,$args); 239 245 240 246 $_ctx->categories = $core->blog->getCategories($params); … … 267 273 elseif (preg_match('|^/([0-9]{4})/([0-9]{2})$|',$args,$m)) 268 274 { 269 $params['year'] = $m[1]; 270 $params['month'] = $m[2]; 271 $params['type'] = 'month'; 275 $params = new ArrayObject(array( 276 'year' => $m[1], 277 'month' => $m[2], 278 'type' => 'month')); 279 280 $core->callBehavior('publicArchiveBeforeGetDates',$params,$args); 281 272 282 $_ctx->archives = $core->blog->getDates($params); 273 283 … … 300 310 $core->blog->withoutPassword(false); 301 311 302 $params = new ArrayObject(); 303 $params['post_url'] = $args; 304 312 $params = new ArrayObject(array( 313 'post_url' => $args)); 314 315 $core->callBehavior('publicPostBeforeGetPosts',$params,$args); 316 305 317 $_ctx->posts = $core->blog->getPosts($params); 306 318 … … 410 422 411 423 $redir = $_ctx->posts->getURL(); 412 $redir .= strpos($redir,'?') !== false? '&' : '?';424 $redir .= $core->blog->settings->system->url_scan == 'query_string' ? '&' : '?'; 413 425 414 426 try … … 481 493 $cat_url = false; 482 494 $post_id = null; 483 $params = array();484 495 $subtitle = ''; 485 496 … … 490 501 491 502 if (preg_match('!^([a-z]{2}(-[a-z]{2})?)/(.*)$!',$args,$m)) { 492 $params['lang'] = $m[1]; 503 $params = new ArrayObject(array('lang' => $m[1])); 504 493 505 $args = $m[3]; 506 507 $core->callBehavior('publicFeedBeforeGetLangs',$params,$args); 494 508 495 509 $_ctx->langs = $core->blog->getLangs($params); … … 535 549 if ($cat_url) 536 550 { 537 $params['cat_url'] = $cat_url; 538 $params['post_type'] = 'post'; 551 $params = new ArrayObject(array( 552 'cat_url' => $cat_url, 553 'post_type' => 'post')); 554 555 $core->callBehavior('publicFeedBeforeGetCategories',$params,$args); 556 539 557 $_ctx->categories = $core->blog->getCategories($params); 540 558 … … 549 567 elseif ($post_id) 550 568 { 551 $params['post_id'] = $post_id; 552 $params['post_type'] = ''; 569 $params = new ArrayObject(array( 570 'post_id' => $post_id, 571 'post_type' => '')); 572 573 $core->callBehavior('publicFeedBeforeGetPosts',$params,$args); 574 553 575 $_ctx->posts = $core->blog->getPosts($params); 554 576 -
locales/fr/help/core_blog_pref.html
r175 r352 43 43 <dl> 44 44 <dt>Nom de l'éditeur du blog</dt> 45 <dd>Nom de la personne en charge du blog. Peut être le propriétaire ou le 46 directeur de publication s'il existe.</dd> 45 <dd>Nom de la personne responsable du contenu du blog. Peut être le propriétaire 46 ou le directeur de publication s'il existe. Information affichée dans les 47 informations du flux de syndication.</dd> 47 48 48 49 <dt>Note de copyright</dt> -
plugins/pages/_public.php
r270 r306 33 33 $core->blog->withoutPassword(false); 34 34 35 $params = new ArrayObject(); 36 $params['post_type'] = 'page'; 37 $params['post_url'] = $args; 35 $params = new ArrayObject(array( 36 'post_type' => 'page', 37 'post_url' => $args)); 38 39 $core->callBehavior('publicPagesBeforeGetPosts',$params,$args); 38 40 39 41 $_ctx->posts = $core->blog->getPosts($params);
Note: See TracChangeset
for help on using the changeset viewer.