[00:00:21] oh, activity [00:01:01] haha, kind of. [00:01:37] Like most fundraising conversations, about half of it is a descent into madness while we were doing other things. [00:01:46] ...maybe that's just me. [00:01:54] do you have graphite or something for refunds/fraud/etc.? [00:03:06] er... no? [00:03:51] We stack fraud points in realtime on the payments cluster, and just deny the donation if they score too high. [00:04:43] One of the sources of fraud points is MaxMind's minfraud product, but the rest of the tests are internal. [00:05:35] If somebody emails in going "what the hell, guys, please take my money" or similar, we can occasionally push that transaction through manually, depending on the payment type. [00:05:46] Is this... anywhere near the actual question? :) [00:08:53] i meant e.g. to count the number of whatever these things are (600s?) [00:09:13] not the results of manual actions but the absolute totals [00:09:39] unless there would be some automated way to know whether it was referred to a human [00:11:56] Ah. We have a database full of fraud scores and information. [00:12:18] Every fraud decision that gets made, we can tell you what happened. [00:12:22] And why. [00:15:38] That data would clearly contain a ton of PII, though, so we keep it on fundraising-only machines. [00:28:30] K4-713, i meant aggregate. e.g. graph over time [00:28:46] Well, with them in the db, we can do that. [00:29:07] i mean that you don't have to graph yourself but the graph is made for you automatically [00:29:15] Though currently we're doing manual one-off db queries... [00:29:22] ...but we're working on an internal fundraising dashboard. [00:29:38] Incidentally, this is the first thing we're going to be able to graph. [00:29:42] guinea pigs made me think http://www.whereintokyo.com/venues/25432.html [00:29:52] idk if that's a guinea pig or hamster though [00:30:03] oh, right FR dash [00:30:20] heh... I'm only seeing rabbits. [00:30:39] Yep. That's going to be the very first thing the dash can do. [00:30:46] you see questions waiting in RT 8169? [00:31:01] no? [00:31:08] * K4-713 searches own inbox [00:31:20] https://rt.wikimedia.org/Ticket/Display.html?id=8169 [00:31:31] Ah. That would require me remembering my un/pw. [00:31:35] haha [00:31:44] remember, there's no such thing as passwd reset! [00:31:50] Everything is harder when Jeff is on vacation. [00:32:07] password reset is https://rt.wikimedia.org/Ticket/Display.html?id=5408 [00:32:39] Aha! I had it. [00:33:08] Gah. [00:34:28] so dash will have access to PII but will it allow users to see the PII? [00:34:52] Dash, being internal only, will do both. [00:35:12] k [00:35:41] (PS2) Ssmith: provide models for all fredge tables [wikimedia/fundraising/dash] - https://gerrit.wikimedia.org/r/156334 [00:35:41] We may eventually want to do a public version, but it won't connect to the same data. [00:35:43] (CR) jenkins-bot: [V: -1] provide models for all fredge tables [wikimedia/fundraising/dash] - https://gerrit.wikimedia.org/r/156334 (owner: Ssmith) [00:35:44] and i guess it will be read-only. (no write access) [00:35:58] does sherah IRC? [00:36:06] Yep. She's pizzzacat. [00:36:08] (just curious) [00:36:11] ohhhhhhhhhhh [00:36:13] ...or maybe pizzzacat1. [00:36:21] you should use your tab key [00:36:29] They're both here right now. [00:36:32] blah [00:36:34] hi [00:36:53] I tab like... somebody who forgot how to *not* use the tab. [00:36:56] yeah whenever I use Adium everything gets wonky, including my name [00:37:07] what is a "tab" [00:37:16] oh there goes pizzzacat [00:37:17] It's this soft drink people liked in the 80s. [00:37:28] oh yeah like a flat RC Cola [00:37:35] which is like a flat Coca Cola [00:37:38] Mhm. That key orders one for you. [00:37:41] But it takes a while. [00:37:49] i had non-flat RC today [00:38:05] They still make those? [00:38:16] wait who is jeremyb? [00:38:19] well it was fountain [00:38:24] not can [00:38:25] jeremyb who are you [00:38:33] * pizzzacat feels lame [00:38:45] hah, don't worry you're relatively kinda new [00:38:56] * pizzzacat looks at calendar [00:39:04] and maybe i'm not obvious because i'm not on any list. because i'm not an employee [00:39:30] ohh I see. [00:39:32] I vaguely recall when you first started showing up in the channel [00:39:43] almost 9 months ago [00:39:47] < 1 year. [00:39:59] I am getting ready to birth my node app [00:40:07] ew. [00:40:15] you mean fredge is node? [00:40:15] yes I did just do that [00:40:20] i don't know [00:40:22] yes [00:40:25] ok :) [00:40:38] I am its mother. [00:40:51] and are you going to copy any node deployment stuff parsoid? [00:41:15] I don't think so [00:41:42] well i guess you'll be in frack puppet not normal puppet [00:41:46] pizzzacat: Did Jeff sound like he had a plan? [00:41:57] yes Jeff has a plan [00:42:05] I'd ask him, but he's supposed to be in a tent somewhere until Tuesday. [00:42:11] I don't know the whole Plan but he has a plan. [00:42:46] And I swear to [deity] that I've had more ops questions *today* than I've had in the last two months. [00:42:55] Grumble! [00:43:57] Remind me to subscribe him to some kind of... cheese of the month club or something when he gets back. [00:44:08] Wait. He can eat cheese, right? [00:44:10] K4-713, what other questions? [00:44:11] :/ [00:44:18] I think he's lactose intolerant [00:44:19] what's this about a tent? [00:44:27] Camping. [00:44:30] Away from... this. [00:45:12] There were a bunch this morning about fundraising logrotate jobs spawning somewhere in a surprisingly linear fashion. [00:45:21] They said "What's this?" and I said "..." [00:45:28] It's been dealt with. [00:45:42] But I had to say "I have no idea" about 20 times. [00:45:49] heh [00:45:53] ironic that he's in tents when he was trying not get away from everything intense [00:46:02] I am so sorry for that joke btw [00:46:07] but [00:46:09] hahaha [00:46:10] Maybe he was two tents. [00:46:12] Director of Pundraising [00:46:14] so [00:46:16] ... [00:46:35] (that only made sense out loud) [00:46:46] it took me a second but it was solid [00:47:32] who is this sam smith? do you ever get confused with him? [00:47:41] oh Sam Smith is awesome [00:47:45] ssmith ssmith [00:47:51] actually we haven't been confused, which is surprising [00:48:00] he's a dev on the Growth team [00:48:09] and has really good taste in coffee [00:48:20] and lives in London [00:48:32] where is K4-713 looking in her picture?? [00:48:49] Oh, probably at some chump. [00:48:51] :D [00:48:58] https://commons.wikimedia.org/wiki/File:Katie_Horn_2.jpg [00:49:10] Yep, that's the one. [00:50:00] Actually, I think I'm plotting some kind of deviousness. Which seems, you know, accurate. People might not recognize me if I looked all composed and whatever. [00:52:15] yes that is a pretty accurate reflection of K4-713 [00:56:43] Okay, I'm out for the day. Later, everybody! [00:57:50] hah [00:59:03] oh, you come from kaldari! [00:59:19] are you from tennessee ? [01:02:31] who decided to have 2 vancouvers?? [01:02:38] not helpful [16:24:42] ccogdill: Hey, good morning. [16:27:50] morning! [16:33:40] ccogdill: Do you know what banners ran that caused the confusion this morning? [16:34:02] yeah, they tested having the “monthly” option as default instead of “one-time” [16:34:10] there does seem like there was a possible form error, though [16:34:17] I'd like to look at the actual CN banners to make totally sure nothing funky was going on there. [16:34:30] some donors told us no matter how they tried to select “one-time”, it still ended up “monthly” at the payment form [16:34:38] let me know what you see! [16:34:45] eeeYeah, that's the kind of thing I want to look at. [16:34:52] I was only going to follow up with the banner team about this – do you want to be looped in [16:34:53] ? [16:34:56] Yes please. [16:35:00] okay [16:35:41] I mean, this is one of these things I'm probably going to get quizzed about eventually, even if it had nothing to do with the payments cluster. [16:35:50] I figured it didn't... [16:36:02] It doesn't sound like it does. [16:36:16] But, if something genuinely odd is happening, we might be of some help anyway. [16:36:21] yeah! [16:36:39] We do enjoy our mysteries. [16:36:41] :) [16:37:13] hah so much [16:38:44] ccogdill: Do you have some order_ids I can cross-reference with the banner name? [16:38:59] sure [16:39:10] take me just a minute [16:39:57] No problem. [16:40:50] PP 6405274786756635N [16:41:09] Er... oh. Hang on, that's a transaction id. [16:41:15] ah sorry [16:41:19] It's okay, I can work with it. [16:41:19] what do you mean by order id? [16:41:29] that’s what I call them :D [16:41:47] I think I meant "I need more caffeine before I should be allowed to interface with people" [16:42:04] ...what I really wanted was the contribution_tracking ID. [16:42:10] yeah that’s what makes these 6am tests so fun [16:42:11] Words are hard. [16:42:12] ah okay [16:42:14] I can find that too [16:42:43] Generally speaking, the contribution_tracking id is going to be the most helpful thing we can use. [16:43:01] We use it to cross-reference anything else you might have that would id a transaction. [16:43:11] that’s good to know! I’m not sure I was aware of that before yesterday [16:43:46] I really could just spend 6 months doing nothing but documenting our whole deal. [16:44:04] ...bah [16:44:10] I know the feeling [16:44:16] although probably not as strongly [16:45:05] so this is kind of silly, but I don’t actually know where to find the contrib tracking ID in civi [16:45:13] fwiw, I just tried out the banner from the test, and the monthly/one-time switching looks good in FF. [16:45:24] it was obvious in the damaged messages, but once they make it to a contact I can’t find it [16:45:31] and yeah ejegg we couldn’t replicate any errors either [16:45:41] ccogdill: This is something we want to hack into civi. [16:45:48] Or, possibly just do in the dashboard. [16:45:54] do you happen to know if I’m missing it [16:45:55] But there's no reason we can't. [16:46:05] looking at this guy, for instance [16:46:05] https://civicrm.wikimedia.org/civicrm/contact/view?reset=1&cid=6859565&context=advanced&key=523c75a140836ce12cbe885b0bfab7ed_1439 [16:46:15] K4- is that currently in the wmf_contribution_extra table? [16:46:41] Truthfully... This is exactly the kind of thing I'm not sure how people who aren't in tech, manage it. [16:47:07] ejegg: I don't think so. [16:47:41] Last I checked, you had to get the id from the contribution in civi, and join that with contribution_id in contribution_tracking. [16:47:44] Oh, if you click through to Contributions, then 'view' in the list, you see a transaction ID [16:47:49] Not the same. [16:48:08] Transaction ID is the gateway's pk. contribution_tracking is more like ours. [16:49:02] But, my first point stands. This should be surfaced and immediately visible to everybody. [16:49:32] Instead of "Okay, call tech and have them do a headstand while gargling the chicken dance". [16:49:34] yeah I don’t see why not if it’s sent in the messages to civi [16:49:45] Everything kind of breaks if it's not there. [16:49:48] Always has. [16:50:57] If we do that, though, we can do things like... see where problem transactions came from, *in civi frontend*. [16:51:08] And it's probably not even that much work. [16:51:20] sounds like it’s worthwhile to me! [16:51:32] By "where they came from" I mean, like, the exact banner name. [16:52:24] Incidentally, these are exactly the sorts of things I'd have done a year ago if we weren't ravenously chasing down new integrations. [16:55:04] Okay, coming upstairs. [16:55:08] ccogdill: You're actually here today, yeah? [16:55:13] yep [16:55:20] groovy. brt. [18:12:07] (CR) Ejegg: [C: 2] "Looks good! Just one more left, in gateway_forms/Form.php" [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/139531 (owner: Awight) [18:12:52] (Merged) jenkins-bot: kill remaining calls to extract() [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/139531 (owner: Awight) [18:27:25] woohooo! [18:33:15] K4-713: here are the APIs I wanted to research to determine if there was an alternative to logscrape: https://wikimedia.mingle.thoughtworks.com/projects/online_fundraiser/cards/1549 [18:33:30] ccogdill: That email was perfect, btw. [18:33:35] awight: Ah. [18:33:49] awesome k4-713! [18:34:01] made me nervous we got 11 more of those transactions though... [18:34:04] awight: We should also say something about researching how much they'd charge us for using that, though... [18:37:12] ccogdill: Yeah, it sure seems like it's ramping up. [18:37:20] * K4-713 looks sad [18:37:48] :( [18:38:03] But, you know what? It's relatively recent that we're cool enough to have noticed at all. [18:38:10] Progress! [18:38:14] I mean, we're on it. [18:38:37] yeah! we’re still under 20 transactions so I think we’re doing pretty well [18:38:40] *knock on wood* [18:38:41] heh. [18:39:21] Heh. [18:39:29] This feels like 2012 all over again. [18:39:42] is that good? [18:39:47] Hmm. [18:39:49] hah [18:39:50] It's... [18:39:59] Ask me again in a week. :D [18:40:10] It's certainly exciting. [18:40:16] ... [18:40:28] You should know that I don't think of "exciting" as a particularly positive word. [18:40:28] can’t disagree with that! [18:40:36] (CR) Awight: [C: 2] Move CsvBatchFile into wmf_common [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156158 (owner: Ejegg) [18:40:53] the medical meaning of "exciting" [18:40:56] haha [18:41:24] haha I hope a doctor of mine never uses “exciting” in a correspondingly similar medical situation... [18:42:09] “your body is taking in 0.73 of something, but it’s coming out in little bits of 0.01. it’s… exciting” [18:42:12] It's a lively tumor! [18:42:14] lol [18:42:49] that's an interesting conversation to walk in on [18:42:53] haha [18:42:55] ohai [18:43:03] * pizzzacat waves [19:06:37] ccogdill: I'm somewhat pleased to announce that the one way I could think of that the recurring problem could have been on payments, didn't pan out in reality. [19:06:49] whew [19:06:55] that’s good news as far as I can tell [19:07:17] I was like: "I KNOW HOW TO BREAK MY OWN oh, somebody fixed that. Neat." [19:07:27] so something was either wrong with the banner… or wrong with the donors [19:07:27] haha [19:08:01] In case you were curious: I was thinking that a back-click might have been involved. [19:08:45] (CR) Awight: Add bulk sent mailing import helpers for CiviMail (5 comments) [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 (owner: Ejegg) [19:08:53] "Donor selects recurring, clicks paypal, goes "oh, that's wrong", clicks back to the banner and clicks one-time, server remembers the first selection instead of the fresh one" was my theory. [19:09:08] Shot down. And I can prove it with this donation receipt and a bunch of payments logs. [19:10:29] ejegg: Question about the transaction in CiviMailBulkStore [19:11:06] huh, I kind of thought that was the problem too [19:11:08] cure worse than the disease? [19:11:10] Does an inner transaction failure in Job::writeToDB result in an exception you can catch in this outer transaction? In that case, u are fine? [19:11:11] well that’s good to know [19:11:13] hehe [19:11:48] I think writeToDB catches its own error and returns false. Let me take another look [19:12:02] Yah I feel bad for you maintaining all that delete SQL [19:12:45] some is probably unnecessary with the cascade delete [19:12:55] yeah u can trust that [19:14:03] (CR) Awight: Add bulk sent mailing import helpers for CiviMail (3 comments) [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 (owner: Ejegg) [19:14:27] awight: It's foodtime already. [19:14:30] wth. [19:14:44] ejegg: butso, won't the transaction preclude all that DELETE? [19:15:03] K4-713: good riddance, morning! [19:15:13] * K4-713 kicks morning in the head [19:15:22] hmm, actually, the activityTarget stuff, yeah [19:17:01] ccogdill: Oooh, more good emails. [19:17:27] (CR) Awight: [C: 2] Put all CiviMail stuff into wmf_communication namespace (3 comments) [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156451 (owner: Ejegg) [19:17:47] ejegg: WEll, lemme know what you want to do. I can look at it again after lonch, up 2 u. [19:18:09] thanks, I'll def. try to get back to simpler [19:18:19] ok sounds easier to review :p [19:19:37] k4-713 - emails from whom? the PP reply? [19:19:41] yep [19:19:45] yeah [19:20:00] so good news about the fees and ability to stop payments, bad news about the minimum [19:20:07] mhm [19:20:21] do you think I should ask him to block the two culprit PP accounts, or do you think that does more harm than good? [19:20:32] Eh, I'd let 'em roll at this point. [19:20:39] okay :/ [19:20:54] Also... we probably can't say why we're not in danger, because... contract reasons. [19:21:00] Boo, I don't think I'm on the PP thread [19:21:18] But I really wish we could just be like "NICE TRY, suckers! We're not even in danger!" [19:21:19] want me to forward, awight? [19:21:29] meh. But this is a fr-tech sort of thing, generally [19:21:39] It would save K4-713 from having to repeat everything to us [19:21:44] haha yeah that would be nice [19:21:47] and okay awight [19:22:00] I’ll fwd so you guys know and cc you on replies [19:22:05] you being fr-tech [19:22:05] thx much! [19:22:07] :D [19:22:12] Heh. It's actually... not exactly in the tech realm? But it makes sense at this point. [19:22:25] Heh. [19:22:40] well there is still the question of how the 0.73 EUR donation happened [19:22:43] Heh heh... ha. bwahaha. [19:22:44] but these people are pesky [19:22:45] HA HA. [19:22:55] Yeah I'm on the fence, but I do want to be useful if we have to brainstorm about how to solve it. [19:23:01] ...wait, no, it didn't happen. It was just in our logs as such. [19:23:16] With the actual assignment of the contribution tracking ID the joker kept reusing. [19:23:32] All they needed was a sample of the way the things talk to eachother. [19:23:47] 'course, it pointed me right at the originator. [19:23:58] Dumb. [19:24:00] K4-713: we should have an assertion for attempting to update a contribution_tracking record with a new contribution_id [19:24:12] so there is definitely no form problem or gap on our end which allowed a < 1 EUR transaction to get started? [19:24:22] It wouldn't have gotten that far in this particular case, but yet. [19:24:24] *yes [19:24:31] ccogdill: Nope. [19:24:35] We shut that stuff down. [19:24:39] Oh, wait. [19:24:44] pubchan. [19:24:45] GAH need more coffee. [19:24:53] yeah [19:25:03] We never had <1 EUR. [19:25:19] It was always only <1 USD, which is roughly translated to other currencies. [19:25:29] That works just fine. [19:25:51] ookay [19:26:01] so the form still rejects < 1 EUR cause we tested that [19:26:05] Unless there's something magical about 1 EUR (which would bump up the USD minimum), it'll stay 1 USD. [19:26:11] but the logic on your end is just 1 USD? [19:26:26] our conversion factors are crude... [19:26:31] Forms *anywhere* are a totally different mechanism. [19:26:35] okay [19:26:41] It's the difference between frontend validation, and backend. [19:26:47] gotcha [19:26:52] so nothing broken for us [19:26:57] yay! [19:26:57] Also, forms that allow users to pick amounts are all on different systems. [19:27:04] ...from the logic on payments. [19:27:38] Peter would know more about the frontend form validation on donate wiki, or in banners. [19:28:14] But, whatever those say, it all comes down to what payments will put up with. [19:28:53] ...which is roughly 1 USD. [19:29:05] Hmm, why do we have "emergency"-priority FR banners? [19:29:14] I have no idea. [19:29:25] ccogdill: K4-713: http://meta.wikimedia.org/wiki/MediaWiki:FR2013/Resources/CurrencyMinimums.js [19:29:28] 1 EUR [19:29:33] by accident... [19:29:35] That's great. [19:29:42] Payments still does 1 USD roughly. [19:29:44] :P [19:30:07] I don’t think it’s a huge problem if payments doesn’t match up 100% [19:30:20] And if we're dealing with the kind of person who combs through POST data, frontend validation is not going to help. [19:30:21] It's a problem if the first number is lower, IMO [19:30:26] but thank you awight! Pats an i were looking for that [19:35:50] (PS1) Awight: one more extract to yank [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/156664 [19:36:16] ccogdill: If you want to see what the "rough" USD equivalents that payments will put up with are, they're the green side here: https://gerrit.wikimedia.org/r/#/c/142269/1/gateway_common/currencyRates.inc [19:36:31] Anything before that point can be faked. [19:36:43] ...and this is as expected. [19:37:07] okay so this brings up a good question [19:37:10] If you want to start using round numbers instead of rough USD conversions, that would actually be somewhat cleaner from my perspective. [19:37:22] Relatively minor patch. [19:37:23] what if the threshold on the form is lower than your threshold? [19:37:36] i.e. INR can be as low as 49 on the form [19:37:38] They they get to payments and receive an error. [19:37:40] you have it set at 60 [19:37:46] hmm [19:37:58] When were those conversions done? [19:37:59] so should we update https://meta.wikimedia.org/wiki/MediaWiki:FR2013/Resources/CurrencyMinimums.js [19:38:05] I think when that page ^ was updated [19:38:05] Probably. [19:38:23] and that would be a Peter thing, right? [19:38:30] meta would. [19:38:35] k [19:38:47] thanks! at least we can improve something out of all this... [19:39:23] And again, if you want to start doing round numbers... eh, we're still going to have this problem again because nothing is going out to get all those exchange rates. [19:39:23] and look at that, EUR is exactly 0.73 [19:39:33] yeah [19:39:35] I've been hoping to dump the conversions as a json file, so we can reuse the exact numbers... [19:39:38] COINCIDENCE? :p [19:39:42] :) [19:39:43] but u say integers better? [19:40:03] awight|dinner: Do we have a mechanism to automate those updates? [19:40:12] I... we should. [19:40:15] but no [19:40:24] Yeah, that's sort of the biggest issue. [19:40:38] And as long as nobody cares about it particularly... [19:40:55] K4-713: oh hah. I did write this already. [19:41:05] Incidentally, this is a pretty good candidate for shared configs. [19:41:10] Just saying. [19:41:17] https://github.com/wikimedia/wikimedia-fundraising-crm/blob/master/sites/all/modules/exchange_rates/make_exchange_refs.drush.inc [19:41:37] ...github? [19:41:41] But I'm a jerk so this outputs "html" and php. [19:41:50] yeah that's the github mirror [19:41:54] for convenience! [19:41:58] teehee [19:42:05] Whose? [19:42:06] :p [19:42:06] I hear things in RL from nearby [19:42:09] official mirror [19:42:20] I just got an email about free food. [19:42:22] oh heh for google's convenience [19:42:24] argh! [19:42:28] ^dinner [19:42:32] * K4-713 runs after free food [19:42:36] <--- [19:44:30] (CR) Ejegg: [C: 2] "vanquished!" [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/156664 (owner: Awight) [19:45:00] (Merged) jenkins-bot: one more extract to yank [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/156664 (owner: Awight) [20:52:17] (PS2) Ejegg: Put all CiviMail stuff into wmf_communication namespace [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156451 [20:52:19] (PS4) Ejegg: Add bulk sent mailing import helpers for CiviMail [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 [21:58:21] Reminder to self: just because two-week-old leftovers look good and smell OK doesn't mean they _are_ OK (ouch) [21:58:32] eeeew [21:58:40] been there, sorry man [21:58:50] I'm like, why do I never learn? [21:59:33] I microwaved them to kill bacteria, but I guess it was not enough [22:02:30] I don't know how food works either. [22:04:06] Maybe a Mingle board for a leftovers backlog would be useful? [22:04:40] I have taken to keeping a huge sharpie next to the refrigerator. [22:04:48] Everything gets a date. [22:05:48] Hmmm nice [22:06:23] * AndyRussG hunts for more leftovers, since when my belly hurts it means I have to eat, of course! [22:09:50] awight: ejegg: quick CN question: is the fact that you can't unarchive a campaign from some UI bug, or is there a deeper (say data structure-y) reason that for it? [22:10:54] AndyRussG: adding the archive feature was a quick hack, we decided that was a feature that could wait until there was a demand [22:12:21] Ah hmmm [22:12:58] But as far as you know it shouldn't be more than just falsing an archived flag? [22:13:20] If it's easy I might as well enable it, if I'm going to poke at why archiving doesn't get logged, too [22:14:58] AndyRussG: That would be something to ask the cn-announce list about, perhaps? I think you're right, but people might like the one-wayness of it all. [22:15:07] The way people use CN is really strange to me... [22:15:24] K I'll ask [22:16:19] 'cause on the Campaign detail page there is the message "Editing this campaign is disabled because it is either locked or archived. Change either status from Special:CentralNotice." [22:16:44] yeeeah. That's awkward and misleading [22:16:49] I'm imagining it's either enable it, or change that message, or... [22:17:05] revel in the dark evilness of the inconsistency! mwahahahaha [22:17:21] * awight teehees [22:17:36] my dollar's on the evil guy [22:17:54] K got it :p [22:20:24] (PS1) Awight: leading lines are garbage and inconsistent. So we'll have to massage files by hand until there is an agreement about the file format. [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156714 [22:24:28] (CR) Awight: [C: 2] "u r trulee in the future." (2 comments) [wikimedia/fundraising/dash] - https://gerrit.wikimedia.org/r/156220 (owner: Ssmith) [22:24:33] (PS3) Awight: provide models for all fredge tables [wikimedia/fundraising/dash] - https://gerrit.wikimedia.org/r/156334 (owner: Ssmith) [22:27:02] anyone object to renaming the GatewayForm that extends UnlistedSpecialPage to GatewayPage, so I stop getting it confused with Gateway_Form, which actually renders the forms? [22:28:52] (CR) Awight: [C: -1] "justa typo" (1 comment) [wikimedia/fundraising/dash] - https://gerrit.wikimedia.org/r/156334 (owner: Ssmith) [22:29:06] ejegg: oh dear bog please do [22:29:14] woot [22:36:58] ejegg: really, '"null"' ? [22:37:21] yep, they're using some good old string concatenation [22:37:23] Wellp, it happened. I'm officially writing work on actual tiny cards again. [22:37:30] ejegg: Nooo! [22:37:32] This week is nuts. [22:37:52] K4-713: lost the Mingle musical seats again? [22:38:09] for multi-row insert in mysql, is there any other way? [22:38:17] yeah. [22:38:23] One of the cards is going to say "Make mingle cards". [22:38:28] Dynamically build the parameter map [22:38:33] K4-713: :p [22:39:02] ejegg: But I'm always hella suspicious of concatting SQL [22:39:11] * awight reads Civi code [22:39:19] ahh, then pass in a ginormous array that fills in %1...%32345 [22:39:49] yeah, that's a healthy suspicion [22:40:03] ejegg: yep. I have some examples in broken code if you'd like :p [22:40:19] i think i get the gist [22:40:53] ejegg: https://github.com/wikimedia/wikimedia-fundraising-crm/blob/master/sites/all/modules/wmf_reports/CRM/Contact/ContactsAndContributionsExport.php#L133 [22:40:56] yah simple [22:41:17] But this is something inside of Civi core? [22:41:59] YUCK [22:42:09] Yeah, the bulkCreate method does the hashing (for verp) and concatenates that plus the other 4 values (all ints or null here) into values to insert [22:42:13] I'd check civi trunk [22:42:26] good call [22:43:56] ejegg: they haven't fixed it yet https://github.com/civicrm/civicrm-core/blob/master/CRM/Mailing/Event/BAO/Queue.php [22:44:34] um, but I can calm down now that I see that everything is an ID so is probably well-sanitized by this point? [22:44:41] at least they split the hash out [22:44:55] yeah, we've read those IDs out of the db ourselves [22:45:01] ok then [22:45:03] sorry! [22:45:14] * awight pries at the tape a bit more... [22:45:56] (CR) Awight: [C: -1] "One, two minor things." (5 comments) [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 (owner: Ejegg) [22:46:24] (CR) Awight: Add bulk sent mailing import helpers for CiviMail (1 comment) [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 (owner: Ejegg) [22:47:42] err, not sure what I was thinking with that extra throw inside the try [22:47:58] hehe [22:48:03] FREAKING ABORT MISSION [22:48:06] bad robot [22:49:05] when email->fetch() fails, it could now be for two reasons - email is not on file, or we're re-running a mailing import and this one is already done [22:50:38] If we want to distinguish between those and log missing addresses, I could take the 'and q.id is null' off, add that to the select, and check in php whether q.id has a value [22:51:11] oooh weird [22:51:38] ejegg: ok i c [23:11:52] (PS3) Ejegg: Put all CiviMail stuff into wmf_communication namespace [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156451 [23:11:54] (PS5) Ejegg: Add bulk sent mailing import helpers for CiviMail [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 [23:23:47] (CR) Awight: [C: 2] Add bulk sent mailing import helpers for CiviMail [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156157 (owner: Ejegg) [23:23:59] (CR) Awight: [C: 2] Put all CiviMail stuff into wmf_communication namespace [wikimedia/fundraising/crm] - https://gerrit.wikimedia.org/r/156451 (owner: Ejegg) [23:24:35] woohoo! thanks for all the review, awight! [23:24:58] of course! [23:46:58] (PS1) Ejegg: Rename GatewayForm to GatewayPage to distinguish from Gateway_Form [extensions/DonationInterface] - https://gerrit.wikimedia.org/r/156730 [23:56:47] haha, ejegg: Good one. [23:57:10] I think I left that in there to... give me rage occasionally. [23:59:07] i spent some time trying to merge in an old Gateway_Form tests commit in with my GatewayForm tests, and was really confused when I got so many errors [23:59:25] I think that's one of our best hazing rituals. [23:59:28] :p [23:59:38] owch, it hurts!