Log message #4201214

# At Username Text
# Sep 3rd 2019, 08:55 COOurb What we have in $data in nameCallback?
# Sep 3rd 2019, 08:55 spriz Sp? :)
# Sep 3rd 2019, 08:55 COOurb spriz
# Sep 3rd 2019, 08:54 javier.villanueva thanks @neon1024
# Sep 3rd 2019, 08:50 martin but the fields are generated by javascript so it needs to get unlocked
# Sep 3rd 2019, 08:48 martin @neon1024 hmm no it saves more information to database, with a hasandbelongstomany you use a _ids field I believe
# Sep 3rd 2019, 08:47 COOurb @spriz
# Sep 3rd 2019, 08:47 val How can I create custom validation rules in 3.x? The cookbook explains the way for the RuleChecker but not for Validator - https://book.cakephp.org/3.0/en/orm/validation.html#creating-custom-re-usable-rules
# Sep 3rd 2019, 08:47 slackebot LIKE' => '%' . $data[self::SEARCH_USER] . '%', 'Users.first_name IN ' => $keywords, 'Users.last_name IN ' => $keywords, 'Users.username IN ' => $data[self::SEARCH_USER], ], ] ); return $query; } return $query; ``` So how can I avoid that AND after first CONCAT ?
# Sep 3rd 2019, 08:47 slackebot ] ); if (!$query->isEmpty()) { return $query; } else { $keywords = explode(" ", $data[self::SEARCH_USER]); $query->where( [ 'OR' => [ 'AND' => [ 'CONCAT(first_name, last_name) LIKE' => '%' . str_replace( ' ', '', $data[self::SEARCH_USER] ) . '%', ], 'CONCAT(first_name, last_name)
# Sep 3rd 2019, 08:47 slackebot $keywords, 'Users.last_name IN ' => $keywords, ] ) ->orWhere( [ 'Users.username IN ' => $data[self::SEARCH_USER], ] ); return $query; } return $query; ``` My try with new solution look like, ``` $query->where( [ 'OR' => [ 'Users.first_name' => $data[self::SEARCH_USER], 'Users.last_name' => $data[self::SEARCH_USER], ]
# Sep 3rd 2019, 08:47 slackebot $data[self::SEARCH_USER]); $query->where( [ 'CONCAT(first_name, last_name) LIKE' => '%' . str_replace( ' ', '', $data[self::SEARCH_USER] ) . '%', ] ) ->orWhere( [ 'CONCAT(first_name, last_name) LIKE' => '%' . $data[self::SEARCH_USER] . '%', ] ) ->orWhere( [ 'Users.first_name IN ' =>
# Sep 3rd 2019, 08:47 slackebot Users.first_name in (:c6) OR Users.last_name in (:c7) OR Users.username in (:c8) ) ORDER BY Users.id; And Deprecated solution look like ``` $query->where( [ 'Users.first_name' => $data[self::SEARCH_USER], ] ) ->orWhere( [ 'Users.last_name' => $data[self::SEARCH_USER], ] ); if (!$query->isEmpty()) { return $query; } else { $keywords = explode(" ",
# Sep 3rd 2019, 08:47 johnwayne Hi I Have problem with Query builder. I can not achieve to get OR after AND using ->where() method (Nesting). This is original SQL (Goal) SELECT * FROM users Users INNER JOIN groups Groups ON Groups.id = (Users.group_id) WHERE ( ( Users.active = :c0 AND Users.deleted = :c1 AND (Users.first_name = :c2 OR Users.last_name = :c3) AND CONCAT(first_name, last_name) like :c4 ) OR CONCAT(first_name, last_name) like :c5 OR
# Sep 3rd 2019, 08:46 martin hmm good point i believe it is a hasmany but the html is are fields like example.0.channel_id :slightly_smiling_face:
# Sep 3rd 2019, 08:40 neon1024 Wouldn’t a hasMany be `._ids` ?
# Sep 3rd 2019, 08:39 martin how do I unlock fields of an hasmany relationship? I tried $this->Form->unlockField(‘channel_players.channel_id’); and $this->Form->unlockField(‘channel_players[]’); but both does not work
# Sep 3rd 2019, 08:38 neon1024 @javier.villanueva I would recommend creating your own Authorize class
# Sep 3rd 2019, 08:30 challgren Np
# Sep 3rd 2019, 08:30 javier.villanueva Thanks I will check it
# Sep 3rd 2019, 08:29 challgren CakeDC/Users
# Sep 3rd 2019, 08:29 javier.villanueva I need an auth system with two layers: multi role and depend of a work group. Example: user1 has role1 and role2 in workgroup1, and has role3 in workgroup2. Do you recommend starting with some plugin or component? or start from scratch?
# Sep 3rd 2019, 08:24 spriz :+1:
# Sep 3rd 2019, 08:24 COOurb Let me finish this first.
# Sep 3rd 2019, 08:24 spriz would you need anything else?
# Sep 3rd 2019, 08:24 COOurb I see
# Sep 3rd 2019, 08:23 spriz I see it only has `beforeMarshal`, `beforeSave` and `afterDelete` hooks in the `Behavior` :slightly_smiling_face:
# Sep 3rd 2019, 08:22 COOurb So this plugin "start his actions" only when creating new/editing?
# Sep 3rd 2019, 08:20 spriz with: ``` if ($entity->getOriginal('file') !== null andand is_array($entity->getOriginal('file'))) { //There is a new file! if (isset($entity->getOriginal('file')['name'])) { $entity->original_file_name = $entity->getOriginal('file')['name']; } ``` You can set the `original_file_name` if you want to be able to set that when users download the file anyway :slightly_smiling_face:
# Sep 3rd 2019, 08:19 COOurb well, sure, I got it
# Sep 3rd 2019, 08:19 spriz this will have that filename saved in `file` column :slightly_smiling_face:
# Sep 3rd 2019, 08:18 COOurb ok thnx, think it's better then writing your own implementation of writer
# Sep 3rd 2019, 08:18 spriz with ```
# Sep 3rd 2019, 08:17 spriz you got ze `nameCallback`
# Sep 3rd 2019, 08:17 spriz @COOurb ``` 'file' => [ 'path' => 'uploads{DS}{model}{DS}{field}{DS}', 'nameCallback' => function (array $data, array $settings) { return Text::uuid(); }, 'filesystem' => [ 'adapter' => 'foo', ], ], ```
# Sep 3rd 2019, 08:15 neon1024 So probably implement your own Writer
# Sep 3rd 2019, 08:15 neon1024 > Default: (string) ‘webroot{DS}files{DS}{model}{DS}{field}{DS}’
# Sep 3rd 2019, 08:15 neon1024 It does ship with a default Writer class though
# Sep 3rd 2019, 08:14 neon1024 For my upload plugin I used a UUID
# Sep 3rd 2019, 08:13 COOurb So I can store file name in different field while actually have random named file in file system
# Sep 3rd 2019, 08:13 COOurb is there some {random} token?